@design-factory/core 21.1.0 → 22.0.0-next.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 (131) hide show
  1. package/{accordion-D9ba0XYq.js → accordion-DUFLBQkV.js} +90 -28
  2. package/alert-Db6cG6JE.js +125 -0
  3. package/{collapse-Bn8iHKrd.js → collapse-D8Jo56k9.js} +2 -2
  4. package/{common-DFyZvkII.js → common-CP4amR0Z.js} +2 -2
  5. package/components/accordion/accordion.d.ts +80 -22
  6. package/components/accordion/index.js +1 -1
  7. package/components/alert/alert.d.ts +77 -8
  8. package/components/alert/common.d.ts +9 -9
  9. package/components/alert/index.js +2 -3
  10. package/components/carousel/index.js +2 -2
  11. package/components/collapse/index.js +1 -1
  12. package/components/drawer/drawer.d.ts +13 -0
  13. package/components/drawer/index.js +1 -1
  14. package/components/dropdown/dropdown.d.ts +110 -0
  15. package/components/dropdown/index.d.ts +1 -0
  16. package/components/dropdown/index.js +5 -0
  17. package/components/modal/index.js +1 -1
  18. package/components/pagination/index.js +1 -1
  19. package/components/progressbar/index.js +1 -1
  20. package/components/rating/index.js +1 -1
  21. package/components/slider/index.js +1 -1
  22. package/components/slider/slider.d.ts +23 -4
  23. package/components/toast/index.js +1 -1
  24. package/components/tooltip/index.d.ts +1 -0
  25. package/components/tooltip/index.js +174 -0
  26. package/components/tooltip/tooltip.d.ts +63 -0
  27. package/components/tree/index.js +1 -1
  28. package/{directive-CNNSo5Yn.js → directive-CMT2vEDg.js} +7 -4
  29. package/{drawer-CoBXUPyv.js → drawer-D4xSbhcT.js} +19 -5
  30. package/dropdown-Bjj2ql6d.js +246 -0
  31. package/index.d.ts +3 -1
  32. package/index.js +45 -39
  33. package/isFocusable-C2iRr0zh.js +72 -0
  34. package/{modal-BH9nrwVz.js → modal-CQWh2Sm5.js} +3 -3
  35. package/package.json +1 -1
  36. package/{pagination-BQWusWXN.js → pagination-DIRcpdRE.js} +2 -2
  37. package/{progressbar-S1pNn5rM.js → progressbar-Bth8r3Qu.js} +2 -2
  38. package/{promise-D-RZVPuv.js → promise-CkIc0KKt.js} +3 -3
  39. package/{rating-DWgGgwk3.js → rating-DLsgFSyB.js} +2 -2
  40. package/services/extendWidget.d.ts +1 -1
  41. package/services/focusElement.js +2 -2
  42. package/services/focustrack.js +2 -2
  43. package/services/matchMedia.js +1 -1
  44. package/services/mousetrack.d.ts +34 -0
  45. package/services/mousetrack.js +41 -0
  46. package/services/navManager.js +2 -2
  47. package/services/pointerdownPosition.js +1 -1
  48. package/services/portal.js +1 -1
  49. package/services/positioning.d.ts +101 -0
  50. package/services/positioning.js +104 -0
  51. package/services/resizeObserver.js +1 -1
  52. package/services/siblingsInert.js +1 -1
  53. package/services/transitions/baseTransitions.js +8 -8
  54. package/services/transitions/collapse.d.ts +4 -0
  55. package/services/transitions/collapse.js +23 -19
  56. package/services/transitions/cssTransitions.js +2 -2
  57. package/services/transitions/simpleClassTransition.js +1 -1
  58. package/{slider-Br_Qiopx.js → slider-tH5g55yQ.js} +132 -97
  59. package/{toaster-BUBzFeJM.js → toaster-BS9qeRLF.js} +3 -3
  60. package/{tree-vD7ZkV8Z.js → tree-DW6iLxdw.js} +2 -2
  61. package/types.d.ts +8 -1
  62. package/utils/debounceSignal.d.ts +11 -0
  63. package/utils/debounceSignal.js +18 -0
  64. package/utils/directive.js +1 -1
  65. package/utils/edgeState.d.ts +23 -0
  66. package/utils/edgeState.js +43 -0
  67. package/utils/internal/isFocusable.d.ts +40 -0
  68. package/utils/stores.d.ts +2 -16
  69. package/utils/stores.js +5 -24
  70. package/utils/writables.d.ts +27 -13
  71. package/utils/writables.js +12 -11
  72. package/{writables-DYGjj5T3.js → writables-_7BriMb2.js} +37 -12
  73. package/accordion-B0vs8JWM.cjs +0 -314
  74. package/alert-AhaliJ17.cjs +0 -9
  75. package/alert-Cb9FhbFQ.js +0 -10
  76. package/collapse-BnWw4Hnc.cjs +0 -94
  77. package/common-B5jS-Ih_.cjs +0 -73
  78. package/components/accordion/index.cjs +0 -7
  79. package/components/alert/index.cjs +0 -5
  80. package/components/carousel/index.cjs +0 -292
  81. package/components/collapse/index.cjs +0 -5
  82. package/components/drawer/index.cjs +0 -5
  83. package/components/modal/index.cjs +0 -8
  84. package/components/pagination/index.cjs +0 -5
  85. package/components/progressbar/index.cjs +0 -5
  86. package/components/rating/index.cjs +0 -5
  87. package/components/slider/index.cjs +0 -5
  88. package/components/toast/index.cjs +0 -7
  89. package/components/tree/index.cjs +0 -5
  90. package/config.cjs +0 -36
  91. package/directive-DyTodNPd.cjs +0 -523
  92. package/drawer-Ca_ktkEs.cjs +0 -328
  93. package/index.cjs +0 -134
  94. package/isFocusable-Ckwus82R.js +0 -32
  95. package/isFocusable-DfzDLeAN.cjs +0 -31
  96. package/modal-Dxdw2Pkv.cjs +0 -252
  97. package/pagination-BLVa1UsZ.cjs +0 -254
  98. package/progressbar-RopgvVeA.cjs +0 -86
  99. package/promise-CxCD3NYv.cjs +0 -118
  100. package/rating-DZ3OQgtt.cjs +0 -183
  101. package/scrollbars-f651ntzz.cjs +0 -33
  102. package/services/extendWidget.cjs +0 -41
  103. package/services/floatingUI.cjs +0 -111
  104. package/services/floatingUI.d.ts +0 -76
  105. package/services/floatingUI.js +0 -111
  106. package/services/focusElement.cjs +0 -46
  107. package/services/focustrack.cjs +0 -47
  108. package/services/hash.cjs +0 -15
  109. package/services/intersection.cjs +0 -53
  110. package/services/matchMedia.cjs +0 -14
  111. package/services/navManager.cjs +0 -166
  112. package/services/pointerdownPosition.cjs +0 -60
  113. package/services/portal.cjs +0 -42
  114. package/services/resizeObserver.cjs +0 -54
  115. package/services/siblingsInert.cjs +0 -44
  116. package/services/transitions/baseTransitions.cjs +0 -186
  117. package/services/transitions/collapse.cjs +0 -40
  118. package/services/transitions/cssTransitions.cjs +0 -32
  119. package/services/transitions/simpleClassTransition.cjs +0 -37
  120. package/slider-pgDq1V5r.cjs +0 -807
  121. package/textDirection-zqcZ5-eK.cjs +0 -3
  122. package/toaster-Dlube4Ya.cjs +0 -161
  123. package/tree-Chcy4ulJ.cjs +0 -228
  124. package/types.cjs +0 -6
  125. package/utils/directive.cjs +0 -28
  126. package/utils/func.cjs +0 -7
  127. package/utils/id.cjs +0 -5
  128. package/utils/stores.cjs +0 -172
  129. package/utils/widget.cjs +0 -8
  130. package/utils/writables.cjs +0 -16
  131. package/writables-Dt68gADJ.cjs +0 -102
package/utils/stores.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ReadableSignal, StoreInput, StoresInputValues, WritableSignal } from '@amadeus-it-group/tansu';
1
+ import type { ReadableSignal, WritableSignal } from '@amadeus-it-group/tansu';
2
2
  import type { ConfigValidator, PropsConfig, ValuesOrReadableSignals, WritableWithDefaultOptions } from '../types';
3
3
  /**
4
4
  * Transforms the properties of a given type `P` into writable signals.
@@ -176,7 +176,7 @@ export declare const writablesWithDefault: <T extends object>(defConfig: T, prop
176
176
  * const [{propA$, propB$}, patch] = writablesForProps(defConfig, config, validation);
177
177
  * ```
178
178
  */
179
- export declare const writablesForProps: <T extends object>(defConfig: T, propsConfig?: PropsConfig<T>, options?: { [K in keyof T]: WritableWithDefaultOptions<T[K]> | undefined; }) => [ToWritableSignal<T>, ReturnType<typeof createPatch<T>>];
179
+ export declare const writablesForProps: <T extends object>(defConfig: T, propsConfig?: PropsConfig<T>, options?: ConfigValidator<T>) => [ToWritableSignal<T>, ReturnType<typeof createPatch<T>>];
180
180
  /**
181
181
  * Using input stores, this function builds an object containing the stores as readable and a global state.
182
182
  *
@@ -188,20 +188,6 @@ export declare const stateStores: <A extends object>(inputStores: { [K in keyof
188
188
  state$: ReadableSignal<A>;
189
189
  stores: { [K in keyof A as `${K & string}$`]: ReadableSignal<A[K]>; };
190
190
  };
191
- /**
192
- * Creates a writable signal that derives its value from multiple stores and allows for custom adjustment and equality checks.
193
- *
194
- * @template T - The type of the derived value.
195
- * @template U - A tuple type where the first element is a writable signal of type T and the rest are store inputs.
196
- *
197
- * @param onChange$ - A readable signal that emits a function to be called when the derived value changes.
198
- * @param stores - A tuple of stores where the first element is a writable signal of type T and the rest are store inputs.
199
- * @param adjustValue - A function to adjust the derived value based on the input values from the stores.
200
- * @param equal - A function to compare the current and new values for equality.
201
- *
202
- * @returns A writable signal that derives its value from the provided stores and allows for custom adjustment and equality checks.
203
- */
204
- export declare const bindableDerived: <T, U extends [WritableSignal<T>, ...StoreInput<any>[]]>(onChange$: ReadableSignal<(value: T) => void>, stores: U, adjustValue?: (arg: StoresInputValues<U>) => T, equal?: (currentValue: T, newValue: T) => boolean) => WritableSignal<T>;
205
191
  /**
206
192
  * Creates a bindable property that synchronizes a writable signal with an optional adjustment function and equality check.
207
193
  *
package/utils/stores.js CHANGED
@@ -1,4 +1,4 @@
1
- import { readable, equal, asWritable, derived, computed, batch, asReadable, get, writable } from "@amadeus-it-group/tansu";
1
+ import { readable, equal, asWritable, computed, batch, asReadable, get, writable } from "@amadeus-it-group/tansu";
2
2
  import { INVALID_VALUE } from "../types.js";
3
3
  import { identity } from "./func.js";
4
4
  import { generateId } from "./id.js";
@@ -63,7 +63,10 @@ const normalizeConfigStores = (keys, config) => {
63
63
  if (config) {
64
64
  const configIsStore = isStore(config);
65
65
  for (const key of keys) {
66
- res[key] = configIsStore ? computed(() => config()[key]) : toReadableStore(config[key]);
66
+ res[key] = configIsStore ? computed(() => config()[key]) : (
67
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
68
+ toReadableStore(config[key])
69
+ );
67
70
  }
68
71
  }
69
72
  return res;
@@ -115,27 +118,6 @@ const stateStores = (inputStores) => {
115
118
  })
116
119
  };
117
120
  };
118
- const bindableDerived = (onChange$, stores, adjustValue = (arg) => arg[0], equal2 = (currentValue, newValue) => newValue === currentValue) => {
119
- let currentValue = stores[0]();
120
- return asWritable(
121
- derived(stores, {
122
- derive(values) {
123
- const newValue = adjustValue(values);
124
- const rectifiedValue = !equal2(values[0], newValue);
125
- if (rectifiedValue) {
126
- stores[0].set(newValue);
127
- }
128
- if (rectifiedValue || !equal2(currentValue, newValue)) {
129
- currentValue = newValue;
130
- onChange$()(newValue);
131
- }
132
- return newValue;
133
- },
134
- equal: equal2
135
- }),
136
- stores[0].set.bind(stores[0])
137
- );
138
- };
139
121
  const bindableProp = (store$, onChange$, adjustValue = identity, equal$1 = equal) => asWritable(
140
122
  computed(() => adjustValue(store$()), { equal: equal$1 }),
141
123
  (newValue) => {
@@ -153,7 +135,6 @@ function idWithDefault(id$) {
153
135
  const true$ = readable(true);
154
136
  const false$ = readable(false);
155
137
  export {
156
- bindableDerived,
157
138
  bindableProp,
158
139
  createPatch,
159
140
  false$,
@@ -1,4 +1,4 @@
1
- import type { WritableWithDefaultOptions } from '../types';
1
+ import type { PickRequired, WritableWithDefaultOptions } from '../types';
2
2
  import { INVALID_VALUE } from '../types';
3
3
  /**
4
4
  * Check if a value respects a provided type guard.
@@ -9,11 +9,11 @@ import { INVALID_VALUE } from '../types';
9
9
  * @returns A function that takes a value and returns the value if it passes the filter,
10
10
  * otherwise returns `INVALID_VALUE`.
11
11
  */
12
- export declare const testToNormalizeValue: <T>(filter: (value: any) => value is T) => ((value: any) => T | typeof INVALID_VALUE);
12
+ export declare const testToNormalizeValue: <T>(filter: (value: unknown) => value is T) => ((value: unknown) => T | typeof INVALID_VALUE);
13
13
  /**
14
14
  * A writable object with default options for handling numbers.
15
15
  */
16
- export declare const typeNumber: WritableWithDefaultOptions<number>;
16
+ export declare const typeNumber: PickRequired<WritableWithDefaultOptions<number>, 'normalizeValue'>;
17
17
  /**
18
18
  * Options for specifying the behavior of number range validation.
19
19
  */
@@ -32,7 +32,7 @@ export interface TypeNumberInRangeOptions {
32
32
  *
33
33
  * @returns A type guard function that returns the clamp value or INVALID_VALUE depending on the provided options.
34
34
  */
35
- export declare function typeNumberInRangeFactory(min: number, max: number, options?: TypeNumberInRangeOptions): WritableWithDefaultOptions<number>;
35
+ export declare function typeNumberInRangeFactory(min: number, max: number, options?: TypeNumberInRangeOptions): PickRequired<WritableWithDefaultOptions<number>, 'normalizeValue'>;
36
36
  /**
37
37
  * A writable object with default options for boolean values.
38
38
  *
@@ -41,39 +41,39 @@ export declare function typeNumberInRangeFactory(min: number, max: number, optio
41
41
  * function ensures that the value is properly validated and normalized
42
42
  * as a boolean.
43
43
  */
44
- export declare const typeBoolean: WritableWithDefaultOptions<boolean>;
44
+ export declare const typeBoolean: PickRequired<WritableWithDefaultOptions<boolean>, 'normalizeValue'>;
45
45
  /**
46
46
  * A writable with default options that normalizes its value to a boolean or null.
47
47
  *
48
48
  * This writable uses a normalization function that allows null values and ensures
49
49
  * the value is a boolean.
50
50
  */
51
- export declare const typeBooleanOrNull: WritableWithDefaultOptions<boolean | null>;
51
+ export declare const typeBooleanOrNull: PickRequired<WritableWithDefaultOptions<boolean | null>, 'normalizeValue'>;
52
52
  /**
53
53
  * A writable object with default options for string values.
54
54
  *
55
55
  * This object provides a normalized value for strings using the `testToNormalizeValue` function
56
56
  * with the `isString` validator.
57
57
  */
58
- export declare const typeString: WritableWithDefaultOptions<string>;
58
+ export declare const typeString: PickRequired<WritableWithDefaultOptions<string>, 'normalizeValue'>;
59
59
  /**
60
60
  * A writable with default options that normalizes its value to a string or null.
61
61
  *
62
62
  * This object provides a normalized value for strings using the `testToNormalizeValue` function
63
63
  * with the `isString` validator.
64
64
  */
65
- export declare const typeStringOrNull: WritableWithDefaultOptions<string | null>;
65
+ export declare const typeStringOrNull: PickRequired<WritableWithDefaultOptions<string | null>, 'normalizeValue'>;
66
66
  /**
67
67
  * A writable with default options that normalizes its value to a number or null.
68
68
  *
69
69
  * This writable uses a normalization function that allows null values and ensures
70
70
  * the value is a boolean.
71
71
  */
72
- export declare const typeNumberOrNull: WritableWithDefaultOptions<number | null>;
72
+ export declare const typeNumberOrNull: PickRequired<WritableWithDefaultOptions<number | null>, 'normalizeValue'>;
73
73
  /**
74
74
  * A writable object that holds a function type with default options.
75
75
  */
76
- export declare const typeFunction: WritableWithDefaultOptions<(...args: any[]) => any>;
76
+ export declare const typeFunction: PickRequired<WritableWithDefaultOptions<(...args: any[]) => any>, 'normalizeValue' | 'equal'>;
77
77
  /**
78
78
  * A writable object with default options for handling values of type `HTMLElement` or `null`.
79
79
  *
@@ -81,15 +81,29 @@ export declare const typeFunction: WritableWithDefaultOptions<(...args: any[]) =
81
81
  * - `normalizeValue`: A function to normalize the value, ensuring it is either an `HTMLElement` or `null`.
82
82
  * - `equal`: A function to compare two values for equality using `Object.is`.
83
83
  */
84
- export declare const typeHTMLElementOrNull: WritableWithDefaultOptions<HTMLElement | null>;
84
+ export declare const typeHTMLElementOrNull: PickRequired<WritableWithDefaultOptions<HTMLElement | null>, 'normalizeValue' | 'equal'>;
85
85
  /**
86
86
  * A writable object with default options for handling arrays.
87
87
  */
88
- export declare const typeArray: WritableWithDefaultOptions<any[]>;
88
+ export declare const typeArray: PickRequired<WritableWithDefaultOptions<any[]>, 'normalizeValue' | 'equal'>;
89
89
  /**
90
90
  * Build an enum normalizer
91
91
  * @template T - the enum type
92
92
  * @param enumList - list of enum values to check
93
93
  * @returns the enum normalizer
94
94
  */
95
- export declare function createTypeEnum<T>(enumList: T[]): WritableWithDefaultOptions<T>;
95
+ export declare function createTypeEnum<T>(enumList: T[]): PickRequired<WritableWithDefaultOptions<T>, 'normalizeValue'>;
96
+ /**
97
+ * Build a normalizer for space-separated string values.
98
+ *
99
+ * Accepts either a `T[]` array or a space-separated string (e.g. `"a b c"`).
100
+ * Each item is validated through the provided `normalizeItem` function, which
101
+ * may return a single value, an array of values (allowing one token to expand
102
+ * into multiple items), or `INVALID_VALUE` to reject the input.
103
+ *
104
+ * @template T - The string literal union type of valid items.
105
+ * @param normalizeItem - A function that validates and normalizes a single item string
106
+ * into one or more `T` values, or returns `INVALID_VALUE` if invalid.
107
+ * @returns A `WritableWithDefaultOptions` that normalizes `T[] | string` into `T[]`.
108
+ */
109
+ export declare function createTypeStringSpacedArray<T>(normalizeItem: (value: string) => T | T[] | typeof INVALID_VALUE): PickRequired<WritableWithDefaultOptions<T[]>, 'normalizeValue' | 'equal'>;
@@ -1,16 +1,17 @@
1
- import { c, t, a, b, d, e, f, g, h, i, j, k } from "../writables-DYGjj5T3.js";
1
+ import { c, a, t, b, d, e, f, g, h, i, j, k, l } from "../writables-_7BriMb2.js";
2
2
  import "../types.js";
3
3
  export {
4
4
  c as createTypeEnum,
5
+ a as createTypeStringSpacedArray,
5
6
  t as testToNormalizeValue,
6
- a as typeArray,
7
- b as typeBoolean,
8
- d as typeBooleanOrNull,
9
- e as typeFunction,
10
- f as typeHTMLElementOrNull,
11
- g as typeNumber,
12
- h as typeNumberInRangeFactory,
13
- i as typeNumberOrNull,
14
- j as typeString,
15
- k as typeStringOrNull
7
+ b as typeArray,
8
+ d as typeBoolean,
9
+ e as typeBooleanOrNull,
10
+ f as typeFunction,
11
+ g as typeHTMLElementOrNull,
12
+ h as typeNumber,
13
+ i as typeNumberInRangeFactory,
14
+ j as typeNumberOrNull,
15
+ k as typeString,
16
+ l as typeStringOrNull
16
17
  };
@@ -85,19 +85,44 @@ function createTypeEnum(enumList) {
85
85
  normalizeValue: testToNormalizeValue(isFromEnum(enumList))
86
86
  };
87
87
  }
88
+ function createTypeStringSpacedArray(normalizeItem) {
89
+ return {
90
+ normalizeValue: (value) => {
91
+ const trimmed = isString(value) ? value.trim() : void 0;
92
+ const items = trimmed !== void 0 ? trimmed === "" ? [] : trimmed.split(/\s+/) : isArray(value) ? value : void 0;
93
+ if (!items) {
94
+ return INVALID_VALUE;
95
+ }
96
+ const result = [];
97
+ for (const item of items) {
98
+ const normalized = normalizeItem(item);
99
+ if (normalized === INVALID_VALUE) {
100
+ return INVALID_VALUE;
101
+ } else if (isArray(normalized)) {
102
+ result.push(...normalized);
103
+ } else {
104
+ result.push(normalized);
105
+ }
106
+ }
107
+ return result;
108
+ },
109
+ equal: typeArray.equal
110
+ };
111
+ }
88
112
  export {
89
- typeArray as a,
90
- typeBoolean as b,
113
+ createTypeStringSpacedArray as a,
114
+ typeArray as b,
91
115
  createTypeEnum as c,
92
- typeBooleanOrNull as d,
93
- typeFunction as e,
94
- typeHTMLElementOrNull as f,
95
- typeNumber as g,
96
- typeNumberInRangeFactory as h,
97
- typeNumberOrNull as i,
98
- typeString as j,
99
- typeStringOrNull as k,
100
- clamp as l,
101
- isNumber as m,
116
+ typeBoolean as d,
117
+ typeBooleanOrNull as e,
118
+ typeFunction as f,
119
+ typeHTMLElementOrNull as g,
120
+ typeNumber as h,
121
+ typeNumberInRangeFactory as i,
122
+ typeNumberOrNull as j,
123
+ typeString as k,
124
+ typeStringOrNull as l,
125
+ clamp as m,
126
+ isNumber as n,
102
127
  testToNormalizeValue as t
103
128
  };
@@ -1,314 +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 utils_func = require("./utils/func.cjs");
6
- const utils_writables = require("./writables-Dt68gADJ.cjs");
7
- const utils_directive = require("./directive-DyTodNPd.cjs");
8
- const utils_widget = require("./utils/widget.cjs");
9
- function adjustItemsCloseOthers(items, openItems, oldOpen) {
10
- let keepOpen;
11
- if (openItems.length == 2) {
12
- oldOpen = oldOpen ?? openItems[0];
13
- keepOpen = openItems.find((id) => id !== oldOpen);
14
- } else if (openItems.length > 2) {
15
- keepOpen = openItems[0];
16
- }
17
- if (keepOpen) {
18
- items.forEach((item) => {
19
- if (item.stores.id$() !== keepOpen && item.stores.visible$()) {
20
- item.patch({ visible: false });
21
- }
22
- });
23
- }
24
- return items;
25
- }
26
- function getItem(items, id) {
27
- return items.find((item) => item.stores.id$() === id);
28
- }
29
- const defaultAccordionConfig = {
30
- closeOthers: false,
31
- onItemShown: utils_func.noop,
32
- onItemHidden: utils_func.noop,
33
- className: "",
34
- itemDestroyOnHide: true,
35
- itemAnimated: true,
36
- itemTransition: utils_func.noop,
37
- itemHeadingLevel: 2,
38
- itemClassName: "",
39
- itemHeaderClassName: "",
40
- itemButtonClassName: "",
41
- itemBodyContainerClassName: "",
42
- itemBodyClassName: ""
43
- };
44
- const defaultItemConfig = {
45
- id: "",
46
- destroyOnHide: defaultAccordionConfig.itemDestroyOnHide,
47
- disabled: false,
48
- visible: false,
49
- animated: defaultAccordionConfig.itemAnimated,
50
- transition: defaultAccordionConfig.itemTransition,
51
- onShown: utils_func.noop,
52
- onHidden: utils_func.noop,
53
- onVisibleChange: utils_func.noop,
54
- className: defaultAccordionConfig.itemClassName,
55
- headerClassName: defaultAccordionConfig.itemHeaderClassName,
56
- buttonClassName: defaultAccordionConfig.itemButtonClassName,
57
- bodyContainerClassName: defaultAccordionConfig.itemBodyContainerClassName,
58
- bodyClassName: defaultAccordionConfig.itemBodyClassName,
59
- headingLevel: defaultAccordionConfig.itemHeadingLevel
60
- };
61
- const coreAccordionItemProps = Object.keys(defaultItemConfig);
62
- function getAccordionDefaultConfig() {
63
- return { ...defaultAccordionConfig };
64
- }
65
- const configAccordionValidator = {
66
- closeOthers: utils_writables.typeBoolean,
67
- onItemShown: utils_writables.typeFunction,
68
- onItemHidden: utils_writables.typeFunction,
69
- className: utils_writables.typeString,
70
- itemDestroyOnHide: utils_writables.typeBoolean,
71
- itemAnimated: utils_writables.typeBoolean,
72
- itemTransition: utils_writables.typeFunction,
73
- itemClassName: utils_writables.typeString,
74
- itemHeaderClassName: utils_writables.typeString,
75
- itemButtonClassName: utils_writables.typeString,
76
- itemBodyContainerClassName: utils_writables.typeString,
77
- itemBodyClassName: utils_writables.typeString,
78
- itemHeadingLevel: utils_writables.createTypeEnum([1, 2, 3, 4, 5, 6])
79
- };
80
- const configItemValidator = {
81
- id: utils_writables.typeString,
82
- destroyOnHide: utils_writables.typeBoolean,
83
- disabled: utils_writables.typeBoolean,
84
- visible: utils_writables.typeBoolean,
85
- animated: utils_writables.typeBoolean,
86
- transition: utils_writables.typeFunction,
87
- onShown: utils_writables.typeFunction,
88
- onHidden: utils_writables.typeFunction,
89
- onVisibleChange: utils_writables.typeFunction,
90
- className: utils_writables.typeString,
91
- headerClassName: utils_writables.typeString,
92
- buttonClassName: utils_writables.typeString,
93
- bodyContainerClassName: utils_writables.typeString,
94
- bodyClassName: utils_writables.typeString,
95
- headingLevel: utils_writables.createTypeEnum([1, 2, 3, 4, 5, 6])
96
- };
97
- function createAccordionItem(config) {
98
- const [
99
- {
100
- bodyClassName$,
101
- buttonClassName$,
102
- bodyContainerClassName$,
103
- headerClassName$,
104
- animated$,
105
- transition$,
106
- destroyOnHide$,
107
- onShown$,
108
- onHidden$,
109
- onVisibleChange$,
110
- visible$,
111
- id$: _dirtyId$,
112
- disabled$,
113
- ...stateProps
114
- },
115
- patch
116
- ] = utils_stores.writablesForProps(defaultItemConfig, config, configItemValidator);
117
- const initDone$ = tansu.writable(false);
118
- const id$ = utils_stores.idWithDefault(_dirtyId$);
119
- const transition = services_transitions_baseTransitions.createTransition({
120
- props: {
121
- transition: transition$,
122
- visible: visible$,
123
- onVisibleChange: onVisibleChange$,
124
- animated: animated$,
125
- animatedOnInit: false,
126
- initDone: initDone$,
127
- onHidden: () => {
128
- onHidden$()();
129
- },
130
- onShown: () => {
131
- onShown$()();
132
- }
133
- }
134
- });
135
- const shouldBeInDOM$ = tansu.computed(() => !destroyOnHide$() || !transition.stores.hidden$());
136
- const toggleDirective = utils_directive.createAttributesDirective(() => ({
137
- attributes: {
138
- id: tansu.computed(() => `${id$()}-toggle`),
139
- "aria-expanded": tansu.computed(() => `${visible$()}`),
140
- "aria-disabled": tansu.computed(() => `${disabled$()}`),
141
- "aria-controls": tansu.computed(() => `${id$()}-body-container`),
142
- disabled: disabled$
143
- },
144
- classNames: { collapsed: tansu.computed(() => !visible$()) },
145
- events: {
146
- click: () => {
147
- if (!disabled$()) {
148
- void transition.api.toggle();
149
- }
150
- }
151
- }
152
- }));
153
- const transitionDirective = transition.directives.directive;
154
- const bodyContainerAttrsDirective = utils_directive.createAttributesDirective(() => ({
155
- attributes: {
156
- id: tansu.computed(() => `${id$()}-body-container`),
157
- class: bodyContainerClassName$,
158
- "aria-labelledby": tansu.computed(() => `${id$()}-toggle`),
159
- role: tansu.readable("region")
160
- }
161
- }));
162
- return {
163
- ...utils_stores.stateStores({
164
- visible$,
165
- id$,
166
- shouldBeInDOM$,
167
- disabled$,
168
- bodyClassName$,
169
- buttonClassName$,
170
- bodyContainerClassName$,
171
- headerClassName$,
172
- ...stateProps
173
- }),
174
- patch,
175
- api: {
176
- initDone: () => {
177
- initDone$.set(true);
178
- },
179
- collapse: transition.api.hide,
180
- expand: transition.api.show,
181
- toggle: (animated) => transition.api.toggle(void 0, animated)
182
- },
183
- directives: {
184
- toggleDirective,
185
- buttonDirective: utils_directive.mergeDirectives(
186
- toggleDirective,
187
- utils_directive.createAttributesDirective(() => ({
188
- attributes: {
189
- type: tansu.readable("button"),
190
- class: buttonClassName$
191
- }
192
- }))
193
- ),
194
- headerDirective: utils_directive.createAttributesDirective(() => ({ attributes: { class: headerClassName$ } })),
195
- bodyDirective: utils_directive.createAttributesDirective(() => ({ attributes: { class: bodyClassName$ } })),
196
- transitionDirective,
197
- bodyContainerAttrsDirective,
198
- bodyContainerDirective: utils_directive.mergeDirectives(transitionDirective, bodyContainerAttrsDirective),
199
- itemDirective: utils_func.noop
200
- }
201
- };
202
- }
203
- function factoryCreateAccordion(itemFactory = createAccordionItem, accordionItemProps = coreAccordionItemProps, accordionConfig = defaultAccordionConfig, accordionValidator = configAccordionValidator) {
204
- return utils_widget.createWidgetFactory("accordion", (config) => {
205
- const [writables, patch] = utils_stores.writablesForProps(accordionConfig, config, accordionValidator);
206
- const { closeOthers$, onItemShown$, onItemHidden$, className$ } = writables;
207
- const accordionItemConfig = Object.fromEntries(
208
- Object.entries(writables).filter((entry) => entry[0].startsWith("item")).map((entry) => [entry[0].charAt(4).toLowerCase() + entry[0].slice(5, -1), entry[1]])
209
- );
210
- const itemWidgets$ = utils_directive.registrationArray();
211
- const openItems$ = tansu.computed(() => {
212
- const openItems = [];
213
- itemWidgets$().forEach((item) => {
214
- if (item.stores.visible$()) {
215
- openItems.push(item.stores.id$());
216
- }
217
- });
218
- return openItems;
219
- });
220
- const oldOpenItem$ = tansu.writable(openItems$()[0]);
221
- const checkCloseOthersAction$ = tansu.computed(() => {
222
- if (closeOthers$()) {
223
- adjustItemsCloseOthers(itemWidgets$(), openItems$(), oldOpenItem$());
224
- oldOpenItem$.set(openItems$()[0]);
225
- }
226
- });
227
- const action$ = tansu.computed(() => {
228
- checkCloseOthersAction$();
229
- });
230
- return {
231
- ...utils_stores.stateStores({ itemWidgets$, className$ }),
232
- patch,
233
- api: {
234
- expand: async (id, animated) => {
235
- await getItem(itemWidgets$(), id)?.api.expand(animated);
236
- },
237
- collapse: async (id, animated) => {
238
- await getItem(itemWidgets$(), id)?.api.collapse(animated);
239
- },
240
- toggle: async (id, animated) => {
241
- await getItem(itemWidgets$(), id)?.api.toggle(animated);
242
- },
243
- expandAll: async (animated) => {
244
- await Promise.all(itemWidgets$().map((i) => i.api.expand(animated)));
245
- },
246
- collapseAll: async (animated) => {
247
- await Promise.all(itemWidgets$().map((i) => i.api.collapse(animated)));
248
- },
249
- registerItem: (propsConfig) => {
250
- const itemProps = accordionItemProps;
251
- const config2 = utils_stores.mergeConfigStores(
252
- itemProps,
253
- utils_stores.normalizeConfigStores(itemProps, propsConfig?.config),
254
- accordionItemConfig
255
- );
256
- const [{ onHidden$, onShown$ }] = utils_stores.writablesForProps(
257
- {
258
- onHidden: defaultItemConfig.onHidden,
259
- onShown: defaultItemConfig.onShown
260
- },
261
- { config: config2, props: propsConfig?.props }
262
- );
263
- const item = itemFactory({
264
- config: config2,
265
- props: {
266
- ...propsConfig?.props,
267
- onHidden: tansu.asWritable(
268
- tansu.readable(() => {
269
- onItemHidden$()(item.stores.id$());
270
- onHidden$()?.();
271
- }),
272
- (val) => {
273
- onItemHidden$.set(val);
274
- }
275
- ),
276
- onShown: tansu.asWritable(
277
- tansu.readable(() => {
278
- onItemShown$()(item.stores.id$());
279
- onShown$()?.();
280
- }),
281
- (val) => {
282
- onItemShown$.set(val);
283
- }
284
- )
285
- }
286
- });
287
- item.directives.itemDirective = utils_directive.mergeDirectives(
288
- () => ({
289
- destroy: itemWidgets$.register(item)
290
- }),
291
- utils_directive.createAttributesDirective(() => ({
292
- attributes: { class: item.stores.className$, id: item.stores.id$ }
293
- }))
294
- );
295
- return item;
296
- }
297
- },
298
- directives: {
299
- accordionDirective: utils_directive.mergeDirectives(
300
- utils_directive.directiveSubscribe(action$),
301
- utils_directive.createAttributesDirective(() => ({
302
- attributes: { class: className$ },
303
- classNames: { "au-accordion": utils_stores.true$ }
304
- }))
305
- )
306
- }
307
- };
308
- });
309
- }
310
- const createAccordion = factoryCreateAccordion();
311
- exports.createAccordion = createAccordion;
312
- exports.createAccordionItem = createAccordionItem;
313
- exports.factoryCreateAccordion = factoryCreateAccordion;
314
- exports.getAccordionDefaultConfig = getAccordionDefaultConfig;
@@ -1,9 +0,0 @@
1
- "use strict";
2
- const common = require("./common-B5jS-Ih_.cjs");
3
- const utils_widget = require("./utils/widget.cjs");
4
- function getAlertDefaultConfig() {
5
- return { ...common.getCommonAlertDefaultConfig() };
6
- }
7
- const createAlert = utils_widget.createWidgetFactory("alert", common.createCommonAlert);
8
- exports.createAlert = createAlert;
9
- exports.getAlertDefaultConfig = getAlertDefaultConfig;
package/alert-Cb9FhbFQ.js DELETED
@@ -1,10 +0,0 @@
1
- import { g as getCommonAlertDefaultConfig, c as createCommonAlert } from "./common-DFyZvkII.js";
2
- import { createWidgetFactory } from "./utils/widget.js";
3
- function getAlertDefaultConfig() {
4
- return { ...getCommonAlertDefaultConfig() };
5
- }
6
- const createAlert = createWidgetFactory("alert", createCommonAlert);
7
- export {
8
- createAlert as c,
9
- getAlertDefaultConfig as g
10
- };