@fiscozen/input 0.1.17 → 1.0.0-next.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/README.md +719 -1
- package/coverage/FzCurrencyInput.vue.html +640 -0
- package/coverage/FzInput.vue.html +709 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/clover.xml +494 -0
- package/coverage/coverage-final.json +4 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +146 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +196 -0
- package/coverage/useInputStyle.ts.html +343 -0
- package/dist/input.js +5662 -3272
- package/dist/input.umd.cjs +15 -10
- package/dist/src/FzCurrencyInput.vue.d.ts +69 -26
- package/dist/src/FzInput.vue.d.ts +140 -34
- package/dist/src/index.d.ts +1 -0
- package/dist/src/types.d.ts +176 -34
- package/dist/src/useInputStyle.d.ts +23 -8
- package/dist/src/utils.d.ts +21 -0
- package/dist/style.css +1 -0
- package/package.json +4 -4
- package/src/FzCurrencyInput.vue +746 -106
- package/src/FzInput.vue +469 -97
- package/src/__tests__/FzCurrencyInput.spec.ts +1528 -204
- package/src/__tests__/FzInput.spec.ts +1046 -181
- package/src/index.ts +3 -0
- package/src/types.ts +175 -44
- package/src/useInputStyle.ts +96 -38
- package/src/utils.ts +64 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/vitest.config.ts +9 -1
package/src/index.ts
CHANGED
package/src/types.ts
CHANGED
|
@@ -1,143 +1,274 @@
|
|
|
1
1
|
import { IconButtonVariant } from "@fiscozen/button";
|
|
2
2
|
import { IconSize , IconVariant } from "@fiscozen/icons";
|
|
3
3
|
|
|
4
|
+
export type InputEnvironment = "backoffice" | "frontoffice";
|
|
5
|
+
|
|
4
6
|
type FzInputProps = {
|
|
5
7
|
/**
|
|
6
|
-
*
|
|
8
|
+
* Text label displayed above the input field. Overridden by label slot if provided.
|
|
7
9
|
*/
|
|
8
10
|
label?: string;
|
|
9
11
|
/**
|
|
10
|
-
*
|
|
12
|
+
* Environment determining input size and styling
|
|
13
|
+
* @default 'frontoffice'
|
|
11
14
|
*/
|
|
12
|
-
|
|
15
|
+
environment?: InputEnvironment;
|
|
13
16
|
/**
|
|
14
|
-
*
|
|
17
|
+
* Visual size affecting height, padding, and text size
|
|
18
|
+
*
|
|
19
|
+
* @deprecated Use the 'environment' prop instead. This prop will be removed in a future version.
|
|
20
|
+
* Size values map to environments: sm/md → backoffice, lg → frontoffice
|
|
15
21
|
*/
|
|
16
|
-
|
|
22
|
+
size?: "sm" | "md" | "lg";
|
|
17
23
|
/**
|
|
18
|
-
*
|
|
24
|
+
* Placeholder text shown when input is empty. Behavior differs based on variant.
|
|
19
25
|
*/
|
|
20
|
-
|
|
26
|
+
placeholder?: string;
|
|
21
27
|
/**
|
|
22
|
-
*
|
|
28
|
+
* Marks input as required. Adds asterisk to label and sets native required attribute.
|
|
29
|
+
* @default false
|
|
23
30
|
*/
|
|
24
31
|
required?: boolean;
|
|
25
32
|
/**
|
|
26
|
-
*
|
|
33
|
+
* Disables input interaction and applies disabled styling
|
|
34
|
+
* @default false
|
|
27
35
|
*/
|
|
28
36
|
disabled?: boolean;
|
|
29
37
|
/**
|
|
30
|
-
*
|
|
38
|
+
* Shows error state with red border and enables errorMessage slot display
|
|
39
|
+
* @default false
|
|
31
40
|
*/
|
|
32
41
|
error?: boolean;
|
|
33
42
|
/**
|
|
34
|
-
*
|
|
43
|
+
* Font Awesome icon name displayed on the left side of input
|
|
35
44
|
*/
|
|
36
45
|
leftIcon?: string;
|
|
37
46
|
/**
|
|
38
|
-
*
|
|
47
|
+
* Visual style variant for left icon (solid, regular, light, etc.)
|
|
39
48
|
*/
|
|
40
49
|
leftIconVariant?: IconVariant;
|
|
41
50
|
/**
|
|
42
|
-
*
|
|
51
|
+
* Button variant for left icon when rendered as clickable button
|
|
43
52
|
*/
|
|
44
53
|
leftIconButtonVariant?: IconButtonVariant;
|
|
45
54
|
/**
|
|
46
|
-
*
|
|
55
|
+
* Accessible label for left icon when clickable. Required for screen reader accessibility.
|
|
56
|
+
*/
|
|
57
|
+
leftIconAriaLabel?: string;
|
|
58
|
+
/**
|
|
59
|
+
* Font Awesome icon name displayed on the right side of input
|
|
47
60
|
*/
|
|
48
61
|
rightIcon?: string;
|
|
49
62
|
/**
|
|
50
|
-
*
|
|
63
|
+
* Additional CSS classes applied to right icon container
|
|
64
|
+
*/
|
|
65
|
+
rightIconClass?: string;
|
|
66
|
+
/**
|
|
67
|
+
* Size override for right icon. If not provided, uses input size mapping.
|
|
68
|
+
* @deprecated This prop is deprecated and will be removed in a future version.
|
|
69
|
+
* Icons now have a fixed size of "md". This prop will be ignored.
|
|
51
70
|
*/
|
|
52
71
|
rightIconSize?: IconSize;
|
|
53
72
|
/**
|
|
54
|
-
*
|
|
73
|
+
* Visual style variant for right icon (solid, regular, light, etc.)
|
|
55
74
|
*/
|
|
56
75
|
rightIconVariant?: IconVariant;
|
|
57
76
|
/**
|
|
58
|
-
*
|
|
77
|
+
* Renders right icon as clickable button instead of static icon
|
|
78
|
+
* @default false
|
|
59
79
|
*/
|
|
60
80
|
rightIconButton?: boolean;
|
|
61
81
|
/**
|
|
62
|
-
*
|
|
82
|
+
* Button variant for right icon when rightIconButton is true
|
|
83
|
+
* @default 'invisible'
|
|
63
84
|
*/
|
|
64
85
|
rightIconButtonVariant?: IconButtonVariant;
|
|
65
86
|
/**
|
|
66
|
-
*
|
|
87
|
+
* Accessible label for right icon when clickable. Required for screen reader accessibility.
|
|
88
|
+
*/
|
|
89
|
+
rightIconAriaLabel?: string;
|
|
90
|
+
/**
|
|
91
|
+
* Font Awesome icon name displayed as second icon on the right side of input.
|
|
92
|
+
* Priority order: secondRightIcon > rightIcon > valid
|
|
93
|
+
*/
|
|
94
|
+
secondRightIcon?: string;
|
|
95
|
+
/**
|
|
96
|
+
* Additional CSS classes applied to second right icon container
|
|
97
|
+
*/
|
|
98
|
+
secondRightIconClass?: string;
|
|
99
|
+
/**
|
|
100
|
+
* Visual style variant for second right icon (solid, regular, light, etc.)
|
|
101
|
+
*/
|
|
102
|
+
secondRightIconVariant?: IconVariant;
|
|
103
|
+
/**
|
|
104
|
+
* Renders second right icon as clickable button instead of static icon
|
|
105
|
+
* @default false
|
|
106
|
+
*/
|
|
107
|
+
secondRightIconButton?: boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Button variant for second right icon when secondRightIconButton is true
|
|
110
|
+
* @default 'invisible'
|
|
111
|
+
*/
|
|
112
|
+
secondRightIconButtonVariant?: IconButtonVariant;
|
|
113
|
+
/**
|
|
114
|
+
* Accessible label for second right icon when clickable. Required for screen reader accessibility.
|
|
115
|
+
*/
|
|
116
|
+
secondRightIconAriaLabel?: string;
|
|
117
|
+
/**
|
|
118
|
+
* Native HTML input type. Determines keyboard layout and validation behavior
|
|
119
|
+
* @default 'text'
|
|
67
120
|
*/
|
|
68
121
|
type?: "text" | "password" | "email" | "number" | "tel" | "url";
|
|
69
122
|
/**
|
|
70
|
-
*
|
|
123
|
+
* Shows success checkmark icon on the right when true. Takes precedence over rightIcon
|
|
124
|
+
* @default false
|
|
71
125
|
*/
|
|
72
126
|
valid?: boolean;
|
|
73
127
|
/**
|
|
74
|
-
*
|
|
128
|
+
* Visual presentation style. 'floating-label' moves placeholder above input when focused/filled
|
|
129
|
+
* @default 'normal'
|
|
75
130
|
*/
|
|
76
131
|
variant?: 'normal' | 'floating-label';
|
|
77
132
|
/**
|
|
78
|
-
*
|
|
133
|
+
* HTML5 pattern attribute for native browser validation
|
|
79
134
|
*/
|
|
80
135
|
pattern?: string;
|
|
81
136
|
/**
|
|
82
|
-
*
|
|
137
|
+
* Native name attribute for form submission and identification
|
|
83
138
|
*/
|
|
84
139
|
name?: string;
|
|
85
|
-
|
|
86
140
|
/**
|
|
87
|
-
*
|
|
141
|
+
* Native readonly attribute. Prevents user input while keeping field focusable
|
|
142
|
+
* @default false
|
|
88
143
|
*/
|
|
89
144
|
readonly?: boolean;
|
|
90
|
-
|
|
91
145
|
/**
|
|
92
|
-
*
|
|
146
|
+
* Native maxlength attribute. Limits maximum number of characters
|
|
93
147
|
*/
|
|
94
148
|
maxlength?: number;
|
|
95
|
-
|
|
96
149
|
/**
|
|
97
|
-
*
|
|
150
|
+
* Native autocomplete attribute. Controls browser autocomplete and suggestions.
|
|
151
|
+
* When false, sets autocomplete="off" to disable browser autocomplete.
|
|
152
|
+
* @default false
|
|
98
153
|
*/
|
|
99
|
-
|
|
100
|
-
|
|
154
|
+
autocomplete?: boolean;
|
|
101
155
|
/**
|
|
102
|
-
* left icon
|
|
156
|
+
* Additional CSS classes applied to left icon container
|
|
103
157
|
*/
|
|
104
158
|
leftIconClass?: string;
|
|
105
159
|
};
|
|
106
160
|
|
|
107
161
|
interface FzCurrencyInputProps
|
|
108
|
-
extends Omit<
|
|
162
|
+
extends Omit<
|
|
163
|
+
FzInputProps,
|
|
164
|
+
| "type"
|
|
165
|
+
| "modelValue"
|
|
166
|
+
| "rightIcon"
|
|
167
|
+
| "rightIconSize"
|
|
168
|
+
| "rightIconVariant"
|
|
169
|
+
| "rightIconButton"
|
|
170
|
+
| "rightIconButtonVariant"
|
|
171
|
+
| "rightIconAriaLabel"
|
|
172
|
+
| "rightIconClass"
|
|
173
|
+
| "secondRightIcon"
|
|
174
|
+
| "secondRightIconClass"
|
|
175
|
+
| "secondRightIconVariant"
|
|
176
|
+
| "secondRightIconButton"
|
|
177
|
+
| "secondRightIconButtonVariant"
|
|
178
|
+
| "secondRightIconAriaLabel"
|
|
179
|
+
> {
|
|
180
|
+
/**
|
|
181
|
+
* The v-model value.
|
|
182
|
+
*
|
|
183
|
+
* **Type assertion**: This prop accepts `number | string | undefined | null` as input,
|
|
184
|
+
* but the component **always emits** `number | undefined | null` (never `string`).
|
|
185
|
+
* Strings are automatically parsed (Italian format: "1.234,56" → 1234.56) and converted
|
|
186
|
+
* to numbers internally.
|
|
187
|
+
*
|
|
188
|
+
* **nullOnEmpty**: When `nullOnEmpty` is `true`, empty input emits `null` instead of `undefined`.
|
|
189
|
+
*
|
|
190
|
+
* **Deprecation**: String values are deprecated and will be removed in a future version.
|
|
191
|
+
* A console warning is shown when strings are used. Please use `number | undefined | null` instead
|
|
192
|
+
* for type safety and future compatibility.
|
|
193
|
+
*
|
|
194
|
+
* @example
|
|
195
|
+
* ```vue
|
|
196
|
+
* <!-- ✅ Recommended: number | undefined | null -->
|
|
197
|
+
* <script setup>
|
|
198
|
+
* const amount = ref<number | undefined>(undefined);
|
|
199
|
+
* </script>
|
|
200
|
+
* <template>
|
|
201
|
+
* <FzCurrencyInput v-model="amount" />
|
|
202
|
+
* </template>
|
|
203
|
+
*
|
|
204
|
+
* <!-- ✅ With nullOnEmpty: number | null -->
|
|
205
|
+
* <script setup>
|
|
206
|
+
* const amount = ref<number | null>(null);
|
|
207
|
+
* </script>
|
|
208
|
+
* <template>
|
|
209
|
+
* <FzCurrencyInput v-model="amount" :nullOnEmpty="true" />
|
|
210
|
+
* </template>
|
|
211
|
+
*
|
|
212
|
+
* <!-- ⚠️ Deprecated: string (still works but shows warning) -->
|
|
213
|
+
* <script setup>
|
|
214
|
+
* const amount = ref<string>("1234,56");
|
|
215
|
+
* </script>
|
|
216
|
+
* <template>
|
|
217
|
+
* <FzCurrencyInput v-model="amount" />
|
|
218
|
+
* </template>
|
|
219
|
+
* ```
|
|
220
|
+
*/
|
|
221
|
+
modelValue?: number | string | undefined | null;
|
|
109
222
|
/**
|
|
110
|
-
*
|
|
223
|
+
* Converts empty input to null instead of undefined.
|
|
224
|
+
* When true, empty input (v-model undefined) will emit null instead of undefined.
|
|
225
|
+
* @default false
|
|
111
226
|
*/
|
|
112
227
|
nullOnEmpty?: boolean;
|
|
113
228
|
/**
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
229
|
+
* Converts empty input to 0 instead of undefined.
|
|
230
|
+
* When true, empty input (v-model undefined) will emit 0 instead of undefined.
|
|
231
|
+
* @default false
|
|
232
|
+
*/
|
|
233
|
+
zeroOnEmpty?: boolean;
|
|
234
|
+
/**
|
|
235
|
+
* Minimum decimal places in formatted output
|
|
236
|
+
* @default 2
|
|
237
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#digit_options
|
|
117
238
|
*/
|
|
118
239
|
minimumFractionDigits?: number;
|
|
119
240
|
/**
|
|
120
|
-
* Maximum
|
|
121
|
-
*
|
|
122
|
-
* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#digit_options
|
|
241
|
+
* Maximum decimal places in formatted output
|
|
242
|
+
* @default 2
|
|
243
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#digit_options
|
|
123
244
|
*/
|
|
124
245
|
maximumFractionDigits?: number;
|
|
125
246
|
/**
|
|
126
|
-
* Minimum
|
|
247
|
+
* Minimum allowed value. Values below this are clamped to min
|
|
127
248
|
*/
|
|
128
249
|
min?: number;
|
|
129
250
|
/**
|
|
130
|
-
* Maximum
|
|
251
|
+
* Maximum allowed value. Values above this are clamped to max
|
|
131
252
|
*/
|
|
132
253
|
max?: number;
|
|
133
254
|
/**
|
|
134
|
-
*
|
|
255
|
+
* Step increment for arrow buttons. When forceStep is true, values are rounded to nearest step multiple
|
|
256
|
+
* @default 1
|
|
135
257
|
*/
|
|
136
258
|
step?: number;
|
|
137
259
|
/**
|
|
138
|
-
*
|
|
260
|
+
* Enforces quantization: values are automatically rounded to nearest step multiple
|
|
261
|
+
* @default false
|
|
139
262
|
*/
|
|
140
263
|
forceStep?: boolean;
|
|
264
|
+
/**
|
|
265
|
+
* Custom accessible label for step up button. If not provided, uses default label.
|
|
266
|
+
*/
|
|
267
|
+
stepUpAriaLabel?: string;
|
|
268
|
+
/**
|
|
269
|
+
* Custom accessible label for step down button. If not provided, uses default label.
|
|
270
|
+
*/
|
|
271
|
+
stepDownAriaLabel?: string;
|
|
141
272
|
}
|
|
142
273
|
|
|
143
274
|
export { FzInputProps, FzCurrencyInputProps };
|
package/src/useInputStyle.ts
CHANGED
|
@@ -1,71 +1,129 @@
|
|
|
1
|
-
import { computed, ToRefs, Ref } from "vue";
|
|
2
|
-
import { FzInputProps } from "./types";
|
|
1
|
+
import { computed, ToRefs, Ref, ComputedRef } from "vue";
|
|
2
|
+
import { FzInputProps, type InputEnvironment } from "./types";
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Composable for managing FzInput component styles and computed classes
|
|
6
|
+
*
|
|
7
|
+
* Handles dynamic styling based on props, environment, variant, and state.
|
|
8
|
+
* Returns computed classes for container, label, input, help text, and error messages.
|
|
9
|
+
*
|
|
10
|
+
* @param props - Reactive props from FzInput component
|
|
11
|
+
* @param container - Reference to container DOM element
|
|
12
|
+
* @param model - Reactive model value (string | undefined)
|
|
13
|
+
* @param effectiveEnvironment - Computed effective environment (backoffice | frontoffice)
|
|
14
|
+
* @param isFocused - Reactive flag indicating if input is focused
|
|
15
|
+
* @returns Object containing computed classes and style-related properties
|
|
16
|
+
*/
|
|
4
17
|
export default function useInputStyle(
|
|
5
18
|
props: ToRefs<FzInputProps>,
|
|
6
19
|
container: Ref<HTMLElement | null>,
|
|
7
|
-
model: Ref<string
|
|
20
|
+
model: Ref<string | undefined>,
|
|
21
|
+
effectiveEnvironment: ComputedRef<InputEnvironment>,
|
|
22
|
+
isFocused: Ref<boolean>
|
|
8
23
|
) {
|
|
9
24
|
const containerWidth = computed(() =>
|
|
10
25
|
container.value ? `${container.value.clientWidth}px` : "auto",
|
|
11
26
|
);
|
|
12
27
|
|
|
13
|
-
const mapContainerClass = {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
lg: "h-40 text-lg",
|
|
28
|
+
const mapContainerClass: Record<InputEnvironment, string> = {
|
|
29
|
+
backoffice: "h-32",
|
|
30
|
+
frontoffice: "h-44",
|
|
17
31
|
};
|
|
18
32
|
|
|
19
|
-
|
|
33
|
+
// Common styles: padding 10px, border-radius 4px, border 1px solid grey-300, background white, color black
|
|
34
|
+
const staticContainerClass = `flex justify-between w-full items-center pl-[10px] pr-[10px] rounded border-1 gap-8 text-left relative outline-none`;
|
|
20
35
|
|
|
21
|
-
const computedContainerClass = computed(() =>
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
36
|
+
const computedContainerClass = computed(() => {
|
|
37
|
+
const env = effectiveEnvironment.value;
|
|
38
|
+
return [
|
|
39
|
+
props.variant?.value === 'normal' ? mapContainerClass[env] : mapContainerClass.frontoffice,
|
|
40
|
+
evaluateProps(),
|
|
41
|
+
];
|
|
42
|
+
});
|
|
25
43
|
|
|
26
44
|
const computedLabelClass = computed(() => [
|
|
27
|
-
|
|
45
|
+
"font-normal text-base",
|
|
46
|
+
(props.disabled?.value || props.readonly?.value) ? "text-grey-300" : "text-core-black",
|
|
28
47
|
]);
|
|
29
48
|
|
|
30
|
-
|
|
49
|
+
// Input styles: transparent background (inherits from container), no border, placeholder color grey-300
|
|
50
|
+
const staticInputClass = `peer w-full bg-transparent border-0 outline-none focus:outline-none cursor-[inherit] focus:ring-0 truncate placeholder:text-grey-300 font-normal text-base`;
|
|
31
51
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
52
|
+
// Input text size: 16px for both environments (as per design specs)
|
|
53
|
+
const textSizeMap: Record<InputEnvironment, string> = {
|
|
54
|
+
backoffice: 'text-base',
|
|
55
|
+
frontoffice: 'text-base',
|
|
56
|
+
};
|
|
38
57
|
|
|
58
|
+
/**
|
|
59
|
+
* Determines when to show the normal placeholder inside the input.
|
|
60
|
+
*
|
|
61
|
+
* For floating-label variant:
|
|
62
|
+
* - Shows placeholder inside input only when input is empty AND not focused
|
|
63
|
+
* - When focused or has value, placeholder "floats" above as <span>
|
|
64
|
+
*
|
|
65
|
+
* For normal variant:
|
|
66
|
+
* - Always shows placeholder inside input
|
|
67
|
+
*/
|
|
39
68
|
const showNormalPlaceholder = computed(() => {
|
|
40
|
-
|
|
41
|
-
|
|
69
|
+
if (props.variant?.value !== 'floating-label') {
|
|
70
|
+
return true; // Normal variant: always show placeholder inside
|
|
71
|
+
}
|
|
72
|
+
// Floating-label variant: show placeholder inside only when empty AND not focused
|
|
73
|
+
return !model.value && !isFocused.value;
|
|
42
74
|
});
|
|
43
75
|
|
|
44
|
-
const computedInputClass = computed(() =>
|
|
45
|
-
|
|
46
|
-
|
|
76
|
+
const computedInputClass = computed(() => {
|
|
77
|
+
const env = effectiveEnvironment.value;
|
|
78
|
+
if (props.variant?.value === 'floating-label') {
|
|
79
|
+
return [textSizeMap[env]];
|
|
80
|
+
}
|
|
81
|
+
return [];
|
|
82
|
+
});
|
|
47
83
|
|
|
84
|
+
// Help text styles: Inter, 16px, normal, 400, line-height 20px (125%), color grey-500
|
|
48
85
|
const computedHelpClass = computed(() => [
|
|
49
|
-
|
|
50
|
-
props.
|
|
51
|
-
props.size?.value === "lg" ? "text-base" : "",
|
|
52
|
-
props.disabled?.value ? "text-grey-300" : "text-grey-500",
|
|
86
|
+
"font-normal text-base",
|
|
87
|
+
(props.disabled?.value || props.readonly?.value) ? "text-grey-300" : "text-grey-500",
|
|
53
88
|
]);
|
|
89
|
+
|
|
90
|
+
// Error text styles: same as helpText (Inter, 16px, normal, 400, line-height 20px) but with core-black color
|
|
54
91
|
const computedErrorClass = computed(() => [
|
|
55
|
-
|
|
56
|
-
props.
|
|
57
|
-
props.size?.value === "lg" ? "text-base" : "",
|
|
58
|
-
props.disabled?.value ? "text-grey-300" : "text-core-black",
|
|
92
|
+
"font-normal text-base",
|
|
93
|
+
(props.disabled?.value || props.readonly?.value) ? "text-grey-300" : "text-core-black",
|
|
59
94
|
]);
|
|
60
95
|
|
|
96
|
+
/**
|
|
97
|
+
* Helper functions to identify UI states.
|
|
98
|
+
*
|
|
99
|
+
* These functions explicitly describe when each UI representation should be applied,
|
|
100
|
+
* making the component logic more declarative and maintainable.
|
|
101
|
+
* Priority order: error (highest) > disabled/readonly > default
|
|
102
|
+
*/
|
|
103
|
+
const isError = (p: typeof props) => !!p.error?.value;
|
|
104
|
+
const isDisabled = (p: typeof props) => !!p.disabled?.value || !!p.readonly?.value;
|
|
105
|
+
const isDefault = (p: typeof props) => !p.error?.value && !p.disabled?.value && !p.readonly?.value;
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Evaluates container styles based on props with priority order:
|
|
109
|
+
* 1. error (highest priority)
|
|
110
|
+
* 2. disabled/readonly (same styling)
|
|
111
|
+
* 3. default
|
|
112
|
+
*
|
|
113
|
+
* Focus states are handled separately:
|
|
114
|
+
* - error+focus: border-semantic-error-300
|
|
115
|
+
* - default+focus: border-blue-600
|
|
116
|
+
*/
|
|
61
117
|
const evaluateProps = () => {
|
|
62
118
|
switch (true) {
|
|
63
|
-
case props
|
|
119
|
+
case isError(props):
|
|
120
|
+
return "border-semantic-error-200 has-[:focus]:border-semantic-error-300 bg-core-white text-core-black cursor-text";
|
|
121
|
+
|
|
122
|
+
case isDisabled(props):
|
|
64
123
|
return "bg-grey-100 border-grey-100 text-grey-300 cursor-not-allowed";
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
return "border-grey-300 bg-white text-core-black cursor-text";
|
|
124
|
+
|
|
125
|
+
case isDefault(props):
|
|
126
|
+
return "border-grey-300 has-[:focus]:border-blue-600 bg-core-white text-core-black cursor-text";
|
|
69
127
|
}
|
|
70
128
|
};
|
|
71
129
|
|
package/src/utils.ts
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for the Fiscozen Input component library.
|
|
3
|
+
*
|
|
4
|
+
* @module @fiscozen/input/utils
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { InputEnvironment } from "./types";
|
|
8
|
+
|
|
9
|
+
type InputSize = "sm" | "md" | "lg";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Maps deprecated InputSize to InputEnvironment
|
|
13
|
+
*
|
|
14
|
+
* Used for backward compatibility when size prop is provided instead of environment.
|
|
15
|
+
* Size values map to environments: sm/md → backoffice, lg → frontoffice
|
|
16
|
+
*/
|
|
17
|
+
export const sizeToEnvironmentMapping: Record<InputSize, InputEnvironment> = {
|
|
18
|
+
sm: "backoffice",
|
|
19
|
+
md: "backoffice",
|
|
20
|
+
lg: "frontoffice",
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Internal helper function to generate unique IDs with a given prefix.
|
|
25
|
+
*
|
|
26
|
+
* The ID is composed of:
|
|
27
|
+
* - Prefix string (e.g., "fz-input")
|
|
28
|
+
* - Obfuscated timestamp (Date.now() - epoch offset)
|
|
29
|
+
* - Random alphanumeric suffix (5 characters)
|
|
30
|
+
*
|
|
31
|
+
* This strategy ensures uniqueness through:
|
|
32
|
+
* - Different timestamps for components created at different times
|
|
33
|
+
* - Random suffix prevents collisions within the same millisecond
|
|
34
|
+
* - Stateless generation (no global counters to manage)
|
|
35
|
+
*
|
|
36
|
+
* @param prefix - The prefix to use for the generated ID
|
|
37
|
+
* @returns Unique ID with the specified prefix
|
|
38
|
+
*
|
|
39
|
+
* @internal
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* generateId("fz-input") // "fz-input-97123456-a8d3k"
|
|
43
|
+
*/
|
|
44
|
+
function generateId(prefix: string): string {
|
|
45
|
+
// Obfuscate timestamp (Sept 13, 2020 offset) for shorter IDs
|
|
46
|
+
const timestamp = Date.now() - 1600000000000;
|
|
47
|
+
// Generate 5-char random alphanumeric suffix (base36: 0-9, a-z)
|
|
48
|
+
const random = Math.random().toString(36).slice(2, 7);
|
|
49
|
+
return `${prefix}-${timestamp}-${random}`;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Generates a unique ID for input components.
|
|
54
|
+
*
|
|
55
|
+
* @returns Unique input ID with "fz-input" prefix
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* generateInputId() // "fz-input-97123456-a8d3k"
|
|
59
|
+
* generateInputId() // "fz-input-97123457-k2m9p"
|
|
60
|
+
*/
|
|
61
|
+
export function generateInputId(): string {
|
|
62
|
+
return generateId("fz-input");
|
|
63
|
+
}
|
|
64
|
+
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"program":{"fileNames":["../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/.pnpm/@vue+shared@3.5.13/node_modules/@vue/shared/dist/shared.d.ts","../../node_modules/.pnpm/@vue+reactivity@3.5.13/node_modules/@vue/reactivity/dist/reactivity.d.ts","../../node_modules/.pnpm/@vue+runtime-core@3.5.13/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","../../node_modules/.pnpm/csstype@3.1.3/node_modules/csstype/index.d.ts","../../node_modules/.pnpm/@vue+runtime-dom@3.5.13/node_modules/@vue/runtime-dom/dist/runtime-dom.d.ts","../../node_modules/.pnpm/vue@3.5.13_typescript@5.3.3/node_modules/vue/jsx-runtime/index.d.ts","../../node_modules/.pnpm/@babel+types@7.26.9/node_modules/@babel/types/lib/index.d.ts","../../node_modules/.pnpm/@babel+parser@7.26.9/node_modules/@babel/parser/typings/babel-parser.d.ts","../../node_modules/.pnpm/@vue+compiler-core@3.5.13/node_modules/@vue/compiler-core/dist/compiler-core.d.ts","../../node_modules/.pnpm/@vue+compiler-dom@3.5.13/node_modules/@vue/compiler-dom/dist/compiler-dom.d.ts","../../node_modules/.pnpm/vue@3.5.13_typescript@5.3.3/node_modules/vue/dist/vue.d.mts","../../node_modules/.pnpm/@vue+shared@3.5.12/node_modules/@vue/shared/dist/shared.d.ts","../../node_modules/.pnpm/@vue+reactivity@3.5.12/node_modules/@vue/reactivity/dist/reactivity.d.ts","../../node_modules/.pnpm/@vue+runtime-core@3.5.12/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","../../node_modules/.pnpm/@vue+runtime-dom@3.5.12/node_modules/@vue/runtime-dom/dist/runtime-dom.d.ts","../../node_modules/.pnpm/vue@3.5.12_typescript@5.4.2/node_modules/vue/jsx-runtime/index.d.ts","../../node_modules/.pnpm/@babel+types@7.25.8/node_modules/@babel/types/lib/index.d.ts","../../node_modules/.pnpm/@babel+parser@7.25.8/node_modules/@babel/parser/typings/babel-parser.d.ts","../../node_modules/.pnpm/@vue+compiler-core@3.5.12/node_modules/@vue/compiler-core/dist/compiler-core.d.ts","../../node_modules/.pnpm/@vue+compiler-dom@3.5.12/node_modules/@vue/compiler-dom/dist/compiler-dom.d.ts","../../node_modules/.pnpm/vue@3.5.12_typescript@5.4.2/node_modules/vue/dist/vue.d.mts","../../node_modules/.pnpm/@fortawesome+fontawesome-common-types@6.6.0/node_modules/@fortawesome/fontawesome-common-types/index.d.ts","../../node_modules/.pnpm/@fortawesome+fontawesome-svg-core@6.6.0/node_modules/@fortawesome/fontawesome-svg-core/index.d.ts","../../node_modules/.pnpm/@fortawesome+fontawesome-common-types@6.7.2/node_modules/@fortawesome/fontawesome-common-types/index.d.ts","../../node_modules/.pnpm/@awesome.me+kit-8137893ad3@1.0.248/node_modules/@awesome.me/kit-8137893ad3/icons/modules/icon-types.ts","../../node_modules/.pnpm/@awesome.me+kit-8137893ad3@1.0.248/node_modules/@awesome.me/kit-8137893ad3/icons/modules/index.d.ts","../../node_modules/.pnpm/@fortawesome+vue-fontawesome@3.0.8_@fortawesome+fontawesome-svg-core@6.6.0_vue@3.5.12_typescript@5.4.2_/node_modules/@fortawesome/vue-fontawesome/index.d.ts","../icons/src/types.ts","../icons/src/fzicon.vue.ts","../icons/src/index.ts","./src/types.ts","./src/useinputstyle.ts","./src/fzinput.vue.ts","../composables/src/types.ts","../composables/src/utils/number/index.ts","../composables/src/utils/position/index.ts","../composables/src/utils/index.ts","../composables/src/composables/usefloating.ts","../composables/src/composables/usemediaquery.ts","../composables/src/composables/usebreakpoints.ts","../composables/src/composables/useclickoutside.ts","../composables/src/composables/usekeydown.ts","../composables/src/composables/usekeyup.ts","../composables/src/composables/usecurrency.ts","../composables/src/composables/index.ts","../composables/src/fzfloating.vue.ts","../composables/src/index.ts","./src/fzcurrencyinput.vue.ts","./__vls_types.d.ts","./dist/src/fzinput.vue.d.ts","./dist/src/fzcurrencyinput.vue.d.ts","./dist/src/types.d.ts","./dist/src/index.d.ts","./dist/index.d.ts","./dist/src/useinputstyle.d.ts","./src/index.ts","../../node_modules/.pnpm/@babel+types@7.23.6/node_modules/@babel/types/lib/index.d.ts","../../node_modules/.pnpm/vue@3.4.13_typescript@5.3.3/node_modules/vue/jsx-runtime/index.d.ts","../../node_modules/.pnpm/vue@3.4.13_typescript@5.3.3/node_modules/vue/dist/vue.d.mts"],"fileInfos":[{"version":"0","affectsGlobalScope":true},"0","0","0","0","0","0",{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},"0","0",{"version":"0","affectsGlobalScope":true},"0","0","0","0","0","0","0","0","0","0",{"version":"0","affectsGlobalScope":true},"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",{"version":"0","affectsGlobalScope":true},"0","0","0","0","0","0","0"],"root":[[76,78],[93,101]],"options":{"composite":true,"esModuleInterop":true,"jsx":1,"jsxImportSource":"vue","module":99,"noImplicitThis":true,"skipLibCheck":true,"strict":true,"target":99,"useDefineForClassFields":true},"fileIdsList":[[51,69],[70],[62],[52],[67],[66,68],[52,57,63],[46,52,53],[64],[54],[57],[46],[57,58,59,60],[46,47,48,50],[49,58,59,60],[47,48,49,50],[60,65],[60],[50,55],[50],[51,83,84,85,86,87,88,89],[51,84],[51,56],[51,56,79,82],[51,56,79,90],[51,79,82,90,91],[51,80,81],[51,79],[61,66,71,72,73],[61,66,68,71,73,74],[61],[98],[56,73],[95,96,97],[75],[56,97],[51,56,75,76,78,92],[51,56,75,76,77],[51,76,78,93],[51,75],[51,56,76],[57,63,102],[83,84,85,86,87,88,89,103],[84,103],[103,104],[79,103,104],[79,82,103,104],[79,90,103],[79,103],[68,73],[],[73,104],[75,103],[76,103,104]],"referencedMap":[[70,1],[71,2],[63,3],[53,4],[68,5],[72,6],[64,7],[54,8],[65,9],[55,10],[58,11],[47,12],[59,13],[48,14],[60,15],[50,16],[66,17],[61,18],[56,19],[51,20],[90,21],[85,22],[86,23],[89,24],[83,24],[87,23],[88,23],[84,23],[91,25],[92,26],[79,23],[82,27],[80,28],[81,28],[74,29],[75,30],[73,31],[94,23],[99,32],[96,33],[95,33],[98,34],[97,35],[100,36],[93,37],[78,38],[101,39],[76,40],[77,41]],"exportedModulesMap":[[70,1],[71,2],[63,3],[53,4],[68,5],[72,6],[64,42],[54,8],[65,9],[55,10],[58,11],[47,12],[59,13],[48,14],[60,15],[50,16],[66,17],[61,18],[56,19],[51,20],[90,43],[85,44],[86,45],[89,46],[83,47],[87,45],[88,45],[84,45],[91,25],[92,48],[79,45],[82,49],[80,49],[81,49],[74,29],[75,50],[73,51],[94,23],[99,52],[96,45],[95,45],[98,45],[97,45],[100,52],[93,37],[78,38],[101,35],[76,53],[77,54]],"semanticDiagnosticsPerFile":[70,71,63,53,62,52,67,69,68,72,64,54,65,55,58,47,59,48,60,50,57,46,49,44,45,8,9,11,10,2,12,13,14,15,16,17,18,19,3,4,20,24,21,22,23,25,26,27,5,28,29,30,31,6,35,32,33,34,36,7,37,42,43,38,39,40,41,1,66,61,56,51,90,85,86,89,83,87,88,84,91,92,79,82,80,81,74,75,73,94,99,96,95,98,97,100,93,78,101,76,77],"affectedFilesPendingEmit":[93,78,101,76,77],"emitSignatures":[76,77,78,93]},"version":"5.3.3"}
|
|
1
|
+
{"program":{"fileNames":["../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/.pnpm/typescript@5.3.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/.pnpm/@vue+shared@3.5.26/node_modules/@vue/shared/dist/shared.d.ts","../../node_modules/.pnpm/@vue+reactivity@3.5.26/node_modules/@vue/reactivity/dist/reactivity.d.ts","../../node_modules/.pnpm/@vue+runtime-core@3.5.26/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","../../node_modules/.pnpm/csstype@3.2.3/node_modules/csstype/index.d.ts","../../node_modules/.pnpm/@vue+runtime-dom@3.5.26/node_modules/@vue/runtime-dom/dist/runtime-dom.d.ts","../../node_modules/.pnpm/vue@3.5.26_typescript@5.3.3/node_modules/vue/jsx-runtime/index.d.ts","../../node_modules/.pnpm/@babel+types@7.28.6/node_modules/@babel/types/lib/index.d.ts","../../node_modules/.pnpm/@babel+parser@7.28.6/node_modules/@babel/parser/typings/babel-parser.d.ts","../../node_modules/.pnpm/@vue+compiler-core@3.5.26/node_modules/@vue/compiler-core/dist/compiler-core.d.ts","../../node_modules/.pnpm/@vue+compiler-dom@3.5.26/node_modules/@vue/compiler-dom/dist/compiler-dom.d.ts","../../node_modules/.pnpm/vue@3.5.26_typescript@5.3.3/node_modules/vue/dist/vue.d.mts","../../node_modules/.pnpm/@fortawesome+fontawesome-common-types@6.7.2/node_modules/@fortawesome/fontawesome-common-types/index.d.ts","../../node_modules/.pnpm/@fortawesome+fontawesome-svg-core@6.7.2/node_modules/@fortawesome/fontawesome-svg-core/index.d.ts","../../node_modules/.pnpm/@awesome.me+kit-8137893ad3@1.0.396/node_modules/@awesome.me/kit-8137893ad3/icons/modules/icon-types.ts","../../node_modules/.pnpm/@awesome.me+kit-8137893ad3@1.0.396/node_modules/@awesome.me/kit-8137893ad3/icons/modules/index.d.ts","../../node_modules/.pnpm/@fortawesome+vue-fontawesome@3.1.3_@fortawesome+fontawesome-svg-core@6.7.2_vue@3.5.26_typescript@5.3.3_/node_modules/@fortawesome/vue-fontawesome/index.d.ts","../icons/src/types.ts","../icons/src/fzicon.vue.ts","../icons/src/index.ts","../button/src/types.ts","../button/src/utils.ts","../button/src/fzbutton.vue.ts","../button/src/fziconbutton.vue.ts","../container/src/types.ts","../container/src/fzcontainer.vue.ts","../container/src/index.ts","../button/src/fzbuttongroup.vue.ts","../button/src/index.ts","./src/types.ts","./src/useinputstyle.ts","./src/utils.ts","./src/fzinput.vue.ts","../composables/src/types.ts","../composables/src/utils/number/index.ts","../composables/src/utils/position/index.ts","../composables/src/utils/index.ts","../composables/src/composables/usefloating.ts","../composables/src/composables/usemediaquery.ts","../composables/src/composables/usebreakpoints.ts","../composables/src/composables/useclickoutside.ts","../composables/src/composables/usekeydown.ts","../composables/src/composables/usekeyup.ts","../composables/src/composables/usecurrency.ts","../composables/src/composables/index.ts","../style/src/custom-directives/validation.ts","../style/src/custom-directives/config.ts","../style/src/custom-directives/vbold.ts","../style/tokens.json","../style/safe-colors.json","../style/safe-semantic-colors.json","../style/src/custom-directives/vcolor.ts","../style/src/custom-directives/vsmall.ts","../style/src/custom-directives/index.ts","../style/src/constants.ts","../style/src/index.ts","../composables/src/fzfloating.vue.ts","../composables/src/index.ts","./src/fzcurrencyinput.vue.ts","./__vls_types.d.ts","./dist/src/types.d.ts","./dist/src/fzinput.vue.d.ts","./dist/src/fzcurrencyinput.vue.d.ts","./dist/src/utils.d.ts","./dist/src/index.d.ts","./dist/index.d.ts","./dist/src/useinputstyle.d.ts","./src/index.ts"],"fileInfos":[{"version":"0","affectsGlobalScope":true},"0","0","0","0","0","0",{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},"0","0",{"version":"0","affectsGlobalScope":true},"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",{"version":"0","affectsGlobalScope":true},"0","0","0","0","0","0","0","0"],"root":[[74,77],[103,112]],"options":{"composite":true,"esModuleInterop":true,"jsx":1,"jsxImportSource":"vue","module":99,"noImplicitThis":true,"skipLibCheck":true,"strict":true,"target":99,"useDefineForClassFields":true},"fileIdsList":[[51,57],[59],[52],[57],[56,58],[46,52,53],[54],[46],[46,47,48,50],[47,48,49,50],[50,55],[50],[51,56,64,65,66],[51,56,65,66,71],[51,56,65,66,67],[51,65,67,68,72],[51,64],[51,56,65,67],[51,82,83,84,85,86,87,88],[51,83],[51,56],[51,78,81],[51,56,78,81],[51,56,78,89,100],[51,78,81,89,101],[51,79,80],[51],[51,78],[51,56,69],[51,69,70],[51,56,60,61,62],[51,56,58,60,62,63],[109],[56,62,73,105],[105,106,107,108],[64,73],[56,105],[105],[51,56,64,74,77,102],[51,56,64,73,74,75,76],[51,74,76,77,103],[51,64,73],[51,56,74],[51,74],[51,93],[51,90],[51,90,91,92,96,97],[51,56,90,91],[51,56,90,91,93,94,95],[51,56,98,99],[65],[],[64,65],[82,83,84,85,86,87,88],[83],[78,81],[78,81,89],[79,80],[78],[69],[58,62],[74],[93],[90],[90,91,92,96,97],[90,91],[90,91,93,94,95],[99]],"referencedMap":[[59,1],[60,2],[53,3],[58,4],[61,5],[54,6],[55,7],[47,8],[48,9],[50,10],[56,11],[51,12],[67,13],[72,14],[68,15],[73,16],[65,17],[66,18],[89,19],[84,20],[85,21],[88,22],[82,23],[86,21],[87,21],[83,21],[101,24],[102,25],[78,21],[81,26],[79,27],[80,28],[70,29],[71,30],[69,27],[63,31],[64,32],[62,27],[104,21],[110,33],[107,34],[106,34],[109,35],[105,36],[111,37],[108,38],[103,39],[77,40],[112,41],[74,42],[75,43],[76,44],[99,45],[91,46],[98,47],[90,21],[92,48],[96,49],[97,48],[100,50]],"exportedModulesMap":[[59,1],[60,2],[53,3],[58,4],[61,5],[54,6],[55,7],[47,8],[48,9],[50,10],[56,11],[51,12],[67,13],[72,14],[68,15],[73,51],[65,52],[66,53],[89,54],[84,55],[85,52],[88,56],[82,56],[86,52],[87,52],[83,52],[101,24],[102,57],[78,52],[81,58],[79,59],[80,59],[70,29],[71,60],[69,52],[63,31],[64,61],[62,52],[104,21],[110,52],[107,52],[106,21],[109,52],[105,21],[111,52],[108,52],[103,39],[77,40],[112,52],[74,36],[75,62],[76,62],[99,63],[91,64],[98,65],[90,52],[92,66],[96,67],[97,66],[100,68]],"semanticDiagnosticsPerFile":[59,60,53,52,57,58,61,54,55,47,48,50,46,49,44,45,8,9,11,10,2,12,13,14,15,16,17,18,19,3,4,20,24,21,22,23,25,26,27,5,28,29,30,31,6,35,32,33,34,36,7,37,42,43,38,39,40,41,1,56,51,67,72,68,73,65,66,89,84,85,88,82,86,87,83,101,102,78,81,79,80,70,71,69,63,64,62,104,110,107,106,109,105,111,108,103,77,112,74,75,76,94,95,99,91,98,90,92,96,97,100,93],"affectedFilesPendingEmit":[103,77,112,74,75,76],"emitSignatures":[74,75,76,77,103]},"version":"5.3.3"}
|