slim-select 2.8.1 → 2.9.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 (69) hide show
  1. package/.prettierignore +1 -0
  2. package/.prettierrc +4 -3
  3. package/README.md +2 -0
  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 +30 -41
  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 +75 -96
  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 +69 -20
  34. package/src/slim-select/settings.test.ts +257 -0
  35. package/src/slim-select/settings.ts +4 -0
  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/src/react/.eslintignore +0 -2
  42. package/src/react/.eslintrc.cjs +0 -24
  43. package/src/react/index.html +0 -14
  44. package/src/react/jestconfig.json +0 -11
  45. package/src/react/package.json +0 -32
  46. package/src/react/src/frameworkpage.tsx +0 -133
  47. package/src/react/src/index.ts +0 -3
  48. package/src/react/src/slimselect.tsx +0 -148
  49. package/src/react/tests/slimselect.test.tsx +0 -52
  50. package/src/react/tsconfig.json +0 -37
  51. package/src/react/tsconfig.node.json +0 -10
  52. package/src/react/vite.config.ts +0 -55
  53. package/src/vue/README.md +0 -48
  54. package/src/vue/dist/slim-select/helpers.d.ts +0 -5
  55. package/src/vue/dist/slim-select/index.d.ts +0 -46
  56. package/src/vue/dist/slim-select/render.d.ts +0 -120
  57. package/src/vue/dist/slim-select/select.d.ts +0 -28
  58. package/src/vue/dist/slim-select/settings.d.ts +0 -34
  59. package/src/vue/dist/slim-select/store.d.ts +0 -80
  60. package/src/vue/dist/slimselectvue.es.js +0 -1978
  61. package/src/vue/dist/slimselectvue.global.js +0 -1981
  62. package/src/vue/dist/slimselectvue.ssr.js +0 -1980
  63. package/src/vue/dist/vue/hello.d.ts +0 -2
  64. package/src/vue/dist/vue/slimselect.vue.d.ts +0 -326
  65. package/src/vue/hello.ts +0 -5
  66. package/src/vue/package.json +0 -28
  67. package/src/vue/rollup.config.mjs +0 -44
  68. package/src/vue/tsconfig.json +0 -14
  69. /package/{vite.config.ts → vite.config.mts} +0 -0
@@ -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
 
@@ -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...',
@@ -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
  }