Making picker sorting optional and default to off. Sort by default for client apps

This commit is contained in:
Andrew Kingston 2021-08-20 10:03:21 +01:00
parent 11dc516b26
commit cb46e763d3
10 changed files with 20 additions and 2 deletions

View File

@ -12,6 +12,7 @@
export let getOptionValue = option => option export let getOptionValue = option => option
export let readonly = false export let readonly = false
export let autocomplete = false export let autocomplete = false
export let sort = false
const dispatch = createEventDispatcher() const dispatch = createEventDispatcher()
$: selectedLookupMap = getSelectedLookupMap(value) $: selectedLookupMap = getSelectedLookupMap(value)
@ -83,4 +84,5 @@
{getOptionLabel} {getOptionLabel}
{getOptionValue} {getOptionValue}
onSelectOption={toggleOption} onSelectOption={toggleOption}
{sort}
/> />

View File

@ -25,11 +25,12 @@
export let quiet = false export let quiet = false
export let autoWidth = false export let autoWidth = false
export let autocomplete = false export let autocomplete = false
export let sort = false
const dispatch = createEventDispatcher() const dispatch = createEventDispatcher()
let searchTerm = null let searchTerm = null
$: sortedOptions = getSortedOptions(options, getOptionLabel) $: sortedOptions = getSortedOptions(options, getOptionLabel, sort)
$: filteredOptions = getFilteredOptions( $: filteredOptions = getFilteredOptions(
sortedOptions, sortedOptions,
searchTerm, searchTerm,
@ -45,10 +46,13 @@
open = true open = true
} }
const getSortedOptions = (options, getLabel) => { const getSortedOptions = (options, getLabel, sort) => {
if (!options?.length || !Array.isArray(options)) { if (!options?.length || !Array.isArray(options)) {
return [] return []
} }
if (!sort) {
return options
}
return options.sort((a, b) => { return options.sort((a, b) => {
const labelA = getLabel(a) const labelA = getLabel(a)
const labelB = getLabel(b) const labelB = getLabel(b)

View File

@ -15,6 +15,7 @@
export let quiet = false export let quiet = false
export let autoWidth = false export let autoWidth = false
export let autocomplete = false export let autocomplete = false
export let sort = false
const dispatch = createEventDispatcher() const dispatch = createEventDispatcher()
let open = false let open = false
@ -72,6 +73,7 @@
{getOptionIcon} {getOptionIcon}
{fieldIcon} {fieldIcon}
{autocomplete} {autocomplete}
{sort}
isPlaceholder={value == null || value === ""} isPlaceholder={value == null || value === ""}
placeholderOption={placeholder} placeholderOption={placeholder}
isOptionSelected={option => option === value} isOptionSelected={option => option === value}

View File

@ -13,6 +13,7 @@
export let options = [] export let options = []
export let getOptionLabel = option => option export let getOptionLabel = option => option
export let getOptionValue = option => option export let getOptionValue = option => option
export let sort = false
const dispatch = createEventDispatcher() const dispatch = createEventDispatcher()
const onChange = e => { const onChange = e => {
@ -29,6 +30,7 @@
{value} {value}
{options} {options}
{placeholder} {placeholder}
{sort}
{getOptionLabel} {getOptionLabel}
{getOptionValue} {getOptionValue}
on:change={onChange} on:change={onChange}

View File

@ -16,6 +16,7 @@
export let getOptionIcon = option => option?.icon export let getOptionIcon = option => option?.icon
export let quiet = false export let quiet = false
export let autoWidth = false export let autoWidth = false
export let sort = false
const dispatch = createEventDispatcher() const dispatch = createEventDispatcher()
const onChange = e => { const onChange = e => {
@ -41,6 +42,7 @@
{options} {options}
{placeholder} {placeholder}
{autoWidth} {autoWidth}
{sort}
{getOptionLabel} {getOptionLabel}
{getOptionValue} {getOptionValue}
{getOptionIcon} {getOptionIcon}

View File

@ -19,6 +19,7 @@
data-cy="{meta.name}-select" data-cy="{meta.name}-select"
bind:value bind:value
options={meta.constraints.inclusion} options={meta.constraints.inclusion}
sort
/> />
{:else if type === "datetime"} {:else if type === "datetime"}
<DatePicker {label} bind:value /> <DatePicker {label} bind:value />

View File

@ -153,6 +153,7 @@
label="Display Column" label="Display Column"
bind:value={primaryDisplay} bind:value={primaryDisplay}
options={fields} options={fields}
sort
/> />
</div> </div>
{/if} {/if}

View File

@ -47,6 +47,7 @@
getOptionValue={row => row._id} getOptionValue={row => row._id}
on:change={e => (linkedIds = e.detail ? [e.detail] : [])} on:change={e => (linkedIds = e.detail ? [e.detail] : [])}
{label} {label}
sort
/> />
{:else} {:else}
<Multiselect <Multiselect
@ -55,5 +56,6 @@
options={rows} options={rows}
getOptionLabel={getPrettyName} getOptionLabel={getPrettyName}
getOptionValue={row => row._id} getOptionValue={row => row._id}
sort
/> />
{/if} {/if}

View File

@ -87,6 +87,7 @@
getOptionLabel={flatOptions ? x => x : x => x.label} getOptionLabel={flatOptions ? x => x : x => x.label}
getOptionValue={flatOptions ? x => x : x => x.value} getOptionValue={flatOptions ? x => x : x => x.value}
{autocomplete} {autocomplete}
sort={true}
/> />
{:else if optionsType === "radio"} {:else if optionsType === "radio"}
<CoreRadioGroup <CoreRadioGroup

View File

@ -87,6 +87,7 @@
getOptionLabel={getDisplayName} getOptionLabel={getDisplayName}
getOptionValue={option => option._id} getOptionValue={option => option._id}
{placeholder} {placeholder}
sort={true}
/> />
{/if} {/if}
</Field> </Field>