feat: replace all select dropdowns with IconGridSelect, fix EN template seed
Shared grid-items.ts with reusable item definitions for: sort by/order, album mode, asset type, memory source, locale, response mode, event type filter, chat action, preview target type, provider type. Replaced selects on: - Dashboard: event type, provider, sort (compact mode — auto-width) - Tracking configs: sort by/order, album modes, asset types, memory source - Command configs: locale, response mode, provider type - Targets: chat action - Template configs: preview target type, provider type - Command template configs: provider type - Providers: type selector (read-only during edit) IconGridSelect: added compact prop for inline filter bars (auto-width, smaller padding, shows icon + label text). Backend: template seed now re-creates deleted system templates on startup using raw SQL to handle legacy NOT NULL columns. Added i18n: trackingConfig.providerType, trackingConfig.sortRandom Added provider_type badge to tracking config cards.
This commit is contained in:
@@ -14,12 +14,14 @@
|
||||
placeholder = 'Select...',
|
||||
columns = 2,
|
||||
disabled = false,
|
||||
compact = false,
|
||||
}: {
|
||||
items: GridItem[];
|
||||
value: string | number | null;
|
||||
placeholder?: string;
|
||||
columns?: number;
|
||||
disabled?: boolean;
|
||||
compact?: boolean;
|
||||
} = $props();
|
||||
|
||||
let open = $state(false);
|
||||
@@ -58,16 +60,16 @@
|
||||
<svelte:window onkeydown={open ? handleKeydown : undefined} />
|
||||
|
||||
<button type="button" bind:this={triggerEl} onclick={toggle}
|
||||
class="icon-grid-trigger"
|
||||
class="icon-grid-trigger {compact ? 'icon-grid-compact' : ''}"
|
||||
class:disabled
|
||||
style="opacity: {disabled ? 0.5 : 1}; cursor: {disabled ? 'default' : 'pointer'};">
|
||||
{#if selected}
|
||||
<span class="icon-grid-trigger-icon"><MdiIcon name={selected.icon} size={18} /></span>
|
||||
<span class="icon-grid-trigger-icon"><MdiIcon name={selected.icon} size={compact ? 14 : 18} /></span>
|
||||
<span class="icon-grid-trigger-label">{selected.label}</span>
|
||||
{:else}
|
||||
<span class="icon-grid-trigger-label" style="color: var(--color-muted-foreground);">{placeholder}</span>
|
||||
{/if}
|
||||
<span class="icon-grid-trigger-arrow"><MdiIcon name="mdiChevronDown" size={14} /></span>
|
||||
<span class="icon-grid-trigger-arrow"><MdiIcon name="mdiChevronDown" size={compact ? 10 : 14} /></span>
|
||||
</button>
|
||||
|
||||
{#if open}
|
||||
@@ -113,6 +115,15 @@
|
||||
.icon-grid-trigger:hover:not(.disabled) {
|
||||
border-color: var(--color-primary);
|
||||
}
|
||||
.icon-grid-compact {
|
||||
width: auto;
|
||||
padding: 0.3rem 0.5rem;
|
||||
gap: 0.3rem;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
.icon-grid-compact .icon-grid-trigger-label {
|
||||
flex: none;
|
||||
}
|
||||
.icon-grid-trigger-icon {
|
||||
flex-shrink: 0;
|
||||
color: var(--color-primary);
|
||||
|
||||
Reference in New Issue
Block a user