@agnos-ui/core 0.2.0 → 0.3.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 (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
@@ -1,297 +0,0 @@
1
- import { asWritable, batch, computed, writable } from '@amadeus-it-group/tansu';
2
- import { autoPlacement, offset, size } from '@floating-ui/dom';
3
- import { createFloatingUI } from '../../services/floatingUI';
4
- import { createHasFocus } from '../../services/focustrack';
5
- import { createNavManager } from '../../services/navManager';
6
- import { bindDirective } from '../../utils/directive';
7
- import { generateId } from '../../utils/internal/dom';
8
- import { noop } from '../../utils/internal/func';
9
- import { bindableDerived, bindableProp, stateStores, writablesForProps } from '../../utils/stores';
10
- const defaultItemId = (item) => '' + item;
11
- export const defaultConfig = {
12
- id: undefined,
13
- ariaLabel: 'Select',
14
- open: false,
15
- disabled: false,
16
- items: [],
17
- filterText: '',
18
- loading: false,
19
- selected: [],
20
- navSelector: (node) => node.querySelectorAll('.au-select-badge,input'),
21
- itemIdFn: defaultItemId,
22
- onOpenChange: noop,
23
- onFilterTextChange: noop,
24
- onSelectedChange: noop,
25
- allowedPlacements: ['bottom-start', 'top-start', 'bottom-end', 'top-end'],
26
- className: '',
27
- menuClassName: '',
28
- menuItemClassName: '',
29
- badgeClassName: '',
30
- slotBadgeLabel: ({ itemContext }) => itemContext.item,
31
- slotItem: ({ itemContext }) => itemContext.item,
32
- };
33
- /**
34
- * Returns a shallow copy of the default select config.
35
- * @returns a copy of the default config
36
- */
37
- export function getSelectDefaultConfig() {
38
- return { ...defaultConfig };
39
- }
40
- /**
41
- * Create a SelectWidget with given config props
42
- * @param config - an optional alert config
43
- * @returns a SelectWidget
44
- */
45
- export function createSelect(config) {
46
- // Props
47
- const [{ id$: _dirtyId$, open$: _dirtyOpen$, filterText$: _dirtyFilterText$, items$, itemIdFn$, onOpenChange$, onFilterTextChange$, onSelectedChange$, allowedPlacements$, navSelector$, ...stateProps }, patch,] = writablesForProps(defaultConfig, config);
48
- const { selected$ } = stateProps;
49
- const id$ = computed(() => _dirtyId$() ?? generateId());
50
- const filterText$ = bindableProp(_dirtyFilterText$, onFilterTextChange$);
51
- const { hasFocus$, directive: hasFocusDirective } = createHasFocus();
52
- const open$ = bindableDerived(onOpenChange$, [_dirtyOpen$, hasFocus$], ([_dirtyOpen, hasFocus]) => _dirtyOpen && hasFocus);
53
- const selectedContextsMap$ = computed(() => {
54
- const selectedItemsContext = new Map();
55
- const itemIdFn = itemIdFn$();
56
- for (const item of selected$()) {
57
- const id = itemIdFn(item);
58
- selectedItemsContext.set(id, {
59
- item,
60
- id: itemIdFn(item),
61
- selected: true,
62
- });
63
- }
64
- return selectedItemsContext;
65
- });
66
- const selectedContexts$ = computed(() => [...selectedContextsMap$().values()]);
67
- const highlightedIndex$ = (function () {
68
- const store = writable(0);
69
- return asWritable(store, (index) => {
70
- const { length } = visibleItems$();
71
- if (index != undefined) {
72
- if (!length) {
73
- index = undefined;
74
- }
75
- else if (index < 0) {
76
- index = length - 1;
77
- }
78
- else if (index >= length) {
79
- index = 0;
80
- }
81
- }
82
- store.set(index);
83
- });
84
- })();
85
- const itemContexts$ = computed(() => {
86
- const itemContexts = new Map();
87
- if (open$()) {
88
- const selectedContextsMap = selectedContextsMap$();
89
- const itemIdFn = itemIdFn$();
90
- for (const item of items$()) {
91
- const id = itemIdFn(item);
92
- itemContexts.set(id, {
93
- item,
94
- id,
95
- selected: selectedContextsMap.has(id),
96
- });
97
- }
98
- }
99
- return itemContexts;
100
- });
101
- const visibleItems$ = computed(() => (open$() ? [...itemContexts$().values()] : []));
102
- const highlighted$ = computed(() => {
103
- const visibleItems = visibleItems$();
104
- const highlightedIndex = highlightedIndex$();
105
- return visibleItems.length && highlightedIndex != undefined ? visibleItems[highlightedIndex] : undefined;
106
- });
107
- const { directives: { floatingDirective, referenceDirective }, stores: { placement$ }, } = createFloatingUI({
108
- props: {
109
- computePositionOptions: asWritable(computed(() => ({
110
- middleware: [
111
- offset(5),
112
- autoPlacement({
113
- allowedPlacements: allowedPlacements$(),
114
- }),
115
- size(),
116
- ],
117
- }))),
118
- },
119
- });
120
- const { directive: navDirective, refreshElements, focusFirst, focusLast, focusLeft, focusRight } = createNavManager();
121
- const navManagerConfig$ = computed(() => ({
122
- keys: {
123
- Home: focusFirst,
124
- End: focusLast,
125
- ArrowLeft: focusLeft,
126
- ArrowRight: focusRight,
127
- },
128
- selector: navSelector$(),
129
- }));
130
- const onRemoveBadge = (event, item) => {
131
- const referenceElement = event.target;
132
- refreshElements();
133
- widget.api.unselect(item);
134
- // Waiting for refresh by the framework, to have the elements inside or outside the dom
135
- if (referenceElement instanceof HTMLElement) {
136
- setTimeout(() => {
137
- focusLeft({ event, referenceElement }) || focusRight({ event, referenceElement });
138
- });
139
- }
140
- event.preventDefault();
141
- };
142
- const widget = {
143
- ...stateStores({
144
- id$,
145
- visibleItems$,
146
- highlighted$,
147
- open$,
148
- selectedContexts$,
149
- filterText$,
150
- placement$,
151
- ...stateProps,
152
- }),
153
- patch,
154
- api: {
155
- clear() {
156
- selected$.set([]);
157
- },
158
- select(item) {
159
- widget.api.toggleItem(item, true);
160
- },
161
- unselect(item) {
162
- widget.api.toggleItem(item, false);
163
- },
164
- toggleItem(item, selected) {
165
- const itemIdFn = itemIdFn$();
166
- const itemId = itemIdFn(item);
167
- const selectedContextsMap = selectedContextsMap$();
168
- const isInSelected = selectedContextsMap.has(itemId);
169
- if (selected == null) {
170
- selected = !isInSelected;
171
- }
172
- if ((selected && !itemContexts$().has(itemId)) || (!selected && !isInSelected)) {
173
- // Nothing to do in this case
174
- return;
175
- }
176
- selected$.update((selectedItems) => {
177
- selectedItems = [...selectedItems]; // Mutate the array
178
- if (selected && !isInSelected) {
179
- selectedItems.push(item);
180
- }
181
- else if (!selected && isInSelected) {
182
- const index = selectedItems.findIndex((item) => itemIdFn(item) === itemId);
183
- selectedItems.splice(index, 1);
184
- }
185
- onSelectedChange$()?.(selectedItems);
186
- return selectedItems;
187
- });
188
- },
189
- clearText() {
190
- // FIXME: not implemented yet!
191
- },
192
- highlight(item) {
193
- const index = visibleItems$().findIndex((itemCtx) => itemCtx.item === item);
194
- highlightedIndex$.set(index === -1 ? undefined : index);
195
- },
196
- highlightFirst() {
197
- highlightedIndex$.set(0);
198
- },
199
- highlightPrevious() {
200
- highlightedIndex$.update((highlightedIndex) => {
201
- return highlightedIndex != null ? highlightedIndex - 1 : -1;
202
- });
203
- },
204
- highlightNext() {
205
- highlightedIndex$.update((highlightedIndex) => {
206
- return highlightedIndex != null ? highlightedIndex + 1 : Infinity;
207
- });
208
- },
209
- highlightLast() {
210
- highlightedIndex$.set(-1);
211
- },
212
- open: () => widget.api.toggle(true),
213
- close: () => widget.api.toggle(false),
214
- toggle(isOpen) {
215
- open$.update((value) => (isOpen != null ? isOpen : !value));
216
- },
217
- },
218
- directives: {
219
- hasFocusDirective,
220
- floatingDirective,
221
- referenceDirective,
222
- inputContainerDirective: bindDirective(navDirective, navManagerConfig$),
223
- },
224
- actions: {
225
- onInput({ target }) {
226
- const value = target.value;
227
- batch(() => {
228
- open$.set(value != null && value !== '');
229
- filterText$.set(value);
230
- });
231
- },
232
- onRemoveBadgeClick(event, item) {
233
- onRemoveBadge(event, item);
234
- },
235
- onInputKeydown(e) {
236
- const { ctrlKey, key } = e;
237
- let keyManaged = true;
238
- switch (key) {
239
- case 'ArrowDown': {
240
- const isOpen = open$();
241
- if (isOpen) {
242
- if (ctrlKey) {
243
- widget.api.highlightLast();
244
- }
245
- else {
246
- widget.api.highlightNext();
247
- }
248
- }
249
- else {
250
- widget.api.open();
251
- widget.api.highlightFirst();
252
- }
253
- break;
254
- }
255
- case 'ArrowUp':
256
- if (ctrlKey) {
257
- widget.api.highlightFirst();
258
- }
259
- else {
260
- widget.api.highlightPrevious();
261
- }
262
- break;
263
- case 'Enter': {
264
- const itemCtx = highlighted$();
265
- if (itemCtx) {
266
- widget.api.toggleItem(itemCtx.item);
267
- }
268
- break;
269
- }
270
- case 'Escape':
271
- open$.set(false);
272
- break;
273
- default:
274
- keyManaged = false;
275
- }
276
- if (keyManaged) {
277
- e.preventDefault();
278
- }
279
- },
280
- onBadgeKeydown(event, item) {
281
- let keyManaged = false;
282
- switch (event.key) {
283
- case 'Backspace':
284
- case 'Delete': {
285
- onRemoveBadge(event, item);
286
- keyManaged = true;
287
- break;
288
- }
289
- }
290
- if (keyManaged) {
291
- event.preventDefault();
292
- }
293
- },
294
- },
295
- };
296
- return widget;
297
- }