Composite Input Controls: Input Group
🌏 Translated with the assistance of DeepSeek and ChatGPT
Used to combine various input controls and buttons together.
Basic Usage
Combines various input controls and buttons. Currently supported components:
- Input
- InputNumber
- InputTag
- AutoComplete
- Select
- Button
- InputGroupLabel
.ini
<template>
<px-space direction="vertical">
<px-input-group>
<px-input-group-label>
<IconSearch></IconSearch>
</px-input-group-label>
<px-input placeholder="Please input"> </px-input>
<px-button>Search</px-button>
</px-input-group>
<px-input-group>
<px-input placeholder="Please input file name"> </px-input>
<px-input-group-label> .ini </px-input-group-label>
</px-input-group>
<px-input-group>
<px-input placeholder="Please input"> </px-input>
<px-input-number placeholder="Please input" :default-value="0"> </px-input-number>
</px-input-group>
</px-space>
</template>
<script setup lang="ts">
import { IconSearch } from '@pixelium/web-vue/icon-hn/es'
</script>
<style lang="css" scoped>
.px-input,
.px-input-number {
width: 320px;
}
</style>
Rounded Borders
The shape
property controls the overall shape.
borderRadius
sets the button corner radius; it takes precedence over shape
and behaves like the CSS border-radius
property.
Due to limited time and resources, custom rounded corners still need refinement, but overall usability is not affected.
<template>
<px-space direction="vertical">
<px-input-group shape="round">
<px-input-group-label>
<IconSearch></IconSearch>
</px-input-group-label>
<px-input placeholder="Please input"> </px-input>
<px-button>Search</px-button>
</px-input-group>
<px-input-group :border-radius="[20, 16, 20, 16]">
<px-input-group-label>
<IconSearch></IconSearch>
</px-input-group-label>
<px-input placeholder="Please input"> </px-input>
<px-button>Search</px-button>
</px-input-group>
</px-space>
</template>
<script setup lang="ts">
import { IconSearch } from '@pixelium/web-vue/icon-hn/es'
</script>
<style lang="css" scoped>
.px-input {
width: 320px;
}
</style>
Control Sizes
The size
property controls the dimensions of the controls.
<template>
<px-space direction="vertical">
<px-input-group size="small">
<px-input-group-label>
<IconBolt></IconBolt>
</px-input-group-label>
<px-input-number placeholder="Please input number" :default-value="0"> </px-input-number>
<px-button>Confirm</px-button>
</px-input-group>
<px-input-group>
<px-input-group-label>
<IconBolt></IconBolt>
</px-input-group-label>
<px-input-number placeholder="Please input number" :default-value="0"> </px-input-number>
<px-button>Confirm</px-button>
</px-input-group>
<px-input-group size="large">
<px-input-group-label>
<IconBolt></IconBolt>
</px-input-group-label>
<px-input-number placeholder="Please input number" :default-value="0"> </px-input-number>
<px-button>Confirm</px-button>
</px-input-group>
</px-space>
</template>
<script setup lang="ts">
import { IconBolt } from '@pixelium/web-vue/icon-hn/es'
</script>
<style lang="css" scoped>
.px-input-number {
width: 320px;
}
</style>
Disabled State
The disabled
attribute applies a disabled state to all child controls.
<template>
<px-input-group disabled>
<px-input placeholder="Please input"> </px-input>
<px-input-number placeholder="Please input" :default-value="0"> </px-input-number>
</px-input-group>
</template>
<style lang="css" scoped>
.px-input,
.px-input-number {
width: 320px;
}
</style>
API
InputGroupProps
Attribute | Type | Optional | Default | Description | Version |
---|---|---|---|---|---|
borderRadius | NumberOrPercentage | NumberOrPercentage[] | True |
| 0.0.2 | |
shape | 'default' | 'round' | True | 'default' | Component shape, overrides the shape of child components; rounding only affects the outer borders on both sides of the child components. | 0.0.2 |
size | 'medium' | 'large' | 'small' | True | 'medium' | Component size, overrides the size of child components. | 0.0.2 |
disabled | boolean | True | false | Whether to disable. The disabled prop of the child component and this prop are OR-ed to determine if the child component is disabled. | 0.0.2 |
InputGroupSlots
Slot | Parameter | Description | Version |
---|---|---|---|
default |
| Components to be grouped. | 0.0.2 |
InputGroupLabelProps
Attribute | Type | Optional | Default | Description | Version |
---|---|---|---|---|---|
backgroundColor | string | True |
| Background color. Supports CSS-like strings such as 'rgb(r, g, b)' and 'rgba(r, g, b, a)' , as well as 3-, 4-, 6-, and 8-digit hexadecimal values. | 0.0.2 |
borderRadius | NumberOrPercentage | NumberOrPercentage[] | True |
| 0.0.2 | |
shape | 'default' | 'round' | True | 'default' | Component shape. | 0.0.2 |
size | 'medium' | 'large' | 'small' | True | 'medium' | Component size. | 0.0.2 |
InputGroupLabelSlots
Slot | Parameter | Description | Version |
---|---|---|---|
default |
| Label content. | 0.0.2 |
NumberOrPercentage
ts
export type NumberOrPercentage = number | `${number}%`