Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
98d6c7a
wip
duncanmcclean Feb 4, 2026
5d8863d
wip
duncanmcclean Feb 4, 2026
4237342
wip
duncanmcclean Feb 4, 2026
6157dad
tidy up
duncanmcclean Feb 4, 2026
409fe91
dark mode disabled styling
duncanmcclean Feb 4, 2026
bde614e
don't need a min-height now we have a max-height
duncanmcclean Feb 5, 2026
f597936
wip
duncanmcclean Feb 5, 2026
4496fd8
clear search query when closing dropdown
duncanmcclean Feb 5, 2026
3069ec0
wip
duncanmcclean Feb 5, 2026
b2fe2c1
wip
duncanmcclean Feb 5, 2026
e9d5716
fix option hover state
duncanmcclean Feb 5, 2026
f0ad342
fix typing space in search term
duncanmcclean Feb 5, 2026
5094246
focus input if its available, otherwise focus the trigger
duncanmcclean Feb 5, 2026
14a5982
wip
duncanmcclean Feb 5, 2026
56624db
truncate text
duncanmcclean Feb 5, 2026
4d4215e
keyboard navigation should start from selected option
duncanmcclean Feb 5, 2026
6f2dc28
accessibility improvements
duncanmcclean Feb 5, 2026
9992939
add opt-in for adaptive widths
duncanmcclean Feb 5, 2026
264711f
reorder props and tweak descriptions
duncanmcclean Feb 5, 2026
959b2ba
Merge branch '6.x' into combobox-2-0
duncanmcclean Feb 6, 2026
3ba80b7
add combobox story & tests
duncanmcclean Feb 6, 2026
f06b37e
update select component story to better mirror combobox
duncanmcclean Feb 6, 2026
3a29e6d
wip
duncanmcclean Feb 6, 2026
706d4cc
fix icon
duncanmcclean Feb 6, 2026
7d49995
grabbing cursors
duncanmcclean Feb 6, 2026
86c9281
Merge branch '6.x' into combobox-2-0
duncanmcclean Feb 12, 2026
cd22a97
taggable fixes
duncanmcclean Feb 12, 2026
54b0e84
wip
duncanmcclean Feb 12, 2026
1b35468
actually, remove props preventing reka from doing this
duncanmcclean Feb 13, 2026
8581ee7
Fix relationship typeahead...
duncanmcclean Feb 13, 2026
a6ba36e
Merge remote-tracking branch 'origin/6.x' into combobox-2-0
duncanmcclean Feb 16, 2026
4a81f90
revert 1b35468a. reka seems to behave slightly differently and it bre…
duncanmcclean Feb 16, 2026
a525c25
Merge remote-tracking branch 'origin/6.x' into combobox-2-0
duncanmcclean Feb 17, 2026
819e0f9
wip
duncanmcclean Feb 17, 2026
e47ae87
Fix dropdown z-index
duncanmcclean Feb 17, 2026
bc78018
Code editor mode select should have adaptive width.
duncanmcclean Feb 17, 2026
659ecb3
Merge branch '6.x' into combobox-2-0
duncanmcclean Feb 27, 2026
487e95d
Merge branch '6.x' into combobox-2-0
duncanmcclean Mar 10, 2026
5c6a6c3
Only use Fuzzysort for search. We want to retain the original order.
duncanmcclean Mar 10, 2026
495b3df
Merge branch '6.x' into combobox-2-0
duncanmcclean Mar 11, 2026
e50b4a9
Merge branch '6.x' into combobox-2-0
duncanmcclean Mar 13, 2026
944a192
truncate selected option text in relationship select
duncanmcclean Mar 13, 2026
744d428
Merge branch '6.x' into combobox-2-0
duncanmcclean Mar 24, 2026
0632b95
Merge branch '6.x' into combobox-2-0
duncanmcclean Apr 8, 2026
cf194da
fix tags fieldtype
duncanmcclean Apr 8, 2026
2248ef5
fix placeholder text colour
duncanmcclean Apr 8, 2026
85254c2
handle null value on paste
duncanmcclean Apr 8, 2026
f417b3d
remove unused parameter
duncanmcclean Apr 8, 2026
6143937
not recommended for large datasets
duncanmcclean Apr 8, 2026
aa74cb0
Merge branch '6.x' into combobox-2-0
duncanmcclean Apr 17, 2026
e8a2860
avoid input event being cancelled when typing space in combobox input
duncanmcclean Apr 17, 2026
716beaa
don't break openDropdown w/ other triggers
duncanmcclean Apr 17, 2026
2c1c82c
don't let shouldOpenDropdown block closing the dropdown
jasonvarga Apr 17, 2026
b77a16f
use getOptionValue when deselecting so custom optionValue works
jasonvarga Apr 17, 2026
6ae42a8
drop unused arg from select handler
jasonvarga Apr 17, 2026
c1a7dc3
drop no-op .prevent modifier from blur handler
jasonvarga Apr 17, 2026
5f052db
assert clear button is disabled in disabled-state story
jasonvarga Apr 17, 2026
34fcac4
honor optionLabel/optionValue in selectedOptions fallback
jasonvarga Apr 17, 2026
748d8e3
hoist :by callback so it's stable across renders
jasonvarga Apr 17, 2026
9ccf738
use `in` operator instead of dataset.hasOwnProperty in onBlur
jasonvarga Apr 17, 2026
da554f4
delegate scroll-to-selected to reka's highlightSelected
jasonvarga Apr 17, 2026
b8f8a1b
drop unused viewportRef
jasonvarga Apr 17, 2026
76d5d71
allow pasting search text in non-taggable comboboxes
jasonvarga Apr 17, 2026
5c7f2b4
guard triggerRef access in select handler
jasonvarga Apr 17, 2026
2eed55a
honor explicit close-on-select=false on single-select comboboxes
jasonvarga Apr 17, 2026
5fced88
don't remount the virtualizer on every selection change
jasonvarga Apr 17, 2026
f0c41f6
key ComboboxItem on disabled state to work around reka v-memo bug
jasonvarga Apr 17, 2026
de6b25e
convert tab indentation to spaces in touched files
jasonvarga Apr 17, 2026
a9c6a30
wip
jasonvarga Apr 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .storybook/preview.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {router} from '@inertiajs/vue3';
import {action} from 'storybook/actions';
import './storybook.css';
import './theme.css';
import {translate} from '@/translations/translator';
import {translate, translateChoice} from '@/translations/translator';
import registerUiComponents from '@/bootstrap/ui';
import DateFormatter from '@/components/DateFormatter';
import NumberFormatter from '@/components/NumberFormatter';
Expand All @@ -25,6 +25,7 @@ router.on('before', (event) => {

setup(async (app) => {
window.__ = translate;
window.__n = translateChoice;

window.Statamic = {
$config: {
Expand Down Expand Up @@ -63,6 +64,7 @@ setup(async (app) => {
};

app.config.globalProperties.__ = translate;
app.config.globalProperties.__n = translateChoice;
app.config.globalProperties.$date = new DateFormatter;
app.config.globalProperties.$number = new NumberFormatter;
app.config.globalProperties.cp_url = (url) => url;
Expand Down
2 changes: 2 additions & 0 deletions .storybook/storybook.css
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
@custom-variant dark (&:where(.dark, .dark *));

:root {
--focus-outline-color: var(--color-blue-400);

/* GROUP VARIABLES -- DECORATION -- COLOURS
=================================================== */
--color-code-background: hsl(287deg 80% 93.5%);
Expand Down
2 changes: 2 additions & 0 deletions resources/js/components/SiteSelector.vue
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ defineEmits(['update:modelValue']);
:options="sites"
option-label="name"
option-value="handle"
align="end"
:adaptive-width="true"
:model-value="modelValue"
@update:model-value="$emit('update:modelValue', $event)"
/>
Expand Down
6 changes: 3 additions & 3 deletions resources/js/components/field-conditions/Condition.vue
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@
<template #no-options><div class="hidden" /></template>
<template #option="option">
<div class="flex items-center">
<span v-text="option.label" />
<span class="flex-shrink-0 truncate" v-text="option.label" />
<span
v-text="option.value"
class="font-mono text-2xs text-gray-500 dark:text-gray-300"
class="font-mono text-2xs text-gray-500 dark:text-gray-300 truncate"
:class="{ 'ml-2': option.label }"
/>
</div>
Expand All @@ -29,7 +29,7 @@
</Combobox>
</div>

<div class="w-auto min-w-32">
<div class="w-auto min-w-40">
<Select
class="w-full"
:model-value="condition.operator"
Expand Down
6 changes: 3 additions & 3 deletions resources/js/components/field-validation/Builder.vue
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@
<button
type="button"
class="opacity-75 hover:opacity-100 cursor-pointer"
:aria-label="__('Deselect option')"
:aria-label="__('Remove :label', { label: rule })"
@click="remove(rule)"
>
&times;
Expand Down Expand Up @@ -236,6 +236,8 @@ export default {
if (!this.rules.includes(rule)) {
this.rules.push(rule);
}

this.$nextTick(() => this.$refs.rulesSelect.focus());
},

add(rule) {
Expand All @@ -258,8 +260,6 @@ export default {
if (this.searchNotFound(rulesSelect) || this.hasUnfinishedParameters(rule)) return;

this.add(rule);

this.$nextTick(() => this.$refs.searchInput.blur());
},

remove(rule) {
Expand Down
14 changes: 5 additions & 9 deletions resources/js/components/fieldtypes/DictionaryFieldtype.vue
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
<div
v-for="option in selectedOptions"
:key="getOptionValue(option)"
class="sortable-item cursor-grab"
class="sortable-item cursor-grab active:cursor-grabbing"
>
<Badge size="lg" color="white">
<div v-if="labelHtml" v-html="getOptionLabel(option)"></div>
Expand All @@ -43,18 +43,14 @@
v-if="!disabled && !readOnly"
type="button"
class="-mx-3 cursor-pointer px-3 text-gray-400 hover:text-gray-700"
:aria-label="__('Deselect option')"
@click="deselect(option.value)"
:aria-label="__('Remove :label', { label: getOptionLabel(option) })"
@click="deselect(getOptionValue(option))"
>
<span>&times;</span>
</button>
<button
v-else
type="button"
class="-mx-3 cursor-pointer px-3 text-gray-400 hover:text-gray-700"
>
<span v-else class="-mx-3 cursor-pointer px-3 text-gray-400 hover:text-gray-700">
<span>&times;</span>
</button>
</span>
</Badge>
</div>
</div>
Expand Down
3 changes: 2 additions & 1 deletion resources/js/components/fieldtypes/SelectFieldtype.vue
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<template>
<Combobox
:id="id"
:clearable="config.clearable"
:disabled="config.disabled"
:label-html="config.label_html"
Expand All @@ -11,7 +12,7 @@
:read-only="isReadOnly"
:searchable="config.searchable || config.taggable"
:taggable="config.taggable"
:id="id"
:close-on-select="(config.taggable && !options.length) || !config.multiple"
@update:modelValue="comboboxUpdated"
/>
</template>
Expand Down
1 change: 1 addition & 0 deletions resources/js/components/fieldtypes/TagsFieldtype.vue
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
:placeholder="__(config.placeholder)"
:read-only="isReadOnly"
:taggable="true"
:should-open-dropdown="(open) => open && options.length > 0"
@update:modelValue="update"
/>
</template>
Expand Down
2 changes: 2 additions & 0 deletions resources/js/components/global-header/SiteSelector.vue
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
size="sm"
variant="ghost"
icon="globe-arrow"
align="end"
:adaptive-width="true"
class="[&_[data-ui-combobox-trigger]]:text-white/85"
/>
</div>
Expand Down
3 changes: 2 additions & 1 deletion resources/js/components/inputs/relationship/SelectField.vue
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
:placeholder="__(config.placeholder) || __('Choose...')"
:read-only="readOnly"
:taggable="isTaggable"
:close-on-select="isTaggable"
option-label="title"
option-value="id"
@update:modelValue="itemsSelected"
Expand All @@ -27,7 +28,7 @@
<div v-text="noOptionsText" />
</template>
<template #selected-option>
<span v-if="items.length === 1" v-text="items[0].title"></span>
<span v-if="items.length === 1" v-text="items[0].title" class="truncate"></span>
</template>
<template #selected-options>
<!-- We don't want to display the selected options here. The RelationshipInput component does that for us. -->
Expand Down
2 changes: 2 additions & 0 deletions resources/js/components/ui/CodeEditor.vue
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,7 @@ watch(
v-if="allowModeSelection"
:options="modes"
:disabled="disabled"
:adaptive-width="true"
:model-value="mode"
@update:modelValue="$emit('update:mode', $event)"
/>
Expand All @@ -305,6 +306,7 @@ watch(
v-if="allowModeSelection"
:options="modes"
:disabled="disabled"
:adaptive-width="true"
:model-value="mode"
searchable
@update:modelValue="$emit('update:mode', $event)"
Expand Down
Loading
Loading