@smilodon/svelte 1.4.10 → 1.4.11
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/COMPLETE-GUIDE.md +1323 -0
- package/README.md +29 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +160 -45
- package/dist/index.mjs.map +1 -1
- package/dist/types/Select.svelte.d.ts +22 -0
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ Production-ready, accessible select component for Svelte applications. Part of t
|
|
|
9
9
|
👉 **[Complete Svelte Guide](./COMPLETE-GUIDE.md)** 👈
|
|
10
10
|
|
|
11
11
|
The complete guide includes:
|
|
12
|
-
- ✅
|
|
12
|
+
- ✅ Complete styling token coverage for colors, layout, chips, motion, and accessibility
|
|
13
13
|
- ✅ Svelte-specific patterns (reactive statements, stores, bind:value)
|
|
14
14
|
- ✅ Complete API reference with TypeScript types
|
|
15
15
|
- ✅ Svelte stores integration (writable, derived)
|
|
@@ -64,6 +64,34 @@ The complete guide includes:
|
|
|
64
64
|
npm install @smilodon/svelte @smilodon/core
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
+
## SvelteKit / SSR Notes
|
|
68
|
+
|
|
69
|
+
The Svelte adapter waits for `enhanced-select` to be defined during `onMount()`, so it is safe to use in SvelteKit pages as long as imperative browser-only code stays inside lifecycle hooks.
|
|
70
|
+
|
|
71
|
+
### Recommended pattern
|
|
72
|
+
|
|
73
|
+
```svelte
|
|
74
|
+
<script lang="ts">
|
|
75
|
+
import { onMount } from 'svelte';
|
|
76
|
+
import { Select } from '@smilodon/svelte';
|
|
77
|
+
|
|
78
|
+
let items = [];
|
|
79
|
+
let value = [];
|
|
80
|
+
|
|
81
|
+
onMount(async () => {
|
|
82
|
+
items = await fetch('/api/frameworks').then((response) => response.json());
|
|
83
|
+
});
|
|
84
|
+
</script>
|
|
85
|
+
|
|
86
|
+
<Select {items} bind:value searchable multiple clearable />
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### SSR guidance
|
|
90
|
+
|
|
91
|
+
- Avoid direct `window`, `document`, or custom-element access outside `onMount()`.
|
|
92
|
+
- Use `bind:value` for regular selection flow and exported instance methods for imperative control.
|
|
93
|
+
- Prefer `optionRenderer` when you need DOM-driven custom options and plain markup when you do not.
|
|
94
|
+
|
|
67
95
|
## Quick Start
|
|
68
96
|
|
|
69
97
|
```svelte
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("svelte/internal"),t=require("svelte");function
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),require("@smilodon/core");const e=require("svelte/internal"),t=require("svelte");function i(t){let i;return{c(){i=e.element("enhanced-select"),e.set_custom_element_data(i,"class",t[0]),e.set_custom_element_data(i,"style",t[1])},m(n,a){e.insert(n,i,a),t[47](i)},p(t,n){1&n[0]&&e.set_custom_element_data(i,"class",t[0]),2&n[0]&&e.set_custom_element_data(i,"style",t[1])},i:e.noop,o:e.noop,d(n){n&&e.detach(i),t[47](null)}}}function n(i,n,a){let r,l,{items:s=[]}=n,{groupedItems:c}=n,{value:o}=n,{defaultValue:u}=n,{multiple:d=!1}=n,{searchable:m=!1}=n,{placeholder:p=""}=n,{disabled:v=!1}=n,{required:g=!1}=n,{error:f=!1}=n,{infiniteScroll:h=!1}=n,{pageSize:b=50}=n,{virtualized:S=!0}=n,{maxSelections:$}=n,{placement:y="auto"}=n,{className:E=""}=n,{style:L=""}=n,{classMap:A}=n,{clearable:k=!1}=n,{clearSelectionOnClear:x=!0}=n,{clearSearchOnClear:M=!0}=n,{clearAriaLabel:I="Clear selection and search"}=n,{clearIcon:_="×"}=n,{optionRenderer:w}=n,{trackingEnabled:C=!1}=n,{trackEvents:R=!0}=n,{trackStyling:z=!0}=n,{trackLimitations:q=!0}=n,{emitDiagnostics:O=!1}=n,{trackingMaxEntries:V=200}=n,{limitationPolicies:D}=n,{autoMitigateRuntimeModeSwitch:P=!0}=n;const G=t.createEventDispatcher();let T,N=u;const K=(e,t,i)=>w?w(e,t,i):document.createElement("div");function j(e){const t=e,{item:i,index:n}=t.detail;G("select",{item:i,index:n})}function U(e){const t=e,{selectedItems:i,selectedValues:n}=t.detail,l=n;r||a(44,N=d?l:l[0]);const s=d?l:l[0];a(3,o=s),G("change",{value:s,selectedItems:i})}function B(){G("open")}function F(){G("close")}function H(e){G("search",{query:e.detail.query})}function J(e){G("loadMore",{page:e.detail.page})}function Q(e){G("create",{value:e.detail.value})}function W(e){const t=e;G("clear",{clearedSelection:t.detail.clearedSelection,clearedSearch:t.detail.clearedSearch})}function X(e){G("diagnostic",e.detail)}function Y(){var e;T&&(null==(e=T.updateConfig)||e.call(T,{searchable:m,placeholder:p,enabled:!v,selection:{mode:d?"multi":"single",maxSelections:$},infiniteScroll:{enabled:h,pageSize:b},clearControl:{enabled:k,clearSelection:x,clearSearch:M,ariaLabel:I,icon:_},tracking:{enabled:C,events:R,styling:z,limitations:q,emitDiagnostics:O,maxEntries:V},limitations:{policies:D,autoMitigateRuntimeModeSwitch:P}}))}return t.onMount(async()=>{if(!T)return;if(await customElements.whenDefined("enhanced-select"),!T)return;const e=T;if(p&&e.setAttribute("placeholder",p),v&&e.setAttribute("disabled",""),g&&e.setAttribute("required",""),f&&e.setAttribute("error",""),m&&e.setAttribute("searchable",""),d&&e.setAttribute("multiple",""),S&&e.setAttribute("virtualized",""),h&&e.setAttribute("infinite-scroll",""),b&&e.setAttribute("page-size",String(b)),$&&e.setAttribute("max-selections",String($)),y&&e.setAttribute("placement",y),w&&(e.optionRenderer=K),null==s?void 0:s.length){const t=s[0];if(t&&void 0!==t.group){const t=new Map;s.forEach(e=>{const i=e.group??"Ungrouped";t.has(i)||t.set(i,[]),t.get(i).push(e)});const i=Array.from(t.entries()).map(([e,t])=>({label:e,options:t}));e.setGroupedItems(i)}else e.setItems(s)}if((null==c?void 0:c.length)&&e.setGroupedItems(c),void 0!==l){const t=Array.isArray(l)?l:[l];e.setSelectedValues(t)}e.addEventListener("select",j),e.addEventListener("change",U),e.addEventListener("open",B),e.addEventListener("close",F),e.addEventListener("search",H),e.addEventListener("loadMore",J),e.addEventListener("create",Q),e.addEventListener("clear",W),e.addEventListener("diagnostic",X),Y()}),t.onDestroy(()=>{if(!T)return;const e=T;e.removeEventListener("select",j),e.removeEventListener("change",U),e.removeEventListener("open",B),e.removeEventListener("close",F),e.removeEventListener("search",H),e.removeEventListener("loadMore",J),e.removeEventListener("create",Q),e.removeEventListener("clear",W),e.removeEventListener("diagnostic",X)}),i.$$set=e=>{"items"in e&&a(4,s=e.items),"groupedItems"in e&&a(5,c=e.groupedItems),"value"in e&&a(3,o=e.value),"defaultValue"in e&&a(6,u=e.defaultValue),"multiple"in e&&a(7,d=e.multiple),"searchable"in e&&a(8,m=e.searchable),"placeholder"in e&&a(9,p=e.placeholder),"disabled"in e&&a(10,v=e.disabled),"required"in e&&a(11,g=e.required),"error"in e&&a(12,f=e.error),"infiniteScroll"in e&&a(13,h=e.infiniteScroll),"pageSize"in e&&a(14,b=e.pageSize),"virtualized"in e&&a(15,S=e.virtualized),"maxSelections"in e&&a(16,$=e.maxSelections),"placement"in e&&a(17,y=e.placement),"className"in e&&a(0,E=e.className),"style"in e&&a(1,L=e.style),"classMap"in e&&a(18,A=e.classMap),"clearable"in e&&a(19,k=e.clearable),"clearSelectionOnClear"in e&&a(20,x=e.clearSelectionOnClear),"clearSearchOnClear"in e&&a(21,M=e.clearSearchOnClear),"clearAriaLabel"in e&&a(22,I=e.clearAriaLabel),"clearIcon"in e&&a(23,_=e.clearIcon),"optionRenderer"in e&&a(24,w=e.optionRenderer),"trackingEnabled"in e&&a(25,C=e.trackingEnabled),"trackEvents"in e&&a(26,R=e.trackEvents),"trackStyling"in e&&a(27,z=e.trackStyling),"trackLimitations"in e&&a(28,q=e.trackLimitations),"emitDiagnostics"in e&&a(29,O=e.emitDiagnostics),"trackingMaxEntries"in e&&a(30,V=e.trackingMaxEntries),"limitationPolicies"in e&&a(31,D=e.limitationPolicies),"autoMitigateRuntimeModeSwitch"in e&&a(32,P=e.autoMitigateRuntimeModeSwitch)},i.$$.update=()=>{if(8&i.$$.dirty[0]&&a(45,r=void 0!==o),8&i.$$.dirty[0]|24576&i.$$.dirty[1]&&a(46,l=r?o:N),17074052&i.$$.dirty[0]&&T&&(p&&T.setAttribute("placeholder",p),v?T.setAttribute("disabled",""):T.removeAttribute("disabled"),m?T.setAttribute("searchable",""):T.removeAttribute("searchable"),d?T.setAttribute("multiple",""):T.removeAttribute("multiple"),S?T.setAttribute("virtualized",""):T.removeAttribute("virtualized"),w?T.optionRenderer!==K&&a(2,T.optionRenderer=K,T):T.optionRenderer===K&&a(2,T.optionRenderer=void 0,T),a(2,T.classMap=A,T)),20&i.$$.dirty[0]&&T&&s&&"function"==typeof T.setItems&&T.setItems(s),36&i.$$.dirty[0]&&T&&c&&"function"==typeof T.setGroupedItems&&T.setGroupedItems(c),4&i.$$.dirty[0]|32768&i.$$.dirty[1]&&T&&void 0!==l&&"function"==typeof T.setSelectedValues){const e=Array.isArray(l)?l:[l];T.setSelectedValues(e)}4&i.$$.dirty[0]&&T&&Y()},[E,L,T,o,s,c,u,d,m,p,v,g,f,h,b,S,$,y,A,k,x,M,I,_,w,C,R,z,q,O,V,D,P,function(){"function"==typeof(null==T?void 0:T.open)&&T.open()},function(){"function"==typeof(null==T?void 0:T.close)&&T.close()},function(){"function"==typeof(null==T?void 0:T.focus)&&T.focus()},function(e){null==T||T.setItems(e)},function(e){null==T||T.setGroupedItems(e)},function(){null==T||T.setSelectedValues([]),r||a(44,N=d?[]:void 0);const e=d?[]:"";a(3,o=e),G("change",{value:e,selectedItems:[]})},function(){var e;return null==(e=null==T?void 0:T.getCapabilities)?void 0:e.call(T)},function(){var e;return(null==(e=null==T?void 0:T.getKnownLimitations)?void 0:e.call(T))||[]},function(){var e;return(null==(e=null==T?void 0:T.getTrackingSnapshot)?void 0:e.call(T))||{events:[],styles:[],limitations:[]}},function(e){var t;null==(t=null==T?void 0:T.clearTracking)||t.call(T,e)},function(e){var t;null==(t=null==T?void 0:T.setLimitationPolicies)||t.call(T,e)},N,r,l,function(t){e.binding_callbacks[t?"unshift":"push"](()=>{T=t,a(2,T),a(9,p),a(10,v),a(8,m),a(7,d),a(15,S),a(24,w),a(18,A)})}]}"undefined"!=typeof window&&(window.__svelte||(window.__svelte={v:new Set})).v.add("4");class a extends e.SvelteComponent{constructor(t){super(),e.init(this,t,n,i,e.safe_not_equal,{items:4,groupedItems:5,value:3,defaultValue:6,multiple:7,searchable:8,placeholder:9,disabled:10,required:11,error:12,infiniteScroll:13,pageSize:14,virtualized:15,maxSelections:16,placement:17,className:0,style:1,classMap:18,clearable:19,clearSelectionOnClear:20,clearSearchOnClear:21,clearAriaLabel:22,clearIcon:23,optionRenderer:24,trackingEnabled:25,trackEvents:26,trackStyling:27,trackLimitations:28,emitDiagnostics:29,trackingMaxEntries:30,limitationPolicies:31,autoMitigateRuntimeModeSwitch:32,open:33,close:34,focus:35,setItems:36,setGroupedItems:37,clear:38,getCapabilities:39,getKnownLimitations:40,getTrackingSnapshot:41,clearTracking:42,setLimitationPolicies:43},null,[-1,-1])}get open(){return this.$$.ctx[33]}get close(){return this.$$.ctx[34]}get focus(){return this.$$.ctx[35]}get setItems(){return this.$$.ctx[36]}get setGroupedItems(){return this.$$.ctx[37]}get clear(){return this.$$.ctx[38]}get getCapabilities(){return this.$$.ctx[39]}get getKnownLimitations(){return this.$$.ctx[40]}get getTrackingSnapshot(){return this.$$.ctx[41]}get clearTracking(){return this.$$.ctx[42]}get setLimitationPolicies(){return this.$$.ctx[43]}}exports.Select=a;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/Select.svelte","../../../node_modules/svelte/src/runtime/internal/disclose-version/index.js","../../../node_modules/svelte/src/shared/version.js"],"sourcesContent":["<!--\n Smilodon Select Component for Svelte\n \n A production-ready, accessible select component with advanced features:\n - Single and multi-select modes\n - Searchable with client or server-side filtering\n - Infinite scroll and virtual scrolling for large datasets\n - Grouped options\n - Custom rendering\n - Full keyboard navigation\n - WCAG 2.1 AAA compliant\n \n @example\n <Select\n {items}\n bind:value={selectedValue}\n searchable\n placeholder=\"Select an option...\"\n />\n-->\n\n<script lang=\"ts\" context=\"module\">\n export interface SelectItem {\n value: string | number;\n label: string;\n disabled?: boolean;\n group?: string;\n [key: string]: any;\n }\n</script>\n\n<script lang=\"ts\">\n import { onMount, onDestroy, createEventDispatcher } from 'svelte';\n import type {\n SelectEventDetail,\n OpenEventDetail,\n CloseEventDetail,\n SearchEventDetail,\n ChangeEventDetail,\n LoadMoreEventDetail,\n ClearEventDetail,\n GroupedItem,\n } from '@smilodon/core';\n\n // Props\n export let items: SelectItem[] = [];\n export let groupedItems: GroupedItem[] | undefined = undefined;\n export let value: string | number | (string | number)[] | undefined = undefined;\n export let defaultValue: string | number | (string | number)[] | undefined = undefined;\n export let multiple: boolean = false;\n export let searchable: boolean = false;\n export let placeholder: string = '';\n export let disabled: boolean = false;\n export let required: boolean = false;\n export let error: boolean = false;\n export let infiniteScroll: boolean = false;\n export let pageSize: number = 50;\n export let virtualized: boolean = true;\n export let maxSelections: number | undefined = undefined;\n export let placement: 'bottom' | 'top' | 'auto' = 'auto';\n export let className: string = '';\n export let style: string = '';\n export let clearable: boolean = false;\n export let clearSelectionOnClear: boolean = true;\n export let clearSearchOnClear: boolean = true;\n export let clearAriaLabel: string = 'Clear selection and search';\n export let clearIcon: string = '×';\n export let optionRenderer: ((item: SelectItem, index: number, helpers: any) => HTMLElement) | undefined = undefined;\n\n const dispatch = createEventDispatcher<{\n change: { value: string | number | (string | number)[]; selectedItems: SelectItem[] };\n select: { item: SelectItem; index: number };\n open: void;\n close: void;\n search: { query: string };\n loadMore: { page: number };\n create: { value: string };\n clear: { clearedSelection: boolean; clearedSearch: boolean };\n }>();\n\n let selectRef: HTMLElement;\n let internalValue: string | number | (string | number)[] | undefined = defaultValue;\n\n // Stable wrapper to handle optionRenderer updates without triggering infinite loops\n const resolvedOptionRenderer = (item: SelectItem, index: number, helpers: any) => {\n return optionRenderer ? optionRenderer(item, index, helpers) : document.createElement('div');\n };\n\n // Check if component is controlled\n $: isControlled = value !== undefined;\n $: currentValue = isControlled ? value : internalValue;\n\n // Event handlers\n function handleSelect(e: Event) {\n const customEvent = e as CustomEvent<SelectEventDetail>;\n const { item, index } = customEvent.detail;\n dispatch('select', { item: item as SelectItem, index });\n }\n\n function handleChange(e: Event) {\n const customEvent = e as CustomEvent<ChangeEventDetail>;\n const { selectedItems, selectedValues } = customEvent.detail;\n\n const values = selectedValues as (string | number)[];\n\n // Update internal value in uncontrolled mode\n if (!isControlled) {\n internalValue = multiple ? values : values[0];\n }\n\n // Emit change event\n const newValue = multiple ? values : values[0];\n value = newValue; // Update binding\n dispatch('change', { value: newValue, selectedItems: selectedItems as SelectItem[] });\n }\n\n function handleOpen() {\n dispatch('open');\n }\n\n function handleClose() {\n dispatch('close');\n }\n\n function handleSearch(e: Event) {\n const customEvent = e as CustomEvent<SearchEventDetail>;\n dispatch('search', { query: customEvent.detail.query });\n }\n\n function handleLoadMore(e: Event) {\n const customEvent = e as CustomEvent<LoadMoreEventDetail>;\n dispatch('loadMore', { page: customEvent.detail.page });\n }\n\n function handleCreate(e: Event) {\n const customEvent = e as CustomEvent<{ value: string }>;\n dispatch('create', { value: customEvent.detail.value });\n }\n\n function handleClear(e: Event) {\n const customEvent = e as CustomEvent<ClearEventDetail>;\n dispatch('clear', {\n clearedSelection: customEvent.detail.clearedSelection,\n clearedSearch: customEvent.detail.clearedSearch,\n });\n }\n\n function updateConfig() {\n if (!selectRef) return;\n (selectRef as any).updateConfig?.({\n searchable,\n placeholder,\n enabled: !disabled,\n selection: {\n mode: multiple ? 'multi' : 'single',\n maxSelections,\n },\n infiniteScroll: {\n enabled: infiniteScroll,\n pageSize,\n },\n clearControl: {\n enabled: clearable,\n clearSelection: clearSelectionOnClear,\n clearSearch: clearSearchOnClear,\n ariaLabel: clearAriaLabel,\n icon: clearIcon,\n },\n });\n }\n\n onMount(() => {\n if (!selectRef) return;\n\n const element = selectRef;\n\n // Set initial attributes\n if (placeholder) element.setAttribute('placeholder', placeholder);\n if (disabled) element.setAttribute('disabled', '');\n if (required) element.setAttribute('required', '');\n if (error) element.setAttribute('error', '');\n if (searchable) element.setAttribute('searchable', '');\n if (multiple) element.setAttribute('multiple', '');\n if (virtualized) element.setAttribute('virtualized', '');\n if (infiniteScroll) element.setAttribute('infinite-scroll', '');\n if (pageSize) element.setAttribute('page-size', String(pageSize));\n if (maxSelections) element.setAttribute('max-selections', String(maxSelections));\n if (placement) element.setAttribute('placement', placement);\n\n if (optionRenderer) {\n (element as any).optionRenderer = resolvedOptionRenderer;\n }\n\n // Set initial items\n if (items?.length) {\n // Auto-convert flat items with `group` property into groupedItems\n const first = items[0];\n if (first && (first as any).group !== undefined) {\n const map = new Map<string, any[]>();\n items.forEach((it: any) => {\n const g = it.group ?? 'Ungrouped';\n if (!map.has(g)) map.set(g, []);\n map.get(g)!.push(it);\n });\n const groups = Array.from(map.entries()).map(([label, options]) => ({ label, options }));\n (element as any).setGroupedItems(groups);\n } else {\n (element as any).setItems(items);\n }\n }\n if (groupedItems?.length) {\n (element as any).setGroupedItems(groupedItems);\n }\n\n // Set initial value\n if (currentValue !== undefined) {\n const values = Array.isArray(currentValue) ? currentValue : [currentValue];\n (element as any).setSelectedValues(values);\n }\n\n // Add event listeners\n element.addEventListener('select', handleSelect as EventListener);\n element.addEventListener('change', handleChange as EventListener);\n element.addEventListener('open', handleOpen as EventListener);\n element.addEventListener('close', handleClose as EventListener);\n element.addEventListener('search', handleSearch as EventListener);\n element.addEventListener('loadMore', handleLoadMore as EventListener);\n element.addEventListener('create', handleCreate as EventListener);\n element.addEventListener('clear', handleClear as EventListener);\n\n updateConfig();\n });\n\n onDestroy(() => {\n if (!selectRef) return;\n\n const element = selectRef;\n\n // Remove event listeners\n element.removeEventListener('select', handleSelect as EventListener);\n element.removeEventListener('change', handleChange as EventListener);\n element.removeEventListener('open', handleOpen as EventListener);\n element.removeEventListener('close', handleClose as EventListener);\n element.removeEventListener('search', handleSearch as EventListener);\n element.removeEventListener('loadMore', handleLoadMore as EventListener);\n element.removeEventListener('create', handleCreate as EventListener);\n element.removeEventListener('clear', handleClear as EventListener);\n });\n\n // Reactive updates\n $: if (selectRef && items) {\n (selectRef as any).setItems(items);\n }\n\n $: if (selectRef && groupedItems) {\n (selectRef as any).setGroupedItems(groupedItems);\n }\n\n $: if (selectRef && currentValue !== undefined) {\n const values = Array.isArray(currentValue) ? currentValue : [currentValue];\n (selectRef as any).setSelectedValues(values);\n }\n\n $: if (selectRef) {\n if (placeholder) selectRef.setAttribute('placeholder', placeholder);\n if (disabled) {\n selectRef.setAttribute('disabled', '');\n } else {\n selectRef.removeAttribute('disabled');\n }\n if (searchable) {\n selectRef.setAttribute('searchable', '');\n } else {\n selectRef.removeAttribute('searchable');\n }\n if (multiple) {\n selectRef.setAttribute('multiple', '');\n } else {\n selectRef.removeAttribute('multiple');\n }\n if (virtualized) {\n selectRef.setAttribute('virtualized', '');\n } else {\n selectRef.removeAttribute('virtualized');\n }\n\n if (optionRenderer) {\n if ((selectRef as any).optionRenderer !== resolvedOptionRenderer) {\n (selectRef as any).optionRenderer = resolvedOptionRenderer;\n }\n } else if ((selectRef as any).optionRenderer === resolvedOptionRenderer) {\n (selectRef as any).optionRenderer = undefined;\n }\n }\n\n $: if (selectRef) {\n updateConfig();\n }\n\n // Public methods\n export function open() {\n (selectRef as any)?.open();\n }\n\n export function close() {\n (selectRef as any)?.close();\n }\n\n export function focus() {\n selectRef?.focus();\n }\n\n export function setItems(newItems: SelectItem[]) {\n (selectRef as any)?.setItems(newItems);\n }\n\n export function setGroupedItems(groups: GroupedItem[]) {\n (selectRef as any)?.setGroupedItems(groups);\n }\n\n export function clear() {\n (selectRef as any)?.setSelectedValues([]);\n if (!isControlled) {\n internalValue = multiple ? [] : undefined;\n }\n const newValue = multiple ? [] : '';\n value = newValue as any;\n dispatch('change', { value: newValue as any, selectedItems: [] });\n }\n</script>\n\n<enhanced-select\n bind:this={selectRef}\n class={className}\n {style}\n/>\n\n<style>\n /* Component uses web component styling from @smilodon/core */\n</style>\n","import { PUBLIC_VERSION } from '../../../shared/version.js';\n\nif (typeof window !== 'undefined')\n\t// @ts-ignore\n\t(window.__svelte || (window.__svelte = { v: new Set() })).v.add(PUBLIC_VERSION);\n","// generated during release, do not modify\n\n/**\n * The current version, as set in package.json.\n *\n * https://svelte.dev/docs/svelte-compiler#svelte-version\n * @type {string}\n */\nexport const VERSION = '4.2.20';\nexport const PUBLIC_VERSION = '4';\n"],"names":["ctx","insert","target","enhanced_select","anchor","items","$$props","groupedItems","value","defaultValue","multiple","searchable","placeholder","disabled","required","error","infiniteScroll","pageSize","virtualized","maxSelections","placement","className","style","clearable","clearSelectionOnClear","clearSearchOnClear","clearAriaLabel","clearIcon","optionRenderer","dispatch","createEventDispatcher","selectRef","internalValue","resolvedOptionRenderer","item","index","helpers","document","createElement","handleSelect","e","customEvent","detail","handleChange","selectedItems","selectedValues","values","isControlled","newValue","handleOpen","handleClose","handleSearch","query","handleLoadMore","page","handleCreate","handleClear","clearedSelection","clearedSearch","updateConfig","_a","call","enabled","selection","mode","clearControl","clearSelection","clearSearch","ariaLabel","icon","onMount","element","setAttribute","String","length","first","group","map","Map","forEach","it","g","has","set","get","push","groups","Array","from","entries","label","options","setGroupedItems","setItems","currentValue","isArray","setSelectedValues","addEventListener","onDestroy","removeEventListener","$$invalidate","removeAttribute","open","close","focus","newItems","$$value","window","__svelte","v","Set","add"],"mappings":"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","x_google_ignoreList":[1,2]}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/Select.svelte","../../../node_modules/svelte/src/runtime/internal/disclose-version/index.js","../../../node_modules/svelte/src/shared/version.js"],"sourcesContent":["<!--\n Smilodon Select Component for Svelte\n \n A production-ready, accessible select component with advanced features:\n - Single and multi-select modes\n - Searchable with client or server-side filtering\n - Infinite scroll and virtual scrolling for large datasets\n - Grouped options\n - Custom rendering\n - Full keyboard navigation\n - WCAG 2.1 AAA compliant\n \n @example\n <Select\n {items}\n bind:value={selectedValue}\n searchable\n placeholder=\"Select an option...\"\n />\n-->\n\n<script lang=\"ts\" context=\"module\">\n export interface SelectItem {\n value: string | number;\n label: string;\n disabled?: boolean;\n group?: string;\n [key: string]: any;\n }\n</script>\n\n<script lang=\"ts\">\n import { onMount, onDestroy, createEventDispatcher } from 'svelte';\n import type {\n SelectEventDetail,\n OpenEventDetail,\n CloseEventDetail,\n SearchEventDetail,\n ChangeEventDetail,\n LoadMoreEventDetail,\n ClearEventDetail,\n GroupedItem,\n ClassMap,\n DiagnosticEventDetail,\n LimitationPolicyMap,\n } from '@smilodon/core';\n\n // Props\n export let items: SelectItem[] = [];\n export let groupedItems: GroupedItem[] | undefined = undefined;\n export let value: string | number | (string | number)[] | undefined = undefined;\n export let defaultValue: string | number | (string | number)[] | undefined = undefined;\n export let multiple: boolean = false;\n export let searchable: boolean = false;\n export let placeholder: string = '';\n export let disabled: boolean = false;\n export let required: boolean = false;\n export let error: boolean = false;\n export let infiniteScroll: boolean = false;\n export let pageSize: number = 50;\n export let virtualized: boolean = true;\n export let maxSelections: number | undefined = undefined;\n export let placement: 'bottom' | 'top' | 'auto' = 'auto';\n export let className: string = '';\n export let style: string = '';\n export let classMap: ClassMap | undefined = undefined;\n export let clearable: boolean = false;\n export let clearSelectionOnClear: boolean = true;\n export let clearSearchOnClear: boolean = true;\n export let clearAriaLabel: string = 'Clear selection and search';\n export let clearIcon: string = '×';\n export let optionRenderer: ((item: SelectItem, index: number, helpers: any) => HTMLElement) | undefined = undefined;\n export let trackingEnabled: boolean = false;\n export let trackEvents: boolean = true;\n export let trackStyling: boolean = true;\n export let trackLimitations: boolean = true;\n export let emitDiagnostics: boolean = false;\n export let trackingMaxEntries: number = 200;\n export let limitationPolicies: LimitationPolicyMap | undefined = undefined;\n export let autoMitigateRuntimeModeSwitch: boolean = true;\n\n const dispatch = createEventDispatcher<{\n change: { value: string | number | (string | number)[]; selectedItems: SelectItem[] };\n select: { item: SelectItem; index: number };\n open: void;\n close: void;\n search: { query: string };\n loadMore: { page: number };\n create: { value: string };\n clear: { clearedSelection: boolean; clearedSearch: boolean };\n diagnostic: DiagnosticEventDetail;\n }>();\n\n let selectRef: HTMLElement;\n let internalValue: string | number | (string | number)[] | undefined = defaultValue;\n\n // Stable wrapper to handle optionRenderer updates without triggering infinite loops\n const resolvedOptionRenderer = (item: SelectItem, index: number, helpers: any) => {\n return optionRenderer ? optionRenderer(item, index, helpers) : document.createElement('div');\n };\n\n // Check if component is controlled\n $: isControlled = value !== undefined;\n $: currentValue = isControlled ? value : internalValue;\n\n // Event handlers\n function handleSelect(e: Event) {\n const customEvent = e as CustomEvent<SelectEventDetail>;\n const { item, index } = customEvent.detail;\n dispatch('select', { item: item as SelectItem, index });\n }\n\n function handleChange(e: Event) {\n const customEvent = e as CustomEvent<ChangeEventDetail>;\n const { selectedItems, selectedValues } = customEvent.detail;\n\n const values = selectedValues as (string | number)[];\n\n // Update internal value in uncontrolled mode\n if (!isControlled) {\n internalValue = multiple ? values : values[0];\n }\n\n // Emit change event\n const newValue = multiple ? values : values[0];\n value = newValue; // Update binding\n dispatch('change', { value: newValue, selectedItems: selectedItems as SelectItem[] });\n }\n\n function handleOpen() {\n dispatch('open');\n }\n\n function handleClose() {\n dispatch('close');\n }\n\n function handleSearch(e: Event) {\n const customEvent = e as CustomEvent<SearchEventDetail>;\n dispatch('search', { query: customEvent.detail.query });\n }\n\n function handleLoadMore(e: Event) {\n const customEvent = e as CustomEvent<LoadMoreEventDetail>;\n dispatch('loadMore', { page: customEvent.detail.page });\n }\n\n function handleCreate(e: Event) {\n const customEvent = e as CustomEvent<{ value: string }>;\n dispatch('create', { value: customEvent.detail.value });\n }\n\n function handleClear(e: Event) {\n const customEvent = e as CustomEvent<ClearEventDetail>;\n dispatch('clear', {\n clearedSelection: customEvent.detail.clearedSelection,\n clearedSearch: customEvent.detail.clearedSearch,\n });\n }\n\n function handleDiagnostic(e: Event) {\n const customEvent = e as CustomEvent<DiagnosticEventDetail>;\n dispatch('diagnostic', customEvent.detail);\n }\n\n function updateConfig() {\n if (!selectRef) return;\n (selectRef as any).updateConfig?.({\n searchable,\n placeholder,\n enabled: !disabled,\n selection: {\n mode: multiple ? 'multi' : 'single',\n maxSelections,\n },\n infiniteScroll: {\n enabled: infiniteScroll,\n pageSize,\n },\n clearControl: {\n enabled: clearable,\n clearSelection: clearSelectionOnClear,\n clearSearch: clearSearchOnClear,\n ariaLabel: clearAriaLabel,\n icon: clearIcon,\n },\n tracking: {\n enabled: trackingEnabled,\n events: trackEvents,\n styling: trackStyling,\n limitations: trackLimitations,\n emitDiagnostics,\n maxEntries: trackingMaxEntries,\n },\n limitations: {\n policies: limitationPolicies,\n autoMitigateRuntimeModeSwitch,\n },\n });\n }\n\n onMount(async () => {\n if (!selectRef) return;\n\n await customElements.whenDefined('enhanced-select');\n if (!selectRef) return;\n\n const element = selectRef;\n\n // Set initial attributes\n if (placeholder) element.setAttribute('placeholder', placeholder);\n if (disabled) element.setAttribute('disabled', '');\n if (required) element.setAttribute('required', '');\n if (error) element.setAttribute('error', '');\n if (searchable) element.setAttribute('searchable', '');\n if (multiple) element.setAttribute('multiple', '');\n if (virtualized) element.setAttribute('virtualized', '');\n if (infiniteScroll) element.setAttribute('infinite-scroll', '');\n if (pageSize) element.setAttribute('page-size', String(pageSize));\n if (maxSelections) element.setAttribute('max-selections', String(maxSelections));\n if (placement) element.setAttribute('placement', placement);\n\n if (optionRenderer) {\n (element as any).optionRenderer = resolvedOptionRenderer;\n }\n\n // Set initial items\n if (items?.length) {\n // Auto-convert flat items with `group` property into groupedItems\n const first = items[0];\n if (first && (first as any).group !== undefined) {\n const map = new Map<string, any[]>();\n items.forEach((it: any) => {\n const g = it.group ?? 'Ungrouped';\n if (!map.has(g)) map.set(g, []);\n map.get(g)!.push(it);\n });\n const groups = Array.from(map.entries()).map(([label, options]) => ({ label, options }));\n (element as any).setGroupedItems(groups);\n } else {\n (element as any).setItems(items);\n }\n }\n if (groupedItems?.length) {\n (element as any).setGroupedItems(groupedItems);\n }\n\n // Set initial value\n if (currentValue !== undefined) {\n const values = Array.isArray(currentValue) ? currentValue : [currentValue];\n (element as any).setSelectedValues(values);\n }\n\n // Add event listeners\n element.addEventListener('select', handleSelect as EventListener);\n element.addEventListener('change', handleChange as EventListener);\n element.addEventListener('open', handleOpen as EventListener);\n element.addEventListener('close', handleClose as EventListener);\n element.addEventListener('search', handleSearch as EventListener);\n element.addEventListener('loadMore', handleLoadMore as EventListener);\n element.addEventListener('create', handleCreate as EventListener);\n element.addEventListener('clear', handleClear as EventListener);\n element.addEventListener('diagnostic', handleDiagnostic as EventListener);\n\n updateConfig();\n });\n\n onDestroy(() => {\n if (!selectRef) return;\n\n const element = selectRef;\n\n // Remove event listeners\n element.removeEventListener('select', handleSelect as EventListener);\n element.removeEventListener('change', handleChange as EventListener);\n element.removeEventListener('open', handleOpen as EventListener);\n element.removeEventListener('close', handleClose as EventListener);\n element.removeEventListener('search', handleSearch as EventListener);\n element.removeEventListener('loadMore', handleLoadMore as EventListener);\n element.removeEventListener('create', handleCreate as EventListener);\n element.removeEventListener('clear', handleClear as EventListener);\n element.removeEventListener('diagnostic', handleDiagnostic as EventListener);\n });\n\n // Reactive updates\n $: if (selectRef && items) {\n if (typeof (selectRef as any).setItems === 'function') {\n (selectRef as any).setItems(items);\n }\n }\n\n $: if (selectRef && groupedItems) {\n if (typeof (selectRef as any).setGroupedItems === 'function') {\n (selectRef as any).setGroupedItems(groupedItems);\n }\n }\n\n $: if (selectRef && currentValue !== undefined) {\n if (typeof (selectRef as any).setSelectedValues === 'function') {\n const values = Array.isArray(currentValue) ? currentValue : [currentValue];\n (selectRef as any).setSelectedValues(values);\n }\n }\n\n $: if (selectRef) {\n if (placeholder) selectRef.setAttribute('placeholder', placeholder);\n if (disabled) {\n selectRef.setAttribute('disabled', '');\n } else {\n selectRef.removeAttribute('disabled');\n }\n if (searchable) {\n selectRef.setAttribute('searchable', '');\n } else {\n selectRef.removeAttribute('searchable');\n }\n if (multiple) {\n selectRef.setAttribute('multiple', '');\n } else {\n selectRef.removeAttribute('multiple');\n }\n if (virtualized) {\n selectRef.setAttribute('virtualized', '');\n } else {\n selectRef.removeAttribute('virtualized');\n }\n\n if (optionRenderer) {\n if ((selectRef as any).optionRenderer !== resolvedOptionRenderer) {\n (selectRef as any).optionRenderer = resolvedOptionRenderer;\n }\n } else if ((selectRef as any).optionRenderer === resolvedOptionRenderer) {\n (selectRef as any).optionRenderer = undefined;\n }\n\n (selectRef as any).classMap = classMap;\n }\n\n $: if (selectRef) {\n updateConfig();\n }\n\n // Public methods\n export function open() {\n if (typeof (selectRef as any)?.open === 'function') {\n (selectRef as any).open();\n }\n }\n\n export function close() {\n if (typeof (selectRef as any)?.close === 'function') {\n (selectRef as any).close();\n }\n }\n\n export function focus() {\n if (typeof (selectRef as any)?.focus === 'function') {\n (selectRef as any).focus();\n }\n }\n\n export function setItems(newItems: SelectItem[]) {\n (selectRef as any)?.setItems(newItems);\n }\n\n export function setGroupedItems(groups: GroupedItem[]) {\n (selectRef as any)?.setGroupedItems(groups);\n }\n\n export function clear() {\n (selectRef as any)?.setSelectedValues([]);\n if (!isControlled) {\n internalValue = multiple ? [] : undefined;\n }\n const newValue = multiple ? [] : '';\n value = newValue as any;\n dispatch('change', { value: newValue as any, selectedItems: [] });\n }\n\n export function getCapabilities() {\n return (selectRef as any)?.getCapabilities?.();\n }\n\n export function getKnownLimitations() {\n return (selectRef as any)?.getKnownLimitations?.() || [];\n }\n\n export function getTrackingSnapshot() {\n return (selectRef as any)?.getTrackingSnapshot?.() || { events: [], styles: [], limitations: [] };\n }\n\n export function clearTracking(source?: 'event' | 'style' | 'limitation' | 'all') {\n (selectRef as any)?.clearTracking?.(source);\n }\n\n export function setLimitationPolicies(policies: LimitationPolicyMap) {\n (selectRef as any)?.setLimitationPolicies?.(policies);\n }\n</script>\n\n<enhanced-select\n bind:this={selectRef}\n class={className}\n {style}\n/>\n\n<style>\n /* Component uses web component styling from @smilodon/core */\n</style>\n","import { PUBLIC_VERSION } from '../../../shared/version.js';\n\nif (typeof window !== 'undefined')\n\t// @ts-ignore\n\t(window.__svelte || (window.__svelte = { v: new Set() })).v.add(PUBLIC_VERSION);\n","// generated during release, do not modify\n\n/**\n * The current version, as set in package.json.\n *\n * https://svelte.dev/docs/svelte-compiler#svelte-version\n * @type {string}\n */\nexport const VERSION = '4.2.20';\nexport const PUBLIC_VERSION = '4';\n"],"names":["ctx","insert","target","enhanced_select","anchor","items","$$props","groupedItems","value","defaultValue","multiple","searchable","placeholder","disabled","required","error","infiniteScroll","pageSize","virtualized","maxSelections","placement","className","style","classMap","clearable","clearSelectionOnClear","clearSearchOnClear","clearAriaLabel","clearIcon","optionRenderer","trackingEnabled","trackEvents","trackStyling","trackLimitations","emitDiagnostics","trackingMaxEntries","limitationPolicies","autoMitigateRuntimeModeSwitch","dispatch","createEventDispatcher","selectRef","internalValue","resolvedOptionRenderer","item","index","helpers","document","createElement","handleSelect","e","customEvent","detail","handleChange","selectedItems","selectedValues","values","isControlled","newValue","handleOpen","handleClose","handleSearch","query","handleLoadMore","page","handleCreate","handleClear","clearedSelection","clearedSearch","handleDiagnostic","updateConfig","_a","call","enabled","selection","mode","clearControl","clearSelection","clearSearch","ariaLabel","icon","tracking","events","styling","limitations","maxEntries","policies","onMount","async","customElements","whenDefined","element","setAttribute","String","length","first","group","map","Map","forEach","it","g","has","set","get","push","groups","Array","from","entries","label","options","setGroupedItems","setItems","currentValue","isArray","setSelectedValues","addEventListener","onDestroy","removeEventListener","$$invalidate","removeAttribute","open","close","focus","newItems","getCapabilities","getKnownLimitations","getTrackingSnapshot","styles","source","clearTracking","setLimitationPolicies","$$value","window","__svelte","v","Set","add"],"mappings":"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","x_google_ignoreList":[1,2]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import "@smilodon/core";
|
|
1
2
|
import { SvelteComponent, init, safe_not_equal, noop, detach, set_custom_element_data, insert, element, binding_callbacks } from "svelte/internal";
|
|
2
3
|
import { createEventDispatcher, onMount, onDestroy } from "svelte";
|
|
3
4
|
const PUBLIC_VERSION = "4";
|
|
@@ -23,7 +24,7 @@ function create_fragment(ctx) {
|
|
|
23
24
|
},
|
|
24
25
|
m(target, anchor) {
|
|
25
26
|
insert(target, enhanced_select, anchor);
|
|
26
|
-
ctx[
|
|
27
|
+
ctx[47](enhanced_select);
|
|
27
28
|
},
|
|
28
29
|
p(ctx2, dirty) {
|
|
29
30
|
if (dirty[0] & /*className*/
|
|
@@ -51,7 +52,7 @@ function create_fragment(ctx) {
|
|
|
51
52
|
if (detaching) {
|
|
52
53
|
detach(enhanced_select);
|
|
53
54
|
}
|
|
54
|
-
ctx[
|
|
55
|
+
ctx[47](null);
|
|
55
56
|
}
|
|
56
57
|
};
|
|
57
58
|
}
|
|
@@ -75,12 +76,21 @@ function instance($$self, $$props, $$invalidate) {
|
|
|
75
76
|
let { placement = "auto" } = $$props;
|
|
76
77
|
let { className = "" } = $$props;
|
|
77
78
|
let { style = "" } = $$props;
|
|
79
|
+
let { classMap = void 0 } = $$props;
|
|
78
80
|
let { clearable = false } = $$props;
|
|
79
81
|
let { clearSelectionOnClear = true } = $$props;
|
|
80
82
|
let { clearSearchOnClear = true } = $$props;
|
|
81
83
|
let { clearAriaLabel = "Clear selection and search" } = $$props;
|
|
82
84
|
let { clearIcon = "×" } = $$props;
|
|
83
85
|
let { optionRenderer = void 0 } = $$props;
|
|
86
|
+
let { trackingEnabled = false } = $$props;
|
|
87
|
+
let { trackEvents = true } = $$props;
|
|
88
|
+
let { trackStyling = true } = $$props;
|
|
89
|
+
let { trackLimitations = true } = $$props;
|
|
90
|
+
let { emitDiagnostics = false } = $$props;
|
|
91
|
+
let { trackingMaxEntries = 200 } = $$props;
|
|
92
|
+
let { limitationPolicies = void 0 } = $$props;
|
|
93
|
+
let { autoMitigateRuntimeModeSwitch = true } = $$props;
|
|
84
94
|
const dispatch = createEventDispatcher();
|
|
85
95
|
let selectRef;
|
|
86
96
|
let internalValue = defaultValue;
|
|
@@ -97,7 +107,7 @@ function instance($$self, $$props, $$invalidate) {
|
|
|
97
107
|
const { selectedItems, selectedValues } = customEvent.detail;
|
|
98
108
|
const values = selectedValues;
|
|
99
109
|
if (!isControlled) {
|
|
100
|
-
$$invalidate(
|
|
110
|
+
$$invalidate(44, internalValue = multiple ? values : values[0]);
|
|
101
111
|
}
|
|
102
112
|
const newValue = multiple ? values : values[0];
|
|
103
113
|
$$invalidate(3, value = newValue);
|
|
@@ -128,6 +138,10 @@ function instance($$self, $$props, $$invalidate) {
|
|
|
128
138
|
clearedSearch: customEvent.detail.clearedSearch
|
|
129
139
|
});
|
|
130
140
|
}
|
|
141
|
+
function handleDiagnostic(e) {
|
|
142
|
+
const customEvent = e;
|
|
143
|
+
dispatch("diagnostic", customEvent.detail);
|
|
144
|
+
}
|
|
131
145
|
function updateConfig() {
|
|
132
146
|
var _a;
|
|
133
147
|
if (!selectRef) return;
|
|
@@ -146,10 +160,24 @@ function instance($$self, $$props, $$invalidate) {
|
|
|
146
160
|
clearSearch: clearSearchOnClear,
|
|
147
161
|
ariaLabel: clearAriaLabel,
|
|
148
162
|
icon: clearIcon
|
|
163
|
+
},
|
|
164
|
+
tracking: {
|
|
165
|
+
enabled: trackingEnabled,
|
|
166
|
+
events: trackEvents,
|
|
167
|
+
styling: trackStyling,
|
|
168
|
+
limitations: trackLimitations,
|
|
169
|
+
emitDiagnostics,
|
|
170
|
+
maxEntries: trackingMaxEntries
|
|
171
|
+
},
|
|
172
|
+
limitations: {
|
|
173
|
+
policies: limitationPolicies,
|
|
174
|
+
autoMitigateRuntimeModeSwitch
|
|
149
175
|
}
|
|
150
176
|
});
|
|
151
177
|
}
|
|
152
|
-
onMount(() => {
|
|
178
|
+
onMount(async () => {
|
|
179
|
+
if (!selectRef) return;
|
|
180
|
+
await customElements.whenDefined("enhanced-select");
|
|
153
181
|
if (!selectRef) return;
|
|
154
182
|
const element2 = selectRef;
|
|
155
183
|
if (placeholder) element2.setAttribute("placeholder", placeholder);
|
|
@@ -196,6 +224,7 @@ function instance($$self, $$props, $$invalidate) {
|
|
|
196
224
|
element2.addEventListener("loadMore", handleLoadMore);
|
|
197
225
|
element2.addEventListener("create", handleCreate);
|
|
198
226
|
element2.addEventListener("clear", handleClear);
|
|
227
|
+
element2.addEventListener("diagnostic", handleDiagnostic);
|
|
199
228
|
updateConfig();
|
|
200
229
|
});
|
|
201
230
|
onDestroy(() => {
|
|
@@ -209,15 +238,22 @@ function instance($$self, $$props, $$invalidate) {
|
|
|
209
238
|
element2.removeEventListener("loadMore", handleLoadMore);
|
|
210
239
|
element2.removeEventListener("create", handleCreate);
|
|
211
240
|
element2.removeEventListener("clear", handleClear);
|
|
241
|
+
element2.removeEventListener("diagnostic", handleDiagnostic);
|
|
212
242
|
});
|
|
213
243
|
function open() {
|
|
214
|
-
selectRef == null ? void 0 : selectRef.open
|
|
244
|
+
if (typeof (selectRef == null ? void 0 : selectRef.open) === "function") {
|
|
245
|
+
selectRef.open();
|
|
246
|
+
}
|
|
215
247
|
}
|
|
216
248
|
function close() {
|
|
217
|
-
selectRef == null ? void 0 : selectRef.close
|
|
249
|
+
if (typeof (selectRef == null ? void 0 : selectRef.close) === "function") {
|
|
250
|
+
selectRef.close();
|
|
251
|
+
}
|
|
218
252
|
}
|
|
219
253
|
function focus() {
|
|
220
|
-
selectRef == null ? void 0 : selectRef.focus
|
|
254
|
+
if (typeof (selectRef == null ? void 0 : selectRef.focus) === "function") {
|
|
255
|
+
selectRef.focus();
|
|
256
|
+
}
|
|
221
257
|
}
|
|
222
258
|
function setItems(newItems) {
|
|
223
259
|
selectRef == null ? void 0 : selectRef.setItems(newItems);
|
|
@@ -228,16 +264,36 @@ function instance($$self, $$props, $$invalidate) {
|
|
|
228
264
|
function clear() {
|
|
229
265
|
selectRef == null ? void 0 : selectRef.setSelectedValues([]);
|
|
230
266
|
if (!isControlled) {
|
|
231
|
-
$$invalidate(
|
|
267
|
+
$$invalidate(44, internalValue = multiple ? [] : void 0);
|
|
232
268
|
}
|
|
233
269
|
const newValue = multiple ? [] : "";
|
|
234
270
|
$$invalidate(3, value = newValue);
|
|
235
271
|
dispatch("change", { value: newValue, selectedItems: [] });
|
|
236
272
|
}
|
|
273
|
+
function getCapabilities() {
|
|
274
|
+
var _a;
|
|
275
|
+
return (_a = selectRef == null ? void 0 : selectRef.getCapabilities) == null ? void 0 : _a.call(selectRef);
|
|
276
|
+
}
|
|
277
|
+
function getKnownLimitations() {
|
|
278
|
+
var _a;
|
|
279
|
+
return ((_a = selectRef == null ? void 0 : selectRef.getKnownLimitations) == null ? void 0 : _a.call(selectRef)) || [];
|
|
280
|
+
}
|
|
281
|
+
function getTrackingSnapshot() {
|
|
282
|
+
var _a;
|
|
283
|
+
return ((_a = selectRef == null ? void 0 : selectRef.getTrackingSnapshot) == null ? void 0 : _a.call(selectRef)) || { events: [], styles: [], limitations: [] };
|
|
284
|
+
}
|
|
285
|
+
function clearTracking(source) {
|
|
286
|
+
var _a;
|
|
287
|
+
(_a = selectRef == null ? void 0 : selectRef.clearTracking) == null ? void 0 : _a.call(selectRef, source);
|
|
288
|
+
}
|
|
289
|
+
function setLimitationPolicies(policies) {
|
|
290
|
+
var _a;
|
|
291
|
+
(_a = selectRef == null ? void 0 : selectRef.setLimitationPolicies) == null ? void 0 : _a.call(selectRef, policies);
|
|
292
|
+
}
|
|
237
293
|
function enhanced_select_binding($$value) {
|
|
238
294
|
binding_callbacks[$$value ? "unshift" : "push"](() => {
|
|
239
295
|
selectRef = $$value;
|
|
240
|
-
$$invalidate(2, selectRef), $$invalidate(9, placeholder), $$invalidate(10, disabled), $$invalidate(8, searchable), $$invalidate(7, multiple), $$invalidate(15, virtualized), $$invalidate(
|
|
296
|
+
$$invalidate(2, selectRef), $$invalidate(9, placeholder), $$invalidate(10, disabled), $$invalidate(8, searchable), $$invalidate(7, multiple), $$invalidate(15, virtualized), $$invalidate(24, optionRenderer), $$invalidate(18, classMap);
|
|
241
297
|
});
|
|
242
298
|
}
|
|
243
299
|
$$self.$$set = ($$props2) => {
|
|
@@ -258,25 +314,34 @@ function instance($$self, $$props, $$invalidate) {
|
|
|
258
314
|
if ("placement" in $$props2) $$invalidate(17, placement = $$props2.placement);
|
|
259
315
|
if ("className" in $$props2) $$invalidate(0, className = $$props2.className);
|
|
260
316
|
if ("style" in $$props2) $$invalidate(1, style = $$props2.style);
|
|
261
|
-
if ("
|
|
262
|
-
if ("
|
|
263
|
-
if ("
|
|
264
|
-
if ("
|
|
265
|
-
if ("
|
|
266
|
-
if ("
|
|
317
|
+
if ("classMap" in $$props2) $$invalidate(18, classMap = $$props2.classMap);
|
|
318
|
+
if ("clearable" in $$props2) $$invalidate(19, clearable = $$props2.clearable);
|
|
319
|
+
if ("clearSelectionOnClear" in $$props2) $$invalidate(20, clearSelectionOnClear = $$props2.clearSelectionOnClear);
|
|
320
|
+
if ("clearSearchOnClear" in $$props2) $$invalidate(21, clearSearchOnClear = $$props2.clearSearchOnClear);
|
|
321
|
+
if ("clearAriaLabel" in $$props2) $$invalidate(22, clearAriaLabel = $$props2.clearAriaLabel);
|
|
322
|
+
if ("clearIcon" in $$props2) $$invalidate(23, clearIcon = $$props2.clearIcon);
|
|
323
|
+
if ("optionRenderer" in $$props2) $$invalidate(24, optionRenderer = $$props2.optionRenderer);
|
|
324
|
+
if ("trackingEnabled" in $$props2) $$invalidate(25, trackingEnabled = $$props2.trackingEnabled);
|
|
325
|
+
if ("trackEvents" in $$props2) $$invalidate(26, trackEvents = $$props2.trackEvents);
|
|
326
|
+
if ("trackStyling" in $$props2) $$invalidate(27, trackStyling = $$props2.trackStyling);
|
|
327
|
+
if ("trackLimitations" in $$props2) $$invalidate(28, trackLimitations = $$props2.trackLimitations);
|
|
328
|
+
if ("emitDiagnostics" in $$props2) $$invalidate(29, emitDiagnostics = $$props2.emitDiagnostics);
|
|
329
|
+
if ("trackingMaxEntries" in $$props2) $$invalidate(30, trackingMaxEntries = $$props2.trackingMaxEntries);
|
|
330
|
+
if ("limitationPolicies" in $$props2) $$invalidate(31, limitationPolicies = $$props2.limitationPolicies);
|
|
331
|
+
if ("autoMitigateRuntimeModeSwitch" in $$props2) $$invalidate(32, autoMitigateRuntimeModeSwitch = $$props2.autoMitigateRuntimeModeSwitch);
|
|
267
332
|
};
|
|
268
333
|
$$self.$$.update = () => {
|
|
269
334
|
if ($$self.$$.dirty[0] & /*value*/
|
|
270
335
|
8) {
|
|
271
|
-
$$invalidate(
|
|
336
|
+
$$invalidate(45, isControlled = value !== void 0);
|
|
272
337
|
}
|
|
273
|
-
if ($$self.$$.dirty[0] & /*value
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
$$invalidate(
|
|
338
|
+
if ($$self.$$.dirty[0] & /*value*/
|
|
339
|
+
8 | $$self.$$.dirty[1] & /*isControlled, internalValue*/
|
|
340
|
+
24576) {
|
|
341
|
+
$$invalidate(46, currentValue = isControlled ? value : internalValue);
|
|
277
342
|
}
|
|
278
|
-
if ($$self.$$.dirty[0] & /*selectRef, placeholder, disabled, searchable, multiple, virtualized, optionRenderer*/
|
|
279
|
-
|
|
343
|
+
if ($$self.$$.dirty[0] & /*selectRef, placeholder, disabled, searchable, multiple, virtualized, optionRenderer, classMap*/
|
|
344
|
+
17074052) {
|
|
280
345
|
if (selectRef) {
|
|
281
346
|
if (placeholder) selectRef.setAttribute("placeholder", placeholder);
|
|
282
347
|
if (disabled) {
|
|
@@ -306,26 +371,33 @@ function instance($$self, $$props, $$invalidate) {
|
|
|
306
371
|
} else if (selectRef.optionRenderer === resolvedOptionRenderer) {
|
|
307
372
|
$$invalidate(2, selectRef.optionRenderer = void 0, selectRef);
|
|
308
373
|
}
|
|
374
|
+
$$invalidate(2, selectRef.classMap = classMap, selectRef);
|
|
309
375
|
}
|
|
310
376
|
}
|
|
311
377
|
if ($$self.$$.dirty[0] & /*selectRef, items*/
|
|
312
378
|
20) {
|
|
313
379
|
if (selectRef && items) {
|
|
314
|
-
selectRef.setItems
|
|
380
|
+
if (typeof selectRef.setItems === "function") {
|
|
381
|
+
selectRef.setItems(items);
|
|
382
|
+
}
|
|
315
383
|
}
|
|
316
384
|
}
|
|
317
385
|
if ($$self.$$.dirty[0] & /*selectRef, groupedItems*/
|
|
318
386
|
36) {
|
|
319
387
|
if (selectRef && groupedItems) {
|
|
320
|
-
selectRef.setGroupedItems
|
|
388
|
+
if (typeof selectRef.setGroupedItems === "function") {
|
|
389
|
+
selectRef.setGroupedItems(groupedItems);
|
|
390
|
+
}
|
|
321
391
|
}
|
|
322
392
|
}
|
|
323
393
|
if ($$self.$$.dirty[0] & /*selectRef*/
|
|
324
394
|
4 | $$self.$$.dirty[1] & /*currentValue*/
|
|
325
|
-
|
|
395
|
+
32768) {
|
|
326
396
|
if (selectRef && currentValue !== void 0) {
|
|
327
|
-
|
|
328
|
-
|
|
397
|
+
if (typeof selectRef.setSelectedValues === "function") {
|
|
398
|
+
const values = Array.isArray(currentValue) ? currentValue : [currentValue];
|
|
399
|
+
selectRef.setSelectedValues(values);
|
|
400
|
+
}
|
|
329
401
|
}
|
|
330
402
|
}
|
|
331
403
|
if ($$self.$$.dirty[0] & /*selectRef*/
|
|
@@ -354,18 +426,32 @@ function instance($$self, $$props, $$invalidate) {
|
|
|
354
426
|
virtualized,
|
|
355
427
|
maxSelections,
|
|
356
428
|
placement,
|
|
429
|
+
classMap,
|
|
357
430
|
clearable,
|
|
358
431
|
clearSelectionOnClear,
|
|
359
432
|
clearSearchOnClear,
|
|
360
433
|
clearAriaLabel,
|
|
361
434
|
clearIcon,
|
|
362
435
|
optionRenderer,
|
|
436
|
+
trackingEnabled,
|
|
437
|
+
trackEvents,
|
|
438
|
+
trackStyling,
|
|
439
|
+
trackLimitations,
|
|
440
|
+
emitDiagnostics,
|
|
441
|
+
trackingMaxEntries,
|
|
442
|
+
limitationPolicies,
|
|
443
|
+
autoMitigateRuntimeModeSwitch,
|
|
363
444
|
open,
|
|
364
445
|
close,
|
|
365
446
|
focus,
|
|
366
447
|
setItems,
|
|
367
448
|
setGroupedItems,
|
|
368
449
|
clear,
|
|
450
|
+
getCapabilities,
|
|
451
|
+
getKnownLimitations,
|
|
452
|
+
getTrackingSnapshot,
|
|
453
|
+
clearTracking,
|
|
454
|
+
setLimitationPolicies,
|
|
369
455
|
internalValue,
|
|
370
456
|
isControlled,
|
|
371
457
|
currentValue,
|
|
@@ -399,40 +485,69 @@ class Select extends SvelteComponent {
|
|
|
399
485
|
placement: 17,
|
|
400
486
|
className: 0,
|
|
401
487
|
style: 1,
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
488
|
+
classMap: 18,
|
|
489
|
+
clearable: 19,
|
|
490
|
+
clearSelectionOnClear: 20,
|
|
491
|
+
clearSearchOnClear: 21,
|
|
492
|
+
clearAriaLabel: 22,
|
|
493
|
+
clearIcon: 23,
|
|
494
|
+
optionRenderer: 24,
|
|
495
|
+
trackingEnabled: 25,
|
|
496
|
+
trackEvents: 26,
|
|
497
|
+
trackStyling: 27,
|
|
498
|
+
trackLimitations: 28,
|
|
499
|
+
emitDiagnostics: 29,
|
|
500
|
+
trackingMaxEntries: 30,
|
|
501
|
+
limitationPolicies: 31,
|
|
502
|
+
autoMitigateRuntimeModeSwitch: 32,
|
|
503
|
+
open: 33,
|
|
504
|
+
close: 34,
|
|
505
|
+
focus: 35,
|
|
506
|
+
setItems: 36,
|
|
507
|
+
setGroupedItems: 37,
|
|
508
|
+
clear: 38,
|
|
509
|
+
getCapabilities: 39,
|
|
510
|
+
getKnownLimitations: 40,
|
|
511
|
+
getTrackingSnapshot: 41,
|
|
512
|
+
clearTracking: 42,
|
|
513
|
+
setLimitationPolicies: 43
|
|
414
514
|
},
|
|
415
515
|
null,
|
|
416
516
|
[-1, -1]
|
|
417
517
|
);
|
|
418
518
|
}
|
|
419
519
|
get open() {
|
|
420
|
-
return this.$$.ctx[
|
|
520
|
+
return this.$$.ctx[33];
|
|
421
521
|
}
|
|
422
522
|
get close() {
|
|
423
|
-
return this.$$.ctx[
|
|
523
|
+
return this.$$.ctx[34];
|
|
424
524
|
}
|
|
425
525
|
get focus() {
|
|
426
|
-
return this.$$.ctx[
|
|
526
|
+
return this.$$.ctx[35];
|
|
427
527
|
}
|
|
428
528
|
get setItems() {
|
|
429
|
-
return this.$$.ctx[
|
|
529
|
+
return this.$$.ctx[36];
|
|
430
530
|
}
|
|
431
531
|
get setGroupedItems() {
|
|
432
|
-
return this.$$.ctx[
|
|
532
|
+
return this.$$.ctx[37];
|
|
433
533
|
}
|
|
434
534
|
get clear() {
|
|
435
|
-
return this.$$.ctx[
|
|
535
|
+
return this.$$.ctx[38];
|
|
536
|
+
}
|
|
537
|
+
get getCapabilities() {
|
|
538
|
+
return this.$$.ctx[39];
|
|
539
|
+
}
|
|
540
|
+
get getKnownLimitations() {
|
|
541
|
+
return this.$$.ctx[40];
|
|
542
|
+
}
|
|
543
|
+
get getTrackingSnapshot() {
|
|
544
|
+
return this.$$.ctx[41];
|
|
545
|
+
}
|
|
546
|
+
get clearTracking() {
|
|
547
|
+
return this.$$.ctx[42];
|
|
548
|
+
}
|
|
549
|
+
get setLimitationPolicies() {
|
|
550
|
+
return this.$$.ctx[43];
|
|
436
551
|
}
|
|
437
552
|
}
|
|
438
553
|
export {
|