@aotearoan/neon 19.0.2 → 21.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/enums/NeonButtonStyle.cjs.js +1 -1
- package/dist/common/enums/NeonButtonStyle.cjs.js.map +1 -1
- package/dist/common/enums/NeonButtonStyle.es.js +1 -1
- package/dist/common/enums/NeonButtonStyle.es.js.map +1 -1
- package/dist/common/enums/NeonDropdownStyle.cjs.js +1 -1
- package/dist/common/enums/NeonDropdownStyle.cjs.js.map +1 -1
- package/dist/common/enums/NeonDropdownStyle.es.js +2 -2
- package/dist/common/enums/NeonDropdownStyle.es.js.map +1 -1
- package/dist/common/enums/NeonMode.cjs.js +1 -1
- package/dist/common/enums/NeonMode.cjs.js.map +1 -1
- package/dist/common/enums/NeonMode.es.js +1 -1
- package/dist/common/enums/NeonMode.es.js.map +1 -1
- package/dist/common/icons/light-mode-sunny.svg.cjs.js +26 -0
- package/dist/common/icons/light-mode-sunny.svg.cjs.js.map +1 -0
- package/dist/common/icons/light-mode-sunny.svg.es.js +29 -0
- package/dist/common/icons/light-mode-sunny.svg.es.js.map +1 -0
- package/dist/common/utils/NeonModeUtils.cjs.js +1 -1
- package/dist/common/utils/NeonModeUtils.cjs.js.map +1 -1
- package/dist/common/utils/NeonModeUtils.es.js +38 -43
- package/dist/common/utils/NeonModeUtils.es.js.map +1 -1
- package/dist/common/utils/RegisterIcons.cjs.js +1 -1
- package/dist/common/utils/RegisterIcons.cjs.js.map +1 -1
- package/dist/common/utils/RegisterIcons.es.js +23 -22
- package/dist/common/utils/RegisterIcons.es.js.map +1 -1
- package/dist/components/feedback/dialog/NeonDialog.vue.cjs.js +1 -1
- package/dist/components/feedback/dialog/NeonDialog.vue.cjs.js.map +1 -1
- package/dist/components/feedback/dialog/NeonDialog.vue.es.js +6 -5
- package/dist/components/feedback/dialog/NeonDialog.vue.es.js.map +1 -1
- package/dist/components/feedback/note/NeonNote.vue.cjs.js +1 -1
- package/dist/components/feedback/note/NeonNote.vue.cjs.js.map +1 -1
- package/dist/components/feedback/note/NeonNote.vue.es.js +1 -0
- package/dist/components/feedback/note/NeonNote.vue.es.js.map +1 -1
- package/dist/components/navigation/mobile-menu/NeonMobileMenu.cjs.js +2 -0
- package/dist/components/navigation/mobile-menu/NeonMobileMenu.cjs.js.map +1 -0
- package/dist/components/navigation/mobile-menu/NeonMobileMenu.es.js +44 -0
- package/dist/components/navigation/mobile-menu/NeonMobileMenu.es.js.map +1 -0
- package/dist/components/navigation/mobile-menu/NeonMobileMenu.vue.cjs.js +2 -0
- package/dist/components/navigation/mobile-menu/NeonMobileMenu.vue.cjs.js.map +1 -0
- package/dist/components/navigation/mobile-menu/NeonMobileMenu.vue.es.js +57 -0
- package/dist/components/navigation/mobile-menu/NeonMobileMenu.vue.es.js.map +1 -0
- package/dist/components/presentation/dropdown/NeonDropdown.cjs.js +1 -1
- package/dist/components/presentation/dropdown/NeonDropdown.cjs.js.map +1 -1
- package/dist/components/presentation/dropdown/NeonDropdown.es.js +44 -40
- package/dist/components/presentation/dropdown/NeonDropdown.es.js.map +1 -1
- package/dist/components/presentation/dropdown/NeonDropdown.vue.cjs.js +1 -1
- package/dist/components/presentation/dropdown/NeonDropdown.vue.cjs.js.map +1 -1
- package/dist/components/presentation/dropdown/NeonDropdown.vue.es.js +9 -9
- package/dist/components/presentation/dropdown/NeonDropdown.vue.es.js.map +1 -1
- package/dist/components/presentation/icon/NeonIcon.cjs.js.map +1 -1
- package/dist/components/presentation/icon/NeonIcon.es.js.map +1 -1
- package/dist/components/presentation/tabs/NeonTabs.cjs.js +1 -1
- package/dist/components/presentation/tabs/NeonTabs.cjs.js.map +1 -1
- package/dist/components/presentation/tabs/NeonTabs.es.js +13 -19
- package/dist/components/presentation/tabs/NeonTabs.es.js.map +1 -1
- package/dist/components/presentation/tabs/NeonTabs.vue.cjs.js +1 -1
- package/dist/components/presentation/tabs/NeonTabs.vue.cjs.js.map +1 -1
- package/dist/components/presentation/tabs/NeonTabs.vue.es.js +6 -6
- package/dist/components/presentation/tabs/NeonTabs.vue.es.js.map +1 -1
- package/dist/components/user-input/button/NeonButton.vue.cjs.js +1 -1
- package/dist/components/user-input/button/NeonButton.vue.cjs.js.map +1 -1
- package/dist/components/user-input/button/NeonButton.vue.es.js +12 -12
- package/dist/components/user-input/button/NeonButton.vue.es.js.map +1 -1
- package/dist/components/user-input/field/NeonField.vue.cjs.js +1 -1
- package/dist/components/user-input/field/NeonField.vue.cjs.js.map +1 -1
- package/dist/components/user-input/field/NeonField.vue.es.js +1 -1
- package/dist/components/user-input/field/NeonField.vue.es.js.map +1 -1
- package/dist/components/user-input/file/NeonFile.vue.cjs.js +1 -1
- package/dist/components/user-input/file/NeonFile.vue.cjs.js.map +1 -1
- package/dist/components/user-input/file/NeonFile.vue.es.js +1 -0
- package/dist/components/user-input/file/NeonFile.vue.es.js.map +1 -1
- package/dist/components/user-input/input/NeonInput.cjs.js +1 -1
- package/dist/components/user-input/input/NeonInput.cjs.js.map +1 -1
- package/dist/components/user-input/input/NeonInput.es.js +17 -17
- package/dist/components/user-input/input/NeonInput.es.js.map +1 -1
- package/dist/components/user-input/select/NeonSelect.cjs.js +1 -1
- package/dist/components/user-input/select/NeonSelect.cjs.js.map +1 -1
- package/dist/components/user-input/select/NeonSelect.es.js +75 -69
- package/dist/components/user-input/select/NeonSelect.es.js.map +1 -1
- package/dist/components/user-input/select/NeonSelect.vue.cjs.js +1 -1
- package/dist/components/user-input/select/NeonSelect.vue.cjs.js.map +1 -1
- package/dist/components/user-input/select/NeonSelect.vue.es.js +29 -21
- package/dist/components/user-input/select/NeonSelect.vue.es.js.map +1 -1
- package/dist/neon.cjs.js +1 -1
- package/dist/neon.es.js +96 -96
- package/dist/src/common/enums/NeonButtonStyle.d.ts +6 -1
- package/dist/src/common/enums/NeonDropdownStyle.d.ts +5 -2
- package/dist/src/common/enums/NeonMode.d.ts +3 -1
- package/dist/src/common/models/NeonMenuItem.d.ts +2 -2
- package/dist/src/common/utils/NeonModeUtils.d.ts +17 -21
- package/dist/src/components/feedback/linear-progress/NeonLinearProgress.d.ts +2 -6
- package/dist/src/components/navigation/dropdown-menu/NeonDropdownMenu.d.ts +5 -0
- package/dist/src/components/navigation/menu/NeonMenu.d.ts +9 -4
- package/dist/src/components/navigation/mobile-menu/NeonMobileMenu.d.ts +2630 -0
- package/dist/src/components/navigation/mobile-menu/NeonMobileMenu.vue.d.ts +2 -0
- package/dist/src/components/presentation/dropdown/NeonDropdown.d.ts +16 -16
- package/dist/src/components/presentation/icon/NeonIcon.d.ts +1 -1
- package/dist/src/components/presentation/tabs/NeonTabs.d.ts +2 -19
- package/dist/src/components/user-input/date-picker/NeonDatePicker.d.ts +21 -2
- package/dist/src/components/user-input/file/NeonFile.d.ts +8 -24
- package/dist/src/components/user-input/filter-list/NeonFilterList.d.ts +4 -12
- package/dist/src/components/user-input/input/NeonInput.d.ts +8 -2
- package/dist/src/components/user-input/search/NeonSearch.d.ts +77 -42
- package/dist/src/components/user-input/select/NeonSelect.d.ts +133 -203
- package/dist/src/neon.d.ts +1 -1
- package/package.json +1 -1
- package/src/sass/color-variables.scss +6 -4
- package/src/sass/components/_action-menu.scss +1 -1
- package/src/sass/components/_alert-container.scss +2 -2
- package/src/sass/components/_badge.scss +2 -2
- package/src/sass/components/_button.scss +25 -1
- package/src/sass/components/_card-list.scss +2 -2
- package/src/sass/components/_date-picker.scss +7 -7
- package/src/sass/components/_dropdown-menu.scss +2 -2
- package/src/sass/components/_expansion-panel.scss +2 -2
- package/src/sass/components/_filter-list.scss +6 -6
- package/src/sass/components/_icon.scss +1 -1
- package/src/sass/components/_image-carousel.scss +2 -1
- package/src/sass/components/_input.scss +11 -11
- package/src/sass/components/_label.scss +1 -1
- package/src/sass/components/_linear-progress.scss +1 -1
- package/src/sass/components/_list.scss +2 -2
- package/src/sass/components/_menu.scss +1 -1
- package/src/sass/components/_mobile-menu.scss +110 -0
- package/src/sass/components/_note.scss +1 -1
- package/src/sass/components/_notification-counter.scss +2 -2
- package/src/sass/components/_number.scss +2 -2
- package/src/sass/components/_range-slider.scss +1 -1
- package/src/sass/components/_search.scss +2 -2
- package/src/sass/components/_select.scss +16 -2
- package/src/sass/components/_slider.scss +1 -1
- package/src/sass/components/_stepper.scss +3 -3
- package/src/sass/components/_switch.scss +1 -1
- package/src/sass/components/_tabs.scss +46 -81
- package/src/sass/components/_toggle.scss +3 -3
- package/src/sass/components/_tooltip.scss +7 -7
- package/src/sass/components/_tree-menu.scss +6 -6
- package/src/sass/components/components.scss +1 -0
- package/src/sass/global/_base-html.scss +23 -15
- package/src/sass/global/_table.scss +4 -4
- package/src/sass/global/_typography.scss +2 -1
- package/src/sass/includes/_dependencies.scss +1 -0
- package/src/sass/includes/_outline.scss +1 -1
- package/src/sass/includes/_typography.scss +1 -1
- package/src/sass/palette.scss +6 -9
- package/src/sass/theme.scss +4 -0
- package/src/sass/variables.scss +63 -55
- package/dist/common/enums/NeonTabsStyle.cjs.js +0 -2
- package/dist/common/enums/NeonTabsStyle.cjs.js.map +0 -1
- package/dist/common/enums/NeonTabsStyle.es.js +0 -5
- package/dist/common/enums/NeonTabsStyle.es.js.map +0 -1
- package/dist/src/common/enums/NeonTabsStyle.d.ts +0 -9
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import { defineComponent as B, useAttrs as
|
|
2
|
-
import { NeonSize as
|
|
3
|
-
import { NeonFunctionalColor as
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import { NeonDropdownPlacement as
|
|
8
|
-
import { NeonScrollUtils as
|
|
9
|
-
|
|
1
|
+
import { defineComponent as B, useAttrs as D, ref as d, computed as u, onMounted as L, onUnmounted as K, watch as z } from "vue";
|
|
2
|
+
import { NeonSize as C } from "../../../common/enums/NeonSize.es.js";
|
|
3
|
+
import { NeonFunctionalColor as E } from "../../../common/enums/NeonFunctionalColor.es.js";
|
|
4
|
+
import T from "../../presentation/dropdown/NeonDropdown.vue.es.js";
|
|
5
|
+
import U from "../../presentation/icon/NeonIcon.vue.es.js";
|
|
6
|
+
import _ from "../switch/NeonSwitch.vue.es.js";
|
|
7
|
+
import { NeonDropdownPlacement as c } from "../../../common/enums/NeonDropdownPlacement.es.js";
|
|
8
|
+
import { NeonScrollUtils as M } from "../../../common/utils/NeonScrollUtils.es.js";
|
|
9
|
+
import { NeonDropdownStyle as R } from "../../../common/enums/NeonDropdownStyle.es.js";
|
|
10
|
+
const Z = B({
|
|
10
11
|
name: "NeonSelect",
|
|
11
12
|
components: {
|
|
12
|
-
NeonDropdown:
|
|
13
|
-
NeonIcon:
|
|
14
|
-
NeonSwitch:
|
|
13
|
+
NeonDropdown: T,
|
|
14
|
+
NeonIcon: U,
|
|
15
|
+
NeonSwitch: _
|
|
15
16
|
},
|
|
16
17
|
props: {
|
|
17
18
|
/**
|
|
@@ -58,15 +59,19 @@ const W = B({
|
|
|
58
59
|
/**
|
|
59
60
|
* The size of the dropdown - Small, Medium or Large.
|
|
60
61
|
*/
|
|
61
|
-
size: { type: String, default:
|
|
62
|
+
size: { type: String, default: C.Medium },
|
|
62
63
|
/**
|
|
63
64
|
* The color of the select.
|
|
64
65
|
*/
|
|
65
|
-
color: { type: String, default:
|
|
66
|
+
color: { type: String, default: E.Primary },
|
|
67
|
+
/**
|
|
68
|
+
* The button style of the select.
|
|
69
|
+
*/
|
|
70
|
+
buttonStyle: { type: String, default: R.Input },
|
|
66
71
|
/**
|
|
67
72
|
* Placement of the dropdown contents.
|
|
68
73
|
*/
|
|
69
|
-
placement: { type: String, default:
|
|
74
|
+
placement: { type: String, default: c.BottomLeft }
|
|
70
75
|
},
|
|
71
76
|
emits: [
|
|
72
77
|
/**
|
|
@@ -76,44 +81,44 @@ const W = B({
|
|
|
76
81
|
*/
|
|
77
82
|
"update:modelValue"
|
|
78
83
|
],
|
|
79
|
-
setup(
|
|
80
|
-
const w =
|
|
84
|
+
setup(t, { emit: k }) {
|
|
85
|
+
const w = D(), p = d(null), r = d(!1), g = d(t.placement), s = d(null), a = d(-1), n = u(() => {
|
|
81
86
|
var e;
|
|
82
|
-
return
|
|
87
|
+
return t.options ? t.options : t.groupedOptions ? (e = t.groupedOptions) == null ? void 0 : e.flatMap((l) => l.options) : [];
|
|
83
88
|
}), S = () => {
|
|
84
|
-
if (!
|
|
89
|
+
if (!t.groupedOptions)
|
|
85
90
|
switch (g.value) {
|
|
86
|
-
case
|
|
87
|
-
case
|
|
88
|
-
case
|
|
89
|
-
case
|
|
91
|
+
case c.TopLeft:
|
|
92
|
+
case c.TopRight:
|
|
93
|
+
case c.LeftBottom:
|
|
94
|
+
case c.RightBottom:
|
|
90
95
|
return !0;
|
|
91
96
|
}
|
|
92
97
|
return !1;
|
|
93
98
|
}, V = () => {
|
|
94
|
-
var
|
|
95
|
-
const e = (o = (
|
|
99
|
+
var l, o;
|
|
100
|
+
const e = (o = (l = p.value) == null ? void 0 : l.dropdownContent) == null ? void 0 : o.querySelector(
|
|
96
101
|
".neon-select__option--highlighted"
|
|
97
102
|
);
|
|
98
|
-
e && (e.focus(),
|
|
99
|
-
},
|
|
103
|
+
e && (e.focus(), M.scrollIntoView(e));
|
|
104
|
+
}, m = (e, l) => {
|
|
100
105
|
const o = a.value + e;
|
|
101
|
-
o >= 0 && o <= n.value.length - 1 && (a.value = o, s.value = n.value[a.value].key,
|
|
102
|
-
},
|
|
106
|
+
o >= 0 && o <= n.value.length - 1 && (a.value = o, s.value = n.value[a.value].key, l == null || l.preventDefault(), setTimeout(V));
|
|
107
|
+
}, f = (e) => {
|
|
103
108
|
k("update:modelValue", e);
|
|
104
109
|
}, h = (e) => {
|
|
105
|
-
if (
|
|
106
|
-
const
|
|
107
|
-
o >= 0 ?
|
|
108
|
-
} else
|
|
110
|
+
if (t.multiple) {
|
|
111
|
+
const l = [...t.modelValue], o = l.findIndex((y) => y === e.key);
|
|
112
|
+
o >= 0 ? l.splice(o, 1) : l.push(e.key), f(l);
|
|
113
|
+
} else t.modelValue !== e.key && (r.value = !1, f(e.key));
|
|
109
114
|
}, v = (e) => {
|
|
110
|
-
if (
|
|
115
|
+
if (r.value)
|
|
111
116
|
switch (e.code) {
|
|
112
117
|
case "ArrowUp":
|
|
113
118
|
case "ArrowDown":
|
|
114
119
|
{
|
|
115
|
-
const
|
|
116
|
-
e.code === "ArrowUp" ?
|
|
120
|
+
const l = S() ? -1 : 1;
|
|
121
|
+
e.code === "ArrowUp" ? m(-1 * l, e) : m(1 * l, e);
|
|
117
122
|
}
|
|
118
123
|
break;
|
|
119
124
|
case "Enter":
|
|
@@ -121,75 +126,76 @@ const W = B({
|
|
|
121
126
|
n.value[a.value].disabled || (h(n.value[a.value]), e.preventDefault());
|
|
122
127
|
break;
|
|
123
128
|
case "Tab":
|
|
124
|
-
!e.ctrlKey && !e.metaKey && !e.altKey && (
|
|
129
|
+
!e.ctrlKey && !e.metaKey && !e.altKey && (r.value = !1);
|
|
125
130
|
break;
|
|
126
131
|
}
|
|
127
|
-
},
|
|
132
|
+
}, b = u(() => t.groupedOptions || [
|
|
128
133
|
{
|
|
129
134
|
group: "",
|
|
130
|
-
options:
|
|
135
|
+
options: t.options || []
|
|
131
136
|
}
|
|
132
|
-
]),
|
|
137
|
+
]), I = u(() => {
|
|
133
138
|
const { ...e } = w;
|
|
134
139
|
return e;
|
|
135
|
-
}),
|
|
136
|
-
if (
|
|
137
|
-
if (
|
|
138
|
-
return
|
|
139
|
-
if (
|
|
140
|
-
return `${
|
|
140
|
+
}), O = u(() => {
|
|
141
|
+
if (t.multiple && t.modelValue.length > 0) {
|
|
142
|
+
if (t.multiselectPlaceholder)
|
|
143
|
+
return t.multiselectPlaceholder;
|
|
144
|
+
if (t.modelValue.length > 1)
|
|
145
|
+
return `${t.modelValue.length} items selected`;
|
|
141
146
|
{
|
|
142
|
-
const e = n.value.find((
|
|
147
|
+
const e = n.value.find((l) => l.key === t.modelValue[0]);
|
|
143
148
|
return (e == null ? void 0 : e.label) || "";
|
|
144
149
|
}
|
|
145
|
-
} else if (
|
|
146
|
-
const e = n.value.find((
|
|
150
|
+
} else if (t.modelValue) {
|
|
151
|
+
const e = n.value.find((l) => l.key === t.modelValue);
|
|
147
152
|
if (e)
|
|
148
153
|
return e.label;
|
|
149
154
|
}
|
|
150
|
-
return
|
|
151
|
-
}),
|
|
152
|
-
if (
|
|
153
|
-
const e = n.value.find((
|
|
155
|
+
return t.placeholder;
|
|
156
|
+
}), A = u(() => !t.modelValue || t.modelValue.length === 0), N = u(() => {
|
|
157
|
+
if (t.modelValue) {
|
|
158
|
+
const e = n.value.find((l) => l.key === t.modelValue);
|
|
154
159
|
if (e)
|
|
155
160
|
return e.icon;
|
|
156
161
|
}
|
|
157
|
-
return
|
|
158
|
-
}),
|
|
159
|
-
const
|
|
160
|
-
|
|
162
|
+
return t.placeholderIcon;
|
|
163
|
+
}), P = (e) => {
|
|
164
|
+
const l = Array.from(e.target.options).filter((i) => i.selected).map((i) => i.value), o = n.value.filter((i) => l.indexOf(i.key) >= 0), y = t.multiple ? o.map((i) => i.key) : o[0].key;
|
|
165
|
+
f(y);
|
|
161
166
|
}, q = (e) => {
|
|
162
|
-
s.value = e, a.value = n.value.findIndex((
|
|
167
|
+
s.value = e, a.value = n.value.findIndex((l) => l.key === e);
|
|
163
168
|
}, x = (e) => {
|
|
164
169
|
g.value = e;
|
|
165
170
|
};
|
|
166
171
|
return L(() => {
|
|
167
172
|
document.addEventListener("keydown", v);
|
|
168
|
-
}),
|
|
173
|
+
}), K(() => {
|
|
169
174
|
document.removeEventListener("keydown", v);
|
|
170
|
-
}),
|
|
171
|
-
() =>
|
|
175
|
+
}), z(
|
|
176
|
+
() => r.value,
|
|
172
177
|
(e) => {
|
|
173
|
-
e && (s.value = n.value[0].key, a.value = 0,
|
|
178
|
+
e && (s.value = n.value[0].key, a.value = 0, m(a.value));
|
|
174
179
|
}
|
|
175
180
|
), {
|
|
176
181
|
dropdown: p,
|
|
177
|
-
open:
|
|
182
|
+
open: r,
|
|
178
183
|
highlightedKey: s,
|
|
179
184
|
highlightedIndex: a,
|
|
180
185
|
flattenedOptions: n,
|
|
181
|
-
computedLabel:
|
|
182
|
-
sanitizedAttributes:
|
|
183
|
-
computedOptions:
|
|
184
|
-
computedIcon:
|
|
186
|
+
computedLabel: O,
|
|
187
|
+
sanitizedAttributes: I,
|
|
188
|
+
computedOptions: b,
|
|
189
|
+
computedIcon: N,
|
|
190
|
+
labelIsPlaceholder: A,
|
|
185
191
|
clickOption: h,
|
|
186
|
-
nativeSelectChange:
|
|
192
|
+
nativeSelectChange: P,
|
|
187
193
|
changeHighlighted: q,
|
|
188
194
|
onPlacement: x
|
|
189
195
|
};
|
|
190
196
|
}
|
|
191
197
|
});
|
|
192
198
|
export {
|
|
193
|
-
|
|
199
|
+
Z as default
|
|
194
200
|
};
|
|
195
201
|
//# sourceMappingURL=NeonSelect.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NeonSelect.es.js","sources":["../../../../src/components/user-input/select/NeonSelect.ts?vue&type=script&src=true&lang.ts"],"sourcesContent":["import { computed, defineComponent, onMounted, onUnmounted, ref, useAttrs, watch } from 'vue';\nimport { NeonSize } from '@/common/enums/NeonSize';\nimport type { NeonSelectGroup } from '@/common/models/NeonSelectGroup';\nimport type { NeonSelectOption } from '@/common/models/NeonSelectOption';\nimport { NeonFunctionalColor } from '@/common/enums/NeonFunctionalColor';\nimport NeonDropdown from '@/components/presentation/dropdown/NeonDropdown.vue';\nimport NeonIcon from '@/components/presentation/icon/NeonIcon.vue';\nimport NeonSwitch from '@/components/user-input/switch/NeonSwitch.vue';\nimport { NeonDropdownPlacement } from '@/common/enums/NeonDropdownPlacement';\nimport { NeonScrollUtils } from '@/common/utils/NeonScrollUtils';\n\n/**\n * <p>The <strong>NeonSelect</strong> is the equivalent of an HTML <select> form control. On touch devices\n * NeonSelect will use the native select for input. <strong>NeonSelect</strong> supports grouping and multiselect.</p>\n * <p><strong>Note:</strong> As well as the options described below, pass through attributes supported by\n * <a href=\"/presentation/dropdown\">NeonDropdown</a> to change the style of the dropdown button.</p>\n */\nexport default defineComponent({\n name: 'NeonSelect',\n components: {\n NeonDropdown,\n NeonIcon,\n NeonSwitch,\n },\n props: {\n /**\n * Id for the dropdown button\n */\n id: { type: String },\n /**\n * Placeholder to display as button label when there is no option selected.\n */\n placeholder: { type: String, required: true },\n /**\n * Display the placeholder as the first option in the select, this is useful as an alternative to a label.\n */\n placeholderAsOption: { type: Boolean, default: false },\n /**\n * Optional placeholder icon.\n */\n placeholderIcon: { type: String, required: false },\n /**\n * A list of options to render in the select.\n */\n options: { type: Array as () => Array<NeonSelectOption>, required: false },\n /**\n * A list of grouped options to render in the select.\n */\n groupedOptions: { type: Array as () => Array<NeonSelectGroup>, required: false },\n /**\n * Either a single string, indicating the key of the selected option or an array of selected keys in the case\n * multiple = true.\n */\n modelValue: { type: [String, Array as () => Array<string>], required: true },\n /**\n * Allow multi-select.\n */\n multiple: { type: Boolean, default: false },\n /**\n * Placeholder when multiple values are selected.\n */\n multiselectPlaceholder: { type: String, required: false },\n /**\n * Disable the select\n */\n disabled: { type: Boolean, default: false },\n /**\n * The size of the dropdown - Small, Medium or Large.\n */\n size: { type: String as () => NeonSize, default: NeonSize.Medium },\n /**\n * The color of the select.\n */\n color: { type: String as () => NeonFunctionalColor, default: NeonFunctionalColor.Primary },\n /**\n * Placement of the dropdown contents.\n */\n placement: { type: String as () => NeonDropdownPlacement, default: NeonDropdownPlacement.BottomLeft },\n },\n emits: [\n /**\n * emitted when the user changes the selection.\n * @type {string | string[]} either the selected option's key (single select) or an array of the selected keys\n * (multi-select).\n */\n 'update:modelValue',\n ],\n setup(props, { emit }) {\n const attrs = useAttrs();\n\n const dropdown = ref<InstanceType<typeof NeonDropdown> | null>(null);\n\n const open = ref(false);\n const dropdownPlacement = ref<NeonDropdownPlacement>(props.placement);\n const highlightedKey = ref<string | null>(null);\n const highlightedIndex = ref(-1);\n\n const flattenedOptions = computed((): NeonSelectOption[] => {\n if (props.options) {\n return props.options;\n } else if (props.groupedOptions) {\n return props.groupedOptions?.flatMap((group) => group.options);\n }\n return [];\n });\n\n const isReverse = () => {\n if (!props.groupedOptions) {\n switch (dropdownPlacement.value) {\n case NeonDropdownPlacement.TopLeft:\n case NeonDropdownPlacement.TopRight:\n case NeonDropdownPlacement.LeftBottom:\n case NeonDropdownPlacement.RightBottom:\n return true;\n }\n }\n\n return false;\n };\n\n const onNavigate = () => {\n const element: HTMLElement | null = dropdown.value?.dropdownContent?.querySelector(\n '.neon-select__option--highlighted',\n ) as HTMLElement;\n\n if (element) {\n element.focus();\n NeonScrollUtils.scrollIntoView(element);\n }\n };\n const navigateBy = (offset: number, $event?: KeyboardEvent) => {\n const newIndex = highlightedIndex.value + offset;\n if (newIndex >= 0 && newIndex <= flattenedOptions.value.length - 1) {\n highlightedIndex.value = newIndex;\n highlightedKey.value = flattenedOptions.value[highlightedIndex.value].key;\n $event?.preventDefault();\n setTimeout(onNavigate);\n }\n };\n\n const emitInputEvent = (value: string | string[]) => {\n emit('update:modelValue', value);\n };\n\n const clickOption = (option: NeonSelectOption) => {\n if (props.multiple) {\n const values = [...props.modelValue];\n const index = values.findIndex((v) => v === option.key);\n if (index >= 0) {\n values.splice(index, 1);\n } else {\n values.push(option.key);\n }\n emitInputEvent(values);\n } else if (props.modelValue !== option.key) {\n open.value = false;\n emitInputEvent(option.key);\n }\n };\n\n const keyboardHandler = ($event: KeyboardEvent) => {\n if (open.value) {\n switch ($event.code) {\n case 'ArrowUp':\n case 'ArrowDown':\n {\n const reverseOffset = isReverse() ? -1 : 1;\n if ($event.code === 'ArrowUp') {\n navigateBy(-1 * reverseOffset, $event);\n } else {\n navigateBy(1 * reverseOffset, $event);\n }\n }\n break;\n case 'Enter':\n case 'Space':\n if (!flattenedOptions.value[highlightedIndex.value].disabled) {\n clickOption(flattenedOptions.value[highlightedIndex.value]);\n $event.preventDefault();\n }\n break;\n case 'Tab':\n if (!$event.ctrlKey && !$event.metaKey && !$event.altKey) {\n open.value = false;\n }\n break;\n }\n }\n };\n\n const computedOptions = computed((): Array<NeonSelectGroup> => {\n return (\n props.groupedOptions || [\n {\n group: '',\n options: props.options || [],\n },\n ]\n );\n });\n\n const sanitizedAttributes = computed(() => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { ...sanitized } = attrs;\n return sanitized;\n });\n\n const computedLabel = computed(() => {\n if (props.multiple && props.modelValue.length > 0) {\n if (props.multiselectPlaceholder) {\n return props.multiselectPlaceholder;\n } else if (props.modelValue.length > 1) {\n return `${props.modelValue.length} items selected`;\n } else {\n const selected = flattenedOptions.value.find((option) => option.key === props.modelValue[0]);\n return selected?.label || '';\n }\n } else if (props.modelValue) {\n const selected = flattenedOptions.value.find((option) => option.key === props.modelValue);\n\n if (selected) {\n return selected.label;\n }\n }\n\n return props.placeholder;\n });\n\n const computedIcon = computed(() => {\n if (props.modelValue) {\n const selected = flattenedOptions.value.find((option) => option.key === props.modelValue);\n\n if (selected) {\n return selected.icon;\n }\n }\n\n return props.placeholderIcon;\n });\n\n const nativeSelectChange = (event: Event) => {\n const selectedKeys = Array.from((event.target as HTMLSelectElement).options)\n .filter((opt) => opt.selected)\n .map((opt) => opt.value);\n const selectedOptions = flattenedOptions.value.filter((v) => selectedKeys.indexOf(v.key) >= 0);\n const value = props.multiple ? selectedOptions.map((value) => value.key) : selectedOptions[0].key;\n emitInputEvent(value);\n };\n\n const changeHighlighted = (key: string) => {\n highlightedKey.value = key;\n highlightedIndex.value = flattenedOptions.value.findIndex((opt) => opt.key === key);\n };\n\n const onPlacement = (placement: NeonDropdownPlacement) => {\n dropdownPlacement.value = placement;\n };\n\n onMounted(() => {\n document.addEventListener('keydown', keyboardHandler);\n });\n\n onUnmounted(() => {\n document.removeEventListener('keydown', keyboardHandler);\n });\n\n watch(\n () => open.value,\n (open: boolean) => {\n if (open) {\n highlightedKey.value = flattenedOptions.value[0].key;\n highlightedIndex.value = 0;\n navigateBy(highlightedIndex.value);\n }\n },\n );\n\n return {\n dropdown,\n open,\n highlightedKey,\n highlightedIndex,\n flattenedOptions,\n computedLabel,\n sanitizedAttributes,\n computedOptions,\n computedIcon,\n clickOption,\n nativeSelectChange,\n changeHighlighted,\n onPlacement,\n };\n },\n});\n"],"names":["_sfc_main","defineComponent","NeonDropdown","NeonIcon","NeonSwitch","NeonSize","NeonFunctionalColor","NeonDropdownPlacement","props","emit","attrs","useAttrs","dropdown","ref","open","dropdownPlacement","highlightedKey","highlightedIndex","flattenedOptions","computed","_a","group","isReverse","onNavigate","element","_b","NeonScrollUtils","navigateBy","offset","$event","newIndex","emitInputEvent","value","clickOption","option","values","index","v","keyboardHandler","reverseOffset","computedOptions","sanitizedAttributes","sanitized","computedLabel","selected","computedIcon","nativeSelectChange","event","selectedKeys","opt","selectedOptions","changeHighlighted","key","onPlacement","placement","onMounted","onUnmounted","watch"],"mappings":";;;;;;;;AAiBA,MAAAA,IAAeC,EAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV,cAAAC;AAAA,IACA,UAAAC;AAAA,IACA,YAAAC;AAAA,EAAA;AAAA,EAEF,OAAO;AAAA;AAAA;AAAA;AAAA,IAIL,IAAI,EAAE,MAAM,OAAA;AAAA;AAAA;AAAA;AAAA,IAIZ,aAAa,EAAE,MAAM,QAAQ,UAAU,GAAA;AAAA;AAAA;AAAA;AAAA,IAIvC,qBAAqB,EAAE,MAAM,SAAS,SAAS,GAAA;AAAA;AAAA;AAAA;AAAA,IAI/C,iBAAiB,EAAE,MAAM,QAAQ,UAAU,GAAA;AAAA;AAAA;AAAA;AAAA,IAI3C,SAAS,EAAE,MAAM,OAAwC,UAAU,GAAA;AAAA;AAAA;AAAA;AAAA,IAInE,gBAAgB,EAAE,MAAM,OAAuC,UAAU,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKzE,YAAY,EAAE,MAAM,CAAC,QAAQ,KAA4B,GAAG,UAAU,GAAA;AAAA;AAAA;AAAA;AAAA,IAItE,UAAU,EAAE,MAAM,SAAS,SAAS,GAAA;AAAA;AAAA;AAAA;AAAA,IAIpC,wBAAwB,EAAE,MAAM,QAAQ,UAAU,GAAA;AAAA;AAAA;AAAA;AAAA,IAIlD,UAAU,EAAE,MAAM,SAAS,SAAS,GAAA;AAAA;AAAA;AAAA;AAAA,IAIpC,MAAM,EAAE,MAAM,QAA0B,SAASC,EAAS,OAAA;AAAA;AAAA;AAAA;AAAA,IAI1D,OAAO,EAAE,MAAM,QAAqC,SAASC,EAAoB,QAAA;AAAA;AAAA;AAAA;AAAA,IAIjF,WAAW,EAAE,MAAM,QAAuC,SAASC,EAAsB,WAAA;AAAA,EAAW;AAAA,EAEtG,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAML;AAAA,EAAA;AAAA,EAEF,MAAMC,GAAO,EAAE,MAAAC,KAAQ;AACrB,UAAMC,IAAQC,EAAA,GAERC,IAAWC,EAA8C,IAAI,GAE7DC,IAAOD,EAAI,EAAK,GAChBE,IAAoBF,EAA2BL,EAAM,SAAS,GAC9DQ,IAAiBH,EAAmB,IAAI,GACxCI,IAAmBJ,EAAI,EAAE,GAEzBK,IAAmBC,EAAS,MAA0B;;AAC1D,aAAIX,EAAM,UACDA,EAAM,UACJA,EAAM,kBACRY,IAAAZ,EAAM,mBAAN,gBAAAY,EAAsB,QAAQ,CAACC,MAAUA,EAAM,WAEjD,CAAA;AAAA,IACT,CAAC,GAEKC,IAAY,MAAM;AACtB,UAAI,CAACd,EAAM;AACT,gBAAQO,EAAkB,OAAA;AAAA,UACxB,KAAKR,EAAsB;AAAA,UAC3B,KAAKA,EAAsB;AAAA,UAC3B,KAAKA,EAAsB;AAAA,UAC3B,KAAKA,EAAsB;AACzB,mBAAO;AAAA,QAAA;AAIb,aAAO;AAAA,IACT,GAEMgB,IAAa,MAAM;;AACvB,YAAMC,KAA8BC,KAAAL,IAAAR,EAAS,UAAT,gBAAAQ,EAAgB,oBAAhB,gBAAAK,EAAiC;AAAA,QACnE;AAAA;AAGF,MAAID,MACFA,EAAQ,MAAA,GACRE,EAAgB,eAAeF,CAAO;AAAA,IAE1C,GACMG,IAAa,CAACC,GAAgBC,MAA2B;AAC7D,YAAMC,IAAWb,EAAiB,QAAQW;AAC1C,MAAIE,KAAY,KAAKA,KAAYZ,EAAiB,MAAM,SAAS,MAC/DD,EAAiB,QAAQa,GACzBd,EAAe,QAAQE,EAAiB,MAAMD,EAAiB,KAAK,EAAE,KACtEY,KAAA,QAAAA,EAAQ,kBACR,WAAWN,CAAU;AAAA,IAEzB,GAEMQ,IAAiB,CAACC,MAA6B;AACnD,MAAAvB,EAAK,qBAAqBuB,CAAK;AAAA,IACjC,GAEMC,IAAc,CAACC,MAA6B;AAChD,UAAI1B,EAAM,UAAU;AAClB,cAAM2B,IAAS,CAAC,GAAG3B,EAAM,UAAU,GAC7B4B,IAAQD,EAAO,UAAU,CAACE,MAAMA,MAAMH,EAAO,GAAG;AACtD,QAAIE,KAAS,IACXD,EAAO,OAAOC,GAAO,CAAC,IAEtBD,EAAO,KAAKD,EAAO,GAAG,GAExBH,EAAeI,CAAM;AAAA,MACvB,MAAA,CAAW3B,EAAM,eAAe0B,EAAO,QACrCpB,EAAK,QAAQ,IACbiB,EAAeG,EAAO,GAAG;AAAA,IAE7B,GAEMI,IAAkB,CAACT,MAA0B;AACjD,UAAIf,EAAK;AACP,gBAAQe,EAAO,MAAA;AAAA,UACb,KAAK;AAAA,UACL,KAAK;AACH;AACE,oBAAMU,IAAgBjB,MAAc,KAAK;AACzC,cAAIO,EAAO,SAAS,YAClBF,EAAW,KAAKY,GAAeV,CAAM,IAErCF,EAAW,IAAIY,GAAeV,CAAM;AAAA,YAExC;AACA;AAAA,UACF,KAAK;AAAA,UACL,KAAK;AACH,YAAKX,EAAiB,MAAMD,EAAiB,KAAK,EAAE,aAClDgB,EAAYf,EAAiB,MAAMD,EAAiB,KAAK,CAAC,GAC1DY,EAAO,eAAA;AAET;AAAA,UACF,KAAK;AACH,YAAI,CAACA,EAAO,WAAW,CAACA,EAAO,WAAW,CAACA,EAAO,WAChDf,EAAK,QAAQ;AAEf;AAAA,QAAA;AAAA,IAGR,GAEM0B,IAAkBrB,EAAS,MAE7BX,EAAM,kBAAkB;AAAA,MACtB;AAAA,QACE,OAAO;AAAA,QACP,SAASA,EAAM,WAAW,CAAA;AAAA,MAAC;AAAA,IAC7B,CAGL,GAEKiC,IAAsBtB,EAAS,MAAM;AAEzC,YAAM,EAAE,GAAGuB,EAAA,IAAchC;AACzB,aAAOgC;AAAA,IACT,CAAC,GAEKC,IAAgBxB,EAAS,MAAM;AACnC,UAAIX,EAAM,YAAYA,EAAM,WAAW,SAAS,GAAG;AACjD,YAAIA,EAAM;AACR,iBAAOA,EAAM;AACf,YAAWA,EAAM,WAAW,SAAS;AACnC,iBAAO,GAAGA,EAAM,WAAW,MAAM;AAC5B;AACL,gBAAMoC,IAAW1B,EAAiB,MAAM,KAAK,CAACgB,MAAWA,EAAO,QAAQ1B,EAAM,WAAW,CAAC,CAAC;AAC3F,kBAAOoC,KAAA,gBAAAA,EAAU,UAAS;AAAA,QAC5B;AAAA,MACF,WAAWpC,EAAM,YAAY;AAC3B,cAAMoC,IAAW1B,EAAiB,MAAM,KAAK,CAACgB,MAAWA,EAAO,QAAQ1B,EAAM,UAAU;AAExF,YAAIoC;AACF,iBAAOA,EAAS;AAAA,MAEpB;AAEA,aAAOpC,EAAM;AAAA,IACf,CAAC,GAEKqC,IAAe1B,EAAS,MAAM;AAClC,UAAIX,EAAM,YAAY;AACpB,cAAMoC,IAAW1B,EAAiB,MAAM,KAAK,CAACgB,MAAWA,EAAO,QAAQ1B,EAAM,UAAU;AAExF,YAAIoC;AACF,iBAAOA,EAAS;AAAA,MAEpB;AAEA,aAAOpC,EAAM;AAAA,IACf,CAAC,GAEKsC,IAAqB,CAACC,MAAiB;AAC3C,YAAMC,IAAe,MAAM,KAAMD,EAAM,OAA6B,OAAO,EACxE,OAAO,CAACE,MAAQA,EAAI,QAAQ,EAC5B,IAAI,CAACA,MAAQA,EAAI,KAAK,GACnBC,IAAkBhC,EAAiB,MAAM,OAAO,CAACmB,MAAMW,EAAa,QAAQX,EAAE,GAAG,KAAK,CAAC,GACvFL,IAAQxB,EAAM,WAAW0C,EAAgB,IAAI,CAAClB,MAAUA,EAAM,GAAG,IAAIkB,EAAgB,CAAC,EAAE;AAC9F,MAAAnB,EAAeC,CAAK;AAAA,IACtB,GAEMmB,IAAoB,CAACC,MAAgB;AACzC,MAAApC,EAAe,QAAQoC,GACvBnC,EAAiB,QAAQC,EAAiB,MAAM,UAAU,CAAC+B,MAAQA,EAAI,QAAQG,CAAG;AAAA,IACpF,GAEMC,IAAc,CAACC,MAAqC;AACxD,MAAAvC,EAAkB,QAAQuC;AAAA,IAC5B;AAEA,WAAAC,EAAU,MAAM;AACd,eAAS,iBAAiB,WAAWjB,CAAe;AAAA,IACtD,CAAC,GAEDkB,EAAY,MAAM;AAChB,eAAS,oBAAoB,WAAWlB,CAAe;AAAA,IACzD,CAAC,GAEDmB;AAAA,MACE,MAAM3C,EAAK;AAAA,MACX,CAACA,MAAkB;AACjB,QAAIA,MACFE,EAAe,QAAQE,EAAiB,MAAM,CAAC,EAAE,KACjDD,EAAiB,QAAQ,GACzBU,EAAWV,EAAiB,KAAK;AAAA,MAErC;AAAA,IAAA,GAGK;AAAA,MACL,UAAAL;AAAA,MACA,MAAAE;AAAA,MACA,gBAAAE;AAAA,MACA,kBAAAC;AAAA,MACA,kBAAAC;AAAA,MACA,eAAAyB;AAAA,MACA,qBAAAF;AAAA,MACA,iBAAAD;AAAA,MACA,cAAAK;AAAA,MACA,aAAAZ;AAAA,MACA,oBAAAa;AAAA,MACA,mBAAAK;AAAA,MACA,aAAAE;AAAA,IAAA;AAAA,EAEJ;AACF,CAAC;"}
|
|
1
|
+
{"version":3,"file":"NeonSelect.es.js","sources":["../../../../src/components/user-input/select/NeonSelect.ts?vue&type=script&src=true&lang.ts"],"sourcesContent":["import { computed, defineComponent, onMounted, onUnmounted, ref, useAttrs, watch } from 'vue';\nimport { NeonSize } from '@/common/enums/NeonSize';\nimport type { NeonSelectGroup } from '@/common/models/NeonSelectGroup';\nimport type { NeonSelectOption } from '@/common/models/NeonSelectOption';\nimport { NeonFunctionalColor } from '@/common/enums/NeonFunctionalColor';\nimport NeonDropdown from '@/components/presentation/dropdown/NeonDropdown.vue';\nimport NeonIcon from '@/components/presentation/icon/NeonIcon.vue';\nimport NeonSwitch from '@/components/user-input/switch/NeonSwitch.vue';\nimport { NeonDropdownPlacement } from '@/common/enums/NeonDropdownPlacement';\nimport { NeonScrollUtils } from '@/common/utils/NeonScrollUtils';\nimport { NeonDropdownStyle } from '@/common/enums/NeonDropdownStyle';\n\n/**\n * <p>The <strong>NeonSelect</strong> is the equivalent of an HTML <select> form control. On touch devices\n * NeonSelect will use the native select for input. <strong>NeonSelect</strong> supports grouping and multiselect.</p>\n * <p><strong>Note:</strong> As well as the options described below, pass through attributes supported by\n * <a href=\"/presentation/dropdown\">NeonDropdown</a> to change the style of the dropdown button.</p>\n */\nexport default defineComponent({\n name: 'NeonSelect',\n components: {\n NeonDropdown,\n NeonIcon,\n NeonSwitch,\n },\n props: {\n /**\n * Id for the dropdown button\n */\n id: { type: String },\n /**\n * Placeholder to display as button label when there is no option selected.\n */\n placeholder: { type: String, required: true },\n /**\n * Display the placeholder as the first option in the select, this is useful as an alternative to a label.\n */\n placeholderAsOption: { type: Boolean, default: false },\n /**\n * Optional placeholder icon.\n */\n placeholderIcon: { type: String, required: false },\n /**\n * A list of options to render in the select.\n */\n options: { type: Array as () => Array<NeonSelectOption>, required: false },\n /**\n * A list of grouped options to render in the select.\n */\n groupedOptions: { type: Array as () => Array<NeonSelectGroup>, required: false },\n /**\n * Either a single string, indicating the key of the selected option or an array of selected keys in the case\n * multiple = true.\n */\n modelValue: { type: [String, Array as () => Array<string>], required: true },\n /**\n * Allow multi-select.\n */\n multiple: { type: Boolean, default: false },\n /**\n * Placeholder when multiple values are selected.\n */\n multiselectPlaceholder: { type: String, required: false },\n /**\n * Disable the select\n */\n disabled: { type: Boolean, default: false },\n /**\n * The size of the dropdown - Small, Medium or Large.\n */\n size: { type: String as () => NeonSize, default: NeonSize.Medium },\n /**\n * The color of the select.\n */\n color: { type: String as () => NeonFunctionalColor, default: NeonFunctionalColor.Primary },\n /**\n * The button style of the select.\n */\n buttonStyle: { type: String as () => NeonDropdownStyle, default: NeonDropdownStyle.Input },\n /**\n * Placement of the dropdown contents.\n */\n placement: { type: String as () => NeonDropdownPlacement, default: NeonDropdownPlacement.BottomLeft },\n },\n emits: [\n /**\n * emitted when the user changes the selection.\n * @type {string | string[]} either the selected option's key (single select) or an array of the selected keys\n * (multi-select).\n */\n 'update:modelValue',\n ],\n setup(props, { emit }) {\n const attrs = useAttrs();\n\n const dropdown = ref<InstanceType<typeof NeonDropdown> | null>(null);\n\n const open = ref(false);\n const dropdownPlacement = ref<NeonDropdownPlacement>(props.placement);\n const highlightedKey = ref<string | null>(null);\n const highlightedIndex = ref(-1);\n\n const flattenedOptions = computed((): NeonSelectOption[] => {\n if (props.options) {\n return props.options;\n } else if (props.groupedOptions) {\n return props.groupedOptions?.flatMap((group) => group.options);\n }\n return [];\n });\n\n const isReverse = () => {\n if (!props.groupedOptions) {\n switch (dropdownPlacement.value) {\n case NeonDropdownPlacement.TopLeft:\n case NeonDropdownPlacement.TopRight:\n case NeonDropdownPlacement.LeftBottom:\n case NeonDropdownPlacement.RightBottom:\n return true;\n }\n }\n\n return false;\n };\n\n const onNavigate = () => {\n const element: HTMLElement | null = dropdown.value?.dropdownContent?.querySelector(\n '.neon-select__option--highlighted',\n ) as HTMLElement;\n\n if (element) {\n element.focus();\n NeonScrollUtils.scrollIntoView(element);\n }\n };\n const navigateBy = (offset: number, $event?: KeyboardEvent) => {\n const newIndex = highlightedIndex.value + offset;\n if (newIndex >= 0 && newIndex <= flattenedOptions.value.length - 1) {\n highlightedIndex.value = newIndex;\n highlightedKey.value = flattenedOptions.value[highlightedIndex.value].key;\n $event?.preventDefault();\n setTimeout(onNavigate);\n }\n };\n\n const emitInputEvent = (value: string | string[]) => {\n emit('update:modelValue', value);\n };\n\n const clickOption = (option: NeonSelectOption) => {\n if (props.multiple) {\n const values = [...props.modelValue];\n const index = values.findIndex((v) => v === option.key);\n if (index >= 0) {\n values.splice(index, 1);\n } else {\n values.push(option.key);\n }\n emitInputEvent(values);\n } else if (props.modelValue !== option.key) {\n open.value = false;\n emitInputEvent(option.key);\n }\n };\n\n const keyboardHandler = ($event: KeyboardEvent) => {\n if (open.value) {\n switch ($event.code) {\n case 'ArrowUp':\n case 'ArrowDown':\n {\n const reverseOffset = isReverse() ? -1 : 1;\n if ($event.code === 'ArrowUp') {\n navigateBy(-1 * reverseOffset, $event);\n } else {\n navigateBy(1 * reverseOffset, $event);\n }\n }\n break;\n case 'Enter':\n case 'Space':\n if (!flattenedOptions.value[highlightedIndex.value].disabled) {\n clickOption(flattenedOptions.value[highlightedIndex.value]);\n $event.preventDefault();\n }\n break;\n case 'Tab':\n if (!$event.ctrlKey && !$event.metaKey && !$event.altKey) {\n open.value = false;\n }\n break;\n }\n }\n };\n\n const computedOptions = computed((): Array<NeonSelectGroup> => {\n return (\n props.groupedOptions || [\n {\n group: '',\n options: props.options || [],\n },\n ]\n );\n });\n\n const sanitizedAttributes = computed(() => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { ...sanitized } = attrs;\n return sanitized;\n });\n\n const computedLabel = computed(() => {\n if (props.multiple && props.modelValue.length > 0) {\n if (props.multiselectPlaceholder) {\n return props.multiselectPlaceholder;\n } else if (props.modelValue.length > 1) {\n return `${props.modelValue.length} items selected`;\n } else {\n const selected = flattenedOptions.value.find((option) => option.key === props.modelValue[0]);\n return selected?.label || '';\n }\n } else if (props.modelValue) {\n const selected = flattenedOptions.value.find((option) => option.key === props.modelValue);\n\n if (selected) {\n return selected.label;\n }\n }\n\n return props.placeholder;\n });\n\n const labelIsPlaceholder = computed(() => !props.modelValue || props.modelValue.length === 0);\n\n const computedIcon = computed(() => {\n if (props.modelValue) {\n const selected = flattenedOptions.value.find((option) => option.key === props.modelValue);\n\n if (selected) {\n return selected.icon;\n }\n }\n\n return props.placeholderIcon;\n });\n\n const nativeSelectChange = (event: Event) => {\n const selectedKeys = Array.from((event.target as HTMLSelectElement).options)\n .filter((opt) => opt.selected)\n .map((opt) => opt.value);\n const selectedOptions = flattenedOptions.value.filter((v) => selectedKeys.indexOf(v.key) >= 0);\n const value = props.multiple ? selectedOptions.map((value) => value.key) : selectedOptions[0].key;\n emitInputEvent(value);\n };\n\n const changeHighlighted = (key: string) => {\n highlightedKey.value = key;\n highlightedIndex.value = flattenedOptions.value.findIndex((opt) => opt.key === key);\n };\n\n const onPlacement = (placement: NeonDropdownPlacement) => {\n dropdownPlacement.value = placement;\n };\n\n onMounted(() => {\n document.addEventListener('keydown', keyboardHandler);\n });\n\n onUnmounted(() => {\n document.removeEventListener('keydown', keyboardHandler);\n });\n\n watch(\n () => open.value,\n (open: boolean) => {\n if (open) {\n highlightedKey.value = flattenedOptions.value[0].key;\n highlightedIndex.value = 0;\n navigateBy(highlightedIndex.value);\n }\n },\n );\n\n return {\n dropdown,\n open,\n highlightedKey,\n highlightedIndex,\n flattenedOptions,\n computedLabel,\n sanitizedAttributes,\n computedOptions,\n computedIcon,\n labelIsPlaceholder,\n clickOption,\n nativeSelectChange,\n changeHighlighted,\n onPlacement,\n };\n },\n});\n"],"names":["_sfc_main","defineComponent","NeonDropdown","NeonIcon","NeonSwitch","NeonSize","NeonFunctionalColor","NeonDropdownStyle","NeonDropdownPlacement","props","emit","attrs","useAttrs","dropdown","ref","open","dropdownPlacement","highlightedKey","highlightedIndex","flattenedOptions","computed","_a","group","isReverse","onNavigate","element","_b","NeonScrollUtils","navigateBy","offset","$event","newIndex","emitInputEvent","value","clickOption","option","values","index","v","keyboardHandler","reverseOffset","computedOptions","sanitizedAttributes","sanitized","computedLabel","selected","labelIsPlaceholder","computedIcon","nativeSelectChange","event","selectedKeys","opt","selectedOptions","changeHighlighted","key","onPlacement","placement","onMounted","onUnmounted","watch"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const r=require("./NeonSelect.cjs.js"),e=require("vue"),c=require("../../../_virtual/_plugin-vue_export-helper.cjs.js"),p={class:"neon-select__wrapper"},u={class:"no-style neon-select__options"},m={class:"neon-select__option-container"},k={class:"neon-select__option-label"},b=["id","aria-selected","onMouseover","onClickCapture","onEnter"],y={class:"neon-select__option-container"},h={class:"neon-select__option-label"},g=["disabled","multiple"],B=["selected"],V=["label"],v=["data-index","disabled","multiple","selected","value"],
|
|
1
|
+
"use strict";const r=require("./NeonSelect.cjs.js"),e=require("vue"),c=require("../../../_virtual/_plugin-vue_export-helper.cjs.js"),p={class:"neon-select__wrapper"},u={class:"no-style neon-select__options"},m={class:"neon-select__option-container"},k={class:"neon-select__option-label"},b=["id","aria-selected","onMouseover","onClickCapture","onEnter"],y={class:"neon-select__option-container"},h={class:"neon-select__option-label"},g=["disabled","multiple"],B=["selected"],V=["label"],v=["data-index","disabled","multiple","selected","value"],E=["data-index","disabled","multiple","selected","value"];function _(l,t,w,N,f,$){const a=e.resolveComponent("neon-switch"),i=e.resolveComponent("neon-icon"),d=e.resolveComponent("neon-dropdown");return e.openBlock(),e.createElementBlock("div",p,[e.createVNode(d,e.mergeProps({id:l.id,ref:"dropdown",modelValue:l.open,"onUpdate:modelValue":t[0]||(t[0]=n=>l.open=n),"aria-activedescendant":l.multiple?l.modelValue[0]:l.modelValue,"aria-multiselectable":l.multiple,class:[[`neon-select--${l.color}`,{"neon-select--grouped":l.groupedOptions,"neon-select--multiple":l.multiple,"neon-select--with-placeholder":l.labelIsPlaceholder}],"neon-select"],color:l.color,disabled:l.disabled,"dropdown-style":l.buttonStyle,icon:l.computedIcon,label:l.computedLabel,size:l.size,role:"listbox"},l.sanitizedAttributes,{onDropdownPlacement:l.onPlacement}),{default:e.withCtx(()=>[e.createElementVNode("ul",u,[l.placeholderAsOption?(e.openBlock(),e.createElementBlock("li",{key:0,class:e.normalizeClass([`neon-select__option--${l.size}`,"neon-select__option neon-select__option--disabled neon-select__option-placeholder"])},[e.createElementVNode("div",m,[e.createElementVNode("span",k,e.toDisplayString(l.placeholder),1)])],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.computedOptions,n=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[n.group!==""?(e.openBlock(),e.createElementBlock("li",{key:n.group,class:"neon-select__option-title"},e.toDisplayString(n.group),1)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.options,o=>(e.openBlock(),e.createElementBlock("li",{id:o.key,key:o.key,"aria-selected":l.multiple?l.modelValue.indexOf(o.key)>=0:o.key===l.modelValue,class:e.normalizeClass([[{"neon-select__option--disabled":o.disabled,"neon-select__option--separator-before":o.separatorBefore,"neon-select__option--selected":l.multiple?l.modelValue.indexOf(o.key)>=0:o.key===l.modelValue,"neon-select__option--highlighted":o.key===l.highlightedKey},`neon-select__option--${l.size}`],"neon-select__option"]),role:"option",tabindex:"0",onMouseover:s=>l.changeHighlighted(o.key),onClickCapture:e.withModifiers(s=>!o.disabled&&l.clickOption(o),["stop","prevent"]),onEnter:e.withModifiers(s=>!o.disabled&&l.clickOption(o),["stop","prevent"])},[e.createElementVNode("div",y,[e.renderSlot(l.$slots,"option",{option:o},()=>[l.multiple?(e.openBlock(),e.createBlock(a,{key:0,color:l.color,modelValue:l.modelValue.indexOf(o.key)>=0,size:l.size==="l"?"m":"s","switch-style":"checkbox"},null,8,["color","modelValue","size"])):e.createCommentVNode("",!0),o.icon?(e.openBlock(),e.createBlock(i,{key:1,disabled:o.disabled,name:o.icon,class:"neon-select__option-icon"},null,8,["disabled","name"])):e.createCommentVNode("",!0),e.createElementVNode("span",h,e.toDisplayString(o.label),1)])])],42,b))),128))],64))),256))])]),_:3},16,["id","modelValue","aria-activedescendant","aria-multiselectable","class","color","disabled","dropdown-style","icon","label","size","onDropdownPlacement"]),e.createElementVNode("select",e.mergeProps({disabled:l.disabled,multiple:l.multiple,class:"neon-select__native"},l.sanitizedAttributes,{onInput:t[1]||(t[1]=(...n)=>l.nativeSelectChange&&l.nativeSelectChange(...n))}),[e.createElementVNode("option",{selected:l.multiple?l.modelValue.length===0:l.modelValue==="",disabled:"",hidden:"",value:""},e.toDisplayString(l.placeholder),9,B),l.groupedOptions?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(l.groupedOptions,n=>(e.openBlock(),e.createElementBlock("optgroup",{key:n.group,label:n.group},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.options,(o,s)=>(e.openBlock(),e.createElementBlock("option",{key:`${o.key}-native`,"data-index":s,disabled:o.disabled,multiple:l.multiple,selected:l.multiple?l.modelValue.indexOf(o.key)>=0:o.key===l.modelValue,value:o.key},e.toDisplayString(o.label),9,v))),128))],8,V))),128)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(l.options,(n,o)=>(e.openBlock(),e.createElementBlock("option",{key:`${n.key}-native`,"data-index":o,disabled:n.disabled,multiple:l.multiple,selected:l.multiple?l.modelValue.indexOf(n.key)>=0:n.key===l.modelValue,value:n.key},e.toDisplayString(n.label),9,E))),128))],16,g)])}const C=c(r,[["render",_]]);module.exports=C;
|
|
2
2
|
//# sourceMappingURL=NeonSelect.vue.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NeonSelect.vue.cjs.js","sources":["../../../../src/components/user-input/select/NeonSelect.vue"],"sourcesContent":["<template>\n <div class=\"neon-select__wrapper\">\n <neon-dropdown\n :id=\"id\"\n ref=\"dropdown\"\n v-model=\"open\"\n :aria-activedescendant=\"multiple ? modelValue[0] : modelValue\"\n :aria-multiselectable=\"multiple\"\n :class=\"[`neon-select--${color}
|
|
1
|
+
{"version":3,"file":"NeonSelect.vue.cjs.js","sources":["../../../../src/components/user-input/select/NeonSelect.vue"],"sourcesContent":["<template>\n <div class=\"neon-select__wrapper\">\n <neon-dropdown\n :id=\"id\"\n ref=\"dropdown\"\n v-model=\"open\"\n :aria-activedescendant=\"multiple ? modelValue[0] : modelValue\"\n :aria-multiselectable=\"multiple\"\n :class=\"[\n `neon-select--${color}`,\n {\n 'neon-select--grouped': groupedOptions,\n 'neon-select--multiple': multiple,\n 'neon-select--with-placeholder': labelIsPlaceholder,\n },\n ]\"\n :color=\"color\"\n :disabled=\"disabled\"\n :dropdown-style=\"buttonStyle\"\n :icon=\"computedIcon\"\n :label=\"computedLabel\"\n :size=\"size\"\n class=\"neon-select\"\n role=\"listbox\"\n v-bind=\"sanitizedAttributes\"\n @dropdown-placement=\"onPlacement\"\n >\n <ul class=\"no-style neon-select__options\">\n <li\n v-if=\"placeholderAsOption\"\n :class=\"`neon-select__option--${size}`\"\n class=\"neon-select__option neon-select__option--disabled neon-select__option-placeholder\"\n >\n <div class=\"neon-select__option-container\">\n <span class=\"neon-select__option-label\">{{ placeholder }}</span>\n </div>\n </li>\n <template v-for=\"group in computedOptions\">\n <li v-if=\"group.group !== ''\" :key=\"group.group\" class=\"neon-select__option-title\">{{ group.group }}</li>\n <li\n v-for=\"option in group.options\"\n :id=\"option.key\"\n :key=\"option.key\"\n :aria-selected=\"multiple ? modelValue.indexOf(option.key) >= 0 : option.key === modelValue\"\n :class=\"[\n {\n 'neon-select__option--disabled': option.disabled,\n 'neon-select__option--separator-before': option.separatorBefore,\n 'neon-select__option--selected': multiple\n ? modelValue.indexOf(option.key) >= 0\n : option.key === modelValue,\n 'neon-select__option--highlighted': option.key === highlightedKey,\n },\n `neon-select__option--${size}`,\n ]\"\n class=\"neon-select__option\"\n role=\"option\"\n tabindex=\"0\"\n @mouseover=\"changeHighlighted(option.key)\"\n @click.stop.prevent.capture=\"!option.disabled && clickOption(option)\"\n @enter.stop.prevent=\"!option.disabled && clickOption(option)\"\n >\n <div class=\"neon-select__option-container\">\n <!-- @slot provide a custom template for an option.<br />Bindings: <strong>option</strong>\n (<em>NeonSelectOption</em>). This slot is purely for formatting the option, all accessibility actions\n still apply. -->\n <slot :option=\"option\" name=\"option\">\n <neon-switch\n v-if=\"multiple\"\n :color=\"color\"\n :modelValue=\"modelValue.indexOf(option.key) >= 0\"\n :size=\"size === 'l' ? 'm' : 's'\"\n switch-style=\"checkbox\"\n />\n <neon-icon\n v-if=\"option.icon\"\n :disabled=\"option.disabled\"\n :name=\"option.icon\"\n class=\"neon-select__option-icon\"\n />\n <span class=\"neon-select__option-label\">{{ option.label }}</span>\n </slot>\n </div>\n </li>\n </template>\n </ul>\n </neon-dropdown>\n <select\n :disabled=\"disabled\"\n :multiple=\"multiple\"\n class=\"neon-select__native\"\n v-bind=\"sanitizedAttributes\"\n @input=\"nativeSelectChange\"\n >\n <option :selected=\"multiple ? modelValue.length === 0 : modelValue === ''\" disabled hidden value=\"\">\n {{ placeholder }}\n </option>\n <template v-if=\"groupedOptions\">\n <optgroup v-for=\"group in groupedOptions\" :key=\"group.group\" :label=\"group.group\">\n <option\n v-for=\"(option, index) in group.options\"\n :key=\"`${option.key}-native`\"\n :data-index=\"index\"\n :disabled=\"option.disabled\"\n :multiple=\"multiple\"\n :selected=\"multiple ? modelValue.indexOf(option.key) >= 0 : option.key === modelValue\"\n :value=\"option.key\"\n >\n {{ option.label }}\n </option>\n </optgroup>\n </template>\n <template v-else>\n <option\n v-for=\"(option, index) in options\"\n :key=\"`${option.key}-native`\"\n :data-index=\"index\"\n :disabled=\"option.disabled\"\n :multiple=\"multiple\"\n :selected=\"multiple ? modelValue.indexOf(option.key) >= 0 : option.key === modelValue\"\n :value=\"option.key\"\n >\n {{ option.label }}\n </option>\n </template>\n </select>\n </div>\n</template>\n\n<script lang=\"ts\" src=\"./NeonSelect.ts\"></script>\n"],"names":["_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_6","_hoisted_7","_openBlock","_createElementBlock","_createVNode","_component_neon_dropdown","_mergeProps","_ctx","$event","_createElementVNode","_normalizeClass","_toDisplayString","_Fragment","_renderList","group","option","_withModifiers","_renderSlot","_createBlock","_component_neon_switch","_component_neon_icon","args","_hoisted_9","index","_hoisted_11","_hoisted_12"],"mappings":"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"}
|
|
@@ -1,26 +1,34 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { resolveComponent as m, openBlock as n, createElementBlock as s, createVNode as
|
|
3
|
-
import
|
|
4
|
-
const
|
|
1
|
+
import f from "./NeonSelect.es.js";
|
|
2
|
+
import { resolveComponent as m, openBlock as n, createElementBlock as s, createVNode as g, mergeProps as c, withCtx as _, createElementVNode as d, normalizeClass as b, toDisplayString as i, createCommentVNode as p, Fragment as t, renderList as a, withModifiers as h, renderSlot as w, createBlock as k } from "vue";
|
|
3
|
+
import $ from "../../../_virtual/_plugin-vue_export-helper.es.js";
|
|
4
|
+
const O = { class: "neon-select__wrapper" }, z = { class: "no-style neon-select__options" }, C = { class: "neon-select__option-container" }, S = { class: "neon-select__option-label" }, P = ["id", "aria-selected", "onMouseover", "onClickCapture", "onEnter"], B = { class: "neon-select__option-container" }, E = { class: "neon-select__option-label" }, N = ["disabled", "multiple"], A = ["selected"], D = ["label"], I = ["data-index", "disabled", "multiple", "selected", "value"], M = ["data-index", "disabled", "multiple", "selected", "value"];
|
|
5
5
|
function L(e, r, F, H, K, U) {
|
|
6
6
|
const y = m("neon-switch"), v = m("neon-icon"), V = m("neon-dropdown");
|
|
7
|
-
return n(), s("div",
|
|
8
|
-
|
|
7
|
+
return n(), s("div", O, [
|
|
8
|
+
g(V, c({
|
|
9
9
|
id: e.id,
|
|
10
10
|
ref: "dropdown",
|
|
11
11
|
modelValue: e.open,
|
|
12
12
|
"onUpdate:modelValue": r[0] || (r[0] = (o) => e.open = o),
|
|
13
13
|
"aria-activedescendant": e.multiple ? e.modelValue[0] : e.modelValue,
|
|
14
14
|
"aria-multiselectable": e.multiple,
|
|
15
|
-
class: [[
|
|
15
|
+
class: [[
|
|
16
|
+
`neon-select--${e.color}`,
|
|
17
|
+
{
|
|
18
|
+
"neon-select--grouped": e.groupedOptions,
|
|
19
|
+
"neon-select--multiple": e.multiple,
|
|
20
|
+
"neon-select--with-placeholder": e.labelIsPlaceholder
|
|
21
|
+
}
|
|
22
|
+
], "neon-select"],
|
|
16
23
|
color: e.color,
|
|
17
24
|
disabled: e.disabled,
|
|
25
|
+
"dropdown-style": e.buttonStyle,
|
|
18
26
|
icon: e.computedIcon,
|
|
19
27
|
label: e.computedLabel,
|
|
20
28
|
size: e.size,
|
|
21
29
|
role: "listbox"
|
|
22
30
|
}, e.sanitizedAttributes, { onDropdownPlacement: e.onPlacement }), {
|
|
23
|
-
default:
|
|
31
|
+
default: _(() => [
|
|
24
32
|
d("ul", z, [
|
|
25
33
|
e.placeholderAsOption ? (n(), s("li", {
|
|
26
34
|
key: 0,
|
|
@@ -51,33 +59,33 @@ function L(e, r, F, H, K, U) {
|
|
|
51
59
|
role: "option",
|
|
52
60
|
tabindex: "0",
|
|
53
61
|
onMouseover: (u) => e.changeHighlighted(l.key),
|
|
54
|
-
onClickCapture:
|
|
55
|
-
onEnter:
|
|
62
|
+
onClickCapture: h((u) => !l.disabled && e.clickOption(l), ["stop", "prevent"]),
|
|
63
|
+
onEnter: h((u) => !l.disabled && e.clickOption(l), ["stop", "prevent"])
|
|
56
64
|
}, [
|
|
57
|
-
d("div",
|
|
58
|
-
|
|
59
|
-
e.multiple ? (n(),
|
|
65
|
+
d("div", B, [
|
|
66
|
+
w(e.$slots, "option", { option: l }, () => [
|
|
67
|
+
e.multiple ? (n(), k(y, {
|
|
60
68
|
key: 0,
|
|
61
69
|
color: e.color,
|
|
62
70
|
modelValue: e.modelValue.indexOf(l.key) >= 0,
|
|
63
71
|
size: e.size === "l" ? "m" : "s",
|
|
64
72
|
"switch-style": "checkbox"
|
|
65
73
|
}, null, 8, ["color", "modelValue", "size"])) : p("", !0),
|
|
66
|
-
l.icon ? (n(),
|
|
74
|
+
l.icon ? (n(), k(v, {
|
|
67
75
|
key: 1,
|
|
68
76
|
disabled: l.disabled,
|
|
69
77
|
name: l.icon,
|
|
70
78
|
class: "neon-select__option-icon"
|
|
71
79
|
}, null, 8, ["disabled", "name"])) : p("", !0),
|
|
72
|
-
d("span",
|
|
80
|
+
d("span", E, i(l.label), 1)
|
|
73
81
|
])
|
|
74
82
|
])
|
|
75
|
-
], 42,
|
|
83
|
+
], 42, P))), 128))
|
|
76
84
|
], 64))), 256))
|
|
77
85
|
])
|
|
78
86
|
]),
|
|
79
87
|
_: 3
|
|
80
|
-
}, 16, ["id", "modelValue", "aria-activedescendant", "aria-multiselectable", "class", "color", "disabled", "icon", "label", "size", "onDropdownPlacement"]),
|
|
88
|
+
}, 16, ["id", "modelValue", "aria-activedescendant", "aria-multiselectable", "class", "color", "disabled", "dropdown-style", "icon", "label", "size", "onDropdownPlacement"]),
|
|
81
89
|
d("select", c({
|
|
82
90
|
disabled: e.disabled,
|
|
83
91
|
multiple: e.multiple,
|
|
@@ -102,7 +110,7 @@ function L(e, r, F, H, K, U) {
|
|
|
102
110
|
multiple: e.multiple,
|
|
103
111
|
selected: e.multiple ? e.modelValue.indexOf(l.key) >= 0 : l.key === e.modelValue,
|
|
104
112
|
value: l.key
|
|
105
|
-
}, i(l.label), 9,
|
|
113
|
+
}, i(l.label), 9, I))), 128))
|
|
106
114
|
], 8, D))), 128)) : (n(!0), s(t, { key: 1 }, a(e.options, (o, l) => (n(), s("option", {
|
|
107
115
|
key: `${o.key}-native`,
|
|
108
116
|
"data-index": l,
|
|
@@ -110,11 +118,11 @@ function L(e, r, F, H, K, U) {
|
|
|
110
118
|
multiple: e.multiple,
|
|
111
119
|
selected: e.multiple ? e.modelValue.indexOf(o.key) >= 0 : o.key === e.modelValue,
|
|
112
120
|
value: o.key
|
|
113
|
-
}, i(o.label), 9,
|
|
114
|
-
], 16,
|
|
121
|
+
}, i(o.label), 9, M))), 128))
|
|
122
|
+
], 16, N)
|
|
115
123
|
]);
|
|
116
124
|
}
|
|
117
|
-
const J = /* @__PURE__ */
|
|
125
|
+
const J = /* @__PURE__ */ $(f, [["render", L]]);
|
|
118
126
|
export {
|
|
119
127
|
J as default
|
|
120
128
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NeonSelect.vue.es.js","sources":["../../../../src/components/user-input/select/NeonSelect.vue"],"sourcesContent":["<template>\n <div class=\"neon-select__wrapper\">\n <neon-dropdown\n :id=\"id\"\n ref=\"dropdown\"\n v-model=\"open\"\n :aria-activedescendant=\"multiple ? modelValue[0] : modelValue\"\n :aria-multiselectable=\"multiple\"\n :class=\"[`neon-select--${color}
|
|
1
|
+
{"version":3,"file":"NeonSelect.vue.es.js","sources":["../../../../src/components/user-input/select/NeonSelect.vue"],"sourcesContent":["<template>\n <div class=\"neon-select__wrapper\">\n <neon-dropdown\n :id=\"id\"\n ref=\"dropdown\"\n v-model=\"open\"\n :aria-activedescendant=\"multiple ? modelValue[0] : modelValue\"\n :aria-multiselectable=\"multiple\"\n :class=\"[\n `neon-select--${color}`,\n {\n 'neon-select--grouped': groupedOptions,\n 'neon-select--multiple': multiple,\n 'neon-select--with-placeholder': labelIsPlaceholder,\n },\n ]\"\n :color=\"color\"\n :disabled=\"disabled\"\n :dropdown-style=\"buttonStyle\"\n :icon=\"computedIcon\"\n :label=\"computedLabel\"\n :size=\"size\"\n class=\"neon-select\"\n role=\"listbox\"\n v-bind=\"sanitizedAttributes\"\n @dropdown-placement=\"onPlacement\"\n >\n <ul class=\"no-style neon-select__options\">\n <li\n v-if=\"placeholderAsOption\"\n :class=\"`neon-select__option--${size}`\"\n class=\"neon-select__option neon-select__option--disabled neon-select__option-placeholder\"\n >\n <div class=\"neon-select__option-container\">\n <span class=\"neon-select__option-label\">{{ placeholder }}</span>\n </div>\n </li>\n <template v-for=\"group in computedOptions\">\n <li v-if=\"group.group !== ''\" :key=\"group.group\" class=\"neon-select__option-title\">{{ group.group }}</li>\n <li\n v-for=\"option in group.options\"\n :id=\"option.key\"\n :key=\"option.key\"\n :aria-selected=\"multiple ? modelValue.indexOf(option.key) >= 0 : option.key === modelValue\"\n :class=\"[\n {\n 'neon-select__option--disabled': option.disabled,\n 'neon-select__option--separator-before': option.separatorBefore,\n 'neon-select__option--selected': multiple\n ? modelValue.indexOf(option.key) >= 0\n : option.key === modelValue,\n 'neon-select__option--highlighted': option.key === highlightedKey,\n },\n `neon-select__option--${size}`,\n ]\"\n class=\"neon-select__option\"\n role=\"option\"\n tabindex=\"0\"\n @mouseover=\"changeHighlighted(option.key)\"\n @click.stop.prevent.capture=\"!option.disabled && clickOption(option)\"\n @enter.stop.prevent=\"!option.disabled && clickOption(option)\"\n >\n <div class=\"neon-select__option-container\">\n <!-- @slot provide a custom template for an option.<br />Bindings: <strong>option</strong>\n (<em>NeonSelectOption</em>). This slot is purely for formatting the option, all accessibility actions\n still apply. -->\n <slot :option=\"option\" name=\"option\">\n <neon-switch\n v-if=\"multiple\"\n :color=\"color\"\n :modelValue=\"modelValue.indexOf(option.key) >= 0\"\n :size=\"size === 'l' ? 'm' : 's'\"\n switch-style=\"checkbox\"\n />\n <neon-icon\n v-if=\"option.icon\"\n :disabled=\"option.disabled\"\n :name=\"option.icon\"\n class=\"neon-select__option-icon\"\n />\n <span class=\"neon-select__option-label\">{{ option.label }}</span>\n </slot>\n </div>\n </li>\n </template>\n </ul>\n </neon-dropdown>\n <select\n :disabled=\"disabled\"\n :multiple=\"multiple\"\n class=\"neon-select__native\"\n v-bind=\"sanitizedAttributes\"\n @input=\"nativeSelectChange\"\n >\n <option :selected=\"multiple ? modelValue.length === 0 : modelValue === ''\" disabled hidden value=\"\">\n {{ placeholder }}\n </option>\n <template v-if=\"groupedOptions\">\n <optgroup v-for=\"group in groupedOptions\" :key=\"group.group\" :label=\"group.group\">\n <option\n v-for=\"(option, index) in group.options\"\n :key=\"`${option.key}-native`\"\n :data-index=\"index\"\n :disabled=\"option.disabled\"\n :multiple=\"multiple\"\n :selected=\"multiple ? modelValue.indexOf(option.key) >= 0 : option.key === modelValue\"\n :value=\"option.key\"\n >\n {{ option.label }}\n </option>\n </optgroup>\n </template>\n <template v-else>\n <option\n v-for=\"(option, index) in options\"\n :key=\"`${option.key}-native`\"\n :data-index=\"index\"\n :disabled=\"option.disabled\"\n :multiple=\"multiple\"\n :selected=\"multiple ? modelValue.indexOf(option.key) >= 0 : option.key === modelValue\"\n :value=\"option.key\"\n >\n {{ option.label }}\n </option>\n </template>\n </select>\n </div>\n</template>\n\n<script lang=\"ts\" src=\"./NeonSelect.ts\"></script>\n"],"names":["_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_6","_hoisted_7","_openBlock","_createElementBlock","_createVNode","_component_neon_dropdown","_mergeProps","_ctx","$event","_createElementVNode","_normalizeClass","_toDisplayString","_Fragment","_renderList","group","option","_withModifiers","_renderSlot","_createBlock","_component_neon_switch","_component_neon_icon","args","_hoisted_9","index","_hoisted_11","_hoisted_12"],"mappings":"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"}
|