chore(typescript): migrate components (#53)

This commit is contained in:
Sylvain Marroufin
2022-04-28 11:38:23 +02:00
committed by GitHub
parent 57354f64f9
commit 1bda2ec01f
11 changed files with 94 additions and 95 deletions

View File

@@ -70,7 +70,8 @@ const components = [
to: '/components/Avatar',
nuxt3: true,
preset: true,
capi: true
capi: true,
typescript: true
},
{
label: 'AvatarGroup',
@@ -82,7 +83,8 @@ const components = [
to: '/components/Badge',
nuxt3: true,
capi: true,
preset: true
preset: true,
typescript: true
},
{
label: 'Button',
@@ -102,7 +104,8 @@ const components = [
label: 'Icon',
to: '/components/Icon',
nuxt3: true,
capi: true
capi: true,
typescript: true
},
{
label: 'Link',
@@ -115,7 +118,8 @@ const components = [
to: '/components/Toggle',
nuxt3: true,
preset: true,
capi: true
capi: true,
typescript: true
},
{
label: 'Alert',
@@ -127,7 +131,8 @@ const components = [
to: '/components/AlertDialog',
nuxt3: true,
capi: true,
preset: true
preset: true,
typescript: true
},
{
label: 'Input',
@@ -165,7 +170,8 @@ const components = [
},
{
label: 'SelectCustom',
to: '/components/SelectCustom'
to: '/components/SelectCustom',
typescript: true
},
{
label: 'Textarea',
@@ -186,21 +192,24 @@ const components = [
to: '/components/Container',
nuxt3: true,
preset: true,
capi: true
capi: true,
typescript: true
},
{
label: 'Tabs',
to: '/components/Tabs',
nuxt3: true,
capi: true,
preset: true
preset: true,
typescript: true
},
{
label: 'Pills',
to: '/components/Pills',
nuxt3: true,
capi: true,
preset: true
preset: true,
typescript: true
},
{
label: 'VerticalNavigation',
@@ -226,7 +235,8 @@ const components = [
label: 'Notifications',
to: '/components/Notifications',
nuxt3: true,
capi: true
capi: true,
typescript: true
},
{
label: 'Popover',
@@ -238,7 +248,8 @@ const components = [
label: 'Slideover',
to: '/components/Slideover',
nuxt3: true,
capi: true
capi: true,
typescript: true
},
{
label: 'Tooltip',

View File

@@ -8,7 +8,7 @@
</span>
</template>
<script setup>
<script setup lang="ts">
import { ref, computed, watch } from 'vue'
import { classNames } from '../../utils'
import $ui from '#build/ui'
@@ -29,7 +29,7 @@ const props = defineProps({
size: {
type: String,
default: 'md',
validator (value) {
validator (value: string) {
return Object.keys($ui.avatar.size).includes(value)
}
},
@@ -44,14 +44,14 @@ const props = defineProps({
chipVariant: {
type: String,
default: 'primary',
validator (value) {
validator (value: string) {
return Object.keys($ui.avatar.chip.variant).includes(value)
}
},
chipPosition: {
type: String,
default: 'top-right',
validator (value) {
validator (value: string) {
return Object.keys($ui.avatar.chip.position).includes(value)
}
},

View File

@@ -4,53 +4,46 @@
</span>
</template>
<script>
<script setup lang="ts">
import { computed } from 'vue'
import { classNames } from '../../utils'
import $ui from '#build/ui'
export default {
props: {
size: {
type: String,
default: 'md',
validator (value) {
return Object.keys($ui.badge.size).includes(value)
}
},
variant: {
type: String,
default: 'primary',
validator (value) {
return Object.keys($ui.badge.variant).includes(value)
}
},
baseClass: {
type: String,
default: () => $ui.badge.base
},
rounded: {
type: Boolean,
default: false
},
label: {
type: String,
default: null
const props = defineProps({
size: {
type: String,
default: 'md',
validator (value: string) {
return Object.keys($ui.badge.size).includes(value)
}
},
setup (props) {
const badgeClass = computed(() => {
return classNames(
props.baseClass,
$ui.badge.size[props.size],
$ui.badge.variant[props.variant],
props.rounded ? 'rounded-full' : 'rounded-md'
)
})
return {
badgeClass
variant: {
type: String,
default: 'primary',
validator (value: string) {
return Object.keys($ui.badge.variant).includes(value)
}
},
baseClass: {
type: String,
default: () => $ui.badge.base
},
rounded: {
type: Boolean,
default: false
},
label: {
type: String,
default: null
}
}
})
const badgeClass = computed(() => {
return classNames(
props.baseClass,
$ui.badge.size[props.size],
$ui.badge.variant[props.variant],
props.rounded ? 'rounded-full' : 'rounded-md'
)
})
</script>

View File

@@ -2,7 +2,9 @@
<Icon :icon="icon" />
</template>
<script setup>
<script setup lang="ts">
import type { Ref } from 'vue'
import type { IconifyIcon } from '@iconify/vue'
import { ref, watch } from 'vue'
import { Icon } from '@iconify/vue/dist/offline'
import { loadIcon } from '@iconify/vue'
@@ -14,7 +16,7 @@ const props = defineProps({
}
})
const icon = ref(null)
const icon: Ref<IconifyIcon> = ref(null)
icon.value = await loadIcon(props.name)
watch(() => props.name, async () => {

View File

@@ -20,7 +20,7 @@
</Modal>
</template>
<script setup>
<script setup lang="ts">
import { computed } from 'vue'
import { DialogTitle, DialogDescription } from '@headlessui/vue'
import Modal from '../overlays/Modal'

View File

@@ -44,7 +44,7 @@
</Listbox>
</template>
<script setup>
<script setup lang="ts">
import { computed } from 'vue'
import {
Listbox,
@@ -76,7 +76,7 @@ const props = defineProps({
size: {
type: String,
default: 'md',
validator (value) {
validator (value: string) {
return Object.keys($ui.selectCustom.size).includes(value)
}
},
@@ -161,7 +161,7 @@ const iconClass = computed(() => {
const iconWrapperClass = $ui.selectCustom.icon.trailing.wrapper
function resolveOptionClass ({ active, disabled }) {
function resolveOptionClass ({ active, disabled }: { active: boolean, disabled: boolean }) {
return classNames(
props.listOptionBaseClass,
active ? props.listOptionActiveClass : props.listOptionInactiveClass,
@@ -169,7 +169,7 @@ function resolveOptionClass ({ active, disabled }) {
)
}
function resolveOptionIconClass ({ active }) {
function resolveOptionIconClass ({ active }: { active: boolean }) {
return classNames(
props.listOptionIconBaseClass,
active ? props.listOptionIconActiveClass : props.listOptionIconInactiveClass

View File

@@ -14,7 +14,7 @@
</Switch>
</template>
<script setup>
<script setup lang="ts">
import { computed } from 'vue'
import { Switch } from '@headlessui/vue'
import Icon from '../elements/Icon'

View File

@@ -4,38 +4,31 @@
</div>
</template>
<script>
<script setup lang="ts">
import { computed } from 'vue'
import { classNames } from '../../utils/'
import $ui from '#build/ui'
export default {
props: {
padded: {
type: Boolean,
default: false
},
constrained: {
type: Boolean,
default: true
},
constrainedClass: {
type: String,
default: () => $ui.container.constrained
}
const props = defineProps({
padded: {
type: Boolean,
default: false
},
setup (props) {
const containerClass = computed(() => {
return classNames(
'mx-auto sm:px-6 lg:px-8',
props.padded && 'px-4',
props.constrained && props.constrainedClass
)
})
return {
containerClass
}
constrained: {
type: Boolean,
default: true
},
constrainedClass: {
type: String,
default: () => $ui.container.constrained
}
}
})
const containerClass = computed(() => {
return classNames(
'mx-auto sm:px-6 lg:px-8',
props.padded && 'px-4',
props.constrained && props.constrainedClass
)
})
</script>

View File

@@ -14,7 +14,7 @@
</nav>
</template>
<script setup>
<script setup lang="ts">
import Link from '../elements/Link'
import $ui from '#build/ui'

View File

@@ -14,7 +14,7 @@
</nav>
</template>
<script setup>
<script setup lang="ts">
import Link from '../elements/Link'
import $ui from '#build/ui'

View File

@@ -20,7 +20,7 @@
</div>
</template>
<script setup>
<script setup lang="ts">
import { useNuxtApp, useState } from '#app'
import Notification from './Notification'