mirror of
https://github.com/ArthurDanjou/ui.git
synced 2026-01-14 12:14:41 +01:00
@@ -80,6 +80,7 @@ const slots = defineSlots<InputSlots>()
|
|||||||
const [modelValue, modelModifiers] = defineModel<T>()
|
const [modelValue, modelModifiers] = defineModel<T>()
|
||||||
|
|
||||||
const appConfig = useAppConfig() as Input['AppConfig']
|
const appConfig = useAppConfig() as Input['AppConfig']
|
||||||
|
|
||||||
const { emitFormBlur, emitFormInput, emitFormChange, size: formGroupSize, color, id, name, highlight, disabled, emitFormFocus, ariaAttrs } = useFormField<InputProps>(props, { deferInputValidation: true })
|
const { emitFormBlur, emitFormInput, emitFormChange, size: formGroupSize, color, id, name, highlight, disabled, emitFormFocus, ariaAttrs } = useFormField<InputProps>(props, { deferInputValidation: true })
|
||||||
const { orientation, size: buttonGroupSize } = useButtonGroup<InputProps>(props)
|
const { orientation, size: buttonGroupSize } = useButtonGroup<InputProps>(props)
|
||||||
const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(props)
|
const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(props)
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ import { onMounted, ref, computed } from 'vue'
|
|||||||
import { NumberFieldRoot, NumberFieldInput, NumberFieldDecrement, NumberFieldIncrement, useForwardPropsEmits } from 'reka-ui'
|
import { NumberFieldRoot, NumberFieldInput, NumberFieldDecrement, NumberFieldIncrement, useForwardPropsEmits } from 'reka-ui'
|
||||||
import { reactivePick } from '@vueuse/core'
|
import { reactivePick } from '@vueuse/core'
|
||||||
import { useAppConfig } from '#imports'
|
import { useAppConfig } from '#imports'
|
||||||
|
import { useButtonGroup } from '../composables/useButtonGroup'
|
||||||
import { useFormField } from '../composables/useFormField'
|
import { useFormField } from '../composables/useFormField'
|
||||||
import { useLocale } from '../composables/useLocale'
|
import { useLocale } from '../composables/useLocale'
|
||||||
import { tv } from '../utils/tv'
|
import { tv } from '../utils/tv'
|
||||||
@@ -94,21 +95,24 @@ const props = withDefaults(defineProps<InputNumberProps>(), {
|
|||||||
const emits = defineEmits<InputNumberEmits>()
|
const emits = defineEmits<InputNumberEmits>()
|
||||||
defineSlots<InputNumberSlots>()
|
defineSlots<InputNumberSlots>()
|
||||||
|
|
||||||
|
const { t, code: codeLocale } = useLocale()
|
||||||
const appConfig = useAppConfig() as InputNumber['AppConfig']
|
const appConfig = useAppConfig() as InputNumber['AppConfig']
|
||||||
|
|
||||||
const rootProps = useForwardPropsEmits(reactivePick(props, 'as', 'modelValue', 'defaultValue', 'min', 'max', 'step', 'stepSnapping', 'formatOptions', 'disableWheelChange'), emits)
|
const rootProps = useForwardPropsEmits(reactivePick(props, 'as', 'modelValue', 'defaultValue', 'min', 'max', 'step', 'stepSnapping', 'formatOptions', 'disableWheelChange'), emits)
|
||||||
|
|
||||||
const { emitFormBlur, emitFormFocus, emitFormChange, emitFormInput, id, color, size, name, highlight, disabled, ariaAttrs } = useFormField<InputNumberProps>(props)
|
const { emitFormBlur, emitFormFocus, emitFormChange, emitFormInput, id, color, size: formGroupSize, name, highlight, disabled, ariaAttrs } = useFormField<InputNumberProps>(props)
|
||||||
|
const { orientation, size: buttonGroupSize } = useButtonGroup<InputNumberProps>(props)
|
||||||
|
|
||||||
const { t, code: codeLocale } = useLocale()
|
|
||||||
const locale = computed(() => props.locale || codeLocale.value)
|
const locale = computed(() => props.locale || codeLocale.value)
|
||||||
|
const inputSize = computed(() => buttonGroupSize.value || formGroupSize.value)
|
||||||
|
|
||||||
const ui = computed(() => tv({ extend: tv(theme), ...(appConfig.ui?.inputNumber || {}) })({
|
const ui = computed(() => tv({ extend: tv(theme), ...(appConfig.ui?.inputNumber || {}) })({
|
||||||
color: color.value,
|
color: color.value,
|
||||||
variant: props.variant,
|
variant: props.variant,
|
||||||
size: size.value,
|
size: inputSize.value,
|
||||||
highlight: highlight.value,
|
highlight: highlight.value,
|
||||||
orientation: props.orientation
|
orientation: props.orientation,
|
||||||
|
buttonGroup: orientation.value
|
||||||
}))
|
}))
|
||||||
|
|
||||||
const incrementIcon = computed(() => props.incrementIcon || (props.orientation === 'horizontal' ? appConfig.ui.icons.plus : appConfig.ui.icons.chevronUp))
|
const incrementIcon = computed(() => props.incrementIcon || (props.orientation === 'horizontal' ? appConfig.ui.icons.plus : appConfig.ui.icons.chevronUp))
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ const slots = defineSlots<TextareaSlots>()
|
|||||||
const [modelValue, modelModifiers] = defineModel<T>()
|
const [modelValue, modelModifiers] = defineModel<T>()
|
||||||
|
|
||||||
const appConfig = useAppConfig() as Textarea['AppConfig']
|
const appConfig = useAppConfig() as Textarea['AppConfig']
|
||||||
|
|
||||||
const { emitFormFocus, emitFormBlur, emitFormInput, emitFormChange, size, color, id, name, highlight, disabled, ariaAttrs } = useFormField<TextareaProps>(props, { deferInputValidation: true })
|
const { emitFormFocus, emitFormBlur, emitFormInput, emitFormChange, size, color, id, name, highlight, disabled, ariaAttrs } = useFormField<TextareaProps>(props, { deferInputValidation: true })
|
||||||
const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(props)
|
const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(props)
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import type { ModuleOptions } from '../module'
|
import type { ModuleOptions } from '../module'
|
||||||
import inputTheme from './input'
|
import inputTheme from './input'
|
||||||
|
import { buttonGroupVariantWithRoot } from './button-group'
|
||||||
|
|
||||||
export default (options: Required<ModuleOptions>) => {
|
export default (options: Required<ModuleOptions>) => {
|
||||||
const input = inputTheme(options)
|
const input = inputTheme(options)
|
||||||
@@ -12,6 +13,7 @@ export default (options: Required<ModuleOptions>) => {
|
|||||||
decrement: 'absolute flex items-center'
|
decrement: 'absolute flex items-center'
|
||||||
},
|
},
|
||||||
variants: {
|
variants: {
|
||||||
|
...buttonGroupVariantWithRoot,
|
||||||
color: {
|
color: {
|
||||||
...Object.fromEntries((options.theme.colors || []).map((color: string) => [color, ''])),
|
...Object.fromEntries((options.theme.colors || []).map((color: string) => [color, ''])),
|
||||||
neutral: ''
|
neutral: ''
|
||||||
|
|||||||
Reference in New Issue
Block a user