Skip to content

Commit

Permalink
Refactor #5592, #5661, #5662 - For SplitButton
Browse files Browse the repository at this point in the history
  • Loading branch information
tugcekucukoglu committed Apr 30, 2024
1 parent 1b88a2f commit 4c8eb6c
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 8 deletions.
4 changes: 4 additions & 0 deletions components/lib/splitbutton/BaseSplitButton.vue
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@ export default {
type: String,
default: undefined
},
dropdownIcon: {
type: String,
default: undefined
},
severity: {
type: String,
default: null
Expand Down
17 changes: 16 additions & 1 deletion components/lib/splitbutton/SplitButton.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ export interface SplitButtonPassThroughOptions {
* Used to pass attributes to the Button component.
* @see {@link ButtonPassThroughOptions}
*/
menuButton?: ButtonPassThroughOptions<SplitButtonSharedPassThroughMethodOptions>;
dropdown?: ButtonPassThroughOptions<SplitButtonSharedPassThroughMethodOptions>;
/**
* Used to pass attributes to the TieredMenu component.
* @see {@link TieredMenuPassThroughOptions}
Expand Down Expand Up @@ -168,6 +168,10 @@ export interface SplitButtonProps {
* @deprecated since v3.27.0. Use 'menubuttonicon' slot.
*/
menuButtonIcon?: string | undefined;
/**
* Name of the menu button icon.
*/
dropdownIcon?: string | undefined;
/**
* Defines the style of the button.
*/
Expand Down Expand Up @@ -245,6 +249,7 @@ export interface SplitButtonSlots {
class: string;
}): VNode[];
/**
* @deprecated since v4.0. Use dropdownicon slot instead.
* Custom menu button icon template.
* @param {Object} scope - menubuttonicon slot's params.
*/
Expand All @@ -254,6 +259,16 @@ export interface SplitButtonSlots {
*/
class: string;
}): VNode[];
/**
* Custom menu button icon template.
* @param {Object} scope - menubuttonicon slot's params.
*/
dropdownicon(scope: {
/**
* Style class of the icon.
*/
class: string;
}): VNode[];
/**
* Custom menu item icon template.
* @param {Object} scope - menuitemicon slot's params.
Expand Down
14 changes: 9 additions & 5 deletions components/lib/splitbutton/SplitButton.vue
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<PVSButton
ref="button"
type="button"
:class="cx('menuButton')"
:class="cx('dropdown')"
:disabled="disabled"
aria-haspopup="true"
:aria-expanded="isExpanded"
Expand All @@ -38,13 +38,17 @@
:text="text"
:outlined="outlined"
:size="size"
v-bind="menuButtonProps"
:pt="ptm('menuButton')"
:unstyled="unstyled"
v-bind="menuButtonProps"
:pt="ptm('dropdown')"
>
<template #icon="slotProps">
<slot name="menubuttonicon" :class="slotProps.class">
<component :is="menuButtonIcon ? 'span' : 'ChevronDownIcon'" :class="[menuButtonIcon, slotProps.class]" v-bind="ptm('menuButton')['icon']" data-pc-section="menubuttonicon" />
<!--TODO: Deprecated since v4.0-->
<slot v-if="$slots.menubuttonicon" name="menubuttonicon" :class="slotProps.class">
<component :is="menuButtonIcon ? 'span' : 'ChevronDownIcon'" :class="[menuButtonIcon, slotProps.class]" v-bind="ptm('dropdown')['icon']" data-pc-section="menubuttonicon" />
</slot>
<slot v-else name="dropdownicon" :class="slotProps.class">
<component :is="dropdownIcon ? 'span' : 'ChevronDownIcon'" :class="[dropdownIcon, slotProps.class]" v-bind="ptm('dropdown')['icon']" data-pc-section="menubuttonicon" />
</slot>
</template>
</PVSButton>
Expand Down
2 changes: 1 addition & 1 deletion components/lib/splitbutton/style/SplitButtonStyle.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import BaseStyle from 'primevue/base/style';
const classes = {
root: 'p-splitbutton p-component',
button: 'p-splitbutton-button',
menuButton: 'p-splitbutton-dropdown'
dropdown: 'p-splitbutton-dropdown'
};

export default BaseStyle.extend({
Expand Down
12 changes: 11 additions & 1 deletion doc/splitbutton/IconsDoc.vue
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,17 @@
<p>The buttons and menuitems have support to display icons.</p>
</DocSectionText>
<div class="card flex justify-content-center">
<SplitButton label="Save" icon="pi pi-check" menuButtonIcon="pi pi-cog" @click="save" :model="items" />
<SplitButton label="Save" icon="pi pi-check" dropdownIcon="pi pi-cog" @click="save" :model="items" />
<SplitButton label="Save" icon="pi pi-check" @click="save" :model="items">
<template #dropdownicon>
<i class="pi pi-discord"></i>
</template>
</SplitButton>
<SplitButton label="Save" icon="pi pi-check" @click="save" :model="items">
<template #menubuttonicon>
<i class="pi pi-discord"></i>
</template>
</SplitButton>
</div>
<DocSectionCode :code="code" />
</template>
Expand Down

0 comments on commit 4c8eb6c

Please sign in to comment.