diff --git a/src/better-select.css b/src/better-select.css
index 98def13..e5385f1 100644
--- a/src/better-select.css
+++ b/src/better-select.css
@@ -87,4 +87,13 @@ better-select {
&:state(open)::part(display)::after {
transform: rotate(180deg);
}
+
+ &:not([required]):state(value)::part(display)::after {
+ display: none;
+ }
+
+ &::part(clear) {
+ display: block;
+ margin-left: auto;
+ }
}
diff --git a/src/better-select.js b/src/better-select.js
index 5c7487d..4169ebd 100644
--- a/src/better-select.js
+++ b/src/better-select.js
@@ -154,7 +154,10 @@ export class BetterSelect extends HTMLElement {
[part="display-text"]:empty {
display: none;
}
- :not(:empty + *)[name="placeholder"] {
+ :not(#text:empty + *)[name="placeholder"] {
+ display: none;
+ }
+ #text:empty ~ *[name="clear"] {
display: none;
}
[part="drop-down"], [part="item"] {
@@ -205,6 +208,13 @@ export class BetterSelect extends HTMLElement {
[part="list"] { display: none; }
slot[name="loading"] { display: block; }
}
+ slot[name="clear"] > button {
+ all: unset;
+ transform: rotate(45deg);
+ &::after {
+ content: "+";
+ }
+ }
`
/** @type {HTMLElement} */
@@ -232,6 +242,11 @@ export class BetterSelect extends HTMLElement {
+
+
+
+
+