Button class style and dropdown icon customization

pull/3471/head
Bahadır Sofuoğlu 2023-01-02 11:40:36 +03:00
parent c5c1e69a65
commit 3825bf7c60
4 changed files with 116 additions and 4 deletions

View File

@ -35,6 +35,12 @@ const SplitButtonProps = [
default: 'body', default: 'body',
description: 'A valid query selector or an HTMLElement to specify where the overlay gets attached.' description: 'A valid query selector or an HTMLElement to specify where the overlay gets attached.'
}, },
{
name: 'disabled',
type: 'boolean',
default: 'false',
description: 'When present, it specifies that the element should be disabled.'
},
{ {
name: 'class', name: 'class',
type: 'string', type: 'string',
@ -46,6 +52,36 @@ const SplitButtonProps = [
type: 'any', type: 'any',
default: 'null', default: 'null',
description: 'Inline of the component.' description: 'Inline of the component.'
},
{
name: 'buttonClass',
type: 'string',
default: 'null',
description: 'Style class of the button.'
},
{
name: 'menuButtonIcon',
type: 'string',
default: 'null',
description: 'Name of the menu button icon.'
},
{
name: 'menuButtonClass',
type: 'string',
default: 'null',
description: 'Style class of the menu button.'
},
{
name: 'menuClass',
type: 'string',
default: 'null',
description: 'Style class of the menu.'
},
{
name: 'menuStyle',
type: 'any',
default: 'null',
description: 'Inline style of the menu.'
} }
]; ];

View File

@ -53,6 +53,26 @@ export interface SplitButtonProps {
* Uses to pass all properties of the HTMLButtonElement to the menu button. * Uses to pass all properties of the HTMLButtonElement to the menu button.
*/ */
menuButtonProps?: ButtonHTMLAttributes | undefined; menuButtonProps?: ButtonHTMLAttributes | undefined;
/**
* Style class of the button.
*/
buttonClass?: string | undefined;
/**
* Name of the menu button icon.
*/
menuButtonIcon?: string | undefined;
/**
* Style class of the menu button.
*/
menuButtonClass?: string | undefined;
/**
* Style class of the menu.
*/
menuClass?: string | undefined;
/**
* Inline style of the menu.
*/
menuStyle?: any | undefined;
} }
export interface SplitButtonSlots { export interface SplitButtonSlots {

View File

@ -1,13 +1,13 @@
<template> <template>
<div :class="containerClass" :style="style"> <div :class="containerClass" :style="style">
<slot> <slot>
<PVSButton type="button" class="p-splitbutton-defaultbutton" :icon="icon" :label="label" :disabled="disabled" :aria-label="label" @click="onDefaultButtonClick" v-bind="buttonProps" /> <PVSButton type="button" :class="buttonClasses" :icon="icon" :label="label" :disabled="disabled" :aria-label="label" @click="onDefaultButtonClick" v-bind="buttonProps" />
</slot> </slot>
<PVSButton <PVSButton
ref="button" ref="button"
type="button" type="button"
class="p-splitbutton-menubutton" :class="menuButtonClasses"
icon="pi pi-chevron-down" :icon="menuButtonIcon"
:disabled="disabled" :disabled="disabled"
aria-haspopup="true" aria-haspopup="true"
:aria-expanded="isExpanded" :aria-expanded="isExpanded"
@ -16,7 +16,7 @@
@keydown="onDropdownKeydown" @keydown="onDropdownKeydown"
v-bind="menuButtonProps" v-bind="menuButtonProps"
/> />
<PVSMenu ref="menu" :id="ariaId + '_overlay'" :model="model" :popup="true" :autoZIndex="autoZIndex" :baseZIndex="baseZIndex" :appendTo="appendTo" /> <PVSMenu ref="menu" :id="ariaId + '_overlay'" :model="model" :popup="true" :autoZIndex="autoZIndex" :baseZIndex="baseZIndex" :appendTo="appendTo" :style="menuStyle" :class="menuClass" />
</div> </div>
</template> </template>
@ -68,9 +68,29 @@ export default {
type: null, type: null,
default: null default: null
}, },
buttonClass: {
type: String,
default: null
},
menuButtonProps: { menuButtonProps: {
type: null, type: null,
default: null default: null
},
menuButtonIcon: {
type: String,
default: 'pi pi-chevron-down'
},
menuButtonClass: {
type: String,
default: null
},
menuClass: {
type: String,
default: null
},
menuStyle: {
type: null,
default: null
} }
}, },
data() { data() {
@ -99,6 +119,12 @@ export default {
}, },
containerClass() { containerClass() {
return ['p-splitbutton p-component', this.class]; return ['p-splitbutton p-component', this.class];
},
menuButtonClasses() {
return ['p-splitbutton-menubutton', this.menuButtonClass];
},
buttonClasses() {
return ['p-splitbutton-defaultbutton', this.buttonClass];
} }
}, },
components: { components: {

View File

@ -182,6 +182,36 @@ export default {
<td>null</td> <td>null</td>
<td>Uses to pass all properties of the HTMLButtonElement to the menu button.</td> <td>Uses to pass all properties of the HTMLButtonElement to the menu button.</td>
</tr> </tr>
<tr>
<td>buttonClass</td>
<td>string</td>
<td>null</td>
<td>Style class of the button.</td>
</tr>
<tr>
<td>menuButtonIcon</td>
<td>string</td>
<td>null</td>
<td>Name of the menu button icon.</td>
</tr>
<tr>
<td>menuButtonClass</td>
<td>string</td>
<td>null</td>
<td>Style class of the menu button.</td>
</tr>
<tr>
<td>menuClass</td>
<td>string</td>
<td>null</td>
<td>Style class of the menu.</td>
</tr>
<tr>
<td>menuStyle</td>
<td>any</td>
<td>null</td>
<td>Inline style of the menu.</td>
</tr>
</tbody> </tbody>
</table> </table>
</div> </div>