intelliwaketssveltekitv25 0.3.76 → 0.3.77

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.
@@ -108,41 +108,77 @@
108
108
  resizeTS = new Date().valueOf()
109
109
  }
110
110
 
111
- function updateSelectedIDs(sels: T[]) {
111
+ function cleanValue(items: T[], value: any) {
112
+ if (!value) return value
113
+ const item = items.find(item => idValue(item) === value)
114
+ if (!item) return null
115
+ return idValue(item)
116
+ }
117
+
118
+ function updateSelectedIDs(sels: T[], creating = false) {
119
+ const newSels = sels.map(sel => idValue(sel))
120
+ const oldSels = selected.map(sel => idValue(sel))
112
121
  if (!!selectedIDs) {
113
- selectedIDs = sels.map(sel => idValue(sel))
122
+ selectedIDs = newSels
123
+ }
124
+
125
+ if (!sels.length) {
126
+ if (onclearall) onclearall()
127
+ }
128
+
129
+ for (const sel of newSels) {
130
+ if (!oldSels.includes(sel)) {
131
+ if (onadd) {
132
+ const clean = cleanValue(sels, sel)
133
+ if (clean) onadd(clean)
134
+ }
135
+ if (!creating) {
136
+ if (onselect) {
137
+ const clean = cleanValue(sels, sel)
138
+ if (clean) onselect(clean)
139
+ }
140
+ } else {
141
+ if (oncreate) {
142
+ const clean = cleanValue(sels, sel)
143
+ if (clean) oncreate(clean)
144
+ }
145
+ }
146
+ }
147
+ }
148
+ for (const sel of oldSels) {
149
+ if (!newSels.includes(sel)) {
150
+ if (onclear) {
151
+ const clean = cleanValue(selected, sel)
152
+ if (clean) onclear(clean)
153
+ }
154
+ }
114
155
  }
156
+
157
+ selected = [...sels]
158
+
159
+ if (onchange) onchange([...sels])
160
+
161
+ return sels
115
162
  }
116
163
 
117
164
  async function doAdd(item: T | null | undefined, creating: boolean) {
118
165
  if (!useDisabled) {
119
166
  if (item) {
120
- selected = isMulti ? [...selected, item] : [item]
121
- updateSelectedIDs(selected)
167
+ updateSelectedIDs(isMulti ? [...selected, item] : [item], creating)
122
168
  searchValue = ''
123
169
  await tick()
124
170
  if (elInput) elInput.focus()
125
- if (onadd) onadd(item)
126
- if (!creating) {
127
- if (onselect) onselect(item)
128
- } else {
129
- if (oncreate) oncreate(inputValue(item))
130
- }
131
- if (onchange) onchange(selected)
132
171
  }
133
172
  }
134
173
  }
135
174
 
136
175
  async function doClear(item: T) {
137
176
  if (!useDisabled) {
138
- selected = selected.filter(s => !DeepEqual(idValue(s), idValue(item)))
139
- updateSelectedIDs(selected)
177
+ updateSelectedIDs(selected.filter(s => !DeepEqual(idValue(s), idValue(item))))
140
178
  if (elInput) {
141
179
  await tick()
142
180
  elInput.focus()
143
181
  }
144
- if (onclear) onclear(item)
145
- if (onchange) onchange(selected)
146
182
  }
147
183
  }
148
184
 
@@ -150,16 +186,13 @@
150
186
  e.stopPropagation()
151
187
  if (!useDisabled) {
152
188
  if (allowClearAll) {
153
- selected = []
154
- updateSelectedIDs(selected)
189
+ updateSelectedIDs([])
155
190
  await tick()
156
191
  }
157
192
  if (elInput) {
158
193
  await tick()
159
194
  elInput.focus()
160
195
  }
161
- if (onclearall) onclearall()
162
- if (onchange) onchange(selected)
163
196
  }
164
197
  }
165
198
 
@@ -216,8 +249,7 @@
216
249
  break
217
250
  case 'Backspace':
218
251
  if (!searchValue) {
219
- selected = selected.slice(0, -1)
220
- updateSelectedIDs(selected)
252
+ updateSelectedIDs([...selected].slice(0, -1))
221
253
  }
222
254
  break
223
255
  case 'ArrowDown':
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "intelliwaketssveltekitv25",
3
- "version": "0.3.76",
3
+ "version": "0.3.77",
4
4
  "exports": {
5
5
  ".": {
6
6
  "types": "./dist/index.d.ts",
@@ -15,8 +15,8 @@
15
15
  ],
16
16
  "peerDependencies": {
17
17
  "@solidbasisventures/intelliwaketsfoundation": "^5.12.84",
18
- "@sveltejs/kit": "^2.21.4",
19
- "svelte": "^5.33.19"
18
+ "@sveltejs/kit": "^2.43.6",
19
+ "svelte": "^5.39.7"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@chromatic-com/storybook": "^3.2.6",
@@ -32,10 +32,10 @@
32
32
  "@storybook/svelte": "^8.6.12",
33
33
  "@storybook/sveltekit": "^8.6.12",
34
34
  "@storybook/test": "^8.6.12",
35
- "@sveltejs/adapter-auto": "^6.0.1",
36
- "@sveltejs/kit": "^2.21.4",
37
- "@sveltejs/package": "^2.3.11",
38
- "@sveltejs/vite-plugin-svelte": "^5.1.0",
35
+ "@sveltejs/adapter-auto": "^6.1.0",
36
+ "@sveltejs/kit": "^2.43.6",
37
+ "@sveltejs/package": "^2.5.4",
38
+ "@sveltejs/vite-plugin-svelte": "^5.1.1",
39
39
  "@tailwindcss/cli": "^4.1.8",
40
40
  "@tailwindcss/vite": "^4.1.8",
41
41
  "@testing-library/jest-dom": "^6.6.3",
@@ -45,21 +45,21 @@
45
45
  "@vitest/coverage-v8": "^3.1.3",
46
46
  "eslint": "^9.26.0",
47
47
  "eslint-config-prettier": "^10.1.5",
48
- "eslint-plugin-svelte": "^3.9.2",
48
+ "eslint-plugin-svelte": "^3.12.4",
49
49
  "globals": "^16.1.0",
50
50
  "jsdom": "^26.1.0",
51
51
  "playwright": "^1.52.0",
52
52
  "prettier": "^3.5.3",
53
- "prettier-plugin-svelte": "^3.3.3",
53
+ "prettier-plugin-svelte": "^3.4.0",
54
54
  "prettier-plugin-tailwindcss": "^0.6.11",
55
55
  "publint": "^0.3.12",
56
56
  "storybook": "^8.6.12",
57
- "svelte": "^5.33.19",
58
- "svelte-check": "^4.2.1",
57
+ "svelte": "^5.39.7",
58
+ "svelte-check": "^4.3.2",
59
59
  "tailwindcss": "^4.1.8",
60
60
  "typescript": "^5.8.3",
61
61
  "typescript-eslint": "^8.32.1",
62
- "vite": "^6.3.5",
62
+ "vite": "^6.3.6",
63
63
  "vitest": "^3.1.3"
64
64
  },
65
65
  "publishConfig": {