srcdev-nuxt-forms 6.1.0 → 6.1.1
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/app/components/forms/form-fieldset/FormFieldset.vue +19 -10
- package/app/components/forms/input-button/InputButtonCore.vue +25 -28
- package/app/components/forms/input-checkbox/MultipleCheckboxes.vue +48 -27
- package/app/components/forms/input-checkbox/SingleCheckbox.vue +52 -33
- package/app/components/forms/input-checkbox-radio/InputCheckboxRadioButton.vue +40 -22
- package/app/components/forms/input-checkbox-radio/InputCheckboxRadioWithLabel.vue +33 -17
- package/app/components/forms/input-label/InputLabel.vue +10 -12
- package/app/components/forms/input-number/InputNumberCore.vue +26 -22
- package/app/components/forms/input-number/variants/InputNumberDefault.vue +50 -27
- package/app/components/forms/input-radio/MultipleRadiobuttons.vue +31 -25
- package/app/components/forms/input-range/InputRangeCore.vue +30 -28
- package/app/components/forms/input-range/variants/InputRangeDefault.vue +45 -28
- package/app/components/forms/input-range-fancy/InputRangeFancyWithLabel.vue +31 -18
- package/app/components/forms/input-select/variants/InputSelectWithLabel.vue +48 -37
- package/app/components/forms/input-text/InputTextCore.vue +4 -6
- package/app/components/forms/input-text/variants/InputTextAsNumberWithLabel.vue +42 -33
- package/app/components/forms/input-text/variants/InputTextWithLabel.vue +51 -42
- package/app/components/forms/input-textarea/InputTextareaCore.vue +29 -24
- package/app/components/forms/input-textarea/variants/InputTextareaWithLabel.vue +41 -31
- package/app/components/forms/toggle-switch/ToggleSwitchCore.vue +43 -25
- package/app/components/forms/toggle-switch/ToggleSwitchCoreOld.vue +36 -22
- package/app/components/forms/toggle-switch/variants/ToggleSwitchWithLabel.vue +42 -25
- package/app/components/forms/toggle-switch/variants/ToggleSwitchWithLabelInline.vue +30 -26
- package/package.json +1 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<label :for="id" class="input-label" :class="[elementClasses, inputVariant]">
|
|
3
|
-
<slot v-if="
|
|
4
|
-
<slot v-if="
|
|
3
|
+
<slot v-if="slots.htmlLabel" name="htmlLabel"></slot>
|
|
4
|
+
<slot v-if="slots.textLabel" name="textLabel"></slot>
|
|
5
5
|
</label>
|
|
6
6
|
</template>
|
|
7
7
|
|
|
8
8
|
<script setup lang="ts">
|
|
9
|
-
import propValidators from
|
|
9
|
+
import propValidators from "../c12/prop-validators"
|
|
10
10
|
|
|
11
11
|
const props = defineProps({
|
|
12
12
|
id: {
|
|
@@ -27,25 +27,23 @@ const props = defineProps({
|
|
|
27
27
|
},
|
|
28
28
|
theme: {
|
|
29
29
|
type: String as PropType<string>,
|
|
30
|
-
default:
|
|
30
|
+
default: "primary",
|
|
31
31
|
validator(value: string) {
|
|
32
|
-
return propValidators.theme.includes(value)
|
|
32
|
+
return propValidators.theme.includes(value)
|
|
33
33
|
},
|
|
34
34
|
},
|
|
35
35
|
inputVariant: {
|
|
36
36
|
type: String as PropType<string>,
|
|
37
|
-
default:
|
|
37
|
+
default: "default",
|
|
38
38
|
validator(value: string) {
|
|
39
|
-
return propValidators.inputVariant.includes(value)
|
|
39
|
+
return propValidators.inputVariant.includes(value)
|
|
40
40
|
},
|
|
41
41
|
},
|
|
42
|
-
})
|
|
42
|
+
})
|
|
43
43
|
|
|
44
|
-
const slots = useSlots()
|
|
45
|
-
const hasHtmlLabel = computed(() => slots.htmlLabel !== undefined);
|
|
46
|
-
const hasTextLabel = computed(() => slots.textLabel !== undefined);
|
|
44
|
+
const slots = useSlots()
|
|
47
45
|
|
|
48
|
-
const { elementClasses } = useStyleClassPassthrough(props.styleClassPassthrough)
|
|
46
|
+
const { elementClasses } = useStyleClassPassthrough(props.styleClassPassthrough)
|
|
49
47
|
</script>
|
|
50
48
|
|
|
51
49
|
<style lang="css">
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="input-number-wrapper" :data-theme="formTheme" :data-size="size">
|
|
3
|
-
<div v-if="
|
|
3
|
+
<div v-if="slots.left" class="slot left">
|
|
4
4
|
<slot name="left"></slot>
|
|
5
5
|
</div>
|
|
6
6
|
|
|
@@ -13,21 +13,27 @@
|
|
|
13
13
|
:min
|
|
14
14
|
:max
|
|
15
15
|
:step
|
|
16
|
-
:class="[
|
|
16
|
+
:class="[
|
|
17
|
+
elementClasses,
|
|
18
|
+
'input-number-core',
|
|
19
|
+
`input-number--${theme}`,
|
|
20
|
+
`input-number--${size}`,
|
|
21
|
+
`input-number--${weight}`,
|
|
22
|
+
]"
|
|
17
23
|
v-model="modelValue"
|
|
18
24
|
ref="inputField"
|
|
19
25
|
inputmode="numeric"
|
|
20
26
|
pattern="[0-9]+"
|
|
21
27
|
/>
|
|
22
28
|
</div>
|
|
23
|
-
<div v-if="
|
|
29
|
+
<div v-if="slots.right" class="slot right">
|
|
24
30
|
<slot name="right"></slot>
|
|
25
31
|
</div>
|
|
26
32
|
</div>
|
|
27
33
|
</template>
|
|
28
34
|
|
|
29
35
|
<script setup lang="ts">
|
|
30
|
-
import propValidators from
|
|
36
|
+
import propValidators from "../c12/prop-validators"
|
|
31
37
|
|
|
32
38
|
const props = defineProps({
|
|
33
39
|
id: {
|
|
@@ -52,7 +58,7 @@ const props = defineProps({
|
|
|
52
58
|
},
|
|
53
59
|
placeholder: {
|
|
54
60
|
type: String,
|
|
55
|
-
default:
|
|
61
|
+
default: "",
|
|
56
62
|
},
|
|
57
63
|
required: {
|
|
58
64
|
type: Boolean,
|
|
@@ -60,23 +66,23 @@ const props = defineProps({
|
|
|
60
66
|
},
|
|
61
67
|
theme: {
|
|
62
68
|
type: String as PropType<string>,
|
|
63
|
-
default:
|
|
69
|
+
default: "primary",
|
|
64
70
|
validator(value: string) {
|
|
65
|
-
return propValidators.theme.includes(value)
|
|
71
|
+
return propValidators.theme.includes(value)
|
|
66
72
|
},
|
|
67
73
|
},
|
|
68
74
|
size: {
|
|
69
75
|
type: String as PropType<string>,
|
|
70
|
-
default:
|
|
76
|
+
default: "medium",
|
|
71
77
|
validator(value: string) {
|
|
72
|
-
return propValidators.size.includes(value)
|
|
78
|
+
return propValidators.size.includes(value)
|
|
73
79
|
},
|
|
74
80
|
},
|
|
75
81
|
weight: {
|
|
76
82
|
type: String as PropType<string>,
|
|
77
|
-
default:
|
|
83
|
+
default: "wght-400",
|
|
78
84
|
validator(value: string) {
|
|
79
|
-
return propValidators.weight.includes(value)
|
|
85
|
+
return propValidators.weight.includes(value)
|
|
80
86
|
},
|
|
81
87
|
},
|
|
82
88
|
fieldHasError: {
|
|
@@ -87,20 +93,18 @@ const props = defineProps({
|
|
|
87
93
|
type: Array as PropType<string[]>,
|
|
88
94
|
default: () => [],
|
|
89
95
|
},
|
|
90
|
-
})
|
|
96
|
+
})
|
|
91
97
|
|
|
92
|
-
const slots = useSlots()
|
|
93
|
-
const hasLeftContent = computed(() => slots.left !== undefined);
|
|
94
|
-
const hasRightContent = computed(() => slots.right !== undefined);
|
|
98
|
+
const slots = useSlots()
|
|
95
99
|
|
|
96
100
|
const formTheme = computed(() => {
|
|
97
|
-
return props.fieldHasError ?
|
|
98
|
-
})
|
|
101
|
+
return props.fieldHasError ? "error" : props.theme
|
|
102
|
+
})
|
|
99
103
|
|
|
100
|
-
const modelValue = defineModel<number | readonly number[]>()
|
|
104
|
+
const modelValue = defineModel<number | readonly number[]>()
|
|
101
105
|
|
|
102
|
-
const { elementClasses } = useStyleClassPassthrough(props.styleClassPassthrough)
|
|
103
|
-
const minLength = computed(() => `${props.max.toString().length + 1}em`)
|
|
106
|
+
const { elementClasses } = useStyleClassPassthrough(props.styleClassPassthrough)
|
|
107
|
+
const minLength = computed(() => `${props.max.toString().length + 1}em`)
|
|
104
108
|
</script>
|
|
105
109
|
|
|
106
110
|
<style lang="css">
|
|
@@ -196,8 +200,8 @@ const minLength = computed(() => `${props.max.toString().length + 1}em`);
|
|
|
196
200
|
}
|
|
197
201
|
}
|
|
198
202
|
|
|
199
|
-
input[type=
|
|
200
|
-
input[type=
|
|
203
|
+
input[type="number"]::-webkit-inner-spin-button,
|
|
204
|
+
input[type="number"]::-webkit-outer-spin-button {
|
|
201
205
|
-webkit-appearance: none;
|
|
202
206
|
margin: 0;
|
|
203
207
|
}
|
|
@@ -1,15 +1,41 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
3
|
-
|
|
2
|
+
<div
|
|
3
|
+
class="input-number-with-label"
|
|
4
|
+
:data-theme="formTheme"
|
|
5
|
+
:data-size="size"
|
|
6
|
+
:class="[elementClasses, `theme-${theme}`, { error: fieldHasError }]"
|
|
7
|
+
>
|
|
8
|
+
<InputLabel
|
|
9
|
+
:for="id"
|
|
10
|
+
:id
|
|
11
|
+
:theme
|
|
12
|
+
:name
|
|
13
|
+
input-variant="normal"
|
|
14
|
+
:field-has-error
|
|
15
|
+
:style-class-passthrough="['input-number-label', 'body-normal-bold']"
|
|
16
|
+
>
|
|
4
17
|
<template #textLabel>{{ label }}</template>
|
|
5
18
|
</InputLabel>
|
|
6
19
|
|
|
7
|
-
<template v-if="
|
|
20
|
+
<template v-if="slots.description">
|
|
8
21
|
<slot name="description"></slot>
|
|
9
22
|
</template>
|
|
10
23
|
|
|
11
|
-
<InputNumberCore
|
|
12
|
-
|
|
24
|
+
<InputNumberCore
|
|
25
|
+
v-model="modelValue"
|
|
26
|
+
:id
|
|
27
|
+
:name
|
|
28
|
+
:min
|
|
29
|
+
:max
|
|
30
|
+
:step
|
|
31
|
+
:theme
|
|
32
|
+
:required
|
|
33
|
+
:size
|
|
34
|
+
:weight
|
|
35
|
+
:fieldHasError
|
|
36
|
+
:styleClassPassthrough
|
|
37
|
+
>
|
|
38
|
+
<template v-if="slots.left" #left>
|
|
13
39
|
<InputButtonCore
|
|
14
40
|
type="button"
|
|
15
41
|
@click.stop.prevent="updateValue(-step, Number(modelValue) > min)"
|
|
@@ -24,7 +50,7 @@
|
|
|
24
50
|
</template>
|
|
25
51
|
</InputButtonCore>
|
|
26
52
|
</template>
|
|
27
|
-
<template v-if="
|
|
53
|
+
<template v-if="slots.right" #right>
|
|
28
54
|
<InputButtonCore
|
|
29
55
|
type="button"
|
|
30
56
|
@click.stop.prevent="updateValue(step, Number(modelValue) < max)"
|
|
@@ -45,7 +71,7 @@
|
|
|
45
71
|
</template>
|
|
46
72
|
|
|
47
73
|
<script setup lang="ts">
|
|
48
|
-
import propValidators from
|
|
74
|
+
import propValidators from "../../c12/prop-validators"
|
|
49
75
|
|
|
50
76
|
const props = defineProps({
|
|
51
77
|
name: {
|
|
@@ -70,7 +96,7 @@ const props = defineProps({
|
|
|
70
96
|
},
|
|
71
97
|
placeholder: {
|
|
72
98
|
type: String,
|
|
73
|
-
default:
|
|
99
|
+
default: "",
|
|
74
100
|
},
|
|
75
101
|
errorMessage: {
|
|
76
102
|
type: [Object, String],
|
|
@@ -86,51 +112,48 @@ const props = defineProps({
|
|
|
86
112
|
},
|
|
87
113
|
theme: {
|
|
88
114
|
type: String as PropType<string>,
|
|
89
|
-
default:
|
|
115
|
+
default: "primary",
|
|
90
116
|
validator(value: string) {
|
|
91
|
-
return propValidators.theme.includes(value)
|
|
117
|
+
return propValidators.theme.includes(value)
|
|
92
118
|
},
|
|
93
119
|
},
|
|
94
120
|
size: {
|
|
95
121
|
type: String as PropType<string>,
|
|
96
|
-
default:
|
|
122
|
+
default: "medium",
|
|
97
123
|
validator(value: string) {
|
|
98
|
-
return propValidators.size.includes(value)
|
|
124
|
+
return propValidators.size.includes(value)
|
|
99
125
|
},
|
|
100
126
|
},
|
|
101
127
|
weight: {
|
|
102
128
|
type: String as PropType<string>,
|
|
103
|
-
default:
|
|
129
|
+
default: "wght-400",
|
|
104
130
|
validator(value: string) {
|
|
105
|
-
return propValidators.weight.includes(value)
|
|
131
|
+
return propValidators.weight.includes(value)
|
|
106
132
|
},
|
|
107
133
|
},
|
|
108
134
|
styleClassPassthrough: {
|
|
109
135
|
type: Array as PropType<string[]>,
|
|
110
136
|
default: () => [],
|
|
111
137
|
},
|
|
112
|
-
})
|
|
138
|
+
})
|
|
113
139
|
|
|
114
|
-
const slots = useSlots()
|
|
115
|
-
const
|
|
116
|
-
const hasLeftContent = computed(() => slots.left !== undefined);
|
|
117
|
-
const hasRightContent = computed(() => slots.right !== undefined);
|
|
118
|
-
const { elementClasses, updateElementClasses } = useStyleClassPassthrough(props.styleClassPassthrough);
|
|
140
|
+
const slots = useSlots()
|
|
141
|
+
const { elementClasses, updateElementClasses } = useStyleClassPassthrough(props.styleClassPassthrough)
|
|
119
142
|
|
|
120
|
-
const id = useId()
|
|
143
|
+
const id = useId()
|
|
121
144
|
const formTheme = computed(() => {
|
|
122
|
-
return props.fieldHasError ?
|
|
123
|
-
})
|
|
145
|
+
return props.fieldHasError ? "error" : props.theme
|
|
146
|
+
})
|
|
124
147
|
|
|
125
|
-
const modelValue = defineModel<number | readonly number[]>()
|
|
148
|
+
const modelValue = defineModel<number | readonly number[]>()
|
|
126
149
|
|
|
127
150
|
const updateValue = (step: number, withinRangeLimit: boolean) => {
|
|
128
151
|
if (withinRangeLimit) {
|
|
129
|
-
modelValue.value = (Number(modelValue.value) + step) as number
|
|
152
|
+
modelValue.value = (Number(modelValue.value) + step) as number
|
|
130
153
|
}
|
|
131
|
-
}
|
|
154
|
+
}
|
|
132
155
|
|
|
133
|
-
updateElementClasses([
|
|
156
|
+
updateElementClasses(["has-left-button", "has-right-button"])
|
|
134
157
|
</script>
|
|
135
158
|
|
|
136
159
|
<style lang="css">
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<FormFieldset
|
|
2
|
+
<FormFieldset
|
|
3
|
+
:id
|
|
4
|
+
:name
|
|
5
|
+
:legend
|
|
6
|
+
:fieldHasError
|
|
7
|
+
:required
|
|
8
|
+
:data-testid
|
|
9
|
+
:styleClassPassthrough="['multiple-radiobuttons-fieldset']"
|
|
10
|
+
>
|
|
3
11
|
<template #description>
|
|
4
12
|
<slot name="description"></slot>
|
|
5
13
|
</template>
|
|
@@ -59,13 +67,13 @@
|
|
|
59
67
|
</template>
|
|
60
68
|
|
|
61
69
|
<script setup lang="ts">
|
|
62
|
-
import propValidators from
|
|
63
|
-
import type { IFormMultipleOptions } from
|
|
70
|
+
import propValidators from "../c12/prop-validators"
|
|
71
|
+
import type { IFormMultipleOptions } from "../../../../shared/types/types.forms"
|
|
64
72
|
|
|
65
73
|
const props = defineProps({
|
|
66
74
|
dataTestid: {
|
|
67
75
|
type: String,
|
|
68
|
-
default:
|
|
76
|
+
default: "multiple-radio-buttons",
|
|
69
77
|
},
|
|
70
78
|
name: {
|
|
71
79
|
type: String,
|
|
@@ -81,7 +89,7 @@ const props = defineProps({
|
|
|
81
89
|
},
|
|
82
90
|
placeholder: {
|
|
83
91
|
type: String,
|
|
84
|
-
default:
|
|
92
|
+
default: "",
|
|
85
93
|
},
|
|
86
94
|
isButton: {
|
|
87
95
|
type: Boolean,
|
|
@@ -105,16 +113,16 @@ const props = defineProps({
|
|
|
105
113
|
},
|
|
106
114
|
size: {
|
|
107
115
|
type: String as PropType<string>,
|
|
108
|
-
default:
|
|
116
|
+
default: "medium",
|
|
109
117
|
validator(value: string) {
|
|
110
|
-
return propValidators.size.includes(value)
|
|
118
|
+
return propValidators.size.includes(value)
|
|
111
119
|
},
|
|
112
120
|
},
|
|
113
121
|
optionsLayout: {
|
|
114
122
|
type: String as PropType<string>,
|
|
115
|
-
default:
|
|
123
|
+
default: "equal-widths",
|
|
116
124
|
validator(value: string) {
|
|
117
|
-
return propValidators.optionsLayout.includes(value)
|
|
125
|
+
return propValidators.optionsLayout.includes(value)
|
|
118
126
|
},
|
|
119
127
|
},
|
|
120
128
|
equalCols: {
|
|
@@ -127,33 +135,31 @@ const props = defineProps({
|
|
|
127
135
|
},
|
|
128
136
|
theme: {
|
|
129
137
|
type: String as PropType<string>,
|
|
130
|
-
default:
|
|
138
|
+
default: "primary",
|
|
131
139
|
validator(value: string) {
|
|
132
|
-
return propValidators.theme.includes(value)
|
|
140
|
+
return propValidators.theme.includes(value)
|
|
133
141
|
},
|
|
134
142
|
},
|
|
135
143
|
direction: {
|
|
136
|
-
type: String as PropType<
|
|
137
|
-
default:
|
|
144
|
+
type: String as PropType<"row" | "row-reverse">,
|
|
145
|
+
default: "row",
|
|
138
146
|
validator(value: string) {
|
|
139
|
-
return [
|
|
147
|
+
return ["row", "row-reverse"].includes(value)
|
|
140
148
|
},
|
|
141
149
|
},
|
|
142
|
-
})
|
|
150
|
+
})
|
|
143
151
|
|
|
144
|
-
const slots = useSlots()
|
|
145
|
-
const hasDescriptionSlot = computed(() => slots.description !== undefined);
|
|
146
|
-
const { elementClasses } = useStyleClassPassthrough(props.styleClassPassthrough);
|
|
152
|
+
const slots = useSlots()
|
|
147
153
|
|
|
148
|
-
const id = `${props.name}-input-${useId()}
|
|
149
|
-
const errorId = `${name}-error-message
|
|
154
|
+
const id = `${props.name}-input-${useId()}`
|
|
155
|
+
const errorId = `${name}-error-message`
|
|
150
156
|
const ariaDescribedby = computed(() => {
|
|
151
|
-
const ariaDescribedbyId =
|
|
152
|
-
return props.fieldHasError ? errorId : ariaDescribedbyId
|
|
153
|
-
})
|
|
157
|
+
const ariaDescribedbyId = slots.description ? `${id}-description` : undefined
|
|
158
|
+
return props.fieldHasError ? errorId : ariaDescribedbyId
|
|
159
|
+
})
|
|
154
160
|
|
|
155
|
-
const modelValue = defineModel()
|
|
156
|
-
const fieldData = defineModel(
|
|
161
|
+
const modelValue = defineModel()
|
|
162
|
+
const fieldData = defineModel("fieldData") as Ref<IFormMultipleOptions>
|
|
157
163
|
</script>
|
|
158
164
|
|
|
159
165
|
<style lang="css">
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="input-range-wrapper" :data-theme="formTheme">
|
|
3
|
-
<div v-if="
|
|
3
|
+
<div v-if="slots.left" class="slot left">
|
|
4
4
|
<slot name="left"></slot>
|
|
5
5
|
</div>
|
|
6
6
|
|
|
7
7
|
<div class="input-range-container">
|
|
8
|
-
<slot v-if="
|
|
8
|
+
<slot v-if="slots.markers" name="markers"></slot>
|
|
9
9
|
|
|
10
10
|
<input
|
|
11
11
|
type="range"
|
|
@@ -15,22 +15,28 @@
|
|
|
15
15
|
:min
|
|
16
16
|
:max
|
|
17
17
|
:step
|
|
18
|
-
:list="
|
|
19
|
-
:class="[
|
|
18
|
+
:list="slots.datalist ? name + '-datalist' : ''"
|
|
19
|
+
:class="[
|
|
20
|
+
'input-range-core',
|
|
21
|
+
`input-range--${size}`,
|
|
22
|
+
`input-range--${weight}`,
|
|
23
|
+
styleClassPassthrough,
|
|
24
|
+
{ 'has-markers': slots.markers },
|
|
25
|
+
]"
|
|
20
26
|
v-model="modelValue"
|
|
21
27
|
ref="inputRange"
|
|
22
28
|
/>
|
|
23
29
|
|
|
24
|
-
<slot v-if="
|
|
30
|
+
<slot v-if="slots.datalist" name="datalist"></slot>
|
|
25
31
|
</div>
|
|
26
|
-
<div v-if="
|
|
32
|
+
<div v-if="slots.right" class="slot right">
|
|
27
33
|
<slot name="right"></slot>
|
|
28
34
|
</div>
|
|
29
35
|
</div>
|
|
30
36
|
</template>
|
|
31
37
|
|
|
32
38
|
<script setup lang="ts">
|
|
33
|
-
import propValidators from
|
|
39
|
+
import propValidators from "../c12/prop-validators"
|
|
34
40
|
|
|
35
41
|
const props = defineProps({
|
|
36
42
|
id: {
|
|
@@ -55,7 +61,7 @@ const props = defineProps({
|
|
|
55
61
|
},
|
|
56
62
|
placeholder: {
|
|
57
63
|
type: String,
|
|
58
|
-
default:
|
|
64
|
+
default: "",
|
|
59
65
|
},
|
|
60
66
|
required: {
|
|
61
67
|
type: Boolean,
|
|
@@ -63,23 +69,23 @@ const props = defineProps({
|
|
|
63
69
|
},
|
|
64
70
|
theme: {
|
|
65
71
|
type: String as PropType<string>,
|
|
66
|
-
default:
|
|
72
|
+
default: "primary",
|
|
67
73
|
validator(value: string) {
|
|
68
|
-
return propValidators.theme.includes(value)
|
|
74
|
+
return propValidators.theme.includes(value)
|
|
69
75
|
},
|
|
70
76
|
},
|
|
71
77
|
size: {
|
|
72
78
|
type: String as PropType<string>,
|
|
73
|
-
default:
|
|
79
|
+
default: "medium",
|
|
74
80
|
validator(value: string) {
|
|
75
|
-
return propValidators.size.includes(value)
|
|
81
|
+
return propValidators.size.includes(value)
|
|
76
82
|
},
|
|
77
83
|
},
|
|
78
84
|
weight: {
|
|
79
85
|
type: String as PropType<string>,
|
|
80
|
-
default:
|
|
86
|
+
default: "wght-400",
|
|
81
87
|
validator(value: string) {
|
|
82
|
-
return propValidators.weight.includes(value)
|
|
88
|
+
return propValidators.weight.includes(value)
|
|
83
89
|
},
|
|
84
90
|
},
|
|
85
91
|
fieldHasError: {
|
|
@@ -90,28 +96,24 @@ const props = defineProps({
|
|
|
90
96
|
type: Array as PropType<string[]>,
|
|
91
97
|
default: () => [],
|
|
92
98
|
},
|
|
93
|
-
})
|
|
99
|
+
})
|
|
94
100
|
|
|
95
|
-
const slots = useSlots()
|
|
96
|
-
const hasDataList = computed(() => slots.datalist !== undefined);
|
|
97
|
-
const hasMarkers = computed(() => slots.markers !== undefined);
|
|
98
|
-
const hasLeftContent = computed(() => slots.left !== undefined);
|
|
99
|
-
const hasRightContent = computed(() => slots.right !== undefined);
|
|
101
|
+
const slots = useSlots()
|
|
100
102
|
|
|
101
103
|
const formTheme = computed(() => {
|
|
102
|
-
return props.fieldHasError ?
|
|
103
|
-
})
|
|
104
|
+
return props.fieldHasError ? "error" : props.theme
|
|
105
|
+
})
|
|
104
106
|
|
|
105
|
-
const modelValue = defineModel<number | readonly number[]>()
|
|
107
|
+
const modelValue = defineModel<number | readonly number[]>()
|
|
106
108
|
|
|
107
109
|
// @input="changeBackgroundColor"
|
|
108
110
|
const changeBackgroundColor = () => {
|
|
109
|
-
console.log(
|
|
110
|
-
const inputRange = ref<HTMLInputElement | null>(null)
|
|
111
|
+
console.log("changeBackgroundColor()")
|
|
112
|
+
const inputRange = ref<HTMLInputElement | null>(null)
|
|
111
113
|
if (inputRange.value !== null) {
|
|
112
|
-
inputRange.value.style.accentColor =
|
|
114
|
+
inputRange.value.style.accentColor = "hsl(" + modelValue.value + ", 100%, 50%)"
|
|
113
115
|
}
|
|
114
|
-
}
|
|
116
|
+
}
|
|
115
117
|
</script>
|
|
116
118
|
|
|
117
119
|
<style lang="css">
|
|
@@ -137,7 +139,7 @@ const changeBackgroundColor = () => {
|
|
|
137
139
|
flex-grow: 1;
|
|
138
140
|
|
|
139
141
|
display: grid;
|
|
140
|
-
grid-template-areas:
|
|
142
|
+
grid-template-areas: "element-stack";
|
|
141
143
|
|
|
142
144
|
.input-range-markers {
|
|
143
145
|
grid-area: element-stack;
|