-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
b3149f1
commit bc3a22b
Showing
7 changed files
with
116 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
<script setup lang="ts"> | ||
import { type HTMLAttributes, computed } from 'vue' | ||
import { PinInputRoot, type PinInputRootEmits, type PinInputRootProps, useForwardPropsEmits } from 'radix-vue' | ||
import { cn } from '@/lib/utils' | ||
const props = withDefaults(defineProps<PinInputRootProps & { class?: HTMLAttributes['class'] }>(), { | ||
modelValue: () => [], | ||
}) | ||
const emits = defineEmits<PinInputRootEmits>() | ||
const delegatedProps = computed(() => { | ||
const { class: _, ...delegated } = props | ||
return delegated | ||
}) | ||
const forwarded = useForwardPropsEmits(delegatedProps, emits) | ||
</script> | ||
|
||
<template> | ||
<PinInputRoot v-bind="forwarded" :class="cn('flex gap-2 items-center', props.class)"> | ||
<slot /> | ||
</PinInputRoot> | ||
</template> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
<script setup lang="ts"> | ||
import { type HTMLAttributes, computed } from 'vue' | ||
import { Primitive, type PrimitiveProps, useForwardProps } from 'radix-vue' | ||
import { cn } from '@/lib/utils' | ||
const props = defineProps<PrimitiveProps & { class?: HTMLAttributes['class'] }>() | ||
const delegatedProps = computed(() => { | ||
const { class: _, ...delegated } = props | ||
return delegated | ||
}) | ||
const forwardedProps = useForwardProps(delegatedProps) | ||
</script> | ||
|
||
<template> | ||
<Primitive v-bind="forwardedProps" :class="cn('flex items-center', props.class)"> | ||
<slot /> | ||
</primitive> | ||
</template> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
<script setup lang="ts"> | ||
import { type HTMLAttributes, computed } from 'vue' | ||
import { PinInputInput, type PinInputInputProps, useForwardProps } from 'radix-vue' | ||
import { cn } from '@/lib/utils' | ||
const props = defineProps<PinInputInputProps & { class?: HTMLAttributes['class'] }>() | ||
const delegatedProps = computed(() => { | ||
const { class: _, ...delegated } = props | ||
return delegated | ||
}) | ||
const forwardedProps = useForwardProps(delegatedProps) | ||
</script> | ||
|
||
<template> | ||
<PinInputInput v-bind="forwardedProps" :class="cn('relative text-center focus:outline-none focus:ring-2 focus:ring-ring focus:relative focus:z-10 flex h-9 w-9 items-center justify-center border-y border-r border-input text-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md', props.class)" /> | ||
</template> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
<script setup lang="ts"> | ||
import { Primitive, type PrimitiveProps, useForwardProps } from 'radix-vue' | ||
import { DashIcon } from '@radix-icons/vue' | ||
const props = defineProps<PrimitiveProps>() | ||
const forwardedProps = useForwardProps(props) | ||
</script> | ||
|
||
<template> | ||
<Primitive v-bind="forwardedProps"> | ||
<slot> | ||
<DashIcon /> | ||
</slot> | ||
</primitive> | ||
</template> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
export { default as PinInput } from './PinInput.vue' | ||
export { default as PinInputGroup } from './PinInputGroup.vue' | ||
export { default as PinInputSeparator } from './PinInputSeparator.vue' | ||
export { default as PinInputInput } from './PinInputInput.vue' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,35 @@ | ||
<script setup lang="ts"> | ||
import { ref } from 'vue' | ||
import { | ||
PinInput, | ||
PinInputGroup, | ||
PinInputInput, | ||
PinInputSeparator, | ||
} from '@/components/ui/pin-input' | ||
const value = ref<string[]>([]) | ||
const handleComplete = (e: string[]) => alert(e.join('')) | ||
</script> | ||
|
||
<template> | ||
<h1>Reset Page</h1> | ||
<div> | ||
<PinInput | ||
id="pin-input" | ||
v-model="value" | ||
placeholder="○" | ||
@complete="handleComplete" | ||
> | ||
<PinInputGroup class="gap-1"> | ||
<template v-for="(id, index) in 6" :key="id"> | ||
<PinInputInput | ||
class="rounded-md border" | ||
:index="index" | ||
/> | ||
<template v-if="index !== 5"> | ||
<PinInputSeparator /> | ||
</template> | ||
</template> | ||
</PinInputGroup> | ||
</PinInput> | ||
</div> | ||
</template> |