@ibobbyts/svelte-ui-utils 0.5.0 → 0.5.2
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/README.md +71 -0
- package/dist/data-table/FilterControl.svelte +73 -0
- package/dist/data-table/FilterControl.svelte.d.ts.map +1 -1
- package/dist/data-table/filter.d.ts +3 -1
- package/dist/data-table/filter.d.ts.map +1 -1
- package/dist/data-table/filter.js +5 -1
- package/dist/data-table/index.d.ts +1 -1
- package/dist/data-table/index.d.ts.map +1 -1
- package/dist/data-table/types.d.ts +24 -2
- package/dist/data-table/types.d.ts.map +1 -1
- package/dist/dropdown/Dropdown.svelte +23 -2
- package/dist/dropdown/Dropdown.svelte.d.ts.map +1 -1
- package/dist/dropdown/index.d.ts +3 -0
- package/dist/dropdown/index.d.ts.map +1 -1
- package/dist/dropdown/index.js +2 -0
- package/dist/dropdown/load-options.d.ts +65 -0
- package/dist/dropdown/load-options.d.ts.map +1 -0
- package/dist/dropdown/load-options.js +57 -0
- package/dist/dropdown/selection.d.ts +14 -0
- package/dist/dropdown/selection.d.ts.map +1 -0
- package/dist/dropdown/selection.js +16 -0
- package/dist/style.css +47 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -505,6 +505,54 @@ render source and `loadOptions` is never called. Type the loader with
|
|
|
505
505
|
`DropdownLoadOptions`/`DropdownLoadOptionsResult`, exported from the package
|
|
506
506
|
root.
|
|
507
507
|
|
|
508
|
+
### loadOptions factories
|
|
509
|
+
|
|
510
|
+
Most `loadOptions` implementations only differ in the item source: filter a
|
|
511
|
+
local array, or POST one JSON endpoint. The factories exported from
|
|
512
|
+
`@ibobbyts/svelte-ui-utils/dropdown` (and the package root) build loaders that
|
|
513
|
+
fit both the root `Dropdown` search mode and the data-table
|
|
514
|
+
`filter.dropdownSearch` control:
|
|
515
|
+
|
|
516
|
+
```ts
|
|
517
|
+
import { createFetchLoadOptions, createLocalLoadOptions } from '@ibobbyts/svelte-ui-utils';
|
|
518
|
+
|
|
519
|
+
// Local list: filter, map to options, slice to the limit.
|
|
520
|
+
const loadFromRoster = createLocalLoadOptions(
|
|
521
|
+
() => rosterUsers,
|
|
522
|
+
{
|
|
523
|
+
toOption: (user) => ({ value: String(user.id), label: user.displayName }),
|
|
524
|
+
matches: (user, query) => matchesPinyin(user.displayName, query),
|
|
525
|
+
limit: 5
|
|
526
|
+
}
|
|
527
|
+
);
|
|
528
|
+
|
|
529
|
+
// JSON endpoint: URL, body builder, payload decoding, abort and error policy.
|
|
530
|
+
const loadFromApi = createFetchLoadOptions({
|
|
531
|
+
url: '/api/members/search',
|
|
532
|
+
buildBody: (query, limit) => ({ groupId, query, limit }),
|
|
533
|
+
mapOptions: (payload) => (payload as { options: MemberOption[] }).options ?? [],
|
|
534
|
+
throwOnError: true
|
|
535
|
+
});
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
`createLocalLoadOptions(source, config?)` accepts a static array or a getter
|
|
539
|
+
re-evaluated on every search. `toOption` converts domain items (omit it when
|
|
540
|
+
the items already satisfy the `{ label, value }` contract); `matches` receives
|
|
541
|
+
the raw item and the trimmed query, and defaults to a case-insensitive
|
|
542
|
+
substring match over the converted option's `label`/`searchText`, where an
|
|
543
|
+
empty query matches everything. `limit` caps the context limit.
|
|
544
|
+
|
|
545
|
+
`createFetchLoadOptions(config)` skips the request for a blank query, posts
|
|
546
|
+
JSON (default body `{ query, limit }`), passes `context.signal` through, and
|
|
547
|
+
decodes the payload with `mapOptions` before slicing to the limit. HTTP and
|
|
548
|
+
network failures resolve with no options by default; `throwOnError: true`
|
|
549
|
+
rethrows them (aborted requests always resolve with no options) so wrappers
|
|
550
|
+
that surface errors keep working.
|
|
551
|
+
|
|
552
|
+
Multiselect handlers can also stop repeating the `string | string[]` narrowing:
|
|
553
|
+
`toMultiSelection(selection)` and `toSingleSelection(selection)` normalize a
|
|
554
|
+
`Dropdown` `onChange` argument to the shape the handler needs.
|
|
555
|
+
|
|
508
556
|
## DataTable
|
|
509
557
|
|
|
510
558
|
```svelte
|
|
@@ -686,6 +734,29 @@ for the left column and a controlled filter created with the `filter` helper:
|
|
|
686
734
|
and `var(--suu-radius)` corner radius as a bordered `DataTable`. Set
|
|
687
735
|
`bordered={false}` to remove both the border and outer corner radius.
|
|
688
736
|
|
|
737
|
+
`filter.text` renders a free-text search input for `keyword contains`-style
|
|
738
|
+
filtering. Unlike `filter.dropdownSearch` it has no selection semantics: the
|
|
739
|
+
value is the raw input text, and matching stays in the consuming app:
|
|
740
|
+
|
|
741
|
+
```svelte
|
|
742
|
+
{
|
|
743
|
+
key: 'location',
|
|
744
|
+
title: 'Location',
|
|
745
|
+
filter: filter.text({
|
|
746
|
+
value: locationQuery,
|
|
747
|
+
placeholder: 'Search location',
|
|
748
|
+
ariaLabel: 'Location filter',
|
|
749
|
+
onChange: (value) => (locationQuery = value)
|
|
750
|
+
})
|
|
751
|
+
}
|
|
752
|
+
```
|
|
753
|
+
|
|
754
|
+
Every keystroke reports by default; pass `debounceMs` to batch changes (Enter
|
|
755
|
+
flushes the pending draft immediately). The input stays a controlled input:
|
|
756
|
+
applying the new value from `onChange` keeps typing intact, and resetting
|
|
757
|
+
`value` clears the field. Width follows the `width`/`minWidth`/`maxWidth`
|
|
758
|
+
props when the full-row default is not what you want.
|
|
759
|
+
|
|
689
760
|
`filter.select` uses the shared `Dropdown` component, so select filters keep the
|
|
690
761
|
same menu, keyboard, and visual behavior as standalone dropdowns.
|
|
691
762
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<svelte:options runes={false} />
|
|
2
2
|
|
|
3
3
|
<script lang="ts">
|
|
4
|
+
import { onDestroy } from 'svelte';
|
|
4
5
|
import Dropdown from '../dropdown/Dropdown.svelte';
|
|
5
6
|
import DropdownMultiSelect from '../dropdown/DropdownMultiSelect.svelte';
|
|
6
7
|
import type {
|
|
@@ -142,6 +143,66 @@
|
|
|
142
143
|
? [control.selectedItem]
|
|
143
144
|
: [];
|
|
144
145
|
|
|
146
|
+
// Free-text filter input: with debounceMs > 0 the draft lives here until the
|
|
147
|
+
// timer fires or Enter flushes it; the controlled `value` only catches up
|
|
148
|
+
// once the parent applies onChange, and Svelte leaves the DOM value alone
|
|
149
|
+
// until then so typing is never clobbered mid-draft.
|
|
150
|
+
let textInputTimer: ReturnType<typeof setTimeout> | null = null;
|
|
151
|
+
let textInputPending: string | null = null;
|
|
152
|
+
|
|
153
|
+
function flushTextInput() {
|
|
154
|
+
if (textInputTimer !== null) {
|
|
155
|
+
clearTimeout(textInputTimer);
|
|
156
|
+
textInputTimer = null;
|
|
157
|
+
}
|
|
158
|
+
if (textInputPending !== null && control.type === 'text') {
|
|
159
|
+
const value = textInputPending;
|
|
160
|
+
textInputPending = null;
|
|
161
|
+
void control.onChange(value);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
function handleTextInput(value: string) {
|
|
166
|
+
if (control.type !== 'text') {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
const debounceMs = control.debounceMs ?? 0;
|
|
170
|
+
if (debounceMs <= 0) {
|
|
171
|
+
void control.onChange(value);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
textInputPending = value;
|
|
175
|
+
if (textInputTimer !== null) {
|
|
176
|
+
clearTimeout(textInputTimer);
|
|
177
|
+
}
|
|
178
|
+
textInputTimer = setTimeout(flushTextInput, debounceMs);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
function handleTextKeydown(event: KeyboardEvent) {
|
|
182
|
+
if (event.key === 'Enter' && control.type === 'text') {
|
|
183
|
+
event.preventDefault();
|
|
184
|
+
flushTextInput();
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
$: textInputStyle = control.type === 'text'
|
|
189
|
+
? [
|
|
190
|
+
control.width ? `width: ${control.width}` : '',
|
|
191
|
+
control.minWidth ? `min-width: ${control.minWidth}` : '',
|
|
192
|
+
control.maxWidth ? `max-width: ${control.maxWidth}` : ''
|
|
193
|
+
]
|
|
194
|
+
.filter(Boolean)
|
|
195
|
+
.join('; ')
|
|
196
|
+
: '';
|
|
197
|
+
|
|
198
|
+
onDestroy(() => {
|
|
199
|
+
if (textInputTimer !== null) {
|
|
200
|
+
clearTimeout(textInputTimer);
|
|
201
|
+
textInputTimer = null;
|
|
202
|
+
}
|
|
203
|
+
textInputPending = null;
|
|
204
|
+
});
|
|
205
|
+
|
|
145
206
|
</script>
|
|
146
207
|
|
|
147
208
|
{#if control.type === 'container'}
|
|
@@ -372,4 +433,16 @@
|
|
|
372
433
|
onChange={control.onChange}
|
|
373
434
|
onTriggerClick={control.onTriggerClick}
|
|
374
435
|
/>
|
|
436
|
+
{:else if control.type === 'text'}
|
|
437
|
+
<input
|
|
438
|
+
class="suu-filter-table__text-input"
|
|
439
|
+
type="search"
|
|
440
|
+
value={control.value}
|
|
441
|
+
placeholder={control.placeholder ?? ''}
|
|
442
|
+
aria-label={control.ariaLabel}
|
|
443
|
+
disabled={control.disabled}
|
|
444
|
+
style={textInputStyle}
|
|
445
|
+
on:input={(event) => handleTextInput((event.currentTarget as HTMLInputElement).value)}
|
|
446
|
+
on:keydown={handleTextKeydown}
|
|
447
|
+
/>
|
|
375
448
|
{/if}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterControl.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/data-table/FilterControl.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FilterControl.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/data-table/FilterControl.svelte.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAkD,aAAa,EAAE,MAAM,YAAY,CAAC;AAuUhG,QAAA,MAAM,aAAa,KAA+E,CAAC;AACjF,KAAK,aAAa,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,CAAC;AAC1D,eAAe,aAAa,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CheckboxFilterControl, DateRangeFilterControl, DropdownFilterControl, DropdownMultiSelectFilterControl, DropdownSearchFilterControl, FilterButtonControl, FilterContainerControl, FilterControl, FilterLinkControl, FilterSelectControl, NumberRangeFilterControl, RadioFilterControl } from './types.js';
|
|
1
|
+
import type { CheckboxFilterControl, DateRangeFilterControl, DropdownFilterControl, DropdownMultiSelectFilterControl, DropdownSearchFilterControl, FilterButtonControl, FilterContainerControl, FilterControl, FilterLinkControl, FilterSelectControl, NumberRangeFilterControl, RadioFilterControl, TextInputFilterControl } from './types.js';
|
|
2
2
|
declare function checkbox(options: Omit<CheckboxFilterControl, 'type'>): CheckboxFilterControl;
|
|
3
3
|
declare function radio(options: Omit<RadioFilterControl, 'type'>): RadioFilterControl;
|
|
4
4
|
declare function dropdownSearch(options: Omit<DropdownSearchFilterControl, 'type'>): DropdownSearchFilterControl;
|
|
@@ -10,6 +10,7 @@ declare function select(options: Omit<FilterSelectControl, 'type'>): FilterSelec
|
|
|
10
10
|
declare function dropdown(options: Omit<DropdownFilterControl, 'type'>): DropdownFilterControl;
|
|
11
11
|
declare function dropdownMultiSelect(options: Omit<DropdownMultiSelectFilterControl, 'type'>): DropdownMultiSelectFilterControl;
|
|
12
12
|
declare function container(controls: FilterControl[]): FilterContainerControl;
|
|
13
|
+
declare function text(options: Omit<TextInputFilterControl, 'type'>): TextInputFilterControl;
|
|
13
14
|
export declare const filter: {
|
|
14
15
|
checkbox: typeof checkbox;
|
|
15
16
|
radio: typeof radio;
|
|
@@ -22,6 +23,7 @@ export declare const filter: {
|
|
|
22
23
|
dropdown: typeof dropdown;
|
|
23
24
|
dropdownMultiSelect: typeof dropdownMultiSelect;
|
|
24
25
|
container: typeof container;
|
|
26
|
+
text: typeof text;
|
|
25
27
|
};
|
|
26
28
|
export {};
|
|
27
29
|
//# sourceMappingURL=filter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/lib/data-table/filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,gCAAgC,EAChC,2BAA2B,EAC3B,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/lib/data-table/filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,gCAAgC,EAChC,2BAA2B,EAC3B,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB,iBAAS,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,GAAG,qBAAqB,CAErF;AAED,iBAAS,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,GAAG,kBAAkB,CAE5E;AAED,iBAAS,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,2BAA2B,EAAE,MAAM,CAAC,GAAG,2BAA2B,CAEvG;AAED,iBAAS,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,GAAG,sBAAsB,CAExF;AAED,iBAAS,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,GAAG,wBAAwB,CAE9F;AAED,iBAAS,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,GAAG,mBAAmB,CAE/E;AAED,iBAAS,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG,iBAAiB,CAEzE;AAED,iBAAS,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,GAAG,mBAAmB,CAE/E;AAED,iBAAS,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,GAAG,qBAAqB,CAErF;AAED,iBAAS,mBAAmB,CAC1B,OAAO,EAAE,IAAI,CAAC,gCAAgC,EAAE,MAAM,CAAC,GACtD,gCAAgC,CAElC;AAED,iBAAS,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,sBAAsB,CAEpE;AAED,iBAAS,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,GAAG,sBAAsB,CAEnF;AAED,eAAO,MAAM,MAAM;;;;;;;;;;;;;CAalB,CAAC"}
|
|
@@ -31,6 +31,9 @@ function dropdownMultiSelect(options) {
|
|
|
31
31
|
function container(controls) {
|
|
32
32
|
return { type: 'container', controls };
|
|
33
33
|
}
|
|
34
|
+
function text(options) {
|
|
35
|
+
return { type: 'text', ...options };
|
|
36
|
+
}
|
|
34
37
|
export const filter = {
|
|
35
38
|
checkbox,
|
|
36
39
|
radio,
|
|
@@ -42,5 +45,6 @@ export const filter = {
|
|
|
42
45
|
select,
|
|
43
46
|
dropdown,
|
|
44
47
|
dropdownMultiSelect,
|
|
45
|
-
container
|
|
48
|
+
container,
|
|
49
|
+
text
|
|
46
50
|
};
|
|
@@ -8,5 +8,5 @@ export { isDateRangePreset, resolveDateRangePreset } from './date-range.js';
|
|
|
8
8
|
export { getUiMessages, resolveUiLanguage, uiLanguages } from '../i18n.js';
|
|
9
9
|
export { getAriaSort, getCellValue, getPageCount, normalizePagination, setDataTableFilters, setDataTablePageSize, setDataTablePagination, setDataTableSort, toggleSort } from './state.js';
|
|
10
10
|
export type { UiLanguage, UiMessages } from '../i18n.js';
|
|
11
|
-
export type { CheckboxFilterDefinition, CheckboxFilterControl, CustomDateRangePreset, DataTableColumn, DataTableCellValue, DataTableClassValue, DataTableHorizontalAlign, DataTableLayout, DataTablePaginationQueryKey, DataTableServerPagination, DataTableVerticalAlign, DateRangeFilterDefinition, DateRangeFilterControl, DateRangeFilterValue, DateRangePreset, DateRangePresetContext, DateRangePresetEntry, DateRangePresetSelect, DataTableRowAttributes, DataTableRowKey, DataTableSortChangeHandler, DataTableState, DataTableStateChangeHandler, DropdownSearchFilterDefinition, DropdownSearchFilterControl, DropdownFilterDefinition, DropdownFilterControl, DropdownMultiSelectFilterDefinition, DropdownMultiSelectFilterControl, FilterDefinition, FilterButtonControl, FilterContainerControl, FilterControl, FilterLinkControl, FilterOption, FilterSelectControl, FilterState, FilterTableRow, FilterValue, NumberRangeFilterDefinition, NumberRangeFilterControl, NumberRangeFilterValue, PaginationState, PaginationChangeHandler, PaginationDropdownPlacement, RadioFilterDefinition, RadioFilterControl, SortDirection, SortState } from './types.js';
|
|
11
|
+
export type { CheckboxFilterDefinition, CheckboxFilterControl, CustomDateRangePreset, DataTableColumn, DataTableCellValue, DataTableClassValue, DataTableHorizontalAlign, DataTableLayout, DataTablePaginationQueryKey, DataTableServerPagination, DataTableVerticalAlign, DateRangeFilterDefinition, DateRangeFilterControl, DateRangeFilterValue, DateRangePreset, DateRangePresetContext, DateRangePresetEntry, DateRangePresetSelect, DataTableRowAttributes, DataTableRowKey, DataTableSortChangeHandler, DataTableState, DataTableStateChangeHandler, DropdownSearchFilterDefinition, DropdownSearchFilterControl, DropdownFilterDefinition, DropdownFilterControl, DropdownMultiSelectFilterDefinition, DropdownMultiSelectFilterControl, FilterDefinition, FilterButtonControl, FilterContainerControl, FilterControl, FilterLinkControl, FilterOption, FilterSelectControl, FilterState, FilterTableRow, FilterValue, NumberRangeFilterDefinition, NumberRangeFilterControl, NumberRangeFilterValue, PaginationState, PaginationChangeHandler, PaginationDropdownPlacement, RadioFilterDefinition, RadioFilterControl, SortDirection, SortState, TextInputFilterDefinition, TextInputFilterControl } from './types.js';
|
|
12
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/data-table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EACL,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,UAAU,EACX,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACzD,YAAY,EACV,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,eAAe,EACf,2BAA2B,EAC3B,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,0BAA0B,EAC1B,cAAc,EACd,2BAA2B,EAC3B,8BAA8B,EAC9B,2BAA2B,EAC3B,wBAAwB,EACxB,qBAAqB,EACrB,mCAAmC,EACnC,gCAAgC,EAChC,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,cAAc,EACd,WAAW,EACX,2BAA2B,EAC3B,wBAAwB,EACxB,sBAAsB,EACtB,eAAe,EACf,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,SAAS,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/data-table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EACL,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,UAAU,EACX,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACzD,YAAY,EACV,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,eAAe,EACf,2BAA2B,EAC3B,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,0BAA0B,EAC1B,cAAc,EACd,2BAA2B,EAC3B,8BAA8B,EAC9B,2BAA2B,EAC3B,wBAAwB,EACxB,qBAAqB,EACrB,mCAAmC,EACnC,gCAAgC,EAChC,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,cAAc,EACd,WAAW,EACX,2BAA2B,EAC3B,wBAAwB,EACxB,sBAAsB,EACtB,eAAe,EACf,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,YAAY,CAAC"}
|
|
@@ -276,7 +276,25 @@ export interface FilterContainerControl {
|
|
|
276
276
|
type: 'container';
|
|
277
277
|
controls: FilterControl[];
|
|
278
278
|
}
|
|
279
|
-
|
|
279
|
+
/**
|
|
280
|
+
* Free-text filter input for `keyword contains`-style filtering. Unlike
|
|
281
|
+
* `dropdownSearch` it has no selection semantics: every (debounced) change is
|
|
282
|
+
* the raw input text, so it pairs with consumer-side row matching.
|
|
283
|
+
*/
|
|
284
|
+
export interface TextInputFilterControl {
|
|
285
|
+
type: 'text';
|
|
286
|
+
value: string;
|
|
287
|
+
placeholder?: string;
|
|
288
|
+
ariaLabel?: string;
|
|
289
|
+
/** Milliseconds to batch changes before `onChange` fires; 0 (default) reports every keystroke. */
|
|
290
|
+
debounceMs?: number;
|
|
291
|
+
width?: string;
|
|
292
|
+
minWidth?: string;
|
|
293
|
+
maxWidth?: string;
|
|
294
|
+
disabled?: boolean;
|
|
295
|
+
onChange: (value: string) => void | Promise<void>;
|
|
296
|
+
}
|
|
297
|
+
export type FilterControl = CheckboxFilterControl | RadioFilterControl | DropdownSearchFilterControl | DateRangeFilterControl | NumberRangeFilterControl | FilterButtonControl | FilterLinkControl | FilterSelectControl | DropdownFilterControl | DropdownMultiSelectFilterControl | FilterContainerControl | TextInputFilterControl;
|
|
280
298
|
export interface FilterTableRow {
|
|
281
299
|
key: string;
|
|
282
300
|
title: string;
|
|
@@ -310,5 +328,9 @@ export type NumberRangeFilterDefinition = NumberRangeFilterControl & {
|
|
|
310
328
|
key: string;
|
|
311
329
|
label: string;
|
|
312
330
|
};
|
|
313
|
-
export type
|
|
331
|
+
export type TextInputFilterDefinition = TextInputFilterControl & {
|
|
332
|
+
key: string;
|
|
333
|
+
label: string;
|
|
334
|
+
};
|
|
335
|
+
export type FilterDefinition = CheckboxFilterDefinition | RadioFilterDefinition | DropdownSearchFilterDefinition | DropdownFilterDefinition | DropdownMultiSelectFilterDefinition | DateRangeFilterDefinition | NumberRangeFilterDefinition | TextInputFilterDefinition;
|
|
314
336
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/data-table/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/data-table/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -715,6 +715,26 @@
|
|
|
715
715
|
resolvedPlacement = availableBelow >= availableAbove ? 'down' : 'up';
|
|
716
716
|
}
|
|
717
717
|
|
|
718
|
+
// The panel is only part of the menu: the search box and the menu borders
|
|
719
|
+
// also consume viewport budget. When the whole budget goes to the panel, the
|
|
720
|
+
// total menu grows taller than the available space and an upward portal menu
|
|
721
|
+
// computes a negative top that escapes the viewport. The difference between
|
|
722
|
+
// the rendered menu and its panel is exactly that non-panel chrome, whatever
|
|
723
|
+
// the current max-height is.
|
|
724
|
+
function measureMenuChromeHeight(): number {
|
|
725
|
+
if (!menuElement || typeof window === 'undefined') {
|
|
726
|
+
return 0;
|
|
727
|
+
}
|
|
728
|
+
const panelElement = menuElement.querySelector<HTMLElement>('.suu-dropdown__panel');
|
|
729
|
+
if (!panelElement) {
|
|
730
|
+
return 0;
|
|
731
|
+
}
|
|
732
|
+
return Math.max(
|
|
733
|
+
0,
|
|
734
|
+
menuElement.getBoundingClientRect().height - panelElement.getBoundingClientRect().height
|
|
735
|
+
);
|
|
736
|
+
}
|
|
737
|
+
|
|
718
738
|
async function updateViewportPanelMaxHeight() {
|
|
719
739
|
await tick();
|
|
720
740
|
|
|
@@ -742,7 +762,8 @@
|
|
|
742
762
|
resolvedPlacement === 'up'
|
|
743
763
|
? rect.top - viewportMargin - menuGap
|
|
744
764
|
: window.innerHeight - rect.bottom - viewportMargin - menuGap;
|
|
745
|
-
|
|
765
|
+
const availablePanelHeight = available - measureMenuChromeHeight();
|
|
766
|
+
viewportPanelMaxHeight = `${Math.max(0, Math.floor(availablePanelHeight))}px`;
|
|
746
767
|
// Apply the value directly before measuring: the reactive style binding on
|
|
747
768
|
// this node only lands in the next flush, so the first upward open would
|
|
748
769
|
// otherwise measure the fallback 100vh height and place the menu above the
|
|
@@ -1053,7 +1074,7 @@
|
|
|
1053
1074
|
aria-expanded={!collapsedGroupIndexes.has(groupIndex)}
|
|
1054
1075
|
on:click|stopPropagation={() => toggleGroup(groupIndex)}
|
|
1055
1076
|
>
|
|
1056
|
-
<span>{group.label}</span>
|
|
1077
|
+
<span class="suu-dropdown__group-title">{group.label}</span>
|
|
1057
1078
|
<span class="suu-dropdown__group-chevron" aria-hidden="true"></span>
|
|
1058
1079
|
</button>
|
|
1059
1080
|
{/if}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dropdown.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/dropdown/Dropdown.svelte.ts"],"names":[],"mappings":"AAOA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,KAAK,EAER,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EAGnB,iBAAiB,EAGjB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,8BAA8B,EAC9B,2BAA2B,EAC3B,iBAAiB,EACjB,2BAA2B,EAE5B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"Dropdown.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/dropdown/Dropdown.svelte.ts"],"names":[],"mappings":"AAOA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,KAAK,EAER,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EAGnB,iBAAiB,EAGjB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,8BAA8B,EAC9B,2BAA2B,EAC3B,iBAAiB,EACjB,2BAA2B,EAE5B,MAAM,YAAY,CAAC;AAk9BtB,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,QAAQ;SAXw3B,MAAM,GAAG,SAAS;YAAU,iBAAiB;;cAA8C,cAAc,EAAE;mBAAiB,mBAAmB,EAAE,GAAG,SAAS;IACniC,sFAAsF,mBAAkB,cAAc,EAAE;+BAA6B,MAAM,GAAG,OAAO,GAAG,MAAM;;iBAAuC,kBAAkB;mBAAiB,uBAAuB;kBAAgB,mBAAmB,GAAG,SAAS;;;wBAAoG,MAAM,GAAG,SAAS;kBAAgB,MAAM,GAAG,SAAS;eAAa,UAAU;kBAAgB,MAAM,GAAG,SAAS;oBAAkB,MAAM,GAAG,SAAS;gBAAc,MAAM,GAAG,SAAS;gBAAc,MAAM,GAAG,SAAS;gBAAc,iBAAiB;gBAAc,iBAAiB;;;;WAAuG,MAAM,GAAG,SAAS;;YAAsC,MAAM,GAAG,SAAS;eAAa,MAAM,GAAG,SAAS;eAAa,MAAM,GAAG,SAAS;gBAAc,MAAM,GAAG,SAAS;;eAAqC,8BAA8B,GAAG,SAAS;qBAAmB,2BAA2B,GAAG,SAAS;qBAAmB,2BAA2B,GAAG,SAAS;;;;;kBAUtiC,CAAC;AAC5E,KAAK,QAAQ,GAAG,YAAY,CAAC,OAAO,QAAQ,CAAC,CAAC;AAChD,eAAe,QAAQ,CAAC"}
|
package/dist/dropdown/index.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export { default as Dropdown } from './Dropdown.svelte';
|
|
2
2
|
export { default as DropdownMultiSelect } from './DropdownMultiSelect.svelte';
|
|
3
|
+
export { createFetchLoadOptions, createLocalLoadOptions } from './load-options.js';
|
|
4
|
+
export type { FetchLoadOptionsConfig, LocalLoadOptionsConfig, LocalLoadOptionsSource } from './load-options.js';
|
|
5
|
+
export { toMultiSelection, toSingleSelection } from './selection.js';
|
|
3
6
|
export type { DropdownChangeHandler, DropdownInputStyle, DropdownItemLabelGetter, DropdownLoadContext, DropdownLoadOptions, DropdownLoadOptionsResult, DropdownLoadStatus, DropdownMenuAlign, DropdownMultiChangeHandler, DropdownMultiValue, DropdownOption, DropdownOptionGroup, DropdownPlacement, DropdownSelectionChangeHandler, DropdownSearchChangeHandler, DropdownSelection, DropdownTriggerClickHandler, DropdownValue } from './types.js';
|
|
4
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/dropdown/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,YAAY,EACV,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,kBAAkB,EAClB,iBAAiB,EACjB,0BAA0B,EAC1B,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,8BAA8B,EAC9B,2BAA2B,EAC3B,iBAAiB,EACjB,2BAA2B,EAC3B,aAAa,EACd,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/dropdown/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACnF,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACrE,YAAY,EACV,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,kBAAkB,EAClB,iBAAiB,EACjB,0BAA0B,EAC1B,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,8BAA8B,EAC9B,2BAA2B,EAC3B,iBAAiB,EACjB,2BAA2B,EAC3B,aAAa,EACd,MAAM,YAAY,CAAC"}
|
package/dist/dropdown/index.js
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
export { default as Dropdown } from './Dropdown.svelte';
|
|
2
2
|
export { default as DropdownMultiSelect } from './DropdownMultiSelect.svelte';
|
|
3
|
+
export { createFetchLoadOptions, createLocalLoadOptions } from './load-options.js';
|
|
4
|
+
export { toMultiSelection, toSingleSelection } from './selection.js';
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { DropdownLoadOptions, DropdownOption } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Source of local items for `createLocalLoadOptions`: a static array, or a
|
|
4
|
+
* getter re-evaluated on every search when the underlying state changes.
|
|
5
|
+
*/
|
|
6
|
+
export type LocalLoadOptionsSource<TItem> = TItem[] | (() => TItem[] | Promise<TItem[]>);
|
|
7
|
+
export interface LocalLoadOptionsConfig<TItem, TOption extends DropdownOption> {
|
|
8
|
+
/**
|
|
9
|
+
* Converts a domain item into an option. Omit it only when the items already
|
|
10
|
+
* satisfy the `{ label, value }` option contract.
|
|
11
|
+
*/
|
|
12
|
+
toOption?: (item: TItem) => TOption;
|
|
13
|
+
/**
|
|
14
|
+
* Match predicate over the raw item; the query arrives trimmed. Defaults to
|
|
15
|
+
* a case-insensitive substring match on the converted option's
|
|
16
|
+
* `label`/`searchText`, where an empty query matches everything.
|
|
17
|
+
*/
|
|
18
|
+
matches?: (item: TItem, query: string) => boolean;
|
|
19
|
+
/** Upper bound applied on top of the context limit. */
|
|
20
|
+
limit?: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Builds a `loadOptions` implementation over an in-memory item list, so
|
|
24
|
+
* "filter a local array, map it to options, slice to the limit" no longer has
|
|
25
|
+
* to be written per call site. The result fits both the root `Dropdown` search
|
|
26
|
+
* mode and the data-table `filter.dropdownSearch` control.
|
|
27
|
+
*/
|
|
28
|
+
export declare function createLocalLoadOptions<TItem extends DropdownOption>(source: LocalLoadOptionsSource<TItem>, config?: {
|
|
29
|
+
matches?: (item: TItem, query: string) => boolean;
|
|
30
|
+
limit?: number;
|
|
31
|
+
}): DropdownLoadOptions;
|
|
32
|
+
export declare function createLocalLoadOptions<TItem, TOption extends DropdownOption>(source: LocalLoadOptionsSource<TItem>, config: LocalLoadOptionsConfig<TItem, TOption> & {
|
|
33
|
+
toOption: (item: TItem) => TOption;
|
|
34
|
+
}): DropdownLoadOptions;
|
|
35
|
+
export interface FetchLoadOptionsConfig<TOption extends DropdownOption> {
|
|
36
|
+
/** Request URL; the JSON body defaults to `{ query, limit }`. */
|
|
37
|
+
url: string;
|
|
38
|
+
/** HTTP method, default `POST`. */
|
|
39
|
+
method?: string;
|
|
40
|
+
/** Extra request headers on top of `content-type: application/json`. */
|
|
41
|
+
headers?: Record<string, string>;
|
|
42
|
+
/** Builds the JSON body from the trimmed query and the effective limit. */
|
|
43
|
+
buildBody?: (query: string, limit: number) => Record<string, unknown>;
|
|
44
|
+
/**
|
|
45
|
+
* Decodes the JSON payload into options; the factory slices the result to
|
|
46
|
+
* the effective limit.
|
|
47
|
+
*/
|
|
48
|
+
mapOptions: (payload: unknown, query: string) => TOption[];
|
|
49
|
+
/** Upper bound applied on top of the context limit. */
|
|
50
|
+
limit?: number;
|
|
51
|
+
/**
|
|
52
|
+
* Rethrow HTTP and network failures instead of resolving with no options.
|
|
53
|
+
* Aborted requests (a newer query superseded this one) always resolve with
|
|
54
|
+
* no options.
|
|
55
|
+
*/
|
|
56
|
+
throwOnError?: boolean;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Builds a `loadOptions` implementation around one JSON search endpoint: URL,
|
|
60
|
+
* optional body builder, payload decoding, limit handling, and abort/HTTP
|
|
61
|
+
* error policy in one place. Use it for both the root `Dropdown` search mode
|
|
62
|
+
* and the data-table `filter.dropdownSearch` control.
|
|
63
|
+
*/
|
|
64
|
+
export declare function createFetchLoadOptions<TOption extends DropdownOption>(config: FetchLoadOptionsConfig<TOption>): DropdownLoadOptions;
|
|
65
|
+
//# sourceMappingURL=load-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-options.d.ts","sourceRoot":"","sources":["../../src/lib/dropdown/load-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEtE;;;GAGG;AACH,MAAM,MAAM,sBAAsB,CAAC,KAAK,IAAI,KAAK,EAAE,GAAG,CAAC,MAAM,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAEzF,MAAM,WAAW,sBAAsB,CAAC,KAAK,EAAE,OAAO,SAAS,cAAc;IAC3E;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC;IACpC;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAClD,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAOD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,SAAS,cAAc,EACjE,MAAM,EAAE,sBAAsB,CAAC,KAAK,CAAC,EACrC,MAAM,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7E,mBAAmB,CAAC;AACvB,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,SAAS,cAAc,EAC1E,MAAM,EAAE,sBAAsB,CAAC,KAAK,CAAC,EACrC,MAAM,EAAE,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG;IAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAA;CAAE,GACtF,mBAAmB,CAAC;AAmBvB,MAAM,WAAW,sBAAsB,CAAC,OAAO,SAAS,cAAc;IACpE,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,2EAA2E;IAC3E,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtE;;;OAGG;IACH,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC;IAC3D,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,SAAS,cAAc,EACnE,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC,GACtC,mBAAmB,CAiCrB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
function defaultOptionMatches(option, query) {
|
|
2
|
+
const haystack = `${option.label} ${option.searchText ?? ''}`.trim().toLowerCase();
|
|
3
|
+
return haystack.includes(query.toLowerCase());
|
|
4
|
+
}
|
|
5
|
+
export function createLocalLoadOptions(source, config = {}) {
|
|
6
|
+
return async (rawQuery, context) => {
|
|
7
|
+
const query = rawQuery.trim();
|
|
8
|
+
const items = typeof source === 'function' ? await source() : source;
|
|
9
|
+
const toOption = config.toOption ?? ((item) => item);
|
|
10
|
+
// A custom predicate sees the raw items (domain fields, exclusions); the
|
|
11
|
+
// default one needs the converted options, so conversion order differs.
|
|
12
|
+
const matched = config.matches
|
|
13
|
+
? items.filter((item) => config.matches?.(item, query)).map(toOption)
|
|
14
|
+
: items.map(toOption).filter((option) => defaultOptionMatches(option, query));
|
|
15
|
+
const limit = Math.min(config.limit ?? Number.POSITIVE_INFINITY, context.limit);
|
|
16
|
+
return { options: matched.slice(0, limit) };
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Builds a `loadOptions` implementation around one JSON search endpoint: URL,
|
|
21
|
+
* optional body builder, payload decoding, limit handling, and abort/HTTP
|
|
22
|
+
* error policy in one place. Use it for both the root `Dropdown` search mode
|
|
23
|
+
* and the data-table `filter.dropdownSearch` control.
|
|
24
|
+
*/
|
|
25
|
+
export function createFetchLoadOptions(config) {
|
|
26
|
+
return async (rawQuery, context) => {
|
|
27
|
+
const query = rawQuery.trim();
|
|
28
|
+
if (!query) {
|
|
29
|
+
return { options: [] };
|
|
30
|
+
}
|
|
31
|
+
const limit = Math.min(config.limit ?? Number.POSITIVE_INFINITY, context.limit);
|
|
32
|
+
try {
|
|
33
|
+
const response = await fetch(config.url, {
|
|
34
|
+
method: config.method ?? 'POST',
|
|
35
|
+
headers: { 'content-type': 'application/json', ...config.headers },
|
|
36
|
+
body: JSON.stringify(config.buildBody ? config.buildBody(query, limit) : { query, limit }),
|
|
37
|
+
signal: context.signal
|
|
38
|
+
});
|
|
39
|
+
if (!response.ok) {
|
|
40
|
+
if (config.throwOnError) {
|
|
41
|
+
throw new Error(`search request failed: ${response.status}`);
|
|
42
|
+
}
|
|
43
|
+
return { options: [] };
|
|
44
|
+
}
|
|
45
|
+
const payload = await response.json();
|
|
46
|
+
const options = config.mapOptions(payload, query);
|
|
47
|
+
return { options: Array.isArray(options) ? options.slice(0, limit) : [] };
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
if (config.throwOnError &&
|
|
51
|
+
!(error instanceof Error && error.name === 'AbortError')) {
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
return { options: [] };
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { DropdownSelection } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Narrows a `Dropdown` selection change to the multiselect shape. The
|
|
4
|
+
* component emits an array whenever `multiselect` is set, but the shared
|
|
5
|
+
* `onChange` signature keeps the `string | string[]` union, so multiselect
|
|
6
|
+
* handlers would otherwise repeat this narrowing at every call site.
|
|
7
|
+
*/
|
|
8
|
+
export declare function toMultiSelection(selection: DropdownSelection): string[];
|
|
9
|
+
/**
|
|
10
|
+
* Narrows a `Dropdown` selection change to the single-select shape: the first
|
|
11
|
+
* identifier when an array slips through, otherwise the identifier itself.
|
|
12
|
+
*/
|
|
13
|
+
export declare function toSingleSelection(selection: DropdownSelection): string;
|
|
14
|
+
//# sourceMappingURL=selection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../src/lib/dropdown/selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAEvE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,GAAG,MAAM,CAEtE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Narrows a `Dropdown` selection change to the multiselect shape. The
|
|
3
|
+
* component emits an array whenever `multiselect` is set, but the shared
|
|
4
|
+
* `onChange` signature keeps the `string | string[]` union, so multiselect
|
|
5
|
+
* handlers would otherwise repeat this narrowing at every call site.
|
|
6
|
+
*/
|
|
7
|
+
export function toMultiSelection(selection) {
|
|
8
|
+
return Array.isArray(selection) ? selection : [selection];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Narrows a `Dropdown` selection change to the single-select shape: the first
|
|
12
|
+
* identifier when an array slips through, otherwise the identifier itself.
|
|
13
|
+
*/
|
|
14
|
+
export function toSingleSelection(selection) {
|
|
15
|
+
return Array.isArray(selection) ? (selection[0] ?? '') : selection;
|
|
16
|
+
}
|
package/dist/style.css
CHANGED
|
@@ -619,6 +619,33 @@
|
|
|
619
619
|
padding: 7px 34px 7px 10px;
|
|
620
620
|
}
|
|
621
621
|
|
|
622
|
+
.suu-filter-table__text-input {
|
|
623
|
+
box-sizing: border-box;
|
|
624
|
+
width: 100%;
|
|
625
|
+
min-height: 38px;
|
|
626
|
+
padding: 7px 10px;
|
|
627
|
+
border: 1px solid var(--suu-color-border);
|
|
628
|
+
border-radius: var(--suu-radius);
|
|
629
|
+
background: var(--suu-color-bg);
|
|
630
|
+
color: var(--suu-color-text);
|
|
631
|
+
font: inherit;
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
.suu-filter-table__text-input:focus {
|
|
635
|
+
border-color: var(--suu-color-accent);
|
|
636
|
+
outline: 2px solid color-mix(in srgb, var(--suu-color-accent) 22%, transparent);
|
|
637
|
+
outline-offset: 1px;
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
.suu-filter-table__text-input::placeholder {
|
|
641
|
+
color: var(--suu-color-muted);
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
.suu-filter-table__text-input:disabled {
|
|
645
|
+
cursor: not-allowed;
|
|
646
|
+
opacity: 0.6;
|
|
647
|
+
}
|
|
648
|
+
|
|
622
649
|
.suu-table-wrap {
|
|
623
650
|
overflow: auto;
|
|
624
651
|
border: 1px solid var(--suu-color-border);
|
|
@@ -1003,6 +1030,10 @@
|
|
|
1003
1030
|
border-radius: var(--suu-radius);
|
|
1004
1031
|
background: var(--suu-color-bg);
|
|
1005
1032
|
box-shadow: 0 18px 42px rgb(15 23 42 / 0.16);
|
|
1033
|
+
/* Reset inherited host whitespace (e.g. a nowrap table cell) so every menu
|
|
1034
|
+
text — group titles, status labels — wraps by default; the single-line
|
|
1035
|
+
fit-content rules set nowrap explicitly where needed. */
|
|
1036
|
+
white-space: normal;
|
|
1006
1037
|
}
|
|
1007
1038
|
|
|
1008
1039
|
.suu-dropdown__menu--portal {
|
|
@@ -1047,13 +1078,17 @@
|
|
|
1047
1078
|
min-width: max-content;
|
|
1048
1079
|
}
|
|
1049
1080
|
|
|
1050
|
-
|
|
1081
|
+
/* The single-line rules assume the menu stretches to its longest option, which
|
|
1082
|
+
only a non-portal menu does; a portal menu keeps the trigger's fixed width,
|
|
1083
|
+
so its options fall back to the base two-line wrapping label instead of
|
|
1084
|
+
being clipped at the menu edge. */
|
|
1085
|
+
.suu-dropdown__menu--fit-content:not(.suu-dropdown__menu--portal) .suu-dropdown__option {
|
|
1051
1086
|
width: auto;
|
|
1052
1087
|
min-width: 100%;
|
|
1053
1088
|
white-space: nowrap;
|
|
1054
1089
|
}
|
|
1055
1090
|
|
|
1056
|
-
.suu-dropdown__menu--fit-content .suu-dropdown__option .suu-dropdown__label {
|
|
1091
|
+
.suu-dropdown__menu--fit-content:not(.suu-dropdown__menu--portal) .suu-dropdown__option .suu-dropdown__label {
|
|
1057
1092
|
overflow: visible;
|
|
1058
1093
|
text-overflow: clip;
|
|
1059
1094
|
display: block;
|
|
@@ -1092,7 +1127,17 @@
|
|
|
1092
1127
|
justify-content: space-between;
|
|
1093
1128
|
}
|
|
1094
1129
|
|
|
1130
|
+
/* A long group title must wrap inside a narrow menu: a flex item keeps its
|
|
1131
|
+
min-content width by default, which pushes unbroken names (IDs, hashes)
|
|
1132
|
+
past the menu edge instead of folding them. */
|
|
1133
|
+
.suu-dropdown__group-title {
|
|
1134
|
+
flex: 1 1 auto;
|
|
1135
|
+
min-width: 0;
|
|
1136
|
+
overflow-wrap: break-word;
|
|
1137
|
+
}
|
|
1138
|
+
|
|
1095
1139
|
.suu-dropdown__group-chevron {
|
|
1140
|
+
flex-shrink: 0;
|
|
1096
1141
|
width: 7px;
|
|
1097
1142
|
height: 7px;
|
|
1098
1143
|
border-right: 2px solid currentColor;
|