diff --git a/docs/components/button.md b/docs/components/button.md index f8c0631bc..33ae19a50 100644 --- a/docs/components/button.md +++ b/docs/components/button.md @@ -54,6 +54,26 @@ The `VBtn` component is registered globally when you install with `@gits-id/ui`. ``` +### Flush + +- **Prop**: `flush` +- **Type**: `boolean` +- **Default Value**: `false` + +Use `flush` prop to remove button padding. It will also set the width and height button to `auto`; + +```vue + +``` + ### Rounded diff --git a/packages/button/src/VBtn.stories.ts b/packages/button/src/VBtn.stories.ts index 209912d45..1cd9c8463 100644 --- a/packages/button/src/VBtn.stories.ts +++ b/packages/button/src/VBtn.stories.ts @@ -102,6 +102,16 @@ Tile.parameters = { }, }; +export const Flush = Template.bind({}); +Flush.args = {color: 'primary', flush: true, text: true}; +Flush.parameters = { + docs: { + source: { + code: 'Button', + }, + }, +}; + export const Disabled = Template.bind({}); Disabled.args = {color: 'primary', disabled: true}; Disabled.parameters = { diff --git a/packages/button/src/VBtn.vue b/packages/button/src/VBtn.vue index 3038f033b..a56e1b0fd 100644 --- a/packages/button/src/VBtn.vue +++ b/packages/button/src/VBtn.vue @@ -44,6 +44,7 @@ export interface Props { suffixIconSize?: string; suffixIconClass?: string; loadingClass?: string; + flush?: boolean; } const props = withDefaults(defineProps(), { @@ -100,6 +101,7 @@ const classes = computed(() => { 'btn--block': props.block, 'btn--loading': props.loading, 'btn--text': props.text, + 'btn--flush': props.flush, shadow: props.shadow, }, ]; diff --git a/packages/dropdown/src/Dropdown.vue b/packages/dropdown/src/Dropdown.vue index db9c9bfce..509ce1ee0 100644 --- a/packages/dropdown/src/Dropdown.vue +++ b/packages/dropdown/src/Dropdown.vue @@ -38,7 +38,7 @@ withDefaults(defineProps(), { buttonWrapperClass: '', leftClass: 'left-0', rightClass: 'right-0', - transition: 'fade', + transition: 'fade-scale', icon: 'ri:arrow-down-s-line', iconSize: 'sm', iconClass: '', diff --git a/packages/tailwind-components/src/button.js b/packages/tailwind-components/src/button.js index 29680b29c..237de00f0 100644 --- a/packages/tailwind-components/src/button.js +++ b/packages/tailwind-components/src/button.js @@ -90,10 +90,13 @@ const btn = plugin(function ({addComponents, theme}) { borderRadius: 'var(--btn-border-radius)', borderWidth: 'var(--btn-border-width)', borderColor: 'var(--btn-border-color)', - padding: 'var(--btn-padding-y) var(--btn-padding-x)', transition: 'var(--btn-transition)', - width: 'var(--btn-width)', - height: 'var(--btn-height)', + + '&:not(.btn--flush)': { + padding: 'var(--btn-padding-y) var(--btn-padding-x)', + width: 'var(--btn-width)', + height: 'var(--btn-height)', + }, // disabled '&:disabled': disabledVariant(), @@ -126,6 +129,12 @@ const btn = plugin(function ({addComponents, theme}) { ...colorVariant('error'), }, + // flush + '.btn--flush': { + padding: 0, + '--btn-height': 'auto', + }, + // outlined '.btn--outlined': { '&:disabled': { diff --git a/packages/theme/transition.css b/packages/theme/transition.css index dd59b15e5..c908f85ad 100644 --- a/packages/theme/transition.css +++ b/packages/theme/transition.css @@ -9,6 +9,18 @@ opacity: 0; } +/* fade scale */ +.fade-scale-enter-active, +.fade-scale-leave-active { + transition: all 0.3s ease; +} + +.fade-scale-enter-from, +.fade-scale-leave-to { + opacity: 0; + transform: scale(0.95); +} + /* slide-left */ .slide-left-enter-active, .slide-left-leave-active {