@designcrowd/fe-shared-lib 1.1.8 → 1.1.10-ast-btn-group
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/public/css/tailwind-brandCrowd.css +21 -0
- package/public/css/tailwind-brandPage.css +21 -0
- package/public/css/tailwind-crazyDomains.css +21 -0
- package/public/css/tailwind-designCom.css +21 -0
- package/public/css/tailwind-designCrowd.css +21 -0
- package/src/atoms/components/Button/Button.vue +2 -0
- package/src/atoms/components/Button/Buttons.stories.js +26 -0
- package/src/atoms/components/Button/variants/ButtonAi.vue +63 -0
- package/src/atoms/components/ButtonGroup/ButtonGroup.vue +44 -12
- package/src/atoms/components/Dropdown/Dropdown.stories.js +5 -5
package/package.json
CHANGED
|
@@ -719,6 +719,9 @@ video {
|
|
|
719
719
|
.theme-brandCrowd .tw-ml-auto {
|
|
720
720
|
margin-left: auto;
|
|
721
721
|
}
|
|
722
|
+
.theme-brandCrowd .tw-mr-1 {
|
|
723
|
+
margin-right: 0.25rem;
|
|
724
|
+
}
|
|
722
725
|
.theme-brandCrowd .tw-mr-2 {
|
|
723
726
|
margin-right: 0.5rem;
|
|
724
727
|
}
|
|
@@ -1158,6 +1161,9 @@ video {
|
|
|
1158
1161
|
.theme-brandCrowd .tw-rounded-sm {
|
|
1159
1162
|
border-radius: 0.125rem;
|
|
1160
1163
|
}
|
|
1164
|
+
.theme-brandCrowd .tw-rounded-xl {
|
|
1165
|
+
border-radius: 0.75rem;
|
|
1166
|
+
}
|
|
1161
1167
|
.\!tw-rounded-l-none {
|
|
1162
1168
|
border-top-left-radius: 0px !important;
|
|
1163
1169
|
border-bottom-left-radius: 0px !important;
|
|
@@ -1450,6 +1456,17 @@ video {
|
|
|
1450
1456
|
.theme-brandCrowd .tw-bg-opacity-80 {
|
|
1451
1457
|
--tw-bg-opacity: 0.8;
|
|
1452
1458
|
}
|
|
1459
|
+
.theme-brandCrowd .tw-bg-gradient-to-t {
|
|
1460
|
+
background-image: linear-gradient(to top, var(--tw-gradient-stops));
|
|
1461
|
+
}
|
|
1462
|
+
.theme-brandCrowd .tw-from-\[\#d946ef\] {
|
|
1463
|
+
--tw-gradient-from: #d946ef var(--tw-gradient-from-position);
|
|
1464
|
+
--tw-gradient-to: rgb(217 70 239 / 0) var(--tw-gradient-to-position);
|
|
1465
|
+
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
|
1466
|
+
}
|
|
1467
|
+
.theme-brandCrowd .tw-to-\[\#8b5cf6\] {
|
|
1468
|
+
--tw-gradient-to: #8b5cf6 var(--tw-gradient-to-position);
|
|
1469
|
+
}
|
|
1453
1470
|
.theme-brandCrowd .tw-bg-no-repeat {
|
|
1454
1471
|
background-repeat: no-repeat;
|
|
1455
1472
|
}
|
|
@@ -2091,6 +2108,10 @@ video {
|
|
|
2091
2108
|
--tw-shadow-color: #0097D7 !important;
|
|
2092
2109
|
--tw-shadow: var(--tw-shadow-colored) !important;
|
|
2093
2110
|
}
|
|
2111
|
+
.theme-brandCrowd .hover\:tw-brightness-\[0\.85\]:hover {
|
|
2112
|
+
--tw-brightness: brightness(0.85);
|
|
2113
|
+
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
|
2114
|
+
}
|
|
2094
2115
|
.theme-brandCrowd .focus\:tw-border-error-600:focus {
|
|
2095
2116
|
--tw-border-opacity: 1;
|
|
2096
2117
|
border-color: rgb(194 22 50 / var(--tw-border-opacity));
|
|
@@ -719,6 +719,9 @@ video {
|
|
|
719
719
|
.theme-brandPage .tw-ml-auto {
|
|
720
720
|
margin-left: auto;
|
|
721
721
|
}
|
|
722
|
+
.theme-brandPage .tw-mr-1 {
|
|
723
|
+
margin-right: 0.25rem;
|
|
724
|
+
}
|
|
722
725
|
.theme-brandPage .tw-mr-2 {
|
|
723
726
|
margin-right: 0.5rem;
|
|
724
727
|
}
|
|
@@ -1158,6 +1161,9 @@ video {
|
|
|
1158
1161
|
.theme-brandPage .tw-rounded-sm {
|
|
1159
1162
|
border-radius: 0.125rem;
|
|
1160
1163
|
}
|
|
1164
|
+
.theme-brandPage .tw-rounded-xl {
|
|
1165
|
+
border-radius: 0.75rem;
|
|
1166
|
+
}
|
|
1161
1167
|
.\!tw-rounded-l-none {
|
|
1162
1168
|
border-top-left-radius: 0px !important;
|
|
1163
1169
|
border-bottom-left-radius: 0px !important;
|
|
@@ -1298,6 +1304,17 @@ video {
|
|
|
1298
1304
|
.theme-brandPage .tw-bg-opacity-80 {
|
|
1299
1305
|
--tw-bg-opacity: 0.8;
|
|
1300
1306
|
}
|
|
1307
|
+
.theme-brandPage .tw-bg-gradient-to-t {
|
|
1308
|
+
background-image: linear-gradient(to top, var(--tw-gradient-stops));
|
|
1309
|
+
}
|
|
1310
|
+
.theme-brandPage .tw-from-\[\#d946ef\] {
|
|
1311
|
+
--tw-gradient-from: #d946ef var(--tw-gradient-from-position);
|
|
1312
|
+
--tw-gradient-to: rgb(217 70 239 / 0) var(--tw-gradient-to-position);
|
|
1313
|
+
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
|
1314
|
+
}
|
|
1315
|
+
.theme-brandPage .tw-to-\[\#8b5cf6\] {
|
|
1316
|
+
--tw-gradient-to: #8b5cf6 var(--tw-gradient-to-position);
|
|
1317
|
+
}
|
|
1301
1318
|
.theme-brandPage .tw-bg-no-repeat {
|
|
1302
1319
|
background-repeat: no-repeat;
|
|
1303
1320
|
}
|
|
@@ -1795,6 +1812,10 @@ video {
|
|
|
1795
1812
|
--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
|
|
1796
1813
|
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
|
1797
1814
|
}
|
|
1815
|
+
.theme-brandPage .hover\:tw-brightness-\[0\.85\]:hover {
|
|
1816
|
+
--tw-brightness: brightness(0.85);
|
|
1817
|
+
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
|
1818
|
+
}
|
|
1798
1819
|
.theme-brandPage .focus\:tw-border-grayscale-600:focus {
|
|
1799
1820
|
--tw-border-opacity: 1;
|
|
1800
1821
|
border-color: rgb(94 94 94 / var(--tw-border-opacity));
|
|
@@ -719,6 +719,9 @@ video {
|
|
|
719
719
|
.theme-crazyDomains .tw-ml-auto {
|
|
720
720
|
margin-left: auto;
|
|
721
721
|
}
|
|
722
|
+
.theme-crazyDomains .tw-mr-1 {
|
|
723
|
+
margin-right: 0.25rem;
|
|
724
|
+
}
|
|
722
725
|
.theme-crazyDomains .tw-mr-2 {
|
|
723
726
|
margin-right: 0.5rem;
|
|
724
727
|
}
|
|
@@ -1158,6 +1161,9 @@ video {
|
|
|
1158
1161
|
.theme-crazyDomains .tw-rounded-sm {
|
|
1159
1162
|
border-radius: 0.125rem;
|
|
1160
1163
|
}
|
|
1164
|
+
.theme-crazyDomains .tw-rounded-xl {
|
|
1165
|
+
border-radius: 0.75rem;
|
|
1166
|
+
}
|
|
1161
1167
|
.\!tw-rounded-l-none {
|
|
1162
1168
|
border-top-left-radius: 0px !important;
|
|
1163
1169
|
border-bottom-left-radius: 0px !important;
|
|
@@ -1450,6 +1456,17 @@ video {
|
|
|
1450
1456
|
.theme-crazyDomains .tw-bg-opacity-80 {
|
|
1451
1457
|
--tw-bg-opacity: 0.8;
|
|
1452
1458
|
}
|
|
1459
|
+
.theme-crazyDomains .tw-bg-gradient-to-t {
|
|
1460
|
+
background-image: linear-gradient(to top, var(--tw-gradient-stops));
|
|
1461
|
+
}
|
|
1462
|
+
.theme-crazyDomains .tw-from-\[\#d946ef\] {
|
|
1463
|
+
--tw-gradient-from: #d946ef var(--tw-gradient-from-position);
|
|
1464
|
+
--tw-gradient-to: rgb(217 70 239 / 0) var(--tw-gradient-to-position);
|
|
1465
|
+
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
|
1466
|
+
}
|
|
1467
|
+
.theme-crazyDomains .tw-to-\[\#8b5cf6\] {
|
|
1468
|
+
--tw-gradient-to: #8b5cf6 var(--tw-gradient-to-position);
|
|
1469
|
+
}
|
|
1453
1470
|
.theme-crazyDomains .tw-bg-no-repeat {
|
|
1454
1471
|
background-repeat: no-repeat;
|
|
1455
1472
|
}
|
|
@@ -2091,6 +2108,10 @@ video {
|
|
|
2091
2108
|
--tw-shadow-color: #00A1EF !important;
|
|
2092
2109
|
--tw-shadow: var(--tw-shadow-colored) !important;
|
|
2093
2110
|
}
|
|
2111
|
+
.theme-crazyDomains .hover\:tw-brightness-\[0\.85\]:hover {
|
|
2112
|
+
--tw-brightness: brightness(0.85);
|
|
2113
|
+
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
|
2114
|
+
}
|
|
2094
2115
|
.theme-crazyDomains .focus\:tw-border-error-600:focus {
|
|
2095
2116
|
--tw-border-opacity: 1;
|
|
2096
2117
|
border-color: rgb(186 24 79 / var(--tw-border-opacity));
|
|
@@ -719,6 +719,9 @@ video {
|
|
|
719
719
|
.theme-designCom .tw-ml-auto {
|
|
720
720
|
margin-left: auto;
|
|
721
721
|
}
|
|
722
|
+
.theme-designCom .tw-mr-1 {
|
|
723
|
+
margin-right: 0.25rem;
|
|
724
|
+
}
|
|
722
725
|
.theme-designCom .tw-mr-2 {
|
|
723
726
|
margin-right: 0.5rem;
|
|
724
727
|
}
|
|
@@ -1158,6 +1161,9 @@ video {
|
|
|
1158
1161
|
.theme-designCom .tw-rounded-sm {
|
|
1159
1162
|
border-radius: 0.125rem;
|
|
1160
1163
|
}
|
|
1164
|
+
.theme-designCom .tw-rounded-xl {
|
|
1165
|
+
border-radius: 0.1rem;
|
|
1166
|
+
}
|
|
1161
1167
|
.\!tw-rounded-l-none {
|
|
1162
1168
|
border-top-left-radius: 0px !important;
|
|
1163
1169
|
border-bottom-left-radius: 0px !important;
|
|
@@ -1450,6 +1456,17 @@ video {
|
|
|
1450
1456
|
.theme-designCom .tw-bg-opacity-80 {
|
|
1451
1457
|
--tw-bg-opacity: 0.8;
|
|
1452
1458
|
}
|
|
1459
|
+
.theme-designCom .tw-bg-gradient-to-t {
|
|
1460
|
+
background-image: linear-gradient(to top, var(--tw-gradient-stops));
|
|
1461
|
+
}
|
|
1462
|
+
.theme-designCom .tw-from-\[\#d946ef\] {
|
|
1463
|
+
--tw-gradient-from: #d946ef var(--tw-gradient-from-position);
|
|
1464
|
+
--tw-gradient-to: rgb(217 70 239 / 0) var(--tw-gradient-to-position);
|
|
1465
|
+
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
|
1466
|
+
}
|
|
1467
|
+
.theme-designCom .tw-to-\[\#8b5cf6\] {
|
|
1468
|
+
--tw-gradient-to: #8b5cf6 var(--tw-gradient-to-position);
|
|
1469
|
+
}
|
|
1453
1470
|
.theme-designCom .tw-bg-no-repeat {
|
|
1454
1471
|
background-repeat: no-repeat;
|
|
1455
1472
|
}
|
|
@@ -2091,6 +2108,10 @@ video {
|
|
|
2091
2108
|
--tw-shadow-color: #3f59f6 !important;
|
|
2092
2109
|
--tw-shadow: var(--tw-shadow-colored) !important;
|
|
2093
2110
|
}
|
|
2111
|
+
.theme-designCom .hover\:tw-brightness-\[0\.85\]:hover {
|
|
2112
|
+
--tw-brightness: brightness(0.85);
|
|
2113
|
+
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
|
2114
|
+
}
|
|
2094
2115
|
.theme-designCom .focus\:tw-border-error-600:focus {
|
|
2095
2116
|
--tw-border-opacity: 1;
|
|
2096
2117
|
border-color: rgb(182 58 42 / var(--tw-border-opacity));
|
|
@@ -719,6 +719,9 @@ video {
|
|
|
719
719
|
.theme-designCrowd .tw-ml-auto {
|
|
720
720
|
margin-left: auto;
|
|
721
721
|
}
|
|
722
|
+
.theme-designCrowd .tw-mr-1 {
|
|
723
|
+
margin-right: 0.25rem;
|
|
724
|
+
}
|
|
722
725
|
.theme-designCrowd .tw-mr-2 {
|
|
723
726
|
margin-right: 0.5rem;
|
|
724
727
|
}
|
|
@@ -1158,6 +1161,9 @@ video {
|
|
|
1158
1161
|
.theme-designCrowd .tw-rounded-sm {
|
|
1159
1162
|
border-radius: 0.125rem;
|
|
1160
1163
|
}
|
|
1164
|
+
.theme-designCrowd .tw-rounded-xl {
|
|
1165
|
+
border-radius: 0.75rem;
|
|
1166
|
+
}
|
|
1161
1167
|
.\!tw-rounded-l-none {
|
|
1162
1168
|
border-top-left-radius: 0px !important;
|
|
1163
1169
|
border-bottom-left-radius: 0px !important;
|
|
@@ -1450,6 +1456,17 @@ video {
|
|
|
1450
1456
|
.theme-designCrowd .tw-bg-opacity-80 {
|
|
1451
1457
|
--tw-bg-opacity: 0.8;
|
|
1452
1458
|
}
|
|
1459
|
+
.theme-designCrowd .tw-bg-gradient-to-t {
|
|
1460
|
+
background-image: linear-gradient(to top, var(--tw-gradient-stops));
|
|
1461
|
+
}
|
|
1462
|
+
.theme-designCrowd .tw-from-\[\#d946ef\] {
|
|
1463
|
+
--tw-gradient-from: #d946ef var(--tw-gradient-from-position);
|
|
1464
|
+
--tw-gradient-to: rgb(217 70 239 / 0) var(--tw-gradient-to-position);
|
|
1465
|
+
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
|
1466
|
+
}
|
|
1467
|
+
.theme-designCrowd .tw-to-\[\#8b5cf6\] {
|
|
1468
|
+
--tw-gradient-to: #8b5cf6 var(--tw-gradient-to-position);
|
|
1469
|
+
}
|
|
1453
1470
|
.theme-designCrowd .tw-bg-no-repeat {
|
|
1454
1471
|
background-repeat: no-repeat;
|
|
1455
1472
|
}
|
|
@@ -2091,6 +2108,10 @@ video {
|
|
|
2091
2108
|
--tw-shadow-color: #1197EB !important;
|
|
2092
2109
|
--tw-shadow: var(--tw-shadow-colored) !important;
|
|
2093
2110
|
}
|
|
2111
|
+
.theme-designCrowd .hover\:tw-brightness-\[0\.85\]:hover {
|
|
2112
|
+
--tw-brightness: brightness(0.85);
|
|
2113
|
+
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
|
2114
|
+
}
|
|
2094
2115
|
.theme-designCrowd .focus\:tw-border-error-600:focus {
|
|
2095
2116
|
--tw-border-opacity: 1;
|
|
2096
2117
|
border-color: rgb(195 50 48 / var(--tw-border-opacity));
|
|
@@ -92,6 +92,7 @@ import ButtonPrimaryWithIcon from './variants/ButtonPrimaryWithIcon.vue';
|
|
|
92
92
|
import ButtonSuccess from './variants/ButtonSuccess.vue';
|
|
93
93
|
import ButtonOutlineSuccess from './variants/ButtonOutlineSuccess.vue';
|
|
94
94
|
import ButtonNoHover from './variants/ButtonOutlineNoHover.vue';
|
|
95
|
+
import ButtonAi from './variants/ButtonAi.vue';
|
|
95
96
|
|
|
96
97
|
import ButtonInfo from './variants/ButtonInfo.vue';
|
|
97
98
|
import ButtonCrazyDomainsPrimary from './variants/crazy-domains/ButtonCrazyDomainsPrimary.vue';
|
|
@@ -131,6 +132,7 @@ export default {
|
|
|
131
132
|
'button-brandCrowd-flat': ButtonFlat,
|
|
132
133
|
'button-brandCrowd-pill': ButtonPill,
|
|
133
134
|
'button-brandCrowd-dark-mode-pill': ButtonDarkModePill,
|
|
135
|
+
'button-brandCrowd-ai': ButtonAi,
|
|
134
136
|
|
|
135
137
|
Icon,
|
|
136
138
|
},
|
|
@@ -721,6 +721,32 @@ export const OutlineWhite = (args, { argTypes }) => {
|
|
|
721
721
|
OutlineWhite.args = controlArgs;
|
|
722
722
|
OutlineWhite.argTypes = controlArgTypes;
|
|
723
723
|
|
|
724
|
+
export const AiSamples = (args, { argTypes }) => {
|
|
725
|
+
return {
|
|
726
|
+
components: {
|
|
727
|
+
StorybookButtonComponent,
|
|
728
|
+
},
|
|
729
|
+
props: Object.keys(argTypes),
|
|
730
|
+
data() {
|
|
731
|
+
return {
|
|
732
|
+
variants: generateSampleButtonWhiteVariants('ai'),
|
|
733
|
+
};
|
|
734
|
+
},
|
|
735
|
+
template: `
|
|
736
|
+
<div>
|
|
737
|
+
<StorybookButtonComponent
|
|
738
|
+
:disabled="disabled"
|
|
739
|
+
:full-width="fullWidth"
|
|
740
|
+
:grey-out-left="greyOutLeft"
|
|
741
|
+
:justify="justify"
|
|
742
|
+
:variants="variants"/>
|
|
743
|
+
</div>
|
|
744
|
+
`,
|
|
745
|
+
};
|
|
746
|
+
};
|
|
747
|
+
AiSamples.args = controlArgs;
|
|
748
|
+
AiSamples.argTypes = controlArgTypes;
|
|
749
|
+
|
|
724
750
|
PrimarySamples.story = {
|
|
725
751
|
name: 'Primary',
|
|
726
752
|
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<button
|
|
3
|
+
v-if="!url"
|
|
4
|
+
style="box-shadow: rgba(151, 65, 252, 0.2) 0 15px 30px -5px;"
|
|
5
|
+
class="tw-font-sans tw-bg-gradient-to-t tw-from-[#d946ef] tw-to-[#8b5cf6] tw-border-0 tw-font-bold tw-p-1 tw-text-white tw-duration-300 hover:tw-brightness-[0.85]"
|
|
6
|
+
:class="[
|
|
7
|
+
classes,
|
|
8
|
+
{
|
|
9
|
+
'tw-cursor-pointer': !disabled,
|
|
10
|
+
'tw-border-secondary-500 tw-text-secondary-500 hover:tw-bg-secondary-100': !white && !disabled,
|
|
11
|
+
'tw-border-white tw-text-white hover:tw-bg-info-400': white && !disabled,
|
|
12
|
+
'tw-border-grayscale-500 tw-bg-grayscale-400 tw-text-grayscale-600 tw-cursor-not-allowed': disabled,
|
|
13
|
+
'tw-border-grayscale-500 tw-bg-grayscale-400 hover:tw-bg-grayscale-300 hover:tw-border-grayscale-400 tw-text-grayscale-600':
|
|
14
|
+
isBusy,
|
|
15
|
+
},
|
|
16
|
+
computedClasses,
|
|
17
|
+
]"
|
|
18
|
+
:disabled="disabled"
|
|
19
|
+
:type="type"
|
|
20
|
+
v-bind="attrs"
|
|
21
|
+
@click="onClick"
|
|
22
|
+
>
|
|
23
|
+
<slot />
|
|
24
|
+
</button>
|
|
25
|
+
<a
|
|
26
|
+
v-else
|
|
27
|
+
:href="computedUrl"
|
|
28
|
+
class="tw-font-sans tw-inline-flex tw-justify-center tw-bg-gradient-to-t tw-from-[#d946ef] tw-to-[#8b5cf6] tw-border-0 tw-font-bold tw-text-white"
|
|
29
|
+
:class="[
|
|
30
|
+
commonUrlButtonClasses,
|
|
31
|
+
classes,
|
|
32
|
+
{
|
|
33
|
+
'tw-cursor-pointer': !disabled,
|
|
34
|
+
'tw-border-secondary-500 tw-text-secondary-500 hover:tw-bg-secondary-100': !white,
|
|
35
|
+
'tw-border-white tw-text-white hover:tw-bg-info-400': white,
|
|
36
|
+
'tw-cursor-not-allowed': disabled,
|
|
37
|
+
'tw-border-grayscale-500 tw-bg-grayscale-400 hover:tw-bg-grayscale-300 hover:tw-border-grayscale-400 tw-text-grayscale-600':
|
|
38
|
+
isBusy,
|
|
39
|
+
},
|
|
40
|
+
computedClasses,
|
|
41
|
+
]"
|
|
42
|
+
:download="download"
|
|
43
|
+
v-bind="attrs"
|
|
44
|
+
:target="target"
|
|
45
|
+
@click="onClick"
|
|
46
|
+
>
|
|
47
|
+
<slot />
|
|
48
|
+
</a>
|
|
49
|
+
</template>
|
|
50
|
+
<script>
|
|
51
|
+
import ButtonVariant from '../ButtonVariant.mixin.vue';
|
|
52
|
+
|
|
53
|
+
export default {
|
|
54
|
+
mixins: [ButtonVariant],
|
|
55
|
+
props: {
|
|
56
|
+
white: {
|
|
57
|
+
type: Boolean,
|
|
58
|
+
required: false,
|
|
59
|
+
default: false,
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
</script>
|
|
@@ -10,11 +10,14 @@
|
|
|
10
10
|
<button
|
|
11
11
|
class="button-group-item tw-text-xs tw-shadow-inner tw-w-full tw-py-2"
|
|
12
12
|
:class="{
|
|
13
|
-
'!tw-shadow-[0_0_0_2px] !tw-shadow-info-500': option.isSelected,
|
|
14
|
-
'!tw-shadow-[0_0_0_1px] !tw-shadow-secondary-200
|
|
13
|
+
'!tw-shadow-[0_0_0_2px] !tw-shadow-info-500': option.isSelected && !option.disabled,
|
|
14
|
+
'!tw-shadow-[0_0_0_1px] !tw-shadow-secondary-200': !option.isSelected && !option.disabled,
|
|
15
|
+
'hover:!tw-shadow-info-500': !option.isSelected && !option.disabled,
|
|
16
|
+
'tw-opacity-50 !tw-cursor-not-allowed !tw-shadow-secondary-200': option.disabled,
|
|
15
17
|
}"
|
|
18
|
+
:disabled="option.disabled"
|
|
16
19
|
v-bind="option.dataAttribute ? { [option.dataAttribute]: '' } : {}"
|
|
17
|
-
@click="$emit('on-select', option)"
|
|
20
|
+
@click="!option.disabled && $emit('on-select', option)"
|
|
18
21
|
>
|
|
19
22
|
<slot name="content" :option="option"></slot>
|
|
20
23
|
</button>
|
|
@@ -35,8 +38,10 @@
|
|
|
35
38
|
<button
|
|
36
39
|
v-if="variant === 'icon'"
|
|
37
40
|
:class="{
|
|
38
|
-
'!tw-shadow-[0_0_0_2px] !tw-shadow-info-500': option.isSelected,
|
|
39
|
-
'!tw-shadow-[0_0_0_1px] !tw-shadow-secondary-200
|
|
41
|
+
'!tw-shadow-[0_0_0_2px] !tw-shadow-info-500': option.isSelected && !option.disabled,
|
|
42
|
+
'!tw-shadow-[0_0_0_1px] !tw-shadow-secondary-200': !option.isSelected && !option.disabled,
|
|
43
|
+
'hover:!tw-shadow-info-500': !option.isSelected && !option.disabled,
|
|
44
|
+
'tw-opacity-50 !tw-cursor-not-allowed !tw-shadow-secondary-200': option.disabled,
|
|
40
45
|
'tw-px-2': !option.iconViewBox,
|
|
41
46
|
'tw-px-px':
|
|
42
47
|
option.iconViewBox && !option.isSelected && !option.iconName.includes('display-style') && btnStyleVariant, // TODO - move style logic to computed prop
|
|
@@ -45,9 +50,10 @@
|
|
|
45
50
|
'tw-px-0 tw-py-0': option.iconName.includes('display-style') || btnStyleVariant === 'compressed',
|
|
46
51
|
}"
|
|
47
52
|
:style="option.iconName.includes('display-style') ? { lineHeight: 0 } : {}"
|
|
53
|
+
:disabled="option.disabled"
|
|
48
54
|
class="tw-text-xs button-group-icon-button tw-shadow-inner"
|
|
49
55
|
v-bind="option.dataAttribute ? { [option.dataAttribute]: '' } : {}"
|
|
50
|
-
@click="$emit('on-select', option)"
|
|
56
|
+
@click="!option.disabled && $emit('on-select', option)"
|
|
51
57
|
>
|
|
52
58
|
<div
|
|
53
59
|
:class="{
|
|
@@ -67,12 +73,15 @@
|
|
|
67
73
|
<button
|
|
68
74
|
v-else
|
|
69
75
|
:class="{
|
|
70
|
-
'!tw-shadow-[0_0_0_2px] !tw-shadow-info-500': option.isSelected,
|
|
71
|
-
'!tw-shadow-[0_0_0_1px] !tw-shadow-secondary-200
|
|
76
|
+
'!tw-shadow-[0_0_0_2px] !tw-shadow-info-500': option.isSelected && !option.disabled,
|
|
77
|
+
'!tw-shadow-[0_0_0_1px] !tw-shadow-secondary-200': !option.isSelected && !option.disabled,
|
|
78
|
+
'hover:!tw-shadow-info-500': !option.isSelected && !option.disabled,
|
|
79
|
+
'tw-opacity-50 !tw-cursor-not-allowed !tw-shadow-secondary-200': option.disabled,
|
|
72
80
|
}"
|
|
81
|
+
:disabled="option.disabled"
|
|
73
82
|
class="tw-text-xs button-group-image-button tw-shadow-inner"
|
|
74
83
|
v-bind="option.dataAttribute ? { [option.dataAttribute]: '' } : {}"
|
|
75
|
-
@click="$emit('on-select', option)"
|
|
84
|
+
@click="!option.disabled && $emit('on-select', option)"
|
|
76
85
|
>
|
|
77
86
|
<img :src="option.src" :alt="option.alt" class="tw-w-full tw-h-full" />
|
|
78
87
|
</button>
|
|
@@ -90,11 +99,14 @@
|
|
|
90
99
|
:key="`button-${option.value}`"
|
|
91
100
|
:class="{
|
|
92
101
|
'tw-ml-2': idx > 0 && !columns,
|
|
93
|
-
'!tw-shadow-[0_0_0_2px] !tw-shadow-info-500': option.isSelected,
|
|
94
|
-
'!tw-shadow-[0_0_0_1px] !tw-shadow-secondary-200
|
|
102
|
+
'!tw-shadow-[0_0_0_2px] !tw-shadow-info-500': option.isSelected && !option.disabled,
|
|
103
|
+
'!tw-shadow-[0_0_0_1px] !tw-shadow-secondary-200': !option.isSelected && !option.disabled,
|
|
104
|
+
'hover:!tw-shadow-info-500': !option.isSelected && !option.disabled,
|
|
105
|
+
'tw-opacity-50 !tw-cursor-not-allowed !tw-shadow-secondary-200': option.disabled,
|
|
95
106
|
}"
|
|
107
|
+
:disabled="option.disabled"
|
|
96
108
|
class="tw-text-xs button-group-button tw-shadow-inner"
|
|
97
|
-
@click="$emit('on-select', option)"
|
|
109
|
+
@click="!option.disabled && $emit('on-select', option)"
|
|
98
110
|
>
|
|
99
111
|
{{ option.label }}
|
|
100
112
|
</button>
|
|
@@ -185,4 +197,24 @@ export default {
|
|
|
185
197
|
.button-group-button {
|
|
186
198
|
@apply button-group-item tw-w-full tw-p-3;
|
|
187
199
|
}
|
|
200
|
+
|
|
201
|
+
.button-group-item:disabled {
|
|
202
|
+
@apply tw-cursor-not-allowed tw-opacity-50;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
.button-group-item:disabled:hover {
|
|
206
|
+
@apply !tw-shadow-secondary-200;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/* Ensure disabled state overrides hover effects */
|
|
210
|
+
.button-group-item:disabled {
|
|
211
|
+
cursor: not-allowed !important;
|
|
212
|
+
opacity: 0.5 !important;
|
|
213
|
+
pointer-events: auto !important; /* Keep pointer events for cursor display */
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.button-group-item:disabled:hover {
|
|
217
|
+
box-shadow: 0 0 0 1px rgb(var(--color-secondary-200)) !important;
|
|
218
|
+
cursor: not-allowed !important;
|
|
219
|
+
}
|
|
188
220
|
</style>
|
|
@@ -18,11 +18,11 @@ export const Sample = () => {
|
|
|
18
18
|
data() {
|
|
19
19
|
return {
|
|
20
20
|
show: true,
|
|
21
|
-
}
|
|
21
|
+
};
|
|
22
22
|
},
|
|
23
23
|
template: `
|
|
24
24
|
<div class="tw-font-sans tw-w-1/4">
|
|
25
|
-
<Dropdown menu-align="right" v-model:show="show" @update:show="(visible) => show = visible">
|
|
25
|
+
<Dropdown menu-align="right" v-model:show="show" @update:show="(visible) => show = visible" menu-element-classes="tw-w-full">
|
|
26
26
|
<DropdownItem @click="() => show = false">
|
|
27
27
|
<span class="tw-grow">Menu item 1</span>
|
|
28
28
|
<Pill class="tw-text-white" :style="{ background: 'blue' }">Blue</Pill>
|
|
@@ -45,7 +45,7 @@ export const Disabled = () => {
|
|
|
45
45
|
},
|
|
46
46
|
template: `
|
|
47
47
|
<div class="tw-font-sans tw-w-1/4">
|
|
48
|
-
<Dropdown menu-align="right" disabled>
|
|
48
|
+
<Dropdown menu-align="right" disabled menu-element-classes="tw-w-full">
|
|
49
49
|
<DropdownItem>
|
|
50
50
|
<span>Menu item 1</span>
|
|
51
51
|
</DropdownItem>
|
|
@@ -67,7 +67,7 @@ export const LongListFixedHeight = () => {
|
|
|
67
67
|
},
|
|
68
68
|
template: `
|
|
69
69
|
<div class="tw-font-sans tw-w-1/4">
|
|
70
|
-
<Dropdown menu-align="right" menu-element-classes="tw-h-40 tw-overflow-y-auto">
|
|
70
|
+
<Dropdown menu-align="right" menu-element-classes="tw-h-40 tw-overflow-y-auto tw-w-full">
|
|
71
71
|
<DropdownItem v-for="(item, i) in items" :key="i">
|
|
72
72
|
<span class="tw-grow">{{ item.display }}</span>
|
|
73
73
|
</DropdownItem>
|
|
@@ -123,7 +123,7 @@ export const SampleElementClasses = () => {
|
|
|
123
123
|
},
|
|
124
124
|
template: `
|
|
125
125
|
<div class="tw-flex tw-gap-2 tw-m-4">
|
|
126
|
-
<Dropdown menu-align="right" element-classes="tw-h-12">
|
|
126
|
+
<Dropdown menu-align="right" element-classes="tw-h-12" menu-element-classes="tw-w-full">
|
|
127
127
|
<DropdownItem>
|
|
128
128
|
<span class="tw-grow">Menu item 1</span>
|
|
129
129
|
<Pill class="tw-text-white" :style="{ background: 'blue' }">Blue</Pill>
|