@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.
Files changed (151) hide show
  1. package/dist/common/enums/NeonButtonStyle.cjs.js +1 -1
  2. package/dist/common/enums/NeonButtonStyle.cjs.js.map +1 -1
  3. package/dist/common/enums/NeonButtonStyle.es.js +1 -1
  4. package/dist/common/enums/NeonButtonStyle.es.js.map +1 -1
  5. package/dist/common/enums/NeonDropdownStyle.cjs.js +1 -1
  6. package/dist/common/enums/NeonDropdownStyle.cjs.js.map +1 -1
  7. package/dist/common/enums/NeonDropdownStyle.es.js +2 -2
  8. package/dist/common/enums/NeonDropdownStyle.es.js.map +1 -1
  9. package/dist/common/enums/NeonMode.cjs.js +1 -1
  10. package/dist/common/enums/NeonMode.cjs.js.map +1 -1
  11. package/dist/common/enums/NeonMode.es.js +1 -1
  12. package/dist/common/enums/NeonMode.es.js.map +1 -1
  13. package/dist/common/icons/light-mode-sunny.svg.cjs.js +26 -0
  14. package/dist/common/icons/light-mode-sunny.svg.cjs.js.map +1 -0
  15. package/dist/common/icons/light-mode-sunny.svg.es.js +29 -0
  16. package/dist/common/icons/light-mode-sunny.svg.es.js.map +1 -0
  17. package/dist/common/utils/NeonModeUtils.cjs.js +1 -1
  18. package/dist/common/utils/NeonModeUtils.cjs.js.map +1 -1
  19. package/dist/common/utils/NeonModeUtils.es.js +38 -43
  20. package/dist/common/utils/NeonModeUtils.es.js.map +1 -1
  21. package/dist/common/utils/RegisterIcons.cjs.js +1 -1
  22. package/dist/common/utils/RegisterIcons.cjs.js.map +1 -1
  23. package/dist/common/utils/RegisterIcons.es.js +23 -22
  24. package/dist/common/utils/RegisterIcons.es.js.map +1 -1
  25. package/dist/components/feedback/dialog/NeonDialog.vue.cjs.js +1 -1
  26. package/dist/components/feedback/dialog/NeonDialog.vue.cjs.js.map +1 -1
  27. package/dist/components/feedback/dialog/NeonDialog.vue.es.js +6 -5
  28. package/dist/components/feedback/dialog/NeonDialog.vue.es.js.map +1 -1
  29. package/dist/components/feedback/note/NeonNote.vue.cjs.js +1 -1
  30. package/dist/components/feedback/note/NeonNote.vue.cjs.js.map +1 -1
  31. package/dist/components/feedback/note/NeonNote.vue.es.js +1 -0
  32. package/dist/components/feedback/note/NeonNote.vue.es.js.map +1 -1
  33. package/dist/components/navigation/mobile-menu/NeonMobileMenu.cjs.js +2 -0
  34. package/dist/components/navigation/mobile-menu/NeonMobileMenu.cjs.js.map +1 -0
  35. package/dist/components/navigation/mobile-menu/NeonMobileMenu.es.js +44 -0
  36. package/dist/components/navigation/mobile-menu/NeonMobileMenu.es.js.map +1 -0
  37. package/dist/components/navigation/mobile-menu/NeonMobileMenu.vue.cjs.js +2 -0
  38. package/dist/components/navigation/mobile-menu/NeonMobileMenu.vue.cjs.js.map +1 -0
  39. package/dist/components/navigation/mobile-menu/NeonMobileMenu.vue.es.js +57 -0
  40. package/dist/components/navigation/mobile-menu/NeonMobileMenu.vue.es.js.map +1 -0
  41. package/dist/components/presentation/dropdown/NeonDropdown.cjs.js +1 -1
  42. package/dist/components/presentation/dropdown/NeonDropdown.cjs.js.map +1 -1
  43. package/dist/components/presentation/dropdown/NeonDropdown.es.js +44 -40
  44. package/dist/components/presentation/dropdown/NeonDropdown.es.js.map +1 -1
  45. package/dist/components/presentation/dropdown/NeonDropdown.vue.cjs.js +1 -1
  46. package/dist/components/presentation/dropdown/NeonDropdown.vue.cjs.js.map +1 -1
  47. package/dist/components/presentation/dropdown/NeonDropdown.vue.es.js +9 -9
  48. package/dist/components/presentation/dropdown/NeonDropdown.vue.es.js.map +1 -1
  49. package/dist/components/presentation/icon/NeonIcon.cjs.js.map +1 -1
  50. package/dist/components/presentation/icon/NeonIcon.es.js.map +1 -1
  51. package/dist/components/presentation/tabs/NeonTabs.cjs.js +1 -1
  52. package/dist/components/presentation/tabs/NeonTabs.cjs.js.map +1 -1
  53. package/dist/components/presentation/tabs/NeonTabs.es.js +13 -19
  54. package/dist/components/presentation/tabs/NeonTabs.es.js.map +1 -1
  55. package/dist/components/presentation/tabs/NeonTabs.vue.cjs.js +1 -1
  56. package/dist/components/presentation/tabs/NeonTabs.vue.cjs.js.map +1 -1
  57. package/dist/components/presentation/tabs/NeonTabs.vue.es.js +6 -6
  58. package/dist/components/presentation/tabs/NeonTabs.vue.es.js.map +1 -1
  59. package/dist/components/user-input/button/NeonButton.vue.cjs.js +1 -1
  60. package/dist/components/user-input/button/NeonButton.vue.cjs.js.map +1 -1
  61. package/dist/components/user-input/button/NeonButton.vue.es.js +12 -12
  62. package/dist/components/user-input/button/NeonButton.vue.es.js.map +1 -1
  63. package/dist/components/user-input/field/NeonField.vue.cjs.js +1 -1
  64. package/dist/components/user-input/field/NeonField.vue.cjs.js.map +1 -1
  65. package/dist/components/user-input/field/NeonField.vue.es.js +1 -1
  66. package/dist/components/user-input/field/NeonField.vue.es.js.map +1 -1
  67. package/dist/components/user-input/file/NeonFile.vue.cjs.js +1 -1
  68. package/dist/components/user-input/file/NeonFile.vue.cjs.js.map +1 -1
  69. package/dist/components/user-input/file/NeonFile.vue.es.js +1 -0
  70. package/dist/components/user-input/file/NeonFile.vue.es.js.map +1 -1
  71. package/dist/components/user-input/input/NeonInput.cjs.js +1 -1
  72. package/dist/components/user-input/input/NeonInput.cjs.js.map +1 -1
  73. package/dist/components/user-input/input/NeonInput.es.js +17 -17
  74. package/dist/components/user-input/input/NeonInput.es.js.map +1 -1
  75. package/dist/components/user-input/select/NeonSelect.cjs.js +1 -1
  76. package/dist/components/user-input/select/NeonSelect.cjs.js.map +1 -1
  77. package/dist/components/user-input/select/NeonSelect.es.js +75 -69
  78. package/dist/components/user-input/select/NeonSelect.es.js.map +1 -1
  79. package/dist/components/user-input/select/NeonSelect.vue.cjs.js +1 -1
  80. package/dist/components/user-input/select/NeonSelect.vue.cjs.js.map +1 -1
  81. package/dist/components/user-input/select/NeonSelect.vue.es.js +29 -21
  82. package/dist/components/user-input/select/NeonSelect.vue.es.js.map +1 -1
  83. package/dist/neon.cjs.js +1 -1
  84. package/dist/neon.es.js +96 -96
  85. package/dist/src/common/enums/NeonButtonStyle.d.ts +6 -1
  86. package/dist/src/common/enums/NeonDropdownStyle.d.ts +5 -2
  87. package/dist/src/common/enums/NeonMode.d.ts +3 -1
  88. package/dist/src/common/models/NeonMenuItem.d.ts +2 -2
  89. package/dist/src/common/utils/NeonModeUtils.d.ts +17 -21
  90. package/dist/src/components/feedback/linear-progress/NeonLinearProgress.d.ts +2 -6
  91. package/dist/src/components/navigation/dropdown-menu/NeonDropdownMenu.d.ts +5 -0
  92. package/dist/src/components/navigation/menu/NeonMenu.d.ts +9 -4
  93. package/dist/src/components/navigation/mobile-menu/NeonMobileMenu.d.ts +2630 -0
  94. package/dist/src/components/navigation/mobile-menu/NeonMobileMenu.vue.d.ts +2 -0
  95. package/dist/src/components/presentation/dropdown/NeonDropdown.d.ts +16 -16
  96. package/dist/src/components/presentation/icon/NeonIcon.d.ts +1 -1
  97. package/dist/src/components/presentation/tabs/NeonTabs.d.ts +2 -19
  98. package/dist/src/components/user-input/date-picker/NeonDatePicker.d.ts +21 -2
  99. package/dist/src/components/user-input/file/NeonFile.d.ts +8 -24
  100. package/dist/src/components/user-input/filter-list/NeonFilterList.d.ts +4 -12
  101. package/dist/src/components/user-input/input/NeonInput.d.ts +8 -2
  102. package/dist/src/components/user-input/search/NeonSearch.d.ts +77 -42
  103. package/dist/src/components/user-input/select/NeonSelect.d.ts +133 -203
  104. package/dist/src/neon.d.ts +1 -1
  105. package/package.json +1 -1
  106. package/src/sass/color-variables.scss +6 -4
  107. package/src/sass/components/_action-menu.scss +1 -1
  108. package/src/sass/components/_alert-container.scss +2 -2
  109. package/src/sass/components/_badge.scss +2 -2
  110. package/src/sass/components/_button.scss +25 -1
  111. package/src/sass/components/_card-list.scss +2 -2
  112. package/src/sass/components/_date-picker.scss +7 -7
  113. package/src/sass/components/_dropdown-menu.scss +2 -2
  114. package/src/sass/components/_expansion-panel.scss +2 -2
  115. package/src/sass/components/_filter-list.scss +6 -6
  116. package/src/sass/components/_icon.scss +1 -1
  117. package/src/sass/components/_image-carousel.scss +2 -1
  118. package/src/sass/components/_input.scss +11 -11
  119. package/src/sass/components/_label.scss +1 -1
  120. package/src/sass/components/_linear-progress.scss +1 -1
  121. package/src/sass/components/_list.scss +2 -2
  122. package/src/sass/components/_menu.scss +1 -1
  123. package/src/sass/components/_mobile-menu.scss +110 -0
  124. package/src/sass/components/_note.scss +1 -1
  125. package/src/sass/components/_notification-counter.scss +2 -2
  126. package/src/sass/components/_number.scss +2 -2
  127. package/src/sass/components/_range-slider.scss +1 -1
  128. package/src/sass/components/_search.scss +2 -2
  129. package/src/sass/components/_select.scss +16 -2
  130. package/src/sass/components/_slider.scss +1 -1
  131. package/src/sass/components/_stepper.scss +3 -3
  132. package/src/sass/components/_switch.scss +1 -1
  133. package/src/sass/components/_tabs.scss +46 -81
  134. package/src/sass/components/_toggle.scss +3 -3
  135. package/src/sass/components/_tooltip.scss +7 -7
  136. package/src/sass/components/_tree-menu.scss +6 -6
  137. package/src/sass/components/components.scss +1 -0
  138. package/src/sass/global/_base-html.scss +23 -15
  139. package/src/sass/global/_table.scss +4 -4
  140. package/src/sass/global/_typography.scss +2 -1
  141. package/src/sass/includes/_dependencies.scss +1 -0
  142. package/src/sass/includes/_outline.scss +1 -1
  143. package/src/sass/includes/_typography.scss +1 -1
  144. package/src/sass/palette.scss +6 -9
  145. package/src/sass/theme.scss +4 -0
  146. package/src/sass/variables.scss +63 -55
  147. package/dist/common/enums/NeonTabsStyle.cjs.js +0 -2
  148. package/dist/common/enums/NeonTabsStyle.cjs.js.map +0 -1
  149. package/dist/common/enums/NeonTabsStyle.es.js +0 -5
  150. package/dist/common/enums/NeonTabsStyle.es.js.map +0 -1
  151. package/dist/src/common/enums/NeonTabsStyle.d.ts +0 -9
@@ -1,17 +1,18 @@
1
- import { defineComponent as B, useAttrs as P, ref as r, computed as c, onMounted as L, onUnmounted as D, watch as K } from "vue";
2
- import { NeonSize as z } from "../../../common/enums/NeonSize.es.js";
3
- import { NeonFunctionalColor as C } from "../../../common/enums/NeonFunctionalColor.es.js";
4
- import E from "../../presentation/dropdown/NeonDropdown.vue.es.js";
5
- import T from "../../presentation/icon/NeonIcon.vue.es.js";
6
- import U from "../switch/NeonSwitch.vue.es.js";
7
- import { NeonDropdownPlacement as d } from "../../../common/enums/NeonDropdownPlacement.es.js";
8
- import { NeonScrollUtils as _ } from "../../../common/utils/NeonScrollUtils.es.js";
9
- const W = B({
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: E,
13
- NeonIcon: T,
14
- NeonSwitch: U
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: z.Medium },
62
+ size: { type: String, default: C.Medium },
62
63
  /**
63
64
  * The color of the select.
64
65
  */
65
- color: { type: String, default: C.Primary },
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: d.BottomLeft }
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(l, { emit: k }) {
80
- const w = P(), p = r(null), u = r(!1), g = r(l.placement), s = r(null), a = r(-1), n = c(() => {
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 l.options ? l.options : l.groupedOptions ? (e = l.groupedOptions) == null ? void 0 : e.flatMap((t) => t.options) : [];
87
+ return t.options ? t.options : t.groupedOptions ? (e = t.groupedOptions) == null ? void 0 : e.flatMap((l) => l.options) : [];
83
88
  }), S = () => {
84
- if (!l.groupedOptions)
89
+ if (!t.groupedOptions)
85
90
  switch (g.value) {
86
- case d.TopLeft:
87
- case d.TopRight:
88
- case d.LeftBottom:
89
- case d.RightBottom:
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 t, o;
95
- const e = (o = (t = p.value) == null ? void 0 : t.dropdownContent) == null ? void 0 : o.querySelector(
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(), _.scrollIntoView(e));
99
- }, f = (e, t) => {
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, t == null || t.preventDefault(), setTimeout(V));
102
- }, m = (e) => {
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 (l.multiple) {
106
- const t = [...l.modelValue], o = t.findIndex((y) => y === e.key);
107
- o >= 0 ? t.splice(o, 1) : t.push(e.key), m(t);
108
- } else l.modelValue !== e.key && (u.value = !1, m(e.key));
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 (u.value)
115
+ if (r.value)
111
116
  switch (e.code) {
112
117
  case "ArrowUp":
113
118
  case "ArrowDown":
114
119
  {
115
- const t = S() ? -1 : 1;
116
- e.code === "ArrowUp" ? f(-1 * t, e) : f(1 * t, e);
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 && (u.value = !1);
129
+ !e.ctrlKey && !e.metaKey && !e.altKey && (r.value = !1);
125
130
  break;
126
131
  }
127
- }, O = c(() => l.groupedOptions || [
132
+ }, b = u(() => t.groupedOptions || [
128
133
  {
129
134
  group: "",
130
- options: l.options || []
135
+ options: t.options || []
131
136
  }
132
- ]), b = c(() => {
137
+ ]), I = u(() => {
133
138
  const { ...e } = w;
134
139
  return e;
135
- }), A = c(() => {
136
- if (l.multiple && l.modelValue.length > 0) {
137
- if (l.multiselectPlaceholder)
138
- return l.multiselectPlaceholder;
139
- if (l.modelValue.length > 1)
140
- return `${l.modelValue.length} items selected`;
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((t) => t.key === l.modelValue[0]);
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 (l.modelValue) {
146
- const e = n.value.find((t) => t.key === l.modelValue);
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 l.placeholder;
151
- }), I = c(() => {
152
- if (l.modelValue) {
153
- const e = n.value.find((t) => t.key === l.modelValue);
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 l.placeholderIcon;
158
- }), N = (e) => {
159
- const t = Array.from(e.target.options).filter((i) => i.selected).map((i) => i.value), o = n.value.filter((i) => t.indexOf(i.key) >= 0), y = l.multiple ? o.map((i) => i.key) : o[0].key;
160
- m(y);
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((t) => t.key === e);
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
- }), D(() => {
173
+ }), K(() => {
169
174
  document.removeEventListener("keydown", v);
170
- }), K(
171
- () => u.value,
175
+ }), z(
176
+ () => r.value,
172
177
  (e) => {
173
- e && (s.value = n.value[0].key, a.value = 0, f(a.value));
178
+ e && (s.value = n.value[0].key, a.value = 0, m(a.value));
174
179
  }
175
180
  ), {
176
181
  dropdown: p,
177
- open: u,
182
+ open: r,
178
183
  highlightedKey: s,
179
184
  highlightedIndex: a,
180
185
  flattenedOptions: n,
181
- computedLabel: A,
182
- sanitizedAttributes: b,
183
- computedOptions: O,
184
- computedIcon: I,
186
+ computedLabel: O,
187
+ sanitizedAttributes: I,
188
+ computedOptions: b,
189
+ computedIcon: N,
190
+ labelIsPlaceholder: A,
185
191
  clickOption: h,
186
- nativeSelectChange: N,
192
+ nativeSelectChange: P,
187
193
  changeHighlighted: q,
188
194
  onPlacement: x
189
195
  };
190
196
  }
191
197
  });
192
198
  export {
193
- W as default
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 &lt;select&gt; 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":"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"}
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 &lt;select&gt; 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"],_=["data-index","disabled","multiple","selected","value"];function E(l,t,N,f,$,w){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"],color:l.color,disabled:l.disabled,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","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,_))),128))],16,g)])}const C=c(r,[["render",E]]);module.exports=C;
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}`, { 'neon-select--grouped': groupedOptions, 'neon-select--multiple': multiple }]\"\n :color=\"color\"\n :disabled=\"disabled\"\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
+ {"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 _ from "./NeonSelect.es.js";
2
- import { resolveComponent as m, openBlock as n, createElementBlock as s, createVNode as f, mergeProps as c, withCtx as g, createElementVNode as d, normalizeClass as b, toDisplayString as i, createCommentVNode as p, Fragment as t, renderList as a, withModifiers as k, renderSlot as $, createBlock as h } from "vue";
3
- import O from "../../../_virtual/_plugin-vue_export-helper.es.js";
4
- const w = { class: "neon-select__wrapper" }, z = { class: "no-style neon-select__options" }, C = { class: "neon-select__option-container" }, S = { class: "neon-select__option-label" }, B = ["id", "aria-selected", "onMouseover", "onClickCapture", "onEnter"], E = { class: "neon-select__option-container" }, N = { class: "neon-select__option-label" }, P = ["disabled", "multiple"], A = ["selected"], D = ["label"], M = ["data-index", "disabled", "multiple", "selected", "value"], I = ["data-index", "disabled", "multiple", "selected", "value"];
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", w, [
8
- f(V, c({
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: [[`neon-select--${e.color}`, { "neon-select--grouped": e.groupedOptions, "neon-select--multiple": e.multiple }], "neon-select"],
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: g(() => [
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: k((u) => !l.disabled && e.clickOption(l), ["stop", "prevent"]),
55
- onEnter: k((u) => !l.disabled && e.clickOption(l), ["stop", "prevent"])
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", E, [
58
- $(e.$slots, "option", { option: l }, () => [
59
- e.multiple ? (n(), h(y, {
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(), h(v, {
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", N, i(l.label), 1)
80
+ d("span", E, i(l.label), 1)
73
81
  ])
74
82
  ])
75
- ], 42, B))), 128))
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, M))), 128))
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, I))), 128))
114
- ], 16, P)
121
+ }, i(o.label), 9, M))), 128))
122
+ ], 16, N)
115
123
  ]);
116
124
  }
117
- const J = /* @__PURE__ */ O(_, [["render", L]]);
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}`, { 'neon-select--grouped': groupedOptions, 'neon-select--multiple': multiple }]\"\n :color=\"color\"\n :disabled=\"disabled\"\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
+ {"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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"}