浏览代码

fix: Global filter cannot be modified in the model (changes have no effect)

hurxxxx 2 月之前
父节点
当前提交
851931fdf6

+ 5 - 1
src/lib/components/common/Checkbox.svelte

@@ -4,6 +4,7 @@
 
 	export let state = 'unchecked';
 	export let indeterminate = false;
+	export let enabled = true;
 
 	let _state = 'unchecked';
 
@@ -14,8 +15,10 @@
 	class=" outline -outline-offset-1 outline-[1.5px] outline-gray-200 dark:outline-gray-600 {state !==
 	'unchecked'
 		? 'bg-black outline-black '
-		: 'hover:outline-gray-500 hover:bg-gray-50 dark:hover:bg-gray-800'} text-white transition-all rounded-sm inline-block w-3.5 h-3.5 relative"
+		: 'hover:outline-gray-500 hover:bg-gray-50 dark:hover:bg-gray-800'} text-white transition-all rounded-sm inline-block w-3.5 h-3.5 relative {!enabled ? 'opacity-50 cursor-not-allowed' : ''}"
 	on:click={() => {
+		if (!enabled) return;
+		
 		if (_state === 'unchecked') {
 			_state = 'checked';
 			dispatch('change', _state);
@@ -30,6 +33,7 @@
 		}
 	}}
 	type="button"
+	disabled={!enabled}
 >
 	<div class="top-0 left-0 absolute w-full flex justify-center">
 		{#if _state === 'checked'}

+ 6 - 3
src/lib/components/workspace/Models/FiltersSelector.svelte

@@ -39,10 +39,13 @@
 					<div class=" flex items-center gap-2 mr-3">
 						<div class="self-center flex items-center">
 							<Checkbox
-								state={_filters[filter].selected ? 'checked' : 'unchecked'}
+								state={_filters[filter].is_global ? 'checked' : (_filters[filter].selected ? 'checked' : 'unchecked')}
+								enabled={!_filters[filter].is_global}
 								on:change={(e) => {
-									_filters[filter].selected = e.detail === 'checked';
-									selectedFilterIds = Object.keys(_filters).filter((t) => _filters[t].selected);
+									if (!_filters[filter].is_global) {
+										_filters[filter].selected = e.detail === 'checked';
+										selectedFilterIds = Object.keys(_filters).filter((t) => _filters[t].selected);
+									}
 								}}
 							/>
 						</div>