Refactor #3879 - For Badge

pull/3892/head
Tuğçe Küçükoğlu 2023-04-21 16:22:04 +03:00
parent a71d3810e1
commit 3d6847aea6
3 changed files with 41 additions and 1 deletions

View File

@ -16,6 +16,12 @@ const BadgeProps = [
type: 'string', type: 'string',
default: 'null', default: 'null',
description: 'Size of the badge, valid options are "large" and "xlarge".' description: 'Size of the badge, valid options are "large" and "xlarge".'
},
{
name: 'pt',
type: 'any',
default: 'null',
description: 'Uses to pass attributes to DOM elements inside the component.'
} }
]; ];

View File

@ -10,6 +10,33 @@
import { VNode } from 'vue'; import { VNode } from 'vue';
import { ClassComponent, GlobalComponentConstructor } from '../ts-helpers'; import { ClassComponent, GlobalComponentConstructor } from '../ts-helpers';
export declare type BadgePassThroughOptionType = BadgePassThroughAttributes | ((options: BadgePassThroughMethodOptions) => BadgePassThroughAttributes) | null | undefined;
/**
* Custom passthrough(pt) option method.
*/
export interface BadgePassThroughMethodOptions {
props: BadgeProps;
}
/**
* Custom passthrough attributes for each DOM elements
*/
export interface BadgePassThroughAttributes {
[key: string]: any;
}
/**
* Custom passthrough(pt) options.
* @see {@link BadgeProps.pt}
*/
export interface BadgePassThroughOptions {
/**
* Uses to pass attributes to the root's DOM element.
*/
root?: BadgePassThroughOptionType;
}
/** /**
* Defines valid properties in Badge component. * Defines valid properties in Badge component.
*/ */
@ -26,6 +53,11 @@ export interface BadgeProps {
* Size of the badge, valid options are 'large' and 'xlarge'. * Size of the badge, valid options are 'large' and 'xlarge'.
*/ */
size?: 'large' | 'xlarge' | null | undefined; size?: 'large' | 'xlarge' | null | undefined;
/**
* Uses to pass attributes to DOM elements inside the component.
* @type {BadgePassThroughOptions}
*/
pt?: BadgePassThroughOptions;
} }
/** /**

View File

@ -1,14 +1,16 @@
<template> <template>
<span :class="badgeClass"> <span :class="badgeClass" v-bind="ptm('root')">
<slot>{{ value }}</slot> <slot>{{ value }}</slot>
</span> </span>
</template> </template>
<script> <script>
import BaseComponent from 'primevue/basecomponent';
import { ObjectUtils } from 'primevue/utils'; import { ObjectUtils } from 'primevue/utils';
export default { export default {
name: 'Badge', name: 'Badge',
extends: BaseComponent,
props: { props: {
value: { value: {
type: [String, Number], type: [String, Number],