@a-vision-software/vue-input-components 1.3.6 → 1.3.8
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 +1 -1
- package/src/components/Dropdown.vue +52 -28
- package/src/components/TextInput.vue +62 -70
- package/src/types/dropdown.ts +3 -0
package/package.json
CHANGED
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
'dropdown--has-error': error,
|
|
8
8
|
}" :style="{
|
|
9
9
|
'--dropdown-color': error ? 'var(--danger-color)' : color,
|
|
10
|
-
'--dropdown-hover-color': hoverColor,
|
|
11
|
-
'--dropdown-active-color': activeColor,
|
|
10
|
+
'--dropdown-hover-color': hoverColor ? hoverColor : 'var(--dropdown-color)',
|
|
11
|
+
'--dropdown-active-color': activeColor ? activeColor : 'var(--dropdown-color)',
|
|
12
12
|
'--dropdown-disabled-color': disabledColor,
|
|
13
13
|
'--dropdown-background-color': backgroundColor,
|
|
14
|
-
'--dropdown-border-radius':
|
|
14
|
+
'--dropdown-border-radius': borderRadius,
|
|
15
15
|
'--dropdown-padding': padding,
|
|
16
16
|
'--dropdown-max-height': maxHeight,
|
|
17
17
|
'--dropdown-width': width,
|
|
@@ -42,14 +42,17 @@
|
|
|
42
42
|
@click.stop="clearSelection" />
|
|
43
43
|
<font-awesome-icon icon="chevron-down" class="dropdown__arrow" :class="{ 'dropdown__arrow--open': isOpen }" />
|
|
44
44
|
</div>
|
|
45
|
-
<span v-if="required && !showSaved && !showChanged
|
|
45
|
+
<span v-if="required && !showSaved && !showChanged && !error"
|
|
46
|
+
class="status-indicator required-indicator">required</span>
|
|
46
47
|
<transition name="fade">
|
|
47
48
|
<span v-if="showSaved && !error" class="status-indicator saved-indicator">saved</span>
|
|
48
49
|
</transition>
|
|
49
50
|
<transition name="fade">
|
|
50
51
|
<span v-if="showChanged && !error" class="status-indicator changed-indicator">changed</span>
|
|
51
52
|
</transition>
|
|
52
|
-
<
|
|
53
|
+
<transition name="fade">
|
|
54
|
+
<span v-if="error" class="status-indicator error-indicator" :data-error="error">error</span>
|
|
55
|
+
</transition>
|
|
53
56
|
</div>
|
|
54
57
|
|
|
55
58
|
<div v-if="isOpen" class="dropdown__content">
|
|
@@ -82,8 +85,8 @@ const props = withDefaults(defineProps<DropdownProps>(), {
|
|
|
82
85
|
maxHeight: '300px',
|
|
83
86
|
width: '100%',
|
|
84
87
|
color: 'var(--text-primary)',
|
|
85
|
-
hoverColor: '
|
|
86
|
-
activeColor: '
|
|
88
|
+
hoverColor: '',
|
|
89
|
+
activeColor: '',
|
|
87
90
|
disabledColor: 'var(--text-disabled)',
|
|
88
91
|
backgroundColor: 'white',
|
|
89
92
|
borderRadius: '0.375rem',
|
|
@@ -264,6 +267,39 @@ onUnmounted(() => {
|
|
|
264
267
|
cursor: pointer;
|
|
265
268
|
user-select: none;
|
|
266
269
|
outline: none;
|
|
270
|
+
|
|
271
|
+
&.dropdown--has-error {
|
|
272
|
+
border-color: var(--danger-color);
|
|
273
|
+
|
|
274
|
+
.icon {
|
|
275
|
+
color: var(--danger-color);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
&:hover .error-indicator::after {
|
|
279
|
+
content: attr(data-error);
|
|
280
|
+
display: block;
|
|
281
|
+
position: absolute;
|
|
282
|
+
bottom: 0.25rem;
|
|
283
|
+
right: 0;
|
|
284
|
+
padding: 0.25rem 0.75rem;
|
|
285
|
+
color: white;
|
|
286
|
+
background-color: var(--danger-color);
|
|
287
|
+
line-height: var(--line-height);
|
|
288
|
+
min-width: 200px;
|
|
289
|
+
border-radius: 0.25rem;
|
|
290
|
+
z-index: 1;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.dropdown__selected:hover {
|
|
295
|
+
border-color: var(--dropdown-hover-color);
|
|
296
|
+
box-shadow: 0 0 2px var(--dropdown-hover-color) inset;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
.dropdown__selected:focus-within {
|
|
300
|
+
border-color: var(--dropdown-active-color);
|
|
301
|
+
box-shadow: 0 0 2px var(--dropdown-hover-color) inset;
|
|
302
|
+
}
|
|
267
303
|
}
|
|
268
304
|
|
|
269
305
|
.dropdown--disabled {
|
|
@@ -488,30 +524,18 @@ onUnmounted(() => {
|
|
|
488
524
|
color: var(--text-muted);
|
|
489
525
|
background-color: var(--dropdown-background-color);
|
|
490
526
|
padding: 0 0.25rem;
|
|
491
|
-
}
|
|
492
527
|
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
}
|
|
528
|
+
&.saved-indicator {
|
|
529
|
+
color: var(--success-color);
|
|
530
|
+
}
|
|
496
531
|
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
}
|
|
532
|
+
&.changed-indicator {
|
|
533
|
+
color: var(--warning-color);
|
|
534
|
+
}
|
|
500
535
|
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
left: 0;
|
|
505
|
-
right: 0;
|
|
506
|
-
padding: 0.25rem 0.75rem;
|
|
507
|
-
background-color: var(--danger-color);
|
|
508
|
-
color: white;
|
|
509
|
-
font-size: 0.75rem;
|
|
510
|
-
border-radius: 0 0 0.5rem 0.5rem;
|
|
511
|
-
transform: translateY(100%);
|
|
512
|
-
transition: transform 0.2s ease;
|
|
513
|
-
line-height: var(--line-height);
|
|
514
|
-
z-index: 1;
|
|
536
|
+
&.error-indicator {
|
|
537
|
+
color: var(--danger-color);
|
|
538
|
+
}
|
|
515
539
|
}
|
|
516
540
|
|
|
517
541
|
.fade-enter-active,
|
|
@@ -30,15 +30,17 @@
|
|
|
30
30
|
@input="handleInput" @focus="handleFocus" @blur="handleBlur" @keydown="handleKeydown" ref="inputRef" />
|
|
31
31
|
<textarea v-else :id="id" :value="modelValue" :placeholder="placeholder" :required="required" :disabled="disabled"
|
|
32
32
|
class="input" @input="handleInput" ref="inputRef"></textarea>
|
|
33
|
-
<span v-if="required && !showSaved && !showChanged
|
|
33
|
+
<span v-if="required && !showSaved && !showChanged && !error"
|
|
34
|
+
class="status-indicator required-indicator">required</span>
|
|
34
35
|
<transition name="fade">
|
|
35
36
|
<span v-if="showSaved && !error" class="status-indicator saved-indicator">saved</span>
|
|
36
37
|
</transition>
|
|
37
38
|
<transition name="fade">
|
|
38
39
|
<span v-if="showChanged && !error" class="status-indicator changed-indicator">changed</span>
|
|
39
40
|
</transition>
|
|
40
|
-
<
|
|
41
|
-
|
|
41
|
+
<transition name="fade">
|
|
42
|
+
<span v-if="error" class="status-indicator error-indicator" :data-error="error">error</span>
|
|
43
|
+
</transition>
|
|
42
44
|
</div>
|
|
43
45
|
</div>
|
|
44
46
|
</template>
|
|
@@ -264,24 +266,42 @@ defineExpose({
|
|
|
264
266
|
width: 100%;
|
|
265
267
|
min-height: 2rem;
|
|
266
268
|
background: var(--input-bg-color);
|
|
267
|
-
}
|
|
268
269
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
}
|
|
270
|
+
&.has-icon {
|
|
271
|
+
grid-template-columns: auto 1fr;
|
|
272
|
+
}
|
|
272
273
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
}
|
|
274
|
+
&:hover {
|
|
275
|
+
border-color: var(--primary-color);
|
|
276
|
+
box-shadow: 0 0 2px var(--primary-color) inset;
|
|
277
|
+
}
|
|
277
278
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
279
|
+
&:focus-within {
|
|
280
|
+
border-color: var(--primary-color);
|
|
281
|
+
box-shadow: 0 0 2px var(--primary-color) inset;
|
|
282
|
+
}
|
|
282
283
|
|
|
283
|
-
|
|
284
|
-
color: var(--danger-color);
|
|
284
|
+
&.has-error {
|
|
285
|
+
border-color: var(--danger-color);
|
|
286
|
+
|
|
287
|
+
.icon {
|
|
288
|
+
color: var(--danger-color);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
&:hover .error-indicator::after {
|
|
292
|
+
content: attr(data-error);
|
|
293
|
+
display: block;
|
|
294
|
+
position: absolute;
|
|
295
|
+
bottom: 0.25rem;
|
|
296
|
+
right: 0;
|
|
297
|
+
padding: 0.25rem 0.75rem;
|
|
298
|
+
color: white;
|
|
299
|
+
background-color: var(--danger-color);
|
|
300
|
+
line-height: var(--line-height);
|
|
301
|
+
min-width: 200px;
|
|
302
|
+
border-radius: 0.25rem;
|
|
303
|
+
z-index: 1;
|
|
304
|
+
}
|
|
285
305
|
}
|
|
286
306
|
}
|
|
287
307
|
|
|
@@ -292,15 +312,15 @@ defineExpose({
|
|
|
292
312
|
border-right: 1px solid rgb(from var(--border-color) r g b / 20%);
|
|
293
313
|
cursor: pointer;
|
|
294
314
|
overflow: hidden;
|
|
295
|
-
}
|
|
296
315
|
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
}
|
|
316
|
+
&:hover {
|
|
317
|
+
background-color: var(--input-bg-hover);
|
|
318
|
+
}
|
|
300
319
|
|
|
301
|
-
.icon {
|
|
302
|
-
|
|
303
|
-
|
|
320
|
+
.icon {
|
|
321
|
+
color: var(--text-muted);
|
|
322
|
+
font-size: 1rem;
|
|
323
|
+
}
|
|
304
324
|
}
|
|
305
325
|
|
|
306
326
|
.input {
|
|
@@ -313,52 +333,20 @@ defineExpose({
|
|
|
313
333
|
background: transparent;
|
|
314
334
|
width: 100%;
|
|
315
335
|
line-height: var(--line-height);
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
.input::placeholder {
|
|
319
|
-
color: var(--text-muted);
|
|
320
|
-
}
|
|
321
336
|
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
.message {
|
|
328
|
-
position: absolute;
|
|
329
|
-
bottom: -1.5rem;
|
|
330
|
-
left: 0;
|
|
331
|
-
font-size: 0.75rem;
|
|
332
|
-
white-space: nowrap;
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
.error-message {
|
|
336
|
-
position: absolute;
|
|
337
|
-
bottom: 0;
|
|
338
|
-
left: 0;
|
|
339
|
-
right: 0;
|
|
340
|
-
padding: 0.25rem 0.75rem;
|
|
341
|
-
background-color: var(--danger-color);
|
|
342
|
-
color: white;
|
|
343
|
-
font-size: 0.75rem;
|
|
344
|
-
border-radius: 0 0 0.5rem 0.5rem;
|
|
345
|
-
transform: translateY(100%);
|
|
346
|
-
transition: transform 0.2s ease;
|
|
347
|
-
line-height: var(--line-height);
|
|
348
|
-
z-index: 1;
|
|
349
|
-
}
|
|
337
|
+
&::placeholder {
|
|
338
|
+
color: var(--text-muted);
|
|
339
|
+
}
|
|
350
340
|
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
color: var(--success-color);
|
|
356
|
-
font-size: 0.75rem;
|
|
357
|
-
line-height: var(--line-height);
|
|
341
|
+
&:disabled {
|
|
342
|
+
background-color: var(--input-bg-disabled);
|
|
343
|
+
cursor: not-allowed;
|
|
344
|
+
}
|
|
358
345
|
}
|
|
359
346
|
|
|
360
347
|
.status-indicator {
|
|
361
348
|
position: absolute;
|
|
349
|
+
display: block;
|
|
362
350
|
top: -1px;
|
|
363
351
|
line-height: 1px;
|
|
364
352
|
right: 0.5rem;
|
|
@@ -366,14 +354,18 @@ defineExpose({
|
|
|
366
354
|
color: var(--text-muted);
|
|
367
355
|
background-color: var(--input-bg-color);
|
|
368
356
|
padding: 0 0.25rem;
|
|
369
|
-
}
|
|
370
357
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
}
|
|
358
|
+
&.saved-indicator {
|
|
359
|
+
color: var(--success-color);
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
&.changed-indicator {
|
|
363
|
+
color: var(--warning-color);
|
|
364
|
+
}
|
|
374
365
|
|
|
375
|
-
|
|
376
|
-
|
|
366
|
+
&.error-indicator {
|
|
367
|
+
color: var(--danger-color);
|
|
368
|
+
}
|
|
377
369
|
}
|
|
378
370
|
|
|
379
371
|
.fade-enter-active,
|