Tracking de l'application VApp (IHM du jeu)

This commit is contained in:
2025-05-11 18:04:12 +02:00
commit 89e9db9b62
17763 changed files with 3718499 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
import { createVNode as _createVNode } from "vue";
// Components
import { VIcon } from "../VIcon/index.mjs"; // Composables
import { useLocale } from "../../composables/locale.mjs"; // Types
export function useInputIcon(props) {
const {
t
} = useLocale();
function InputIcon(_ref) {
let {
name
} = _ref;
const localeKey = {
prepend: 'prependAction',
prependInner: 'prependAction',
append: 'appendAction',
appendInner: 'appendAction',
clear: 'clear'
}[name];
const listener = props[`onClick:${name}`];
const label = listener && localeKey ? t(`$vuetify.input.${localeKey}`, props.label ?? '') : undefined;
return _createVNode(VIcon, {
"icon": props[`${name}Icon`],
"aria-label": label,
"onClick": listener
}, null);
}
return {
InputIcon
};
}
//# sourceMappingURL=InputIcon.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"InputIcon.mjs","names":["VIcon","useLocale","useInputIcon","props","t","InputIcon","_ref","name","localeKey","prepend","prependInner","append","appendInner","clear","listener","label","undefined","_createVNode"],"sources":["../../../src/components/VInput/InputIcon.tsx"],"sourcesContent":["// Components\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useLocale } from '@/composables/locale'\n\n// Types\nimport type { IconValue } from '@/composables/icons'\n\ntype names = 'clear' | 'prepend' | 'append' | 'appendInner' | 'prependInner'\n\ntype EventProp<T = (...args: any[]) => any> = T | T[]\ntype InputIconProps<T extends names> = {\n label: string | undefined\n} & {\n [K in `${T}Icon`]: IconValue | undefined\n} & {\n [K in `onClick:${T}`]: EventProp | undefined\n}\n\ntype Listeners<T extends {}, U = keyof T> = U extends `onClick:${infer V extends names}` ? V : never\n\nexport function useInputIcon<T extends {}, K extends names = Listeners<T>> (props: T & InputIconProps<K>) {\n const { t } = useLocale()\n\n function InputIcon ({ name }: { name: Extract<names, K> }) {\n const localeKey = {\n prepend: 'prependAction',\n prependInner: 'prependAction',\n append: 'appendAction',\n appendInner: 'appendAction',\n clear: 'clear',\n }[name]\n const listener = props[`onClick:${name}`]\n const label = listener && localeKey\n ? t(`$vuetify.input.${localeKey}`, props.label ?? '')\n : undefined\n\n return (\n <VIcon\n icon={ props[`${name}Icon`] }\n aria-label={ label }\n onClick={ listener }\n />\n )\n }\n\n return { InputIcon }\n}\n"],"mappings":";AAAA;AAAA,SACSA,KAAK,8BAEd;AAAA,SACSC,SAAS,wCAElB;AAgBA,OAAO,SAASC,YAAYA,CAAgDC,KAA4B,EAAE;EACxG,MAAM;IAAEC;EAAE,CAAC,GAAGH,SAAS,CAAC,CAAC;EAEzB,SAASI,SAASA,CAAAC,IAAA,EAAyC;IAAA,IAAvC;MAAEC;IAAkC,CAAC,GAAAD,IAAA;IACvD,MAAME,SAAS,GAAG;MAChBC,OAAO,EAAE,eAAe;MACxBC,YAAY,EAAE,eAAe;MAC7BC,MAAM,EAAE,cAAc;MACtBC,WAAW,EAAE,cAAc;MAC3BC,KAAK,EAAE;IACT,CAAC,CAACN,IAAI,CAAC;IACP,MAAMO,QAAQ,GAAGX,KAAK,CAAE,WAAUI,IAAK,EAAC,CAAC;IACzC,MAAMQ,KAAK,GAAGD,QAAQ,IAAIN,SAAS,GAC/BJ,CAAC,CAAE,kBAAiBI,SAAU,EAAC,EAAEL,KAAK,CAACY,KAAK,IAAI,EAAE,CAAC,GACnDC,SAAS;IAEb,OAAAC,YAAA,CAAAjB,KAAA;MAAA,QAEWG,KAAK,CAAE,GAAEI,IAAK,MAAK,CAAC;MAAA,cACdQ,KAAK;MAAA,WACRD;IAAQ;EAGxB;EAEA,OAAO;IAAET;EAAU,CAAC;AACtB"}

View File

@@ -0,0 +1,143 @@
.v-input {
display: grid;
flex: 1 1 auto;
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
}
.v-input--disabled {
pointer-events: none;
}
.v-input--density-default {
--v-input-control-height: 56px;
--v-input-padding-top: 16px;
}
.v-input--density-comfortable {
--v-input-control-height: 48px;
--v-input-padding-top: 12px;
}
.v-input--density-compact {
--v-input-control-height: 40px;
--v-input-padding-top: 8px;
}
.v-input--vertical {
grid-template-areas: "append" "control" "prepend";
grid-template-rows: max-content auto max-content;
grid-template-columns: min-content;
}
.v-input--vertical .v-input__prepend {
margin-block-start: 16px;
}
.v-input--vertical .v-input__append {
margin-block-end: 16px;
}
.v-input--horizontal {
grid-template-areas: "prepend control append" "a messages b";
grid-template-columns: max-content minmax(0, 1fr) max-content;
grid-template-rows: auto auto;
}
.v-input--horizontal .v-input__prepend {
margin-inline-end: 16px;
}
.v-input--horizontal .v-input__append {
margin-inline-start: 16px;
}
.v-input__details {
align-items: flex-end;
display: flex;
font-size: 0.75rem;
font-weight: 400;
grid-area: messages;
letter-spacing: 0.0333333333em;
line-height: normal;
min-height: 22px;
padding-top: 6px;
overflow: hidden;
justify-content: space-between;
}
.v-input__details > .v-icon,
.v-input__prepend > .v-icon,
.v-input__append > .v-icon {
opacity: var(--v-medium-emphasis-opacity);
}
.v-input--disabled .v-input__details > .v-icon,
.v-input--disabled .v-input__details .v-messages, .v-input--error .v-input__details > .v-icon,
.v-input--error .v-input__details .v-messages,
.v-input--disabled .v-input__prepend > .v-icon,
.v-input--disabled .v-input__prepend .v-messages,
.v-input--error .v-input__prepend > .v-icon,
.v-input--error .v-input__prepend .v-messages,
.v-input--disabled .v-input__append > .v-icon,
.v-input--disabled .v-input__append .v-messages,
.v-input--error .v-input__append > .v-icon,
.v-input--error .v-input__append .v-messages {
opacity: 1;
}
.v-input--disabled .v-input__details,
.v-input--disabled .v-input__prepend,
.v-input--disabled .v-input__append {
opacity: var(--v-disabled-opacity);
}
.v-input--error:not(.v-input--disabled) .v-input__details > .v-icon,
.v-input--error:not(.v-input--disabled) .v-input__details .v-messages,
.v-input--error:not(.v-input--disabled) .v-input__prepend > .v-icon,
.v-input--error:not(.v-input--disabled) .v-input__prepend .v-messages,
.v-input--error:not(.v-input--disabled) .v-input__append > .v-icon,
.v-input--error:not(.v-input--disabled) .v-input__append .v-messages {
color: rgb(var(--v-theme-error));
}
.v-input__prepend,
.v-input__append {
display: flex;
align-items: flex-start;
padding-top: var(--v-input-padding-top);
}
.v-input--center-affix .v-input__prepend,
.v-input--center-affix .v-input__append {
align-items: center;
padding-top: 0;
}
.v-input__prepend {
grid-area: prepend;
}
.v-input__append {
grid-area: append;
}
.v-input__control {
display: flex;
grid-area: control;
}
.v-input--hide-spin-buttons input::-webkit-outer-spin-button,
.v-input--hide-spin-buttons input::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
.v-input--hide-spin-buttons input[type=number] {
-moz-appearance: textfield;
}
.v-input--plain-underlined .v-input__prepend,
.v-input--plain-underlined .v-input__append {
align-items: flex-start;
}
.v-input--density-default.v-input--plain-underlined .v-input__prepend, .v-input--density-default.v-input--plain-underlined .v-input__append {
padding-top: calc(var(--v-input-padding-top) + 4px);
}
.v-input--density-comfortable.v-input--plain-underlined .v-input__prepend, .v-input--density-comfortable.v-input--plain-underlined .v-input__append {
padding-top: calc(var(--v-input-padding-top) + 2px);
}
.v-input--density-compact.v-input--plain-underlined .v-input__prepend, .v-input--density-compact.v-input--plain-underlined .v-input__append {
padding-top: calc(var(--v-input-padding-top) + 0px);
}

View File

@@ -0,0 +1,147 @@
import { resolveDirective as _resolveDirective, createVNode as _createVNode } from "vue";
// Styles
import "./VInput.css";
// Components
import { useInputIcon } from "./InputIcon.mjs";
import { VMessages } from "../VMessages/VMessages.mjs"; // Composables
import { makeComponentProps } from "../../composables/component.mjs";
import { makeDensityProps, useDensity } from "../../composables/density.mjs";
import { IconValue } from "../../composables/icons.mjs";
import { useRtl } from "../../composables/locale.mjs";
import { makeValidationProps, useValidation } from "../../composables/validation.mjs"; // Utilities
import { computed } from 'vue';
import { EventProp, genericComponent, getUid, propsFactory, useRender } from "../../util/index.mjs"; // Types
export const makeVInputProps = propsFactory({
id: String,
appendIcon: IconValue,
centerAffix: {
type: Boolean,
default: true
},
prependIcon: IconValue,
hideDetails: [Boolean, String],
hideSpinButtons: Boolean,
hint: String,
persistentHint: Boolean,
messages: {
type: [Array, String],
default: () => []
},
direction: {
type: String,
default: 'horizontal',
validator: v => ['horizontal', 'vertical'].includes(v)
},
'onClick:prepend': EventProp(),
'onClick:append': EventProp(),
...makeComponentProps(),
...makeDensityProps(),
...makeValidationProps()
}, 'VInput');
export const VInput = genericComponent()({
name: 'VInput',
props: {
...makeVInputProps()
},
emits: {
'update:modelValue': value => true
},
setup(props, _ref) {
let {
attrs,
slots,
emit
} = _ref;
const {
densityClasses
} = useDensity(props);
const {
rtlClasses
} = useRtl();
const {
InputIcon
} = useInputIcon(props);
const uid = getUid();
const id = computed(() => props.id || `input-${uid}`);
const messagesId = computed(() => `${id.value}-messages`);
const {
errorMessages,
isDirty,
isDisabled,
isReadonly,
isPristine,
isValid,
isValidating,
reset,
resetValidation,
validate,
validationClasses
} = useValidation(props, 'v-input', id);
const slotProps = computed(() => ({
id,
messagesId,
isDirty,
isDisabled,
isReadonly,
isPristine,
isValid,
isValidating,
reset,
resetValidation,
validate
}));
const messages = computed(() => {
if (props.errorMessages?.length || !isPristine.value && errorMessages.value.length) {
return errorMessages.value;
} else if (props.hint && (props.persistentHint || props.focused)) {
return props.hint;
} else {
return props.messages;
}
});
useRender(() => {
const hasPrepend = !!(slots.prepend || props.prependIcon);
const hasAppend = !!(slots.append || props.appendIcon);
const hasMessages = messages.value.length > 0;
const hasDetails = !props.hideDetails || props.hideDetails === 'auto' && (hasMessages || !!slots.details);
return _createVNode("div", {
"class": ['v-input', `v-input--${props.direction}`, {
'v-input--center-affix': props.centerAffix,
'v-input--hide-spin-buttons': props.hideSpinButtons
}, densityClasses.value, rtlClasses.value, validationClasses.value, props.class],
"style": props.style
}, [hasPrepend && _createVNode("div", {
"key": "prepend",
"class": "v-input__prepend"
}, [slots.prepend?.(slotProps.value), props.prependIcon && _createVNode(InputIcon, {
"key": "prepend-icon",
"name": "prepend"
}, null)]), slots.default && _createVNode("div", {
"class": "v-input__control"
}, [slots.default?.(slotProps.value)]), hasAppend && _createVNode("div", {
"key": "append",
"class": "v-input__append"
}, [props.appendIcon && _createVNode(InputIcon, {
"key": "append-icon",
"name": "append"
}, null), slots.append?.(slotProps.value)]), hasDetails && _createVNode("div", {
"class": "v-input__details"
}, [_createVNode(VMessages, {
"id": messagesId.value,
"active": hasMessages,
"messages": messages.value
}, {
message: slots.message
}), slots.details?.(slotProps.value)])]);
});
return {
reset,
resetValidation,
validate,
isValid,
errorMessages
};
}
});
//# sourceMappingURL=VInput.mjs.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,115 @@
@use 'sass:math'
@use 'sass:selector'
@use '../../styles/tools'
@use './variables' as *
.v-input
display: grid
flex: 1 1 auto
font-size: $input-font-size
font-weight: $input-font-weight
line-height: $input-line-height
&--disabled
pointer-events: none
@at-root
@include tools.density('v-input', $input-density) using ($modifier)
--v-input-control-height: #{$input-control-height + $modifier}
--v-input-padding-top: #{16px + $modifier * .5}
.v-input--vertical
grid-template-areas: "append" "control" "prepend"
grid-template-rows: max-content auto max-content
grid-template-columns: min-content
.v-input__prepend
margin-block-start: $input-affix-margin-inside
.v-input__append
margin-block-end: $input-affix-margin-inside
.v-input--horizontal
grid-template-areas: "prepend control append" "a messages b"
grid-template-columns: max-content minmax(0, 1fr) max-content
grid-template-rows: auto auto
.v-input__prepend
margin-inline-end: $input-affix-margin-inside
.v-input__append
margin-inline-start: $input-affix-margin-inside
.v-input__details
align-items: flex-end
display: flex
font-size: $input-details-font-size
font-weight: $input-details-font-weight
grid-area: messages
letter-spacing: $input-details-letter-spacing
line-height: $input-details-line-height
min-height: $input-details-min-height
padding-top: $input-details-padding-above
overflow: hidden
justify-content: space-between
.v-input__details,
.v-input__prepend,
.v-input__append
> .v-icon
opacity: var(--v-medium-emphasis-opacity)
.v-input--disabled &,
.v-input--error &
> .v-icon,
.v-messages
opacity: 1
.v-input--disabled &
opacity: var(--v-disabled-opacity)
.v-input--error:not(.v-input--disabled) &
> .v-icon,
.v-messages
color: rgb(var(--v-theme-error))
.v-input__prepend,
.v-input__append
display: flex
align-items: flex-start
padding-top: var(--v-input-padding-top)
.v-input--center-affix &
align-items: center
padding-top: 0
.v-input__prepend
grid-area: prepend
.v-input__append
grid-area: append
.v-input__control
display: flex
grid-area: control
.v-input
&--hide-spin-buttons
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button
-webkit-appearance: none
margin: 0
input[type=number]
-moz-appearance: textfield
&--plain-underlined
.v-input__prepend,
.v-input__append
$this: &
align-items: flex-start
@at-root
@include tools.density('v-input', $input-density) using ($modifier)
@at-root #{selector.append(&, $this)}
padding-top: calc(var(--v-input-padding-top) + #{math.max(0px, 4px + $modifier * .25)})

View File

@@ -0,0 +1,26 @@
@use 'sass:map';
@use '../../styles/settings';
@use '../../styles/tools';
// CONTROL
$input-density: ('default': 0, 'comfortable': -2, 'compact': -4) !default;
$input-control-height: 56px !default;
$input-font-size: tools.map-deep-get(settings.$typography, 'body-1', 'size') !default;
$input-font-weight: tools.map-deep-get(settings.$typography, 'body-1', 'weight') !default;
$input-line-height: 1.5 !default;
// CHIPS
$input-chips-margin-top: null !default;
$input-chips-margin-bottom: null !default;
// DETAILS
$input-details-font-size: .75rem !default;
$input-details-font-weight: 400 !default;
$input-details-letter-spacing: .0333333333em !default;
$input-details-line-height: normal !default;
$input-details-min-height: 22px !default;
$input-details-padding-above: 6px !default;
$input-details-transition: 150ms settings.$standard-easing !default;
// AFFIXES
$input-affix-margin-inside: 16px !default;

View File

@@ -0,0 +1,423 @@
import * as vue from 'vue';
import { ComponentPropsOptions, ExtractPropTypes, VNodeChild, VNode, JSXComponent, PropType, ComputedRef, Ref } from 'vue';
type SlotsToProps<U extends RawSlots, T = MakeInternalSlots<U>> = {
$children?: (VNodeChild | (T extends {
default: infer V;
} ? V : {}) | {
[K in keyof T]?: T[K];
});
'v-slots'?: {
[K in keyof T]?: T[K] | false;
};
} & {
[K in keyof T as `v-slot:${K & string}`]?: T[K] | false;
};
type RawSlots = Record<string, unknown>;
type Slot<T> = [T] extends [never] ? () => VNodeChild : (arg: T) => VNodeChild;
type VueSlot<T> = [T] extends [never] ? () => VNode[] : (arg: T) => VNode[];
type MakeInternalSlots<T extends RawSlots> = {
[K in keyof T]: Slot<T[K]>;
};
type MakeSlots<T extends RawSlots> = {
[K in keyof T]: VueSlot<T[K]>;
};
type GenericProps<Props, Slots extends Record<string, unknown>> = {
$props: Props & SlotsToProps<Slots>;
$slots: MakeSlots<Slots>;
};
interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions>, Props = ExtractPropTypes<PropsOptions>> {
filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): Partial<Pick<T, U>>;
}
type Density = null | 'default' | 'comfortable' | 'compact';
type ValidationResult = string | boolean;
type ValidationRule = ValidationResult | PromiseLike<ValidationResult> | ((value: any) => ValidationResult) | ((value: any) => PromiseLike<ValidationResult>);
type IconValue = string | (string | [path: string, opacity: number])[] | JSXComponent;
declare const IconValue: PropType<IconValue>;
type VMessageSlot = {
message: string;
};
interface VInputSlot {
id: ComputedRef<string>;
messagesId: ComputedRef<string>;
isDirty: ComputedRef<boolean>;
isDisabled: ComputedRef<boolean>;
isReadonly: ComputedRef<boolean>;
isPristine: Ref<boolean>;
isValid: ComputedRef<boolean | null>;
isValidating: Ref<boolean>;
reset: () => void;
resetValidation: () => void;
validate: () => void;
}
type VInputSlots = {
default: VInputSlot;
prepend: VInputSlot;
append: VInputSlot;
details: VInputSlot;
message: VMessageSlot;
};
declare const VInput: {
new (...args: any[]): vue.CreateComponentPublicInstance<{
error: boolean;
direction: "horizontal" | "vertical";
style: vue.StyleValue;
disabled: boolean | null;
readonly: boolean | null;
messages: string | readonly string[];
density: Density;
focused: boolean;
errorMessages: string | readonly string[] | null;
maxErrors: string | number;
rules: readonly ValidationRule[];
centerAffix: boolean;
hideSpinButtons: boolean;
persistentHint: boolean;
} & {
id?: string | undefined;
name?: string | undefined;
label?: string | undefined;
class?: any;
prependIcon?: IconValue | undefined;
appendIcon?: IconValue | undefined;
'onClick:append'?: ((args_0: MouseEvent) => void) | undefined;
'onClick:prepend'?: ((args_0: MouseEvent) => void) | undefined;
'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
validateOn?: "lazy" | ("input" | "blur" | "submit") | "input lazy" | "blur lazy" | "submit lazy" | "lazy input" | "lazy blur" | "lazy submit" | undefined;
validationValue?: any;
hint?: string | undefined;
hideDetails?: boolean | "auto" | undefined;
} & {}, {
reset: () => void;
resetValidation: () => void;
validate: (silent?: boolean) => Promise<string[]>;
isValid: ComputedRef<boolean | null>;
errorMessages: ComputedRef<string[]>;
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<{
'update:modelValue': (value: any) => true;
}, "$children" | "v-slot:default" | "v-slots" | "v-slot:append" | "v-slot:prepend" | "modelValue" | "update:modelValue" | "v-slot:message" | "v-slot:details">, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
error: boolean;
direction: "horizontal" | "vertical";
style: vue.StyleValue;
disabled: boolean | null;
readonly: boolean | null;
messages: string | readonly string[];
density: Density;
focused: boolean;
errorMessages: string | readonly string[] | null;
maxErrors: string | number;
rules: readonly ValidationRule[];
centerAffix: boolean;
hideSpinButtons: boolean;
persistentHint: boolean;
} & {
id?: string | undefined;
name?: string | undefined;
label?: string | undefined;
class?: any;
prependIcon?: IconValue | undefined;
appendIcon?: IconValue | undefined;
'onClick:append'?: ((args_0: MouseEvent) => void) | undefined;
'onClick:prepend'?: ((args_0: MouseEvent) => void) | undefined;
'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
validateOn?: "lazy" | ("input" | "blur" | "submit") | "input lazy" | "blur lazy" | "submit lazy" | "lazy input" | "lazy blur" | "lazy submit" | undefined;
validationValue?: any;
hint?: string | undefined;
hideDetails?: boolean | "auto" | undefined;
} & {}, {
error: boolean;
direction: "horizontal" | "vertical";
style: vue.StyleValue;
disabled: boolean | null;
readonly: boolean | null;
messages: string | readonly string[];
density: Density;
focused: boolean;
errorMessages: string | readonly string[] | null;
maxErrors: string | number;
rules: readonly ValidationRule[];
centerAffix: boolean;
hideSpinButtons: boolean;
persistentHint: boolean;
}, true, {}, vue.SlotsType<Partial<{
default: (arg: VInputSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, {
[key: string]: any;
}>[];
prepend: (arg: VInputSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, {
[key: string]: any;
}>[];
append: (arg: VInputSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, {
[key: string]: any;
}>[];
details: (arg: VInputSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, {
[key: string]: any;
}>[];
message: (arg: VMessageSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, {
[key: string]: any;
}>[];
}>>, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, {
error: boolean;
direction: "horizontal" | "vertical";
style: vue.StyleValue;
disabled: boolean | null;
readonly: boolean | null;
messages: string | readonly string[];
density: Density;
focused: boolean;
errorMessages: string | readonly string[] | null;
maxErrors: string | number;
rules: readonly ValidationRule[];
centerAffix: boolean;
hideSpinButtons: boolean;
persistentHint: boolean;
} & {
id?: string | undefined;
name?: string | undefined;
label?: string | undefined;
class?: any;
prependIcon?: IconValue | undefined;
appendIcon?: IconValue | undefined;
'onClick:append'?: ((args_0: MouseEvent) => void) | undefined;
'onClick:prepend'?: ((args_0: MouseEvent) => void) | undefined;
'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
validateOn?: "lazy" | ("input" | "blur" | "submit") | "input lazy" | "blur lazy" | "submit lazy" | "lazy input" | "lazy blur" | "lazy submit" | undefined;
validationValue?: any;
hint?: string | undefined;
hideDetails?: boolean | "auto" | undefined;
} & {}, {
reset: () => void;
resetValidation: () => void;
validate: (silent?: boolean) => Promise<string[]>;
isValid: ComputedRef<boolean | null>;
errorMessages: ComputedRef<string[]>;
}, {}, {}, {}, {
error: boolean;
direction: "horizontal" | "vertical";
style: vue.StyleValue;
disabled: boolean | null;
readonly: boolean | null;
messages: string | readonly string[];
density: Density;
focused: boolean;
errorMessages: string | readonly string[] | null;
maxErrors: string | number;
rules: readonly ValidationRule[];
centerAffix: boolean;
hideSpinButtons: boolean;
persistentHint: boolean;
}>;
__isFragment?: undefined;
__isTeleport?: undefined;
__isSuspense?: undefined;
} & vue.ComponentOptionsBase<{
error: boolean;
direction: "horizontal" | "vertical";
style: vue.StyleValue;
disabled: boolean | null;
readonly: boolean | null;
messages: string | readonly string[];
density: Density;
focused: boolean;
errorMessages: string | readonly string[] | null;
maxErrors: string | number;
rules: readonly ValidationRule[];
centerAffix: boolean;
hideSpinButtons: boolean;
persistentHint: boolean;
} & {
id?: string | undefined;
name?: string | undefined;
label?: string | undefined;
class?: any;
prependIcon?: IconValue | undefined;
appendIcon?: IconValue | undefined;
'onClick:append'?: ((args_0: MouseEvent) => void) | undefined;
'onClick:prepend'?: ((args_0: MouseEvent) => void) | undefined;
'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
validateOn?: "lazy" | ("input" | "blur" | "submit") | "input lazy" | "blur lazy" | "submit lazy" | "lazy input" | "lazy blur" | "lazy submit" | undefined;
validationValue?: any;
hint?: string | undefined;
hideDetails?: boolean | "auto" | undefined;
} & {}, {
reset: () => void;
resetValidation: () => void;
validate: (silent?: boolean) => Promise<string[]>;
isValid: ComputedRef<boolean | null>;
errorMessages: ComputedRef<string[]>;
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Omit<{
'update:modelValue': (value: any) => true;
}, "$children" | "v-slot:default" | "v-slots" | "v-slot:append" | "v-slot:prepend" | "modelValue" | "update:modelValue" | "v-slot:message" | "v-slot:details">, string, {
error: boolean;
direction: "horizontal" | "vertical";
style: vue.StyleValue;
disabled: boolean | null;
readonly: boolean | null;
messages: string | readonly string[];
density: Density;
focused: boolean;
errorMessages: string | readonly string[] | null;
maxErrors: string | number;
rules: readonly ValidationRule[];
centerAffix: boolean;
hideSpinButtons: boolean;
persistentHint: boolean;
}, {}, string, vue.SlotsType<Partial<{
default: (arg: VInputSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, {
[key: string]: any;
}>[];
prepend: (arg: VInputSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, {
[key: string]: any;
}>[];
append: (arg: VInputSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, {
[key: string]: any;
}>[];
details: (arg: VInputSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, {
[key: string]: any;
}>[];
message: (arg: VMessageSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, {
[key: string]: any;
}>[];
}>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new <T>(props: {
modelValue?: T | null | undefined;
'onUpdate:modelValue'?: ((value: T | null) => void) | undefined;
}, slots: VInputSlots) => GenericProps<{
modelValue?: T | null | undefined;
'onUpdate:modelValue'?: ((value: T | null) => void) | undefined;
}, VInputSlots>) & FilterPropsOptions<{
focused: BooleanConstructor;
'onUpdate:focused': PropType<(args_0: boolean) => void>;
disabled: {
type: PropType<boolean | null>;
default: null;
};
error: BooleanConstructor;
errorMessages: {
type: PropType<string | readonly string[] | null>;
default: () => never[];
};
maxErrors: {
type: (StringConstructor | NumberConstructor)[];
default: number;
};
name: StringConstructor;
label: StringConstructor;
readonly: {
type: PropType<boolean | null>;
default: null;
};
rules: {
type: PropType<readonly ValidationRule[]>;
default: () => never[];
};
modelValue: null;
validateOn: PropType<"lazy" | ("input" | "blur" | "submit") | "input lazy" | "blur lazy" | "submit lazy" | "lazy input" | "lazy blur" | "lazy submit" | undefined>;
validationValue: null;
density: {
type: PropType<Density>;
default: string;
validator: (v: any) => boolean;
};
class: PropType<any>;
style: {
type: PropType<vue.StyleValue>;
default: null;
};
id: StringConstructor;
appendIcon: PropType<IconValue>;
centerAffix: {
type: BooleanConstructor;
default: boolean;
};
prependIcon: PropType<IconValue>;
hideDetails: PropType<boolean | "auto">;
hideSpinButtons: BooleanConstructor;
hint: StringConstructor;
persistentHint: BooleanConstructor;
messages: {
type: PropType<string | readonly string[]>;
default: () => never[];
};
direction: {
type: PropType<"horizontal" | "vertical">;
default: string;
validator: (v: any) => boolean;
};
'onClick:prepend': PropType<(args_0: MouseEvent) => void>;
'onClick:append': PropType<(args_0: MouseEvent) => void>;
}, vue.ExtractPropTypes<{
focused: BooleanConstructor;
'onUpdate:focused': PropType<(args_0: boolean) => void>;
disabled: {
type: PropType<boolean | null>;
default: null;
};
error: BooleanConstructor;
errorMessages: {
type: PropType<string | readonly string[] | null>;
default: () => never[];
};
maxErrors: {
type: (StringConstructor | NumberConstructor)[];
default: number;
};
name: StringConstructor;
label: StringConstructor;
readonly: {
type: PropType<boolean | null>;
default: null;
};
rules: {
type: PropType<readonly ValidationRule[]>;
default: () => never[];
};
modelValue: null;
validateOn: PropType<"lazy" | ("input" | "blur" | "submit") | "input lazy" | "blur lazy" | "submit lazy" | "lazy input" | "lazy blur" | "lazy submit" | undefined>;
validationValue: null;
density: {
type: PropType<Density>;
default: string;
validator: (v: any) => boolean;
};
class: PropType<any>;
style: {
type: PropType<vue.StyleValue>;
default: null;
};
id: StringConstructor;
appendIcon: PropType<IconValue>;
centerAffix: {
type: BooleanConstructor;
default: boolean;
};
prependIcon: PropType<IconValue>;
hideDetails: PropType<boolean | "auto">;
hideSpinButtons: BooleanConstructor;
hint: StringConstructor;
persistentHint: BooleanConstructor;
messages: {
type: PropType<string | readonly string[]>;
default: () => never[];
};
direction: {
type: PropType<"horizontal" | "vertical">;
default: string;
validator: (v: any) => boolean;
};
'onClick:prepend': PropType<(args_0: MouseEvent) => void>;
'onClick:append': PropType<(args_0: MouseEvent) => void>;
}>>;
type VInput = InstanceType<typeof VInput>;
export { VInput };

View File

@@ -0,0 +1,2 @@
export { VInput } from "./VInput.mjs";
//# sourceMappingURL=index.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.mjs","names":["VInput"],"sources":["../../../src/components/VInput/index.ts"],"sourcesContent":["export { VInput } from './VInput'\n"],"mappings":"SAASA,MAAM"}