@night-owl-elite/vue-select 1.3.34 → 1.3.36

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,114 @@
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
+
40
+ | Prop | Type | Default | Description |
41
+ | :--- | :--- | :--- | :--- |
42
+ | **`modelValue`** | `[String, Number, Array]` | `null` | The selected value(s). Use `v-model`. |
43
+ | **`items`** | `Array` | `[]` | The array of tree nodes to display. |
44
+ | **`multiple`** | `Boolean` | `false` | Allow multiple items to be selected. |
45
+ | **`displayMode`** | `String` | `'text'` | How to display the selection: `'text'` or `'chips'`. |
46
+ | **`selectMode`** | `String` | `'checkbox'` | UI style for selection: `'checkbox'` or `'highlight'`. |
47
+ | **`optionLabel`** | `String` | `'value'` | The key in your item object to use for the display label. |
48
+ | **`optionValue`** | `String` | `'code'` | The key in your item object to use for the unique value. |
49
+ | **`keyFilters`** | `Array` | `[]` | Array of keys to search against. E.g., `['name', 'details.email']`. Defaults to `optionLabel` if empty. |
50
+ | **`placeholder`** | `String` | `'Select item...'` | Placeholder text when no item is selected. |
51
+ | **`isInvalid`** | `Boolean` | `false` | Applies a visual "invalid" state (e.g., red border). |
52
+ | **`disabled`** | `Boolean` | `false` | Disables the entire component. |
53
+ | **`searchable`** | `Boolean` | `true` | Shows a search input in the dropdown. |
54
+ | **`isLoading`** | `Boolean` | `false` | Shows a loading state and disables the component. |
55
+ | **`showClearButton`** | `Boolean` | `true` | Shows a global "clear" (X) icon. |
56
+ | **`selectAll`** | `Boolean` | `false` | When true, selecting a parent node also selects all its children. |
57
+ | **`deselectAll`** | `Boolean` | `true` | When true, deselecting a parent node also deselects all its children. |
58
+ | **`canDeselect`** | `Boolean` | `true` | (Single select) Allows deselecting the active item. |
59
+ | **`disabledKey`** | `String` | `null` | The key in your item object to check if an item is disabled. |
60
+ | **`excludeFromSelectedListKey`** | `String` | `null` | Key to check if an item should be excluded from `modelValue` (e.g., for non-selectable parent groups). |
61
+ | **`disableBranchNodes`** | `Boolean` | `false` | Prevents selection of items that have children (branch nodes). |
62
+ | **`size`** | `String` | `'sm'` | Component size: `'sm'`, `'md'`, `'lg'`, or `'xl'`. |
63
+ | **`sortable`** | `Boolean` | `false` | Enables sorting controls in the dropdown. |
64
+ | **`sortOptions`** | `Array` | `[]` | Array of sort options. E.g., `[{ value: 'name', label: 'Name' }]`. |
65
+ | **`defaultSortKey`** | `String` | `null` | The default key (from `sortOptions`) to sort by. |
66
+ | **`defaultSortDirection`** | `String` | `'asc'` | Default sort direction: `'asc'` or `'desc'`. |
67
+ | **`maxVisibleChipsDisplay`** | `Number` | `3` | Max number of chips to show before grouping them into a `+N` badge. |
68
+ | **`closeOnSelect`** | `Boolean` | `true` | (Single select) Closes the dropdown after selecting an item. |
69
+ | **`allowAddNew`** | `Boolean` | `false` | Allows adding a new item based on the search query. |
70
+ | **`addNewMode`** | `String` | `'button'` | How to trigger "add new": on `'button'` click or `'enter'` press. |
71
+ | **`addNewLabel`** | `String` | `'Add new record'` | Text used in the "add new" button/prompt. |
72
+
73
+ ## Events
74
+
75
+ | Event | Payload | Description |
76
+ | :--- | :--- | :--- |
77
+ | **`update:modelValue`** | `(value)` | Fired on selection change. Used by `v-model`. |
78
+ | **`change`** | `(value)` | Fired on selection change, along with `update:modelValue`. |
79
+ | **`select`** | `(item)` | Fired when an item is selected. |
80
+ | **`deselect`** | `(item)` | Fired when an item is deselected. |
81
+ | **`clear`** | `()` | Fired when the global "clear" button is clicked. |
82
+ | **`focus`** | `(event)` | Fired when the component gains focus. |
83
+ | **`blur`** | `(value)` | Fired when the component loses focus. |
84
+ | **`add-new`** | `(searchTerm)` | Fired when the user triggers the "add new" action. |
85
+
86
+ ## Slots
87
+ ### 1. `#default` Slot
88
+
89
+ Controls the rendering of **each item** in the dropdown list.
90
+
91
+ | Slot Prop | Type | Description |
92
+ | :--- | :--- | :--- |
93
+ | **`item`** | `Object` | The full item object for the current row. |
94
+ | **`level`** | `Number` | The indentation level (0 for root items, 1 for children, etc.). |
95
+
96
+ ### 2. `#display` Slot
97
+
98
+ Controls the rendering of the **entire trigger button area** (overrides default text, chips, and placeholder).
99
+
100
+ | Slot Prop | Type | Description |
101
+ | :--- | :--- | :--- |
102
+ | **`selectedItems`** | `Array` | Array of the full selected item objects. |
103
+ | **`displayText`** | `String` | The default text that would have been displayed. |
104
+ | **`placeholder`** | `String` | The `placeholder` prop. |
105
+ | **`isLoading`** | `Boolean` | The `isLoading` prop. |
106
+ | **`removeItem`** | `Function` | A function to remove a selected item (pass the item object). |
107
+ | **`getItemLabel`** | `Function` | A helper function to get an item's label. |
108
+ | **`getItemValue`** | `Function` | A helper function to get an item's value. |
109
+ | **`visibleChips`** | `Array` | Array of item objects to be shown as visible chips. |
110
+ | **`hiddenChipsCount`** | `Number` | Number of chips that are hidden. |
111
+ | **`toggleMorePopover`** | `Function` | A function to toggle the "more items" popover. |
112
+ | **`moreTriggerRef`** | `Ref` | A ref to attach to your custom "more" button for positioning. |
113
+
114
+ ---
@@ -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-9c230074]{--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-9c230074]{flex:1;overflow:hidden}.transition-transform[data-v-9c230074]{transition:transform .2s ease-in-out}.rotate-180[data-v-9c230074]{transform:rotate(180deg)}.tree-select-dropdown[data-v-9c230074]{position:absolute;background:#fff;border:1px solid rgba(0,0,0,.15);border-radius:.375rem}.is-loading[data-v-9c230074]{cursor:wait}.loading-icon[data-v-9c230074]{animation:spin-9c230074 1s linear infinite}.clear-icon[data-v-9c230074]{cursor:pointer;opacity:.6;transition:opacity .2s ease}.clear-icon[data-v-9c230074]:hover{opacity:1}.tooltip-trigger-icon[data-v-9c230074]{cursor:pointer;opacity:.6;transition:opacity .2s ease;width:1em;height:1em}.tooltip-trigger-icon[data-v-9c230074]:hover{opacity:1}@keyframes spin-9c230074{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.btn-xl[data-v-9c230074]{padding:.75rem 1.5rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-xl[data-v-9c230074]{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-9c230074]::-webkit-scrollbar{width:6px}.tree-select-body[data-v-9c230074]::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.tree-select-body[data-v-9c230074]::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.tree-select-body[data-v-9c230074]::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.tree-select-main.disabled .more-button[data-v-9c230074]{pointer-events:auto;cursor:pointer}.tree-select-main.has-chips[data-v-9c230074]{height:auto;min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.tree-select-main.has-chips.btn-lg[data-v-9c230074]{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.tree-select-main.has-chips.btn-xl[data-v-9c230074]{min-height:calc(1.5em + 1.5rem + calc(var(--bs-border-width) * 2))}.chips-container[data-v-9c230074]{display:flex;flex-wrap:wrap;gap:.25rem;max-height:8rem;overflow-y:auto}.chip[data-v-9c230074]{display:inline-flex;align-items:center;padding:.2em .6em}.chip-remove[data-v-9c230074]{width:.8em;height:.8em;margin-left:.4em;cursor:pointer;opacity:.7;transition:opacity .2s}.chip-remove[data-v-9c230074]:hover{opacity:1}.more-button[data-v-9c230074]{font-size:.75em;line-height:1;padding:.3em .5em}.more-popover[data-v-9c230074]{width:250px;max-width:80vw;max-height:200px;overflow-y:auto;font-size:.9rem}.tree-select-tooltip[data-v-9c230074]{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-9c230074]{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}}
@@ -799,7 +799,7 @@ const ge = (t, P) => {
799
799
  ])
800
800
  ], 544));
801
801
  }
802
- }, Ot = /* @__PURE__ */ ge(Pt, [["__scopeId", "data-v-9c230074"]]), qt = {
802
+ }, Ot = /* @__PURE__ */ ge(Pt, [["__scopeId", "data-v-5eac2267"]]), qt = {
803
803
  install(t) {
804
804
  t.component("VSelect", Ot);
805
805
  }
@@ -1 +1 @@
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-9c230074"]]),tt={install(l){l.component("VSelect",ne)}};V.VSelect=ne,V.default=tt,Object.defineProperties(V,{__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.34",
4
+ "version": "1.3.36",
5
5
  "type": "module",
6
6
  "main": "./dist/vue-select.umd.js",
7
7
  "module": "./dist/vue-select.es.js",