Appearance
MultiDropdown
Basic
MultiDropdown은 선택한 아이템의 양방향 바인딩을 위해 v-model 로 함께 사용됩니다. 선택된 값이 없다면 label-when-no-checked의 내용이 표시됩니다. MultiDropdown을 선택하면 MultiMenu 가 표시됩니다.
선택된 Item 없음
vue
<script setup lang="ts">
import { MultiDropdown } from '@jennifersoft/vue-components-v2';
const items = [
{ label: 'argo-rollouts', value: 'argo-rollouts' },
{ label: 'argocd', value: 'argocd' },
{ label: 'default', value: 'default' },
{ label: 'java-demo', value: 'java-demo' },
{ label: 'jennifer', value: 'jennifer' },
{ label: 'kube-node-lease', value: 'kube-node-lease' },
{ label: 'kube-public', value: 'kube-public' },
{ label: 'newrelic', value: 'newrelic' },
];
const checkedValues = ref([]);
</script>
<template>
<multi-dropdown
class="w-60"
v-model="checkedValues"
:items="items"
label-when-no-checked="선택된 Item 없음"
/>
</template>
쿠버네티스 사용 예시
쿠버네티스에서 네임스페이스를 선택할때 사용 예시입니다 FloatLabel 도 같이 사용 했습니다
모든 네임스페이스
vue
<script setup lang="ts">
import {
Btn,
MultiDropdown,
EmptyMenuContainer,
Badge,
InputSearch,
ICON_TYPE,
SvgIcon,
FloatLabel,
} from '@jennifersoft/vue-components-v2';
const items = [
{ label: 'argo-rollouts', value: 'argo-rollouts' },
{ label: 'argocd', value: 'argocd' },
{ label: 'default', value: 'default' },
{ label: 'java-demo', value: 'java-demo' },
{ label: 'jennifer', value: 'jennifer' },
{ label: 'kube-node-lease', value: 'kube-node-lease' },
{ label: 'kube-public', value: 'kube-public' },
{ label: 'newrelic', value: 'newrelic' },
];
const checkedValues = ref([]);
const search = ref();
const filteredItems = computed(() => {
const searchKeyword = search.value;
return searchKeyword === undefined || searchKeyword === ''
? items
: items.filter((item) => item.label.includes(search.value));
});
const clearChecked = () => {
checkedValues.value = [];
};
</script>
<template>
<float-label :fixed="true" position="on">
<multi-dropdown
class="w-60"
id="namespace"
v-model="checkedValues"
:items="filteredItems"
label-when-no-checked="모든 네임스페이스"
>
<template #left>
<svg-icon :width="18" :height="18" :icon="ICON_TYPE.guid" />
</template>
<template #top-of-menu-container>
<empty-menu-container>
<btn
type="text"
text="네임스페이스 선택 초기화"
@click="clearChecked()"
/>
</empty-menu-container>
<empty-menu-container>
<input-search
class="w-full"
type="plain"
v-model="search"
placeholder="네임스페이스 검색"
/>
</empty-menu-container>
</template>
</multi-dropdown>
<label for="namespace">네임스페이스</label>
</float-label>
</template>