@youcan/celeste 0.6.22 → 0.6.24
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/dist/celeste.css +41 -41
- package/dist/cjs/combobox-trigger.js +2 -1
- package/dist/cjs/combobox.js +24 -14
- package/dist/components/combobox/combobox.d.ts +1 -0
- package/dist/es/combobox-trigger.js +2 -1
- package/dist/es/combobox.js +24 -14
- package/package.json +3 -3
- package/src/components/combobox/combobox-trigger.vue +1 -0
- package/src/components/combobox/combobox.vue +23 -3
package/dist/celeste.css
CHANGED
|
@@ -1972,7 +1972,7 @@ to {
|
|
|
1972
1972
|
width: 100%;
|
|
1973
1973
|
height: 1px;
|
|
1974
1974
|
background-color: var(--color-stroke-soft-200);
|
|
1975
|
-
}.celeste-dropdown-anchor-trigger[data-v-
|
|
1975
|
+
}.celeste-dropdown-anchor-trigger[data-v-43f9e53e] {
|
|
1976
1976
|
transition-property: background-color, transform, opacity;
|
|
1977
1977
|
transition-duration: var(--animation-fast);
|
|
1978
1978
|
transition-timing-function: ease-out;
|
|
@@ -1984,29 +1984,29 @@ to {
|
|
|
1984
1984
|
gap: var(--spacing-8);
|
|
1985
1985
|
cursor: pointer;
|
|
1986
1986
|
}
|
|
1987
|
-
.celeste-dropdown-anchor-trigger[data-v-
|
|
1987
|
+
.celeste-dropdown-anchor-trigger[data-v-43f9e53e] i {
|
|
1988
1988
|
width: 20px;
|
|
1989
1989
|
height: 20px;
|
|
1990
1990
|
color: var(--color-icon-soft-400);
|
|
1991
1991
|
}
|
|
1992
|
-
.celeste-dropdown-anchor-trigger[data-v-
|
|
1992
|
+
.celeste-dropdown-anchor-trigger[data-v-43f9e53e]:hover {
|
|
1993
1993
|
background: var(--color-bg-weak-50);
|
|
1994
1994
|
}
|
|
1995
|
-
.celeste-dropdown-anchor-trigger[data-v-
|
|
1995
|
+
.celeste-dropdown-anchor-trigger[data-v-43f9e53e]:focus, .celeste-dropdown-anchor-trigger[data-v-43f9e53e]:focus-visible, .celeste-dropdown-anchor-trigger[data-v-43f9e53e]:focus-within {
|
|
1996
1996
|
outline: none;
|
|
1997
1997
|
box-shadow: var(--shadow-buttons-important-focus);
|
|
1998
1998
|
}
|
|
1999
|
-
.celeste-dropdown-anchor-trigger .celeste-dropdown-anchor-trigger-prefix[data-v-
|
|
1999
|
+
.celeste-dropdown-anchor-trigger .celeste-dropdown-anchor-trigger-prefix[data-v-43f9e53e] {
|
|
2000
2000
|
display: flex;
|
|
2001
2001
|
align-items: center;
|
|
2002
2002
|
justify-content: center;
|
|
2003
2003
|
}
|
|
2004
|
-
.celeste-dropdown-anchor-trigger .celeste-dropdown-anchor-trigger-prefix-selected[data-v-
|
|
2004
|
+
.celeste-dropdown-anchor-trigger .celeste-dropdown-anchor-trigger-prefix-selected[data-v-43f9e53e] {
|
|
2005
2005
|
display: flex;
|
|
2006
2006
|
align-items: center;
|
|
2007
2007
|
justify-content: center;
|
|
2008
2008
|
}
|
|
2009
|
-
.celeste-dropdown-anchor-trigger .celeste-dropdown-input[data-v-
|
|
2009
|
+
.celeste-dropdown-anchor-trigger .celeste-dropdown-input[data-v-43f9e53e] {
|
|
2010
2010
|
display: flex;
|
|
2011
2011
|
flex: 1 0 0;
|
|
2012
2012
|
align-items: center;
|
|
@@ -2017,7 +2017,7 @@ to {
|
|
|
2017
2017
|
cursor: pointer;
|
|
2018
2018
|
gap: var(--spacing-8);
|
|
2019
2019
|
}
|
|
2020
|
-
.celeste-dropdown-anchor-trigger .celeste-dropdown-trigger[data-v-
|
|
2020
|
+
.celeste-dropdown-anchor-trigger .celeste-dropdown-trigger[data-v-43f9e53e] {
|
|
2021
2021
|
transition-property: background-color, transform, opacity;
|
|
2022
2022
|
transition-duration: var(--animation-fast);
|
|
2023
2023
|
transition-timing-function: ease-out;
|
|
@@ -2028,27 +2028,27 @@ to {
|
|
|
2028
2028
|
color: var(--color-icon-soft-400);
|
|
2029
2029
|
cursor: pointer;
|
|
2030
2030
|
}
|
|
2031
|
-
.celeste-dropdown-anchor-trigger[data-state=open][data-v-
|
|
2031
|
+
.celeste-dropdown-anchor-trigger[data-state=open][data-v-43f9e53e]:not([data-disabled]) .celeste-dropdown-trigger {
|
|
2032
2032
|
transform: rotate(180deg);
|
|
2033
2033
|
}
|
|
2034
|
-
.celeste-dropdown-anchor-trigger-error[data-v-
|
|
2034
|
+
.celeste-dropdown-anchor-trigger-error[data-v-43f9e53e]:not(.celeste-dropdown-anchor-trigger-type-compact) {
|
|
2035
2035
|
border: 1px solid var(--color-state-error-base);
|
|
2036
2036
|
}
|
|
2037
|
-
.celeste-dropdown-anchor-trigger[data-disabled][data-v-
|
|
2037
|
+
.celeste-dropdown-anchor-trigger[data-disabled][data-v-43f9e53e] {
|
|
2038
2038
|
background: var(--color-bg-weak-50);
|
|
2039
2039
|
color: var(--color-text-disabled-300);
|
|
2040
2040
|
cursor: not-allowed;
|
|
2041
2041
|
}
|
|
2042
|
-
.celeste-dropdown-anchor-trigger[data-disabled] .celeste-dropdown-input[data-v-
|
|
2042
|
+
.celeste-dropdown-anchor-trigger[data-disabled] .celeste-dropdown-input[data-v-43f9e53e] {
|
|
2043
2043
|
color: var(--color-text-disabled-300);
|
|
2044
2044
|
cursor: not-allowed;
|
|
2045
2045
|
}
|
|
2046
|
-
.celeste-dropdown-anchor-trigger[data-disabled][data-v-
|
|
2047
|
-
.celeste-dropdown-anchor-trigger[data-disabled] .celeste-dropdown-trigger[data-v-
|
|
2046
|
+
.celeste-dropdown-anchor-trigger[data-disabled][data-v-43f9e53e] i,
|
|
2047
|
+
.celeste-dropdown-anchor-trigger[data-disabled] .celeste-dropdown-trigger[data-v-43f9e53e] {
|
|
2048
2048
|
color: var(--color-icon-disabled-300);
|
|
2049
2049
|
cursor: not-allowed;
|
|
2050
2050
|
}
|
|
2051
|
-
.celeste-dropdown-anchor-trigger[data-state=open][data-v-
|
|
2051
|
+
.celeste-dropdown-anchor-trigger[data-state=open][data-v-43f9e53e]:not([data-disabled],
|
|
2052
2052
|
.celeste-dropdown-anchor-trigger-type-compact,
|
|
2053
2053
|
.celeste-dropdown-anchor-trigger-type-compact-input) {
|
|
2054
2054
|
border: 1px solid var(--color-stroke-strong-950);
|
|
@@ -2057,90 +2057,90 @@ to {
|
|
|
2057
2057
|
}
|
|
2058
2058
|
.celeste-dropdown-anchor-trigger[data-state=open]:not([data-disabled],
|
|
2059
2059
|
.celeste-dropdown-anchor-trigger-type-compact,
|
|
2060
|
-
.celeste-dropdown-anchor-trigger-type-compact-input) .celeste-dropdown-input[data-v-
|
|
2060
|
+
.celeste-dropdown-anchor-trigger-type-compact-input) .celeste-dropdown-input[data-v-43f9e53e] {
|
|
2061
2061
|
color: var(--color-text-strong-950);
|
|
2062
2062
|
}
|
|
2063
2063
|
.celeste-dropdown-anchor-trigger[data-state=open]:not([data-disabled],
|
|
2064
2064
|
.celeste-dropdown-anchor-trigger-type-compact,
|
|
2065
|
-
.celeste-dropdown-anchor-trigger-type-compact-input) i[data-v-
|
|
2065
|
+
.celeste-dropdown-anchor-trigger-type-compact-input) i[data-v-43f9e53e] {
|
|
2066
2066
|
color: var(--color-icon-strong-950);
|
|
2067
2067
|
}
|
|
2068
|
-
.celeste-dropdown-anchor-trigger-filled[data-v-
|
|
2068
|
+
.celeste-dropdown-anchor-trigger-filled[data-v-43f9e53e] {
|
|
2069
2069
|
color: var(--color-text-strong-950);
|
|
2070
2070
|
}
|
|
2071
|
-
.celeste-dropdown-anchor-trigger-filled[data-v-
|
|
2071
|
+
.celeste-dropdown-anchor-trigger-filled[data-v-43f9e53e] .celeste-dropdown-input {
|
|
2072
2072
|
color: var(--color-text-strong-950);
|
|
2073
2073
|
}
|
|
2074
|
-
.celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-compact[data-v-
|
|
2074
|
+
.celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-compact[data-v-43f9e53e] {
|
|
2075
2075
|
width: -moz-fit-content;
|
|
2076
2076
|
width: fit-content;
|
|
2077
2077
|
border: none;
|
|
2078
2078
|
background: transparent;
|
|
2079
2079
|
box-shadow: none;
|
|
2080
2080
|
}
|
|
2081
|
-
.celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-compact[data-v-
|
|
2081
|
+
.celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-compact[data-v-43f9e53e] .celeste-dropdown-input {
|
|
2082
2082
|
flex: inherit;
|
|
2083
2083
|
}
|
|
2084
|
-
.celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-compact:hover:not([data-disabled]) .celeste-dropdown-input[data-v-
|
|
2084
|
+
.celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-compact:hover:not([data-disabled]) .celeste-dropdown-input[data-v-43f9e53e], .celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-compact[data-state=open]:not([data-disabled]) .celeste-dropdown-input[data-v-43f9e53e] {
|
|
2085
2085
|
color: var(--color-text-strong-950);
|
|
2086
2086
|
}
|
|
2087
|
-
.celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-compact[data-v-
|
|
2087
|
+
.celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-compact[data-v-43f9e53e]:hover:not([data-disabled]) i, .celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-compact[data-state=open][data-v-43f9e53e]:not([data-disabled]) i {
|
|
2088
2088
|
color: var(--color-icon-strong-950);
|
|
2089
2089
|
}
|
|
2090
|
-
.celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-compact-input[data-v-
|
|
2090
|
+
.celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-compact-input[data-v-43f9e53e] {
|
|
2091
2091
|
width: -moz-fit-content;
|
|
2092
2092
|
width: fit-content;
|
|
2093
2093
|
border: none;
|
|
2094
2094
|
border-radius: var(--radius-0);
|
|
2095
2095
|
box-shadow: none;
|
|
2096
2096
|
}
|
|
2097
|
-
.celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-compact-input[data-v-
|
|
2097
|
+
.celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-compact-input[data-v-43f9e53e] .celeste-dropdown-input {
|
|
2098
2098
|
flex: inherit;
|
|
2099
2099
|
}
|
|
2100
|
-
.celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-compact-input[data-state=open][data-v-
|
|
2100
|
+
.celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-compact-input[data-state=open][data-v-43f9e53e] {
|
|
2101
2101
|
box-shadow: none;
|
|
2102
2102
|
}
|
|
2103
|
-
.celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-inline[data-v-
|
|
2103
|
+
.celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-inline[data-v-43f9e53e] {
|
|
2104
2104
|
width: -moz-fit-content;
|
|
2105
2105
|
width: fit-content;
|
|
2106
2106
|
gap: var(--spacing-4);
|
|
2107
2107
|
}
|
|
2108
|
-
.celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-inline[data-v-
|
|
2108
|
+
.celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-inline[data-v-43f9e53e] .celeste-dropdown-input {
|
|
2109
2109
|
flex: inherit;
|
|
2110
2110
|
}
|
|
2111
|
-
.celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-normal[data-v-
|
|
2111
|
+
.celeste-dropdown-anchor-trigger.celeste-dropdown-anchor-trigger-type-normal[data-v-43f9e53e] {
|
|
2112
2112
|
width: 100%;
|
|
2113
2113
|
min-width: 300px;
|
|
2114
2114
|
}
|
|
2115
|
-
.celeste-dropdown-anchor-trigger-size-xs[data-v-
|
|
2115
|
+
.celeste-dropdown-anchor-trigger-size-xs[data-v-43f9e53e] {
|
|
2116
2116
|
height: 32px;
|
|
2117
2117
|
padding: var(--spacing-6);
|
|
2118
2118
|
border-radius: var(--radius-8);
|
|
2119
2119
|
}
|
|
2120
|
-
.celeste-dropdown-anchor-trigger-size-sm[data-v-
|
|
2120
|
+
.celeste-dropdown-anchor-trigger-size-sm[data-v-43f9e53e] {
|
|
2121
2121
|
height: 36px;
|
|
2122
2122
|
padding: var(--spacing-8);
|
|
2123
2123
|
border-radius: var(--radius-8);
|
|
2124
2124
|
}
|
|
2125
|
-
.celeste-dropdown-anchor-trigger-size-md[data-v-
|
|
2125
|
+
.celeste-dropdown-anchor-trigger-size-md[data-v-43f9e53e] {
|
|
2126
2126
|
height: 40px;
|
|
2127
2127
|
padding: var(--spacing-10);
|
|
2128
2128
|
border-radius: var(--radius-10);
|
|
2129
|
-
}[data-v-
|
|
2129
|
+
}[data-v-cad50435] {
|
|
2130
2130
|
box-sizing: border-box;
|
|
2131
2131
|
}
|
|
2132
|
-
.celeste-dropdown-anchor-trigger-prefix[data-v-
|
|
2132
|
+
.celeste-dropdown-anchor-trigger-prefix[data-v-cad50435] {
|
|
2133
2133
|
display: flex;
|
|
2134
2134
|
align-items: center;
|
|
2135
2135
|
justify-content: center;
|
|
2136
2136
|
}
|
|
2137
|
-
.celeste-dropdown-anchor-trigger-prefix-selected[data-v-
|
|
2137
|
+
.celeste-dropdown-anchor-trigger-prefix-selected[data-v-cad50435] {
|
|
2138
2138
|
display: flex;
|
|
2139
2139
|
align-items: center;
|
|
2140
2140
|
justify-content: center;
|
|
2141
2141
|
}
|
|
2142
|
-
.celeste-dropdown-item-image[data-v-
|
|
2143
|
-
.selected-dropdown-image[data-v-
|
|
2142
|
+
.celeste-dropdown-item-image[data-v-cad50435],
|
|
2143
|
+
.selected-dropdown-image[data-v-cad50435] {
|
|
2144
2144
|
display: flex;
|
|
2145
2145
|
align-items: center;
|
|
2146
2146
|
justify-content: center;
|
|
@@ -2150,7 +2150,7 @@ to {
|
|
|
2150
2150
|
object-fit: cover;
|
|
2151
2151
|
border-radius: var(--radius-full);
|
|
2152
2152
|
}
|
|
2153
|
-
.celeste-dropdown-input[data-v-
|
|
2153
|
+
.celeste-dropdown-input[data-v-cad50435] {
|
|
2154
2154
|
display: flex;
|
|
2155
2155
|
flex: 1 0 0;
|
|
2156
2156
|
align-items: center;
|
|
@@ -2161,7 +2161,7 @@ to {
|
|
|
2161
2161
|
cursor: pointer;
|
|
2162
2162
|
gap: var(--spacing-8);
|
|
2163
2163
|
}
|
|
2164
|
-
.celeste-dropdown-trigger[data-v-
|
|
2164
|
+
.celeste-dropdown-trigger[data-v-cad50435] {
|
|
2165
2165
|
display: flex;
|
|
2166
2166
|
place-items: center center;
|
|
2167
2167
|
transition-property: transform;
|
|
@@ -2172,7 +2172,7 @@ to {
|
|
|
2172
2172
|
color: var(--color-icon-soft-400);
|
|
2173
2173
|
cursor: pointer;
|
|
2174
2174
|
}
|
|
2175
|
-
.celeste-dropdown-inner-input[data-v-
|
|
2175
|
+
.celeste-dropdown-inner-input[data-v-cad50435] {
|
|
2176
2176
|
display: flex;
|
|
2177
2177
|
position: sticky;
|
|
2178
2178
|
z-index: 50;
|
|
@@ -2181,7 +2181,7 @@ to {
|
|
|
2181
2181
|
gap: var(--spacing-4);
|
|
2182
2182
|
background-color: var(--color-bg-white-0);
|
|
2183
2183
|
}
|
|
2184
|
-
.celeste-dropdown-inner-input.sr-only[data-v-
|
|
2184
|
+
.celeste-dropdown-inner-input.sr-only[data-v-cad50435] {
|
|
2185
2185
|
position: absolute;
|
|
2186
2186
|
width: 1px;
|
|
2187
2187
|
height: 1px;
|
|
@@ -24,6 +24,7 @@ const _sfc_main = /* @__PURE__ */ Mo.defineComponent({
|
|
|
24
24
|
const forwarded = index.At(delegatedProps);
|
|
25
25
|
return (_ctx, _cache) => {
|
|
26
26
|
return Mo.openBlock(), Mo.createBlock(Mo.unref(index.Uv), Mo.mergeProps(Mo.unref(forwarded), {
|
|
27
|
+
type: "button",
|
|
27
28
|
tabindex: "0",
|
|
28
29
|
class: Mo.unref(clsx.clsx)(
|
|
29
30
|
"celeste-dropdown-anchor-trigger",
|
|
@@ -42,5 +43,5 @@ const _sfc_main = /* @__PURE__ */ Mo.defineComponent({
|
|
|
42
43
|
};
|
|
43
44
|
}
|
|
44
45
|
});
|
|
45
|
-
const ComboboxTrigger = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
46
|
+
const ComboboxTrigger = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main, [["__scopeId", "data-v-43f9e53e"]]);
|
|
46
47
|
module.exports = ComboboxTrigger;
|
package/dist/cjs/combobox.js
CHANGED
|
@@ -27,13 +27,11 @@ const _hoisted_6 = {
|
|
|
27
27
|
key: 2,
|
|
28
28
|
class: "celeste-dropdown-input"
|
|
29
29
|
};
|
|
30
|
-
const _hoisted_7 = {
|
|
31
|
-
|
|
32
|
-
const _hoisted_9 = {
|
|
33
|
-
key: 2,
|
|
30
|
+
const _hoisted_7 = {
|
|
31
|
+
key: 0,
|
|
34
32
|
class: "celeste-input-badge"
|
|
35
33
|
};
|
|
36
|
-
const
|
|
34
|
+
const _hoisted_8 = ["src"];
|
|
37
35
|
const __default__ = {
|
|
38
36
|
inheritAttrs: false
|
|
39
37
|
};
|
|
@@ -43,6 +41,7 @@ const _sfc_main = /* @__PURE__ */ Mo.defineComponent({
|
|
|
43
41
|
props: {
|
|
44
42
|
options: {},
|
|
45
43
|
valueBy: {},
|
|
44
|
+
labelBy: {},
|
|
46
45
|
placeholder: { default: "Select" },
|
|
47
46
|
type: {},
|
|
48
47
|
size: { default: "md" },
|
|
@@ -76,6 +75,7 @@ const _sfc_main = /* @__PURE__ */ Mo.defineComponent({
|
|
|
76
75
|
filterFunction: filterFunction2,
|
|
77
76
|
options,
|
|
78
77
|
valueBy,
|
|
78
|
+
labelBy,
|
|
79
79
|
placeholder,
|
|
80
80
|
type,
|
|
81
81
|
size,
|
|
@@ -89,6 +89,16 @@ const _sfc_main = /* @__PURE__ */ Mo.defineComponent({
|
|
|
89
89
|
});
|
|
90
90
|
const forwarded = index.xe(delegatedProps, emits);
|
|
91
91
|
const model = Mo.computed(() => props.modelValue);
|
|
92
|
+
const label = Mo.computed(() => {
|
|
93
|
+
if (!model.value)
|
|
94
|
+
return props.placeholder;
|
|
95
|
+
if (Array.isArray(model.value)) {
|
|
96
|
+
if (model.value.length === 0)
|
|
97
|
+
return props.placeholder;
|
|
98
|
+
return model.value.map((item) => props.labelBy ? item[props.labelBy] : item.label).join(", ");
|
|
99
|
+
}
|
|
100
|
+
return props.labelBy ? model.value[props.labelBy] : model.value.label;
|
|
101
|
+
});
|
|
92
102
|
function isSelected(value) {
|
|
93
103
|
if (!Array.isArray(props.modelValue) || !props.multiple)
|
|
94
104
|
return;
|
|
@@ -104,13 +114,13 @@ const _sfc_main = /* @__PURE__ */ Mo.defineComponent({
|
|
|
104
114
|
}
|
|
105
115
|
function filterFunction(list, searchTerm) {
|
|
106
116
|
return list.filter((option) => {
|
|
107
|
-
const { value, label } = option;
|
|
108
|
-
if (!value || !
|
|
117
|
+
const { value, label: label2 } = option;
|
|
118
|
+
if (!value || !label2)
|
|
109
119
|
return false;
|
|
110
120
|
if (props.valueBy && typeof value === "object" && props.valueBy in value) {
|
|
111
|
-
return String(value[props.valueBy]).toLowerCase().includes(searchTerm.toLowerCase()) ||
|
|
121
|
+
return String(value[props.valueBy]).toLowerCase().includes(searchTerm.toLowerCase()) || label2.toString().toLowerCase().includes(searchTerm.toLowerCase());
|
|
112
122
|
}
|
|
113
|
-
return value.toString().toLowerCase().includes(searchTerm.toLowerCase()) ||
|
|
123
|
+
return value.toString().toLowerCase().includes(searchTerm.toLowerCase()) || label2.toString().toLowerCase().includes(searchTerm.toLowerCase());
|
|
114
124
|
});
|
|
115
125
|
}
|
|
116
126
|
const mergedBadgeProps = Mo.computed(() => ({
|
|
@@ -118,7 +128,7 @@ const _sfc_main = /* @__PURE__ */ Mo.defineComponent({
|
|
|
118
128
|
disabled: props.disabled
|
|
119
129
|
}));
|
|
120
130
|
return (_ctx, _cache) => {
|
|
121
|
-
return Mo.openBlock(), Mo.createBlock(comboboxRoot_vue_vue_type_script_setup_true_lang._sfc_main, Mo.mergeProps(Mo.unref(forwarded), { "filter-function": filterFunction }), {
|
|
131
|
+
return Mo.openBlock(), Mo.createBlock(comboboxRoot_vue_vue_type_script_setup_true_lang._sfc_main, Mo.mergeProps({ class: "shrink-0" }, Mo.unref(forwarded), { "filter-function": filterFunction }), {
|
|
122
132
|
default: Mo.withCtx(() => [
|
|
123
133
|
Mo.createVNode(comboboxAnchor_vue_vue_type_script_setup_true_lang._sfc_main, { "as-child": "" }, {
|
|
124
134
|
default: Mo.withCtx(() => [
|
|
@@ -149,8 +159,8 @@ const _sfc_main = /* @__PURE__ */ Mo.defineComponent({
|
|
|
149
159
|
Mo.renderSlot(_ctx.$slots, "prefix", { class: "celeste-dropdown-anchor-trigger-prefix-default" }, void 0, true)
|
|
150
160
|
])) : Mo.createCommentVNode("", true),
|
|
151
161
|
_ctx.type !== "inline" ? (Mo.openBlock(), Mo.createElementBlock("div", _hoisted_6, [
|
|
152
|
-
|
|
153
|
-
mergedBadgeProps.value && _ctx.badgeProps ? (Mo.openBlock(), Mo.createElementBlock("span",
|
|
162
|
+
Mo.createElementVNode("span", null, Mo.toDisplayString(label.value), 1),
|
|
163
|
+
mergedBadgeProps.value && _ctx.badgeProps ? (Mo.openBlock(), Mo.createElementBlock("span", _hoisted_7, [
|
|
154
164
|
Mo.createVNode(badge, Mo.normalizeProps(Mo.guardReactiveProps(mergedBadgeProps.value)), null, 16)
|
|
155
165
|
])) : Mo.createCommentVNode("", true)
|
|
156
166
|
])) : Mo.createCommentVNode("", true),
|
|
@@ -202,7 +212,7 @@ const _sfc_main = /* @__PURE__ */ Mo.defineComponent({
|
|
|
202
212
|
src: option.image,
|
|
203
213
|
alt: "option",
|
|
204
214
|
class: "celeste-dropdown-item-image"
|
|
205
|
-
}, null, 8,
|
|
215
|
+
}, null, 8, _hoisted_8)) : Mo.createCommentVNode("", true)
|
|
206
216
|
]),
|
|
207
217
|
_: 2
|
|
208
218
|
}, 1032, ["label", "sublabel", "description", "checkbox", "value", "selected"]);
|
|
@@ -219,5 +229,5 @@ const _sfc_main = /* @__PURE__ */ Mo.defineComponent({
|
|
|
219
229
|
};
|
|
220
230
|
}
|
|
221
231
|
});
|
|
222
|
-
const combobox = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
232
|
+
const combobox = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main, [["__scopeId", "data-v-cad50435"]]);
|
|
223
233
|
module.exports = combobox;
|
|
@@ -4,6 +4,7 @@ import { ComboboxItemPropsType } from './combobox-item';
|
|
|
4
4
|
export interface ComboboxPropsType extends ComboboxRootProps {
|
|
5
5
|
options: ComboboxItemPropsType[];
|
|
6
6
|
valueBy?: string;
|
|
7
|
+
labelBy?: string;
|
|
7
8
|
placeholder?: string;
|
|
8
9
|
type?: 'normal' | 'compact' | 'inline' | 'compact-input';
|
|
9
10
|
size?: 'xs' | 'sm' | 'md';
|
|
@@ -23,6 +23,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
23
23
|
const forwarded = At(delegatedProps);
|
|
24
24
|
return (_ctx, _cache) => {
|
|
25
25
|
return openBlock(), createBlock(unref(Uv), mergeProps(unref(forwarded), {
|
|
26
|
+
type: "button",
|
|
26
27
|
tabindex: "0",
|
|
27
28
|
class: unref(clsx)(
|
|
28
29
|
"celeste-dropdown-anchor-trigger",
|
|
@@ -41,7 +42,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
41
42
|
};
|
|
42
43
|
}
|
|
43
44
|
});
|
|
44
|
-
const ComboboxTrigger = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
45
|
+
const ComboboxTrigger = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-43f9e53e"]]);
|
|
45
46
|
export {
|
|
46
47
|
ComboboxTrigger as default
|
|
47
48
|
};
|
package/dist/es/combobox.js
CHANGED
|
@@ -26,13 +26,11 @@ const _hoisted_6 = {
|
|
|
26
26
|
key: 2,
|
|
27
27
|
class: "celeste-dropdown-input"
|
|
28
28
|
};
|
|
29
|
-
const _hoisted_7 = {
|
|
30
|
-
|
|
31
|
-
const _hoisted_9 = {
|
|
32
|
-
key: 2,
|
|
29
|
+
const _hoisted_7 = {
|
|
30
|
+
key: 0,
|
|
33
31
|
class: "celeste-input-badge"
|
|
34
32
|
};
|
|
35
|
-
const
|
|
33
|
+
const _hoisted_8 = ["src"];
|
|
36
34
|
const __default__ = {
|
|
37
35
|
inheritAttrs: false
|
|
38
36
|
};
|
|
@@ -42,6 +40,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
42
40
|
props: {
|
|
43
41
|
options: {},
|
|
44
42
|
valueBy: {},
|
|
43
|
+
labelBy: {},
|
|
45
44
|
placeholder: { default: "Select" },
|
|
46
45
|
type: {},
|
|
47
46
|
size: { default: "md" },
|
|
@@ -75,6 +74,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
75
74
|
filterFunction: filterFunction2,
|
|
76
75
|
options,
|
|
77
76
|
valueBy,
|
|
77
|
+
labelBy,
|
|
78
78
|
placeholder,
|
|
79
79
|
type,
|
|
80
80
|
size,
|
|
@@ -88,6 +88,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
88
88
|
});
|
|
89
89
|
const forwarded = xe(delegatedProps, emits);
|
|
90
90
|
const model = computed(() => props.modelValue);
|
|
91
|
+
const label = computed(() => {
|
|
92
|
+
if (!model.value)
|
|
93
|
+
return props.placeholder;
|
|
94
|
+
if (Array.isArray(model.value)) {
|
|
95
|
+
if (model.value.length === 0)
|
|
96
|
+
return props.placeholder;
|
|
97
|
+
return model.value.map((item) => props.labelBy ? item[props.labelBy] : item.label).join(", ");
|
|
98
|
+
}
|
|
99
|
+
return props.labelBy ? model.value[props.labelBy] : model.value.label;
|
|
100
|
+
});
|
|
91
101
|
function isSelected(value) {
|
|
92
102
|
if (!Array.isArray(props.modelValue) || !props.multiple)
|
|
93
103
|
return;
|
|
@@ -103,13 +113,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
103
113
|
}
|
|
104
114
|
function filterFunction(list, searchTerm) {
|
|
105
115
|
return list.filter((option) => {
|
|
106
|
-
const { value, label } = option;
|
|
107
|
-
if (!value || !
|
|
116
|
+
const { value, label: label2 } = option;
|
|
117
|
+
if (!value || !label2)
|
|
108
118
|
return false;
|
|
109
119
|
if (props.valueBy && typeof value === "object" && props.valueBy in value) {
|
|
110
|
-
return String(value[props.valueBy]).toLowerCase().includes(searchTerm.toLowerCase()) ||
|
|
120
|
+
return String(value[props.valueBy]).toLowerCase().includes(searchTerm.toLowerCase()) || label2.toString().toLowerCase().includes(searchTerm.toLowerCase());
|
|
111
121
|
}
|
|
112
|
-
return value.toString().toLowerCase().includes(searchTerm.toLowerCase()) ||
|
|
122
|
+
return value.toString().toLowerCase().includes(searchTerm.toLowerCase()) || label2.toString().toLowerCase().includes(searchTerm.toLowerCase());
|
|
113
123
|
});
|
|
114
124
|
}
|
|
115
125
|
const mergedBadgeProps = computed(() => ({
|
|
@@ -117,7 +127,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
117
127
|
disabled: props.disabled
|
|
118
128
|
}));
|
|
119
129
|
return (_ctx, _cache) => {
|
|
120
|
-
return openBlock(), createBlock(_sfc_main$1, mergeProps(unref(forwarded), { "filter-function": filterFunction }), {
|
|
130
|
+
return openBlock(), createBlock(_sfc_main$1, mergeProps({ class: "shrink-0" }, unref(forwarded), { "filter-function": filterFunction }), {
|
|
121
131
|
default: withCtx(() => [
|
|
122
132
|
createVNode(_sfc_main$2, { "as-child": "" }, {
|
|
123
133
|
default: withCtx(() => [
|
|
@@ -148,8 +158,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
148
158
|
renderSlot(_ctx.$slots, "prefix", { class: "celeste-dropdown-anchor-trigger-prefix-default" }, void 0, true)
|
|
149
159
|
])) : createCommentVNode("", true),
|
|
150
160
|
_ctx.type !== "inline" ? (openBlock(), createElementBlock("div", _hoisted_6, [
|
|
151
|
-
|
|
152
|
-
mergedBadgeProps.value && _ctx.badgeProps ? (openBlock(), createElementBlock("span",
|
|
161
|
+
createElementVNode("span", null, toDisplayString(label.value), 1),
|
|
162
|
+
mergedBadgeProps.value && _ctx.badgeProps ? (openBlock(), createElementBlock("span", _hoisted_7, [
|
|
153
163
|
createVNode(Badge, normalizeProps(guardReactiveProps(mergedBadgeProps.value)), null, 16)
|
|
154
164
|
])) : createCommentVNode("", true)
|
|
155
165
|
])) : createCommentVNode("", true),
|
|
@@ -201,7 +211,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
201
211
|
src: option.image,
|
|
202
212
|
alt: "option",
|
|
203
213
|
class: "celeste-dropdown-item-image"
|
|
204
|
-
}, null, 8,
|
|
214
|
+
}, null, 8, _hoisted_8)) : createCommentVNode("", true)
|
|
205
215
|
]),
|
|
206
216
|
_: 2
|
|
207
217
|
}, 1032, ["label", "sublabel", "description", "checkbox", "value", "selected"]);
|
|
@@ -218,7 +228,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
218
228
|
};
|
|
219
229
|
}
|
|
220
230
|
});
|
|
221
|
-
const combobox = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
231
|
+
const combobox = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-cad50435"]]);
|
|
222
232
|
export {
|
|
223
233
|
combobox as default
|
|
224
234
|
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@youcan/celeste",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.6.
|
|
4
|
+
"version": "0.6.24",
|
|
5
5
|
"author": "YouCan <tech@youcan.shop>",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"youcan",
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"clsx": "^2.1.1",
|
|
33
33
|
"radix-vue": "^1.9.12",
|
|
34
34
|
"tinycolor2": "^1.6.0",
|
|
35
|
-
"@youcan/celeste-icons": "0.6.
|
|
36
|
-
"@youcan/celeste-tokens": "0.6.
|
|
35
|
+
"@youcan/celeste-icons": "0.6.24",
|
|
36
|
+
"@youcan/celeste-tokens": "0.6.24"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@chromatic-com/storybook": "^4.0.0",
|
|
@@ -28,6 +28,7 @@ const delegatedProps = computed(() => {
|
|
|
28
28
|
filterFunction,
|
|
29
29
|
options,
|
|
30
30
|
valueBy,
|
|
31
|
+
labelBy,
|
|
31
32
|
placeholder,
|
|
32
33
|
type,
|
|
33
34
|
size,
|
|
@@ -45,6 +46,24 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
|
|
|
45
46
|
|
|
46
47
|
const model = computed(() => props.modelValue as ComboboxItemPropsType[] | ComboboxItemPropsType | undefined);
|
|
47
48
|
|
|
49
|
+
const label = computed(() => {
|
|
50
|
+
if (!model.value)
|
|
51
|
+
return props.placeholder;
|
|
52
|
+
|
|
53
|
+
if (Array.isArray(model.value)) {
|
|
54
|
+
if (model.value.length === 0)
|
|
55
|
+
return props.placeholder;
|
|
56
|
+
|
|
57
|
+
return model.value
|
|
58
|
+
.map(item => props.labelBy
|
|
59
|
+
? item[props.labelBy as keyof ComboboxItemPropsType]
|
|
60
|
+
: item.label)
|
|
61
|
+
.join(', ');
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return props.labelBy ? model.value[props.labelBy as keyof ComboboxItemPropsType] : model.value.label;
|
|
65
|
+
});
|
|
66
|
+
|
|
48
67
|
function isSelected(value: ComboboxItemPropsType['value']): boolean | undefined {
|
|
49
68
|
if (!Array.isArray(props.modelValue) || !props.multiple)
|
|
50
69
|
return;
|
|
@@ -96,6 +115,7 @@ const mergedBadgeProps = computed(() => ({
|
|
|
96
115
|
export interface ComboboxPropsType extends ComboboxRootProps {
|
|
97
116
|
options: ComboboxItemPropsType[];
|
|
98
117
|
valueBy?: string;
|
|
118
|
+
labelBy?: string;
|
|
99
119
|
placeholder?: string;
|
|
100
120
|
type?: 'normal' | 'compact' | 'inline' | 'compact-input';
|
|
101
121
|
size?: 'xs' | 'sm' | 'md';
|
|
@@ -112,6 +132,7 @@ export default {
|
|
|
112
132
|
|
|
113
133
|
<template>
|
|
114
134
|
<ComboboxRoot
|
|
135
|
+
class="shrink-0"
|
|
115
136
|
v-bind="forwarded"
|
|
116
137
|
:filter-function="filterFunction"
|
|
117
138
|
>
|
|
@@ -148,9 +169,8 @@ export default {
|
|
|
148
169
|
v-if="type !== 'inline'"
|
|
149
170
|
class="celeste-dropdown-input"
|
|
150
171
|
>
|
|
151
|
-
<span
|
|
152
|
-
|
|
153
|
-
{{ model && !Array.isArray(model) ? model.label : props.placeholder }}
|
|
172
|
+
<span>
|
|
173
|
+
{{ label }}
|
|
154
174
|
</span>
|
|
155
175
|
<span v-if="mergedBadgeProps && badgeProps" class="celeste-input-badge">
|
|
156
176
|
<Badge v-bind="mergedBadgeProps" />
|