sprintify-ui 0.0.109 → 0.0.110

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.
@@ -42,9 +42,9 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
42
42
  type: PropType<string | string[] | Record<string, boolean>>;
43
43
  };
44
44
  }>>, {
45
+ label: string;
45
46
  required: boolean;
46
47
  name: string;
47
- label: string;
48
48
  errorType: "default" | "alert";
49
49
  labelClass: string | string[] | Record<string, boolean>;
50
50
  }>, {
@@ -81,9 +81,9 @@ declare const _default: import("vue").DefineComponent<{
81
81
  }>> & {
82
82
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
83
83
  }, {
84
+ label: string;
84
85
  required: boolean;
85
86
  name: string;
86
- label: string;
87
87
  defaultValue: string | number | boolean;
88
88
  modelValue: {
89
89
  [locale: string]: string | number | boolean;
@@ -48,8 +48,8 @@ declare const _default: import("vue").DefineComponent<{
48
48
  type: PropType<string | null>;
49
49
  };
50
50
  }>>, {
51
- caption: string | null;
52
51
  label: string | null;
52
+ caption: string | null;
53
53
  secondaryValue: string | null;
54
54
  trend: "up" | "down" | null;
55
55
  }>;
@@ -152,8 +152,8 @@ declare const _default: import("vue").DefineComponent<{
152
152
  default: () => {};
153
153
  };
154
154
  }>>, {
155
- meta: Record<string, any> | unknown[];
156
155
  label: string;
156
+ meta: Record<string, any> | unknown[];
157
157
  toggle: boolean;
158
158
  width: number;
159
159
  field: string;
@@ -163,9 +163,12 @@ export interface NotificationsConfig {
163
163
  footerLabel?: string;
164
164
  footerTo?: RouteLocationRaw;
165
165
  }
166
+ export interface SelectConfigurationOption {
167
+ value: OptionValue;
168
+ label: string;
169
+ [key: string]: any;
170
+ }
166
171
  export interface SelectConfiguration {
167
- options: Option[];
168
- valueKey: string;
169
- labelKey: string;
170
- onChange: (value: OptionValue) => void;
172
+ options: SelectConfigurationOption[];
173
+ onChange: (option: SelectConfigurationOption | null) => void;
171
174
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sprintify-ui",
3
- "version": "0.0.109",
3
+ "version": "0.0.110",
4
4
  "scripts": {
5
5
  "build": "rimraf dist && vue-tsc && vite build",
6
6
  "build-fast": "rimraf dist && vite build",
@@ -196,7 +196,7 @@ export const WithSelect = (args) => {
196
196
  labelKey: 'label',
197
197
  valueKey: 'value',
198
198
  onChange: (option) => {
199
- selected.value = option;
199
+ selected.value = option.value;
200
200
  },
201
201
  };
202
202
 
@@ -15,10 +15,10 @@
15
15
  >
16
16
  <option
17
17
  v-for="option in select.options"
18
- :key="option[select.valueKey]"
19
- :value="option[select.valueKey]"
18
+ :key="option.value + ''"
19
+ :value="option.value"
20
20
  >
21
- {{ option[select.labelKey] }}
21
+ {{ option.label }}
22
22
  </option>
23
23
  </select>
24
24
  <div class="relative grow">
@@ -120,7 +120,7 @@
120
120
  <script lang="ts" setup>
121
121
  import { get } from 'lodash';
122
122
  import { PropType, Ref, ComputedRef } from 'vue';
123
- import { NormalizedOption, Option } from '@/types';
123
+ import { NormalizedOption, Option, OptionValue } from '@/types';
124
124
  import { useHasOptions } from '@/composables/hasOptions';
125
125
  import { useField } from '@/composables/field';
126
126
  import { BaseIcon } from './index';
@@ -420,27 +420,34 @@ function highlight() {
420
420
  inputElement.value?.select();
421
421
  }
422
422
 
423
- const selection = ref(null) as Ref<string | null>;
423
+ const selection = ref(null) as Ref<OptionValue>;
424
424
 
425
425
  watch(
426
426
  () => props.select,
427
427
  (select) => {
428
428
  if (select && select.options.length > 0) {
429
- selection.value = select.options[0][select.valueKey];
429
+ selection.value = select.options[0].value;
430
430
  }
431
431
  },
432
432
  { immediate: true }
433
433
  );
434
434
 
435
435
  function onSelectChange(event: Event) {
436
- focus();
437
- open();
438
- highlight();
439
436
  const value = get(event, 'target.value', null);
437
+ const option = props.select?.options.find((option) => option.value == value);
438
+
440
439
  if (props.select && props.select.onChange) {
441
- props.select.onChange(value);
440
+ props.select.onChange(option ?? null);
442
441
  }
442
+
443
443
  emit('select', value);
444
+
445
+ // Let the emitted select event propagate before opening the dropdown
446
+ nextTick(() => {
447
+ focus();
448
+ open();
449
+ highlight();
450
+ });
444
451
  }
445
452
 
446
453
  const slotProps = {
@@ -180,7 +180,7 @@ export const WithSelect = (args) => {
180
180
  labelKey: 'label',
181
181
  valueKey: 'value',
182
182
  onChange: (option) => {
183
- selected.value = option;
183
+ selected.value = option.value;
184
184
  },
185
185
  };
186
186
 
@@ -179,7 +179,7 @@ export const WithSelect = (args) => {
179
179
  labelKey: 'label',
180
180
  valueKey: 'value',
181
181
  onChange: (option) => {
182
- selected.value = option;
182
+ selected.value = option.value;
183
183
  },
184
184
  };
185
185
 
@@ -198,9 +198,13 @@ export interface NotificationsConfig {
198
198
  footerTo?: RouteLocationRaw;
199
199
  }
200
200
 
201
+ export interface SelectConfigurationOption {
202
+ value: OptionValue;
203
+ label: string;
204
+ [key: string]: any;
205
+ }
206
+
201
207
  export interface SelectConfiguration {
202
- options: Option[];
203
- valueKey: string;
204
- labelKey: string;
205
- onChange: (value: OptionValue) => void;
208
+ options: SelectConfigurationOption[];
209
+ onChange: (option: SelectConfigurationOption | null) => void;
206
210
  }