@night-owl-elite/vue-select 1.3.33 → 1.3.35

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/README.md CHANGED
@@ -1,102 +1,119 @@
1
- # Vue 3 Tree Select Component
1
+ # Vue 3 Vue Select Component
2
2
 
3
3
  [![npm](https://img.shields.io/npm/v/@night-owl-elite/vue-select.svg)](https://www.npmjs.com/package/@night-owl-elite/vue-select)
4
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
-
6
- A feature-rich, accessible, and customizable tree-select component for Vue 3.
7
-
8
- This component provides a powerful and flexible way to select single or multiple items from a hierarchical (tree) data structure. It includes searching, custom item rendering, "select all" functionality, and is styled with Bootstrap 5 and uses Font Awesome for icons.
9
-
10
- ---
11
-
12
- ### Features
13
-
14
- **Single & Multiple Selection**: Easily switch between modes with the `multiple` prop.
15
-
16
- **Two Selection UIs**: Choose between `checkbox` or `highlight` styles for selection.
17
-
18
- **Search & Filtering**: A built-in search bar to filter tree nodes in real-time.
19
-
20
- **"Select All" Children**: In `multiple` mode, click a parent to select/deselect all its descendants.
21
-
22
- **Customizable Data Keys**: Specify which properties in your data objects to use for labels, values, and disabled states.
23
-
24
- **Customizable Items**: Use scoped slots to take full control over how each tree item is rendered.
25
-
26
- **Built with Bootstrap 5**: Seamlessly integrates with projects using the Bootstrap 5 framework.
27
-
28
- ---
29
-
30
- ### Installation
31
-
32
- 1. **Install the package from npm:**
33
- ```bash
34
- npm install @night-owl-elite/vue-select
35
- ```
36
-
37
- 2. **Install Peer Dependencies:**
38
- This component relies on Bootstrap for styling and dropdown functionality.
39
- ```bash
40
- npm install bootstrap @popperjs/core
41
- ```
42
-
43
- 3. **Import CSS & JS:**
44
- Make sure to import Bootstrap's CSS and JS in your main entry file (e.g., `main.js` or `main.ts`):
45
- ```javascript
46
- // main.js or main.ts
47
- import 'bootstrap/dist/css/bootstrap.min.css';
48
- import 'bootstrap/dist/js/bootstrap.bundle.min.js';
49
- ```
50
-
51
- ---
52
-
53
- ### Usage
54
-
55
- Here is a basic example of how to use the `TreeSelect` component.
56
-
57
- ```vue
58
- <template>
59
- <div class="container mt-5">
60
- <TreeSelect
61
- v-model="selectedValue"
62
- :items="treeData"
63
- :multiple="true"
64
- :select-all="true"
65
- :searchable="true"
66
- placeholder="Select categories..."
67
- option-label="value"
68
- option-value="code"
69
- disabled-key="isDisabled"
70
- exclude-from-selected-list-key="excludeFromSelectedList"
71
- />
72
- <p class="mt-3"><strong>Selected:</strong> {{ selectedValue }}</p>
73
- </div>
74
- </template>
75
-
76
- <script setup>
77
- import { ref } from 'vue';
78
- import TreeSelect from '@night-owl-elite/vue-select';
79
-
80
- const selectedValue = ref([]);
81
-
82
- const treeData = [
83
- {
84
- code: 'electronics',
85
- value: 'Electronics',
86
- // This node won't be added to the modelValue, useful for grouping
87
- excludeFromSelectedList: true,
88
- children: [
89
- { code: 'smartphones', value: 'Smartphones' },
90
- { code: 'laptops', value: 'Laptops' },
91
- ],
92
- },
93
- {
94
- code: 'furniture',
95
- value: 'Furniture',
96
- children: [
97
- { code: 'tables', value: 'Tables' },
98
- { code: 'chairs', value: 'Chairs', isDisabled: true },
99
- ],
100
- },
101
- ];
102
- </script>
4
+
5
+ A powerful, flexible, and accessible select component for Vue 3.
6
+
7
+ This component provides a fully featured, searchable, and sortable dropdown tree. It's designed to be highly customizable, supporting single and multiple selection, checkbox modes, chip display, custom item rendering, and more.
8
+
9
+ ## Features
10
+
11
+ * **Tree Structure:** Infinitely nested tree support.
12
+ * **Single & Multiple Select:** Use it for one item or many.
13
+ * **Display Modes:** Show selections as plain `'text'` or as `'chips'`.
14
+ * **Selection Modes:** Use familiar `'checkbox'` UI or a simple `'highlight'` on click.
15
+ * **Powerful Search:**
16
+ * Built-in filtering of all nodes.
17
+ * Supports searching multiple/nested keys (e.g., `['name', 'user.email']`) via `keyFilters`.
18
+ * **Sorting:**
19
+ * Sort the items in the dropdown list by any key.
20
+ * Automatically sorts the selected "chips" (when `multiple: true`).
21
+ * **"Add New" Item:** Allows users to add items that aren't in the list (`allowAddNew` prop).
22
+ * **Fully Customizable:**
23
+ * Use the `#default` slot to render each tree item.
24
+ * Use the `#display` slot to *completely* customize the trigger/button area.
25
+ * **Accessible:** Built with accessibility in mind (keyboard navigation, ARIA attributes).
26
+ * **Loading & Disabled States:** Easily managed with `isLoading` and `disabled` props.
27
+ * ...and much more, like `selectAll`, `disableBranchNodes`, and size variants (`sm`, `md`, `lg`, `xl`).
28
+
29
+
30
+ ## Installation
31
+
32
+ Install with npm
33
+
34
+ ```bash
35
+ npm install @your-package-name/vue-tree-select
36
+
37
+ ```
38
+ #### Props
39
+ I see you've provided the raw data for the props of the `Vue Select` component and would like them formatted into a clean Markdown table, similar to the example you provided.
40
+
41
+ Here is the formatted table:
42
+
43
+ ## Props
44
+
45
+ | Prop | Type | Default | Description |
46
+ | :--- | :--- | :--- | :--- |
47
+ | **`modelValue`** | `[String, Number, Array]` | `null` | The selected value(s). Use `v-model`. |
48
+ | **`items`** | `Array` | `[]` | The array of tree nodes to display. |
49
+ | **`multiple`** | `Boolean` | `false` | Allow multiple items to be selected. |
50
+ | **`displayMode`** | `String` | `'text'` | How to display the selection: `'text'` or `'chips'`. |
51
+ | **`selectMode`** | `String` | `'checkbox'` | UI style for selection: `'checkbox'` or `'highlight'`. |
52
+ | **`optionLabel`** | `String` | `'value'` | The key in your item object to use for the display label. |
53
+ | **`optionValue`** | `String` | `'code'` | The key in your item object to use for the unique value. |
54
+ | **`keyFilters`** | `Array` | `[]` | Array of keys to search against. E.g., `['name', 'details.email']`. Defaults to `optionLabel` if empty. |
55
+ | **`placeholder`** | `String` | `'Select item...'` | Placeholder text when no item is selected. |
56
+ | **`isInvalid`** | `Boolean` | `false` | Applies a visual "invalid" state (e.g., red border). |
57
+ | **`disabled`** | `Boolean` | `false` | Disables the entire component. |
58
+ | **`searchable`** | `Boolean` | `true` | Shows a search input in the dropdown. |
59
+ | **`isLoading`** | `Boolean` | `false` | Shows a loading state and disables the component. |
60
+ | **`showClearButton`** | `Boolean` | `true` | Shows a global "clear" (X) icon. |
61
+ | **`selectAll`** | `Boolean` | `false` | When true, selecting a parent node also selects all its children. |
62
+ | **`deselectAll`** | `Boolean` | `true` | When true, deselecting a parent node also deselects all its children. |
63
+ | **`canDeselect`** | `Boolean` | `true` | (Single select) Allows deselecting the active item. |
64
+ | **`disabledKey`** | `String` | `null` | The key in your item object to check if an item is disabled. |
65
+ | **`excludeFromSelectedListKey`** | `String` | `null` | Key to check if an item should be excluded from `modelValue` (e.g., for non-selectable parent groups). |
66
+ | **`disableBranchNodes`** | `Boolean` | `false` | Prevents selection of items that have children (branch nodes). |
67
+ | **`size`** | `String` | `'sm'` | Component size: `'sm'`, `'md'`, `'lg'`, or `'xl'`. |
68
+ | **`sortable`** | `Boolean` | `false` | Enables sorting controls in the dropdown. |
69
+ | **`sortOptions`** | `Array` | `[]` | Array of sort options. E.g., `[{ value: 'name', label: 'Name' }]`. |
70
+ | **`defaultSortKey`** | `String` | `null` | The default key (from `sortOptions`) to sort by. |
71
+ | **`defaultSortDirection`** | `String` | `'asc'` | Default sort direction: `'asc'` or `'desc'`. |
72
+ | **`maxVisibleChipsDisplay`** | `Number` | `3` | Max number of chips to show before grouping them into a `+N` badge. |
73
+ | **`closeOnSelect`** | `Boolean` | `true` | (Single select) Closes the dropdown after selecting an item. |
74
+ | **`allowAddNew`** | `Boolean` | `false` | Allows adding a new item based on the search query. |
75
+ | **`addNewMode`** | `String` | `'button'` | How to trigger "add new": on `'button'` click or `'enter'` press. |
76
+ | **`addNewLabel`** | `String` | `'Add new record'` | Text used in the "add new" button/prompt. |
77
+
78
+ ## Events
79
+
80
+ | Event | Payload | Description |
81
+ | :--- | :--- | :--- |
82
+ | **`update:modelValue`** | `(value)` | Fired on selection change. Used by `v-model`. |
83
+ | **`change`** | `(value)` | Fired on selection change, along with `update:modelValue`. |
84
+ | **`select`** | `(item)` | Fired when an item is selected. |
85
+ | **`deselect`** | `(item)` | Fired when an item is deselected. |
86
+ | **`clear`** | `()` | Fired when the global "clear" button is clicked. |
87
+ | **`focus`** | `(event)` | Fired when the component gains focus. |
88
+ | **`blur`** | `(value)` | Fired when the component loses focus. |
89
+ | **`add-new`** | `(searchTerm)` | Fired when the user triggers the "add new" action. |
90
+
91
+ ## Slots
92
+ ### 1. `#default` Slot
93
+
94
+ Controls the rendering of **each item** in the dropdown list.
95
+
96
+ | Slot Prop | Type | Description |
97
+ | :--- | :--- | :--- |
98
+ | **`item`** | `Object` | The full item object for the current row. |
99
+ | **`level`** | `Number` | The indentation level (0 for root items, 1 for children, etc.). |
100
+
101
+ ### 2. `#display` Slot
102
+
103
+ Controls the rendering of the **entire trigger button area** (overrides default text, chips, and placeholder).
104
+
105
+ | Slot Prop | Type | Description |
106
+ | :--- | :--- | :--- |
107
+ | **`selectedItems`** | `Array` | Array of the full selected item objects. |
108
+ | **`displayText`** | `String` | The default text that would have been displayed. |
109
+ | **`placeholder`** | `String` | The `placeholder` prop. |
110
+ | **`isLoading`** | `Boolean` | The `isLoading` prop. |
111
+ | **`removeItem`** | `Function` | A function to remove a selected item (pass the item object). |
112
+ | **`getItemLabel`** | `Function` | A helper function to get an item's label. |
113
+ | **`getItemValue`** | `Function` | A helper function to get an item's value. |
114
+ | **`visibleChips`** | `Array` | Array of item objects to be shown as visible chips. |
115
+ | **`hiddenChipsCount`** | `Number` | Number of chips that are hidden. |
116
+ | **`toggleMorePopover`** | `Function` | A function to toggle the "more items" popover. |
117
+ | **`moreTriggerRef`** | `Ref` | A ref to attach to your custom "more" button for positioning. |
118
+
119
+ ---
@@ -1 +1 @@
1
- @keyframes spin-89f9b7e1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.svg-icon-spin[data-v-89f9b7e1]{animation:spin-89f9b7e1 1s linear infinite}.list-group-item[data-v-b319a2c7]{cursor:pointer;border:0;border-radius:0;padding-top:.5rem;padding-bottom:.5rem}.list-group-item.is-disabled[data-v-b319a2c7]{cursor:not-allowed;opacity:.65}.expander-icon[data-v-b319a2c7]{width:1rem;height:1rem;flex-shrink:0;transition:transform .2s ease-in-out;color:#6c757d}.expander-placeholder[data-v-b319a2c7]{display:inline-block;width:1rem;flex-shrink:0}.rotate-90[data-v-b319a2c7]{transform:rotate(90deg)}.item-content[data-v-b319a2c7]{flex-grow:1}.tree-select-main[data-v-c318f0b9]{--bs-form-select-bg-img: none;display:block;width:100%;font-weight:400;line-height:1.5;color:var(--bs-body-color);appearance:none;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;text-align:left}.tree-select-display-container[data-v-c318f0b9]{flex:1;overflow:hidden}.transition-transform[data-v-c318f0b9]{transition:transform .2s ease-in-out}.rotate-180[data-v-c318f0b9]{transform:rotate(180deg)}.tree-select-dropdown[data-v-c318f0b9]{position:absolute;background:#fff;border:1px solid rgba(0,0,0,.15);border-radius:.375rem}.is-loading[data-v-c318f0b9]{cursor:wait}.loading-icon[data-v-c318f0b9]{animation:spin-c318f0b9 1s linear infinite}.clear-icon[data-v-c318f0b9]{cursor:pointer;opacity:.6;transition:opacity .2s ease}.clear-icon[data-v-c318f0b9]:hover{opacity:1}.tooltip-trigger-icon[data-v-c318f0b9]{cursor:pointer;opacity:.6;transition:opacity .2s ease;width:1em;height:1em}.tooltip-trigger-icon[data-v-c318f0b9]:hover{opacity:1}@keyframes spin-c318f0b9{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.btn-xl[data-v-c318f0b9]{padding:.75rem 1.5rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-xl[data-v-c318f0b9]{min-height:calc(1.5em + 1.5rem + (var(--bs-border-width) * 2));padding:.75rem 1.5rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.tree-select-body[data-v-c318f0b9]::-webkit-scrollbar{width:6px}.tree-select-body[data-v-c318f0b9]::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.tree-select-body[data-v-c318f0b9]::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.tree-select-body[data-v-c318f0b9]::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.tree-select-main.disabled .more-button[data-v-c318f0b9]{pointer-events:auto;cursor:pointer}.tree-select-main.has-chips[data-v-c318f0b9]{height:auto;min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.tree-select-main.has-chips.btn-lg[data-v-c318f0b9]{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.tree-select-main.has-chips.btn-xl[data-v-c318f0b9]{min-height:calc(1.5em + 1.5rem + calc(var(--bs-border-width) * 2))}.chips-container[data-v-c318f0b9]{display:flex;flex-wrap:wrap;gap:.25rem;max-height:8rem;overflow-y:auto}.chip[data-v-c318f0b9]{display:inline-flex;align-items:center;padding:.2em .6em}.chip-remove[data-v-c318f0b9]{width:.8em;height:.8em;margin-left:.4em;cursor:pointer;opacity:.7;transition:opacity .2s}.chip-remove[data-v-c318f0b9]:hover{opacity:1}.more-button[data-v-c318f0b9]{font-size:.75em;line-height:1;padding:.3em .5em}.more-popover[data-v-c318f0b9]{width:250px;max-width:80vw;max-height:200px;overflow-y:auto;font-size:.9rem}.tree-select-tooltip[data-v-c318f0b9]{background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);font-size:.875rem;max-width:400px;word-wrap:break-word;pointer-events:none}@media (max-width: 576px){.tree-select-dropdown[data-v-c318f0b9]{max-width:90vw;left:0!important;right:0!important;margin:0 auto}}
1
+ @keyframes spin-89f9b7e1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.svg-icon-spin[data-v-89f9b7e1]{animation:spin-89f9b7e1 1s linear infinite}.list-group-item[data-v-b319a2c7]{cursor:pointer;border:0;border-radius:0;padding-top:.5rem;padding-bottom:.5rem}.list-group-item.is-disabled[data-v-b319a2c7]{cursor:not-allowed;opacity:.65}.expander-icon[data-v-b319a2c7]{width:1rem;height:1rem;flex-shrink:0;transition:transform .2s ease-in-out;color:#6c757d}.expander-placeholder[data-v-b319a2c7]{display:inline-block;width:1rem;flex-shrink:0}.rotate-90[data-v-b319a2c7]{transform:rotate(90deg)}.item-content[data-v-b319a2c7]{flex-grow:1}.tree-select-main[data-v-5eac2267]{--bs-form-select-bg-img: none;display:block;width:100%;font-weight:400;line-height:1.5;color:var(--bs-body-color);appearance:none;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;text-align:left}.tree-select-display-container[data-v-5eac2267]{flex:1;overflow:hidden}.transition-transform[data-v-5eac2267]{transition:transform .2s ease-in-out}.rotate-180[data-v-5eac2267]{transform:rotate(180deg)}.tree-select-dropdown[data-v-5eac2267]{position:absolute;background:#fff;border:1px solid rgba(0,0,0,.15);border-radius:.375rem}.is-loading[data-v-5eac2267]{cursor:wait}.loading-icon[data-v-5eac2267]{animation:spin-5eac2267 1s linear infinite}.clear-icon[data-v-5eac2267]{cursor:pointer;opacity:.6;transition:opacity .2s ease}.clear-icon[data-v-5eac2267]:hover{opacity:1}.tooltip-trigger-icon[data-v-5eac2267]{cursor:pointer;opacity:.6;transition:opacity .2s ease;width:1em;height:1em}.tooltip-trigger-icon[data-v-5eac2267]:hover{opacity:1}@keyframes spin-5eac2267{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.btn-xl[data-v-5eac2267]{padding:.75rem 1.5rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-xl[data-v-5eac2267]{min-height:calc(1.5em + 1.5rem + (var(--bs-border-width) * 2));padding:.75rem 1.5rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.tree-select-body[data-v-5eac2267]::-webkit-scrollbar{width:6px}.tree-select-body[data-v-5eac2267]::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.tree-select-body[data-v-5eac2267]::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.tree-select-body[data-v-5eac2267]::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.tree-select-main.disabled .more-button[data-v-5eac2267]{pointer-events:auto;cursor:pointer}.tree-select-main.has-chips[data-v-5eac2267]{height:auto;min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.tree-select-main.has-chips.btn-lg[data-v-5eac2267]{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.tree-select-main.has-chips.btn-xl[data-v-5eac2267]{min-height:calc(1.5em + 1.5rem + calc(var(--bs-border-width) * 2))}.chips-container[data-v-5eac2267]{display:flex;flex-wrap:wrap;gap:.25rem;max-height:8rem;overflow-y:auto}.chip[data-v-5eac2267]{display:inline-flex;align-items:center;padding:.2em .6em}.chip-remove[data-v-5eac2267]{width:.8em;height:.8em;margin-left:.4em;cursor:pointer;opacity:.7;transition:opacity .2s}.chip-remove[data-v-5eac2267]:hover{opacity:1}.more-button[data-v-5eac2267]{font-size:.75em;line-height:1;padding:.3em .5em}.more-popover[data-v-5eac2267]{width:250px;max-width:80vw;max-height:200px;overflow-y:auto;font-size:.9rem}.tree-select-tooltip[data-v-5eac2267]{background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);font-size:.875rem;max-width:400px;word-wrap:break-word;pointer-events:none}@media (max-width: 576px){.tree-select-dropdown[data-v-5eac2267]{max-width:90vw;left:0!important;right:0!important;margin:0 auto}}
@@ -1,9 +1,9 @@
1
- import { computed as k, createElementBlock as i, openBlock as a, normalizeClass as B, createCommentVNode as u, createElementVNode as h, resolveComponent as je, normalizeStyle as Ze, createBlock as z, withModifiers as S, renderSlot as re, Fragment as X, renderList as Y, withCtx as Ne, ref as g, watch as Be, onMounted as We, onUnmounted as Ue, withDirectives as he, withKeys as pe, toDisplayString as x, createTextVNode as Q, createVNode as ie, vModelText as Ge, vModelSelect as Je, vShow as Qe, nextTick as R } from "vue";
2
- import { createPopper as ge } from "@popperjs/core";
3
- const ye = (t, P) => {
1
+ import { computed as k, createElementBlock as i, openBlock as o, normalizeClass as B, createCommentVNode as f, createElementVNode as h, resolveComponent as je, normalizeStyle as Ze, createBlock as z, withModifiers as C, renderSlot as re, Fragment as Y, renderList as _, withCtx as Ne, ref as y, watch as Be, onMounted as We, onUnmounted as Ue, withDirectives as he, withKeys as pe, toDisplayString as S, createTextVNode as X, createVNode as ie, vModelText as Ge, vModelSelect as Je, vShow as Qe, nextTick as R } from "vue";
2
+ import { createPopper as ye } from "@popperjs/core";
3
+ const ge = (t, P) => {
4
4
  const l = t.__vccOpts || t;
5
- for (const [m, d] of P)
6
- l[m] = d;
5
+ for (const [v, u] of P)
6
+ l[v] = u;
7
7
  return l;
8
8
  }, Xe = { key: 0 }, Ye = { key: 1 }, _e = { key: 2 }, et = { key: 3 }, tt = { key: 4 }, lt = { key: 5 }, nt = { key: 6 }, st = { key: 7 }, at = {
9
9
  __name: "SvgIcon",
@@ -17,7 +17,7 @@ const ye = (t, P) => {
17
17
  const P = t, l = k(() => ({
18
18
  "svg-icon-spin": P.name === "spinner"
19
19
  }));
20
- return (m, d) => (a(), i("svg", {
20
+ return (v, u) => (o(), i("svg", {
21
21
  xmlns: "http://www.w3.org/2000/svg",
22
22
  viewBox: "0 0 24 24",
23
23
  fill: "currentColor",
@@ -25,39 +25,39 @@ const ye = (t, P) => {
25
25
  height: "1em",
26
26
  class: B(l.value)
27
27
  }, [
28
- t.name === "spinner" ? (a(), i("g", Xe, d[0] || (d[0] = [
28
+ t.name === "spinner" ? (o(), i("g", Xe, u[0] || (u[0] = [
29
29
  h("path", { d: "M12,4V2A10,10,0,0,0,2,12H4A8,8,0,0,1,12,4Z" }, null, -1)
30
- ]))) : u("", !0),
31
- t.name === "times" ? (a(), i("g", Ye, d[1] || (d[1] = [
30
+ ]))) : f("", !0),
31
+ t.name === "times" ? (o(), i("g", Ye, u[1] || (u[1] = [
32
32
  h("path", { d: "M13.41,12l4.3-4.29a1,1,0,1,0-1.42-1.42L12,10.59,7.71,6.29A1,1,0,0,0,6.29,7.71L10.59,12l-4.3,4.29a1,1,0,0,0,0,1.42,1,1,0,0,0,1.42,0L12,13.41l4.29,4.3a1,1,0,0,0,1.42,0,1,1,0,0,0,0-1.42Z" }, null, -1)
33
- ]))) : u("", !0),
34
- t.name === "chevron-down" ? (a(), i("g", _e, d[2] || (d[2] = [
33
+ ]))) : f("", !0),
34
+ t.name === "chevron-down" ? (o(), i("g", _e, u[2] || (u[2] = [
35
35
  h("path", { d: "M17,9.17a1,1,0,0,0-1.41,0L12,12.71,8.46,9.17a1,1,0,0,0-1.41,0,1,1,0,0,0,0,1.42l4.24,4.24a1,1,0,0,0,1.42,0L17,10.59A1,1,0,0,0,17,9.17Z" }, null, -1)
36
- ]))) : u("", !0),
37
- t.name === "chevron-right" ? (a(), i("g", et, d[3] || (d[3] = [
36
+ ]))) : f("", !0),
37
+ t.name === "chevron-right" ? (o(), i("g", et, u[3] || (u[3] = [
38
38
  h("path", { d: "M10.83,12l-4.24,4.24a1,1,0,0,0,1.41,1.41L13.66,12,8,6.34A1,1,0,0,0,6.59,7.76Z" }, null, -1)
39
- ]))) : u("", !0),
40
- t.name === "search" ? (a(), i("g", tt, d[4] || (d[4] = [
39
+ ]))) : f("", !0),
40
+ t.name === "search" ? (o(), i("g", tt, u[4] || (u[4] = [
41
41
  h("path", { d: "M21.71,20.29,18,16.61A9,9,0,1,0,16.61,18l3.68,3.68a1,1,0,0,0,1.42,0A1,1,0,0,0,21.71,20.29ZM11,18a7,7,0,1,1,7-7A7,7,0,0,1,11,18Z" }, null, -1)
42
- ]))) : u("", !0),
43
- t.name === "asc" ? (a(), i("g", lt, d[5] || (d[5] = [
42
+ ]))) : f("", !0),
43
+ t.name === "asc" ? (o(), i("g", lt, u[5] || (u[5] = [
44
44
  h("path", {
45
45
  fill: "currentColor",
46
46
  d: "M4.869 11H2.667L6 3h2l3.333 8H9.131l-.41-1H5.28zm1.23-3h1.803L7 5.8zm12.9 8V3h-2v13h-3l4 5l4-5zm-8-3H3v2h4.855L3 19v2h8v-2H6.146L11 15z"
47
47
  }, null, -1)
48
- ]))) : u("", !0),
49
- t.name === "desc" ? (a(), i("g", nt, d[6] || (d[6] = [
48
+ ]))) : f("", !0),
49
+ t.name === "desc" ? (o(), i("g", nt, u[6] || (u[6] = [
50
50
  h("path", {
51
51
  fill: "currentColor",
52
52
  d: "M4.869 11H2.667L6 3h2l3.333 8H9.131l-.41-1H5.28zm1.23-3h1.803L7 5.8zm15.9 0l-4-5l-4 5h3v13h2V8zm-11 5H3v2h4.855L3 19v2h8v-2H6.146L11 15z"
53
53
  }, null, -1)
54
- ]))) : u("", !0),
55
- t.name === "info-circle" ? (a(), i("g", st, d[7] || (d[7] = [
54
+ ]))) : f("", !0),
55
+ t.name === "info-circle" ? (o(), i("g", st, u[7] || (u[7] = [
56
56
  h("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z" }, null, -1)
57
- ]))) : u("", !0)
57
+ ]))) : f("", !0)
58
58
  ], 2));
59
59
  }
60
- }, A = /* @__PURE__ */ ye(at, [["__scopeId", "data-v-89f9b7e1"]]), ot = { class: "tree-select-item-wrapper" }, it = {
60
+ }, A = /* @__PURE__ */ ge(at, [["__scopeId", "data-v-89f9b7e1"]]), ot = { class: "tree-select-item-wrapper" }, it = {
61
61
  key: 1,
62
62
  class: "expander-placeholder"
63
63
  }, rt = ["checked", ".indeterminate", "disabled"], dt = { class: "item-content" }, ut = {
@@ -80,49 +80,49 @@ const ye = (t, P) => {
80
80
  },
81
81
  emits: ["select", "toggle-expand"],
82
82
  setup(t, { emit: P }) {
83
- const l = t, m = (c) => c[l.optionValue] || c.id || c.value, d = (c) => !l.disabledKey || !c ? !1 : c.hasOwnProperty(l.disabledKey) && c[l.disabledKey] !== null, C = k(() => l.item.children && l.item.children.length > 0), N = k(() => l.expandedItems.has(m(l.item))), y = k(() => l.selectedItems.includes(m(l.item))), $ = (c) => {
83
+ const l = t, v = (m) => m[l.optionValue] || m.id || m.value, u = (m) => !l.disabledKey || !m ? !1 : m.hasOwnProperty(l.disabledKey) && m[l.disabledKey] !== null, V = k(() => l.item.children && l.item.children.length > 0), N = k(() => l.expandedItems.has(v(l.item))), g = k(() => l.selectedItems.includes(v(l.item))), $ = (m) => {
84
84
  let p = [];
85
- return c.children && c.children.forEach((M) => {
86
- p.push(m(M)), p.push(...$(M));
85
+ return m.children && m.children.forEach((M) => {
86
+ p.push(v(M)), p.push(...$(M));
87
87
  }), p;
88
- }, K = k(() => !l.multiple || !l.selectAll || !C.value || y.value ? !1 : $(l.item).some((p) => l.selectedItems.includes(p)));
89
- return (c, p) => {
88
+ }, K = k(() => !l.multiple || !l.selectAll || !V.value || g.value ? !1 : $(l.item).some((p) => l.selectedItems.includes(p)));
89
+ return (m, p) => {
90
90
  const M = je("TreeSelectItem", !0);
91
- return a(), i("div", ot, [
91
+ return o(), i("div", ot, [
92
92
  h("div", {
93
93
  class: B(["list-group-item list-group-item-action d-flex align-items-center gap-2", {
94
- "bg-primary text-white": y.value && (t.selectMode === "highlight" || !t.multiple) && !d(t.item) && !(t.disableBranchNode && C.value),
95
- "is-disabled text-muted bg-light": d(t.item)
94
+ "bg-primary text-white": g.value && (t.selectMode === "highlight" || !t.multiple) && !u(t.item) && !(t.disableBranchNode && V.value),
95
+ "is-disabled text-muted bg-light": u(t.item)
96
96
  }]),
97
97
  style: Ze({ "padding-left": `${t.level * 1.5 + 1}rem` }),
98
- onClick: p[2] || (p[2] = (w) => d(t.item) ? null : c.$emit("select", t.item))
98
+ onClick: p[2] || (p[2] = (x) => u(t.item) ? null : m.$emit("select", t.item))
99
99
  }, [
100
- C.value ? (a(), z(A, {
100
+ V.value ? (o(), z(A, {
101
101
  key: 0,
102
102
  name: "chevron-right",
103
103
  class: B(["expander-icon", { "rotate-90": N.value }]),
104
- onClick: p[0] || (p[0] = S((w) => c.$emit("toggle-expand", m(t.item)), ["stop"]))
105
- }, null, 8, ["class"])) : (a(), i("span", it)),
106
- t.multiple && t.selectMode === "checkbox" && !(t.disableBranchNode && C.value) ? (a(), i("input", {
104
+ onClick: p[0] || (p[0] = C((x) => m.$emit("toggle-expand", v(t.item)), ["stop"]))
105
+ }, null, 8, ["class"])) : (o(), i("span", it)),
106
+ t.multiple && t.selectMode === "checkbox" && !(t.disableBranchNode && V.value) ? (o(), i("input", {
107
107
  key: 2,
108
108
  type: "checkbox",
109
109
  class: "form-check-input",
110
- checked: y.value,
110
+ checked: g.value,
111
111
  ".indeterminate": K.value,
112
- disabled: d(t.item),
113
- onClick: p[1] || (p[1] = S((w) => c.$emit("select", t.item), ["stop"]))
114
- }, null, 40, rt)) : u("", !0),
112
+ disabled: u(t.item),
113
+ onClick: p[1] || (p[1] = C((x) => m.$emit("select", t.item), ["stop"]))
114
+ }, null, 40, rt)) : f("", !0),
115
115
  h("div", dt, [
116
- re(c.$slots, "default", {
116
+ re(m.$slots, "default", {
117
117
  item: t.item,
118
118
  level: t.level
119
119
  }, void 0, !0)
120
120
  ])
121
121
  ], 6),
122
- C.value && N.value ? (a(), i("div", ut, [
123
- (a(!0), i(X, null, Y(t.item.children, (w) => (a(), z(M, {
124
- key: m(w),
125
- item: w,
122
+ V.value && N.value ? (o(), i("div", ut, [
123
+ (o(!0), i(Y, null, _(t.item.children, (x) => (o(), z(M, {
124
+ key: v(x),
125
+ item: x,
126
126
  level: t.level + 1,
127
127
  "selected-items": t.selectedItems,
128
128
  "expanded-items": t.expandedItems,
@@ -133,25 +133,25 @@ const ye = (t, P) => {
133
133
  "option-value": t.optionValue,
134
134
  "disabled-key": t.disabledKey,
135
135
  "disable-branch-node": t.disableBranchNode,
136
- onSelect: p[3] || (p[3] = (I) => c.$emit("select", I)),
137
- onToggleExpand: p[4] || (p[4] = (I) => c.$emit("toggle-expand", I))
136
+ onSelect: p[3] || (p[3] = (I) => m.$emit("select", I)),
137
+ onToggleExpand: p[4] || (p[4] = (I) => m.$emit("toggle-expand", I))
138
138
  }, {
139
- default: Ne(({ item: I, level: _ }) => [
140
- re(c.$slots, "default", {
139
+ default: Ne(({ item: I, level: ee }) => [
140
+ re(m.$slots, "default", {
141
141
  item: I,
142
- level: _
142
+ level: ee
143
143
  }, void 0, !0)
144
144
  ]),
145
145
  _: 2
146
146
  }, 1032, ["item", "level", "selected-items", "expanded-items", "multiple", "select-all", "select-mode", "option-label", "option-value", "disabled-key", "disable-branch-node"]))), 128))
147
- ])) : u("", !0)
147
+ ])) : f("", !0)
148
148
  ]);
149
149
  };
150
150
  }
151
- }, ft = /* @__PURE__ */ ye(ct, [["__scopeId", "data-v-b319a2c7"]]), mt = ["onKeydown"], vt = { class: "tree-select-display-container" }, ht = {
151
+ }, ft = /* @__PURE__ */ ge(ct, [["__scopeId", "data-v-b319a2c7"]]), mt = ["onKeydown"], vt = { class: "tree-select-display-container" }, ht = {
152
152
  key: 0,
153
153
  class: "d-flex align-items-center justify-content-start w-100"
154
- }, pt = ["title"], gt = { key: 1 }, yt = {
154
+ }, pt = ["title"], yt = { key: 1 }, gt = {
155
155
  key: 0,
156
156
  class: "text-muted"
157
157
  }, bt = {
@@ -300,55 +300,60 @@ const ye = (t, P) => {
300
300
  addNewLabel: {
301
301
  type: String,
302
302
  default: "Add new record"
303
+ },
304
+ keyFilters: {
305
+ type: Array,
306
+ default: () => []
307
+ // e.g., ['name', 'details.email']
303
308
  }
304
309
  },
305
310
  emits: ["update:modelValue", "change", "clear", "deselect", "select", "focus", "blur", "add-new"],
306
311
  setup(t, { emit: P }) {
307
- const l = t, m = P, d = g(null), C = g(null), N = g(null), y = g(""), $ = g(!1), K = g(/* @__PURE__ */ new Set()), c = g(null), p = g(null), M = g(null), w = g(!1), I = g(null), _ = g(null), q = g(!1), E = g(l.defaultSortKey), H = g(l.defaultSortDirection), F = g(null), ee = g(null), j = g(!1), te = g(null), be = k(() => l.size === "sm" ? "btn-sm" : l.size === "lg" ? "btn-lg" : l.size === "xl" ? "btn-xl" : ""), ke = k(() => l.size === "sm" ? "form-control-sm" : l.size === "lg" ? "form-control-lg" : l.size === "xl" ? "form-control-xl" : ""), Te = k(() => se.value === 0 ? [] : ne.value.slice(l.maxVisibleChipsDisplay)), Z = k(() => !l.multiple || !l.excludeFromSelectedListKey ? T.value : T.value.filter((e) => {
308
- const s = W(e);
312
+ const l = t, v = P, u = y(null), V = y(null), N = y(null), g = y(""), $ = y(!1), K = y(/* @__PURE__ */ new Set()), m = y(null), p = y(null), M = y(null), x = y(!1), I = y(null), ee = y(null), F = y(!1), E = y(l.defaultSortKey), q = y(l.defaultSortDirection), H = y(null), te = y(null), j = y(!1), le = y(null), be = k(() => l.size === "sm" ? "btn-sm" : l.size === "lg" ? "btn-lg" : l.size === "xl" ? "btn-xl" : ""), ke = k(() => l.size === "sm" ? "form-control-sm" : l.size === "lg" ? "form-control-lg" : l.size === "xl" ? "form-control-xl" : ""), Te = k(() => se.value === 0 ? [] : ne.value.slice(l.maxVisibleChipsDisplay)), Z = k(() => !l.multiple || !l.excludeFromSelectedListKey ? T.value : T.value.filter((e) => {
313
+ const s = U(e);
309
314
  return !s || !s[l.excludeFromSelectedListKey];
310
315
  })), we = k(() => {
311
316
  const e = Z.value;
312
317
  if (e.length === 0) return l.placeholder;
313
318
  if (l.multiple) {
314
319
  if (e.length === 1) {
315
- const n = U(e[0]);
320
+ const n = G(e[0]);
316
321
  return n ? n.join(" → ") : e[0];
317
322
  }
318
323
  return `${e.length} items selected`;
319
324
  }
320
- const s = U(e[0]);
325
+ const s = G(e[0]);
321
326
  return s ? s.join(" → ") : e[0];
322
327
  }), xe = async () => {
323
328
  await R();
324
- const e = _.value;
329
+ const e = ee.value;
325
330
  if (l.multiple || l.displayMode === "chips" || Z.value.length === 0 || !e) {
326
- q.value = !1;
331
+ F.value = !1;
327
332
  return;
328
333
  }
329
- q.value = e.scrollWidth > e.clientWidth;
330
- }, O = (e) => e && (e[l.optionLabel] || e.label || e.name) || "", b = (e) => e ? e[l.optionValue] || e.id || e.value : null, de = (e) => !l.disabledKey || !e ? !1 : e.hasOwnProperty(l.disabledKey) && e[l.disabledKey] !== null, V = (e) => e.children && e.children.length > 0, le = (e, s) => {
334
+ F.value = e.scrollWidth > e.clientWidth;
335
+ }, O = (e) => e && (e[l.optionLabel] || e.label || e.name) || "", b = (e) => e ? e[l.optionValue] || e.id || e.value : null, de = (e) => !l.disabledKey || !e ? !1 : e.hasOwnProperty(l.disabledKey) && e[l.disabledKey] !== null, L = (e) => e.children && e.children.length > 0, W = (e, s) => {
331
336
  if (s)
332
- return s.split(".").reduce((n, o) => n && n[o], e);
333
- }, W = (e, s = l.items) => {
337
+ return s.split(".").reduce((n, a) => n && n[a], e);
338
+ }, U = (e, s = l.items) => {
334
339
  for (const n of s) {
335
340
  if (b(n) === e) return n;
336
- if (V(n)) {
337
- const o = W(e, n.children);
338
- if (o) return o;
341
+ if (L(n)) {
342
+ const a = U(e, n.children);
343
+ if (a) return a;
339
344
  }
340
345
  }
341
346
  return null;
342
347
  }, ue = (e) => {
343
348
  const s = [];
344
- return V(e) && e.children.forEach((n) => {
349
+ return L(e) && e.children.forEach((n) => {
345
350
  de(n) || (s.push(b(n)), s.push(...ue(n)));
346
351
  }), s;
347
352
  }, ce = (e, s = l.items, n = []) => {
348
- for (const o of s) {
349
- if (b(o) === e) return n;
350
- if (V(o)) {
351
- const r = ce(e, o.children, [...n, b(o)]);
353
+ for (const a of s) {
354
+ if (b(a) === e) return n;
355
+ if (L(a)) {
356
+ const r = ce(e, a.children, [...n, b(a)]);
352
357
  if (r) return r;
353
358
  }
354
359
  }
@@ -357,23 +362,23 @@ const ye = (t, P) => {
357
362
  const e = new Set(Array.isArray(l.modelValue) ? l.modelValue : [l.modelValue].filter(Boolean));
358
363
  if (l.multiple && l.selectAll) {
359
364
  const s = (n) => {
360
- n.forEach((o) => {
361
- if (V(o)) {
362
- const r = o.children.filter((v) => !de(v));
363
- r.length > 0 && r.every((v) => e.has(b(v))) && e.add(b(o)), s(o.children);
365
+ n.forEach((a) => {
366
+ if (L(a)) {
367
+ const r = a.children.filter((c) => !de(c));
368
+ r.length > 0 && r.every((c) => e.has(b(c))) && e.add(b(a)), s(a.children);
364
369
  }
365
370
  });
366
371
  };
367
372
  s(l.items);
368
373
  }
369
374
  return Array.from(e);
370
- }), U = (e, s = l.items, n = []) => {
371
- for (const o of s) {
372
- const r = [...n, O(o)];
373
- if (b(o) === e) return r;
374
- if (V(o)) {
375
- const f = U(e, o.children, r);
376
- if (f) return f;
375
+ }), G = (e, s = l.items, n = []) => {
376
+ for (const a of s) {
377
+ const r = [...n, O(a)];
378
+ if (b(a) === e) return r;
379
+ if (L(a)) {
380
+ const d = G(e, a.children, r);
381
+ if (d) return d;
377
382
  }
378
383
  }
379
384
  return null;
@@ -386,46 +391,59 @@ const ye = (t, P) => {
386
391
  if (e.length === 0) return l.placeholder;
387
392
  if (l.multiple) {
388
393
  if (e.length === 1) {
389
- const n = U(e[0]);
394
+ const n = G(e[0]);
390
395
  return n ? Se(n) : e[0];
391
396
  }
392
397
  return `${e.length} items selected`;
393
398
  }
394
- const s = U(e[0]);
399
+ const s = G(e[0]);
395
400
  return s ? Se(s) : e[0];
396
401
  }), ne = k(() => {
397
402
  if (!l.multiple || Z.value.length === 0) return [];
398
- const e = Z.value.map((o) => W(o)).filter(Boolean);
403
+ const e = Z.value.map((a) => U(a)).filter(Boolean);
399
404
  if (!l.sortable || !E.value)
400
405
  return e;
401
- const s = E.value, n = H.value;
402
- return [...e].sort((o, r) => {
403
- const f = le(o, s), v = le(r, s);
404
- if (f == null) return 1;
405
- if (v == null) return -1;
406
- let L = 0;
407
- return typeof f == "string" && typeof v == "string" ? L = f.localeCompare(v) : f > v ? L = 1 : f < v && (L = -1), n === "desc" ? L * -1 : L;
406
+ const s = E.value, n = q.value;
407
+ return [...e].sort((a, r) => {
408
+ const d = W(a, s), c = W(r, s);
409
+ if (d == null) return 1;
410
+ if (c == null) return -1;
411
+ let w = 0;
412
+ return typeof d == "string" && typeof c == "string" ? w = d.localeCompare(c) : d > c ? w = 1 : d < c && (w = -1), n === "desc" ? w * -1 : w;
408
413
  });
409
414
  }), Ce = k(() => ne.value.slice(0, l.maxVisibleChipsDisplay)), se = k(() => {
410
415
  const e = ne.value.length - l.maxVisibleChipsDisplay;
411
416
  return e > 0 ? e : 0;
412
- }), Ve = (e, s) => e.map((n) => {
413
- const o = O(n).toLowerCase().includes(s);
414
- if (!V(n))
415
- return o ? n : null;
416
- const r = Ve(n.children, s);
417
- return o ? { ...n, children: n.children } : r.length > 0 ? { ...n, children: r } : null;
418
- }).filter(Boolean), Le = (e, s, n) => !e || !s ? e : [...e].sort((r, f) => {
419
- const v = le(r, s), L = le(f, s);
420
- if (v == null) return 1;
421
- if (L == null) return -1;
422
- let J = 0;
423
- return typeof v == "string" && typeof L == "string" ? J = v.localeCompare(L) : v > L ? J = 1 : v < L && (J = -1), n === "desc" ? J * -1 : J;
424
- }).map((r) => V(r) ? { ...r, children: Le(r.children, s, n) } : r), ae = k(() => {
425
- const e = y.value.trim() ? Ve(l.items, y.value.toLowerCase()) : l.items;
426
- return !l.sortable || !E.value ? e : Le(e, E.value, H.value);
417
+ }), Ve = (e, s) => {
418
+ const n = s.toLowerCase();
419
+ return e.map((a) => {
420
+ let r = !1;
421
+ if (l.keyFilters && l.keyFilters.length > 0)
422
+ for (const c of l.keyFilters) {
423
+ const w = W(a, c);
424
+ if (w != null && String(w).toLowerCase().includes(n)) {
425
+ r = !0;
426
+ break;
427
+ }
428
+ }
429
+ else
430
+ r = O(a).toLowerCase().includes(n);
431
+ if (!L(a))
432
+ return r ? a : null;
433
+ const d = Ve(a.children, s);
434
+ return r ? { ...a, children: a.children } : d.length > 0 ? { ...a, children: d } : null;
435
+ }).filter(Boolean);
436
+ }, Le = (e, s, n) => !e || !s ? e : [...e].sort((r, d) => {
437
+ const c = W(r, s), w = W(d, s);
438
+ if (c == null) return 1;
439
+ if (w == null) return -1;
440
+ let Q = 0;
441
+ return typeof c == "string" && typeof w == "string" ? Q = c.localeCompare(w) : c > w ? Q = 1 : c < w && (Q = -1), n === "desc" ? Q * -1 : Q;
442
+ }).map((r) => L(r) ? { ...r, children: Le(r.children, s, n) } : r), ae = k(() => {
443
+ const e = g.value.trim(), s = e ? Ve(l.items, e) : l.items;
444
+ return !l.sortable || !E.value ? s : Le(s, E.value, q.value);
427
445
  }), ze = (e) => {
428
- if (l.disableBranchNodes && V(e)) {
446
+ if (l.disableBranchNodes && L(e)) {
429
447
  const r = b(e);
430
448
  Ie(r);
431
449
  return;
@@ -435,43 +453,43 @@ const ye = (t, P) => {
435
453
  let n = new Set(T.value);
436
454
  if (l.multiple) {
437
455
  const r = n.has(s);
438
- if (l.selectAll && V(e)) {
439
- const f = ue(e);
440
- r ? (n.delete(s), m("deselect", e), l.deselectAll && f.forEach((v) => n.delete(v))) : (n.add(s), f.forEach((v) => n.add(v)), m("select", e));
456
+ if (l.selectAll && L(e)) {
457
+ const d = ue(e);
458
+ r ? (n.delete(s), v("deselect", e), l.deselectAll && d.forEach((c) => n.delete(c))) : (n.add(s), d.forEach((c) => n.add(c)), v("select", e));
441
459
  } else
442
- r ? (n.delete(s), l.selectAll && ce(s)?.forEach((v) => n.delete(v))) : n.add(s);
460
+ r ? (n.delete(s), l.selectAll && ce(s)?.forEach((c) => n.delete(c))) : n.add(s);
443
461
  } else {
444
- const r = l.modelValue, f = b(e);
445
- r === f ? (n.clear(), m("deselect", e)) : (n.clear(), n.add(f), r != null && W(r), m("select", e)), l.closeOnSelect && D(), R(() => {
462
+ const r = l.modelValue, d = b(e);
463
+ r === d ? (n.clear(), v("deselect", e)) : (n.clear(), n.add(d), r != null && U(r), v("select", e)), l.closeOnSelect && D(), R(() => {
446
464
  N.value?.focus();
447
465
  });
448
466
  }
449
- let o = Array.from(n);
450
- l.multiple && l.excludeFromSelectedListKey && (o = o.filter((r) => {
451
- const f = W(r);
452
- return !f || !f[l.excludeFromSelectedListKey];
453
- })), m("update:modelValue", l.multiple ? o : o[0] || null), m("change", l.multiple ? o : o[0] || null);
467
+ let a = Array.from(n);
468
+ l.multiple && l.excludeFromSelectedListKey && (a = a.filter((r) => {
469
+ const d = U(r);
470
+ return !d || !d[l.excludeFromSelectedListKey];
471
+ })), v("update:modelValue", l.multiple ? a : a[0] || null), v("change", l.multiple ? a : a[0] || null);
454
472
  }, me = (e) => {
455
473
  if (l.disabled || !e) return;
456
474
  const s = b(e), n = new Set(T.value);
457
- n.delete(s), l.selectAll && (l.deselectAll && V(e) && ue(e).forEach((v) => n.delete(v)), ce(s)?.forEach((f) => n.delete(f)));
458
- const o = Array.from(n);
459
- m("update:modelValue", o), m("change", o);
475
+ n.delete(s), l.selectAll && (l.deselectAll && L(e) && ue(e).forEach((c) => n.delete(c)), ce(s)?.forEach((d) => n.delete(d)));
476
+ const a = Array.from(n);
477
+ v("update:modelValue", a), v("change", a);
460
478
  }, Ie = (e) => {
461
479
  K.value.has(e) ? K.value.delete(e) : K.value.add(e);
462
480
  }, Ke = () => {
463
- H.value = H.value === "asc" ? "desc" : "asc";
481
+ q.value = q.value === "asc" ? "desc" : "asc";
464
482
  }, Ee = () => {
465
483
  const e = l.multiple ? [] : null;
466
- m("clear"), m("update:modelValue", e), m("change", e), G();
484
+ v("clear"), v("update:modelValue", e), v("change", e), J();
467
485
  }, Ae = () => {
468
- !l.allowAddNew || !y.value.trim() || (m("add-new", y.value.trim()), D());
486
+ !l.allowAddNew || !g.value.trim() || (v("add-new", g.value.trim()), D());
469
487
  }, De = () => {
470
- l.allowAddNew && l.addNewMode === "enter" && y.value.trim() && ae.value.length === 0 && Ae();
488
+ l.allowAddNew && l.addNewMode === "enter" && g.value.trim() && ae.value.length === 0 && Ae();
471
489
  }, Pe = (e) => {
472
- m("focus", e);
490
+ v("focus", e);
473
491
  }, Oe = async () => {
474
- l.disabled || (G(), $.value = !0, oe(), await R(), C.value && N.value && (c.value = ge(N.value, C.value, {
492
+ l.disabled || (J(), $.value = !0, oe(), await R(), V.value && N.value && (m.value = ye(N.value, V.value, {
475
493
  placement: "bottom-start",
476
494
  strategy: "fixed",
477
495
  modifiers: [
@@ -491,38 +509,38 @@ const ye = (t, P) => {
491
509
  }
492
510
  }
493
511
  ]
494
- })), l.searchable && (await R(), C.value?.querySelector(".tree-search-input")?.focus()));
512
+ })), l.searchable && (await R(), V.value?.querySelector(".tree-search-input")?.focus()));
495
513
  }, D = () => {
496
- $.value = !1, y.value = "", c.value?.destroy(), c.value = null, m("blur", l.modelValue);
514
+ $.value = !1, g.value = "", m.value?.destroy(), m.value = null, v("blur", l.modelValue);
497
515
  }, ve = () => $.value ? D() : Oe(), Re = async () => {
498
- D(), oe(), j.value = !0, await R(), ee.value && F.value && (te.value = ge(F.value, ee.value, {
516
+ D(), oe(), j.value = !0, await R(), te.value && H.value && (le.value = ye(H.value, te.value, {
499
517
  placement: "bottom-end",
500
518
  strategy: "fixed",
501
519
  modifiers: [{ name: "offset", options: { offset: [0, 4] } }]
502
520
  }));
503
- }, G = () => {
504
- j.value = !1, te.value?.destroy(), te.value = null;
505
- }, $e = () => j.value ? G() : Re(), Me = (e) => {
506
- $.value && !N.value?.contains(e.target) && !C.value?.contains(e.target) && D(), j.value && !F.value?.contains(e.target) && !ee.value?.contains(e.target) && G(), w.value && !I.value?.$el?.contains(e.target) && !p.value?.contains(e.target) && oe();
507
- }, qe = (e) => {
508
- d.value?.contains(e.relatedTarget) || D();
509
- }, He = async () => {
510
- !q.value || w.value || (D(), G(), w.value = !0, await R(), p.value && I.value && (M.value = ge(I.value.$el, p.value, {
521
+ }, J = () => {
522
+ j.value = !1, le.value?.destroy(), le.value = null;
523
+ }, $e = () => j.value ? J() : Re(), Me = (e) => {
524
+ $.value && !N.value?.contains(e.target) && !V.value?.contains(e.target) && D(), j.value && !H.value?.contains(e.target) && !te.value?.contains(e.target) && J(), x.value && !I.value?.$el?.contains(e.target) && !p.value?.contains(e.target) && oe();
525
+ }, Fe = (e) => {
526
+ u.value?.contains(e.relatedTarget) || D();
527
+ }, qe = async () => {
528
+ !F.value || x.value || (D(), J(), x.value = !0, await R(), p.value && I.value && (M.value = ye(I.value.$el, p.value, {
511
529
  // ⬅️ 5b. USE $el
512
530
  placement: "top",
513
531
  strategy: "fixed",
514
532
  modifiers: [{ name: "offset", options: { offset: [0, 8] } }]
515
533
  })));
516
- }, Fe = () => {
517
- w.value ? oe() : He();
534
+ }, He = () => {
535
+ x.value ? oe() : qe();
518
536
  }, oe = () => {
519
- w.value = !1, M.value?.destroy(), M.value = null;
537
+ x.value = !1, M.value?.destroy(), M.value = null;
520
538
  };
521
- return Be(y, (e) => {
539
+ return Be(g, (e) => {
522
540
  if (e.trim()) {
523
541
  const s = (n) => {
524
- n.forEach((o) => {
525
- V(o) && (K.value.add(b(o)), s(o.children));
542
+ n.forEach((a) => {
543
+ L(a) && (K.value.add(b(a)), s(a.children));
526
544
  });
527
545
  };
528
546
  s(ae.value);
@@ -532,13 +550,13 @@ const ye = (t, P) => {
532
550
  }), We(() => {
533
551
  document.addEventListener("click", Me), xe();
534
552
  }), Ue(() => {
535
- document.removeEventListener("click", Me), c.value?.destroy(), te.value?.destroy(), M.value?.destroy();
536
- }), (e, s) => (a(), i("div", {
553
+ document.removeEventListener("click", Me), m.value?.destroy(), le.value?.destroy(), M.value?.destroy();
554
+ }), (e, s) => (o(), i("div", {
537
555
  ref_key: "wrapperRef",
538
- ref: d,
556
+ ref: u,
539
557
  class: "tree-select-wrapper",
540
558
  onFocusin: Pe,
541
- onFocusout: qe
559
+ onFocusout: Fe
542
560
  }, [
543
561
  h("div", {
544
562
  ref_key: "triggerRef",
@@ -557,8 +575,8 @@ const ye = (t, P) => {
557
575
  ]]),
558
576
  onClick: ve,
559
577
  onKeydown: [
560
- pe(S(ve, ["prevent"]), ["enter"]),
561
- pe(S(ve, ["prevent"]), ["space"])
578
+ pe(C(ve, ["prevent"]), ["enter"]),
579
+ pe(C(ve, ["prevent"]), ["space"])
562
580
  ]
563
581
  }, [
564
582
  h("div", vt, [
@@ -573,112 +591,112 @@ const ye = (t, P) => {
573
591
  visibleChips: Ce.value,
574
592
  hiddenChipsCount: se.value,
575
593
  toggleMorePopover: $e,
576
- moreTriggerRef: F.value
594
+ moreTriggerRef: H.value
577
595
  }, () => [
578
- !t.multiple || t.displayMode === "text" ? (a(), i("div", ht, [
596
+ !t.multiple || t.displayMode === "text" ? (o(), i("div", ht, [
579
597
  h("span", {
580
598
  ref_key: "textDisplaySpanRef",
581
- ref: _,
599
+ ref: ee,
582
600
  class: "text-truncate",
583
- title: q.value ? we.value : ""
584
- }, x(t.isLoading ? "Loading data..." : fe.value), 9, pt),
585
- q.value && !t.isLoading ? (a(), z(A, {
601
+ title: F.value ? we.value : ""
602
+ }, S(t.isLoading ? "Loading data..." : fe.value), 9, pt),
603
+ F.value && !t.isLoading ? (o(), z(A, {
586
604
  key: 0,
587
605
  ref_key: "tooltipTriggerIconRef",
588
606
  ref: I,
589
607
  name: "info-circle",
590
608
  class: "tooltip-trigger-icon ms-2 flex-shrink-0",
591
- onClick: S(Fe, ["stop"])
592
- }, null, 512)) : u("", !0)
593
- ])) : t.multiple && t.displayMode === "chips" ? (a(), i("div", gt, [
594
- T.value.length === 0 ? (a(), i("span", yt, x(t.placeholder), 1)) : (a(), i("div", bt, [
595
- (a(!0), i(X, null, Y(Ce.value, (n) => (a(), i("span", {
609
+ onClick: C(He, ["stop"])
610
+ }, null, 512)) : f("", !0)
611
+ ])) : t.multiple && t.displayMode === "chips" ? (o(), i("div", yt, [
612
+ T.value.length === 0 ? (o(), i("span", gt, S(t.placeholder), 1)) : (o(), i("div", bt, [
613
+ (o(!0), i(Y, null, _(Ce.value, (n) => (o(), i("span", {
596
614
  key: b(n),
597
615
  class: "badge text-bg-primary chip bg-primary"
598
616
  }, [
599
- Q(x(O(n)) + " ", 1),
617
+ X(S(O(n)) + " ", 1),
600
618
  ie(A, {
601
619
  name: "times",
602
620
  class: "chip-remove",
603
- onClick: S((o) => me(n), ["stop"])
621
+ onClick: C((a) => me(n), ["stop"])
604
622
  }, null, 8, ["onClick"])
605
623
  ]))), 128)),
606
- se.value > 0 ? (a(), i("button", {
624
+ se.value > 0 ? (o(), i("button", {
607
625
  key: 0,
608
626
  ref_key: "moreTriggerRef",
609
- ref: F,
627
+ ref: H,
610
628
  type: "button",
611
629
  class: "btn btn-sm btn-light more-button",
612
- onClick: S($e, ["stop"])
613
- }, " +" + x(se.value), 513)) : u("", !0)
630
+ onClick: C($e, ["stop"])
631
+ }, " +" + S(se.value), 513)) : f("", !0)
614
632
  ]))
615
- ])) : u("", !0)
633
+ ])) : f("", !0)
616
634
  ], !0)
617
635
  ]),
618
636
  h("div", kt, [
619
- t.isLoading ? (a(), z(A, {
637
+ t.isLoading ? (o(), z(A, {
620
638
  key: 0,
621
639
  name: "spinner",
622
640
  class: "loading-icon"
623
- })) : u("", !0),
624
- t.showClearButton && T.value.length > 0 && !t.disabled && !t.isLoading ? (a(), z(A, {
641
+ })) : f("", !0),
642
+ t.showClearButton && T.value.length > 0 && !t.disabled && !t.isLoading ? (o(), z(A, {
625
643
  key: 1,
626
644
  name: "times",
627
- onClick: S(Ee, ["stop"]),
645
+ onClick: C(Ee, ["stop"]),
628
646
  class: "clear-icon"
629
- })) : u("", !0),
630
- t.isLoading ? u("", !0) : (a(), z(A, {
647
+ })) : f("", !0),
648
+ t.isLoading ? f("", !0) : (o(), z(A, {
631
649
  key: 2,
632
650
  name: "chevron-down",
633
651
  class: B(["transition-transform", { "rotate-180": $.value }])
634
652
  }, null, 8, ["class"]))
635
653
  ])
636
654
  ], 42, mt),
637
- j.value ? (a(), i("div", {
655
+ j.value ? (o(), i("div", {
638
656
  key: 0,
639
657
  ref_key: "morePopoverRef",
640
- ref: ee,
658
+ ref: te,
641
659
  class: "card shadow-lg border-0 more-popover",
642
660
  style: { "z-index": "1060" }
643
661
  }, [
644
662
  h("div", wt, [
645
- (a(!0), i(X, null, Y(Te.value, (n) => (a(), i("div", {
663
+ (o(!0), i(Y, null, _(Te.value, (n) => (o(), i("div", {
646
664
  key: b(n),
647
665
  class: "list-group-item d-flex justify-content-between align-items-center py-1 px-2"
648
666
  }, [
649
- h("small", xt, x(O(n)), 1),
650
- t.disabled ? u("", !0) : (a(), z(A, {
667
+ h("small", xt, S(O(n)), 1),
668
+ t.disabled ? f("", !0) : (o(), z(A, {
651
669
  key: 0,
652
670
  name: "times",
653
671
  class: "chip-remove flex-shrink-0",
654
- onClick: S((o) => me(n), ["stop"])
672
+ onClick: C((a) => me(n), ["stop"])
655
673
  }, null, 8, ["onClick"]))
656
674
  ]))), 128))
657
675
  ])
658
- ], 512)) : u("", !0),
659
- $.value ? (a(), i("div", {
676
+ ], 512)) : f("", !0),
677
+ $.value ? (o(), i("div", {
660
678
  key: 1,
661
679
  ref_key: "dropdownRef",
662
- ref: C,
680
+ ref: V,
663
681
  class: "tree-select-dropdown card shadow-lg border-0",
664
- onMousedown: s[2] || (s[2] = S(() => {
682
+ onMousedown: s[2] || (s[2] = C(() => {
665
683
  }, ["prevent"])),
666
- onClick: s[3] || (s[3] = S(() => {
684
+ onClick: s[3] || (s[3] = C(() => {
667
685
  }, ["stop"])),
668
686
  style: { "z-index": "1050" }
669
687
  }, [
670
688
  h("div", St, [
671
- t.searchable ? he((a(), i("input", {
689
+ t.searchable ? he((o(), i("input", {
672
690
  key: 0,
673
- "onUpdate:modelValue": s[0] || (s[0] = (n) => y.value = n),
691
+ "onUpdate:modelValue": s[0] || (s[0] = (n) => g.value = n),
674
692
  type: "text",
675
693
  class: B(["form-control tree-search-input", ke.value]),
676
694
  placeholder: "Search...",
677
- onKeydown: pe(S(De, ["prevent"]), ["enter"])
695
+ onKeydown: pe(C(De, ["prevent"]), ["enter"])
678
696
  }, null, 42, Ct)), [
679
- [Ge, y.value]
680
- ]) : u("", !0),
681
- t.sortable && t.sortOptions.length > 0 ? (a(), i("div", Vt, [
697
+ [Ge, g.value]
698
+ ]) : f("", !0),
699
+ t.sortable && t.sortOptions.length > 0 ? (o(), i("div", Vt, [
682
700
  he(h("select", {
683
701
  "onUpdate:modelValue": s[1] || (s[1] = (n) => E.value = n),
684
702
  class: B(["form-select flex-grow-1", ke.value])
@@ -687,10 +705,10 @@ const ye = (t, P) => {
687
705
  value: null,
688
706
  disabled: ""
689
707
  }, "Sort by...", -1)),
690
- (a(!0), i(X, null, Y(t.sortOptions, (n) => (a(), i("option", {
708
+ (o(!0), i(Y, null, _(t.sortOptions, (n) => (o(), i("option", {
691
709
  key: n.value,
692
710
  value: n.value
693
- }, x(n.label), 9, Lt))), 128))
711
+ }, S(n.label), 9, Lt))), 128))
694
712
  ], 2), [
695
713
  [Je, E.value]
696
714
  ]),
@@ -701,20 +719,20 @@ const ye = (t, P) => {
701
719
  onClick: Ke
702
720
  }, [
703
721
  ie(A, {
704
- name: H.value === "asc" ? "asc" : "desc"
722
+ name: q.value === "asc" ? "asc" : "desc"
705
723
  }, null, 8, ["name"])
706
724
  ], 10, It)
707
- ])) : u("", !0)
725
+ ])) : f("", !0)
708
726
  ]),
709
- t.isLoading ? (a(), i("div", At, [
727
+ t.isLoading ? (o(), i("div", At, [
710
728
  ie(A, {
711
729
  name: "spinner",
712
730
  class: "me-2"
713
731
  }),
714
732
  s[5] || (s[5] = h("span", null, "Loading...", -1))
715
- ])) : (a(), i("div", $t, [
716
- ae.value.length > 0 ? (a(), i("div", Mt, [
717
- (a(!0), i(X, null, Y(ae.value, (n) => (a(), z(ft, {
733
+ ])) : (o(), i("div", $t, [
734
+ ae.value.length > 0 ? (o(), i("div", Mt, [
735
+ (o(!0), i(Y, null, _(ae.value, (n) => (o(), z(ft, {
718
736
  key: b(n),
719
737
  item: n,
720
738
  level: 0,
@@ -730,63 +748,63 @@ const ye = (t, P) => {
730
748
  onSelect: ze,
731
749
  onToggleExpand: Ie
732
750
  }, {
733
- default: Ne(({ item: o, level: r }) => [
751
+ default: Ne(({ item: a, level: r }) => [
734
752
  re(e.$slots, "default", {
735
- item: o,
753
+ item: a,
736
754
  level: r
737
755
  }, () => [
738
756
  h("div", Bt, [
739
- Q(x(O(o)) + " ", 1),
740
- o.icon ? (a(), i("i", {
757
+ X(S(O(a)) + " ", 1),
758
+ a.icon ? (o(), i("i", {
741
759
  key: 0,
742
- class: B(o.icon)
743
- }, null, 2)) : u("", !0)
760
+ class: B(a.icon)
761
+ }, null, 2)) : f("", !0)
744
762
  ])
745
763
  ], !0)
746
764
  ]),
747
765
  _: 2
748
766
  }, 1032, ["item", "selected-items", "expanded-items", "multiple", "select-all", "select-mode", "option-label", "option-value", "disabled-key", "disable-branch-node"]))), 128))
749
- ])) : (a(), i("div", Nt, [
750
- t.allowAddNew ? (a(), i("div", Tt, [
751
- t.addNewMode === "button" ? (a(), i("button", {
767
+ ])) : (o(), i("div", Nt, [
768
+ t.allowAddNew ? (o(), i("div", Tt, [
769
+ t.addNewMode === "button" ? (o(), i("button", {
752
770
  key: 0,
753
771
  type: "button",
754
772
  class: "btn btn-success btn-sm w-100",
755
773
  onClick: Ae
756
774
  }, [
757
- Q(' No items found "Click" to ' + x(t.addNewLabel) + " ", 1),
758
- y.value.trim() ? (a(), i("span", zt, ' : "' + x(y.value) + '" ', 1)) : u("", !0)
759
- ])) : t.addNewMode === "enter" ? (a(), i("span", Kt, [
760
- Q(' No items found "Press Enter" to ' + x(t.addNewLabel) + " ", 1),
761
- y.value.trim() ? (a(), i("span", Et, ' : "' + x(y.value) + '" ', 1)) : u("", !0)
762
- ])) : u("", !0)
763
- ])) : (a(), i("div", Dt, [
775
+ X(' No items found "Click" to ' + S(t.addNewLabel) + " ", 1),
776
+ g.value.trim() ? (o(), i("span", zt, ' : "' + S(g.value) + '" ', 1)) : f("", !0)
777
+ ])) : t.addNewMode === "enter" ? (o(), i("span", Kt, [
778
+ X(' No items found "Press Enter" to ' + S(t.addNewLabel) + " ", 1),
779
+ g.value.trim() ? (o(), i("span", Et, ' : "' + S(g.value) + '" ', 1)) : f("", !0)
780
+ ])) : f("", !0)
781
+ ])) : (o(), i("div", Dt, [
764
782
  ie(A, {
765
783
  name: "search",
766
784
  class: "me-1"
767
785
  }),
768
- s[6] || (s[6] = Q(" No items found ", -1))
786
+ s[6] || (s[6] = X(" No items found ", -1))
769
787
  ]))
770
788
  ]))
771
789
  ]))
772
- ], 544)) : u("", !0),
790
+ ], 544)) : f("", !0),
773
791
  he(h("div", {
774
792
  ref_key: "tooltipRef",
775
793
  ref: p,
776
794
  class: "tree-select-tooltip card shadow-sm py-1 px-2",
777
795
  role: "tooltip",
778
796
  style: { "z-index": "1070" }
779
- }, x(we.value), 513), [
780
- [Qe, w.value]
797
+ }, S(we.value), 513), [
798
+ [Qe, x.value]
781
799
  ])
782
800
  ], 544));
783
801
  }
784
- }, Ot = /* @__PURE__ */ ye(Pt, [["__scopeId", "data-v-c318f0b9"]]), Ht = {
802
+ }, Ot = /* @__PURE__ */ ge(Pt, [["__scopeId", "data-v-5eac2267"]]), qt = {
785
803
  install(t) {
786
804
  t.component("VSelect", Ot);
787
805
  }
788
806
  };
789
807
  export {
790
808
  Ot as VSelect,
791
- Ht as default
809
+ qt as default
792
810
  };
@@ -1 +1 @@
1
- (function(w,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@popperjs/core")):typeof define=="function"&&define.amd?define(["exports","vue","@popperjs/core"],e):(w=typeof globalThis<"u"?globalThis:w||self,e(w.VueSelect={},w.Vue,w.Popper))})(this,(function(w,e,Q){"use strict";const X=(l,I)=>{const n=l.__vccOpts||l;for(const[m,i]of I)n[m]=i;return n},ge={key:0},ye={key:1},ke={key:2},be={key:3},Be={key:4},Ve={key:5},we={key:6},xe={key:7},B=X({__name:"SvgIcon",props:{name:{type:String,required:!0}},setup(l){const I=l,n=e.computed(()=>({"svg-icon-spin":I.name==="spinner"}));return(m,i)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",width:"1em",height:"1em",class:e.normalizeClass(n.value)},[l.name==="spinner"?(e.openBlock(),e.createElementBlock("g",ge,i[0]||(i[0]=[e.createElementVNode("path",{d:"M12,4V2A10,10,0,0,0,2,12H4A8,8,0,0,1,12,4Z"},null,-1)]))):e.createCommentVNode("",!0),l.name==="times"?(e.openBlock(),e.createElementBlock("g",ye,i[1]||(i[1]=[e.createElementVNode("path",{d:"M13.41,12l4.3-4.29a1,1,0,1,0-1.42-1.42L12,10.59,7.71,6.29A1,1,0,0,0,6.29,7.71L10.59,12l-4.3,4.29a1,1,0,0,0,0,1.42,1,1,0,0,0,1.42,0L12,13.41l4.29,4.3a1,1,0,0,0,1.42,0,1,1,0,0,0,0-1.42Z"},null,-1)]))):e.createCommentVNode("",!0),l.name==="chevron-down"?(e.openBlock(),e.createElementBlock("g",ke,i[2]||(i[2]=[e.createElementVNode("path",{d:"M17,9.17a1,1,0,0,0-1.41,0L12,12.71,8.46,9.17a1,1,0,0,0-1.41,0,1,1,0,0,0,0,1.42l4.24,4.24a1,1,0,0,0,1.42,0L17,10.59A1,1,0,0,0,17,9.17Z"},null,-1)]))):e.createCommentVNode("",!0),l.name==="chevron-right"?(e.openBlock(),e.createElementBlock("g",be,i[3]||(i[3]=[e.createElementVNode("path",{d:"M10.83,12l-4.24,4.24a1,1,0,0,0,1.41,1.41L13.66,12,8,6.34A1,1,0,0,0,6.59,7.76Z"},null,-1)]))):e.createCommentVNode("",!0),l.name==="search"?(e.openBlock(),e.createElementBlock("g",Be,i[4]||(i[4]=[e.createElementVNode("path",{d:"M21.71,20.29,18,16.61A9,9,0,1,0,16.61,18l3.68,3.68a1,1,0,0,0,1.42,0A1,1,0,0,0,21.71,20.29ZM11,18a7,7,0,1,1,7-7A7,7,0,0,1,11,18Z"},null,-1)]))):e.createCommentVNode("",!0),l.name==="asc"?(e.openBlock(),e.createElementBlock("g",Ve,i[5]||(i[5]=[e.createElementVNode("path",{fill:"currentColor",d:"M4.869 11H2.667L6 3h2l3.333 8H9.131l-.41-1H5.28zm1.23-3h1.803L7 5.8zm12.9 8V3h-2v13h-3l4 5l4-5zm-8-3H3v2h4.855L3 19v2h8v-2H6.146L11 15z"},null,-1)]))):e.createCommentVNode("",!0),l.name==="desc"?(e.openBlock(),e.createElementBlock("g",we,i[6]||(i[6]=[e.createElementVNode("path",{fill:"currentColor",d:"M4.869 11H2.667L6 3h2l3.333 8H9.131l-.41-1H5.28zm1.23-3h1.803L7 5.8zm15.9 0l-4-5l-4 5h3v13h2V8zm-11 5H3v2h4.855L3 19v2h8v-2H6.146L11 15z"},null,-1)]))):e.createCommentVNode("",!0),l.name==="info-circle"?(e.openBlock(),e.createElementBlock("g",xe,i[7]||(i[7]=[e.createElementVNode("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"},null,-1)]))):e.createCommentVNode("",!0)],2))}},[["__scopeId","data-v-89f9b7e1"]]),Se={class:"tree-select-item-wrapper"},Ce={key:1,class:"expander-placeholder"},Ee=["checked",".indeterminate","disabled"],Ne={class:"item-content"},Le={key:0,class:"children-wrapper"},Me=X({__name:"TreeSelectItem",props:{item:{type:Object,required:!0},level:{type:Number,required:!0},selectedItems:{type:Array,required:!0},expandedItems:{type:Set,required:!0},multiple:{type:Boolean,required:!0},selectAll:{type:Boolean,required:!0},selectMode:{type:String,required:!0},optionLabel:{type:String,required:!0},optionValue:{type:String,required:!0},disabledKey:{type:String,default:null},disableBranchNode:{type:Boolean,default:!1}},emits:["select","toggle-expand"],setup(l,{emit:I}){const n=l,m=c=>c[n.optionValue]||c.id||c.value,i=c=>!n.disabledKey||!c?!1:c.hasOwnProperty(n.disabledKey)&&c[n.disabledKey]!==null,y=e.computed(()=>n.item.children&&n.item.children.length>0),C=e.computed(()=>n.expandedItems.has(m(n.item))),p=e.computed(()=>n.selectedItems.includes(m(n.item))),x=c=>{let f=[];return c.children&&c.children.forEach(S=>{f.push(m(S)),f.push(...x(S))}),f},N=e.computed(()=>!n.multiple||!n.selectAll||!y.value||p.value?!1:x(n.item).some(f=>n.selectedItems.includes(f)));return(c,f)=>{const S=e.resolveComponent("TreeSelectItem",!0);return e.openBlock(),e.createElementBlock("div",Se,[e.createElementVNode("div",{class:e.normalizeClass(["list-group-item list-group-item-action d-flex align-items-center gap-2",{"bg-primary text-white":p.value&&(l.selectMode==="highlight"||!l.multiple)&&!i(l.item)&&!(l.disableBranchNode&&y.value),"is-disabled text-muted bg-light":i(l.item)}]),style:e.normalizeStyle({"padding-left":`${l.level*1.5+1}rem`}),onClick:f[2]||(f[2]=g=>i(l.item)?null:c.$emit("select",l.item))},[y.value?(e.openBlock(),e.createBlock(B,{key:0,name:"chevron-right",class:e.normalizeClass(["expander-icon",{"rotate-90":C.value}]),onClick:f[0]||(f[0]=e.withModifiers(g=>c.$emit("toggle-expand",m(l.item)),["stop"]))},null,8,["class"])):(e.openBlock(),e.createElementBlock("span",Ce)),l.multiple&&l.selectMode==="checkbox"&&!(l.disableBranchNode&&y.value)?(e.openBlock(),e.createElementBlock("input",{key:2,type:"checkbox",class:"form-check-input",checked:p.value,".indeterminate":N.value,disabled:i(l.item),onClick:f[1]||(f[1]=e.withModifiers(g=>c.$emit("select",l.item),["stop"]))},null,40,Ee)):e.createCommentVNode("",!0),e.createElementVNode("div",Ne,[e.renderSlot(c.$slots,"default",{item:l.item,level:l.level},void 0,!0)])],6),y.value&&C.value?(e.openBlock(),e.createElementBlock("div",Le,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.item.children,g=>(e.openBlock(),e.createBlock(S,{key:m(g),item:g,level:l.level+1,"selected-items":l.selectedItems,"expanded-items":l.expandedItems,multiple:l.multiple,"select-all":l.selectAll,"select-mode":l.selectMode,"option-label":l.optionLabel,"option-value":l.optionValue,"disabled-key":l.disabledKey,"disable-branch-node":l.disableBranchNode,onSelect:f[3]||(f[3]=V=>c.$emit("select",V)),onToggleExpand:f[4]||(f[4]=V=>c.$emit("toggle-expand",V))},{default:e.withCtx(({item:V,level:F})=>[e.renderSlot(c.$slots,"default",{item:V,level:F},void 0,!0)]),_:2},1032,["item","level","selected-items","expanded-items","multiple","select-all","select-mode","option-label","option-value","disabled-key","disable-branch-node"]))),128))])):e.createCommentVNode("",!0)])}}},[["__scopeId","data-v-b319a2c7"]]),Ie=["onKeydown"],$e={class:"tree-select-display-container"},Ae={key:0,class:"d-flex align-items-center justify-content-start w-100"},Te=["title"],ze={key:1},De={key:0,class:"text-muted"},Ke={key:1,class:"chips-container"},Pe={class:"d-flex align-items-center gap-2"},Oe={class:"list-group list-group-flush"},Re={class:"text-wrap text-start me-2"},qe={class:"p-2 border-bottom d-flex flex-column gap-2"},Fe=["onKeydown"],je={key:1,class:"d-flex align-items-center gap-2"},He=["value"],Ze=["disabled"],We={key:0,class:"p-4 text-muted text-center"},Ue={key:1,class:"tree-select-body",style:{"max-height":"300px","overflow-y":"auto"}},Ge={key:0,class:"list-group list-group-flush"},Je={class:"d-flex align-items-center gap-2",style:{"white-space":"wrap"}},Qe={key:1,class:"p-3 text-muted text-center"},Xe={key:0},Ye={key:0},ve={key:1},_e={key:0},et={key:1},ne=X({__name:"TreeSelectMain",props:{modelValue:{type:[String,Number,Array],default:null},displayMode:{type:String,default:"text",validator:l=>["text","chips"].includes(l)},items:{type:Array,default:()=>[]},multiple:{type:Boolean,default:!1},selectMode:{type:String,default:"checkbox",validator:l=>["checkbox","highlight"].includes(l)},placeholder:{type:String,default:"Select item..."},isInvalid:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},searchable:{type:Boolean,default:!0},isLoading:{type:Boolean,default:!1},showClearButton:{type:Boolean,default:!0},selectAll:{type:Boolean,default:!1},deselectAll:{type:Boolean,default:!0},canDeselect:{type:Boolean,default:!0},optionLabel:{type:String,default:"value"},optionValue:{type:String,default:"code"},disabledKey:{type:String,default:null},excludeFromSelectedListKey:{type:String,default:null},disableBranchNodes:{type:Boolean,default:!1},size:{type:String,default:"sm",validator:l=>["sm","md","lg","xl"].includes(l)},sortable:{type:Boolean,default:!1},sortOptions:{type:Array,default:()=>[]},defaultSortKey:{type:String,default:null},defaultSortDirection:{type:String,default:"asc",validator:l=>["asc","desc"].includes(l)},maxVisibleChipsDisplay:{type:Number,default:3},closeOnSelect:{type:Boolean,default:!0},allowAddNew:{type:Boolean,default:!1},addNewMode:{type:String,default:"button",validator:l=>["button","enter"].includes(l)},addNewLabel:{type:String,default:"Add new record"}},emits:["update:modelValue","change","clear","deselect","select","focus","blur","add-new"],setup(l,{emit:I}){const n=l,m=I,i=e.ref(null),y=e.ref(null),C=e.ref(null),p=e.ref(""),x=e.ref(!1),N=e.ref(new Set),c=e.ref(null),f=e.ref(null),S=e.ref(null),g=e.ref(!1),V=e.ref(null),F=e.ref(null),A=e.ref(!1),L=e.ref(n.defaultSortKey),T=e.ref(n.defaultSortDirection),z=e.ref(null),j=e.ref(null),D=e.ref(!1),H=e.ref(null),oe=e.computed(()=>n.size==="sm"?"btn-sm":n.size==="lg"?"btn-lg":n.size==="xl"?"btn-xl":""),ae=e.computed(()=>n.size==="sm"?"form-control-sm":n.size==="lg"?"form-control-lg":n.size==="xl"?"form-control-xl":""),lt=e.computed(()=>U.value===0?[]:W.value.slice(n.maxVisibleChipsDisplay)),K=e.computed(()=>!n.multiple||!n.excludeFromSelectedListKey?E.value:E.value.filter(t=>{const a=P(t);return!a||!a[n.excludeFromSelectedListKey]})),re=e.computed(()=>{const t=K.value;if(t.length===0)return n.placeholder;if(n.multiple){if(t.length===1){const o=O(t[0]);return o?o.join(" → "):t[0]}return`${t.length} items selected`}const a=O(t[0]);return a?a.join(" → "):t[0]}),se=async()=>{await e.nextTick();const t=F.value;if(n.multiple||n.displayMode==="chips"||K.value.length===0||!t){A.value=!1;return}A.value=t.scrollWidth>t.clientWidth},$=t=>t&&(t[n.optionLabel]||t.label||t.name)||"",h=t=>t?t[n.optionValue]||t.id||t.value:null,Y=t=>!n.disabledKey||!t?!1:t.hasOwnProperty(n.disabledKey)&&t[n.disabledKey]!==null,k=t=>t.children&&t.children.length>0,Z=(t,a)=>{if(a)return a.split(".").reduce((o,r)=>o&&o[r],t)},P=(t,a=n.items)=>{for(const o of a){if(h(o)===t)return o;if(k(o)){const r=P(t,o.children);if(r)return r}}return null},v=t=>{const a=[];return k(t)&&t.children.forEach(o=>{Y(o)||(a.push(h(o)),a.push(...v(o)))}),a},_=(t,a=n.items,o=[])=>{for(const r of a){if(h(r)===t)return o;if(k(r)){const s=_(t,r.children,[...o,h(r)]);if(s)return s}}return null},E=e.computed(()=>{const t=new Set(Array.isArray(n.modelValue)?n.modelValue:[n.modelValue].filter(Boolean));if(n.multiple&&n.selectAll){const a=o=>{o.forEach(r=>{if(k(r)){const s=r.children.filter(u=>!Y(u));s.length>0&&s.every(u=>t.has(h(u)))&&t.add(h(r)),a(r.children)}})};a(n.items)}return Array.from(t)}),O=(t,a=n.items,o=[])=>{for(const r of a){const s=[...o,$(r)];if(h(r)===t)return s;if(k(r)){const d=O(t,r.children,s);if(d)return d}}return null},ie=t=>{if(!t||t.length===0)return"";const a=t.join(" → ");return a.length<=40?a:t.length>2?`${t[0]} → ... → ${t[t.length-1]}`:a},ee=e.computed(()=>{const t=K.value;if(t.length===0)return n.placeholder;if(n.multiple){if(t.length===1){const o=O(t[0]);return o?ie(o):t[0]}return`${t.length} items selected`}const a=O(t[0]);return a?ie(a):t[0]}),W=e.computed(()=>{if(!n.multiple||K.value.length===0)return[];const t=K.value.map(r=>P(r)).filter(Boolean);if(!n.sortable||!L.value)return t;const a=L.value,o=T.value;return[...t].sort((r,s)=>{const d=Z(r,a),u=Z(s,a);if(d==null)return 1;if(u==null)return-1;let b=0;return typeof d=="string"&&typeof u=="string"?b=d.localeCompare(u):d>u?b=1:d<u&&(b=-1),o==="desc"?b*-1:b})}),ce=e.computed(()=>W.value.slice(0,n.maxVisibleChipsDisplay)),U=e.computed(()=>{const t=W.value.length-n.maxVisibleChipsDisplay;return t>0?t:0}),de=(t,a)=>t.map(o=>{const r=$(o).toLowerCase().includes(a);if(!k(o))return r?o:null;const s=de(o.children,a);return r?{...o,children:o.children}:s.length>0?{...o,children:s}:null}).filter(Boolean),me=(t,a,o)=>!t||!a?t:[...t].sort((s,d)=>{const u=Z(s,a),b=Z(d,a);if(u==null)return 1;if(b==null)return-1;let q=0;return typeof u=="string"&&typeof b=="string"?q=u.localeCompare(b):u>b?q=1:u<b&&(q=-1),o==="desc"?q*-1:q}).map(s=>k(s)?{...s,children:me(s.children,a,o)}:s),G=e.computed(()=>{const t=p.value.trim()?de(n.items,p.value.toLowerCase()):n.items;return!n.sortable||!L.value?t:me(t,L.value,T.value)}),nt=t=>{if(n.disableBranchNodes&&k(t)){const s=h(t);ue(s);return}if(Y(t))return;const a=h(t);let o=new Set(E.value);if(n.multiple){const s=o.has(a);if(n.selectAll&&k(t)){const d=v(t);s?(o.delete(a),m("deselect",t),n.deselectAll&&d.forEach(u=>o.delete(u))):(o.add(a),d.forEach(u=>o.add(u)),m("select",t))}else s?(o.delete(a),n.selectAll&&_(a)?.forEach(u=>o.delete(u))):o.add(a)}else{const s=n.modelValue,d=h(t);s===d?(o.clear(),m("deselect",t)):(o.clear(),o.add(d),s!=null&&P(s),m("select",t)),n.closeOnSelect&&M(),e.nextTick(()=>{C.value?.focus()})}let r=Array.from(o);n.multiple&&n.excludeFromSelectedListKey&&(r=r.filter(s=>{const d=P(s);return!d||!d[n.excludeFromSelectedListKey]})),m("update:modelValue",n.multiple?r:r[0]||null),m("change",n.multiple?r:r[0]||null)},te=t=>{if(n.disabled||!t)return;const a=h(t),o=new Set(E.value);o.delete(a),n.selectAll&&(n.deselectAll&&k(t)&&v(t).forEach(u=>o.delete(u)),_(a)?.forEach(d=>o.delete(d)));const r=Array.from(o);m("update:modelValue",r),m("change",r)},ue=t=>{N.value.has(t)?N.value.delete(t):N.value.add(t)},ot=()=>{T.value=T.value==="asc"?"desc":"asc"},at=()=>{const t=n.multiple?[]:null;m("clear"),m("update:modelValue",t),m("change",t),R()},fe=()=>{!n.allowAddNew||!p.value.trim()||(m("add-new",p.value.trim()),M())},rt=()=>{n.allowAddNew&&n.addNewMode==="enter"&&p.value.trim()&&G.value.length===0&&fe()},st=t=>{m("focus",t)},it=async()=>{n.disabled||(R(),x.value=!0,J(),await e.nextTick(),y.value&&C.value&&(c.value=Q.createPopper(C.value,y.value,{placement:"bottom-start",strategy:"fixed",modifiers:[{name:"offset",options:{offset:[0,4]}},{name:"preventOverflow",options:{padding:8}},{name:"flip",options:{fallbackPlacements:["top-start"]}},{name:"sameWidth",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:({state:t})=>{t.styles.popper.width=`${t.rects.reference.width}px`},effect:({state:t})=>{t.elements.popper.style.width=`${t.elements.reference.offsetWidth}px`}}]})),n.searchable&&(await e.nextTick(),y.value?.querySelector(".tree-search-input")?.focus()))},M=()=>{x.value=!1,p.value="",c.value?.destroy(),c.value=null,m("blur",n.modelValue)},le=()=>x.value?M():it(),ct=async()=>{M(),J(),D.value=!0,await e.nextTick(),j.value&&z.value&&(H.value=Q.createPopper(z.value,j.value,{placement:"bottom-end",strategy:"fixed",modifiers:[{name:"offset",options:{offset:[0,4]}}]}))},R=()=>{D.value=!1,H.value?.destroy(),H.value=null},pe=()=>D.value?R():ct(),he=t=>{x.value&&!C.value?.contains(t.target)&&!y.value?.contains(t.target)&&M(),D.value&&!z.value?.contains(t.target)&&!j.value?.contains(t.target)&&R(),g.value&&!V.value?.$el?.contains(t.target)&&!f.value?.contains(t.target)&&J()},dt=t=>{i.value?.contains(t.relatedTarget)||M()},mt=async()=>{!A.value||g.value||(M(),R(),g.value=!0,await e.nextTick(),f.value&&V.value&&(S.value=Q.createPopper(V.value.$el,f.value,{placement:"top",strategy:"fixed",modifiers:[{name:"offset",options:{offset:[0,8]}}]})))},ut=()=>{g.value?J():mt()},J=()=>{g.value=!1,S.value?.destroy(),S.value=null};return e.watch(p,t=>{if(t.trim()){const a=o=>{o.forEach(r=>{k(r)&&(N.value.add(h(r)),a(r.children))})};a(G.value)}}),e.watch(ee,()=>{se()}),e.onMounted(()=>{document.addEventListener("click",he),se()}),e.onUnmounted(()=>{document.removeEventListener("click",he),c.value?.destroy(),H.value?.destroy(),S.value?.destroy()}),(t,a)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"wrapperRef",ref:i,class:"tree-select-wrapper",onFocusin:st,onFocusout:dt},[e.createElementVNode("div",{ref_key:"triggerRef",ref:C,role:"button",tabindex:"0",class:e.normalizeClass(["btn tree-select-trigger w-100 d-flex justify-content-between align-items-center tree-select-main",[oe.value,{"btn-outline-secondary":!l.isInvalid,"border-danger":l.isInvalid,disabled:l.disabled||l.isLoading,"is-loading":l.isLoading,"has-chips":l.multiple&&l.displayMode==="chips"&&E.value.length>0}]]),onClick:le,onKeydown:[e.withKeys(e.withModifiers(le,["prevent"]),["enter"]),e.withKeys(e.withModifiers(le,["prevent"]),["space"])]},[e.createElementVNode("div",$e,[e.renderSlot(t.$slots,"display",{selectedItems:W.value,displayText:ee.value,placeholder:l.placeholder,isLoading:l.isLoading,removeItem:te,getItemLabel:$,getItemValue:h,visibleChips:ce.value,hiddenChipsCount:U.value,toggleMorePopover:pe,moreTriggerRef:z.value},()=>[!l.multiple||l.displayMode==="text"?(e.openBlock(),e.createElementBlock("div",Ae,[e.createElementVNode("span",{ref_key:"textDisplaySpanRef",ref:F,class:"text-truncate",title:A.value?re.value:""},e.toDisplayString(l.isLoading?"Loading data...":ee.value),9,Te),A.value&&!l.isLoading?(e.openBlock(),e.createBlock(B,{key:0,ref_key:"tooltipTriggerIconRef",ref:V,name:"info-circle",class:"tooltip-trigger-icon ms-2 flex-shrink-0",onClick:e.withModifiers(ut,["stop"])},null,512)):e.createCommentVNode("",!0)])):l.multiple&&l.displayMode==="chips"?(e.openBlock(),e.createElementBlock("div",ze,[E.value.length===0?(e.openBlock(),e.createElementBlock("span",De,e.toDisplayString(l.placeholder),1)):(e.openBlock(),e.createElementBlock("div",Ke,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ce.value,o=>(e.openBlock(),e.createElementBlock("span",{key:h(o),class:"badge text-bg-primary chip bg-primary"},[e.createTextVNode(e.toDisplayString($(o))+" ",1),e.createVNode(B,{name:"times",class:"chip-remove",onClick:e.withModifiers(r=>te(o),["stop"])},null,8,["onClick"])]))),128)),U.value>0?(e.openBlock(),e.createElementBlock("button",{key:0,ref_key:"moreTriggerRef",ref:z,type:"button",class:"btn btn-sm btn-light more-button",onClick:e.withModifiers(pe,["stop"])}," +"+e.toDisplayString(U.value),513)):e.createCommentVNode("",!0)]))])):e.createCommentVNode("",!0)],!0)]),e.createElementVNode("div",Pe,[l.isLoading?(e.openBlock(),e.createBlock(B,{key:0,name:"spinner",class:"loading-icon"})):e.createCommentVNode("",!0),l.showClearButton&&E.value.length>0&&!l.disabled&&!l.isLoading?(e.openBlock(),e.createBlock(B,{key:1,name:"times",onClick:e.withModifiers(at,["stop"]),class:"clear-icon"})):e.createCommentVNode("",!0),l.isLoading?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(B,{key:2,name:"chevron-down",class:e.normalizeClass(["transition-transform",{"rotate-180":x.value}])},null,8,["class"]))])],42,Ie),D.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"morePopoverRef",ref:j,class:"card shadow-lg border-0 more-popover",style:{"z-index":"1060"}},[e.createElementVNode("div",Oe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(lt.value,o=>(e.openBlock(),e.createElementBlock("div",{key:h(o),class:"list-group-item d-flex justify-content-between align-items-center py-1 px-2"},[e.createElementVNode("small",Re,e.toDisplayString($(o)),1),l.disabled?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(B,{key:0,name:"times",class:"chip-remove flex-shrink-0",onClick:e.withModifiers(r=>te(o),["stop"])},null,8,["onClick"]))]))),128))])],512)):e.createCommentVNode("",!0),x.value?(e.openBlock(),e.createElementBlock("div",{key:1,ref_key:"dropdownRef",ref:y,class:"tree-select-dropdown card shadow-lg border-0",onMousedown:a[2]||(a[2]=e.withModifiers(()=>{},["prevent"])),onClick:a[3]||(a[3]=e.withModifiers(()=>{},["stop"])),style:{"z-index":"1050"}},[e.createElementVNode("div",qe,[l.searchable?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,"onUpdate:modelValue":a[0]||(a[0]=o=>p.value=o),type:"text",class:e.normalizeClass(["form-control tree-search-input",ae.value]),placeholder:"Search...",onKeydown:e.withKeys(e.withModifiers(rt,["prevent"]),["enter"])},null,42,Fe)),[[e.vModelText,p.value]]):e.createCommentVNode("",!0),l.sortable&&l.sortOptions.length>0?(e.openBlock(),e.createElementBlock("div",je,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":a[1]||(a[1]=o=>L.value=o),class:e.normalizeClass(["form-select flex-grow-1",ae.value])},[a[4]||(a[4]=e.createElementVNode("option",{value:null,disabled:""},"Sort by...",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.sortOptions,o=>(e.openBlock(),e.createElementBlock("option",{key:o.value,value:o.value},e.toDisplayString(o.label),9,He))),128))],2),[[e.vModelSelect,L.value]]),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["btn btn-outline-secondary",oe.value]),disabled:!L.value,onClick:ot},[e.createVNode(B,{name:T.value==="asc"?"asc":"desc"},null,8,["name"])],10,Ze)])):e.createCommentVNode("",!0)]),l.isLoading?(e.openBlock(),e.createElementBlock("div",We,[e.createVNode(B,{name:"spinner",class:"me-2"}),a[5]||(a[5]=e.createElementVNode("span",null,"Loading...",-1))])):(e.openBlock(),e.createElementBlock("div",Ue,[G.value.length>0?(e.openBlock(),e.createElementBlock("div",Ge,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(G.value,o=>(e.openBlock(),e.createBlock(Me,{key:h(o),item:o,level:0,"selected-items":E.value,"expanded-items":N.value,multiple:l.multiple,"select-all":l.selectAll,"select-mode":l.selectMode,"option-label":l.optionLabel,"option-value":l.optionValue,"disabled-key":l.disabledKey,"disable-branch-node":l.disableBranchNodes,onSelect:nt,onToggleExpand:ue},{default:e.withCtx(({item:r,level:s})=>[e.renderSlot(t.$slots,"default",{item:r,level:s},()=>[e.createElementVNode("div",Je,[e.createTextVNode(e.toDisplayString($(r))+" ",1),r.icon?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass(r.icon)},null,2)):e.createCommentVNode("",!0)])],!0)]),_:2},1032,["item","selected-items","expanded-items","multiple","select-all","select-mode","option-label","option-value","disabled-key","disable-branch-node"]))),128))])):(e.openBlock(),e.createElementBlock("div",Qe,[l.allowAddNew?(e.openBlock(),e.createElementBlock("div",Xe,[l.addNewMode==="button"?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"btn btn-success btn-sm w-100",onClick:fe},[e.createTextVNode(' No items found "Click" to '+e.toDisplayString(l.addNewLabel)+" ",1),p.value.trim()?(e.openBlock(),e.createElementBlock("span",Ye,' : "'+e.toDisplayString(p.value)+'" ',1)):e.createCommentVNode("",!0)])):l.addNewMode==="enter"?(e.openBlock(),e.createElementBlock("span",ve,[e.createTextVNode(' No items found "Press Enter" to '+e.toDisplayString(l.addNewLabel)+" ",1),p.value.trim()?(e.openBlock(),e.createElementBlock("span",_e,' : "'+e.toDisplayString(p.value)+'" ',1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",et,[e.createVNode(B,{name:"search",class:"me-1"}),a[6]||(a[6]=e.createTextVNode(" No items found ",-1))]))]))]))],544)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("div",{ref_key:"tooltipRef",ref:f,class:"tree-select-tooltip card shadow-sm py-1 px-2",role:"tooltip",style:{"z-index":"1070"}},e.toDisplayString(re.value),513),[[e.vShow,g.value]])],544))}},[["__scopeId","data-v-c318f0b9"]]),tt={install(l){l.component("VSelect",ne)}};w.VSelect=ne,w.default=tt,Object.defineProperties(w,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
1
+ (function(V,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@popperjs/core")):typeof define=="function"&&define.amd?define(["exports","vue","@popperjs/core"],e):(V=typeof globalThis<"u"?globalThis:V||self,e(V.VueSelect={},V.Vue,V.Popper))})(this,(function(V,e,Q){"use strict";const X=(l,I)=>{const n=l.__vccOpts||l;for(const[u,c]of I)n[u]=c;return n},ye={key:0},ge={key:1},ke={key:2},be={key:3},Be={key:4},we={key:5},Ve={key:6},xe={key:7},B=X({__name:"SvgIcon",props:{name:{type:String,required:!0}},setup(l){const I=l,n=e.computed(()=>({"svg-icon-spin":I.name==="spinner"}));return(u,c)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",width:"1em",height:"1em",class:e.normalizeClass(n.value)},[l.name==="spinner"?(e.openBlock(),e.createElementBlock("g",ye,c[0]||(c[0]=[e.createElementVNode("path",{d:"M12,4V2A10,10,0,0,0,2,12H4A8,8,0,0,1,12,4Z"},null,-1)]))):e.createCommentVNode("",!0),l.name==="times"?(e.openBlock(),e.createElementBlock("g",ge,c[1]||(c[1]=[e.createElementVNode("path",{d:"M13.41,12l4.3-4.29a1,1,0,1,0-1.42-1.42L12,10.59,7.71,6.29A1,1,0,0,0,6.29,7.71L10.59,12l-4.3,4.29a1,1,0,0,0,0,1.42,1,1,0,0,0,1.42,0L12,13.41l4.29,4.3a1,1,0,0,0,1.42,0,1,1,0,0,0,0-1.42Z"},null,-1)]))):e.createCommentVNode("",!0),l.name==="chevron-down"?(e.openBlock(),e.createElementBlock("g",ke,c[2]||(c[2]=[e.createElementVNode("path",{d:"M17,9.17a1,1,0,0,0-1.41,0L12,12.71,8.46,9.17a1,1,0,0,0-1.41,0,1,1,0,0,0,0,1.42l4.24,4.24a1,1,0,0,0,1.42,0L17,10.59A1,1,0,0,0,17,9.17Z"},null,-1)]))):e.createCommentVNode("",!0),l.name==="chevron-right"?(e.openBlock(),e.createElementBlock("g",be,c[3]||(c[3]=[e.createElementVNode("path",{d:"M10.83,12l-4.24,4.24a1,1,0,0,0,1.41,1.41L13.66,12,8,6.34A1,1,0,0,0,6.59,7.76Z"},null,-1)]))):e.createCommentVNode("",!0),l.name==="search"?(e.openBlock(),e.createElementBlock("g",Be,c[4]||(c[4]=[e.createElementVNode("path",{d:"M21.71,20.29,18,16.61A9,9,0,1,0,16.61,18l3.68,3.68a1,1,0,0,0,1.42,0A1,1,0,0,0,21.71,20.29ZM11,18a7,7,0,1,1,7-7A7,7,0,0,1,11,18Z"},null,-1)]))):e.createCommentVNode("",!0),l.name==="asc"?(e.openBlock(),e.createElementBlock("g",we,c[5]||(c[5]=[e.createElementVNode("path",{fill:"currentColor",d:"M4.869 11H2.667L6 3h2l3.333 8H9.131l-.41-1H5.28zm1.23-3h1.803L7 5.8zm12.9 8V3h-2v13h-3l4 5l4-5zm-8-3H3v2h4.855L3 19v2h8v-2H6.146L11 15z"},null,-1)]))):e.createCommentVNode("",!0),l.name==="desc"?(e.openBlock(),e.createElementBlock("g",Ve,c[6]||(c[6]=[e.createElementVNode("path",{fill:"currentColor",d:"M4.869 11H2.667L6 3h2l3.333 8H9.131l-.41-1H5.28zm1.23-3h1.803L7 5.8zm15.9 0l-4-5l-4 5h3v13h2V8zm-11 5H3v2h4.855L3 19v2h8v-2H6.146L11 15z"},null,-1)]))):e.createCommentVNode("",!0),l.name==="info-circle"?(e.openBlock(),e.createElementBlock("g",xe,c[7]||(c[7]=[e.createElementVNode("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"},null,-1)]))):e.createCommentVNode("",!0)],2))}},[["__scopeId","data-v-89f9b7e1"]]),Se={class:"tree-select-item-wrapper"},Ce={key:1,class:"expander-placeholder"},Ee=["checked",".indeterminate","disabled"],Ne={class:"item-content"},Le={key:0,class:"children-wrapper"},Me=X({__name:"TreeSelectItem",props:{item:{type:Object,required:!0},level:{type:Number,required:!0},selectedItems:{type:Array,required:!0},expandedItems:{type:Set,required:!0},multiple:{type:Boolean,required:!0},selectAll:{type:Boolean,required:!0},selectMode:{type:String,required:!0},optionLabel:{type:String,required:!0},optionValue:{type:String,required:!0},disabledKey:{type:String,default:null},disableBranchNode:{type:Boolean,default:!1}},emits:["select","toggle-expand"],setup(l,{emit:I}){const n=l,u=m=>m[n.optionValue]||m.id||m.value,c=m=>!n.disabledKey||!m?!1:m.hasOwnProperty(n.disabledKey)&&m[n.disabledKey]!==null,k=e.computed(()=>n.item.children&&n.item.children.length>0),C=e.computed(()=>n.expandedItems.has(u(n.item))),p=e.computed(()=>n.selectedItems.includes(u(n.item))),x=m=>{let f=[];return m.children&&m.children.forEach(S=>{f.push(u(S)),f.push(...x(S))}),f},N=e.computed(()=>!n.multiple||!n.selectAll||!k.value||p.value?!1:x(n.item).some(f=>n.selectedItems.includes(f)));return(m,f)=>{const S=e.resolveComponent("TreeSelectItem",!0);return e.openBlock(),e.createElementBlock("div",Se,[e.createElementVNode("div",{class:e.normalizeClass(["list-group-item list-group-item-action d-flex align-items-center gap-2",{"bg-primary text-white":p.value&&(l.selectMode==="highlight"||!l.multiple)&&!c(l.item)&&!(l.disableBranchNode&&k.value),"is-disabled text-muted bg-light":c(l.item)}]),style:e.normalizeStyle({"padding-left":`${l.level*1.5+1}rem`}),onClick:f[2]||(f[2]=g=>c(l.item)?null:m.$emit("select",l.item))},[k.value?(e.openBlock(),e.createBlock(B,{key:0,name:"chevron-right",class:e.normalizeClass(["expander-icon",{"rotate-90":C.value}]),onClick:f[0]||(f[0]=e.withModifiers(g=>m.$emit("toggle-expand",u(l.item)),["stop"]))},null,8,["class"])):(e.openBlock(),e.createElementBlock("span",Ce)),l.multiple&&l.selectMode==="checkbox"&&!(l.disableBranchNode&&k.value)?(e.openBlock(),e.createElementBlock("input",{key:2,type:"checkbox",class:"form-check-input",checked:p.value,".indeterminate":N.value,disabled:c(l.item),onClick:f[1]||(f[1]=e.withModifiers(g=>m.$emit("select",l.item),["stop"]))},null,40,Ee)):e.createCommentVNode("",!0),e.createElementVNode("div",Ne,[e.renderSlot(m.$slots,"default",{item:l.item,level:l.level},void 0,!0)])],6),k.value&&C.value?(e.openBlock(),e.createElementBlock("div",Le,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.item.children,g=>(e.openBlock(),e.createBlock(S,{key:u(g),item:g,level:l.level+1,"selected-items":l.selectedItems,"expanded-items":l.expandedItems,multiple:l.multiple,"select-all":l.selectAll,"select-mode":l.selectMode,"option-label":l.optionLabel,"option-value":l.optionValue,"disabled-key":l.disabledKey,"disable-branch-node":l.disableBranchNode,onSelect:f[3]||(f[3]=w=>m.$emit("select",w)),onToggleExpand:f[4]||(f[4]=w=>m.$emit("toggle-expand",w))},{default:e.withCtx(({item:w,level:j})=>[e.renderSlot(m.$slots,"default",{item:w,level:j},void 0,!0)]),_:2},1032,["item","level","selected-items","expanded-items","multiple","select-all","select-mode","option-label","option-value","disabled-key","disable-branch-node"]))),128))])):e.createCommentVNode("",!0)])}}},[["__scopeId","data-v-b319a2c7"]]),Ie=["onKeydown"],Ae={class:"tree-select-display-container"},Te={key:0,class:"d-flex align-items-center justify-content-start w-100"},$e=["title"],ze={key:1},De={key:0,class:"text-muted"},Ke={key:1,class:"chips-container"},Pe={class:"d-flex align-items-center gap-2"},Fe={class:"list-group list-group-flush"},Oe={class:"text-wrap text-start me-2"},Re={class:"p-2 border-bottom d-flex flex-column gap-2"},qe=["onKeydown"],je={key:1,class:"d-flex align-items-center gap-2"},He=["value"],Ze=["disabled"],We={key:0,class:"p-4 text-muted text-center"},Ue={key:1,class:"tree-select-body",style:{"max-height":"300px","overflow-y":"auto"}},Ge={key:0,class:"list-group list-group-flush"},Je={class:"d-flex align-items-center gap-2",style:{"white-space":"wrap"}},Qe={key:1,class:"p-3 text-muted text-center"},Xe={key:0},Ye={key:0},ve={key:1},_e={key:0},et={key:1},ne=X({__name:"TreeSelectMain",props:{modelValue:{type:[String,Number,Array],default:null},displayMode:{type:String,default:"text",validator:l=>["text","chips"].includes(l)},items:{type:Array,default:()=>[]},multiple:{type:Boolean,default:!1},selectMode:{type:String,default:"checkbox",validator:l=>["checkbox","highlight"].includes(l)},placeholder:{type:String,default:"Select item..."},isInvalid:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},searchable:{type:Boolean,default:!0},isLoading:{type:Boolean,default:!1},showClearButton:{type:Boolean,default:!0},selectAll:{type:Boolean,default:!1},deselectAll:{type:Boolean,default:!0},canDeselect:{type:Boolean,default:!0},optionLabel:{type:String,default:"value"},optionValue:{type:String,default:"code"},disabledKey:{type:String,default:null},excludeFromSelectedListKey:{type:String,default:null},disableBranchNodes:{type:Boolean,default:!1},size:{type:String,default:"sm",validator:l=>["sm","md","lg","xl"].includes(l)},sortable:{type:Boolean,default:!1},sortOptions:{type:Array,default:()=>[]},defaultSortKey:{type:String,default:null},defaultSortDirection:{type:String,default:"asc",validator:l=>["asc","desc"].includes(l)},maxVisibleChipsDisplay:{type:Number,default:3},closeOnSelect:{type:Boolean,default:!0},allowAddNew:{type:Boolean,default:!1},addNewMode:{type:String,default:"button",validator:l=>["button","enter"].includes(l)},addNewLabel:{type:String,default:"Add new record"},keyFilters:{type:Array,default:()=>[]}},emits:["update:modelValue","change","clear","deselect","select","focus","blur","add-new"],setup(l,{emit:I}){const n=l,u=I,c=e.ref(null),k=e.ref(null),C=e.ref(null),p=e.ref(""),x=e.ref(!1),N=e.ref(new Set),m=e.ref(null),f=e.ref(null),S=e.ref(null),g=e.ref(!1),w=e.ref(null),j=e.ref(null),T=e.ref(!1),L=e.ref(n.defaultSortKey),$=e.ref(n.defaultSortDirection),z=e.ref(null),H=e.ref(null),D=e.ref(!1),Z=e.ref(null),oe=e.computed(()=>n.size==="sm"?"btn-sm":n.size==="lg"?"btn-lg":n.size==="xl"?"btn-xl":""),ae=e.computed(()=>n.size==="sm"?"form-control-sm":n.size==="lg"?"form-control-lg":n.size==="xl"?"form-control-xl":""),lt=e.computed(()=>U.value===0?[]:W.value.slice(n.maxVisibleChipsDisplay)),K=e.computed(()=>!n.multiple||!n.excludeFromSelectedListKey?E.value:E.value.filter(t=>{const a=F(t);return!a||!a[n.excludeFromSelectedListKey]})),re=e.computed(()=>{const t=K.value;if(t.length===0)return n.placeholder;if(n.multiple){if(t.length===1){const o=O(t[0]);return o?o.join(" → "):t[0]}return`${t.length} items selected`}const a=O(t[0]);return a?a.join(" → "):t[0]}),se=async()=>{await e.nextTick();const t=j.value;if(n.multiple||n.displayMode==="chips"||K.value.length===0||!t){T.value=!1;return}T.value=t.scrollWidth>t.clientWidth},A=t=>t&&(t[n.optionLabel]||t.label||t.name)||"",h=t=>t?t[n.optionValue]||t.id||t.value:null,Y=t=>!n.disabledKey||!t?!1:t.hasOwnProperty(n.disabledKey)&&t[n.disabledKey]!==null,b=t=>t.children&&t.children.length>0,P=(t,a)=>{if(a)return a.split(".").reduce((o,r)=>o&&o[r],t)},F=(t,a=n.items)=>{for(const o of a){if(h(o)===t)return o;if(b(o)){const r=F(t,o.children);if(r)return r}}return null},v=t=>{const a=[];return b(t)&&t.children.forEach(o=>{Y(o)||(a.push(h(o)),a.push(...v(o)))}),a},_=(t,a=n.items,o=[])=>{for(const r of a){if(h(r)===t)return o;if(b(r)){const s=_(t,r.children,[...o,h(r)]);if(s)return s}}return null},E=e.computed(()=>{const t=new Set(Array.isArray(n.modelValue)?n.modelValue:[n.modelValue].filter(Boolean));if(n.multiple&&n.selectAll){const a=o=>{o.forEach(r=>{if(b(r)){const s=r.children.filter(d=>!Y(d));s.length>0&&s.every(d=>t.has(h(d)))&&t.add(h(r)),a(r.children)}})};a(n.items)}return Array.from(t)}),O=(t,a=n.items,o=[])=>{for(const r of a){const s=[...o,A(r)];if(h(r)===t)return s;if(b(r)){const i=O(t,r.children,s);if(i)return i}}return null},ie=t=>{if(!t||t.length===0)return"";const a=t.join(" → ");return a.length<=40?a:t.length>2?`${t[0]} → ... → ${t[t.length-1]}`:a},ee=e.computed(()=>{const t=K.value;if(t.length===0)return n.placeholder;if(n.multiple){if(t.length===1){const o=O(t[0]);return o?ie(o):t[0]}return`${t.length} items selected`}const a=O(t[0]);return a?ie(a):t[0]}),W=e.computed(()=>{if(!n.multiple||K.value.length===0)return[];const t=K.value.map(r=>F(r)).filter(Boolean);if(!n.sortable||!L.value)return t;const a=L.value,o=$.value;return[...t].sort((r,s)=>{const i=P(r,a),d=P(s,a);if(i==null)return 1;if(d==null)return-1;let y=0;return typeof i=="string"&&typeof d=="string"?y=i.localeCompare(d):i>d?y=1:i<d&&(y=-1),o==="desc"?y*-1:y})}),ce=e.computed(()=>W.value.slice(0,n.maxVisibleChipsDisplay)),U=e.computed(()=>{const t=W.value.length-n.maxVisibleChipsDisplay;return t>0?t:0}),de=(t,a)=>{const o=a.toLowerCase();return t.map(r=>{let s=!1;if(n.keyFilters&&n.keyFilters.length>0)for(const d of n.keyFilters){const y=P(r,d);if(y!=null&&String(y).toLowerCase().includes(o)){s=!0;break}}else s=A(r).toLowerCase().includes(o);if(!b(r))return s?r:null;const i=de(r.children,a);return s?{...r,children:r.children}:i.length>0?{...r,children:i}:null}).filter(Boolean)},me=(t,a,o)=>!t||!a?t:[...t].sort((s,i)=>{const d=P(s,a),y=P(i,a);if(d==null)return 1;if(y==null)return-1;let q=0;return typeof d=="string"&&typeof y=="string"?q=d.localeCompare(y):d>y?q=1:d<y&&(q=-1),o==="desc"?q*-1:q}).map(s=>b(s)?{...s,children:me(s.children,a,o)}:s),G=e.computed(()=>{const t=p.value.trim(),a=t?de(n.items,t):n.items;return!n.sortable||!L.value?a:me(a,L.value,$.value)}),nt=t=>{if(n.disableBranchNodes&&b(t)){const s=h(t);ue(s);return}if(Y(t))return;const a=h(t);let o=new Set(E.value);if(n.multiple){const s=o.has(a);if(n.selectAll&&b(t)){const i=v(t);s?(o.delete(a),u("deselect",t),n.deselectAll&&i.forEach(d=>o.delete(d))):(o.add(a),i.forEach(d=>o.add(d)),u("select",t))}else s?(o.delete(a),n.selectAll&&_(a)?.forEach(d=>o.delete(d))):o.add(a)}else{const s=n.modelValue,i=h(t);s===i?(o.clear(),u("deselect",t)):(o.clear(),o.add(i),s!=null&&F(s),u("select",t)),n.closeOnSelect&&M(),e.nextTick(()=>{C.value?.focus()})}let r=Array.from(o);n.multiple&&n.excludeFromSelectedListKey&&(r=r.filter(s=>{const i=F(s);return!i||!i[n.excludeFromSelectedListKey]})),u("update:modelValue",n.multiple?r:r[0]||null),u("change",n.multiple?r:r[0]||null)},te=t=>{if(n.disabled||!t)return;const a=h(t),o=new Set(E.value);o.delete(a),n.selectAll&&(n.deselectAll&&b(t)&&v(t).forEach(d=>o.delete(d)),_(a)?.forEach(i=>o.delete(i)));const r=Array.from(o);u("update:modelValue",r),u("change",r)},ue=t=>{N.value.has(t)?N.value.delete(t):N.value.add(t)},ot=()=>{$.value=$.value==="asc"?"desc":"asc"},at=()=>{const t=n.multiple?[]:null;u("clear"),u("update:modelValue",t),u("change",t),R()},fe=()=>{!n.allowAddNew||!p.value.trim()||(u("add-new",p.value.trim()),M())},rt=()=>{n.allowAddNew&&n.addNewMode==="enter"&&p.value.trim()&&G.value.length===0&&fe()},st=t=>{u("focus",t)},it=async()=>{n.disabled||(R(),x.value=!0,J(),await e.nextTick(),k.value&&C.value&&(m.value=Q.createPopper(C.value,k.value,{placement:"bottom-start",strategy:"fixed",modifiers:[{name:"offset",options:{offset:[0,4]}},{name:"preventOverflow",options:{padding:8}},{name:"flip",options:{fallbackPlacements:["top-start"]}},{name:"sameWidth",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:({state:t})=>{t.styles.popper.width=`${t.rects.reference.width}px`},effect:({state:t})=>{t.elements.popper.style.width=`${t.elements.reference.offsetWidth}px`}}]})),n.searchable&&(await e.nextTick(),k.value?.querySelector(".tree-search-input")?.focus()))},M=()=>{x.value=!1,p.value="",m.value?.destroy(),m.value=null,u("blur",n.modelValue)},le=()=>x.value?M():it(),ct=async()=>{M(),J(),D.value=!0,await e.nextTick(),H.value&&z.value&&(Z.value=Q.createPopper(z.value,H.value,{placement:"bottom-end",strategy:"fixed",modifiers:[{name:"offset",options:{offset:[0,4]}}]}))},R=()=>{D.value=!1,Z.value?.destroy(),Z.value=null},pe=()=>D.value?R():ct(),he=t=>{x.value&&!C.value?.contains(t.target)&&!k.value?.contains(t.target)&&M(),D.value&&!z.value?.contains(t.target)&&!H.value?.contains(t.target)&&R(),g.value&&!w.value?.$el?.contains(t.target)&&!f.value?.contains(t.target)&&J()},dt=t=>{c.value?.contains(t.relatedTarget)||M()},mt=async()=>{!T.value||g.value||(M(),R(),g.value=!0,await e.nextTick(),f.value&&w.value&&(S.value=Q.createPopper(w.value.$el,f.value,{placement:"top",strategy:"fixed",modifiers:[{name:"offset",options:{offset:[0,8]}}]})))},ut=()=>{g.value?J():mt()},J=()=>{g.value=!1,S.value?.destroy(),S.value=null};return e.watch(p,t=>{if(t.trim()){const a=o=>{o.forEach(r=>{b(r)&&(N.value.add(h(r)),a(r.children))})};a(G.value)}}),e.watch(ee,()=>{se()}),e.onMounted(()=>{document.addEventListener("click",he),se()}),e.onUnmounted(()=>{document.removeEventListener("click",he),m.value?.destroy(),Z.value?.destroy(),S.value?.destroy()}),(t,a)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"wrapperRef",ref:c,class:"tree-select-wrapper",onFocusin:st,onFocusout:dt},[e.createElementVNode("div",{ref_key:"triggerRef",ref:C,role:"button",tabindex:"0",class:e.normalizeClass(["btn tree-select-trigger w-100 d-flex justify-content-between align-items-center tree-select-main",[oe.value,{"btn-outline-secondary":!l.isInvalid,"border-danger":l.isInvalid,disabled:l.disabled||l.isLoading,"is-loading":l.isLoading,"has-chips":l.multiple&&l.displayMode==="chips"&&E.value.length>0}]]),onClick:le,onKeydown:[e.withKeys(e.withModifiers(le,["prevent"]),["enter"]),e.withKeys(e.withModifiers(le,["prevent"]),["space"])]},[e.createElementVNode("div",Ae,[e.renderSlot(t.$slots,"display",{selectedItems:W.value,displayText:ee.value,placeholder:l.placeholder,isLoading:l.isLoading,removeItem:te,getItemLabel:A,getItemValue:h,visibleChips:ce.value,hiddenChipsCount:U.value,toggleMorePopover:pe,moreTriggerRef:z.value},()=>[!l.multiple||l.displayMode==="text"?(e.openBlock(),e.createElementBlock("div",Te,[e.createElementVNode("span",{ref_key:"textDisplaySpanRef",ref:j,class:"text-truncate",title:T.value?re.value:""},e.toDisplayString(l.isLoading?"Loading data...":ee.value),9,$e),T.value&&!l.isLoading?(e.openBlock(),e.createBlock(B,{key:0,ref_key:"tooltipTriggerIconRef",ref:w,name:"info-circle",class:"tooltip-trigger-icon ms-2 flex-shrink-0",onClick:e.withModifiers(ut,["stop"])},null,512)):e.createCommentVNode("",!0)])):l.multiple&&l.displayMode==="chips"?(e.openBlock(),e.createElementBlock("div",ze,[E.value.length===0?(e.openBlock(),e.createElementBlock("span",De,e.toDisplayString(l.placeholder),1)):(e.openBlock(),e.createElementBlock("div",Ke,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ce.value,o=>(e.openBlock(),e.createElementBlock("span",{key:h(o),class:"badge text-bg-primary chip bg-primary"},[e.createTextVNode(e.toDisplayString(A(o))+" ",1),e.createVNode(B,{name:"times",class:"chip-remove",onClick:e.withModifiers(r=>te(o),["stop"])},null,8,["onClick"])]))),128)),U.value>0?(e.openBlock(),e.createElementBlock("button",{key:0,ref_key:"moreTriggerRef",ref:z,type:"button",class:"btn btn-sm btn-light more-button",onClick:e.withModifiers(pe,["stop"])}," +"+e.toDisplayString(U.value),513)):e.createCommentVNode("",!0)]))])):e.createCommentVNode("",!0)],!0)]),e.createElementVNode("div",Pe,[l.isLoading?(e.openBlock(),e.createBlock(B,{key:0,name:"spinner",class:"loading-icon"})):e.createCommentVNode("",!0),l.showClearButton&&E.value.length>0&&!l.disabled&&!l.isLoading?(e.openBlock(),e.createBlock(B,{key:1,name:"times",onClick:e.withModifiers(at,["stop"]),class:"clear-icon"})):e.createCommentVNode("",!0),l.isLoading?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(B,{key:2,name:"chevron-down",class:e.normalizeClass(["transition-transform",{"rotate-180":x.value}])},null,8,["class"]))])],42,Ie),D.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"morePopoverRef",ref:H,class:"card shadow-lg border-0 more-popover",style:{"z-index":"1060"}},[e.createElementVNode("div",Fe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(lt.value,o=>(e.openBlock(),e.createElementBlock("div",{key:h(o),class:"list-group-item d-flex justify-content-between align-items-center py-1 px-2"},[e.createElementVNode("small",Oe,e.toDisplayString(A(o)),1),l.disabled?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(B,{key:0,name:"times",class:"chip-remove flex-shrink-0",onClick:e.withModifiers(r=>te(o),["stop"])},null,8,["onClick"]))]))),128))])],512)):e.createCommentVNode("",!0),x.value?(e.openBlock(),e.createElementBlock("div",{key:1,ref_key:"dropdownRef",ref:k,class:"tree-select-dropdown card shadow-lg border-0",onMousedown:a[2]||(a[2]=e.withModifiers(()=>{},["prevent"])),onClick:a[3]||(a[3]=e.withModifiers(()=>{},["stop"])),style:{"z-index":"1050"}},[e.createElementVNode("div",Re,[l.searchable?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,"onUpdate:modelValue":a[0]||(a[0]=o=>p.value=o),type:"text",class:e.normalizeClass(["form-control tree-search-input",ae.value]),placeholder:"Search...",onKeydown:e.withKeys(e.withModifiers(rt,["prevent"]),["enter"])},null,42,qe)),[[e.vModelText,p.value]]):e.createCommentVNode("",!0),l.sortable&&l.sortOptions.length>0?(e.openBlock(),e.createElementBlock("div",je,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":a[1]||(a[1]=o=>L.value=o),class:e.normalizeClass(["form-select flex-grow-1",ae.value])},[a[4]||(a[4]=e.createElementVNode("option",{value:null,disabled:""},"Sort by...",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.sortOptions,o=>(e.openBlock(),e.createElementBlock("option",{key:o.value,value:o.value},e.toDisplayString(o.label),9,He))),128))],2),[[e.vModelSelect,L.value]]),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["btn btn-outline-secondary",oe.value]),disabled:!L.value,onClick:ot},[e.createVNode(B,{name:$.value==="asc"?"asc":"desc"},null,8,["name"])],10,Ze)])):e.createCommentVNode("",!0)]),l.isLoading?(e.openBlock(),e.createElementBlock("div",We,[e.createVNode(B,{name:"spinner",class:"me-2"}),a[5]||(a[5]=e.createElementVNode("span",null,"Loading...",-1))])):(e.openBlock(),e.createElementBlock("div",Ue,[G.value.length>0?(e.openBlock(),e.createElementBlock("div",Ge,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(G.value,o=>(e.openBlock(),e.createBlock(Me,{key:h(o),item:o,level:0,"selected-items":E.value,"expanded-items":N.value,multiple:l.multiple,"select-all":l.selectAll,"select-mode":l.selectMode,"option-label":l.optionLabel,"option-value":l.optionValue,"disabled-key":l.disabledKey,"disable-branch-node":l.disableBranchNodes,onSelect:nt,onToggleExpand:ue},{default:e.withCtx(({item:r,level:s})=>[e.renderSlot(t.$slots,"default",{item:r,level:s},()=>[e.createElementVNode("div",Je,[e.createTextVNode(e.toDisplayString(A(r))+" ",1),r.icon?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass(r.icon)},null,2)):e.createCommentVNode("",!0)])],!0)]),_:2},1032,["item","selected-items","expanded-items","multiple","select-all","select-mode","option-label","option-value","disabled-key","disable-branch-node"]))),128))])):(e.openBlock(),e.createElementBlock("div",Qe,[l.allowAddNew?(e.openBlock(),e.createElementBlock("div",Xe,[l.addNewMode==="button"?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"btn btn-success btn-sm w-100",onClick:fe},[e.createTextVNode(' No items found "Click" to '+e.toDisplayString(l.addNewLabel)+" ",1),p.value.trim()?(e.openBlock(),e.createElementBlock("span",Ye,' : "'+e.toDisplayString(p.value)+'" ',1)):e.createCommentVNode("",!0)])):l.addNewMode==="enter"?(e.openBlock(),e.createElementBlock("span",ve,[e.createTextVNode(' No items found "Press Enter" to '+e.toDisplayString(l.addNewLabel)+" ",1),p.value.trim()?(e.openBlock(),e.createElementBlock("span",_e,' : "'+e.toDisplayString(p.value)+'" ',1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",et,[e.createVNode(B,{name:"search",class:"me-1"}),a[6]||(a[6]=e.createTextVNode(" No items found ",-1))]))]))]))],544)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("div",{ref_key:"tooltipRef",ref:f,class:"tree-select-tooltip card shadow-sm py-1 px-2",role:"tooltip",style:{"z-index":"1070"}},e.toDisplayString(re.value),513),[[e.vShow,g.value]])],544))}},[["__scopeId","data-v-5eac2267"]]),tt={install(l){l.component("VSelect",ne)}};V.VSelect=ne,V.default=tt,Object.defineProperties(V,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@night-owl-elite/vue-select",
3
3
  "private": false,
4
- "version": "1.3.33",
4
+ "version": "1.3.35",
5
5
  "type": "module",
6
6
  "main": "./dist/vue-select.umd.js",
7
7
  "module": "./dist/vue-select.es.js",