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