intelliwaketssveltekitv25 0.1.167 → 0.1.169
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.
- package/dist/Cookie.d.ts +1 -1
- package/dist/Cookie.js +1 -1
- package/dist/MultiSelect.svelte +36 -21
- package/dist/MultiSelect.svelte.d.ts +2 -0
- package/dist/Paginator.svelte +45 -8
- package/dist/Paginator.svelte.d.ts +2 -0
- package/package.json +1 -1
package/dist/Cookie.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare function CookieCreate(name: string, value: string | null, days
|
|
1
|
+
export declare function CookieCreate(name: string, value: string | null, days?: number): void;
|
|
2
2
|
export declare function CookieReadOld(name: string, defaultValue?: string | null): string | null;
|
|
3
3
|
export declare function CookieRead(name: string, defaultValue?: string | null): string | null;
|
|
4
4
|
export declare function CookieErase(name: string): void;
|
package/dist/Cookie.js
CHANGED
|
@@ -6,7 +6,7 @@ import { IsOn } from "@solidbasisventures/intelliwaketsfoundation";
|
|
|
6
6
|
export function CookieCreate(name, value, days) {
|
|
7
7
|
name = name.replace(/=/g, '');
|
|
8
8
|
let expires = '';
|
|
9
|
-
if (days) {
|
|
9
|
+
if (days !== undefined) {
|
|
10
10
|
const date = new Date();
|
|
11
11
|
date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
|
|
12
12
|
expires = '; expires=' + date.toUTCString();
|
package/dist/MultiSelect.svelte
CHANGED
|
@@ -47,6 +47,8 @@
|
|
|
47
47
|
parentDivElement = null,
|
|
48
48
|
form = undefined,
|
|
49
49
|
onadd,
|
|
50
|
+
onselect,
|
|
51
|
+
oncreate,
|
|
50
52
|
onclear,
|
|
51
53
|
onclearall
|
|
52
54
|
}: {
|
|
@@ -87,6 +89,8 @@
|
|
|
87
89
|
parentDivElement?: HTMLDivElement | null
|
|
88
90
|
form?: string | undefined,
|
|
89
91
|
onadd?: (item: T) => void,
|
|
92
|
+
onselect?: (item: T) => void,
|
|
93
|
+
oncreate?: (item: string) => void,
|
|
90
94
|
onclear?: (item: T) => void,
|
|
91
95
|
onclearall?: () => void
|
|
92
96
|
} = $props()
|
|
@@ -94,7 +98,6 @@
|
|
|
94
98
|
let searchValue = $state('')
|
|
95
99
|
let selectedIndex = $state(0)
|
|
96
100
|
let elInput = $state<HTMLInputElement | null>(null)
|
|
97
|
-
let initialPass = $state(true)
|
|
98
101
|
|
|
99
102
|
let disable = $derived(disabled || readonly)
|
|
100
103
|
|
|
@@ -103,21 +106,38 @@
|
|
|
103
106
|
resizeTS = new Date().valueOf()
|
|
104
107
|
}
|
|
105
108
|
|
|
106
|
-
|
|
109
|
+
function updateSelectedIDs(sels: T[]) {
|
|
110
|
+
if (autoModifySelected && !!selectedIDs) {
|
|
111
|
+
selectedIDs = sels.map(sel => idValue(sel))
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
async function doAdd(item: T | null | undefined, creating: boolean) {
|
|
107
116
|
if (!disable) {
|
|
108
117
|
if (item) {
|
|
109
|
-
if (autoModifySelected)
|
|
118
|
+
if (autoModifySelected) {
|
|
119
|
+
selected = [...selected, item]
|
|
120
|
+
updateSelectedIDs(selected)
|
|
121
|
+
}
|
|
110
122
|
searchValue = ''
|
|
111
123
|
await tick()
|
|
112
124
|
if (elInput) elInput.focus()
|
|
113
125
|
if (onadd) onadd(item)
|
|
126
|
+
if (!creating) {
|
|
127
|
+
if (onselect) onselect(item)
|
|
128
|
+
} else {
|
|
129
|
+
if (oncreate) oncreate(inputValue(item))
|
|
130
|
+
}
|
|
114
131
|
}
|
|
115
132
|
}
|
|
116
133
|
}
|
|
117
134
|
|
|
118
135
|
async function doClear(item: T) {
|
|
119
136
|
if (!disable) {
|
|
120
|
-
if (autoModifySelected)
|
|
137
|
+
if (autoModifySelected) {
|
|
138
|
+
selected = selected.filter(s => !DeepEqual(idValue(s), idValue(item)))
|
|
139
|
+
updateSelectedIDs(selected)
|
|
140
|
+
}
|
|
121
141
|
if (elInput) {
|
|
122
142
|
await tick()
|
|
123
143
|
elInput.focus()
|
|
@@ -130,7 +150,10 @@
|
|
|
130
150
|
e.stopPropagation()
|
|
131
151
|
if (!disable) {
|
|
132
152
|
if (allowClearAll) {
|
|
133
|
-
if (autoModifySelected)
|
|
153
|
+
if (autoModifySelected) {
|
|
154
|
+
selected = []
|
|
155
|
+
updateSelectedIDs(selected)
|
|
156
|
+
}
|
|
134
157
|
await tick()
|
|
135
158
|
}
|
|
136
159
|
if (elInput) {
|
|
@@ -145,11 +168,11 @@
|
|
|
145
168
|
if (!disable) {
|
|
146
169
|
if (searchValue && create) {
|
|
147
170
|
if (!createValid) {
|
|
148
|
-
doAdd(create(searchValue))
|
|
171
|
+
await doAdd(create(searchValue), true)
|
|
149
172
|
} else {
|
|
150
173
|
const valid = createValid(searchValue)
|
|
151
174
|
if (valid === true) {
|
|
152
|
-
doAdd(create(searchValue))
|
|
175
|
+
await doAdd(create(searchValue), true)
|
|
153
176
|
} else if (typeof valid === 'string') {
|
|
154
177
|
ShowMessageBox.show(valid)
|
|
155
178
|
}
|
|
@@ -165,16 +188,6 @@
|
|
|
165
188
|
item
|
|
166
189
|
})))
|
|
167
190
|
|
|
168
|
-
function setSelectedIDs(sels: T[]) {
|
|
169
|
-
if (!initialPass && autoModifySelected && selectedIDs && (selectedIDs.length !== sels.length || !sels.every(sel => !!selectedIDs?.some(selID => selID === idValue(sel))))) {
|
|
170
|
-
selectedIDs = sels.map(sel => idValue(sel))
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
$effect(() => {
|
|
175
|
-
setSelectedIDs(selected)
|
|
176
|
-
})
|
|
177
|
-
|
|
178
191
|
function setSelected(selIDs: (string | number)[] | undefined, poss: T[]) {
|
|
179
192
|
if (selIDs && autoModifySelected && (selIDs.length !== selected.length || !selected.every(sel => !!selIDs?.some(selID => selID === idValue(sel))))) {
|
|
180
193
|
selected = poss.filter(po => !!selIDs?.some(selID => selID == idValue(po)))
|
|
@@ -193,14 +206,17 @@
|
|
|
193
206
|
if (selectedIndex === -1) {
|
|
194
207
|
doCreate()
|
|
195
208
|
} else {
|
|
196
|
-
doAdd(listItems[selectedIndex]?.item)
|
|
209
|
+
doAdd(listItems[selectedIndex]?.item, false)
|
|
197
210
|
}
|
|
198
211
|
e.stopPropagation()
|
|
199
212
|
e.preventDefault()
|
|
200
213
|
}
|
|
201
214
|
break
|
|
202
215
|
case 'Backspace':
|
|
203
|
-
if (!searchValue)
|
|
216
|
+
if (!searchValue) {
|
|
217
|
+
selected = selected.slice(0, -1)
|
|
218
|
+
updateSelectedIDs(selected)
|
|
219
|
+
}
|
|
204
220
|
break
|
|
205
221
|
case 'ArrowDown':
|
|
206
222
|
if (!show) {
|
|
@@ -257,7 +273,6 @@
|
|
|
257
273
|
if (autoFocus && elInput) {
|
|
258
274
|
elInput.focus()
|
|
259
275
|
}
|
|
260
|
-
initialPass = false
|
|
261
276
|
}, 200)
|
|
262
277
|
})
|
|
263
278
|
|
|
@@ -380,7 +395,7 @@
|
|
|
380
395
|
{#each listItems as listItem, idx (keyValue(listItem.item, idx))}
|
|
381
396
|
<button type='button'
|
|
382
397
|
class='btnClean w-full px-2 py-1 hover:bg-slate-200 text-left'
|
|
383
|
-
onclick={() => doAdd(listItem.item)}
|
|
398
|
+
onclick={() => doAdd(listItem.item, false)}
|
|
384
399
|
tabindex={-1}
|
|
385
400
|
class:bg-slate-100={selectedIndex === idx}>
|
|
386
401
|
<DisplayHTML value={listItem.display?.toString()} />
|
|
@@ -39,6 +39,8 @@ declare class __sveltets_Render<T extends TGenericMultiSelect> {
|
|
|
39
39
|
parentDivElement?: HTMLDivElement | null;
|
|
40
40
|
form?: string | undefined;
|
|
41
41
|
onadd?: ((item: T) => void) | undefined;
|
|
42
|
+
onselect?: ((item: T) => void) | undefined;
|
|
43
|
+
oncreate?: ((item: string) => void) | undefined;
|
|
42
44
|
onclear?: ((item: T) => void) | undefined;
|
|
43
45
|
onclearall?: (() => void) | undefined;
|
|
44
46
|
};
|
package/dist/Paginator.svelte
CHANGED
|
@@ -10,21 +10,25 @@
|
|
|
10
10
|
ToArray,
|
|
11
11
|
ToDigits
|
|
12
12
|
} from '@solidbasisventures/intelliwaketsfoundation'
|
|
13
|
-
import { DropDown, type IDDAction, PageAdvanceSize } from './index'
|
|
13
|
+
import { CookieCreate, CookieErase, CookieRead, DropDown, type IDDAction, PageAdvanceSize } from './index'
|
|
14
14
|
import { page as pageState } from '$app/state'
|
|
15
|
-
import { goto } from '$app/navigation'
|
|
15
|
+
import { goto, invalidate as doInvalidate, invalidateAll } from '$app/navigation'
|
|
16
16
|
|
|
17
17
|
let {
|
|
18
18
|
page = $bindable(),
|
|
19
19
|
pageCount,
|
|
20
20
|
verbose = false,
|
|
21
21
|
updateQueryParams = false,
|
|
22
|
+
cookieParms = false,
|
|
23
|
+
cookieDays,
|
|
22
24
|
invalidate = 'All',
|
|
23
25
|
class: clazz = ''
|
|
24
26
|
}: (Pick<IPaginatorResponse, 'page' | 'pageCount'> &
|
|
25
27
|
{
|
|
26
28
|
verbose?: boolean
|
|
27
29
|
updateQueryParams?: boolean | string
|
|
30
|
+
cookieParms?: boolean | string
|
|
31
|
+
cookieDays?: number
|
|
28
32
|
invalidate?: string | string[] | (string | URL | ((url: URL) => boolean)) | (string | URL | ((url: URL) => boolean))[] | null
|
|
29
33
|
class?: string
|
|
30
34
|
}) = $props()
|
|
@@ -95,10 +99,23 @@
|
|
|
95
99
|
let display = $derived(createDisplay(page, pageCount, clientWidth))
|
|
96
100
|
|
|
97
101
|
let queryParamName = $derived(!updateQueryParams ? null : updateQueryParams === true ? 'page' : updateQueryParams)
|
|
102
|
+
let cookieName = $derived(!cookieParms ? null : cookieParms === true ? 'page' : cookieParms)
|
|
103
|
+
|
|
104
|
+
function performInvalidate() {
|
|
105
|
+
for (const inv of ToArray(invalidate)) {
|
|
106
|
+
if (inv) {
|
|
107
|
+
if (inv === 'All') {
|
|
108
|
+
invalidateAll()
|
|
109
|
+
} else {
|
|
110
|
+
doInvalidate(inv)
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
98
115
|
|
|
99
116
|
$effect(() => {
|
|
100
|
-
if (queryParamName) {
|
|
101
|
-
const currentValue = CleanNumberNull(pageState.url.searchParams.get(queryParamName))
|
|
117
|
+
if (queryParamName || cookieName) {
|
|
118
|
+
const currentValue = CleanNumberNull(cookieName ? CookieRead(cookieName) : queryParamName ? pageState.url.searchParams.get(queryParamName) : null)
|
|
102
119
|
const gotoSettings: {
|
|
103
120
|
replaceState?: boolean | undefined;
|
|
104
121
|
invalidateAll?: boolean | undefined;
|
|
@@ -110,13 +127,33 @@
|
|
|
110
127
|
}
|
|
111
128
|
if (display.page === 1) {
|
|
112
129
|
if (currentValue) {
|
|
113
|
-
|
|
114
|
-
|
|
130
|
+
if (queryParamName) {
|
|
131
|
+
pageState.url.searchParams.delete(queryParamName)
|
|
132
|
+
goto(pageState.url, gotoSettings)
|
|
133
|
+
} else if (cookieName) {
|
|
134
|
+
CookieErase(cookieName)
|
|
135
|
+
if (invalidate) {
|
|
136
|
+
performInvalidate()
|
|
137
|
+
} else {
|
|
138
|
+
window.location.reload()
|
|
139
|
+
}
|
|
140
|
+
}
|
|
115
141
|
}
|
|
116
142
|
} else if (display.page !== currentValue) {
|
|
117
|
-
|
|
118
|
-
|
|
143
|
+
if (queryParamName) {
|
|
144
|
+
pageState.url.searchParams.set(queryParamName, display.page.toString())
|
|
145
|
+
goto(pageState.url, gotoSettings)
|
|
146
|
+
} else if (cookieName) {
|
|
147
|
+
CookieCreate(cookieName, display.page.toString(), cookieDays)
|
|
148
|
+
if (invalidate) {
|
|
149
|
+
performInvalidate()
|
|
150
|
+
} else {
|
|
151
|
+
window.location.reload()
|
|
152
|
+
}
|
|
153
|
+
}
|
|
119
154
|
}
|
|
155
|
+
} else if (invalidate) {
|
|
156
|
+
performInvalidate()
|
|
120
157
|
}
|
|
121
158
|
})
|
|
122
159
|
</script>
|
|
@@ -2,6 +2,8 @@ import { type IPaginatorResponse } from '@solidbasisventures/intelliwaketsfounda
|
|
|
2
2
|
type $$ComponentProps = (Pick<IPaginatorResponse, 'page' | 'pageCount'> & {
|
|
3
3
|
verbose?: boolean;
|
|
4
4
|
updateQueryParams?: boolean | string;
|
|
5
|
+
cookieParms?: boolean | string;
|
|
6
|
+
cookieDays?: number;
|
|
5
7
|
invalidate?: string | string[] | (string | URL | ((url: URL) => boolean)) | (string | URL | ((url: URL) => boolean))[] | null;
|
|
6
8
|
class?: string;
|
|
7
9
|
});
|