@bagelink/vue 0.0.884 → 0.0.886
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/components/form/inputs/SelectInput.vue.d.ts +2 -1
- package/dist/components/form/inputs/SelectInput.vue.d.ts.map +1 -1
- package/dist/index.cjs +22 -7
- package/dist/index.mjs +22 -7
- package/dist/style.css +8 -8
- package/package.json +1 -1
- package/src/components/form/inputs/SelectInput.vue +16 -4
|
@@ -94,7 +94,7 @@ declare function __VLS_template(): {
|
|
|
94
94
|
};
|
|
95
95
|
$forceUpdate: () => void;
|
|
96
96
|
$nextTick: typeof import('vue').nextTick;
|
|
97
|
-
$watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
|
|
97
|
+
$watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (... /** @type { [typeof __VLS_components.Icon, ] } */args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
|
|
98
98
|
} & Readonly<{}> & Omit<Readonly<{
|
|
99
99
|
value?: string;
|
|
100
100
|
thin?: boolean;
|
|
@@ -229,6 +229,7 @@ declare function __VLS_template(): {
|
|
|
229
229
|
modelValue: string | number;
|
|
230
230
|
debounceDelay: number;
|
|
231
231
|
}> | null;
|
|
232
|
+
trigger: HTMLButtonElement;
|
|
232
233
|
selectOptions: HTMLDivElement;
|
|
233
234
|
};
|
|
234
235
|
attrs: Partial<{}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectInput.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/form/inputs/SelectInput.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SelectInput.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/form/inputs/SelectInput.vue"],"names":[],"mappings":"AAobA,OAAO,EAMN,KAAK,aAAa,EAClB,KAAK,MAAM,EAEX,MAAM,eAAe,CAAA;AAEtB,OAAO,wBAAwB,CAAA;AA2O/B,iBAAS,cAAc;;sBA8RI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCAzFrB,GAAG,8CACmB,GAAG,yBAAyB,GAC3D,CAAA,iDAAiD,6DAAd,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAoGxB,OAAO,IAA6B;EAEjD;AAoCD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;aAxjBX,MAAM,EAAE;kBACH,MAAM;eACT,OAAO;iBACL,MAAM;iBACN,OAAO;eACT,OAAO;YACV,MAAM;gBACF,OAAO;kBACL,OAAO;WACd,aAAa;gBACR,OAAO;mBACJ,MAAM;gBACT,OAAO;wBACC,MAAM;eACf,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;;;;aAdvC,MAAM,EAAE;kBACH,MAAM;eACT,OAAO;iBACL,MAAM;iBACN,OAAO;eACT,OAAO;YACV,MAAM;gBACF,OAAO;kBACL,OAAO;WACd,aAAa;gBACR,OAAO;mBACJ,MAAM;gBACT,OAAO;wBACC,MAAM;eACf,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;;;kFAijB/C,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAWpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
package/dist/index.cjs
CHANGED
|
@@ -43998,6 +43998,7 @@ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
|
|
|
43998
43998
|
const emit2 = __emit;
|
|
43999
43999
|
const searchPlaceholder = vue.computed(() => props2.searchPlaceholder || "Search");
|
|
44000
44000
|
const searchInput = vue.ref();
|
|
44001
|
+
const trigger = vue.ref();
|
|
44001
44002
|
let selectedItems = vue.ref([]);
|
|
44002
44003
|
const selectedItemCount = vue.computed(() => selectedItems.value.length ?? 0);
|
|
44003
44004
|
let search = vue.ref("");
|
|
@@ -44040,6 +44041,7 @@ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
|
|
|
44040
44041
|
let highlightedIndex = vue.ref(0);
|
|
44041
44042
|
const selectOptions = vue.ref();
|
|
44042
44043
|
function navigate(direction) {
|
|
44044
|
+
console.log("navigate", direction);
|
|
44043
44045
|
if (direction === "up") {
|
|
44044
44046
|
highlightedIndex.value = highlightedIndex.value > 0 ? highlightedIndex.value - 1 : filteredOptions.value.length - 1;
|
|
44045
44047
|
} else if (direction === "down") {
|
|
@@ -44053,7 +44055,19 @@ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
|
|
|
44053
44055
|
}
|
|
44054
44056
|
const isSelected = (option2) => selectedItems.value.find((item) => getValue(option2) === getValue(item)) !== void 0;
|
|
44055
44057
|
function updateOpen(visible) {
|
|
44058
|
+
var _a2;
|
|
44059
|
+
console.log("updateOpen", visible);
|
|
44056
44060
|
open.value = visible;
|
|
44061
|
+
if (open.value) {
|
|
44062
|
+
(_a2 = dropdown.value) == null ? void 0 : _a2.show();
|
|
44063
|
+
} else {
|
|
44064
|
+
setTimeout(() => {
|
|
44065
|
+
var _a3;
|
|
44066
|
+
if (trigger.value) trigger.value.focus();
|
|
44067
|
+
if (searchInput.value) searchInput.value.focus();
|
|
44068
|
+
(_a3 = dropdown.value) == null ? void 0 : _a3.hide();
|
|
44069
|
+
}, 10);
|
|
44070
|
+
}
|
|
44057
44071
|
if (!open.value) {
|
|
44058
44072
|
if (props2.searchable && !props2.multiselect && !search.value && !selected.value) {
|
|
44059
44073
|
selectedItems.value = [];
|
|
@@ -44063,12 +44077,12 @@ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
|
|
|
44063
44077
|
}
|
|
44064
44078
|
highlightedIndex.value = -1;
|
|
44065
44079
|
search.value = "";
|
|
44066
|
-
} else {
|
|
44067
|
-
|
|
44080
|
+
} else if (props2.searchable && !props2.multiselect && selectedItemCount.value) {
|
|
44081
|
+
search.value = selectedLabel.value;
|
|
44068
44082
|
setTimeout(
|
|
44069
44083
|
() => {
|
|
44070
|
-
var
|
|
44071
|
-
return (_c = (_b = (
|
|
44084
|
+
var _a3, _b, _c;
|
|
44085
|
+
return (_c = (_b = (_a3 = searchInput.value) == null ? void 0 : _a3.$el) == null ? void 0 : _b.querySelector("input")) == null ? void 0 : _c.focus();
|
|
44072
44086
|
},
|
|
44073
44087
|
100
|
|
44074
44088
|
);
|
|
@@ -44161,7 +44175,6 @@ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
|
|
|
44161
44175
|
ref: dropdown,
|
|
44162
44176
|
placement: "bottom-start",
|
|
44163
44177
|
class: "bagel-input selectinput",
|
|
44164
|
-
noAutoFocus: "",
|
|
44165
44178
|
onHide: _cache[10] || (_cache[10] = ($event) => updateOpen(false))
|
|
44166
44179
|
}, {
|
|
44167
44180
|
trigger: vue.withCtx(() => [
|
|
@@ -44186,11 +44199,13 @@ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
|
|
|
44186
44199
|
]
|
|
44187
44200
|
}, null, 8, ["modelValue", "placeholder"])) : (vue.openBlock(), vue.createElementBlock("button", {
|
|
44188
44201
|
key: 1,
|
|
44202
|
+
ref_key: "trigger",
|
|
44203
|
+
ref: trigger,
|
|
44189
44204
|
disabled: _ctx.disabled,
|
|
44190
44205
|
type: "button",
|
|
44191
44206
|
class: vue.normalizeClass(["selectinput-btn", { isEmpty: selectedItemCount.value === 0 }]),
|
|
44192
44207
|
onFocus: openOptions,
|
|
44193
|
-
onClick: _cache[6] || (_cache[6] = ($event) => updateOpen(true))
|
|
44208
|
+
onClick: _cache[6] || (_cache[6] = vue.withModifiers(($event) => updateOpen(true), ["stop"]))
|
|
44194
44209
|
}, [
|
|
44195
44210
|
_ctx.icon ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$c), {
|
|
44196
44211
|
key: 0,
|
|
@@ -44284,7 +44299,7 @@ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
|
|
|
44284
44299
|
};
|
|
44285
44300
|
}
|
|
44286
44301
|
});
|
|
44287
|
-
const SelectInput = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["__scopeId", "data-v-
|
|
44302
|
+
const SelectInput = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["__scopeId", "data-v-973e8b39"]]);
|
|
44288
44303
|
/*!
|
|
44289
44304
|
* Signature Pad v5.0.3 | https://github.com/szimek/signature_pad
|
|
44290
44305
|
* (c) 2024 Szymon Nowak | Released under the MIT license
|
package/dist/index.mjs
CHANGED
|
@@ -43996,6 +43996,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
|
|
|
43996
43996
|
const emit2 = __emit;
|
|
43997
43997
|
const searchPlaceholder = computed(() => props2.searchPlaceholder || "Search");
|
|
43998
43998
|
const searchInput = ref();
|
|
43999
|
+
const trigger = ref();
|
|
43999
44000
|
let selectedItems = ref([]);
|
|
44000
44001
|
const selectedItemCount = computed(() => selectedItems.value.length ?? 0);
|
|
44001
44002
|
let search = ref("");
|
|
@@ -44038,6 +44039,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
|
|
|
44038
44039
|
let highlightedIndex = ref(0);
|
|
44039
44040
|
const selectOptions = ref();
|
|
44040
44041
|
function navigate(direction) {
|
|
44042
|
+
console.log("navigate", direction);
|
|
44041
44043
|
if (direction === "up") {
|
|
44042
44044
|
highlightedIndex.value = highlightedIndex.value > 0 ? highlightedIndex.value - 1 : filteredOptions.value.length - 1;
|
|
44043
44045
|
} else if (direction === "down") {
|
|
@@ -44051,7 +44053,19 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
|
|
|
44051
44053
|
}
|
|
44052
44054
|
const isSelected = (option2) => selectedItems.value.find((item) => getValue(option2) === getValue(item)) !== void 0;
|
|
44053
44055
|
function updateOpen(visible) {
|
|
44056
|
+
var _a2;
|
|
44057
|
+
console.log("updateOpen", visible);
|
|
44054
44058
|
open.value = visible;
|
|
44059
|
+
if (open.value) {
|
|
44060
|
+
(_a2 = dropdown.value) == null ? void 0 : _a2.show();
|
|
44061
|
+
} else {
|
|
44062
|
+
setTimeout(() => {
|
|
44063
|
+
var _a3;
|
|
44064
|
+
if (trigger.value) trigger.value.focus();
|
|
44065
|
+
if (searchInput.value) searchInput.value.focus();
|
|
44066
|
+
(_a3 = dropdown.value) == null ? void 0 : _a3.hide();
|
|
44067
|
+
}, 10);
|
|
44068
|
+
}
|
|
44055
44069
|
if (!open.value) {
|
|
44056
44070
|
if (props2.searchable && !props2.multiselect && !search.value && !selected.value) {
|
|
44057
44071
|
selectedItems.value = [];
|
|
@@ -44061,12 +44075,12 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
|
|
|
44061
44075
|
}
|
|
44062
44076
|
highlightedIndex.value = -1;
|
|
44063
44077
|
search.value = "";
|
|
44064
|
-
} else {
|
|
44065
|
-
|
|
44078
|
+
} else if (props2.searchable && !props2.multiselect && selectedItemCount.value) {
|
|
44079
|
+
search.value = selectedLabel.value;
|
|
44066
44080
|
setTimeout(
|
|
44067
44081
|
() => {
|
|
44068
|
-
var
|
|
44069
|
-
return (_c = (_b = (
|
|
44082
|
+
var _a3, _b, _c;
|
|
44083
|
+
return (_c = (_b = (_a3 = searchInput.value) == null ? void 0 : _a3.$el) == null ? void 0 : _b.querySelector("input")) == null ? void 0 : _c.focus();
|
|
44070
44084
|
},
|
|
44071
44085
|
100
|
|
44072
44086
|
);
|
|
@@ -44159,7 +44173,6 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
|
|
|
44159
44173
|
ref: dropdown,
|
|
44160
44174
|
placement: "bottom-start",
|
|
44161
44175
|
class: "bagel-input selectinput",
|
|
44162
|
-
noAutoFocus: "",
|
|
44163
44176
|
onHide: _cache[10] || (_cache[10] = ($event) => updateOpen(false))
|
|
44164
44177
|
}, {
|
|
44165
44178
|
trigger: withCtx(() => [
|
|
@@ -44184,11 +44197,13 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
|
|
|
44184
44197
|
]
|
|
44185
44198
|
}, null, 8, ["modelValue", "placeholder"])) : (openBlock(), createElementBlock("button", {
|
|
44186
44199
|
key: 1,
|
|
44200
|
+
ref_key: "trigger",
|
|
44201
|
+
ref: trigger,
|
|
44187
44202
|
disabled: _ctx.disabled,
|
|
44188
44203
|
type: "button",
|
|
44189
44204
|
class: normalizeClass(["selectinput-btn", { isEmpty: selectedItemCount.value === 0 }]),
|
|
44190
44205
|
onFocus: openOptions,
|
|
44191
|
-
onClick: _cache[6] || (_cache[6] = ($event) => updateOpen(true))
|
|
44206
|
+
onClick: _cache[6] || (_cache[6] = withModifiers(($event) => updateOpen(true), ["stop"]))
|
|
44192
44207
|
}, [
|
|
44193
44208
|
_ctx.icon ? (openBlock(), createBlock(unref(_sfc_main$c), {
|
|
44194
44209
|
key: 0,
|
|
@@ -44282,7 +44297,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
|
|
|
44282
44297
|
};
|
|
44283
44298
|
}
|
|
44284
44299
|
});
|
|
44285
|
-
const SelectInput = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["__scopeId", "data-v-
|
|
44300
|
+
const SelectInput = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["__scopeId", "data-v-973e8b39"]]);
|
|
44286
44301
|
/*!
|
|
44287
44302
|
* Signature Pad v5.0.3 | https://github.com/szimek/signature_pad
|
|
44288
44303
|
* (c) 2024 Szymon Nowak | Released under the MIT license
|
package/dist/style.css
CHANGED
|
@@ -1316,10 +1316,10 @@ p {
|
|
|
1316
1316
|
} */
|
|
1317
1317
|
.resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper__popper{z-index:10000;top:0;left:0;outline:none}.v-popper__popper.v-popper__popper--hidden{visibility:hidden;opacity:0;transition:opacity .15s,visibility .15s;pointer-events:none}.v-popper__popper.v-popper__popper--shown{visibility:visible;opacity:1;transition:opacity .15s}.v-popper__popper.v-popper__popper--skip-transition,.v-popper__popper.v-popper__popper--skip-transition>.v-popper__wrapper{transition:none!important}.v-popper__backdrop{position:absolute;top:0;left:0;width:100%;height:100%;display:none}.v-popper__inner{position:relative;box-sizing:border-box;overflow-y:auto}.v-popper__inner>div{position:relative;z-index:1;max-width:inherit;max-height:inherit}.v-popper__arrow-container{position:absolute;width:10px;height:10px}.v-popper__popper--arrow-overflow .v-popper__arrow-container,.v-popper__popper--no-positioning .v-popper__arrow-container{display:none}.v-popper__arrow-inner,.v-popper__arrow-outer{border-style:solid;position:absolute;top:0;left:0;width:0;height:0}.v-popper__arrow-inner{visibility:hidden;border-width:7px}.v-popper__arrow-outer{border-width:6px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{left:-2px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{left:-1px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer{border-bottom-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:0}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{border-top-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{top:-4px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{top:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{top:-1px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{border-left-width:0;border-left-color:transparent!important;border-top-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{left:-4px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{left:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer{border-right-width:0;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner{left:-2px}.v-popper--theme-tooltip .v-popper__inner{background:rgba(0,0,0,.8);color:#fff;border-radius:6px;padding:7px 12px 6px}.v-popper--theme-tooltip .v-popper__arrow-outer{border-color:#000c}.v-popper--theme-dropdown .v-popper__inner{background:#fff;color:#000;border-radius:6px;border:1px solid #ddd;box-shadow:0 6px 30px #0000001a}.v-popper--theme-dropdown .v-popper__arrow-inner{visibility:visible;border-color:#fff}.v-popper--theme-dropdown .v-popper__arrow-outer{border-color:#ddd}
|
|
1318
1318
|
|
|
1319
|
-
.selectinput[data-v-
|
|
1319
|
+
.selectinput[data-v-973e8b39] {
|
|
1320
1320
|
width: 100%;
|
|
1321
1321
|
}
|
|
1322
|
-
.selectinput-option[data-v-
|
|
1322
|
+
.selectinput-option[data-v-973e8b39] {
|
|
1323
1323
|
padding: 6px 12px;
|
|
1324
1324
|
cursor: pointer;
|
|
1325
1325
|
border-radius: 5px;
|
|
@@ -1331,23 +1331,23 @@ p {
|
|
|
1331
1331
|
font-size: var(--input-font-size);
|
|
1332
1332
|
margin-block: 0.15rem;
|
|
1333
1333
|
}
|
|
1334
|
-
.selectinput-option .bgl_icon-font[data-v-
|
|
1334
|
+
.selectinput-option .bgl_icon-font[data-v-973e8b39]{
|
|
1335
1335
|
line-height: normal;
|
|
1336
1336
|
}
|
|
1337
|
-
.selectinput-options.multiselect .selectinput-option[data-v-
|
|
1337
|
+
.selectinput-options.multiselect .selectinput-option[data-v-973e8b39] {
|
|
1338
1338
|
grid-template-columns: 10px 1fr;
|
|
1339
1339
|
}
|
|
1340
|
-
.selectinput-options[data-v-
|
|
1340
|
+
.selectinput-options[data-v-973e8b39] {
|
|
1341
1341
|
max-height: 300px;
|
|
1342
1342
|
overflow-y: auto;
|
|
1343
1343
|
}
|
|
1344
|
-
.selectinput-option[data-v-
|
|
1344
|
+
.selectinput-option[data-v-973e8b39]:hover, .highlight[data-v-973e8b39] {
|
|
1345
1345
|
background: var(--bgl-gray-20);
|
|
1346
1346
|
}
|
|
1347
|
-
.isEmpty p[data-v-
|
|
1347
|
+
.isEmpty p[data-v-973e8b39] {
|
|
1348
1348
|
opacity: 0.3;
|
|
1349
1349
|
}
|
|
1350
|
-
.selected[data-v-
|
|
1350
|
+
.selected[data-v-973e8b39]{
|
|
1351
1351
|
/* background: var(--bgl-primary-tint); */
|
|
1352
1352
|
background: var(--bgl-selected);
|
|
1353
1353
|
}
|
package/package.json
CHANGED
|
@@ -35,6 +35,7 @@ const emit = defineEmits(['update:modelValue']) // Add 'search' event
|
|
|
35
35
|
const searchPlaceholder = $computed(() => props.searchPlaceholder || 'Search')
|
|
36
36
|
|
|
37
37
|
const searchInput = $ref<HTMLInputElement | undefined>()
|
|
38
|
+
const trigger = $ref<HTMLButtonElement | undefined>()
|
|
38
39
|
|
|
39
40
|
let selectedItems = $ref<Option[]>([])
|
|
40
41
|
|
|
@@ -97,6 +98,7 @@ let highlightedIndex = $ref(0)
|
|
|
97
98
|
const selectOptions = $ref<HTMLElement | undefined>()
|
|
98
99
|
|
|
99
100
|
function navigate(direction: 'up' | 'down') {
|
|
101
|
+
console.log('navigate', direction)
|
|
100
102
|
if (direction === 'up') {
|
|
101
103
|
highlightedIndex = highlightedIndex > 0 ? highlightedIndex - 1 : filteredOptions.length - 1
|
|
102
104
|
} else if (direction === 'down') {
|
|
@@ -111,7 +113,17 @@ function navigate(direction: 'up' | 'down') {
|
|
|
111
113
|
const isSelected = (option: Option) => selectedItems.find(item => getValue(option) === getValue(item)) !== undefined
|
|
112
114
|
|
|
113
115
|
function updateOpen(visible: boolean) {
|
|
116
|
+
console.log('updateOpen', visible)
|
|
114
117
|
open = visible
|
|
118
|
+
|
|
119
|
+
if (open) { dropdown?.show() }
|
|
120
|
+
else {
|
|
121
|
+
setTimeout(() => {
|
|
122
|
+
if (trigger) trigger.focus()
|
|
123
|
+
if (searchInput) searchInput.focus()
|
|
124
|
+
dropdown?.hide()
|
|
125
|
+
}, 10)
|
|
126
|
+
}
|
|
115
127
|
if (!open) {
|
|
116
128
|
if (props.searchable && !props.multiselect && !search && !selected) { selectedItems = []
|
|
117
129
|
}
|
|
@@ -121,8 +133,8 @@ function updateOpen(visible: boolean) {
|
|
|
121
133
|
highlightedIndex = -1
|
|
122
134
|
search = ''
|
|
123
135
|
}
|
|
124
|
-
else {
|
|
125
|
-
|
|
136
|
+
else if (props.searchable && !props.multiselect && selectedItemCount) {
|
|
137
|
+
search = selectedLabel as string
|
|
126
138
|
setTimeout(
|
|
127
139
|
() => (searchInput as any)?.$el?.querySelector('input')?.focus(),
|
|
128
140
|
100,
|
|
@@ -231,7 +243,6 @@ onMounted(() => {
|
|
|
231
243
|
ref="dropdown"
|
|
232
244
|
placement="bottom-start"
|
|
233
245
|
class="bagel-input selectinput"
|
|
234
|
-
noAutoFocus
|
|
235
246
|
@hide="updateOpen(false)"
|
|
236
247
|
>
|
|
237
248
|
<template #trigger>
|
|
@@ -253,12 +264,13 @@ onMounted(() => {
|
|
|
253
264
|
/>
|
|
254
265
|
<button
|
|
255
266
|
v-else
|
|
267
|
+
ref="trigger"
|
|
256
268
|
:disabled="disabled"
|
|
257
269
|
type="button"
|
|
258
270
|
class="selectinput-btn"
|
|
259
271
|
:class="{ isEmpty: selectedItemCount === 0 }"
|
|
260
272
|
@focus="openOptions"
|
|
261
|
-
@click="updateOpen(true)"
|
|
273
|
+
@click.stop="updateOpen(true)"
|
|
262
274
|
>
|
|
263
275
|
<Icon v-if="icon" :icon="icon" />
|
|
264
276
|
<p v-if="!hideLabel">
|