slim-select 2.13.1 → 3.0.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 (55) hide show
  1. package/README.md +184 -43
  2. package/dist/index.d.ts +304 -52
  3. package/dist/react/index.d.ts +304 -0
  4. package/dist/react/index.js +1549 -0
  5. package/dist/react/index.umd.js +22 -0
  6. package/dist/slimselect.cjs.js +1 -2030
  7. package/dist/slimselect.css +1 -1
  8. package/dist/slimselect.css.map +1 -1
  9. package/dist/slimselect.es.js +1224 -2012
  10. package/dist/slimselect.umd.js +1 -2036
  11. package/dist/vue/index.d.ts +304 -0
  12. package/dist/vue/index.js +1341 -0
  13. package/dist/vue/index.umd.js +1 -0
  14. package/index.html +1 -0
  15. package/package.json +58 -36
  16. package/release.js +0 -7
  17. package/src/slim-select/accessibility.test.ts +782 -0
  18. package/src/slim-select/classes.test.ts +7 -6
  19. package/src/slim-select/classes.ts +8 -6
  20. package/src/slim-select/helpers.test.ts +10 -8
  21. package/src/slim-select/index.test.ts +509 -14
  22. package/src/slim-select/index.ts +58 -31
  23. package/src/slim-select/react/index.tsx +9 -0
  24. package/src/slim-select/react/react.tsx +112 -0
  25. package/src/slim-select/render.test.ts +479 -119
  26. package/src/slim-select/render.ts +213 -91
  27. package/src/slim-select/select.test.ts +28 -10
  28. package/src/slim-select/select.ts +35 -12
  29. package/src/slim-select/settings.test.ts +19 -8
  30. package/src/slim-select/settings.ts +2 -4
  31. package/src/slim-select/slimselect.scss +30 -15
  32. package/src/slim-select/store.test.ts +13 -16
  33. package/src/slim-select/store.ts +97 -86
  34. package/src/slim-select/vue/index.ts +9 -0
  35. package/src/slim-select/vue/vue.test.ts +832 -0
  36. package/src/slim-select/{vue.vue → vue/vue.vue} +45 -23
  37. package/tsconfig.json +6 -4
  38. package/{vite.config.mts → vite.config.docs.mts} +10 -0
  39. package/vite.config.lib.mts +42 -0
  40. package/vite.config.react.mts +40 -0
  41. package/vite.config.vue.mts +39 -0
  42. package/vitest.config.ts +29 -0
  43. package/dist/classes.d.ts +0 -43
  44. package/dist/helpers.d.ts +0 -5
  45. package/dist/render.d.ts +0 -81
  46. package/dist/select.d.ts +0 -30
  47. package/dist/settings.d.ts +0 -35
  48. package/dist/slimselect.global.js +0 -2033
  49. package/dist/slimselect.js +0 -2036
  50. package/dist/slimselect.min.js +0 -1
  51. package/dist/slimselect.umd.min.js +0 -1
  52. package/dist/store.d.ts +0 -84
  53. package/jest.config.js +0 -14
  54. package/src/slim-select/rollup.config.mjs +0 -127
  55. package/src/slim-select/tsconfig.json +0 -14
@@ -0,0 +1,304 @@
1
+ declare interface Callbacks {
2
+ open: () => void;
3
+ close: () => void;
4
+ addable?: (value: string) => Promise<Partial<Option_2> | string> | Partial<Option_2> | string | false | undefined | null | Error;
5
+ setSelected: (value: string | string[], runAfterChange: boolean) => void;
6
+ addOption: (option: Option_2) => void;
7
+ search: (search: string) => void;
8
+ beforeChange?: (newVal: Option_2[], oldVal: Option_2[]) => boolean | void;
9
+ afterChange?: (newVal: Option_2[]) => void;
10
+ }
11
+
12
+ export declare interface Config {
13
+ select: string | Element;
14
+ data?: (Partial<Option_2> | Partial<Optgroup>)[];
15
+ settings?: Partial<Settings>;
16
+ cssClasses?: Partial<CssClasses>;
17
+ events?: Events;
18
+ }
19
+
20
+ declare interface Content {
21
+ main: HTMLDivElement;
22
+ search: Search;
23
+ list: HTMLDivElement;
24
+ }
25
+
26
+ declare class CssClasses {
27
+ main: string;
28
+ placeholder: string;
29
+ values: string;
30
+ single: string;
31
+ max: string;
32
+ value: string;
33
+ valueText: string;
34
+ valueDelete: string;
35
+ valueOut: string;
36
+ deselect: string;
37
+ deselectPath: string;
38
+ arrow: string;
39
+ arrowClose: string;
40
+ arrowOpen: string;
41
+ content: string;
42
+ contentOpen: string;
43
+ dirAbove: string;
44
+ dirBelow: string;
45
+ search: string;
46
+ searchHighlighter: string;
47
+ searching: string;
48
+ addable: string;
49
+ addablePath: string;
50
+ list: string;
51
+ optgroup: string;
52
+ optgroupLabel: string;
53
+ optgroupLabelText: string;
54
+ optgroupActions: string;
55
+ optgroupSelectAll: string;
56
+ optgroupSelectAllBox: string;
57
+ optgroupSelectAllCheck: string;
58
+ optgroupClosable: string;
59
+ option: string;
60
+ optionDelete: string;
61
+ highlighted: string;
62
+ mainOpen: string;
63
+ close: string;
64
+ selected: string;
65
+ error: string;
66
+ disabled: string;
67
+ hide: string;
68
+ constructor(classes?: Partial<CssClasses>);
69
+ }
70
+
71
+ export declare interface Events {
72
+ search?: (searchValue: string, currentData: (Option_2 | Optgroup)[]) => Promise<(Partial<Option_2> | Partial<Optgroup>)[]> | (Partial<Option_2> | Partial<Optgroup>)[];
73
+ searchFilter?: (option: Option_2, search: string) => boolean;
74
+ addable?: (value: string) => Promise<Partial<Option_2> | string> | Partial<Option_2> | string | false | null | undefined | Error;
75
+ beforeChange?: (newVal: Option_2[], oldVal: Option_2[]) => boolean | void;
76
+ afterChange?: (newVal: Option_2[]) => void;
77
+ beforeOpen?: () => void;
78
+ afterOpen?: () => void;
79
+ beforeClose?: () => void;
80
+ afterClose?: () => void;
81
+ error?: (err: Error) => void;
82
+ }
83
+
84
+ declare interface Main {
85
+ main: HTMLDivElement;
86
+ values: HTMLDivElement;
87
+ deselect: {
88
+ main: HTMLDivElement;
89
+ svg: SVGSVGElement;
90
+ path: SVGPathElement;
91
+ };
92
+ arrow: {
93
+ main: SVGSVGElement;
94
+ path: SVGPathElement;
95
+ };
96
+ }
97
+
98
+ export declare class Optgroup {
99
+ id: string;
100
+ label: string;
101
+ selectAll: boolean;
102
+ selectAllText: string;
103
+ closable: 'off' | 'open' | 'close';
104
+ options: Partial<Option_2>[];
105
+ constructor(optgroup: Partial<Optgroup>);
106
+ }
107
+
108
+ declare class Option_2 {
109
+ id: string;
110
+ value: string;
111
+ text: string;
112
+ html: string;
113
+ defaultSelected: boolean;
114
+ selected: boolean;
115
+ display: boolean;
116
+ disabled: boolean;
117
+ placeholder: boolean;
118
+ class: string;
119
+ style: string;
120
+ data: {
121
+ [key: string]: string;
122
+ };
123
+ mandatory: boolean;
124
+ constructor(option: Partial<Option_2>);
125
+ }
126
+ export { Option_2 as Option }
127
+
128
+ export declare class Render {
129
+ settings: Settings;
130
+ store: Store;
131
+ callbacks: Callbacks;
132
+ private lastSelectedOption;
133
+ main: Main;
134
+ content: Content;
135
+ classes: CssClasses;
136
+ constructor(settings: Required<Settings>, classes: Required<CssClasses>, store: Store, callbacks: Callbacks);
137
+ enable(): void;
138
+ disable(): void;
139
+ open(): void;
140
+ close(): void;
141
+ updateClassStyles(): void;
142
+ updateAriaAttributes(): void;
143
+ mainDiv(): Main;
144
+ mainFocus(eventType: string | null): void;
145
+ placeholder(): HTMLDivElement;
146
+ renderValues(): void;
147
+ private renderSingleValue;
148
+ private renderMultipleValues;
149
+ multipleValue(option: Option_2): HTMLDivElement;
150
+ contentDiv(): Content;
151
+ moveContent(): void;
152
+ searchDiv(): Search;
153
+ searchFocus(): void;
154
+ clearSearch(): void;
155
+ getOptions(notPlaceholder?: boolean, notDisabled?: boolean, notHidden?: boolean): HTMLDivElement[];
156
+ highlight(dir: 'up' | 'down'): void;
157
+ listDiv(): HTMLDivElement;
158
+ renderError(error: string): void;
159
+ renderSearching(): void;
160
+ renderOptions(data: (Option_2 | Optgroup)[]): void;
161
+ option(option: Option_2): HTMLDivElement;
162
+ destroy(): void;
163
+ private highlightText;
164
+ moveContentAbove(): void;
165
+ moveContentBelow(): void;
166
+ ensureElementInView(container: HTMLElement, element: HTMLElement): void;
167
+ putContent(): 'up' | 'down';
168
+ updateDeselectAll(): void;
169
+ }
170
+
171
+ declare interface Search {
172
+ main: HTMLDivElement;
173
+ input: HTMLInputElement;
174
+ addable?: {
175
+ main: HTMLDivElement;
176
+ svg: SVGSVGElement;
177
+ path: SVGPathElement;
178
+ };
179
+ }
180
+
181
+ export declare class Select {
182
+ select: HTMLSelectElement;
183
+ onValueChange?: (value: Option_2[]) => void;
184
+ onClassChange?: (classes: string[]) => void;
185
+ onDisabledChange?: (disabled: boolean) => void;
186
+ onOptionsChange?: (data: (Option_2 | Optgroup)[]) => void;
187
+ listen: boolean;
188
+ private observer;
189
+ constructor(select: HTMLSelectElement);
190
+ enable(): void;
191
+ disable(): void;
192
+ hideUI(): void;
193
+ showUI(): void;
194
+ changeListen(listen: boolean): void;
195
+ valueChange(ev: Event): boolean;
196
+ private observeCall;
197
+ getData(): (Option_2 | Optgroup)[];
198
+ getDataFromOptgroup(optgroup: HTMLOptGroupElement): Optgroup;
199
+ getDataFromOption(option: HTMLOptionElement): Option_2;
200
+ getSelectedOptions(): Option_2[];
201
+ getSelectedValues(): string[];
202
+ setSelected(ids: string[]): void;
203
+ setSelectedByValue(values: string[]): void;
204
+ updateSelect(id?: string, style?: string, classes?: string[]): void;
205
+ updateOptions(data: (Option_2 | Optgroup)[]): void;
206
+ createOptgroup(optgroup: Optgroup): HTMLOptGroupElement;
207
+ createOption(info: Option_2): HTMLOptionElement;
208
+ destroy(): void;
209
+ }
210
+
211
+ declare type selectType = 'single' | 'multiple';
212
+
213
+ export declare class Settings {
214
+ id: string;
215
+ style: string;
216
+ class: string[];
217
+ isMultiple: boolean;
218
+ isOpen: boolean;
219
+ isFullOpen: boolean;
220
+ intervalMove: ReturnType<typeof setInterval> | null;
221
+ disabled: boolean;
222
+ alwaysOpen: boolean;
223
+ showSearch: boolean;
224
+ focusSearch: boolean;
225
+ ariaLabel: string;
226
+ searchPlaceholder: string;
227
+ searchText: string;
228
+ searchingText: string;
229
+ searchHighlight: boolean;
230
+ closeOnSelect: boolean;
231
+ contentLocation: HTMLElement | null;
232
+ contentPosition: 'relative' | 'absolute' | 'fixed';
233
+ openPosition: 'auto' | 'up' | 'down';
234
+ placeholderText: string;
235
+ allowDeselect: boolean;
236
+ hideSelected: boolean;
237
+ keepOrder: boolean;
238
+ showOptionTooltips: boolean;
239
+ minSelected: number;
240
+ maxSelected: number;
241
+ timeoutDelay: number;
242
+ maxValuesShown: number;
243
+ maxValuesMessage: string;
244
+ addableText: string;
245
+ constructor(settings?: Partial<Settings>);
246
+ }
247
+
248
+ declare class SlimSelect {
249
+ selectEl: HTMLSelectElement;
250
+ settings: Settings;
251
+ cssClasses: CssClasses;
252
+ select: Select;
253
+ store: Store;
254
+ render: Render;
255
+ private openTimeout;
256
+ private closeTimeout;
257
+ events: Events;
258
+ constructor(config: Config);
259
+ enable(): void;
260
+ disable(): void;
261
+ getData(): Option_2[] | Optgroup[];
262
+ setData(data: (Partial<Option_2> | Partial<Optgroup>)[]): void;
263
+ getSelected(): string[];
264
+ setSelected(values: string | string[], runAfterChange?: boolean): void;
265
+ addOption(option: Partial<Option_2>): void;
266
+ open(): void;
267
+ close(eventType?: string | null): void;
268
+ search(value: string): void;
269
+ destroy(): void;
270
+ private windowResize;
271
+ private windowScroll;
272
+ private documentClick;
273
+ private windowVisibilityChange;
274
+ }
275
+ export default SlimSelect;
276
+
277
+ export declare class Store {
278
+ private selectType;
279
+ private data;
280
+ private selectedOrder;
281
+ constructor(type: selectType, data: (Partial<Option_2> | Partial<Optgroup>)[]);
282
+ validateDataArray(data: (Partial<Option_2> | Partial<Optgroup>)[]): Error | null;
283
+ validateOption(option: Partial<Option_2>): Error | null;
284
+ partialToFullData(data: (Partial<Option_2> | Partial<Optgroup>)[]): (Option_2 | Optgroup)[];
285
+ setData(data: (Partial<Option_2> | Partial<Optgroup>)[], preserveSelected?: boolean): void;
286
+ getData(): Option_2[] | Optgroup[];
287
+ getDataOptions(): Option_2[];
288
+ addOption(option: Partial<Option_2>, addToStart?: boolean): void;
289
+ setSelectedBy(selectedType: 'id' | 'value', selectedValues: string[]): void;
290
+ getSelected(): string[];
291
+ getSelectedValues(): string[];
292
+ getSelectedOptions(): Option_2[];
293
+ getOptgroupByID(id: string): Optgroup | null;
294
+ getOptionByID(id: string): Option_2 | null;
295
+ getSelectType(): string;
296
+ getFirstOption(): Option_2 | null;
297
+ search(search: string, searchFilter: (opt: Option_2, search: string) => boolean): (Option_2 | Optgroup)[];
298
+ filter(filter: {
299
+ (opt: Option_2): boolean;
300
+ } | null, includeOptgroup: boolean): (Option_2 | Optgroup)[];
301
+ selectedOrderOptions(options: Option_2[]): Option_2[];
302
+ }
303
+
304
+ export { }