edvoyui-component-library-test-flight 0.0.161 → 0.0.163

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "edvoyui-component-library-test-flight",
3
3
  "private": false,
4
- "version": "0.0.161",
4
+ "version": "0.0.163",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist/",
@@ -18,17 +18,27 @@
18
18
  <div
19
19
  class="flex flex-col max-w-screen-sm gap-4 p-6 mx-auto mb-10 border rounded-xl"
20
20
  >
21
- <pre>{{ inputNumber }}</pre>
21
+ <pre>{{ inputNumber }} ==> {{ inputNumberPoints }}</pre>
22
22
  <EUINumberInput
23
23
  v-model.trim="inputNumber"
24
24
  name="addnote"
25
25
  id="addnote"
26
26
  label="Add Note"
27
27
  placeholder="Note here..."
28
- :min="1"
29
- :max="10"
28
+ :min="0"
29
+ :max="100"
30
30
  :step="1"
31
31
  />
32
+ <EUINumberInput
33
+ v-model.trim="inputNumberPoints"
34
+ name="addnote"
35
+ id="addnote"
36
+ label="Add Note"
37
+ placeholder="Note here..."
38
+ :min="0"
39
+ :max="100"
40
+ :step="0.5"
41
+ />
32
42
  </div>
33
43
 
34
44
  <div class="max-w-xs py-4 mx-auto border border-red-500 rounded-xl">
@@ -1626,6 +1636,7 @@ const datepicker = ref(new Date());
1626
1636
  const loading = ref(false);
1627
1637
 
1628
1638
  const inputNumber = ref();
1639
+ const inputNumberPoints = ref()
1629
1640
 
1630
1641
  const form = reactive({
1631
1642
  input: "Lorem ipsum dolor sit",
@@ -53,7 +53,7 @@
53
53
  :value="modelValue"
54
54
  :min="min"
55
55
  :max="max"
56
- :step="step"
56
+ :step="step || 1"
57
57
  :placeholder="placeholder"
58
58
  :name="name"
59
59
  :class="[
@@ -71,13 +71,12 @@
71
71
  :disabled="disabled"
72
72
  :readonly="readonly"
73
73
  autocomplete="off"
74
- pattern="^[0-9]{1,3}$"
75
74
  inputmode="numeric"
76
- @keypress="
77
- (e) => {
78
- if (!/[0-9]/.test(e.key)) e.preventDefault();
79
- }
80
- "
75
+ pattern="^([0-9]{1,5}(\.[0-9]{1,2})?|100000(\.0{1,2})?)$"
76
+ @keypress="handleKeyPress"
77
+ @wheel.prevent=""
78
+ @keydown.up.prevent=""
79
+ @keydown.down.prevent=""
81
80
  @input="emitInput"
82
81
  @focus="hasFocus = true"
83
82
  @blur="hasFocus = false"
@@ -179,24 +178,42 @@ const input = ref<HTMLInputElement>();
179
178
  const id = "id"; //generateUID();
180
179
 
181
180
  const emit = defineEmits(["update:modelValue"]);
181
+
182
182
  const emitInput = (event: Event) => {
183
183
  const inputEl = event.target as HTMLInputElement;
184
- let newValue = Number(inputEl.value);
184
+ const newValue = parseFloat(inputEl.value);
185
185
 
186
- // Handle non-numeric or empty input
187
- if (isNaN(newValue)) {
188
- newValue = 0;
186
+ // Only emit valid numbers within range
187
+ if (!isNaN(newValue)) {
188
+ if (newValue >= props.min && newValue <= props.max) {
189
+ emit("update:modelValue", newValue);
190
+ } else if (newValue > props.max) {
191
+ emit("update:modelValue", props.max);
192
+ inputEl.value = String(props.max);
193
+ } else if (newValue < props.min) {
194
+ emit("update:modelValue", props.min);
195
+ inputEl.value = String(props.min);
196
+ }
197
+ } else {
198
+ emit("update:modelValue", props.min);
199
+ inputEl.value = String(props.min);
189
200
  }
201
+ };
190
202
 
191
- // Clamp the value between 0 and 100
192
- if (newValue < props.min) newValue = props.min;
193
- if (newValue > props.max) newValue = props.max;
194
203
 
195
- // Update both input display and v-model
196
- inputEl.value = String(newValue);
197
- emit("update:modelValue", newValue);
204
+ const handleKeyPress = (e: KeyboardEvent) => {
205
+ const inputEl = e.target as HTMLInputElement | null;
206
+ if (!inputEl) return; // Safety check
207
+ const allowDecimal = props.step < 1;
208
+ // Allow digits
209
+ if (/[0-9]/.test(e.key)) return;
210
+ // Allow one '.' only if step < 1
211
+ if (allowDecimal && e.key === '.' && !inputEl.value.includes('.')) return;
212
+ // Otherwise block input
213
+ e.preventDefault();
198
214
  };
199
215
 
216
+
200
217
  const inputValue = computed(() => {
201
218
  return props.modelValue === 0 ? true : !!props.modelValue;
202
219
  });
@@ -1 +0,0 @@
1
- {"version":3,"file":"EUINumberInput.vue.d.ts","sourceRoot":"","sources":["../src/components/input/EUINumberInput.vue"],"names":[],"mappings":"AACA,cAAc,4GAA4G,CAAC;AAC3H,OAAO,0HAA0H,CAAC;;AAElI,wBAA0F"}