Skip to content

Commit 6239950

Browse files
committed
feat(useSelection)!: renamed & improved useSelection (useGroupModel)
closes #168
1 parent e95c305 commit 6239950

File tree

20 files changed

+199
-176
lines changed

20 files changed

+199
-176
lines changed

docs/.vitepress/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ export default defineConfig({
101101
// { text: 'useSearch', link: '/guide/composables/useSearch' },
102102
// { text: 'useSort', link: '/guide/composables/useSort' },
103103
{ text: 'useAnu', link: '/guide/composables/useAnu' },
104-
{ text: 'useGroupModel', link: '/guide/composables/useGroupModel' },
104+
{ text: 'useSelection', link: '/guide/composables/useSelection' },
105105
{ text: 'useIndeterminateCheckbox', link: '/guide/composables/useIndeterminateCheckbox' },
106106
],
107107
},

docs/components/Api.vue

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<script lang="ts" setup>
22
import { unrefElement } from '@vueuse/core'
3-
import { useGroupModel, useSearch } from 'anu-vue'
3+
import { useSearch, useSelection } from 'anu-vue'
44
import { computed, onMounted, ref } from 'vue'
55
66
import type { ComponentApi } from '../../scripts/gen-component-meta'
@@ -35,15 +35,11 @@ const { results: filteredEvents } = useSearch(q, props.api.events, (q: string, e
3535
// !SECTION
3636
3737
// SECTION Tabs
38-
const tabs = ['props', 'slots', 'events']
39-
const { options: apiTabs, select, value: apiActiveTab } = useGroupModel({
40-
options: tabs,
38+
const { options: apiTabs, select, value: apiActiveTab } = useSelection({
39+
items: ['props', 'slots', 'events'],
40+
initialValue: 'props',
4141
})
4242
43-
// ℹ️ Set props as active tab. This is because ATM, useGroupModel does't support initial value.
44-
// Tracking: https://github.com/jd-solanki/anu/pull/77
45-
select(tabs[0] as string)
46-
4743
const foundNumbers = computed(() => ({
4844
props: filteredProps.value.length,
4945
slots: filteredSlots.value.length,

docs/components/demos/chip/DemoChipGroupModel.vue renamed to docs/components/demos/chip/DemoChipSelection.vue

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<script lang="ts" setup>
2-
import { useGroupModel } from 'anu-vue'
2+
import { useSelection } from 'anu-vue'
33
4-
const { options, select, value } = useGroupModel({
5-
options: [
4+
const { options, select, value } = useSelection({
5+
items: [
66
'VueJS',
77
'Pinia',
88
'Vue Router',
@@ -25,4 +25,3 @@ const { options, select, value } = useGroupModel({
2525
</AChip>
2626
</div>
2727
</template>
28-

docs/components/demos/composables/useGroupModel/DemoUseGroupModelBasic.vue renamed to docs/components/demos/composables/useSelection/DemoUseSelectionBasic.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<script setup lang="ts">
2-
import { useGroupModel } from 'anu-vue'
2+
import { useSelection } from 'anu-vue'
33
import { ref } from 'vue'
44
55
const isMultiEnabled = ref(false)
6-
const { options, select, value } = useGroupModel<string>({
7-
options: ['apple', 'banana', 'orange', 'watermelon'],
6+
const { options, select, value } = useSelection({
7+
items: ['apple', 'banana', 'orange', 'watermelon'],
88
multi: isMultiEnabled,
99
})
1010
</script>

docs/components/demos/composables/useGroupModel/DemoUseGroupModelIndexed.vue renamed to docs/components/demos/composables/useSelection/DemoUseSelectionIndexed.vue

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
<script lang="ts" setup>
2-
import { useGroupModel } from 'anu-vue'
3-
const { options, select, value } = useGroupModel({
4-
options: 3,
2+
import { numRange, useSelection } from 'anu-vue'
3+
4+
const { options, select, value } = useSelection({
5+
items: numRange(3),
56
})
67
</script>
78

docs/components/demos/composables/useGroupModel/DemoUseGroupModelObject.vue renamed to docs/components/demos/composables/useSelection/DemoUseSelectionObject.vue

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
<script lang="ts" setup>
2-
import { useGroupModel } from 'anu-vue'
2+
import { useSelection } from 'anu-vue'
33
4-
const { options, select, value } = useGroupModel({
5-
options: [
4+
const { options, select, value } = useSelection({
5+
items: [
66
{ title: 'Home', icon: 'i-bx-home' },
77
{ title: 'Categories', icon: 'i-bx-category' },
88
{ title: 'Cart', icon: 'i-bx-basket' },
99
{ title: 'Profile', icon: 'i-bx-user-circle' },
1010
],
11+
initialValue: { title: 'Home', icon: 'i-bx-home' },
1112
})
1213
</script>
1314

docs/guide/components/chip.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,13 @@ Use `append-icon` prop to render icon after default slot.
6363

6464
::::
6565

66-
<!-- 👉 UseGroupModel -->
67-
::::card UseGroupModel
66+
<!-- 👉 UseSelection -->
67+
::::card UseSelection
6868

69-
You can use [`useGroupModel`](/guide/composables/useGroupModel) composable to create a group of chips.
69+
You can use [`useSelection`](/guide/composables/useSelection) composable to create a group of chips.
7070

71-
:::code DemoChipGroupModel
72-
<<< @/components/demos/chip/DemoChipGroupModel.vue{4-12}
71+
:::code DemoChipSelection
72+
<<< @/components/demos/chip/DemoChipSelection.vue{4-12}
7373
:::
7474

7575
::::

docs/guide/components/list.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ If you are using `AListItem` in default slot of `AList` you can use `handleListI
9494

9595
::::after-demo
9696
:::tip
97-
For selection, `AList` uses [`useGroupModel`](/guide/composables/useGroupModel). Hence, you can also use the `multi` prop to allow multiple selection.
97+
For selection, `AList` uses [`useSelection`](/guide/composables/useSelection). Hence, you can also use the `multi` prop to allow multiple selection.
9898
:::
9999
::::
100100

docs/guide/composables/useGroupModel.md

Lines changed: 0 additions & 36 deletions
This file was deleted.
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# `useSelection`
2+
3+
<!-- 👉 Basic -->
4+
::::card Basic
5+
6+
`useSelection` allows you to create `v-model` like binding for a group.
7+
8+
You can use `multi` property to enable selecting multiple values from options.
9+
10+
:::code DemoUseSelectionBasic
11+
<<< @/components/demos/composables/useSelection/DemoUseSelectionBasic.vue{6-9}
12+
:::
13+
14+
::::
15+
16+
<!-- 👉 Indexed -->
17+
::::card Indexed
18+
19+
You can also create options without predefined value. Pass any positive number to `options` property and it will create index based options.
20+
21+
:::code DemoUseSelectionIndexed
22+
<<< @/components/demos/composables/useSelection/DemoUseSelectionIndexed.vue{4}
23+
:::
24+
25+
::::
26+
27+
<!-- 👉 Object -->
28+
::::card Object
29+
30+
description
31+
32+
:::code DemoUseSelectionObject
33+
<<< @/components/demos/composables/useSelection/DemoUseSelectionObject.vue{4-11}
34+
:::
35+
36+
::::

0 commit comments

Comments
 (0)