This commit is contained in:
vasu
2023-06-19 19:33:05 +05:30
parent b17b71cd0e
commit a8f990395d
8 changed files with 131 additions and 13 deletions

View File

@@ -1,13 +1,79 @@
<script setup> <script setup>
import DefaultRange from './range/examples/DefaultRange.vue' import DefaultRange from './range/examples/DefaultRange.vue'
import DisabledRange from './range/examples/DisabledRange.vue'
import MinMaxRange from './range/examples/MinMaxRange.vue'
import StepsRange from './range/examples/StepsRange.vue'
import SizeRange from './range/examples/SizeRange.vue'
</script> </script>
# Vue Toggle Range - Flowbite
#### Get started with the range component to receive a number from the user anywhere from 1 to 100 by sliding form control horizontally based on multiple options
---
:::tip
Original reference: [https://flowbite.com/docs/forms/range/](https://flowbite.com/docs/forms/range/)
:::
## Default ## Default
```vue ```vue
<template> <template>
<Range /> <Range v-model="value" />
</template> </template>
<script setup>
import Range from 'flowbite-vue'
import { ref } from 'vue'
const value = ref(10)
</script>
``` ```
<DefaultRange /> <DefaultRange />
## Disabled state
```vue
<template>
<Range v-model="value" label="Disabled range" :disabled="true" />
</template>
</script>
```
<DisabledRange />
## Min and Max
```vue
<template>
<Range v-model="value" label="Min-max range" :min="0" :max="10" />
</template>
```
<MinMaxRange />
## Steps
```vue
<template>
<Range v-model="value" label="Steps range" :steps="5" />
</template>
```
<StepsRange />
## Sizes
```vue
<template>
<div>
<Range v-model="value1" label="Small range" size="sm" />
<Range v-model="value2" label="Medium range" size="md" />
<Range v-model="value3" label="Large range" size="lg" />
</div>
</template>
```
<SizeRange />

View File

@@ -1,11 +1,6 @@
<template> <template>
<div> <div>
<Range v-model="value" :steps="5" :size="lg" /> <Range v-model="value" />
<Range v-model="value" :steps="5" :disabled="true" />
<Range v-model="value" :steps="5" size="sm" />
<Range v-model="value" :steps="5" size="md" />
<Range v-model="value" :steps="5" size="lg" />
{{ value }}
</div> </div>
</template> </template>

View File

@@ -0,0 +1,12 @@
<template>
<div>
<Range v-model="value" label="Disabled range" :disabled="true" />
</div>
</template>
<script setup>
import Range from '../../../../src/components/Range/Range.vue'
import { ref } from 'vue'
const value = ref(10)
</script>

View File

@@ -0,0 +1,12 @@
<template>
<div>
<Range v-model="value" label="Min-max range" :min="0" :max="10" />
</div>
</template>
<script setup>
import Range from '../../../../src/components/Range/Range.vue'
import { ref } from 'vue'
const value = ref(10)
</script>

View File

@@ -0,0 +1,16 @@
<template>
<div class="flex flex-col gap-3">
<Range v-model="value1" label="Small range" size="sm" />
<Range v-model="value2" label="Medium range" size="md" />
<Range v-model="value3" label="Large range" size="lg" />
</div>
</template>
<script setup>
import Range from '../../../../src/components/Range/Range.vue'
import { ref } from 'vue'
const value1 = ref(10)
const value2 = ref(10)
const value3 = ref(10)
</script>

View File

@@ -0,0 +1,12 @@
<template>
<div>
<Range v-model="value" label="Steps range" :steps="5" />
</div>
</template>
<script setup>
import Range from '../../../../src/components/Range/Range.vue'
import { ref } from 'vue'
const value = ref(10)
</script>

View File

@@ -1,26 +1,31 @@
<template> <template>
<div> <div>
<label for="default-range" :class="labelClasses">Default range</label> <label for="default-range" :class="labelClasses">{{ label }}</label>
<input :step="steps" v-model="model" :disabled="disabled" id="default-range" type="range" :class="rangeClasses"> <input :step="steps" v-model="model" :min="min" :max="max" :disabled="disabled" id="default-range" type="range" :class="rangeClasses">
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { computed, toRefs } from 'vue' import { computed, toRefs } from 'vue'
import { useRangeClasses } from './composables/useRangeClasses' import { useRangeClasses } from './composables/useRangeClasses'
import type { InputSize } from '@/components/Input/types'
interface RangeProps { interface RangeProps {
modelValue?: number; modelValue?: number;
label?: ''; label?: string;
disabled?: boolean; disabled?: boolean;
size?: string; min?: number;
max?: number;
size?: InputSize;
steps?: number; steps?: number;
} }
const props = withDefaults(defineProps<RangeProps>(), { const props = withDefaults(defineProps<RangeProps>(), {
modelValue: 50, modelValue: 50,
label: '', label: 'Range slider',
disabled: false, disabled: false,
min: 0,
max: 100,
size: 'md', size: 'md',
steps: 1, steps: 1,
}) })

View File

@@ -14,8 +14,8 @@ const rangeSizeClasses: Record<InputSize, string> = {
} }
export type UseRangeClassesProps = { export type UseRangeClassesProps = {
disabled: Ref<boolean>
size: Ref<InputSize> size: Ref<InputSize>
disabled: Ref<boolean>
} }
export function useRangeClasses(props: UseRangeClassesProps) { export function useRangeClasses(props: UseRangeClassesProps) {