slim-select 2.8.2 → 2.9.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 (69) hide show
  1. package/.prettierignore +1 -0
  2. package/.prettierrc +4 -3
  3. package/README.md +5 -2
  4. package/dist/classes.d.ts +43 -0
  5. package/dist/helpers.d.ts +1 -1
  6. package/dist/index.d.ts +5 -2
  7. package/dist/render.d.ts +4 -44
  8. package/dist/select.d.ts +4 -2
  9. package/dist/settings.d.ts +2 -1
  10. package/dist/slimselect.cjs.js +248 -120
  11. package/dist/slimselect.css +1 -1
  12. package/dist/slimselect.css.map +1 -1
  13. package/dist/slimselect.es.js +248 -120
  14. package/dist/slimselect.global.js +248 -120
  15. package/dist/slimselect.js +248 -120
  16. package/dist/slimselect.min.js +1 -1
  17. package/dist/slimselect.umd.js +248 -120
  18. package/dist/slimselect.umd.min.js +1 -1
  19. package/dist/store.d.ts +4 -2
  20. package/index.html +1 -4
  21. package/jest.config.js +6 -0
  22. package/package.json +31 -40
  23. package/src/slim-select/classes.test.ts +72 -0
  24. package/src/slim-select/classes.ts +109 -0
  25. package/src/slim-select/helpers.test.ts +160 -0
  26. package/src/slim-select/helpers.ts +3 -12
  27. package/src/slim-select/index.test.ts +109 -16
  28. package/src/slim-select/index.ts +41 -12
  29. package/src/slim-select/render.test.ts +1169 -18
  30. package/src/slim-select/render.ts +78 -97
  31. package/src/slim-select/rollup.config.mjs +28 -28
  32. package/src/slim-select/select.test.ts +306 -156
  33. package/src/slim-select/select.ts +70 -21
  34. package/src/slim-select/settings.test.ts +272 -0
  35. package/src/slim-select/settings.ts +5 -1
  36. package/src/slim-select/slimselect.scss +7 -3
  37. package/src/slim-select/store.test.ts +986 -235
  38. package/src/slim-select/store.ts +70 -28
  39. package/src/{vue/slimselect.vue → slim-select/vue.vue} +19 -17
  40. package/tsconfig.json +2 -3
  41. package/{vite.config.ts → vite.config.mts} +11 -4
  42. package/src/react/.eslintignore +0 -2
  43. package/src/react/.eslintrc.cjs +0 -24
  44. package/src/react/index.html +0 -14
  45. package/src/react/jestconfig.json +0 -11
  46. package/src/react/package.json +0 -32
  47. package/src/react/src/frameworkpage.tsx +0 -133
  48. package/src/react/src/index.ts +0 -3
  49. package/src/react/src/slimselect.tsx +0 -148
  50. package/src/react/tests/slimselect.test.tsx +0 -52
  51. package/src/react/tsconfig.json +0 -37
  52. package/src/react/tsconfig.node.json +0 -10
  53. package/src/react/vite.config.ts +0 -55
  54. package/src/vue/README.md +0 -48
  55. package/src/vue/dist/slim-select/helpers.d.ts +0 -5
  56. package/src/vue/dist/slim-select/index.d.ts +0 -46
  57. package/src/vue/dist/slim-select/render.d.ts +0 -120
  58. package/src/vue/dist/slim-select/select.d.ts +0 -28
  59. package/src/vue/dist/slim-select/settings.d.ts +0 -34
  60. package/src/vue/dist/slim-select/store.d.ts +0 -80
  61. package/src/vue/dist/slimselectvue.es.js +0 -1978
  62. package/src/vue/dist/slimselectvue.global.js +0 -1981
  63. package/src/vue/dist/slimselectvue.ssr.js +0 -1980
  64. package/src/vue/dist/vue/hello.d.ts +0 -2
  65. package/src/vue/dist/vue/slimselect.vue.d.ts +0 -326
  66. package/src/vue/hello.ts +0 -5
  67. package/src/vue/package.json +0 -28
  68. package/src/vue/rollup.config.mjs +0 -44
  69. package/src/vue/tsconfig.json +0 -14
@@ -0,0 +1 @@
1
+ **/dist
package/.prettierrc CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "semi": false,
3
3
  "singleQuote": true,
4
- "trailingComma": "all",
5
- "printWidth": 120
6
- }
4
+ "trailingComma": "none",
5
+ "printWidth": 120,
6
+ "tabWidth": 2
7
+ }
package/README.md CHANGED
@@ -5,6 +5,7 @@
5
5
  Advanced select dropdown
6
6
 
7
7
  [![NPM Downloads](https://img.shields.io/npm/dt/slim-select.svg)](https://www.npmjs.com/package/slim-select)
8
+ ![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/brianvoe/slim-select/jest.yml?logo=jest&label=unit%20tests)
8
9
 
9
10
  ## Support
10
11
 
@@ -14,7 +15,7 @@ Advanced select dropdown
14
15
 
15
16
  ## [Documentation and Examples](https://slimselectjs.com)
16
17
 
17
- See [website](https://slimselectjs.com) for the full list of settings, methods and event callbacks
18
+ See [website](https://slimselectjs.com) for the full list of [settings](https://slimselectjs.com/settings), [methods](https://slimselectjs.com/methods) and [event callbacks](https://slimselectjs.com/events)
18
19
 
19
20
  ![](https://raw.githubusercontent.com/brianvoe/slim-select/master/slimselect.gif)
20
21
 
@@ -133,6 +134,7 @@ new SlimSelect({
133
134
  disabled: false,
134
135
  alwaysOpen: false,
135
136
  showSearch: true,
137
+ focusSearch: true,
136
138
  searchPlaceholder: 'Search',
137
139
  searchText: 'No Results',
138
140
  searchingText: 'Searching...',
@@ -150,6 +152,7 @@ new SlimSelect({
150
152
  timeoutDelay: 200,
151
153
  maxValuesShown: 20,
152
154
  maxValuesMessage: '{number} selected',
155
+ addableText: 'Press "Enter" to add {value}',
153
156
  },
154
157
  })
155
158
  ```
@@ -165,7 +168,7 @@ new SlimSelect({
165
168
  events: {
166
169
  search: (searchValue: string, currentData: DataArray) => Promise<DataArrayPartial> | DataArrayPartial
167
170
  searchFilter: (option: Option, search: string) => boolean
168
- addable: (value: string) => Promise<OptionOptional | string> | OptionOptional | string
171
+ addable: (value: string) => Promise<OptionOptional | string> | OptionOptional | string | Error
169
172
  beforeChange: (newVal: Option[], oldVal: Option[]) => boolean | void
170
173
  afterChange: (newVal: Option[]) => void
171
174
  beforeOpen: () => void
@@ -0,0 +1,43 @@
1
+ export default class CssClasses {
2
+ main: string;
3
+ placeholder: string;
4
+ values: string;
5
+ single: string;
6
+ max: string;
7
+ value: string;
8
+ valueText: string;
9
+ valueDelete: string;
10
+ valueOut: string;
11
+ deselect: string;
12
+ deselectPath: string;
13
+ arrow: string;
14
+ arrowClose: string;
15
+ arrowOpen: string;
16
+ content: string;
17
+ openAbove: string;
18
+ openBelow: string;
19
+ search: string;
20
+ searchHighlighter: string;
21
+ searching: string;
22
+ addable: string;
23
+ addablePath: string;
24
+ list: string;
25
+ optgroup: string;
26
+ optgroupLabel: string;
27
+ optgroupLabelText: string;
28
+ optgroupActions: string;
29
+ optgroupSelectAll: string;
30
+ optgroupSelectAllBox: string;
31
+ optgroupSelectAllCheck: string;
32
+ optgroupClosable: string;
33
+ option: string;
34
+ optionDelete: string;
35
+ highlighted: string;
36
+ open: string;
37
+ close: string;
38
+ selected: string;
39
+ error: string;
40
+ disabled: string;
41
+ hide: string;
42
+ constructor(classes?: Partial<CssClasses>);
43
+ }
package/dist/helpers.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export declare function generateID(): string;
2
- export declare function hasClassInTree(element: HTMLElement, className: string): any;
2
+ export declare function hasClassInTree(element: HTMLElement, className: string): HTMLElement | null;
3
3
  export declare function debounce<T extends (...args: any[]) => void>(func: T, wait?: number, immediate?: boolean): () => void;
4
4
  export declare function isEqual(a: any, b: any): boolean;
5
5
  export declare function kebabCase(str: string): string;
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import CssClasses from './classes';
1
2
  import Render from './render';
2
3
  import Select from './select';
3
4
  import Settings, { SettingsPartial } from './settings';
@@ -6,12 +7,13 @@ export interface Config {
6
7
  select: string | Element;
7
8
  data?: DataArrayPartial;
8
9
  settings?: SettingsPartial;
10
+ cssClasses?: Partial<CssClasses>;
9
11
  events?: Events;
10
12
  }
11
13
  export interface Events {
12
14
  search?: (searchValue: string, currentData: DataArray) => Promise<DataArrayPartial> | DataArrayPartial;
13
15
  searchFilter?: (option: Option, search: string) => boolean;
14
- addable?: (value: string) => Promise<OptionOptional | string> | OptionOptional | string | false | null | undefined;
16
+ addable?: (value: string) => Promise<OptionOptional | string> | OptionOptional | string | false | null | undefined | Error;
15
17
  beforeChange?: (newVal: Option[], oldVal: Option[]) => boolean | void;
16
18
  afterChange?: (newVal: Option[]) => void;
17
19
  beforeOpen?: () => void;
@@ -23,6 +25,7 @@ export interface Events {
23
25
  export default class SlimSelect {
24
26
  selectEl: HTMLSelectElement;
25
27
  settings: Settings;
28
+ cssClasses: CssClasses;
26
29
  select: Select;
27
30
  store: Store;
28
31
  render: Render;
@@ -33,7 +36,7 @@ export default class SlimSelect {
33
36
  getData(): DataArray;
34
37
  setData(data: DataArrayPartial): void;
35
38
  getSelected(): string[];
36
- setSelected(value: string | string[], runAfterChange?: boolean): void;
39
+ setSelected(values: string | string[], runAfterChange?: boolean): void;
37
40
  addOption(option: OptionOptional): void;
38
41
  open(): void;
39
42
  close(eventType?: string | null): void;
package/dist/render.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  import Settings from './settings';
2
2
  import Store, { DataArray, Option, OptionOptional } from './store';
3
+ import CssClasses from './classes';
3
4
  export interface Callbacks {
4
5
  open: () => void;
5
6
  close: () => void;
6
- addable?: (value: string) => Promise<OptionOptional | string> | OptionOptional | string | false | undefined | null;
7
+ addable?: (value: string) => Promise<OptionOptional | string> | OptionOptional | string | false | undefined | null | Error;
7
8
  setSelected: (value: string | string[], runAfterChange: boolean) => void;
8
9
  addOption: (option: Option) => void;
9
10
  search: (search: string) => void;
@@ -43,49 +44,8 @@ export default class Render {
43
44
  callbacks: Callbacks;
44
45
  main: Main;
45
46
  content: Content;
46
- classes: {
47
- main: string;
48
- placeholder: string;
49
- values: string;
50
- single: string;
51
- max: string;
52
- value: string;
53
- valueText: string;
54
- valueDelete: string;
55
- valueOut: string;
56
- deselect: string;
57
- deselectPath: string;
58
- arrow: string;
59
- arrowClose: string;
60
- arrowOpen: string;
61
- content: string;
62
- openAbove: string;
63
- openBelow: string;
64
- search: string;
65
- searchHighlighter: string;
66
- searching: string;
67
- addable: string;
68
- addablePath: string;
69
- list: string;
70
- optgroup: string;
71
- optgroupLabel: string;
72
- optgroupLabelText: string;
73
- optgroupActions: string;
74
- optgroupSelectAll: string;
75
- optgroupSelectAllBox: string;
76
- optgroupSelectAllCheck: string;
77
- optgroupClosable: string;
78
- option: string;
79
- optionDelete: string;
80
- highlighted: string;
81
- open: string;
82
- close: string;
83
- selected: string;
84
- error: string;
85
- disabled: string;
86
- hide: string;
87
- };
88
- constructor(settings: Required<Settings>, store: Store, callbacks: Callbacks);
47
+ classes: CssClasses;
48
+ constructor(settings: Required<Settings>, classes: Required<CssClasses>, store: Store, callbacks: Callbacks);
89
49
  enable(): void;
90
50
  disable(): void;
91
51
  open(): void;
package/dist/select.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { DataArray, DataArrayPartial, Optgroup, OptgroupOptional, Option } from './store';
2
2
  export default class Select {
3
3
  select: HTMLSelectElement;
4
- onValueChange?: (value: string[]) => void;
4
+ onValueChange?: (value: Option[]) => void;
5
5
  onClassChange?: (classes: string[]) => void;
6
6
  onDisabledChange?: (disabled: boolean) => void;
7
7
  onOptionsChange?: (data: DataArrayPartial) => void;
@@ -18,8 +18,10 @@ export default class Select {
18
18
  getData(): DataArrayPartial;
19
19
  getDataFromOptgroup(optgroup: HTMLOptGroupElement): OptgroupOptional;
20
20
  getDataFromOption(option: HTMLOptionElement): Option;
21
+ getSelectedOptions(): Option[];
21
22
  getSelectedValues(): string[];
22
- setSelected(value: string[]): void;
23
+ setSelected(ids: string[]): void;
24
+ setSelectedByValue(values: string[]): void;
23
25
  updateSelect(id?: string, style?: string, classes?: string[]): void;
24
26
  updateOptions(data: DataArray): void;
25
27
  createOptgroup(optgroup: Optgroup): HTMLOptGroupElement;
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  export type SettingsPartial = Partial<Settings>;
3
2
  export default class Settings {
4
3
  id: string;
@@ -11,6 +10,7 @@ export default class Settings {
11
10
  disabled: boolean;
12
11
  alwaysOpen: boolean;
13
12
  showSearch: boolean;
13
+ focusSearch: boolean;
14
14
  ariaLabel: string;
15
15
  searchPlaceholder: string;
16
16
  searchText: string;
@@ -30,5 +30,6 @@ export default class Settings {
30
30
  timeoutDelay: number;
31
31
  maxValuesShown: number;
32
32
  maxValuesMessage: string;
33
+ addableText: string;
33
34
  constructor(settings?: SettingsPartial);
34
35
  }