slim-select 2.13.1 → 3.0.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 (60) hide show
  1. package/README.md +185 -44
  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 +2 -2030
  7. package/dist/slimselect.cjs.js.map +1 -0
  8. package/dist/slimselect.css +1 -1
  9. package/dist/slimselect.css.map +1 -1
  10. package/dist/slimselect.es.js +1225 -2012
  11. package/dist/slimselect.es.js.map +1 -0
  12. package/dist/slimselect.iife.js +2 -0
  13. package/dist/slimselect.iife.js.map +1 -0
  14. package/dist/slimselect.js +2 -2036
  15. package/dist/slimselect.js.map +1 -0
  16. package/dist/vue/index.d.ts +304 -0
  17. package/dist/vue/index.js +1341 -0
  18. package/dist/vue/index.umd.js +1 -0
  19. package/index.html +1 -0
  20. package/package.json +63 -40
  21. package/release.js +0 -7
  22. package/src/slim-select/accessibility.test.ts +782 -0
  23. package/src/slim-select/classes.test.ts +7 -6
  24. package/src/slim-select/classes.ts +8 -6
  25. package/src/slim-select/helpers.test.ts +10 -8
  26. package/src/slim-select/index.test.ts +509 -14
  27. package/src/slim-select/index.ts +58 -31
  28. package/src/slim-select/react/index.tsx +9 -0
  29. package/src/slim-select/react/react.tsx +112 -0
  30. package/src/slim-select/render.test.ts +479 -119
  31. package/src/slim-select/render.ts +213 -91
  32. package/src/slim-select/select.test.ts +28 -10
  33. package/src/slim-select/select.ts +35 -12
  34. package/src/slim-select/settings.test.ts +19 -8
  35. package/src/slim-select/settings.ts +2 -4
  36. package/src/slim-select/slimselect.scss +30 -15
  37. package/src/slim-select/store.test.ts +13 -16
  38. package/src/slim-select/store.ts +97 -86
  39. package/src/slim-select/vue/index.ts +9 -0
  40. package/src/slim-select/vue/vue.test.ts +832 -0
  41. package/src/slim-select/{vue.vue → vue/vue.vue} +45 -23
  42. package/tsconfig.json +6 -4
  43. package/{vite.config.mts → vite.config.docs.mts} +10 -0
  44. package/vite.config.lib.mts +48 -0
  45. package/vite.config.react.mts +40 -0
  46. package/vite.config.vue.mts +39 -0
  47. package/vitest.config.ts +29 -0
  48. package/dist/classes.d.ts +0 -43
  49. package/dist/helpers.d.ts +0 -5
  50. package/dist/render.d.ts +0 -81
  51. package/dist/select.d.ts +0 -30
  52. package/dist/settings.d.ts +0 -35
  53. package/dist/slimselect.global.js +0 -2033
  54. package/dist/slimselect.min.js +0 -1
  55. package/dist/slimselect.umd.js +0 -2036
  56. package/dist/slimselect.umd.min.js +0 -1
  57. package/dist/store.d.ts +0 -84
  58. package/jest.config.js +0 -14
  59. package/src/slim-select/rollup.config.mjs +0 -127
  60. package/src/slim-select/tsconfig.json +0 -14
@@ -1,6 +1,6 @@
1
1
  'use strict'
2
2
 
3
- import { describe, expect, test } from '@jest/globals'
3
+ import { describe, expect, test } from 'vitest'
4
4
  import CssClasses from './classes'
5
5
 
6
6
  const defaultClasses: { [key: string]: string } = {
@@ -19,8 +19,9 @@ const defaultClasses: { [key: string]: string } = {
19
19
  arrowClose: 'M10,30 L50,70 L90,30',
20
20
  arrowOpen: 'M10,70 L50,30 L90,70',
21
21
  content: 'ss-content',
22
- openAbove: 'ss-open-above',
23
- openBelow: 'ss-open-below',
22
+ contentOpen: 'ss-open',
23
+ dirAbove: 'ss-dir-above',
24
+ dirBelow: 'ss-dir-below',
24
25
  search: 'ss-search',
25
26
  searchHighlighter: 'ss-search-highlight',
26
27
  searching: 'ss-searching',
@@ -38,7 +39,7 @@ const defaultClasses: { [key: string]: string } = {
38
39
  option: 'ss-option',
39
40
  optionDelete: 'M10,10 L90,90 M10,90 L90,10',
40
41
  highlighted: 'ss-highlighted',
41
- open: 'ss-open',
42
+ mainOpen: 'ss-open',
42
43
  close: 'ss-close',
43
44
  selected: 'ss-selected',
44
45
  error: 'ss-error',
@@ -61,10 +62,10 @@ describe('CssClasses module', () => {
61
62
  test('classes can be overwritten via the constructor', () => {
62
63
  const classesWithOverride = JSON.parse(JSON.stringify(defaultClasses))
63
64
  classesWithOverride['main'] = 'new-main'
64
- classesWithOverride['open'] = 'new-open'
65
+ classesWithOverride['mainOpen'] = 'new-open'
65
66
 
66
67
  // Convert to unknown and then to custom object to prevent TS from throwing errors
67
- const classes = new CssClasses({ main: 'new-main', open: 'new-open' }) as unknown as { [key: string]: string }
68
+ const classes = new CssClasses({ main: 'new-main', mainOpen: 'new-open' }) as unknown as { [key: string]: string }
68
69
  Object.keys(classesWithOverride).forEach((key) => {
69
70
  expect(classes[key]).toBe(classesWithOverride[key])
70
71
  })
@@ -23,8 +23,9 @@ export default class CssClasses {
23
23
 
24
24
  // Content
25
25
  public content: string
26
- public openAbove: string
27
- public openBelow: string
26
+ public contentOpen: string
27
+ public dirAbove: string
28
+ public dirBelow: string
28
29
 
29
30
  // Search
30
31
  public search: string
@@ -52,7 +53,7 @@ export default class CssClasses {
52
53
  public highlighted: string
53
54
 
54
55
  // Misc
55
- public open: string
56
+ public mainOpen: string
56
57
  public close: string
57
58
  public selected: string
58
59
  public error: string
@@ -80,8 +81,9 @@ export default class CssClasses {
80
81
  this.arrowClose = classes.arrowClose || 'M10,30 L50,70 L90,30'
81
82
  this.arrowOpen = classes.arrowOpen || 'M10,70 L50,30 L90,70'
82
83
  this.content = classes.content || 'ss-content'
83
- this.openAbove = classes.openAbove || 'ss-open-above'
84
- this.openBelow = classes.openBelow || 'ss-open-below'
84
+ this.contentOpen = classes.contentOpen || 'ss-open'
85
+ this.dirAbove = classes.dirAbove || 'ss-dir-above'
86
+ this.dirBelow = classes.dirBelow || 'ss-dir-below'
85
87
  this.search = classes.search || 'ss-search'
86
88
  this.searchHighlighter = classes.searchHighlighter || 'ss-search-highlight'
87
89
  this.searching = classes.searching || 'ss-searching'
@@ -99,7 +101,7 @@ export default class CssClasses {
99
101
  this.option = classes.option || 'ss-option'
100
102
  this.optionDelete = classes.optionDelete || 'M10,10 L90,90 M10,90 L90,10'
101
103
  this.highlighted = classes.highlighted || 'ss-highlighted'
102
- this.open = classes.open || 'ss-open'
104
+ this.mainOpen = classes.mainOpen || 'ss-open'
103
105
  this.close = classes.close || 'ss-close'
104
106
  this.selected = classes.selected || 'ss-selected'
105
107
  this.error = classes.error || 'ss-error'
@@ -4,7 +4,7 @@
4
4
 
5
5
  'use strict'
6
6
 
7
- import { describe, expect, test } from '@jest/globals'
7
+ import { describe, expect, test, vi } from 'vitest'
8
8
  import { hasClassInTree, debounce, isEqual, kebabCase } from './helpers'
9
9
 
10
10
  describe('helpers module', () => {
@@ -73,7 +73,7 @@ describe('helpers module', () => {
73
73
 
74
74
  describe('debounce', () => {
75
75
  test('debounce calls function after default timeout', async () => {
76
- const callback = jest.fn()
76
+ const callback = vi.fn()
77
77
  const debounced_function = debounce(callback)
78
78
  debounced_function()
79
79
 
@@ -84,33 +84,35 @@ describe('helpers module', () => {
84
84
  })
85
85
 
86
86
  test('debounce calls function after higher timeout', async () => {
87
- const callback = jest.fn()
87
+ const callback = vi.fn()
88
88
  const debounced_function = debounce(callback, 100)
89
89
  debounced_function()
90
90
 
91
91
  await new Promise((r) => setTimeout(r, 50))
92
92
  expect(callback).not.toHaveBeenCalled()
93
93
 
94
- await new Promise((r) => setTimeout(r, 50))
94
+ // Wait a bit longer to account for CI timing variations
95
+ await new Promise((r) => setTimeout(r, 100))
95
96
  expect(callback).toHaveBeenCalled()
96
97
  expect(callback).toHaveBeenCalledTimes(1)
97
98
  })
98
99
 
99
100
  test('debounce calls function after lower timeout', async () => {
100
- const callback = jest.fn()
101
+ const callback = vi.fn()
101
102
  const debounced_function = debounce(callback, 10)
102
103
  debounced_function()
103
104
 
104
105
  await new Promise((r) => setTimeout(r, 5))
105
106
  expect(callback).not.toHaveBeenCalled()
106
107
 
107
- await new Promise((r) => setTimeout(r, 5))
108
+ // Wait a bit longer to account for CI timing variations
109
+ await new Promise((r) => setTimeout(r, 10))
108
110
  expect(callback).toHaveBeenCalled()
109
111
  expect(callback).toHaveBeenCalledTimes(1)
110
112
  })
111
113
 
112
114
  test('debounce respects inmediate setting', () => {
113
- const callback = jest.fn()
115
+ const callback = vi.fn()
114
116
  const debounced_function = debounce(callback, 1000, true)
115
117
  debounced_function()
116
118
 
@@ -119,7 +121,7 @@ describe('helpers module', () => {
119
121
  })
120
122
 
121
123
  test('debounce respects order of calls', async () => {
122
- const callback = jest.fn(() => {})
124
+ const callback = vi.fn(() => {})
123
125
  const debounced_function: (a: number) => void = debounce(callback)
124
126
  debounced_function(0)
125
127
  debounced_function(1)