Major overhaul to the theme and now functioning.
This commit is contained in:
Generated
Vendored
+19
@@ -0,0 +1,19 @@
|
||||
/* region INPUT */
|
||||
.v-color-input {
|
||||
padding: 0;
|
||||
}
|
||||
.v-color-input.v-input--density-default .v-color-input__pip {
|
||||
--v-avatar-height: 40px;
|
||||
}
|
||||
|
||||
.v-color-input.v-input--density-comfortable .v-color-input__pip {
|
||||
--v-avatar-height: 32px;
|
||||
}
|
||||
|
||||
.v-color-input.v-input--density-compact .v-color-input__pip {
|
||||
--v-avatar-height: 28px;
|
||||
}
|
||||
|
||||
.v-color-input .v-color-input__pip.v-avatar--variant-text {
|
||||
--v-avatar-height: min-content;
|
||||
}
|
||||
Generated
Vendored
+2716
File diff suppressed because it is too large
Load Diff
Generated
Vendored
+150
@@ -0,0 +1,150 @@
|
||||
import { Fragment as _Fragment, createVNode as _createVNode, createElementVNode as _createElementVNode, mergeProps as _mergeProps } from "vue";
|
||||
// Styles
|
||||
import "./VColorInput.css";
|
||||
|
||||
// Components
|
||||
import { VAvatar } from "../../components/VAvatar/index.js";
|
||||
import { makeVColorPickerProps, VColorPicker } from "../../components/VColorPicker/VColorPicker.js";
|
||||
import { makeVConfirmEditProps, VConfirmEdit } from "../../components/VConfirmEdit/VConfirmEdit.js";
|
||||
import { VMenu } from "../../components/VMenu/VMenu.js";
|
||||
import { makeVTextFieldProps, VTextField } from "../../components/VTextField/VTextField.js"; // Composables
|
||||
import { makeFocusProps } from "../../composables/focus.js";
|
||||
import { useProxiedModel } from "../../composables/proxiedModel.js"; // Utilities
|
||||
import { computed, shallowRef } from 'vue';
|
||||
import { genericComponent, omit, propsFactory, useRender } from "../../util/index.js"; // Types
|
||||
const availablePipLocations = ['prepend', 'prepend-inner', 'append', 'append-inner'];
|
||||
export const makeVColorInputProps = propsFactory({
|
||||
hidePip: Boolean,
|
||||
colorPip: Boolean,
|
||||
pipIcon: {
|
||||
type: String,
|
||||
default: '$color'
|
||||
},
|
||||
pipLocation: {
|
||||
type: String,
|
||||
default: 'prepend',
|
||||
validator: v => availablePipLocations.includes(v)
|
||||
},
|
||||
pipVariant: {
|
||||
type: String,
|
||||
default: 'text'
|
||||
},
|
||||
pickerProps: Object,
|
||||
...makeFocusProps(),
|
||||
...makeVConfirmEditProps(),
|
||||
...makeVTextFieldProps(),
|
||||
...omit(makeVColorPickerProps(), ['location', 'height', 'minHeight', 'maxHeight'])
|
||||
}, 'VColorInput');
|
||||
export const VColorInput = genericComponent()({
|
||||
name: 'VColorInput',
|
||||
props: makeVColorInputProps(),
|
||||
emits: {
|
||||
'update:modelValue': val => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const model = useProxiedModel(props, 'modelValue');
|
||||
const menu = shallowRef(false);
|
||||
const isFocused = shallowRef(props.focused);
|
||||
const isInteractive = computed(() => !props.disabled && !props.readonly);
|
||||
const display = computed(() => model.value || null);
|
||||
function onKeydown(e) {
|
||||
if (e.key !== 'Enter') return;
|
||||
if (!menu.value || !isFocused.value) {
|
||||
menu.value = true;
|
||||
return;
|
||||
}
|
||||
const target = e.target;
|
||||
model.value = target.value;
|
||||
}
|
||||
function onClick(e) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
menu.value = true;
|
||||
}
|
||||
function onSave() {
|
||||
menu.value = false;
|
||||
}
|
||||
function onCancel() {
|
||||
menu.value = false;
|
||||
}
|
||||
useRender(() => {
|
||||
const confirmEditProps = VConfirmEdit.filterProps(props);
|
||||
const colorPickerProps = {
|
||||
...VColorPicker.filterProps(omit(props, ['active', 'bgColor', 'color', 'rounded', 'maxWidth', 'minWidth', 'width'])),
|
||||
...props.pickerProps
|
||||
};
|
||||
const textFieldProps = VTextField.filterProps(props);
|
||||
const slotWithPip = props.hidePip ? undefined : {
|
||||
[props.pipLocation]: arg => _createElementVNode(_Fragment, null, [_createVNode(VAvatar, {
|
||||
"class": "v-color-input__pip",
|
||||
"color": props.colorPip ? model.value : undefined,
|
||||
"variant": props.pipVariant,
|
||||
"icon": props.pipIcon
|
||||
}, null), slots[props.pipLocation]?.(arg)])
|
||||
};
|
||||
return _createVNode(VTextField, _mergeProps(textFieldProps, {
|
||||
"class": ['v-color-input', props.class],
|
||||
"style": props.style,
|
||||
"modelValue": display.value,
|
||||
"onKeydown": isInteractive.value ? onKeydown : undefined,
|
||||
"focused": menu.value || isFocused.value,
|
||||
"onClick:control": isInteractive.value ? onClick : undefined,
|
||||
"onClick:prependInner": isInteractive.value ? onClick : undefined,
|
||||
"onUpdate:focused": event => isFocused.value = event,
|
||||
"onClick:appendInner": isInteractive.value ? onClick : undefined,
|
||||
"onUpdate:modelValue": val => {
|
||||
model.value = val;
|
||||
}
|
||||
}), {
|
||||
...slots,
|
||||
...slotWithPip,
|
||||
default: () => _createElementVNode(_Fragment, null, [_createVNode(VMenu, {
|
||||
"modelValue": menu.value,
|
||||
"onUpdate:modelValue": $event => menu.value = $event,
|
||||
"activator": "parent",
|
||||
"minWidth": "0",
|
||||
"closeOnContentClick": false,
|
||||
"openOnClick": false
|
||||
}, {
|
||||
default: () => [_createVNode(VConfirmEdit, _mergeProps(confirmEditProps, {
|
||||
"modelValue": model.value,
|
||||
"onUpdate:modelValue": $event => model.value = $event,
|
||||
"onSave": onSave,
|
||||
"onCancel": onCancel
|
||||
}), {
|
||||
default: _ref2 => {
|
||||
let {
|
||||
actions,
|
||||
model: proxyModel,
|
||||
save,
|
||||
cancel,
|
||||
isPristine
|
||||
} = _ref2;
|
||||
function onUpdateModel(value) {
|
||||
if (!props.hideActions) {
|
||||
proxyModel.value = value;
|
||||
} else {
|
||||
model.value = value;
|
||||
}
|
||||
}
|
||||
return _createVNode(VColorPicker, _mergeProps(colorPickerProps, {
|
||||
"modelValue": props.hideActions ? model.value : proxyModel.value,
|
||||
"onUpdate:modelValue": value => onUpdateModel(value)
|
||||
}), {
|
||||
actions: !props.hideActions ? () => slots.actions?.({
|
||||
save,
|
||||
cancel,
|
||||
isPristine
|
||||
}) ?? actions() : undefined
|
||||
});
|
||||
}
|
||||
})]
|
||||
}), slots.default?.()])
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=VColorInput.js.map
|
||||
Generated
Vendored
+1
File diff suppressed because one or more lines are too long
Generated
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
@use '../../styles/tools'
|
||||
@use './variables' as *
|
||||
|
||||
@include tools.layer('components')
|
||||
/* region INPUT */
|
||||
.v-color-input
|
||||
padding: 0
|
||||
|
||||
@at-root
|
||||
@include tools.density('v-color-input.v-input', $color-input-pip-density) using ($modifier)
|
||||
.v-color-input__pip
|
||||
--v-avatar-height: #{$color-input-pip-avatar-size + $modifier}
|
||||
|
||||
.v-color-input__pip.v-avatar--variant-text
|
||||
--v-avatar-height: min-content
|
||||
Generated
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
// Defaults
|
||||
$color-input-pip-default-color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity)) !default;
|
||||
$color-input-pip-avatar-size: 40px !default;
|
||||
$color-input-pip-density: ('default': 0, 'comfortable': -2, 'compact': -3) !default;
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
export { VColorInput } from './VColorInput.js';
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
export { VColorInput } from "./VColorInput.js";
|
||||
//# sourceMappingURL=index.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.js","names":["VColorInput"],"sources":["../../../src/labs/VColorInput/index.ts"],"sourcesContent":["export { VColorInput } from './VColorInput'\n"],"mappings":"SAASA,WAAW","ignoreList":[]}
|
||||
Generated
Vendored
+10959
File diff suppressed because one or more lines are too long
Generated
Vendored
+286
@@ -0,0 +1,286 @@
|
||||
import { Fragment as _Fragment, mergeProps as _mergeProps, createVNode as _createVNode, createElementVNode as _createElementVNode } from "vue";
|
||||
// Components
|
||||
import { makeVConfirmEditProps, VConfirmEdit } from "../../components/VConfirmEdit/VConfirmEdit.js";
|
||||
import { makeVDatePickerProps, VDatePicker } from "../../components/VDatePicker/VDatePicker.js";
|
||||
import { useInputIcon } from "../../components/VInput/InputIcon.js";
|
||||
import { VMenu } from "../../components/VMenu/VMenu.js";
|
||||
import { makeVTextFieldProps, VTextField } from "../../components/VTextField/VTextField.js"; // Composables
|
||||
import { useCalendarRange } from "../../composables/calendar.js";
|
||||
import { useDate } from "../../composables/date/index.js";
|
||||
import { createDateRange } from "../../composables/date/date.js";
|
||||
import { makeDateFormatProps, useDateFormat } from "../../composables/dateFormat.js";
|
||||
import { makeDisplayProps, useDisplay } from "../../composables/display.js";
|
||||
import { makeFocusProps } from "../../composables/focus.js";
|
||||
import { forwardRefs } from "../../composables/forwardRefs.js";
|
||||
import { useLocale } from "../../composables/locale.js";
|
||||
import { useProxiedModel } from "../../composables/proxiedModel.js"; // Utilities
|
||||
import { computed, ref, shallowRef, watch } from 'vue';
|
||||
import { genericComponent, omit, pick, propsFactory, useRender, wrapInArray } from "../../util/index.js"; // Types
|
||||
// Types
|
||||
export const makeVDateInputProps = propsFactory({
|
||||
displayFormat: {
|
||||
type: [Function, String],
|
||||
default: undefined
|
||||
},
|
||||
location: {
|
||||
type: String,
|
||||
default: 'bottom start'
|
||||
},
|
||||
menu: Boolean,
|
||||
updateOn: {
|
||||
type: Array,
|
||||
default: () => ['blur', 'enter']
|
||||
},
|
||||
pickerProps: Object,
|
||||
...makeDateFormatProps(),
|
||||
...makeDisplayProps({
|
||||
mobile: null
|
||||
}),
|
||||
...makeFocusProps(),
|
||||
...makeVConfirmEditProps({
|
||||
hideActions: true
|
||||
}),
|
||||
...makeVTextFieldProps({
|
||||
prependIcon: '$calendar'
|
||||
}),
|
||||
...omit(makeVDatePickerProps({
|
||||
hideHeader: true,
|
||||
showAdjacentMonths: true
|
||||
}), ['location', 'rounded', 'height', 'minHeight', 'maxHeight'])
|
||||
}, 'VDateInput');
|
||||
export const VDateInput = genericComponent()({
|
||||
name: 'VDateInput',
|
||||
props: makeVDateInputProps(),
|
||||
emits: {
|
||||
save: value => true,
|
||||
cancel: () => true,
|
||||
'update:focused': val => true,
|
||||
'update:modelValue': val => true,
|
||||
'update:menu': val => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
emit,
|
||||
slots
|
||||
} = _ref;
|
||||
const {
|
||||
t,
|
||||
current: currentLocale
|
||||
} = useLocale();
|
||||
const adapter = useDate();
|
||||
const {
|
||||
isValid,
|
||||
parseDate,
|
||||
formatDate,
|
||||
parserFormat
|
||||
} = useDateFormat(props, currentLocale);
|
||||
const {
|
||||
mobile
|
||||
} = useDisplay(props);
|
||||
const {
|
||||
InputIcon
|
||||
} = useInputIcon(props);
|
||||
const {
|
||||
clampDate,
|
||||
isInAllowedRange
|
||||
} = useCalendarRange(props);
|
||||
const emptyModelValue = () => props.multiple ? [] : null;
|
||||
const model = useProxiedModel(props, 'modelValue', emptyModelValue(), val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val, val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val);
|
||||
const menu = useProxiedModel(props, 'menu');
|
||||
const isEditingInput = shallowRef(false);
|
||||
const isFocused = shallowRef(props.focused);
|
||||
const vTextFieldRef = ref();
|
||||
const disabledActions = ref(['save']);
|
||||
function format(date) {
|
||||
if (typeof props.displayFormat === 'function') {
|
||||
return props.displayFormat(date);
|
||||
}
|
||||
if (props.displayFormat) {
|
||||
return adapter.format(date, props.displayFormat ?? 'keyboardDate');
|
||||
}
|
||||
return formatDate(date);
|
||||
}
|
||||
const display = computed(() => {
|
||||
const value = wrapInArray(model.value);
|
||||
if (!value.length) return null;
|
||||
if (props.multiple === true) {
|
||||
return t('$vuetify.datePicker.itemsSelected', value.length);
|
||||
}
|
||||
if (props.multiple === 'range') {
|
||||
const start = value[0];
|
||||
const end = value[value.length - 1];
|
||||
if (!adapter.isValid(start) || !adapter.isValid(end)) return '';
|
||||
return `${format(adapter.date(start))} - ${format(adapter.date(end))}`;
|
||||
}
|
||||
return adapter.isValid(model.value) ? format(adapter.date(model.value)) : '';
|
||||
});
|
||||
const inputmode = computed(() => {
|
||||
if (!mobile.value) return undefined;
|
||||
if (isEditingInput.value) return 'text';
|
||||
return 'none';
|
||||
});
|
||||
const isInteractive = computed(() => !props.disabled && !props.readonly);
|
||||
const isReadonly = computed(() => {
|
||||
if (!props.updateOn.length) return true;
|
||||
return !(mobile.value && isEditingInput.value) && props.readonly;
|
||||
});
|
||||
watch(menu, val => {
|
||||
if (val) return;
|
||||
isEditingInput.value = false;
|
||||
disabledActions.value = ['save'];
|
||||
});
|
||||
function onKeydown(e) {
|
||||
if (e.key !== 'Enter') return;
|
||||
if (!menu.value || !isFocused.value) {
|
||||
menu.value = true;
|
||||
}
|
||||
if (props.updateOn.includes('enter') && !props.readonly) {
|
||||
onUserInput(e.target);
|
||||
}
|
||||
}
|
||||
function onClick(e) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
if (menu.value && mobile.value) {
|
||||
isEditingInput.value = true;
|
||||
} else {
|
||||
menu.value = true;
|
||||
}
|
||||
}
|
||||
function onCancel() {
|
||||
emit('cancel');
|
||||
menu.value = false;
|
||||
isEditingInput.value = false;
|
||||
}
|
||||
function onSave(value) {
|
||||
emit('save', value);
|
||||
menu.value = false;
|
||||
}
|
||||
function onUpdateDisplayModel(value) {
|
||||
if (value != null) return;
|
||||
model.value = emptyModelValue();
|
||||
}
|
||||
function onBlur(e) {
|
||||
if (props.updateOn.includes('blur') && !props.readonly) {
|
||||
onUserInput(e.target);
|
||||
}
|
||||
|
||||
// When in mobile mode and editing is done (due to keyboard dismissal), close the menu
|
||||
if (mobile.value && isEditingInput.value && !isFocused.value) {
|
||||
menu.value = false;
|
||||
isEditingInput.value = false;
|
||||
}
|
||||
}
|
||||
function onUserInput(_ref2) {
|
||||
let {
|
||||
value
|
||||
} = _ref2;
|
||||
if (!value.trim()) {
|
||||
model.value = emptyModelValue();
|
||||
} else if (!props.multiple) {
|
||||
if (isValid(value)) {
|
||||
model.value = clampDate(parseDate(value));
|
||||
}
|
||||
} else {
|
||||
const parts = value.trim().split(/\D+-\D+|[^\d\-/.]+/);
|
||||
if (parts.every(isValid)) {
|
||||
if (props.multiple === 'range') {
|
||||
const [start, stop] = parts.map(parseDate).map(clampDate).toSorted((a, b) => adapter.isAfter(a, b) ? 1 : -1);
|
||||
model.value = createDateRange(adapter, start, stop);
|
||||
} else {
|
||||
model.value = parts.map(parseDate).filter(isInAllowedRange);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
useRender(() => {
|
||||
const hasPrepend = !!(props.prependIcon || slots.prepend);
|
||||
const confirmEditProps = VConfirmEdit.filterProps(props);
|
||||
const datePickerProps = {
|
||||
...VDatePicker.filterProps(omit(props, ['active', 'bgColor', 'color', 'location', 'rounded', 'maxWidth', 'minWidth', 'width'])),
|
||||
...props.pickerProps
|
||||
};
|
||||
const datePickerSlots = pick(slots, ['title', 'header', 'day', 'month', 'year']);
|
||||
const textFieldProps = VTextField.filterProps(omit(props, ['placeholder']));
|
||||
return _createVNode(VTextField, _mergeProps({
|
||||
"ref": vTextFieldRef
|
||||
}, textFieldProps, {
|
||||
"class": ['v-date-input', props.class],
|
||||
"style": props.style,
|
||||
"modelValue": display.value,
|
||||
"inputmode": inputmode.value,
|
||||
"placeholder": props.placeholder ?? parserFormat.value,
|
||||
"readonly": isReadonly.value,
|
||||
"onKeydown": isInteractive.value ? onKeydown : undefined,
|
||||
"focused": menu.value || isFocused.value,
|
||||
"onBlur": onBlur,
|
||||
"validationValue": model.value,
|
||||
"onClick:control": isInteractive.value ? onClick : undefined,
|
||||
"onUpdate:modelValue": onUpdateDisplayModel,
|
||||
"onUpdate:focused": event => isFocused.value = event
|
||||
}), {
|
||||
...slots,
|
||||
default: () => _createElementVNode(_Fragment, null, [_createVNode(VMenu, {
|
||||
"modelValue": menu.value,
|
||||
"onUpdate:modelValue": $event => menu.value = $event,
|
||||
"activator": "parent",
|
||||
"minWidth": "0",
|
||||
"eager": isFocused.value,
|
||||
"location": props.location,
|
||||
"closeOnContentClick": false,
|
||||
"openOnClick": false
|
||||
}, {
|
||||
default: () => [_createVNode(VConfirmEdit, _mergeProps(confirmEditProps, {
|
||||
"modelValue": model.value,
|
||||
"onUpdate:modelValue": $event => model.value = $event,
|
||||
"disabled": disabledActions.value,
|
||||
"onSave": onSave,
|
||||
"onCancel": onCancel
|
||||
}), {
|
||||
default: _ref3 => {
|
||||
let {
|
||||
actions,
|
||||
model: proxyModel,
|
||||
save,
|
||||
cancel,
|
||||
isPristine
|
||||
} = _ref3;
|
||||
function onUpdateModel(value) {
|
||||
if (!props.hideActions) {
|
||||
proxyModel.value = value;
|
||||
} else {
|
||||
model.value = value;
|
||||
if (!props.multiple) {
|
||||
menu.value = false;
|
||||
}
|
||||
}
|
||||
emit('save', value);
|
||||
disabledActions.value = [];
|
||||
}
|
||||
return _createVNode(VDatePicker, _mergeProps(datePickerProps, {
|
||||
"modelValue": props.hideActions ? model.value : proxyModel.value,
|
||||
"onUpdate:modelValue": value => onUpdateModel(value),
|
||||
"onMousedown": e => e.preventDefault()
|
||||
}), {
|
||||
...datePickerSlots,
|
||||
actions: !props.hideActions ? () => slots.actions?.({
|
||||
save,
|
||||
cancel,
|
||||
isPristine
|
||||
}) ?? actions() : undefined
|
||||
});
|
||||
}
|
||||
})]
|
||||
}), slots.default?.()]),
|
||||
prepend: hasPrepend ? prependSlotProps => slots.prepend ? slots.prepend(prependSlotProps) : props.prependIcon && _createVNode(InputIcon, {
|
||||
"key": "prepend-icon",
|
||||
"name": "prepend",
|
||||
"tabindex": props['onClick:prepend'] ? undefined : -1,
|
||||
"onClick": isInteractive.value ? onClick : undefined
|
||||
}, null) : undefined
|
||||
});
|
||||
});
|
||||
return forwardRefs({}, vTextFieldRef);
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=VDateInput.js.map
|
||||
Generated
Vendored
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
export { VDateInput } from './VDateInput.js';
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
export { VDateInput } from "./VDateInput.js";
|
||||
//# sourceMappingURL=index.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.js","names":["VDateInput"],"sources":["../../../src/labs/VDateInput/index.ts"],"sourcesContent":["export { VDateInput } from './VDateInput'\n"],"mappings":"SAASA,UAAU","ignoreList":[]}
|
||||
Generated
Vendored
+78
@@ -0,0 +1,78 @@
|
||||
.v-file-upload {
|
||||
padding: 64px 16px;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
}
|
||||
.v-file-upload.v-sheet {
|
||||
display: flex;
|
||||
border-radius: 4px;
|
||||
border-style: dashed;
|
||||
border-width: 2px;
|
||||
}
|
||||
.v-file-upload.v-file-upload--density-compact {
|
||||
padding: 32px 0;
|
||||
flex-direction: row;
|
||||
gap: 1rem;
|
||||
}
|
||||
.v-file-upload .v-overlay__scrim {
|
||||
pointer-events: none;
|
||||
}
|
||||
.v-file-upload--disabled {
|
||||
pointer-events: none;
|
||||
opacity: var(--v-disabled-opacity);
|
||||
}
|
||||
.v-file-upload--dragging > * {
|
||||
pointer-events: none;
|
||||
}
|
||||
.v-file-upload--clickable {
|
||||
cursor: pointer;
|
||||
}
|
||||
.v-file-upload input[type=file] {
|
||||
left: 0;
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
cursor: pointer;
|
||||
top: 0;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.v-file-upload-title {
|
||||
font-size: 1.5rem;
|
||||
font-weight: 600;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.v-file-upload-icon {
|
||||
opacity: var(--v-medium-emphasis-opacity);
|
||||
font-size: 3rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
.v-file-upload--density-comfortable .v-file-upload-icon {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
.v-file-upload--density-compact .v-file-upload-icon {
|
||||
font-size: 2rem;
|
||||
margin-bottom: 0rem;
|
||||
}
|
||||
|
||||
.v-file-upload-divider {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
margin: 32px 0;
|
||||
justify-content: center;
|
||||
width: 100%;
|
||||
}
|
||||
.v-file-upload-divider .v-divider__wrapper {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.v-file-upload-items {
|
||||
margin: 16px 0;
|
||||
}
|
||||
|
||||
.v-file-upload-item:not(:first-child) {
|
||||
margin-top: 8px;
|
||||
}
|
||||
Generated
Vendored
+927
@@ -0,0 +1,927 @@
|
||||
// Styles
|
||||
|
||||
import { IconValue } from '../../composables/icons.js';
|
||||
// Types
|
||||
import type { PropType, VNode } from 'vue';
|
||||
export type VFileUploadSlots = {
|
||||
browse: {
|
||||
props: {
|
||||
onClick: (e: MouseEvent) => void;
|
||||
};
|
||||
};
|
||||
default: never;
|
||||
icon: never;
|
||||
input: {
|
||||
inputNode: VNode;
|
||||
};
|
||||
item: {
|
||||
file: File;
|
||||
props: {
|
||||
'onClick:remove': () => void;
|
||||
};
|
||||
};
|
||||
title: never;
|
||||
divider: never;
|
||||
};
|
||||
export declare const makeVFileUploadProps: <Defaults extends {
|
||||
theme?: unknown;
|
||||
class?: unknown;
|
||||
style?: unknown;
|
||||
border?: unknown;
|
||||
density?: unknown;
|
||||
elevation?: unknown;
|
||||
rounded?: unknown;
|
||||
tile?: unknown;
|
||||
tag?: unknown;
|
||||
height?: unknown;
|
||||
maxHeight?: unknown;
|
||||
maxWidth?: unknown;
|
||||
minHeight?: unknown;
|
||||
minWidth?: unknown;
|
||||
width?: unknown;
|
||||
location?: unknown;
|
||||
position?: unknown;
|
||||
closeDelay?: unknown;
|
||||
openDelay?: unknown;
|
||||
length?: unknown;
|
||||
opacity?: unknown;
|
||||
thickness?: unknown;
|
||||
color?: unknown;
|
||||
filterByType?: unknown;
|
||||
browseText?: unknown;
|
||||
dividerText?: unknown;
|
||||
title?: unknown;
|
||||
subtitle?: unknown;
|
||||
icon?: unknown;
|
||||
modelValue?: unknown;
|
||||
clearable?: unknown;
|
||||
disabled?: unknown;
|
||||
hideBrowse?: unknown;
|
||||
multiple?: unknown;
|
||||
scrim?: unknown;
|
||||
showSize?: unknown;
|
||||
name?: unknown;
|
||||
} = {}>(defaults?: Defaults | undefined) => {
|
||||
theme: unknown extends Defaults["theme"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["theme"] ? string : string | Defaults["theme"]>;
|
||||
default: unknown extends Defaults["theme"] ? string : string | Defaults["theme"];
|
||||
};
|
||||
class: unknown extends Defaults["class"] ? PropType<any> : {
|
||||
type: PropType<unknown extends Defaults["class"] ? any : any>;
|
||||
default: unknown extends Defaults["class"] ? any : any;
|
||||
};
|
||||
style: unknown extends Defaults["style"] ? {
|
||||
type: PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
} : Omit<{
|
||||
type: PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | import("vue").StyleValue>;
|
||||
default: unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | NonNullable<import("vue").StyleValue>;
|
||||
};
|
||||
border: unknown extends Defaults["border"] ? (BooleanConstructor | NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["border"] ? string | number | boolean : string | number | boolean | Defaults["border"]>;
|
||||
default: unknown extends Defaults["border"] ? string | number | boolean : Defaults["border"] | NonNullable<string | number | boolean>;
|
||||
};
|
||||
density: unknown extends Defaults["density"] ? {
|
||||
type: PropType<import("../../composables/density.js").Density>;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
} : Omit<{
|
||||
type: PropType<import("../../composables/density.js").Density>;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["density"] ? import("../../composables/density.js").Density : Defaults["density"] | import("../../composables/density.js").Density>;
|
||||
default: unknown extends Defaults["density"] ? import("../../composables/density.js").Density : Defaults["density"] | NonNullable<import("../../composables/density.js").Density>;
|
||||
};
|
||||
elevation: unknown extends Defaults["elevation"] ? {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
} : Omit<{
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["elevation"] ? string | number : string | number | Defaults["elevation"]>;
|
||||
default: unknown extends Defaults["elevation"] ? string | number : Defaults["elevation"] | NonNullable<string | number>;
|
||||
};
|
||||
rounded: unknown extends Defaults["rounded"] ? {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
} : Omit<{
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["rounded"] ? string | number | boolean : string | number | boolean | Defaults["rounded"]>;
|
||||
default: unknown extends Defaults["rounded"] ? string | number | boolean : Defaults["rounded"] | NonNullable<string | number | boolean>;
|
||||
};
|
||||
tile: unknown extends Defaults["tile"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"]>;
|
||||
default: unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"];
|
||||
};
|
||||
tag: unknown extends Defaults["tag"] ? {
|
||||
type: PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : string | Defaults["tag"] | import("../../util/index.js").JSXComponent>;
|
||||
default: unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : Defaults["tag"] | NonNullable<string | import("../../util/index.js").JSXComponent>;
|
||||
};
|
||||
height: unknown extends Defaults["height"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["height"] ? string | number : string | number | Defaults["height"]>;
|
||||
default: unknown extends Defaults["height"] ? string | number : Defaults["height"] | NonNullable<string | number>;
|
||||
};
|
||||
maxHeight: unknown extends Defaults["maxHeight"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["maxHeight"] ? string | number : string | number | Defaults["maxHeight"]>;
|
||||
default: unknown extends Defaults["maxHeight"] ? string | number : Defaults["maxHeight"] | NonNullable<string | number>;
|
||||
};
|
||||
maxWidth: unknown extends Defaults["maxWidth"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["maxWidth"] ? string | number : string | number | Defaults["maxWidth"]>;
|
||||
default: unknown extends Defaults["maxWidth"] ? string | number : Defaults["maxWidth"] | NonNullable<string | number>;
|
||||
};
|
||||
minHeight: unknown extends Defaults["minHeight"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["minHeight"] ? string | number : string | number | Defaults["minHeight"]>;
|
||||
default: unknown extends Defaults["minHeight"] ? string | number : Defaults["minHeight"] | NonNullable<string | number>;
|
||||
};
|
||||
minWidth: unknown extends Defaults["minWidth"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["minWidth"] ? string | number : string | number | Defaults["minWidth"]>;
|
||||
default: unknown extends Defaults["minWidth"] ? string | number : Defaults["minWidth"] | NonNullable<string | number>;
|
||||
};
|
||||
width: unknown extends Defaults["width"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["width"] ? string | number : string | number | Defaults["width"]>;
|
||||
default: unknown extends Defaults["width"] ? string | number : Defaults["width"] | NonNullable<string | number>;
|
||||
};
|
||||
location: unknown extends Defaults["location"] ? PropType<import("../../util/index.js").Anchor | null> : {
|
||||
type: PropType<unknown extends Defaults["location"] ? import("../../util/index.js").Anchor | null : Defaults["location"] | import("../../util/index.js").Anchor | null>;
|
||||
default: unknown extends Defaults["location"] ? import("../../util/index.js").Anchor | null : Defaults["location"] | NonNullable<import("../../util/index.js").Anchor | null>;
|
||||
};
|
||||
position: unknown extends Defaults["position"] ? {
|
||||
type: PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
|
||||
validator: (v: any) => boolean;
|
||||
} : Omit<{
|
||||
type: PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
|
||||
validator: (v: any) => boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["position"] ? "absolute" | "fixed" | "relative" | "static" | "sticky" : "absolute" | "fixed" | "relative" | "static" | "sticky" | Defaults["position"]>;
|
||||
default: unknown extends Defaults["position"] ? "absolute" | "fixed" | "relative" | "static" | "sticky" : Defaults["position"] | NonNullable<"absolute" | "fixed" | "relative" | "static" | "sticky">;
|
||||
};
|
||||
closeDelay: unknown extends Defaults["closeDelay"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["closeDelay"] ? string | number : string | number | Defaults["closeDelay"]>;
|
||||
default: unknown extends Defaults["closeDelay"] ? string | number : Defaults["closeDelay"] | NonNullable<string | number>;
|
||||
};
|
||||
openDelay: unknown extends Defaults["openDelay"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["openDelay"] ? string | number : string | number | Defaults["openDelay"]>;
|
||||
default: unknown extends Defaults["openDelay"] ? string | number : Defaults["openDelay"] | NonNullable<string | number>;
|
||||
};
|
||||
length: unknown extends Defaults["length"] ? {
|
||||
type: PropType<string | number>;
|
||||
default: NonNullable<string | number>;
|
||||
} : Omit<{
|
||||
type: PropType<string | number>;
|
||||
default: NonNullable<string | number>;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["length"] ? string | number : string | number | Defaults["length"]>;
|
||||
default: unknown extends Defaults["length"] ? string | number : Defaults["length"] | NonNullable<string | number>;
|
||||
};
|
||||
opacity: unknown extends Defaults["opacity"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["opacity"] ? string | number : string | number | Defaults["opacity"]>;
|
||||
default: unknown extends Defaults["opacity"] ? string | number : Defaults["opacity"] | NonNullable<string | number>;
|
||||
};
|
||||
thickness: unknown extends Defaults["thickness"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["thickness"] ? string | number : string | number | Defaults["thickness"]>;
|
||||
default: unknown extends Defaults["thickness"] ? string | number : Defaults["thickness"] | NonNullable<string | number>;
|
||||
};
|
||||
color: unknown extends Defaults["color"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["color"] ? string : string | Defaults["color"]>;
|
||||
default: unknown extends Defaults["color"] ? string : string | Defaults["color"];
|
||||
};
|
||||
filterByType: unknown extends Defaults["filterByType"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["filterByType"] ? string : string | Defaults["filterByType"]>;
|
||||
default: unknown extends Defaults["filterByType"] ? string : string | Defaults["filterByType"];
|
||||
};
|
||||
browseText: unknown extends Defaults["browseText"] ? {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["browseText"] ? string : string | Defaults["browseText"]>;
|
||||
default: unknown extends Defaults["browseText"] ? string : string | Defaults["browseText"];
|
||||
};
|
||||
dividerText: unknown extends Defaults["dividerText"] ? {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["dividerText"] ? string : string | Defaults["dividerText"]>;
|
||||
default: unknown extends Defaults["dividerText"] ? string : string | Defaults["dividerText"];
|
||||
};
|
||||
title: unknown extends Defaults["title"] ? {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["title"] ? string : string | Defaults["title"]>;
|
||||
default: unknown extends Defaults["title"] ? string : string | Defaults["title"];
|
||||
};
|
||||
subtitle: unknown extends Defaults["subtitle"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["subtitle"] ? string : string | Defaults["subtitle"]>;
|
||||
default: unknown extends Defaults["subtitle"] ? string : string | Defaults["subtitle"];
|
||||
};
|
||||
icon: unknown extends Defaults["icon"] ? {
|
||||
type: PropType<IconValue>;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: PropType<IconValue>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["icon"] ? IconValue : Defaults["icon"] | IconValue>;
|
||||
default: unknown extends Defaults["icon"] ? IconValue : Defaults["icon"] | NonNullable<IconValue>;
|
||||
};
|
||||
modelValue: unknown extends Defaults["modelValue"] ? {
|
||||
type: PropType<File[] | File>;
|
||||
default: null;
|
||||
validator: (val: any) => boolean;
|
||||
} : Omit<{
|
||||
type: PropType<File[] | File>;
|
||||
default: null;
|
||||
validator: (val: any) => boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["modelValue"] ? File[] | File : File[] | File | Defaults["modelValue"]>;
|
||||
default: unknown extends Defaults["modelValue"] ? File[] | File : Defaults["modelValue"] | NonNullable<File[] | File>;
|
||||
};
|
||||
clearable: unknown extends Defaults["clearable"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["clearable"] ? boolean : boolean | Defaults["clearable"]>;
|
||||
default: unknown extends Defaults["clearable"] ? boolean : boolean | Defaults["clearable"];
|
||||
};
|
||||
disabled: unknown extends Defaults["disabled"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"]>;
|
||||
default: unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"];
|
||||
};
|
||||
hideBrowse: unknown extends Defaults["hideBrowse"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["hideBrowse"] ? boolean : boolean | Defaults["hideBrowse"]>;
|
||||
default: unknown extends Defaults["hideBrowse"] ? boolean : boolean | Defaults["hideBrowse"];
|
||||
};
|
||||
multiple: unknown extends Defaults["multiple"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["multiple"] ? boolean : boolean | Defaults["multiple"]>;
|
||||
default: unknown extends Defaults["multiple"] ? boolean : boolean | Defaults["multiple"];
|
||||
};
|
||||
scrim: unknown extends Defaults["scrim"] ? {
|
||||
type: (BooleanConstructor | StringConstructor)[];
|
||||
default: boolean;
|
||||
} : Omit<{
|
||||
type: (BooleanConstructor | StringConstructor)[];
|
||||
default: boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["scrim"] ? string | boolean : string | boolean | Defaults["scrim"]>;
|
||||
default: unknown extends Defaults["scrim"] ? string | boolean : Defaults["scrim"] | NonNullable<string | boolean>;
|
||||
};
|
||||
showSize: unknown extends Defaults["showSize"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["showSize"] ? boolean : boolean | Defaults["showSize"]>;
|
||||
default: unknown extends Defaults["showSize"] ? boolean : boolean | Defaults["showSize"];
|
||||
};
|
||||
name: unknown extends Defaults["name"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["name"] ? string : string | Defaults["name"]>;
|
||||
default: unknown extends Defaults["name"] ? string : string | Defaults["name"];
|
||||
};
|
||||
};
|
||||
export declare const VFileUpload: {
|
||||
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
density: import("../../composables/density.js").Density;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
length: string | number;
|
||||
browseText: string;
|
||||
dividerText: string;
|
||||
title: string;
|
||||
icon: IconValue;
|
||||
modelValue: File[] | File;
|
||||
clearable: boolean;
|
||||
disabled: boolean;
|
||||
hideBrowse: boolean;
|
||||
multiple: boolean;
|
||||
scrim: string | boolean;
|
||||
showSize: boolean;
|
||||
} & {
|
||||
theme?: string | undefined;
|
||||
class?: any;
|
||||
border?: string | number | boolean | undefined;
|
||||
elevation?: string | number | undefined;
|
||||
rounded?: string | number | boolean | undefined;
|
||||
height?: string | number | undefined;
|
||||
maxHeight?: string | number | undefined;
|
||||
maxWidth?: string | number | undefined;
|
||||
minHeight?: string | number | undefined;
|
||||
minWidth?: string | number | undefined;
|
||||
width?: string | number | undefined;
|
||||
location?: import("../../util/index.js").Anchor | null | undefined;
|
||||
position?: "absolute" | "fixed" | "relative" | "static" | "sticky" | undefined;
|
||||
closeDelay?: string | number | undefined;
|
||||
openDelay?: string | number | undefined;
|
||||
opacity?: string | number | undefined;
|
||||
thickness?: string | number | undefined;
|
||||
color?: string | undefined;
|
||||
filterByType?: string | undefined;
|
||||
subtitle?: string | undefined;
|
||||
name?: string | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
browse?: ((arg: {
|
||||
props: {
|
||||
onClick: (e: MouseEvent) => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
default?: (() => import("vue").VNodeChild) | undefined;
|
||||
icon?: (() => import("vue").VNodeChild) | undefined;
|
||||
input?: ((arg: {
|
||||
inputNode: VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
item?: ((arg: {
|
||||
file: File;
|
||||
props: {
|
||||
"onClick:remove": () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
title?: (() => import("vue").VNodeChild) | undefined;
|
||||
divider?: (() => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
browse?: false | ((arg: {
|
||||
props: {
|
||||
onClick: (e: MouseEvent) => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
default?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
icon?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
input?: false | ((arg: {
|
||||
inputNode: VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
item?: false | ((arg: {
|
||||
file: File;
|
||||
props: {
|
||||
"onClick:remove": () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
title?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
divider?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:browse"?: false | ((arg: {
|
||||
props: {
|
||||
onClick: (e: MouseEvent) => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:divider"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:icon"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:input"?: false | ((arg: {
|
||||
inputNode: VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:item"?: false | ((arg: {
|
||||
file: File;
|
||||
props: {
|
||||
"onClick:remove": () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:title"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} & {
|
||||
onRejected?: ((files: File[]) => any) | undefined;
|
||||
"onUpdate:modelValue"?: ((files: File[]) => any) | undefined;
|
||||
}, void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
||||
"update:modelValue": (files: File[]) => true;
|
||||
rejected: (files: File[]) => true;
|
||||
}, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
|
||||
style: import("vue").StyleValue;
|
||||
density: import("../../composables/density.js").Density;
|
||||
rounded: string | number | boolean;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
length: string | number;
|
||||
browseText: string;
|
||||
dividerText: string;
|
||||
title: string;
|
||||
icon: IconValue;
|
||||
modelValue: File[] | File;
|
||||
clearable: boolean;
|
||||
disabled: boolean;
|
||||
hideBrowse: boolean;
|
||||
multiple: boolean;
|
||||
scrim: string | boolean;
|
||||
showSize: boolean;
|
||||
}, true, {}, import("vue").SlotsType<Partial<{
|
||||
browse: (arg: {
|
||||
props: {
|
||||
onClick: (e: MouseEvent) => void;
|
||||
};
|
||||
}) => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
default: () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
icon: () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
input: (arg: {
|
||||
inputNode: VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>;
|
||||
}) => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
item: (arg: {
|
||||
file: File;
|
||||
props: {
|
||||
"onClick:remove": () => void;
|
||||
};
|
||||
}) => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
title: () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
divider: () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
||||
P: {};
|
||||
B: {};
|
||||
D: {};
|
||||
C: {};
|
||||
M: {};
|
||||
Defaults: {};
|
||||
}, {
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
density: import("../../composables/density.js").Density;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
length: string | number;
|
||||
browseText: string;
|
||||
dividerText: string;
|
||||
title: string;
|
||||
icon: IconValue;
|
||||
modelValue: File[] | File;
|
||||
clearable: boolean;
|
||||
disabled: boolean;
|
||||
hideBrowse: boolean;
|
||||
multiple: boolean;
|
||||
scrim: string | boolean;
|
||||
showSize: boolean;
|
||||
} & {
|
||||
theme?: string | undefined;
|
||||
class?: any;
|
||||
border?: string | number | boolean | undefined;
|
||||
elevation?: string | number | undefined;
|
||||
rounded?: string | number | boolean | undefined;
|
||||
height?: string | number | undefined;
|
||||
maxHeight?: string | number | undefined;
|
||||
maxWidth?: string | number | undefined;
|
||||
minHeight?: string | number | undefined;
|
||||
minWidth?: string | number | undefined;
|
||||
width?: string | number | undefined;
|
||||
location?: import("../../util/index.js").Anchor | null | undefined;
|
||||
position?: "absolute" | "fixed" | "relative" | "static" | "sticky" | undefined;
|
||||
closeDelay?: string | number | undefined;
|
||||
openDelay?: string | number | undefined;
|
||||
opacity?: string | number | undefined;
|
||||
thickness?: string | number | undefined;
|
||||
color?: string | undefined;
|
||||
filterByType?: string | undefined;
|
||||
subtitle?: string | undefined;
|
||||
name?: string | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
browse?: ((arg: {
|
||||
props: {
|
||||
onClick: (e: MouseEvent) => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
default?: (() => import("vue").VNodeChild) | undefined;
|
||||
icon?: (() => import("vue").VNodeChild) | undefined;
|
||||
input?: ((arg: {
|
||||
inputNode: VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
item?: ((arg: {
|
||||
file: File;
|
||||
props: {
|
||||
"onClick:remove": () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
title?: (() => import("vue").VNodeChild) | undefined;
|
||||
divider?: (() => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
browse?: false | ((arg: {
|
||||
props: {
|
||||
onClick: (e: MouseEvent) => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
default?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
icon?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
input?: false | ((arg: {
|
||||
inputNode: VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
item?: false | ((arg: {
|
||||
file: File;
|
||||
props: {
|
||||
"onClick:remove": () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
title?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
divider?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:browse"?: false | ((arg: {
|
||||
props: {
|
||||
onClick: (e: MouseEvent) => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:divider"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:icon"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:input"?: false | ((arg: {
|
||||
inputNode: VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:item"?: false | ((arg: {
|
||||
file: File;
|
||||
props: {
|
||||
"onClick:remove": () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:title"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} & {
|
||||
onRejected?: ((files: File[]) => any) | undefined;
|
||||
"onUpdate:modelValue"?: ((files: File[]) => any) | undefined;
|
||||
}, {}, {}, {}, {}, {
|
||||
style: import("vue").StyleValue;
|
||||
density: import("../../composables/density.js").Density;
|
||||
rounded: string | number | boolean;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
length: string | number;
|
||||
browseText: string;
|
||||
dividerText: string;
|
||||
title: string;
|
||||
icon: IconValue;
|
||||
modelValue: File[] | File;
|
||||
clearable: boolean;
|
||||
disabled: boolean;
|
||||
hideBrowse: boolean;
|
||||
multiple: boolean;
|
||||
scrim: string | boolean;
|
||||
showSize: boolean;
|
||||
}>;
|
||||
__isFragment?: undefined;
|
||||
__isTeleport?: undefined;
|
||||
__isSuspense?: undefined;
|
||||
} & import("vue").ComponentOptionsBase<{
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
density: import("../../composables/density.js").Density;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
length: string | number;
|
||||
browseText: string;
|
||||
dividerText: string;
|
||||
title: string;
|
||||
icon: IconValue;
|
||||
modelValue: File[] | File;
|
||||
clearable: boolean;
|
||||
disabled: boolean;
|
||||
hideBrowse: boolean;
|
||||
multiple: boolean;
|
||||
scrim: string | boolean;
|
||||
showSize: boolean;
|
||||
} & {
|
||||
theme?: string | undefined;
|
||||
class?: any;
|
||||
border?: string | number | boolean | undefined;
|
||||
elevation?: string | number | undefined;
|
||||
rounded?: string | number | boolean | undefined;
|
||||
height?: string | number | undefined;
|
||||
maxHeight?: string | number | undefined;
|
||||
maxWidth?: string | number | undefined;
|
||||
minHeight?: string | number | undefined;
|
||||
minWidth?: string | number | undefined;
|
||||
width?: string | number | undefined;
|
||||
location?: import("../../util/index.js").Anchor | null | undefined;
|
||||
position?: "absolute" | "fixed" | "relative" | "static" | "sticky" | undefined;
|
||||
closeDelay?: string | number | undefined;
|
||||
openDelay?: string | number | undefined;
|
||||
opacity?: string | number | undefined;
|
||||
thickness?: string | number | undefined;
|
||||
color?: string | undefined;
|
||||
filterByType?: string | undefined;
|
||||
subtitle?: string | undefined;
|
||||
name?: string | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
browse?: ((arg: {
|
||||
props: {
|
||||
onClick: (e: MouseEvent) => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
default?: (() => import("vue").VNodeChild) | undefined;
|
||||
icon?: (() => import("vue").VNodeChild) | undefined;
|
||||
input?: ((arg: {
|
||||
inputNode: VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
item?: ((arg: {
|
||||
file: File;
|
||||
props: {
|
||||
"onClick:remove": () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
title?: (() => import("vue").VNodeChild) | undefined;
|
||||
divider?: (() => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
browse?: false | ((arg: {
|
||||
props: {
|
||||
onClick: (e: MouseEvent) => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
default?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
icon?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
input?: false | ((arg: {
|
||||
inputNode: VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
item?: false | ((arg: {
|
||||
file: File;
|
||||
props: {
|
||||
"onClick:remove": () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
title?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
divider?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:browse"?: false | ((arg: {
|
||||
props: {
|
||||
onClick: (e: MouseEvent) => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:divider"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:icon"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:input"?: false | ((arg: {
|
||||
inputNode: VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:item"?: false | ((arg: {
|
||||
file: File;
|
||||
props: {
|
||||
"onClick:remove": () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:title"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} & {
|
||||
onRejected?: ((files: File[]) => any) | undefined;
|
||||
"onUpdate:modelValue"?: ((files: File[]) => any) | undefined;
|
||||
}, void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
||||
"update:modelValue": (files: File[]) => true;
|
||||
rejected: (files: File[]) => true;
|
||||
}, string, {
|
||||
style: import("vue").StyleValue;
|
||||
density: import("../../composables/density.js").Density;
|
||||
rounded: string | number | boolean;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
length: string | number;
|
||||
browseText: string;
|
||||
dividerText: string;
|
||||
title: string;
|
||||
icon: IconValue;
|
||||
modelValue: File[] | File;
|
||||
clearable: boolean;
|
||||
disabled: boolean;
|
||||
hideBrowse: boolean;
|
||||
multiple: boolean;
|
||||
scrim: string | boolean;
|
||||
showSize: boolean;
|
||||
}, {}, string, import("vue").SlotsType<Partial<{
|
||||
browse: (arg: {
|
||||
props: {
|
||||
onClick: (e: MouseEvent) => void;
|
||||
};
|
||||
}) => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
default: () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
icon: () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
input: (arg: {
|
||||
inputNode: VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>;
|
||||
}) => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
item: (arg: {
|
||||
file: File;
|
||||
props: {
|
||||
"onClick:remove": () => void;
|
||||
};
|
||||
}) => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
title: () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
divider: () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
|
||||
theme: StringConstructor;
|
||||
class: PropType<any>;
|
||||
style: {
|
||||
type: PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
};
|
||||
border: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
density: {
|
||||
type: PropType<import("../../composables/density.js").Density>;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
};
|
||||
elevation: {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
};
|
||||
rounded: {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
};
|
||||
tile: BooleanConstructor;
|
||||
tag: {
|
||||
type: PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
};
|
||||
height: (NumberConstructor | StringConstructor)[];
|
||||
maxHeight: (NumberConstructor | StringConstructor)[];
|
||||
maxWidth: (NumberConstructor | StringConstructor)[];
|
||||
minHeight: (NumberConstructor | StringConstructor)[];
|
||||
minWidth: (NumberConstructor | StringConstructor)[];
|
||||
width: (NumberConstructor | StringConstructor)[];
|
||||
location: PropType<import("../../util/index.js").Anchor | null>;
|
||||
position: {
|
||||
type: PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
|
||||
validator: (v: any) => boolean;
|
||||
};
|
||||
closeDelay: (NumberConstructor | StringConstructor)[];
|
||||
openDelay: (NumberConstructor | StringConstructor)[];
|
||||
length: {
|
||||
type: PropType<string | number>;
|
||||
default: NonNullable<string | number>;
|
||||
};
|
||||
opacity: (NumberConstructor | StringConstructor)[];
|
||||
thickness: (NumberConstructor | StringConstructor)[];
|
||||
color: StringConstructor;
|
||||
filterByType: StringConstructor;
|
||||
browseText: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
dividerText: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
title: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
subtitle: StringConstructor;
|
||||
icon: {
|
||||
type: PropType<IconValue>;
|
||||
default: string;
|
||||
};
|
||||
modelValue: {
|
||||
type: PropType<File[] | File>;
|
||||
default: null;
|
||||
validator: (val: any) => boolean;
|
||||
};
|
||||
clearable: BooleanConstructor;
|
||||
disabled: BooleanConstructor;
|
||||
hideBrowse: BooleanConstructor;
|
||||
multiple: BooleanConstructor;
|
||||
scrim: {
|
||||
type: (BooleanConstructor | StringConstructor)[];
|
||||
default: boolean;
|
||||
};
|
||||
showSize: BooleanConstructor;
|
||||
name: StringConstructor;
|
||||
}, import("vue").ExtractPropTypes<{
|
||||
theme: StringConstructor;
|
||||
class: PropType<any>;
|
||||
style: {
|
||||
type: PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
};
|
||||
border: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
density: {
|
||||
type: PropType<import("../../composables/density.js").Density>;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
};
|
||||
elevation: {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
};
|
||||
rounded: {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
};
|
||||
tile: BooleanConstructor;
|
||||
tag: {
|
||||
type: PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
};
|
||||
height: (NumberConstructor | StringConstructor)[];
|
||||
maxHeight: (NumberConstructor | StringConstructor)[];
|
||||
maxWidth: (NumberConstructor | StringConstructor)[];
|
||||
minHeight: (NumberConstructor | StringConstructor)[];
|
||||
minWidth: (NumberConstructor | StringConstructor)[];
|
||||
width: (NumberConstructor | StringConstructor)[];
|
||||
location: PropType<import("../../util/index.js").Anchor | null>;
|
||||
position: {
|
||||
type: PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
|
||||
validator: (v: any) => boolean;
|
||||
};
|
||||
closeDelay: (NumberConstructor | StringConstructor)[];
|
||||
openDelay: (NumberConstructor | StringConstructor)[];
|
||||
length: {
|
||||
type: PropType<string | number>;
|
||||
default: NonNullable<string | number>;
|
||||
};
|
||||
opacity: (NumberConstructor | StringConstructor)[];
|
||||
thickness: (NumberConstructor | StringConstructor)[];
|
||||
color: StringConstructor;
|
||||
filterByType: StringConstructor;
|
||||
browseText: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
dividerText: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
title: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
subtitle: StringConstructor;
|
||||
icon: {
|
||||
type: PropType<IconValue>;
|
||||
default: string;
|
||||
};
|
||||
modelValue: {
|
||||
type: PropType<File[] | File>;
|
||||
default: null;
|
||||
validator: (val: any) => boolean;
|
||||
};
|
||||
clearable: BooleanConstructor;
|
||||
disabled: BooleanConstructor;
|
||||
hideBrowse: BooleanConstructor;
|
||||
multiple: BooleanConstructor;
|
||||
scrim: {
|
||||
type: (BooleanConstructor | StringConstructor)[];
|
||||
default: boolean;
|
||||
};
|
||||
showSize: BooleanConstructor;
|
||||
name: StringConstructor;
|
||||
}>>;
|
||||
export type VFileUpload = InstanceType<typeof VFileUpload>;
|
||||
Generated
Vendored
+266
@@ -0,0 +1,266 @@
|
||||
import { mergeProps as _mergeProps, createElementVNode as _createElementVNode, Fragment as _Fragment, createVNode as _createVNode } from "vue";
|
||||
// Styles
|
||||
import "./VFileUpload.css";
|
||||
|
||||
// Components
|
||||
import { VFileUploadItem } from "./VFileUploadItem.js";
|
||||
import { VBtn } from "../../components/VBtn/VBtn.js";
|
||||
import { VDefaultsProvider } from "../../components/VDefaultsProvider/VDefaultsProvider.js";
|
||||
import { makeVDividerProps, VDivider } from "../../components/VDivider/VDivider.js";
|
||||
import { VIcon } from "../../components/VIcon/VIcon.js";
|
||||
import { VOverlay } from "../../components/VOverlay/VOverlay.js";
|
||||
import { makeVSheetProps, VSheet } from "../../components/VSheet/VSheet.js"; // Composables
|
||||
import { makeDelayProps } from "../../composables/delay.js";
|
||||
import { makeDensityProps, useDensity } from "../../composables/density.js";
|
||||
import { useFileDrop } from "../../composables/fileDrop.js";
|
||||
import { makeFileFilterProps, useFileFilter } from "../../composables/fileFilter.js";
|
||||
import { IconValue } from "../../composables/icons.js";
|
||||
import { useLocale } from "../../composables/locale.js";
|
||||
import { useProxiedModel } from "../../composables/proxiedModel.js"; // Utilities
|
||||
import { ref, shallowRef } from 'vue';
|
||||
import { filterInputAttrs, genericComponent, pick, propsFactory, useRender, wrapInArray } from "../../util/index.js"; // Types
|
||||
export const makeVFileUploadProps = propsFactory({
|
||||
browseText: {
|
||||
type: String,
|
||||
default: '$vuetify.fileUpload.browse'
|
||||
},
|
||||
dividerText: {
|
||||
type: String,
|
||||
default: '$vuetify.fileUpload.divider'
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: '$vuetify.fileUpload.title'
|
||||
},
|
||||
subtitle: String,
|
||||
icon: {
|
||||
type: IconValue,
|
||||
default: '$upload'
|
||||
},
|
||||
modelValue: {
|
||||
type: [Array, Object],
|
||||
default: null,
|
||||
validator: val => {
|
||||
return wrapInArray(val).every(v => v != null && typeof v === 'object');
|
||||
}
|
||||
},
|
||||
clearable: Boolean,
|
||||
disabled: Boolean,
|
||||
hideBrowse: Boolean,
|
||||
multiple: Boolean,
|
||||
scrim: {
|
||||
type: [Boolean, String],
|
||||
default: true
|
||||
},
|
||||
showSize: Boolean,
|
||||
name: String,
|
||||
...makeFileFilterProps(),
|
||||
...makeDelayProps(),
|
||||
...makeDensityProps(),
|
||||
...pick(makeVDividerProps({
|
||||
length: 150
|
||||
}), ['length', 'thickness', 'opacity']),
|
||||
...makeVSheetProps()
|
||||
}, 'VFileUpload');
|
||||
export const VFileUpload = genericComponent()({
|
||||
name: 'VFileUpload',
|
||||
inheritAttrs: false,
|
||||
props: makeVFileUploadProps(),
|
||||
emits: {
|
||||
'update:modelValue': files => true,
|
||||
rejected: files => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
attrs,
|
||||
emit,
|
||||
slots
|
||||
} = _ref;
|
||||
const {
|
||||
t
|
||||
} = useLocale();
|
||||
const {
|
||||
densityClasses
|
||||
} = useDensity(props);
|
||||
const {
|
||||
filterAccepted
|
||||
} = useFileFilter(props);
|
||||
const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => props.multiple || Array.isArray(props.modelValue) ? val : val[0]);
|
||||
const isDragging = shallowRef(false);
|
||||
const vSheetRef = ref(null);
|
||||
const inputRef = ref(null);
|
||||
const {
|
||||
handleDrop
|
||||
} = useFileDrop();
|
||||
function onDragover(e) {
|
||||
e.preventDefault();
|
||||
e.stopImmediatePropagation();
|
||||
isDragging.value = true;
|
||||
}
|
||||
function onDragleave(e) {
|
||||
e.preventDefault();
|
||||
isDragging.value = false;
|
||||
}
|
||||
async function onDrop(e) {
|
||||
e.preventDefault();
|
||||
e.stopImmediatePropagation();
|
||||
isDragging.value = false;
|
||||
if (!inputRef.value) return;
|
||||
const allDroppedFiles = await handleDrop(e);
|
||||
selectAccepted(allDroppedFiles);
|
||||
}
|
||||
function onFileSelection(e) {
|
||||
if (!e.target || e.repack) return; // prevent loop
|
||||
|
||||
if (!props.filterByType) {
|
||||
const target = e.target;
|
||||
model.value = [...(target.files ?? [])];
|
||||
} else {
|
||||
selectAccepted([...e.target.files]);
|
||||
}
|
||||
}
|
||||
function selectAccepted(files) {
|
||||
const dataTransfer = new DataTransfer();
|
||||
const {
|
||||
accepted,
|
||||
rejected
|
||||
} = filterAccepted(files);
|
||||
if (rejected.length) {
|
||||
emit('rejected', rejected);
|
||||
}
|
||||
for (const file of accepted) {
|
||||
dataTransfer.items.add(file);
|
||||
}
|
||||
inputRef.value.files = dataTransfer.files;
|
||||
model.value = [...dataTransfer.files];
|
||||
const event = new Event('change', {
|
||||
bubbles: true
|
||||
});
|
||||
event.repack = true;
|
||||
inputRef.value.dispatchEvent(event);
|
||||
}
|
||||
function onClick() {
|
||||
inputRef.value?.click();
|
||||
}
|
||||
function onClickRemove(index) {
|
||||
const newValue = model.value.filter((_, i) => i !== index);
|
||||
model.value = newValue;
|
||||
if (newValue.length > 0 || !inputRef.value) return;
|
||||
inputRef.value.value = '';
|
||||
}
|
||||
useRender(() => {
|
||||
const hasTitle = !!(slots.title || props.title);
|
||||
const hasIcon = !!(slots.icon || props.icon);
|
||||
const hasBrowse = !!(!props.hideBrowse && (slots.browse || props.density === 'default'));
|
||||
const cardProps = VSheet.filterProps(props);
|
||||
const dividerProps = VDivider.filterProps(props);
|
||||
const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
|
||||
const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false;
|
||||
const acceptFallback = attrs.accept ? String(attrs.accept) : undefined;
|
||||
const inputAccept = expectsDirectory ? undefined : props.filterByType ?? acceptFallback;
|
||||
const inputNode = _createElementVNode("input", _mergeProps({
|
||||
"ref": inputRef,
|
||||
"type": "file",
|
||||
"accept": inputAccept,
|
||||
"disabled": props.disabled,
|
||||
"multiple": props.multiple,
|
||||
"name": props.name,
|
||||
"onChange": onFileSelection
|
||||
}, inputAttrs), null);
|
||||
return _createElementVNode(_Fragment, null, [_createVNode(VSheet, _mergeProps({
|
||||
"ref": vSheetRef
|
||||
}, cardProps, {
|
||||
"class": ['v-file-upload', {
|
||||
'v-file-upload--clickable': !hasBrowse,
|
||||
'v-file-upload--disabled': props.disabled,
|
||||
'v-file-upload--dragging': isDragging.value
|
||||
}, densityClasses.value, props.class],
|
||||
"style": [props.style],
|
||||
"onDragleave": onDragleave,
|
||||
"onDragover": onDragover,
|
||||
"onDrop": onDrop,
|
||||
"onClick": !hasBrowse ? onClick : undefined
|
||||
}, rootAttrs), {
|
||||
default: () => [hasIcon && _createElementVNode("div", {
|
||||
"key": "icon",
|
||||
"class": "v-file-upload-icon"
|
||||
}, [!slots.icon ? _createVNode(VIcon, {
|
||||
"key": "icon-icon",
|
||||
"icon": props.icon
|
||||
}, null) : _createVNode(VDefaultsProvider, {
|
||||
"key": "icon-defaults",
|
||||
"defaults": {
|
||||
VIcon: {
|
||||
icon: props.icon
|
||||
}
|
||||
}
|
||||
}, {
|
||||
default: () => [slots.icon()]
|
||||
})]), hasTitle && _createElementVNode("div", {
|
||||
"key": "title",
|
||||
"class": "v-file-upload-title"
|
||||
}, [slots.title?.() ?? t(props.title)]), props.density === 'default' && _createElementVNode(_Fragment, null, [_createElementVNode("div", {
|
||||
"key": "upload-divider",
|
||||
"class": "v-file-upload-divider"
|
||||
}, [slots.divider?.() ?? _createVNode(VDivider, dividerProps, {
|
||||
default: () => [t(props.dividerText)]
|
||||
})]), hasBrowse && _createElementVNode(_Fragment, null, [!slots.browse ? _createVNode(VBtn, {
|
||||
"readonly": props.disabled,
|
||||
"size": "large",
|
||||
"text": t(props.browseText),
|
||||
"variant": "tonal",
|
||||
"onClick": onClick
|
||||
}, null) : _createVNode(VDefaultsProvider, {
|
||||
"defaults": {
|
||||
VBtn: {
|
||||
readonly: props.disabled,
|
||||
size: 'large',
|
||||
text: t(props.browseText),
|
||||
variant: 'tonal'
|
||||
}
|
||||
}
|
||||
}, {
|
||||
default: () => [slots.browse({
|
||||
props: {
|
||||
onClick
|
||||
}
|
||||
})]
|
||||
})]), props.subtitle && _createElementVNode("div", {
|
||||
"class": "v-file-upload-subtitle"
|
||||
}, [props.subtitle])]), _createVNode(VOverlay, {
|
||||
"modelValue": isDragging.value,
|
||||
"contained": true,
|
||||
"scrim": props.scrim
|
||||
}, null), slots.input?.({
|
||||
inputNode
|
||||
}) ?? inputNode]
|
||||
}), model.value.length > 0 && _createElementVNode("div", {
|
||||
"class": "v-file-upload-items"
|
||||
}, [model.value.map((file, i) => {
|
||||
const slotProps = {
|
||||
file,
|
||||
props: {
|
||||
'onClick:remove': () => onClickRemove(i)
|
||||
}
|
||||
};
|
||||
return _createVNode(VDefaultsProvider, {
|
||||
"key": i,
|
||||
"defaults": {
|
||||
VFileUploadItem: {
|
||||
file,
|
||||
clearable: props.clearable,
|
||||
disabled: props.disabled,
|
||||
showSize: props.showSize
|
||||
}
|
||||
}
|
||||
}, {
|
||||
default: () => [slots.item?.(slotProps) ?? _createVNode(VFileUploadItem, {
|
||||
"key": i,
|
||||
"onClick:remove": () => onClickRemove(i)
|
||||
}, slots)]
|
||||
});
|
||||
})])]);
|
||||
});
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=VFileUpload.js.map
|
||||
Generated
Vendored
+1
File diff suppressed because one or more lines are too long
Generated
Vendored
+79
@@ -0,0 +1,79 @@
|
||||
@use '../../styles/tools'
|
||||
@use '../../styles/settings'
|
||||
@use './variables' as *
|
||||
|
||||
@include tools.layer('components')
|
||||
.v-file-upload
|
||||
padding: $file-upload-padding
|
||||
flex-direction: column
|
||||
justify-content: center
|
||||
align-items: center
|
||||
position: relative
|
||||
|
||||
&.v-sheet
|
||||
display: flex
|
||||
border-radius: 4px
|
||||
border-style: dashed
|
||||
border-width: 2px
|
||||
|
||||
&.v-file-upload--density-compact
|
||||
padding: 32px 0
|
||||
flex-direction: row
|
||||
gap: 1rem
|
||||
|
||||
.v-overlay__scrim
|
||||
pointer-events: none
|
||||
|
||||
&--disabled
|
||||
pointer-events: none
|
||||
opacity: var(--v-disabled-opacity)
|
||||
|
||||
&--dragging
|
||||
> *
|
||||
pointer-events: none
|
||||
|
||||
&--clickable
|
||||
cursor: pointer
|
||||
|
||||
input[type="file"]
|
||||
left: 0
|
||||
opacity: 0
|
||||
position: absolute
|
||||
cursor: pointer
|
||||
top: 0
|
||||
z-index: -1
|
||||
|
||||
.v-file-upload-title
|
||||
font-size: $file-upload-title-font-size
|
||||
font-weight: 600
|
||||
text-align: center
|
||||
|
||||
.v-file-upload-icon
|
||||
opacity: var(--v-medium-emphasis-opacity)
|
||||
font-size: $file-upload-icon-font-size
|
||||
margin-bottom: $file-upload-icon-margin-bottom
|
||||
|
||||
.v-file-upload--density-comfortable &
|
||||
font-size: $file-upload-icon-font-size - .5rem
|
||||
margin-bottom: $file-upload-icon-margin-bottom - .5rem
|
||||
|
||||
.v-file-upload--density-compact &
|
||||
font-size: $file-upload-icon-font-size - 1rem
|
||||
margin-bottom: $file-upload-icon-margin-bottom - 1rem
|
||||
|
||||
.v-file-upload-divider
|
||||
align-items: center
|
||||
display: flex
|
||||
margin: $file-upload-divider-margin
|
||||
justify-content: center
|
||||
width: 100%
|
||||
|
||||
.v-divider__wrapper
|
||||
max-width: 100%
|
||||
|
||||
.v-file-upload-items
|
||||
margin: $file-upload-items-margin
|
||||
|
||||
.v-file-upload-item
|
||||
&:not(:first-child)
|
||||
margin-top: 8px
|
||||
Generated
Vendored
+987
@@ -0,0 +1,987 @@
|
||||
// Types
|
||||
import type { PropType } from 'vue';
|
||||
import type { VListItemSlots } from '../../components/VList/VListItem.js';
|
||||
export type VFileUploadItemSlots = {
|
||||
clear: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
};
|
||||
} & VListItemSlots;
|
||||
export declare const makeVFileUploadItemProps: <Defaults extends {
|
||||
theme?: unknown;
|
||||
class?: unknown;
|
||||
style?: unknown;
|
||||
border?: unknown;
|
||||
density?: unknown;
|
||||
elevation?: unknown;
|
||||
rounded?: unknown;
|
||||
tile?: unknown;
|
||||
tag?: unknown;
|
||||
color?: unknown;
|
||||
variant?: unknown;
|
||||
height?: unknown;
|
||||
maxHeight?: unknown;
|
||||
maxWidth?: unknown;
|
||||
minHeight?: unknown;
|
||||
minWidth?: unknown;
|
||||
width?: unknown;
|
||||
href?: unknown;
|
||||
replace?: unknown;
|
||||
to?: unknown;
|
||||
exact?: unknown;
|
||||
active?: unknown;
|
||||
activeClass?: unknown;
|
||||
activeColor?: unknown;
|
||||
appendAvatar?: unknown;
|
||||
appendIcon?: unknown;
|
||||
baseColor?: unknown;
|
||||
disabled?: unknown;
|
||||
lines?: unknown;
|
||||
link?: unknown;
|
||||
nav?: unknown;
|
||||
prependAvatar?: unknown;
|
||||
prependIcon?: unknown;
|
||||
ripple?: unknown;
|
||||
slim?: unknown;
|
||||
prependGap?: unknown;
|
||||
subtitle?: unknown;
|
||||
title?: unknown;
|
||||
value?: unknown;
|
||||
onClick?: unknown;
|
||||
onClickOnce?: unknown;
|
||||
clearable?: unknown;
|
||||
file?: unknown;
|
||||
fileIcon?: unknown;
|
||||
showSize?: unknown;
|
||||
} = {}>(defaults?: Defaults | undefined) => {
|
||||
theme: unknown extends Defaults["theme"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["theme"] ? string : string | Defaults["theme"]>;
|
||||
default: unknown extends Defaults["theme"] ? string : string | Defaults["theme"];
|
||||
};
|
||||
class: unknown extends Defaults["class"] ? PropType<any> : {
|
||||
type: PropType<unknown extends Defaults["class"] ? any : any>;
|
||||
default: unknown extends Defaults["class"] ? any : any;
|
||||
};
|
||||
style: unknown extends Defaults["style"] ? {
|
||||
type: PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
} : Omit<{
|
||||
type: PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | import("vue").StyleValue>;
|
||||
default: unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | NonNullable<import("vue").StyleValue>;
|
||||
};
|
||||
border: unknown extends Defaults["border"] ? {
|
||||
type: PropType<string | number | boolean>;
|
||||
default: NonNullable<string | number | boolean>;
|
||||
} : Omit<{
|
||||
type: PropType<string | number | boolean>;
|
||||
default: NonNullable<string | number | boolean>;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["border"] ? string | number | boolean : string | number | boolean | Defaults["border"]>;
|
||||
default: unknown extends Defaults["border"] ? string | number | boolean : Defaults["border"] | NonNullable<string | number | boolean>;
|
||||
};
|
||||
density: unknown extends Defaults["density"] ? {
|
||||
type: PropType<import("../../composables/density.js").Density>;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
} : Omit<{
|
||||
type: PropType<import("../../composables/density.js").Density>;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["density"] ? import("../../composables/density.js").Density : Defaults["density"] | import("../../composables/density.js").Density>;
|
||||
default: unknown extends Defaults["density"] ? import("../../composables/density.js").Density : Defaults["density"] | NonNullable<import("../../composables/density.js").Density>;
|
||||
};
|
||||
elevation: unknown extends Defaults["elevation"] ? {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
} : Omit<{
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["elevation"] ? string | number : string | number | Defaults["elevation"]>;
|
||||
default: unknown extends Defaults["elevation"] ? string | number : Defaults["elevation"] | NonNullable<string | number>;
|
||||
};
|
||||
rounded: unknown extends Defaults["rounded"] ? Omit<{
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<string | number | boolean>;
|
||||
default: NonNullable<string | number | boolean>;
|
||||
} : Omit<Omit<{
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<string | number | boolean>;
|
||||
default: NonNullable<string | number | boolean>;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["rounded"] ? string | number | boolean : string | number | boolean | Defaults["rounded"]>;
|
||||
default: unknown extends Defaults["rounded"] ? string | number | boolean : Defaults["rounded"] | NonNullable<string | number | boolean>;
|
||||
};
|
||||
tile: unknown extends Defaults["tile"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"]>;
|
||||
default: unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"];
|
||||
};
|
||||
tag: unknown extends Defaults["tag"] ? {
|
||||
type: PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : string | Defaults["tag"] | import("../../util/index.js").JSXComponent>;
|
||||
default: unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : Defaults["tag"] | NonNullable<string | import("../../util/index.js").JSXComponent>;
|
||||
};
|
||||
color: unknown extends Defaults["color"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["color"] ? string : string | Defaults["color"]>;
|
||||
default: unknown extends Defaults["color"] ? string : string | Defaults["color"];
|
||||
};
|
||||
variant: unknown extends Defaults["variant"] ? Omit<{
|
||||
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
} : Omit<Omit<{
|
||||
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["variant"] ? "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" : "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" | Defaults["variant"]>;
|
||||
default: unknown extends Defaults["variant"] ? "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" : Defaults["variant"] | NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
};
|
||||
height: unknown extends Defaults["height"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["height"] ? string | number : string | number | Defaults["height"]>;
|
||||
default: unknown extends Defaults["height"] ? string | number : Defaults["height"] | NonNullable<string | number>;
|
||||
};
|
||||
maxHeight: unknown extends Defaults["maxHeight"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["maxHeight"] ? string | number : string | number | Defaults["maxHeight"]>;
|
||||
default: unknown extends Defaults["maxHeight"] ? string | number : Defaults["maxHeight"] | NonNullable<string | number>;
|
||||
};
|
||||
maxWidth: unknown extends Defaults["maxWidth"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["maxWidth"] ? string | number : string | number | Defaults["maxWidth"]>;
|
||||
default: unknown extends Defaults["maxWidth"] ? string | number : Defaults["maxWidth"] | NonNullable<string | number>;
|
||||
};
|
||||
minHeight: unknown extends Defaults["minHeight"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["minHeight"] ? string | number : string | number | Defaults["minHeight"]>;
|
||||
default: unknown extends Defaults["minHeight"] ? string | number : Defaults["minHeight"] | NonNullable<string | number>;
|
||||
};
|
||||
minWidth: unknown extends Defaults["minWidth"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["minWidth"] ? string | number : string | number | Defaults["minWidth"]>;
|
||||
default: unknown extends Defaults["minWidth"] ? string | number : Defaults["minWidth"] | NonNullable<string | number>;
|
||||
};
|
||||
width: unknown extends Defaults["width"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["width"] ? string | number : string | number | Defaults["width"]>;
|
||||
default: unknown extends Defaults["width"] ? string | number : Defaults["width"] | NonNullable<string | number>;
|
||||
};
|
||||
href: unknown extends Defaults["href"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["href"] ? string : string | Defaults["href"]>;
|
||||
default: unknown extends Defaults["href"] ? string : string | Defaults["href"];
|
||||
};
|
||||
replace: unknown extends Defaults["replace"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["replace"] ? boolean : boolean | Defaults["replace"]>;
|
||||
default: unknown extends Defaults["replace"] ? boolean : boolean | Defaults["replace"];
|
||||
};
|
||||
to: unknown extends Defaults["to"] ? PropType<string | import("vue-router").RouteLocationAsPathGeneric | import("vue-router").RouteLocationAsRelativeGeneric> : {
|
||||
type: PropType<unknown extends Defaults["to"] ? string | import("vue-router").RouteLocationAsPathGeneric | import("vue-router").RouteLocationAsRelativeGeneric : string | import("vue-router").RouteLocationAsPathGeneric | import("vue-router").RouteLocationAsRelativeGeneric | Defaults["to"]>;
|
||||
default: unknown extends Defaults["to"] ? string | import("vue-router").RouteLocationAsPathGeneric | import("vue-router").RouteLocationAsRelativeGeneric : Defaults["to"] | NonNullable<string | import("vue-router").RouteLocationAsPathGeneric | import("vue-router").RouteLocationAsRelativeGeneric>;
|
||||
};
|
||||
exact: unknown extends Defaults["exact"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["exact"] ? boolean : boolean | Defaults["exact"]>;
|
||||
default: unknown extends Defaults["exact"] ? boolean : boolean | Defaults["exact"];
|
||||
};
|
||||
active: unknown extends Defaults["active"] ? {
|
||||
type: BooleanConstructor;
|
||||
default: undefined;
|
||||
} : Omit<{
|
||||
type: BooleanConstructor;
|
||||
default: undefined;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["active"] ? boolean : boolean | Defaults["active"]>;
|
||||
default: unknown extends Defaults["active"] ? boolean : boolean | Defaults["active"];
|
||||
};
|
||||
activeClass: unknown extends Defaults["activeClass"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["activeClass"] ? string : string | Defaults["activeClass"]>;
|
||||
default: unknown extends Defaults["activeClass"] ? string : string | Defaults["activeClass"];
|
||||
};
|
||||
activeColor: unknown extends Defaults["activeColor"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["activeColor"] ? string : string | Defaults["activeColor"]>;
|
||||
default: unknown extends Defaults["activeColor"] ? string : string | Defaults["activeColor"];
|
||||
};
|
||||
appendAvatar: unknown extends Defaults["appendAvatar"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["appendAvatar"] ? string : string | Defaults["appendAvatar"]>;
|
||||
default: unknown extends Defaults["appendAvatar"] ? string : string | Defaults["appendAvatar"];
|
||||
};
|
||||
appendIcon: unknown extends Defaults["appendIcon"] ? PropType<import("../../composables/icons.js").IconValue> : {
|
||||
type: PropType<unknown extends Defaults["appendIcon"] ? import("../../composables/icons.js").IconValue : Defaults["appendIcon"] | import("../../composables/icons.js").IconValue>;
|
||||
default: unknown extends Defaults["appendIcon"] ? import("../../composables/icons.js").IconValue : Defaults["appendIcon"] | NonNullable<import("../../composables/icons.js").IconValue>;
|
||||
};
|
||||
baseColor: unknown extends Defaults["baseColor"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["baseColor"] ? string : string | Defaults["baseColor"]>;
|
||||
default: unknown extends Defaults["baseColor"] ? string : string | Defaults["baseColor"];
|
||||
};
|
||||
disabled: unknown extends Defaults["disabled"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"]>;
|
||||
default: unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"];
|
||||
};
|
||||
lines: unknown extends Defaults["lines"] ? {
|
||||
type: PropType<"one" | "three" | "two" | false>;
|
||||
default: NonNullable<"one" | "three" | "two" | false>;
|
||||
} : Omit<{
|
||||
type: PropType<"one" | "three" | "two" | false>;
|
||||
default: NonNullable<"one" | "three" | "two" | false>;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["lines"] ? "one" | "three" | "two" | false : "one" | "three" | "two" | false | Defaults["lines"]>;
|
||||
default: unknown extends Defaults["lines"] ? "one" | "three" | "two" | false : Defaults["lines"] | NonNullable<"one" | "three" | "two" | false>;
|
||||
};
|
||||
link: unknown extends Defaults["link"] ? {
|
||||
type: BooleanConstructor;
|
||||
default: undefined;
|
||||
} : Omit<{
|
||||
type: BooleanConstructor;
|
||||
default: undefined;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["link"] ? boolean : boolean | Defaults["link"]>;
|
||||
default: unknown extends Defaults["link"] ? boolean : boolean | Defaults["link"];
|
||||
};
|
||||
nav: unknown extends Defaults["nav"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["nav"] ? boolean : boolean | Defaults["nav"]>;
|
||||
default: unknown extends Defaults["nav"] ? boolean : boolean | Defaults["nav"];
|
||||
};
|
||||
prependAvatar: unknown extends Defaults["prependAvatar"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["prependAvatar"] ? string : string | Defaults["prependAvatar"]>;
|
||||
default: unknown extends Defaults["prependAvatar"] ? string : string | Defaults["prependAvatar"];
|
||||
};
|
||||
prependIcon: unknown extends Defaults["prependIcon"] ? PropType<import("../../composables/icons.js").IconValue> : {
|
||||
type: PropType<unknown extends Defaults["prependIcon"] ? import("../../composables/icons.js").IconValue : Defaults["prependIcon"] | import("../../composables/icons.js").IconValue>;
|
||||
default: unknown extends Defaults["prependIcon"] ? import("../../composables/icons.js").IconValue : Defaults["prependIcon"] | NonNullable<import("../../composables/icons.js").IconValue>;
|
||||
};
|
||||
ripple: unknown extends Defaults["ripple"] ? {
|
||||
type: PropType<boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined>;
|
||||
default: boolean;
|
||||
} : Omit<{
|
||||
type: PropType<boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined>;
|
||||
default: boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["ripple"] ? boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined : boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | Defaults["ripple"] | undefined>;
|
||||
default: unknown extends Defaults["ripple"] ? boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined : Defaults["ripple"] | NonNullable<boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined>;
|
||||
};
|
||||
slim: unknown extends Defaults["slim"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["slim"] ? boolean : boolean | Defaults["slim"]>;
|
||||
default: unknown extends Defaults["slim"] ? boolean : boolean | Defaults["slim"];
|
||||
};
|
||||
prependGap: unknown extends Defaults["prependGap"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["prependGap"] ? string | number : string | number | Defaults["prependGap"]>;
|
||||
default: unknown extends Defaults["prependGap"] ? string | number : Defaults["prependGap"] | NonNullable<string | number>;
|
||||
};
|
||||
subtitle: unknown extends Defaults["subtitle"] ? {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
} : Omit<{
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["subtitle"] ? string | number | boolean : string | number | boolean | Defaults["subtitle"]>;
|
||||
default: unknown extends Defaults["subtitle"] ? string | number | boolean : Defaults["subtitle"] | NonNullable<string | number | boolean>;
|
||||
};
|
||||
title: unknown extends Defaults["title"] ? {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
} : Omit<{
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["title"] ? string | number | boolean : string | number | boolean | Defaults["title"]>;
|
||||
default: unknown extends Defaults["title"] ? string | number | boolean : Defaults["title"] | NonNullable<string | number | boolean>;
|
||||
};
|
||||
value: unknown extends Defaults["value"] ? null : {
|
||||
type: PropType<unknown extends Defaults["value"] ? any : any>;
|
||||
default: unknown extends Defaults["value"] ? any : any;
|
||||
};
|
||||
onClick: unknown extends Defaults["onClick"] ? PropType<(args_0: KeyboardEvent | MouseEvent) => void> : {
|
||||
type: PropType<unknown extends Defaults["onClick"] ? (args_0: KeyboardEvent | MouseEvent) => void : ((args_0: KeyboardEvent | MouseEvent) => void) | Defaults["onClick"]>;
|
||||
default: unknown extends Defaults["onClick"] ? (args_0: KeyboardEvent | MouseEvent) => void : ((args_0: KeyboardEvent | MouseEvent) => void) | Defaults["onClick"];
|
||||
};
|
||||
onClickOnce: unknown extends Defaults["onClickOnce"] ? PropType<(args_0: MouseEvent) => void> : {
|
||||
type: PropType<unknown extends Defaults["onClickOnce"] ? (args_0: MouseEvent) => void : ((args_0: MouseEvent) => void) | Defaults["onClickOnce"]>;
|
||||
default: unknown extends Defaults["onClickOnce"] ? (args_0: MouseEvent) => void : ((args_0: MouseEvent) => void) | Defaults["onClickOnce"];
|
||||
};
|
||||
clearable: unknown extends Defaults["clearable"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["clearable"] ? boolean : boolean | Defaults["clearable"]>;
|
||||
default: unknown extends Defaults["clearable"] ? boolean : boolean | Defaults["clearable"];
|
||||
};
|
||||
file: unknown extends Defaults["file"] ? {
|
||||
type: PropType<File>;
|
||||
default: null;
|
||||
} : Omit<{
|
||||
type: PropType<File>;
|
||||
default: null;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["file"] ? File : File | Defaults["file"]>;
|
||||
default: unknown extends Defaults["file"] ? File : File | Defaults["file"];
|
||||
};
|
||||
fileIcon: unknown extends Defaults["fileIcon"] ? {
|
||||
type: StringConstructor;
|
||||
// TODO: setup up a proper aliased icon
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: StringConstructor;
|
||||
// TODO: setup up a proper aliased icon
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["fileIcon"] ? string : string | Defaults["fileIcon"]>;
|
||||
default: unknown extends Defaults["fileIcon"] ? string : string | Defaults["fileIcon"];
|
||||
};
|
||||
showSize: unknown extends Defaults["showSize"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["showSize"] ? boolean : boolean | Defaults["showSize"]>;
|
||||
default: unknown extends Defaults["showSize"] ? boolean : boolean | Defaults["showSize"];
|
||||
};
|
||||
};
|
||||
export declare const VFileUploadItem: {
|
||||
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
border: string | number | boolean;
|
||||
density: import("../../composables/density.js").Density;
|
||||
rounded: string | number | boolean;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
|
||||
replace: boolean;
|
||||
exact: boolean;
|
||||
disabled: boolean;
|
||||
lines: "one" | "three" | "two" | false;
|
||||
nav: boolean;
|
||||
ripple: boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
};
|
||||
slim: boolean;
|
||||
clearable: boolean;
|
||||
file: File;
|
||||
fileIcon: string;
|
||||
showSize: boolean;
|
||||
} & {
|
||||
theme?: string | undefined;
|
||||
class?: any;
|
||||
elevation?: string | number | undefined;
|
||||
color?: string | undefined;
|
||||
height?: string | number | undefined;
|
||||
maxHeight?: string | number | undefined;
|
||||
maxWidth?: string | number | undefined;
|
||||
minHeight?: string | number | undefined;
|
||||
minWidth?: string | number | undefined;
|
||||
width?: string | number | undefined;
|
||||
href?: string | undefined;
|
||||
to?: string | import("vue-router").RouteLocationAsPathGeneric | import("vue-router").RouteLocationAsRelativeGeneric | undefined;
|
||||
active?: boolean | undefined;
|
||||
activeClass?: string | undefined;
|
||||
activeColor?: string | undefined;
|
||||
appendAvatar?: string | undefined;
|
||||
appendIcon?: import("../../composables/icons.js").IconValue | undefined;
|
||||
baseColor?: string | undefined;
|
||||
link?: boolean | undefined;
|
||||
prependAvatar?: string | undefined;
|
||||
prependIcon?: import("../../composables/icons.js").IconValue | undefined;
|
||||
prependGap?: string | number | undefined;
|
||||
subtitle?: string | number | boolean | undefined;
|
||||
title?: string | number | boolean | undefined;
|
||||
value?: any;
|
||||
onClick?: ((args_0: KeyboardEvent | MouseEvent) => void) | undefined;
|
||||
onClickOnce?: ((args_0: MouseEvent) => void) | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
prepend?: ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
append?: ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
default?: ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
title?: ((arg: import("../../components/VList/VListItem.js").ListItemTitleSlot) => import("vue").VNodeChild) | undefined;
|
||||
subtitle?: ((arg: import("../../components/VList/VListItem.js").ListItemSubtitleSlot) => import("vue").VNodeChild) | undefined;
|
||||
clear?: ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
prepend?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
append?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
default?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
title?: false | ((arg: import("../../components/VList/VListItem.js").ListItemTitleSlot) => import("vue").VNodeChild) | undefined;
|
||||
subtitle?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSubtitleSlot) => import("vue").VNodeChild) | undefined;
|
||||
clear?: false | ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:append"?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:clear"?: false | ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:default"?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:prepend"?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:subtitle"?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSubtitleSlot) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:title"?: false | ((arg: import("../../components/VList/VListItem.js").ListItemTitleSlot) => import("vue").VNodeChild) | undefined;
|
||||
} & {
|
||||
onClick?: ((e: KeyboardEvent | MouseEvent) => any) | undefined;
|
||||
"onClick:remove"?: (() => any) | undefined;
|
||||
}, void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
||||
"click:remove": () => true;
|
||||
click: (e: KeyboardEvent | MouseEvent) => true;
|
||||
}, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
|
||||
style: import("vue").StyleValue;
|
||||
border: string | number | boolean;
|
||||
density: import("../../composables/density.js").Density;
|
||||
rounded: string | number | boolean;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
|
||||
replace: boolean;
|
||||
exact: boolean;
|
||||
active: boolean;
|
||||
disabled: boolean;
|
||||
lines: "one" | "three" | "two" | false;
|
||||
link: boolean;
|
||||
nav: boolean;
|
||||
ripple: boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined;
|
||||
slim: boolean;
|
||||
subtitle: string | number | boolean;
|
||||
title: string | number | boolean;
|
||||
clearable: boolean;
|
||||
file: File;
|
||||
fileIcon: string;
|
||||
showSize: boolean;
|
||||
}, true, {}, import("vue").SlotsType<Partial<{
|
||||
prepend: (arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
append: (arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
default: (arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
title: (arg: import("../../components/VList/VListItem.js").ListItemTitleSlot) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
subtitle: (arg: import("../../components/VList/VListItem.js").ListItemSubtitleSlot) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
clear: (arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
||||
P: {};
|
||||
B: {};
|
||||
D: {};
|
||||
C: {};
|
||||
M: {};
|
||||
Defaults: {};
|
||||
}, {
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
border: string | number | boolean;
|
||||
density: import("../../composables/density.js").Density;
|
||||
rounded: string | number | boolean;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
|
||||
replace: boolean;
|
||||
exact: boolean;
|
||||
disabled: boolean;
|
||||
lines: "one" | "three" | "two" | false;
|
||||
nav: boolean;
|
||||
ripple: boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
};
|
||||
slim: boolean;
|
||||
clearable: boolean;
|
||||
file: File;
|
||||
fileIcon: string;
|
||||
showSize: boolean;
|
||||
} & {
|
||||
theme?: string | undefined;
|
||||
class?: any;
|
||||
elevation?: string | number | undefined;
|
||||
color?: string | undefined;
|
||||
height?: string | number | undefined;
|
||||
maxHeight?: string | number | undefined;
|
||||
maxWidth?: string | number | undefined;
|
||||
minHeight?: string | number | undefined;
|
||||
minWidth?: string | number | undefined;
|
||||
width?: string | number | undefined;
|
||||
href?: string | undefined;
|
||||
to?: string | import("vue-router").RouteLocationAsPathGeneric | import("vue-router").RouteLocationAsRelativeGeneric | undefined;
|
||||
active?: boolean | undefined;
|
||||
activeClass?: string | undefined;
|
||||
activeColor?: string | undefined;
|
||||
appendAvatar?: string | undefined;
|
||||
appendIcon?: import("../../composables/icons.js").IconValue | undefined;
|
||||
baseColor?: string | undefined;
|
||||
link?: boolean | undefined;
|
||||
prependAvatar?: string | undefined;
|
||||
prependIcon?: import("../../composables/icons.js").IconValue | undefined;
|
||||
prependGap?: string | number | undefined;
|
||||
subtitle?: string | number | boolean | undefined;
|
||||
title?: string | number | boolean | undefined;
|
||||
value?: any;
|
||||
onClick?: ((args_0: KeyboardEvent | MouseEvent) => void) | undefined;
|
||||
onClickOnce?: ((args_0: MouseEvent) => void) | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
prepend?: ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
append?: ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
default?: ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
title?: ((arg: import("../../components/VList/VListItem.js").ListItemTitleSlot) => import("vue").VNodeChild) | undefined;
|
||||
subtitle?: ((arg: import("../../components/VList/VListItem.js").ListItemSubtitleSlot) => import("vue").VNodeChild) | undefined;
|
||||
clear?: ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
prepend?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
append?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
default?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
title?: false | ((arg: import("../../components/VList/VListItem.js").ListItemTitleSlot) => import("vue").VNodeChild) | undefined;
|
||||
subtitle?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSubtitleSlot) => import("vue").VNodeChild) | undefined;
|
||||
clear?: false | ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:append"?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:clear"?: false | ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:default"?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:prepend"?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:subtitle"?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSubtitleSlot) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:title"?: false | ((arg: import("../../components/VList/VListItem.js").ListItemTitleSlot) => import("vue").VNodeChild) | undefined;
|
||||
} & {
|
||||
onClick?: ((e: KeyboardEvent | MouseEvent) => any) | undefined;
|
||||
"onClick:remove"?: (() => any) | undefined;
|
||||
}, {}, {}, {}, {}, {
|
||||
style: import("vue").StyleValue;
|
||||
border: string | number | boolean;
|
||||
density: import("../../composables/density.js").Density;
|
||||
rounded: string | number | boolean;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
|
||||
replace: boolean;
|
||||
exact: boolean;
|
||||
active: boolean;
|
||||
disabled: boolean;
|
||||
lines: "one" | "three" | "two" | false;
|
||||
link: boolean;
|
||||
nav: boolean;
|
||||
ripple: boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined;
|
||||
slim: boolean;
|
||||
subtitle: string | number | boolean;
|
||||
title: string | number | boolean;
|
||||
clearable: boolean;
|
||||
file: File;
|
||||
fileIcon: string;
|
||||
showSize: boolean;
|
||||
}>;
|
||||
__isFragment?: undefined;
|
||||
__isTeleport?: undefined;
|
||||
__isSuspense?: undefined;
|
||||
} & import("vue").ComponentOptionsBase<{
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
border: string | number | boolean;
|
||||
density: import("../../composables/density.js").Density;
|
||||
rounded: string | number | boolean;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
|
||||
replace: boolean;
|
||||
exact: boolean;
|
||||
disabled: boolean;
|
||||
lines: "one" | "three" | "two" | false;
|
||||
nav: boolean;
|
||||
ripple: boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
};
|
||||
slim: boolean;
|
||||
clearable: boolean;
|
||||
file: File;
|
||||
fileIcon: string;
|
||||
showSize: boolean;
|
||||
} & {
|
||||
theme?: string | undefined;
|
||||
class?: any;
|
||||
elevation?: string | number | undefined;
|
||||
color?: string | undefined;
|
||||
height?: string | number | undefined;
|
||||
maxHeight?: string | number | undefined;
|
||||
maxWidth?: string | number | undefined;
|
||||
minHeight?: string | number | undefined;
|
||||
minWidth?: string | number | undefined;
|
||||
width?: string | number | undefined;
|
||||
href?: string | undefined;
|
||||
to?: string | import("vue-router").RouteLocationAsPathGeneric | import("vue-router").RouteLocationAsRelativeGeneric | undefined;
|
||||
active?: boolean | undefined;
|
||||
activeClass?: string | undefined;
|
||||
activeColor?: string | undefined;
|
||||
appendAvatar?: string | undefined;
|
||||
appendIcon?: import("../../composables/icons.js").IconValue | undefined;
|
||||
baseColor?: string | undefined;
|
||||
link?: boolean | undefined;
|
||||
prependAvatar?: string | undefined;
|
||||
prependIcon?: import("../../composables/icons.js").IconValue | undefined;
|
||||
prependGap?: string | number | undefined;
|
||||
subtitle?: string | number | boolean | undefined;
|
||||
title?: string | number | boolean | undefined;
|
||||
value?: any;
|
||||
onClick?: ((args_0: KeyboardEvent | MouseEvent) => void) | undefined;
|
||||
onClickOnce?: ((args_0: MouseEvent) => void) | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
prepend?: ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
append?: ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
default?: ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
title?: ((arg: import("../../components/VList/VListItem.js").ListItemTitleSlot) => import("vue").VNodeChild) | undefined;
|
||||
subtitle?: ((arg: import("../../components/VList/VListItem.js").ListItemSubtitleSlot) => import("vue").VNodeChild) | undefined;
|
||||
clear?: ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
prepend?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
append?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
default?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
title?: false | ((arg: import("../../components/VList/VListItem.js").ListItemTitleSlot) => import("vue").VNodeChild) | undefined;
|
||||
subtitle?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSubtitleSlot) => import("vue").VNodeChild) | undefined;
|
||||
clear?: false | ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:append"?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:clear"?: false | ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:default"?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:prepend"?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:subtitle"?: false | ((arg: import("../../components/VList/VListItem.js").ListItemSubtitleSlot) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:title"?: false | ((arg: import("../../components/VList/VListItem.js").ListItemTitleSlot) => import("vue").VNodeChild) | undefined;
|
||||
} & {
|
||||
onClick?: ((e: KeyboardEvent | MouseEvent) => any) | undefined;
|
||||
"onClick:remove"?: (() => any) | undefined;
|
||||
}, void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
||||
"click:remove": () => true;
|
||||
click: (e: KeyboardEvent | MouseEvent) => true;
|
||||
}, string, {
|
||||
style: import("vue").StyleValue;
|
||||
border: string | number | boolean;
|
||||
density: import("../../composables/density.js").Density;
|
||||
rounded: string | number | boolean;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
|
||||
replace: boolean;
|
||||
exact: boolean;
|
||||
active: boolean;
|
||||
disabled: boolean;
|
||||
lines: "one" | "three" | "two" | false;
|
||||
link: boolean;
|
||||
nav: boolean;
|
||||
ripple: boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined;
|
||||
slim: boolean;
|
||||
subtitle: string | number | boolean;
|
||||
title: string | number | boolean;
|
||||
clearable: boolean;
|
||||
file: File;
|
||||
fileIcon: string;
|
||||
showSize: boolean;
|
||||
}, {}, string, import("vue").SlotsType<Partial<{
|
||||
prepend: (arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
append: (arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
default: (arg: import("../../components/VList/VListItem.js").ListItemSlot) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
title: (arg: import("../../components/VList/VListItem.js").ListItemTitleSlot) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
subtitle: (arg: import("../../components/VList/VListItem.js").ListItemSubtitleSlot) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
clear: (arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
|
||||
theme: StringConstructor;
|
||||
class: PropType<any>;
|
||||
style: {
|
||||
type: PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
};
|
||||
border: {
|
||||
type: PropType<string | number | boolean>;
|
||||
default: NonNullable<string | number | boolean>;
|
||||
};
|
||||
density: {
|
||||
type: PropType<import("../../composables/density.js").Density>;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
};
|
||||
elevation: {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
};
|
||||
rounded: Omit<{
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<string | number | boolean>;
|
||||
default: NonNullable<string | number | boolean>;
|
||||
};
|
||||
tile: BooleanConstructor;
|
||||
tag: {
|
||||
type: PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
};
|
||||
color: StringConstructor;
|
||||
variant: Omit<{
|
||||
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
};
|
||||
height: (NumberConstructor | StringConstructor)[];
|
||||
maxHeight: (NumberConstructor | StringConstructor)[];
|
||||
maxWidth: (NumberConstructor | StringConstructor)[];
|
||||
minHeight: (NumberConstructor | StringConstructor)[];
|
||||
minWidth: (NumberConstructor | StringConstructor)[];
|
||||
width: (NumberConstructor | StringConstructor)[];
|
||||
href: StringConstructor;
|
||||
replace: BooleanConstructor;
|
||||
to: PropType<string | import("vue-router").RouteLocationAsPathGeneric | import("vue-router").RouteLocationAsRelativeGeneric>;
|
||||
exact: BooleanConstructor;
|
||||
active: {
|
||||
type: BooleanConstructor;
|
||||
default: undefined;
|
||||
};
|
||||
activeClass: StringConstructor;
|
||||
activeColor: StringConstructor;
|
||||
appendAvatar: StringConstructor;
|
||||
appendIcon: PropType<import("../../composables/icons.js").IconValue>;
|
||||
baseColor: StringConstructor;
|
||||
disabled: BooleanConstructor;
|
||||
lines: {
|
||||
type: PropType<"one" | "three" | "two" | false>;
|
||||
default: NonNullable<"one" | "three" | "two" | false>;
|
||||
};
|
||||
link: {
|
||||
type: BooleanConstructor;
|
||||
default: undefined;
|
||||
};
|
||||
nav: BooleanConstructor;
|
||||
prependAvatar: StringConstructor;
|
||||
prependIcon: PropType<import("../../composables/icons.js").IconValue>;
|
||||
ripple: {
|
||||
type: PropType<boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined>;
|
||||
default: boolean;
|
||||
};
|
||||
slim: BooleanConstructor;
|
||||
prependGap: (NumberConstructor | StringConstructor)[];
|
||||
subtitle: {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
};
|
||||
title: {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
};
|
||||
value: null;
|
||||
onClick: PropType<(args_0: KeyboardEvent | MouseEvent) => void>;
|
||||
onClickOnce: PropType<(args_0: MouseEvent) => void>;
|
||||
clearable: BooleanConstructor;
|
||||
file: {
|
||||
type: PropType<File>;
|
||||
default: null;
|
||||
};
|
||||
fileIcon: {
|
||||
type: StringConstructor;
|
||||
// TODO: setup up a proper aliased icon
|
||||
default: string;
|
||||
};
|
||||
showSize: BooleanConstructor;
|
||||
}, import("vue").ExtractPropTypes<{
|
||||
theme: StringConstructor;
|
||||
class: PropType<any>;
|
||||
style: {
|
||||
type: PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
};
|
||||
border: {
|
||||
type: PropType<string | number | boolean>;
|
||||
default: NonNullable<string | number | boolean>;
|
||||
};
|
||||
density: {
|
||||
type: PropType<import("../../composables/density.js").Density>;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
};
|
||||
elevation: {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
};
|
||||
rounded: Omit<{
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<string | number | boolean>;
|
||||
default: NonNullable<string | number | boolean>;
|
||||
};
|
||||
tile: BooleanConstructor;
|
||||
tag: {
|
||||
type: PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
};
|
||||
color: StringConstructor;
|
||||
variant: Omit<{
|
||||
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
};
|
||||
height: (NumberConstructor | StringConstructor)[];
|
||||
maxHeight: (NumberConstructor | StringConstructor)[];
|
||||
maxWidth: (NumberConstructor | StringConstructor)[];
|
||||
minHeight: (NumberConstructor | StringConstructor)[];
|
||||
minWidth: (NumberConstructor | StringConstructor)[];
|
||||
width: (NumberConstructor | StringConstructor)[];
|
||||
href: StringConstructor;
|
||||
replace: BooleanConstructor;
|
||||
to: PropType<string | import("vue-router").RouteLocationAsPathGeneric | import("vue-router").RouteLocationAsRelativeGeneric>;
|
||||
exact: BooleanConstructor;
|
||||
active: {
|
||||
type: BooleanConstructor;
|
||||
default: undefined;
|
||||
};
|
||||
activeClass: StringConstructor;
|
||||
activeColor: StringConstructor;
|
||||
appendAvatar: StringConstructor;
|
||||
appendIcon: PropType<import("../../composables/icons.js").IconValue>;
|
||||
baseColor: StringConstructor;
|
||||
disabled: BooleanConstructor;
|
||||
lines: {
|
||||
type: PropType<"one" | "three" | "two" | false>;
|
||||
default: NonNullable<"one" | "three" | "two" | false>;
|
||||
};
|
||||
link: {
|
||||
type: BooleanConstructor;
|
||||
default: undefined;
|
||||
};
|
||||
nav: BooleanConstructor;
|
||||
prependAvatar: StringConstructor;
|
||||
prependIcon: PropType<import("../../composables/icons.js").IconValue>;
|
||||
ripple: {
|
||||
type: PropType<boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined>;
|
||||
default: boolean;
|
||||
};
|
||||
slim: BooleanConstructor;
|
||||
prependGap: (NumberConstructor | StringConstructor)[];
|
||||
subtitle: {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
};
|
||||
title: {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
};
|
||||
value: null;
|
||||
onClick: PropType<(args_0: KeyboardEvent | MouseEvent) => void>;
|
||||
onClickOnce: PropType<(args_0: MouseEvent) => void>;
|
||||
clearable: BooleanConstructor;
|
||||
file: {
|
||||
type: PropType<File>;
|
||||
default: null;
|
||||
};
|
||||
fileIcon: {
|
||||
type: StringConstructor;
|
||||
// TODO: setup up a proper aliased icon
|
||||
default: string;
|
||||
};
|
||||
showSize: BooleanConstructor;
|
||||
}>>;
|
||||
export type VFileUploadItem = InstanceType<typeof VFileUploadItem>;
|
||||
Generated
Vendored
+97
@@ -0,0 +1,97 @@
|
||||
import { Fragment as _Fragment, createVNode as _createVNode, createElementVNode as _createElementVNode, mergeProps as _mergeProps } from "vue";
|
||||
// Components
|
||||
import { VAvatar } from "../../components/VAvatar/VAvatar.js";
|
||||
import { VBtn } from "../../components/VBtn/VBtn.js";
|
||||
import { VDefaultsProvider } from "../../components/VDefaultsProvider/VDefaultsProvider.js";
|
||||
import { makeVListItemProps, VListItem } from "../../components/VList/VListItem.js"; // Utilities
|
||||
import { computed, ref, watchEffect } from 'vue';
|
||||
import { genericComponent, humanReadableFileSize, propsFactory, useRender } from "../../util/index.js"; // Types
|
||||
export const makeVFileUploadItemProps = propsFactory({
|
||||
clearable: Boolean,
|
||||
file: {
|
||||
type: Object,
|
||||
default: null
|
||||
},
|
||||
fileIcon: {
|
||||
type: String,
|
||||
// TODO: setup up a proper aliased icon
|
||||
default: 'mdi-file-document'
|
||||
},
|
||||
showSize: Boolean,
|
||||
...makeVListItemProps({
|
||||
border: true,
|
||||
rounded: true,
|
||||
lines: 'two'
|
||||
})
|
||||
}, 'VFileUploadItem');
|
||||
export const VFileUploadItem = genericComponent()({
|
||||
name: 'VFileUploadItem',
|
||||
props: makeVFileUploadItemProps(),
|
||||
emits: {
|
||||
'click:remove': () => true,
|
||||
click: e => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
emit,
|
||||
slots
|
||||
} = _ref;
|
||||
const preview = ref();
|
||||
const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined);
|
||||
function onClickRemove() {
|
||||
emit('click:remove');
|
||||
}
|
||||
watchEffect(() => {
|
||||
preview.value = props.file?.type.startsWith('image') ? URL.createObjectURL(props.file) : undefined;
|
||||
});
|
||||
useRender(() => {
|
||||
const listItemProps = VListItem.filterProps(props);
|
||||
return _createVNode(VListItem, _mergeProps(listItemProps, {
|
||||
"class": ['v-file-upload-item', props.class],
|
||||
"title": props.title ?? props.file?.name,
|
||||
"subtitle": props.showSize ? humanReadableFileSize(props.file?.size, base.value) : props.file?.type,
|
||||
"style": props.style
|
||||
}), {
|
||||
...slots,
|
||||
title: slots.title ?? (() => props?.title ?? props.file?.name),
|
||||
prepend: slotProps => _createElementVNode(_Fragment, null, [!slots.prepend ? _createVNode(VAvatar, {
|
||||
"icon": props.fileIcon,
|
||||
"image": preview.value,
|
||||
"rounded": true
|
||||
}, null) : _createVNode(VDefaultsProvider, {
|
||||
"defaults": {
|
||||
VAvatar: {
|
||||
image: preview.value,
|
||||
icon: !preview.value ? props.fileIcon : undefined,
|
||||
rounded: true
|
||||
}
|
||||
}
|
||||
}, {
|
||||
default: () => [slots.prepend?.(slotProps) ?? _createVNode(VAvatar, null, null)]
|
||||
})]),
|
||||
append: slotProps => _createElementVNode(_Fragment, null, [props.clearable && _createElementVNode(_Fragment, null, [!slots.clear ? _createVNode(VBtn, {
|
||||
"icon": "$clear",
|
||||
"density": "comfortable",
|
||||
"variant": "text",
|
||||
"onClick": onClickRemove
|
||||
}, null) : _createVNode(VDefaultsProvider, {
|
||||
"defaults": {
|
||||
VBtn: {
|
||||
icon: '$clear',
|
||||
density: 'comfortable',
|
||||
variant: 'text'
|
||||
}
|
||||
}
|
||||
}, {
|
||||
default: () => [slots.clear?.({
|
||||
...slotProps,
|
||||
props: {
|
||||
onClick: onClickRemove
|
||||
}
|
||||
}) ?? _createVNode(VBtn, null, null)]
|
||||
})]), slots.append?.(slotProps)])
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=VFileUploadItem.js.map
|
||||
Generated
Vendored
+1
File diff suppressed because one or more lines are too long
Generated
Vendored
+12
@@ -0,0 +1,12 @@
|
||||
@use '../../styles/tools';
|
||||
@use '../../styles/settings';
|
||||
|
||||
$file-upload-title-font-size: 1.5rem !default;
|
||||
$file-upload-padding: 64px 16px !default;
|
||||
$file-upload-border-radius: 4px !default;
|
||||
$file-upload-border-width: 2px !default;
|
||||
$file-upload-title-font-weight: 600 !default;
|
||||
$file-upload-icon-font-size: 3rem !default;
|
||||
$file-upload-icon-margin-bottom: 1rem !default;
|
||||
$file-upload-divider-margin: 32px 0 !default;
|
||||
$file-upload-items-margin: 16px 0 !default;
|
||||
Generated
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
export { VFileUpload } from './VFileUpload.js';
|
||||
export { VFileUploadItem } from './VFileUploadItem.js';
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
export { VFileUpload } from "./VFileUpload.js";
|
||||
export { VFileUploadItem } from "./VFileUploadItem.js";
|
||||
//# sourceMappingURL=index.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.js","names":["VFileUpload","VFileUploadItem"],"sources":["../../../src/labs/VFileUpload/index.ts"],"sourcesContent":["export { VFileUpload } from './VFileUpload'\nexport { VFileUploadItem } from './VFileUploadItem'\n"],"mappings":"SAASA,WAAW;AAAA,SACXC,eAAe","ignoreList":[]}
|
||||
+201
@@ -0,0 +1,201 @@
|
||||
.v-icon-btn {
|
||||
border-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
||||
border-style: solid;
|
||||
border-width: 0;
|
||||
}
|
||||
.v-icon-btn--border {
|
||||
border-width: thin;
|
||||
box-shadow: none;
|
||||
}
|
||||
.v-icon-btn {
|
||||
border-radius: 50%;
|
||||
}
|
||||
.v-icon-btn:hover > .v-icon-btn__overlay {
|
||||
opacity: calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier));
|
||||
}
|
||||
.v-icon-btn:focus-visible > .v-icon-btn__overlay {
|
||||
opacity: calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier));
|
||||
}
|
||||
@supports not selector(:focus-visible) {
|
||||
.v-icon-btn:focus > .v-icon-btn__overlay {
|
||||
opacity: calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier));
|
||||
}
|
||||
}
|
||||
.v-icon-btn--active > .v-icon-btn__overlay, .v-icon-btn[aria-haspopup=menu][aria-expanded=true] > .v-icon-btn__overlay {
|
||||
opacity: calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier));
|
||||
}
|
||||
.v-icon-btn--active:hover > .v-icon-btn__overlay, .v-icon-btn[aria-haspopup=menu][aria-expanded=true]:hover > .v-icon-btn__overlay {
|
||||
opacity: calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier));
|
||||
}
|
||||
.v-icon-btn--active:focus-visible > .v-icon-btn__overlay, .v-icon-btn[aria-haspopup=menu][aria-expanded=true]:focus-visible > .v-icon-btn__overlay {
|
||||
opacity: calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier));
|
||||
}
|
||||
@supports not selector(:focus-visible) {
|
||||
.v-icon-btn--active:focus > .v-icon-btn__overlay, .v-icon-btn[aria-haspopup=menu][aria-expanded=true]:focus > .v-icon-btn__overlay {
|
||||
opacity: calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier));
|
||||
}
|
||||
}
|
||||
.v-icon-btn--variant-plain, .v-icon-btn--variant-outlined, .v-icon-btn--variant-text, .v-icon-btn--variant-tonal {
|
||||
background: transparent;
|
||||
color: inherit;
|
||||
}
|
||||
.v-icon-btn--variant-plain {
|
||||
opacity: 0.62;
|
||||
}
|
||||
.v-icon-btn--variant-plain:focus, .v-icon-btn--variant-plain:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
.v-icon-btn--variant-plain .v-icon-btn__overlay {
|
||||
display: none;
|
||||
}
|
||||
.v-icon-btn--variant-elevated, .v-icon-btn--variant-flat {
|
||||
background: rgb(var(--v-theme-surface));
|
||||
color: inherit;
|
||||
}
|
||||
.v-icon-btn--variant-elevated {
|
||||
box-shadow: 0px 3px 1px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, 0.2)), 0px 2px 2px 0px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, 0.14)), 0px 1px 5px 0px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, 0.12));
|
||||
}
|
||||
.v-icon-btn--variant-flat {
|
||||
box-shadow: 0px 0px 0px 0px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, 0.2)), 0px 0px 0px 0px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, 0.14)), 0px 0px 0px 0px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, 0.12));
|
||||
}
|
||||
.v-icon-btn--variant-outlined {
|
||||
border: thin solid currentColor;
|
||||
}
|
||||
.v-icon-btn--variant-text .v-icon-btn__overlay {
|
||||
background: currentColor;
|
||||
}
|
||||
.v-icon-btn--variant-tonal .v-icon-btn__underlay {
|
||||
background: currentColor;
|
||||
opacity: var(--v-activated-opacity);
|
||||
border-radius: inherit;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
pointer-events: none;
|
||||
}
|
||||
.v-icon-btn .v-icon-btn__underlay {
|
||||
position: absolute;
|
||||
}
|
||||
.v-icon-btn {
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
display: inline-flex;
|
||||
flex: none;
|
||||
font-size: 0.875rem;
|
||||
font-weight: 500;
|
||||
line-height: normal;
|
||||
height: var(--v-icon-btn-height);
|
||||
justify-content: center;
|
||||
outline: none;
|
||||
position: relative;
|
||||
transition-property: width, height, transform;
|
||||
transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
vertical-align: middle;
|
||||
width: var(--v-icon-btn-width);
|
||||
}
|
||||
@supports selector(:focus-visible) {
|
||||
.v-icon-btn::after {
|
||||
pointer-events: none;
|
||||
border: 2px solid currentColor;
|
||||
border-radius: inherit;
|
||||
opacity: 0;
|
||||
transition: opacity 0.2s ease-in-out;
|
||||
}
|
||||
.v-icon-btn::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.v-icon-btn:focus-visible::after {
|
||||
opacity: calc(0.25 * var(--v-theme-overlay-multiplier));
|
||||
}
|
||||
}
|
||||
.v-icon-btn--disabled, .v-icon-btn--loading, .v-icon-btn--readonly {
|
||||
pointer-events: none;
|
||||
}
|
||||
.v-icon-btn--disabled {
|
||||
opacity: 0.26;
|
||||
}
|
||||
.v-icon-btn--start {
|
||||
margin-inline-end: 8px;
|
||||
}
|
||||
.v-icon-btn--end {
|
||||
margin-inline-start: 8px;
|
||||
}
|
||||
|
||||
.v-icon-btn__content {
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
display: inline-flex;
|
||||
transition: inherit;
|
||||
transition-property: transform;
|
||||
transform: rotate(var(--v-icon-btn-rotate, 0deg));
|
||||
}
|
||||
.v-icon-btn--loading .v-icon-btn__content {
|
||||
opacity: 0;
|
||||
}
|
||||
.v-icon-btn__content .v-icon {
|
||||
transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
transition-property: opacity, font-size, width, height;
|
||||
transform-origin: center;
|
||||
}
|
||||
|
||||
.v-icon-btn__loader {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
height: 100%;
|
||||
justify-content: center;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.v-icon-btn__overlay,
|
||||
.v-icon-btn__underlay {
|
||||
border-radius: inherit;
|
||||
pointer-events: none;
|
||||
}
|
||||
.v-icon-btn__overlay,
|
||||
.v-icon-btn__underlay {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.v-icon-btn__overlay {
|
||||
background-color: currentColor;
|
||||
opacity: 0;
|
||||
transition: opacity 0.2s ease-in-out;
|
||||
}
|
||||
.v-icon-btn--active:not(:hover) .v-icon-btn__overlay {
|
||||
--v-activated-opacity: 0;
|
||||
}
|
||||
|
||||
@media (forced-colors: active) {
|
||||
.v-icon-btn:focus-visible {
|
||||
outline: 2px solid;
|
||||
outline-offset: 2px;
|
||||
}
|
||||
.v-icon-btn:not(.v-icon-btn--active):hover, .v-icon-btn:not(.v-icon-btn--active):focus {
|
||||
color: highlight !important;
|
||||
}
|
||||
.v-icon-btn--active:not(.v-icon-btn--disabled), .v-icon-btn--active:not(.v-icon-btn--disabled)[class*=bg-] {
|
||||
outline-color: canvastext !important;
|
||||
background: highlight !important;
|
||||
color: highlighttext !important;
|
||||
}
|
||||
.v-icon-btn--disabled {
|
||||
color: graytext;
|
||||
}
|
||||
.v-icon-btn__overlay, .v-icon-btn__underlay,
|
||||
.v-icon-btn .v-icon {
|
||||
forced-color-adjust: preserve-parent-color;
|
||||
}
|
||||
}
|
||||
Generated
Vendored
+609
@@ -0,0 +1,609 @@
|
||||
// Styles
|
||||
|
||||
// Types
|
||||
import type { PropType } from 'vue';
|
||||
import type { IconValue } from '../../composables/icons.js';
|
||||
export type VIconBtnSlots = {
|
||||
default: never;
|
||||
loader: never;
|
||||
};
|
||||
export type VIconBtnSizes = 'x-small' | 'small' | 'default' | 'large' | 'x-large';
|
||||
export declare const makeVIconBtnProps: <Defaults extends {
|
||||
theme?: unknown;
|
||||
class?: unknown;
|
||||
style?: unknown;
|
||||
border?: unknown;
|
||||
elevation?: unknown;
|
||||
rounded?: unknown;
|
||||
tile?: unknown;
|
||||
tag?: unknown;
|
||||
color?: unknown;
|
||||
variant?: unknown;
|
||||
active?: unknown;
|
||||
activeColor?: unknown;
|
||||
activeIcon?: unknown;
|
||||
activeVariant?: unknown;
|
||||
baseVariant?: unknown;
|
||||
disabled?: unknown;
|
||||
height?: unknown;
|
||||
width?: unknown;
|
||||
hideOverlay?: unknown;
|
||||
icon?: unknown;
|
||||
iconColor?: unknown;
|
||||
loading?: unknown;
|
||||
opacity?: unknown;
|
||||
readonly?: unknown;
|
||||
rotate?: unknown;
|
||||
size?: unknown;
|
||||
sizes?: unknown;
|
||||
text?: unknown;
|
||||
iconSize?: unknown;
|
||||
iconSizes?: unknown;
|
||||
} = {}>(defaults?: Defaults | undefined) => {
|
||||
theme: unknown extends Defaults["theme"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["theme"] ? string : string | Defaults["theme"]>;
|
||||
default: unknown extends Defaults["theme"] ? string : string | Defaults["theme"];
|
||||
};
|
||||
class: unknown extends Defaults["class"] ? PropType<any> : {
|
||||
type: PropType<unknown extends Defaults["class"] ? any : any>;
|
||||
default: unknown extends Defaults["class"] ? any : any;
|
||||
};
|
||||
style: unknown extends Defaults["style"] ? {
|
||||
type: PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
} : Omit<{
|
||||
type: PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | import("vue").StyleValue>;
|
||||
default: unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | NonNullable<import("vue").StyleValue>;
|
||||
};
|
||||
border: unknown extends Defaults["border"] ? (BooleanConstructor | NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["border"] ? string | number | boolean : string | number | boolean | Defaults["border"]>;
|
||||
default: unknown extends Defaults["border"] ? string | number | boolean : Defaults["border"] | NonNullable<string | number | boolean>;
|
||||
};
|
||||
elevation: unknown extends Defaults["elevation"] ? {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
} : Omit<{
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["elevation"] ? string | number : string | number | Defaults["elevation"]>;
|
||||
default: unknown extends Defaults["elevation"] ? string | number : Defaults["elevation"] | NonNullable<string | number>;
|
||||
};
|
||||
rounded: unknown extends Defaults["rounded"] ? {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
} : Omit<{
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["rounded"] ? string | number | boolean : string | number | boolean | Defaults["rounded"]>;
|
||||
default: unknown extends Defaults["rounded"] ? string | number | boolean : Defaults["rounded"] | NonNullable<string | number | boolean>;
|
||||
};
|
||||
tile: unknown extends Defaults["tile"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"]>;
|
||||
default: unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"];
|
||||
};
|
||||
tag: unknown extends Defaults["tag"] ? Omit<{
|
||||
type: PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: NonNullable<string | import("../../util/index.js").JSXComponent>;
|
||||
} : Omit<Omit<{
|
||||
type: PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: NonNullable<string | import("../../util/index.js").JSXComponent>;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : string | Defaults["tag"] | import("../../util/index.js").JSXComponent>;
|
||||
default: unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : Defaults["tag"] | NonNullable<string | import("../../util/index.js").JSXComponent>;
|
||||
};
|
||||
color: unknown extends Defaults["color"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["color"] ? string : string | Defaults["color"]>;
|
||||
default: unknown extends Defaults["color"] ? string : string | Defaults["color"];
|
||||
};
|
||||
variant: unknown extends Defaults["variant"] ? Omit<{
|
||||
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
} : Omit<Omit<{
|
||||
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["variant"] ? "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" : "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" | Defaults["variant"]>;
|
||||
default: unknown extends Defaults["variant"] ? "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" : Defaults["variant"] | NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
};
|
||||
active: unknown extends Defaults["active"] ? {
|
||||
type: BooleanConstructor;
|
||||
default: undefined;
|
||||
} : Omit<{
|
||||
type: BooleanConstructor;
|
||||
default: undefined;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["active"] ? boolean : boolean | Defaults["active"]>;
|
||||
default: unknown extends Defaults["active"] ? boolean : boolean | Defaults["active"];
|
||||
};
|
||||
activeColor: unknown extends Defaults["activeColor"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["activeColor"] ? string : string | Defaults["activeColor"]>;
|
||||
default: unknown extends Defaults["activeColor"] ? string : string | Defaults["activeColor"];
|
||||
};
|
||||
activeIcon: unknown extends Defaults["activeIcon"] ? PropType<IconValue> : {
|
||||
type: PropType<unknown extends Defaults["activeIcon"] ? IconValue : Defaults["activeIcon"] | IconValue>;
|
||||
default: unknown extends Defaults["activeIcon"] ? IconValue : Defaults["activeIcon"] | NonNullable<IconValue>;
|
||||
};
|
||||
activeVariant: unknown extends Defaults["activeVariant"] ? PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal"> : {
|
||||
type: PropType<unknown extends Defaults["activeVariant"] ? "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" : "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" | Defaults["activeVariant"]>;
|
||||
default: unknown extends Defaults["activeVariant"] ? "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" : Defaults["activeVariant"] | NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
};
|
||||
baseVariant: unknown extends Defaults["baseVariant"] ? {
|
||||
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["baseVariant"] ? "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" : "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" | Defaults["baseVariant"]>;
|
||||
default: unknown extends Defaults["baseVariant"] ? "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" : Defaults["baseVariant"] | NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
};
|
||||
disabled: unknown extends Defaults["disabled"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"]>;
|
||||
default: unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"];
|
||||
};
|
||||
height: unknown extends Defaults["height"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["height"] ? string | number : string | number | Defaults["height"]>;
|
||||
default: unknown extends Defaults["height"] ? string | number : Defaults["height"] | NonNullable<string | number>;
|
||||
};
|
||||
width: unknown extends Defaults["width"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["width"] ? string | number : string | number | Defaults["width"]>;
|
||||
default: unknown extends Defaults["width"] ? string | number : Defaults["width"] | NonNullable<string | number>;
|
||||
};
|
||||
hideOverlay: unknown extends Defaults["hideOverlay"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["hideOverlay"] ? boolean : boolean | Defaults["hideOverlay"]>;
|
||||
default: unknown extends Defaults["hideOverlay"] ? boolean : boolean | Defaults["hideOverlay"];
|
||||
};
|
||||
icon: unknown extends Defaults["icon"] ? PropType<IconValue> : {
|
||||
type: PropType<unknown extends Defaults["icon"] ? IconValue : Defaults["icon"] | IconValue>;
|
||||
default: unknown extends Defaults["icon"] ? IconValue : Defaults["icon"] | NonNullable<IconValue>;
|
||||
};
|
||||
iconColor: unknown extends Defaults["iconColor"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["iconColor"] ? string : string | Defaults["iconColor"]>;
|
||||
default: unknown extends Defaults["iconColor"] ? string : string | Defaults["iconColor"];
|
||||
};
|
||||
loading: unknown extends Defaults["loading"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["loading"] ? boolean : boolean | Defaults["loading"]>;
|
||||
default: unknown extends Defaults["loading"] ? boolean : boolean | Defaults["loading"];
|
||||
};
|
||||
opacity: unknown extends Defaults["opacity"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["opacity"] ? string | number : string | number | Defaults["opacity"]>;
|
||||
default: unknown extends Defaults["opacity"] ? string | number : Defaults["opacity"] | NonNullable<string | number>;
|
||||
};
|
||||
readonly: unknown extends Defaults["readonly"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["readonly"] ? boolean : boolean | Defaults["readonly"]>;
|
||||
default: unknown extends Defaults["readonly"] ? boolean : boolean | Defaults["readonly"];
|
||||
};
|
||||
rotate: unknown extends Defaults["rotate"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["rotate"] ? string | number : string | number | Defaults["rotate"]>;
|
||||
default: unknown extends Defaults["rotate"] ? string | number : Defaults["rotate"] | NonNullable<string | number>;
|
||||
};
|
||||
size: unknown extends Defaults["size"] ? {
|
||||
type: PropType<string | number>;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: PropType<string | number>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["size"] ? string | number : string | number | Defaults["size"]>;
|
||||
default: unknown extends Defaults["size"] ? string | number : Defaults["size"] | NonNullable<string | number>;
|
||||
};
|
||||
sizes: unknown extends Defaults["sizes"] ? {
|
||||
type: PropType<[VIconBtnSizes, number][]>;
|
||||
default: () => (string | number)[][];
|
||||
} : Omit<{
|
||||
type: PropType<[VIconBtnSizes, number][]>;
|
||||
default: () => (string | number)[][];
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["sizes"] ? [VIconBtnSizes, number][] : [VIconBtnSizes, number][] | Defaults["sizes"]>;
|
||||
default: unknown extends Defaults["sizes"] ? [VIconBtnSizes, number][] : [VIconBtnSizes, number][] | Defaults["sizes"];
|
||||
};
|
||||
text: unknown extends Defaults["text"] ? {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
} : Omit<{
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["text"] ? string | number | boolean : string | number | boolean | Defaults["text"]>;
|
||||
default: unknown extends Defaults["text"] ? string | number | boolean : Defaults["text"] | NonNullable<string | number | boolean>;
|
||||
};
|
||||
iconSize: unknown extends Defaults["iconSize"] ? PropType<string | number> : {
|
||||
type: PropType<unknown extends Defaults["iconSize"] ? string | number : string | number | Defaults["iconSize"]>;
|
||||
default: unknown extends Defaults["iconSize"] ? string | number : Defaults["iconSize"] | NonNullable<string | number>;
|
||||
};
|
||||
iconSizes: unknown extends Defaults["iconSizes"] ? {
|
||||
type: PropType<[VIconBtnSizes, number][]>;
|
||||
default: () => (string | number)[][];
|
||||
} : Omit<{
|
||||
type: PropType<[VIconBtnSizes, number][]>;
|
||||
default: () => (string | number)[][];
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["iconSizes"] ? [VIconBtnSizes, number][] : [VIconBtnSizes, number][] | Defaults["iconSizes"]>;
|
||||
default: unknown extends Defaults["iconSizes"] ? [VIconBtnSizes, number][] : [VIconBtnSizes, number][] | Defaults["iconSizes"];
|
||||
};
|
||||
};
|
||||
export declare const VIconBtn: {
|
||||
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
|
||||
baseVariant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
|
||||
disabled: boolean;
|
||||
hideOverlay: boolean;
|
||||
loading: boolean;
|
||||
readonly: boolean;
|
||||
size: string | number;
|
||||
sizes: [VIconBtnSizes, number][];
|
||||
iconSizes: [VIconBtnSizes, number][];
|
||||
} & {
|
||||
theme?: string | undefined;
|
||||
class?: any;
|
||||
border?: string | number | boolean | undefined;
|
||||
elevation?: string | number | undefined;
|
||||
rounded?: string | number | boolean | undefined;
|
||||
color?: string | undefined;
|
||||
active?: boolean | undefined;
|
||||
activeColor?: string | undefined;
|
||||
activeIcon?: IconValue | undefined;
|
||||
activeVariant?: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" | undefined;
|
||||
height?: string | number | undefined;
|
||||
width?: string | number | undefined;
|
||||
icon?: IconValue | undefined;
|
||||
iconColor?: string | undefined;
|
||||
opacity?: string | number | undefined;
|
||||
rotate?: string | number | undefined;
|
||||
text?: string | number | boolean | undefined;
|
||||
iconSize?: string | number | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
default?: (() => import("vue").VNodeChild) | undefined;
|
||||
loader?: (() => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
default?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
loader?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:loader"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} & {
|
||||
"onUpdate:active"?: ((value: boolean) => any) | undefined;
|
||||
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
||||
"update:active": (value: boolean) => true;
|
||||
}, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
|
||||
style: import("vue").StyleValue;
|
||||
rounded: string | number | boolean;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
|
||||
active: boolean;
|
||||
baseVariant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
|
||||
disabled: boolean;
|
||||
hideOverlay: boolean;
|
||||
loading: boolean;
|
||||
readonly: boolean;
|
||||
size: string | number;
|
||||
sizes: [VIconBtnSizes, number][];
|
||||
text: string | number | boolean;
|
||||
iconSizes: [VIconBtnSizes, number][];
|
||||
}, true, {}, import("vue").SlotsType<Partial<{
|
||||
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
loader: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
||||
P: {};
|
||||
B: {};
|
||||
D: {};
|
||||
C: {};
|
||||
M: {};
|
||||
Defaults: {};
|
||||
}, {
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
|
||||
baseVariant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
|
||||
disabled: boolean;
|
||||
hideOverlay: boolean;
|
||||
loading: boolean;
|
||||
readonly: boolean;
|
||||
size: string | number;
|
||||
sizes: [VIconBtnSizes, number][];
|
||||
iconSizes: [VIconBtnSizes, number][];
|
||||
} & {
|
||||
theme?: string | undefined;
|
||||
class?: any;
|
||||
border?: string | number | boolean | undefined;
|
||||
elevation?: string | number | undefined;
|
||||
rounded?: string | number | boolean | undefined;
|
||||
color?: string | undefined;
|
||||
active?: boolean | undefined;
|
||||
activeColor?: string | undefined;
|
||||
activeIcon?: IconValue | undefined;
|
||||
activeVariant?: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" | undefined;
|
||||
height?: string | number | undefined;
|
||||
width?: string | number | undefined;
|
||||
icon?: IconValue | undefined;
|
||||
iconColor?: string | undefined;
|
||||
opacity?: string | number | undefined;
|
||||
rotate?: string | number | undefined;
|
||||
text?: string | number | boolean | undefined;
|
||||
iconSize?: string | number | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
default?: (() => import("vue").VNodeChild) | undefined;
|
||||
loader?: (() => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
default?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
loader?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:loader"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} & {
|
||||
"onUpdate:active"?: ((value: boolean) => any) | undefined;
|
||||
}, {}, {}, {}, {}, {
|
||||
style: import("vue").StyleValue;
|
||||
rounded: string | number | boolean;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
|
||||
active: boolean;
|
||||
baseVariant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
|
||||
disabled: boolean;
|
||||
hideOverlay: boolean;
|
||||
loading: boolean;
|
||||
readonly: boolean;
|
||||
size: string | number;
|
||||
sizes: [VIconBtnSizes, number][];
|
||||
text: string | number | boolean;
|
||||
iconSizes: [VIconBtnSizes, number][];
|
||||
}>;
|
||||
__isFragment?: undefined;
|
||||
__isTeleport?: undefined;
|
||||
__isSuspense?: undefined;
|
||||
} & import("vue").ComponentOptionsBase<{
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
|
||||
baseVariant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
|
||||
disabled: boolean;
|
||||
hideOverlay: boolean;
|
||||
loading: boolean;
|
||||
readonly: boolean;
|
||||
size: string | number;
|
||||
sizes: [VIconBtnSizes, number][];
|
||||
iconSizes: [VIconBtnSizes, number][];
|
||||
} & {
|
||||
theme?: string | undefined;
|
||||
class?: any;
|
||||
border?: string | number | boolean | undefined;
|
||||
elevation?: string | number | undefined;
|
||||
rounded?: string | number | boolean | undefined;
|
||||
color?: string | undefined;
|
||||
active?: boolean | undefined;
|
||||
activeColor?: string | undefined;
|
||||
activeIcon?: IconValue | undefined;
|
||||
activeVariant?: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal" | undefined;
|
||||
height?: string | number | undefined;
|
||||
width?: string | number | undefined;
|
||||
icon?: IconValue | undefined;
|
||||
iconColor?: string | undefined;
|
||||
opacity?: string | number | undefined;
|
||||
rotate?: string | number | undefined;
|
||||
text?: string | number | boolean | undefined;
|
||||
iconSize?: string | number | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
default?: (() => import("vue").VNodeChild) | undefined;
|
||||
loader?: (() => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
default?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
loader?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:loader"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} & {
|
||||
"onUpdate:active"?: ((value: boolean) => any) | undefined;
|
||||
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
||||
"update:active": (value: boolean) => true;
|
||||
}, string, {
|
||||
style: import("vue").StyleValue;
|
||||
rounded: string | number | boolean;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
variant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
|
||||
active: boolean;
|
||||
baseVariant: "elevated" | "flat" | "outlined" | "plain" | "text" | "tonal";
|
||||
disabled: boolean;
|
||||
hideOverlay: boolean;
|
||||
loading: boolean;
|
||||
readonly: boolean;
|
||||
size: string | number;
|
||||
sizes: [VIconBtnSizes, number][];
|
||||
text: string | number | boolean;
|
||||
iconSizes: [VIconBtnSizes, number][];
|
||||
}, {}, string, import("vue").SlotsType<Partial<{
|
||||
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
loader: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
|
||||
theme: StringConstructor;
|
||||
class: PropType<any>;
|
||||
style: {
|
||||
type: PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
};
|
||||
border: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
elevation: {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
};
|
||||
rounded: {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
};
|
||||
tile: BooleanConstructor;
|
||||
tag: Omit<{
|
||||
type: PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: NonNullable<string | import("../../util/index.js").JSXComponent>;
|
||||
};
|
||||
color: StringConstructor;
|
||||
variant: Omit<{
|
||||
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
};
|
||||
active: {
|
||||
type: BooleanConstructor;
|
||||
default: undefined;
|
||||
};
|
||||
activeColor: StringConstructor;
|
||||
activeIcon: PropType<IconValue>;
|
||||
activeVariant: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
baseVariant: {
|
||||
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
default: string;
|
||||
};
|
||||
disabled: BooleanConstructor;
|
||||
height: (NumberConstructor | StringConstructor)[];
|
||||
width: (NumberConstructor | StringConstructor)[];
|
||||
hideOverlay: BooleanConstructor;
|
||||
icon: PropType<IconValue>;
|
||||
iconColor: StringConstructor;
|
||||
loading: BooleanConstructor;
|
||||
opacity: (NumberConstructor | StringConstructor)[];
|
||||
readonly: BooleanConstructor;
|
||||
rotate: (NumberConstructor | StringConstructor)[];
|
||||
size: {
|
||||
type: PropType<string | number>;
|
||||
default: string;
|
||||
};
|
||||
sizes: {
|
||||
type: PropType<[VIconBtnSizes, number][]>;
|
||||
default: () => (string | number)[][];
|
||||
};
|
||||
text: {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
};
|
||||
iconSize: PropType<string | number>;
|
||||
iconSizes: {
|
||||
type: PropType<[VIconBtnSizes, number][]>;
|
||||
default: () => (string | number)[][];
|
||||
};
|
||||
}, import("vue").ExtractPropTypes<{
|
||||
theme: StringConstructor;
|
||||
class: PropType<any>;
|
||||
style: {
|
||||
type: PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
};
|
||||
border: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
elevation: {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
};
|
||||
rounded: {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
};
|
||||
tile: BooleanConstructor;
|
||||
tag: Omit<{
|
||||
type: PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: NonNullable<string | import("../../util/index.js").JSXComponent>;
|
||||
};
|
||||
color: StringConstructor;
|
||||
variant: Omit<{
|
||||
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
default: NonNullable<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
};
|
||||
active: {
|
||||
type: BooleanConstructor;
|
||||
default: undefined;
|
||||
};
|
||||
activeColor: StringConstructor;
|
||||
activeIcon: PropType<IconValue>;
|
||||
activeVariant: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
baseVariant: {
|
||||
type: PropType<"elevated" | "flat" | "outlined" | "plain" | "text" | "tonal">;
|
||||
default: string;
|
||||
};
|
||||
disabled: BooleanConstructor;
|
||||
height: (NumberConstructor | StringConstructor)[];
|
||||
width: (NumberConstructor | StringConstructor)[];
|
||||
hideOverlay: BooleanConstructor;
|
||||
icon: PropType<IconValue>;
|
||||
iconColor: StringConstructor;
|
||||
loading: BooleanConstructor;
|
||||
opacity: (NumberConstructor | StringConstructor)[];
|
||||
readonly: BooleanConstructor;
|
||||
rotate: (NumberConstructor | StringConstructor)[];
|
||||
size: {
|
||||
type: PropType<string | number>;
|
||||
default: string;
|
||||
};
|
||||
sizes: {
|
||||
type: PropType<[VIconBtnSizes, number][]>;
|
||||
default: () => (string | number)[][];
|
||||
};
|
||||
text: {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
};
|
||||
iconSize: PropType<string | number>;
|
||||
iconSizes: {
|
||||
type: PropType<[VIconBtnSizes, number][]>;
|
||||
default: () => (string | number)[][];
|
||||
};
|
||||
}>>;
|
||||
export type VIconBtn = InstanceType<typeof VIconBtn>;
|
||||
+179
@@ -0,0 +1,179 @@
|
||||
import { mergeProps as _mergeProps, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle } from "vue";
|
||||
// Styles
|
||||
import "./VIconBtn.css";
|
||||
|
||||
// Components
|
||||
import { VDefaultsProvider } from "../../components/VDefaultsProvider/index.js";
|
||||
import { VIcon } from "../../components/VIcon/index.js";
|
||||
import { VProgressCircular } from "../../components/VProgressCircular/index.js"; // Composables
|
||||
import { makeBorderProps, useBorder } from "../../composables/border.js";
|
||||
import { makeComponentProps } from "../../composables/component.js";
|
||||
import { makeElevationProps, useElevation } from "../../composables/elevation.js";
|
||||
import { makeIconSizeProps, useIconSizes } from "../../composables/iconSizes.js";
|
||||
import { useProxiedModel } from "../../composables/proxiedModel.js";
|
||||
import { makeRoundedProps, useRounded } from "../../composables/rounded.js";
|
||||
import { makeTagProps } from "../../composables/tag.js";
|
||||
import { makeThemeProps, provideTheme } from "../../composables/theme.js";
|
||||
import { genOverlays, makeVariantProps, useVariant } from "../../composables/variant.js"; // Utilities
|
||||
import { toDisplayString } from 'vue';
|
||||
import { convertToUnit, genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
|
||||
export const makeVIconBtnProps = propsFactory({
|
||||
active: {
|
||||
type: Boolean,
|
||||
default: undefined
|
||||
},
|
||||
activeColor: String,
|
||||
activeIcon: [String, Function, Object],
|
||||
activeVariant: String,
|
||||
baseVariant: {
|
||||
type: String,
|
||||
default: 'tonal'
|
||||
},
|
||||
disabled: Boolean,
|
||||
height: [Number, String],
|
||||
width: [Number, String],
|
||||
hideOverlay: Boolean,
|
||||
icon: [String, Function, Object],
|
||||
iconColor: String,
|
||||
loading: Boolean,
|
||||
opacity: [Number, String],
|
||||
readonly: Boolean,
|
||||
rotate: [Number, String],
|
||||
size: {
|
||||
type: [Number, String],
|
||||
default: 'default'
|
||||
},
|
||||
sizes: {
|
||||
type: Array,
|
||||
default: () => [['x-small', 16], ['small', 24], ['default', 40], ['large', 48], ['x-large', 56]]
|
||||
},
|
||||
text: {
|
||||
type: [String, Number, Boolean],
|
||||
default: undefined
|
||||
},
|
||||
...makeBorderProps(),
|
||||
...makeComponentProps(),
|
||||
...makeElevationProps(),
|
||||
...makeIconSizeProps(),
|
||||
...makeRoundedProps(),
|
||||
...makeTagProps({
|
||||
tag: 'button'
|
||||
}),
|
||||
...makeThemeProps(),
|
||||
...makeVariantProps({
|
||||
variant: 'flat'
|
||||
})
|
||||
}, 'VIconBtn');
|
||||
export const VIconBtn = genericComponent()({
|
||||
name: 'VIconBtn',
|
||||
props: makeVIconBtnProps(),
|
||||
emits: {
|
||||
'update:active': value => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
attrs,
|
||||
slots
|
||||
} = _ref;
|
||||
const isActive = useProxiedModel(props, 'active');
|
||||
const {
|
||||
themeClasses
|
||||
} = provideTheme(props);
|
||||
const {
|
||||
borderClasses
|
||||
} = useBorder(props);
|
||||
const {
|
||||
elevationClasses
|
||||
} = useElevation(props);
|
||||
const {
|
||||
roundedClasses
|
||||
} = useRounded(props);
|
||||
const {
|
||||
colorClasses,
|
||||
colorStyles,
|
||||
variantClasses
|
||||
} = useVariant(() => ({
|
||||
color: (() => {
|
||||
if (props.disabled) return undefined;
|
||||
if (!isActive.value) return props.color;
|
||||
// Use an inline fallback as opposed to setting a default color
|
||||
// because non-toggle buttons are default flat whereas toggle
|
||||
// buttons are default tonal and active flat. The exact use
|
||||
// case for this is a toggle button with no active color.
|
||||
return props.activeColor ?? props.color ?? 'surface-variant';
|
||||
})(),
|
||||
variant: (() => {
|
||||
if (isActive.value === undefined) return props.variant;
|
||||
if (isActive.value) return props.activeVariant ?? props.variant;
|
||||
return props.baseVariant ?? props.variant;
|
||||
})()
|
||||
}));
|
||||
const btnSizeMap = new Map(props.sizes);
|
||||
function onClick() {
|
||||
if (props.disabled || props.readonly || isActive.value === undefined || props.tag === 'a' && attrs.href) return;
|
||||
isActive.value = !isActive.value;
|
||||
}
|
||||
useRender(() => {
|
||||
const icon = isActive.value ? props.activeIcon ?? props.icon : props.icon;
|
||||
const _btnSize = props.size;
|
||||
const hasNamedSize = btnSizeMap.has(_btnSize);
|
||||
const btnSize = hasNamedSize ? btnSizeMap.get(_btnSize) : _btnSize;
|
||||
const btnHeight = props.height ?? btnSize;
|
||||
const btnWidth = props.width ?? btnSize;
|
||||
const {
|
||||
iconSize
|
||||
} = useIconSizes(props, () => new Map(props.iconSizes).get(_btnSize));
|
||||
const iconProps = {
|
||||
icon,
|
||||
size: iconSize.value,
|
||||
color: props.iconColor,
|
||||
opacity: props.opacity
|
||||
};
|
||||
return _createVNode(props.tag, {
|
||||
"type": props.tag === 'button' ? 'button' : undefined,
|
||||
"class": _normalizeClass([{
|
||||
'v-icon-btn': true,
|
||||
'v-icon-btn--active': isActive.value,
|
||||
'v-icon-btn--disabled': props.disabled,
|
||||
'v-icon-btn--loading': props.loading,
|
||||
'v-icon-btn--readonly': props.readonly,
|
||||
[`v-icon-btn--${props.size}`]: true
|
||||
}, themeClasses.value, colorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, variantClasses.value, props.class]),
|
||||
"style": _normalizeStyle([{
|
||||
'--v-icon-btn-rotate': convertToUnit(props.rotate, 'deg'),
|
||||
'--v-icon-btn-height': convertToUnit(btnHeight),
|
||||
'--v-icon-btn-width': convertToUnit(btnWidth)
|
||||
}, colorStyles.value, props.style]),
|
||||
"tabindex": props.disabled || props.readonly ? -1 : 0,
|
||||
"onClick": onClick
|
||||
}, {
|
||||
default: () => [genOverlays(!props.hideOverlay, 'v-icon-btn'), _createElementVNode("div", {
|
||||
"class": "v-icon-btn__content",
|
||||
"data-no-activator": ""
|
||||
}, [!slots.default && icon ? _createVNode(VIcon, _mergeProps({
|
||||
"key": "content-icon"
|
||||
}, iconProps), null) : _createVNode(VDefaultsProvider, {
|
||||
"key": "content-defaults",
|
||||
"disabled": !icon,
|
||||
"defaults": {
|
||||
VIcon: {
|
||||
...iconProps
|
||||
}
|
||||
}
|
||||
}, {
|
||||
default: () => slots.default?.() ?? toDisplayString(props.text)
|
||||
})]), !!props.loading && _createElementVNode("span", {
|
||||
"key": "loader",
|
||||
"class": "v-icon-btn__loader"
|
||||
}, [slots.loader?.() ?? _createVNode(VProgressCircular, {
|
||||
"color": typeof props.loading === 'boolean' ? undefined : props.loading,
|
||||
"indeterminate": "disable-shrink",
|
||||
"width": "2",
|
||||
"size": iconSize.value
|
||||
}, null)])]
|
||||
});
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=VIconBtn.js.map
|
||||
Generated
Vendored
+1
File diff suppressed because one or more lines are too long
Generated
Vendored
+143
@@ -0,0 +1,143 @@
|
||||
@use '../../styles/settings';
|
||||
@use '../../styles/tools';
|
||||
@use './variables' as *;
|
||||
|
||||
@include tools.layer('components') {
|
||||
.v-icon-btn {
|
||||
@include tools.border($icon-btn-border...);
|
||||
@include tools.rounded($icon-btn-border-radius);
|
||||
@include tools.states('.v-icon-btn__overlay');
|
||||
@include tools.variant($icon-btn-variants...);
|
||||
|
||||
& {
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
display: inline-flex;
|
||||
flex: none;
|
||||
font-size: $icon-btn-font-size;
|
||||
font-weight: $icon-btn-font-weight;
|
||||
line-height: $icon-btn-line-height;
|
||||
height: #{$icon-btn-height};
|
||||
justify-content: center;
|
||||
outline: none;
|
||||
position: relative;
|
||||
transition-property: width, height, transform;
|
||||
transition: 0.2s settings.$standard-easing;
|
||||
vertical-align: middle;
|
||||
width: #{$icon-btn-width};
|
||||
|
||||
@supports selector(:focus-visible) {
|
||||
&::after {
|
||||
pointer-events: none;
|
||||
border: 2px solid currentColor;
|
||||
border-radius: inherit;
|
||||
opacity: 0;
|
||||
transition: opacity .2s ease-in-out;
|
||||
@include tools.absolute(true);
|
||||
}
|
||||
|
||||
&:focus-visible::after {
|
||||
opacity: calc(.25 * var(--v-theme-overlay-multiplier));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&--disabled,
|
||||
&--loading,
|
||||
&--readonly {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
&--disabled {
|
||||
opacity: $icon-btn-disabled-opacity;
|
||||
}
|
||||
|
||||
&--start {
|
||||
margin-inline-end: $icon-btn-margin-start;
|
||||
}
|
||||
|
||||
&--end {
|
||||
margin-inline-start: $icon-btn-margin-end;
|
||||
}
|
||||
}
|
||||
|
||||
.v-icon-btn__content {
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
display: inline-flex;
|
||||
transition: inherit;
|
||||
transition-property: transform;
|
||||
transform: rotate(var(--v-icon-btn-rotate, 0deg));
|
||||
|
||||
.v-icon-btn--loading & {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.v-icon {
|
||||
transition: 0.2s settings.$standard-easing;
|
||||
transition-property: opacity, font-size, width, height;
|
||||
transform-origin: center;
|
||||
}
|
||||
}
|
||||
|
||||
.v-icon-btn__loader {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
height: 100%;
|
||||
justify-content: center;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.v-icon-btn__overlay,
|
||||
.v-icon-btn__underlay {
|
||||
border-radius: inherit;
|
||||
pointer-events: none;
|
||||
|
||||
@include tools.absolute();
|
||||
}
|
||||
|
||||
.v-icon-btn__overlay {
|
||||
background-color: currentColor;
|
||||
opacity: 0;
|
||||
transition: opacity .2s ease-in-out;
|
||||
|
||||
.v-icon-btn--active:not(:hover) & {
|
||||
--v-activated-opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (forced-colors: active) {
|
||||
.v-icon-btn {
|
||||
&:focus-visible {
|
||||
outline: 2px solid;
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
&:not(&--active):hover,
|
||||
&:not(&--active):focus {
|
||||
color: highlight !important;
|
||||
}
|
||||
|
||||
&--active:not(&--disabled),
|
||||
&--active:not(&--disabled)[class*="bg-"]
|
||||
{
|
||||
outline-color: canvastext !important;
|
||||
background: highlight !important;
|
||||
color: highlighttext !important;
|
||||
}
|
||||
|
||||
&--disabled {
|
||||
color: graytext;
|
||||
}
|
||||
|
||||
&__overlay,
|
||||
&__underlay,
|
||||
.v-icon {
|
||||
forced-color-adjust: preserve-parent-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Generated
Vendored
+37
@@ -0,0 +1,37 @@
|
||||
@use 'sass:map';
|
||||
@use '../../styles/settings';
|
||||
@use '../../styles/tools';
|
||||
|
||||
// VIconBtn
|
||||
$icon-btn-background: rgb(var(--v-theme-surface)) !default;
|
||||
$icon-btn-color: inherit !default;
|
||||
$icon-btn-border-color: settings.$border-color-root !default;
|
||||
$icon-btn-border-radius: map.get(settings.$rounded, 'circle') !default;
|
||||
$icon-btn-border-style: settings.$border-style-root !default;
|
||||
$icon-btn-border-thin-width: thin !default;
|
||||
$icon-btn-border-width: 0 !default;
|
||||
$icon-btn-disabled-opacity: 0.26 !default;
|
||||
$icon-btn-elevation: 2 !default;
|
||||
$icon-btn-font-size: tools.map-deep-get(settings.$typography, 'button', 'size') !default;
|
||||
$icon-btn-font-weight: tools.map-deep-get(settings.$typography, 'button', 'weight') !default;
|
||||
$icon-btn-line-height: normal !default;
|
||||
$icon-btn-height: var(--v-icon-btn-height) !default;
|
||||
$icon-btn-width: var(--v-icon-btn-width) !default;
|
||||
$icon-btn-margin-start: map.get(settings.$grid-gutters, 'md') !default;
|
||||
$icon-btn-margin-end: map.get(settings.$grid-gutters, 'md') !default;
|
||||
$icon-btn-plain-opacity: .62 !default;
|
||||
|
||||
$icon-btn-border: (
|
||||
$icon-btn-border-color,
|
||||
$icon-btn-border-style,
|
||||
$icon-btn-border-width,
|
||||
$icon-btn-border-thin-width
|
||||
) !default;
|
||||
|
||||
$icon-btn-variants: (
|
||||
$icon-btn-background,
|
||||
$icon-btn-color,
|
||||
$icon-btn-elevation,
|
||||
$icon-btn-plain-opacity,
|
||||
'v-icon-btn'
|
||||
) !default;
|
||||
+1
@@ -0,0 +1 @@
|
||||
export { VIconBtn } from './VIconBtn.js';
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
export { VIconBtn } from "./VIconBtn.js";
|
||||
//# sourceMappingURL=index.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.js","names":["VIconBtn"],"sources":["../../../src/labs/VIconBtn/index.ts"],"sourcesContent":["export { VIconBtn } from './VIconBtn'\n"],"mappings":"SAASA,QAAQ","ignoreList":[]}
|
||||
Generated
Vendored
+7804
File diff suppressed because one or more lines are too long
Generated
Vendored
+180
@@ -0,0 +1,180 @@
|
||||
import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
|
||||
// Components
|
||||
import { makeVTextFieldProps, VTextField } from "../../components/VTextField/VTextField.js"; // Composables
|
||||
import { forwardRefs } from "../../composables/forwardRefs.js";
|
||||
import { isMaskDelimiter, makeMaskProps, useMask } from "../../composables/mask/index.js";
|
||||
import { useProxiedModel } from "../../composables/proxiedModel.js"; // Utilities
|
||||
import { computed, nextTick, onBeforeMount, ref, shallowRef, toRef } from 'vue';
|
||||
import { genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
|
||||
export const makeVMaskInputProps = propsFactory({
|
||||
returnMaskedValue: Boolean,
|
||||
...makeVTextFieldProps(),
|
||||
...makeMaskProps()
|
||||
}, 'VMaskInput');
|
||||
export const VMaskInput = genericComponent()({
|
||||
name: 'VMaskInput',
|
||||
props: makeVMaskInputProps(),
|
||||
emits: {
|
||||
'update:modelValue': val => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots,
|
||||
emit
|
||||
} = _ref;
|
||||
const vTextFieldRef = ref();
|
||||
const inputAction = shallowRef();
|
||||
const caretPosition = shallowRef(0);
|
||||
const mask = useMask(props);
|
||||
const returnMaskedValue = computed(() => props.mask && props.returnMaskedValue);
|
||||
const model = useProxiedModel(props, 'modelValue', undefined,
|
||||
// Always display masked value in input when mask is applied
|
||||
val => props.mask ? mask.mask(mask.unmask(val)) : val, val => {
|
||||
if (props.mask) {
|
||||
const valueWithoutDelimiters = val ? removeMaskDelimiters(val) : '';
|
||||
|
||||
// E.g. mask is #-# and the input value is '2-23'
|
||||
// model-value should be enforced to '2-2'
|
||||
const newMaskedValue = mask.mask(valueWithoutDelimiters);
|
||||
const newUnmaskedValue = mask.unmask(newMaskedValue);
|
||||
const newCaretPosition = getNewCaretPosition({
|
||||
oldValue: model.value,
|
||||
newValue: newMaskedValue,
|
||||
oldCaret: caretPosition.value
|
||||
});
|
||||
vTextFieldRef.value.value = newMaskedValue;
|
||||
vTextFieldRef.value.setSelectionRange(newCaretPosition, newCaretPosition);
|
||||
return returnMaskedValue.value ? mask.mask(newUnmaskedValue) : newUnmaskedValue;
|
||||
}
|
||||
return val;
|
||||
});
|
||||
const validationValue = toRef(() => returnMaskedValue.value ? model.value : mask.unmask(model.value));
|
||||
function removeMaskDelimiters(val) {
|
||||
return val.split('').filter(ch => !isMaskDelimiter(ch)).join('');
|
||||
}
|
||||
function getNewCaretPosition(_ref2) {
|
||||
let {
|
||||
oldValue,
|
||||
newValue,
|
||||
oldCaret
|
||||
} = _ref2;
|
||||
if (!newValue) return 0;
|
||||
if (!oldValue) return newValue.length;
|
||||
let newCaret;
|
||||
if (inputAction.value === 'Backspace') {
|
||||
newCaret = oldCaret - 1;
|
||||
while (newCaret > 0 && isMaskDelimiter(newValue[newCaret - 1])) newCaret--;
|
||||
} else if (inputAction.value === 'Delete') {
|
||||
newCaret = oldCaret;
|
||||
} else {
|
||||
// insertion
|
||||
newCaret = oldCaret + 1;
|
||||
while (isMaskDelimiter(newValue[newCaret])) newCaret++;
|
||||
if (isMaskDelimiter(newValue[oldCaret])) newCaret++;
|
||||
}
|
||||
return newCaret;
|
||||
}
|
||||
onBeforeMount(() => {
|
||||
if (props.returnMaskedValue) {
|
||||
emit('update:modelValue', model.value);
|
||||
}
|
||||
});
|
||||
function onKeyDown(e) {
|
||||
if (e.metaKey) return;
|
||||
const inputElement = e.target;
|
||||
caretPosition.value = inputElement.selectionStart || 0;
|
||||
inputAction.value = e.key;
|
||||
const hasSelection = inputElement.selectionStart !== inputElement.selectionEnd;
|
||||
if (e.key === 'Backspace' && hasSelection) {
|
||||
e.preventDefault();
|
||||
deleteSelection(e);
|
||||
}
|
||||
}
|
||||
async function onCut(e) {
|
||||
e.preventDefault();
|
||||
await copySelectionToClipboard(e);
|
||||
await deleteSelection(e);
|
||||
}
|
||||
async function onPaste(e) {
|
||||
e.preventDefault();
|
||||
const inputElement = e.target;
|
||||
const pastedString = removeMaskDelimiters(e.clipboardData?.getData('text') || '');
|
||||
if (!pastedString) return;
|
||||
const pastedCharacters = [...pastedString];
|
||||
const hasSelection = inputElement.selectionStart !== inputElement.selectionEnd;
|
||||
if (hasSelection) {
|
||||
replaceSelection(inputElement, pastedCharacters);
|
||||
} else {
|
||||
insertCharacters(inputElement, pastedCharacters);
|
||||
}
|
||||
}
|
||||
async function copySelectionToClipboard(e) {
|
||||
const inputElement = e.target;
|
||||
const start = inputElement.selectionStart || 0;
|
||||
const end = inputElement.selectionEnd || 0;
|
||||
const selectedText = inputElement.value.substring(start, end);
|
||||
await navigator.clipboard.writeText(selectedText);
|
||||
}
|
||||
async function deleteSelection(e) {
|
||||
const inputElement = e.target;
|
||||
const curStart = inputElement.selectionStart || 0;
|
||||
caretPosition.value = inputElement.selectionEnd || 0;
|
||||
while (caretPosition.value > curStart) {
|
||||
const success = await simulateBackspace(inputElement);
|
||||
if (!success) break;
|
||||
}
|
||||
}
|
||||
async function simulateBackspace(inputElement) {
|
||||
inputAction.value = 'Backspace';
|
||||
model.value = inputElement.value.slice(0, caretPosition.value - 1) + inputElement.value.slice(caretPosition.value);
|
||||
inputAction.value = '';
|
||||
if (caretPosition.value === inputElement.selectionEnd) return false;
|
||||
caretPosition.value = inputElement.selectionEnd || 0;
|
||||
await nextTick();
|
||||
return true;
|
||||
}
|
||||
async function insertCharacters(inputElement, pastedCharacters) {
|
||||
for (let i = 0; i < pastedCharacters.length; i++) {
|
||||
await insertCharacter(inputElement, pastedCharacters[i]);
|
||||
}
|
||||
}
|
||||
async function insertCharacter(inputElement, character) {
|
||||
caretPosition.value = inputElement.selectionEnd || 0;
|
||||
model.value = inputElement.value.slice(0, caretPosition.value) + character + inputElement.value.slice(caretPosition.value);
|
||||
await nextTick();
|
||||
}
|
||||
async function replaceSelection(inputElement, pastedCharacters) {
|
||||
caretPosition.value = inputElement.selectionStart || 0;
|
||||
for (let i = 0; i < pastedCharacters.length; i++) {
|
||||
await replaceCharacter(caretPosition.value, pastedCharacters[i]);
|
||||
caretPosition.value++;
|
||||
}
|
||||
}
|
||||
async function replaceCharacter(index, character) {
|
||||
let targetIndex = index;
|
||||
|
||||
// Find next non-delimiter position
|
||||
while (targetIndex < model.value.length && isMaskDelimiter(model.value[targetIndex])) targetIndex++;
|
||||
model.value = model.value.slice(0, targetIndex) + character + model.value.slice(targetIndex + 1);
|
||||
await nextTick();
|
||||
}
|
||||
useRender(() => {
|
||||
const textFieldProps = VTextField.filterProps(props);
|
||||
return _createVNode(VTextField, _mergeProps(textFieldProps, {
|
||||
"modelValue": model.value,
|
||||
"onUpdate:modelValue": $event => model.value = $event,
|
||||
"ref": vTextFieldRef,
|
||||
"class": ['v-mask-input', props.class],
|
||||
"style": props.style,
|
||||
"validationValue": validationValue.value,
|
||||
"onCut": onCut,
|
||||
"onPaste": onPaste,
|
||||
"onKeydown": onKeyDown
|
||||
}), {
|
||||
...slots
|
||||
});
|
||||
});
|
||||
return forwardRefs({}, vTextFieldRef);
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=VMaskInput.js.map
|
||||
Generated
Vendored
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
export { VMaskInput } from './VMaskInput.js';
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
export { VMaskInput } from "./VMaskInput.js";
|
||||
//# sourceMappingURL=index.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.js","names":["VMaskInput"],"sources":["../../../src/labs/VMaskInput/index.ts"],"sourcesContent":["export { VMaskInput } from './VMaskInput'\n"],"mappings":"SAASA,UAAU","ignoreList":[]}
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
.v-picker.v-sheet {
|
||||
display: grid;
|
||||
grid-auto-rows: min-content;
|
||||
grid-template-areas: "header" "body";
|
||||
grid-template-columns: minmax(0, 1fr);
|
||||
overflow: hidden;
|
||||
}
|
||||
.v-picker.v-sheet {
|
||||
box-shadow: 0px 0px 0px 0px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, 0.2)), 0px 0px 0px 0px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, 0.14)), 0px 0px 0px 0px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, 0.12));
|
||||
}
|
||||
.v-picker.v-sheet {
|
||||
border-radius: 4px;
|
||||
}
|
||||
.v-picker.v-sheet.v-picker--with-actions {
|
||||
grid-template-areas: "header" "body" "actions";
|
||||
}
|
||||
.v-picker.v-sheet.v-picker--landscape {
|
||||
grid-template-columns: auto 1fr;
|
||||
grid-template-areas: "header body" "header body";
|
||||
}
|
||||
.v-picker.v-sheet.v-picker--landscape.v-picker--with-actions {
|
||||
grid-template-areas: "header body" "header actions";
|
||||
}
|
||||
|
||||
.v-picker__body {
|
||||
grid-area: body;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.v-picker__header-wrapper {
|
||||
grid-area: header;
|
||||
}
|
||||
|
||||
.v-picker__actions {
|
||||
grid-area: actions;
|
||||
padding: 0 12px 12px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
.v-picker__actions .v-btn {
|
||||
min-width: 48px;
|
||||
}
|
||||
.v-picker__actions .v-btn:not(:last-child) {
|
||||
margin-inline-end: 8px;
|
||||
}
|
||||
|
||||
.v-picker--divided .v-picker__header {
|
||||
border-bottom-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
||||
border-bottom-style: solid;
|
||||
border-bottom-width: thin;
|
||||
}
|
||||
|
||||
.v-picker-title {
|
||||
text-transform: uppercase;
|
||||
font-size: 0.75rem;
|
||||
padding-inline: 24px 12px;
|
||||
padding-top: 16px;
|
||||
padding-bottom: 16px;
|
||||
font-weight: 400;
|
||||
letter-spacing: 0.1666666667em;
|
||||
}
|
||||
+437
@@ -0,0 +1,437 @@
|
||||
// Styles
|
||||
|
||||
// Types
|
||||
export type VPickerSlots = {
|
||||
header: never;
|
||||
default: never;
|
||||
actions: never;
|
||||
title: never;
|
||||
};
|
||||
export declare const makeVPickerProps: <Defaults extends {
|
||||
theme?: unknown;
|
||||
class?: unknown;
|
||||
style?: unknown;
|
||||
border?: unknown;
|
||||
elevation?: unknown;
|
||||
rounded?: unknown;
|
||||
tile?: unknown;
|
||||
tag?: unknown;
|
||||
height?: unknown;
|
||||
maxHeight?: unknown;
|
||||
maxWidth?: unknown;
|
||||
minHeight?: unknown;
|
||||
minWidth?: unknown;
|
||||
width?: unknown;
|
||||
location?: unknown;
|
||||
position?: unknown;
|
||||
color?: unknown;
|
||||
bgColor?: unknown;
|
||||
divided?: unknown;
|
||||
landscape?: unknown;
|
||||
title?: unknown;
|
||||
hideHeader?: unknown;
|
||||
hideTitle?: unknown;
|
||||
} = {}>(defaults?: Defaults | undefined) => {
|
||||
theme: unknown extends Defaults["theme"] ? StringConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["theme"] ? string : string | Defaults["theme"]>;
|
||||
default: unknown extends Defaults["theme"] ? string : string | Defaults["theme"];
|
||||
};
|
||||
class: unknown extends Defaults["class"] ? import("vue").PropType<any> : {
|
||||
type: import("vue").PropType<unknown extends Defaults["class"] ? any : any>;
|
||||
default: unknown extends Defaults["class"] ? any : any;
|
||||
};
|
||||
style: unknown extends Defaults["style"] ? {
|
||||
type: import("vue").PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | import("vue").StyleValue>;
|
||||
default: unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | NonNullable<import("vue").StyleValue>;
|
||||
};
|
||||
border: unknown extends Defaults["border"] ? (BooleanConstructor | NumberConstructor | StringConstructor)[] : {
|
||||
type: import("vue").PropType<unknown extends Defaults["border"] ? string | number | boolean : string | number | boolean | Defaults["border"]>;
|
||||
default: unknown extends Defaults["border"] ? string | number | boolean : Defaults["border"] | NonNullable<string | number | boolean>;
|
||||
};
|
||||
elevation: unknown extends Defaults["elevation"] ? {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
} : Omit<{
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["elevation"] ? string | number : string | number | Defaults["elevation"]>;
|
||||
default: unknown extends Defaults["elevation"] ? string | number : Defaults["elevation"] | NonNullable<string | number>;
|
||||
};
|
||||
rounded: unknown extends Defaults["rounded"] ? {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
} : Omit<{
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["rounded"] ? string | number | boolean : string | number | boolean | Defaults["rounded"]>;
|
||||
default: unknown extends Defaults["rounded"] ? string | number | boolean : Defaults["rounded"] | NonNullable<string | number | boolean>;
|
||||
};
|
||||
tile: unknown extends Defaults["tile"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"]>;
|
||||
default: unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"];
|
||||
};
|
||||
tag: unknown extends Defaults["tag"] ? {
|
||||
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : string | Defaults["tag"] | import("../../util/index.js").JSXComponent>;
|
||||
default: unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : Defaults["tag"] | NonNullable<string | import("../../util/index.js").JSXComponent>;
|
||||
};
|
||||
height: unknown extends Defaults["height"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: import("vue").PropType<unknown extends Defaults["height"] ? string | number : string | number | Defaults["height"]>;
|
||||
default: unknown extends Defaults["height"] ? string | number : Defaults["height"] | NonNullable<string | number>;
|
||||
};
|
||||
maxHeight: unknown extends Defaults["maxHeight"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: import("vue").PropType<unknown extends Defaults["maxHeight"] ? string | number : string | number | Defaults["maxHeight"]>;
|
||||
default: unknown extends Defaults["maxHeight"] ? string | number : Defaults["maxHeight"] | NonNullable<string | number>;
|
||||
};
|
||||
maxWidth: unknown extends Defaults["maxWidth"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: import("vue").PropType<unknown extends Defaults["maxWidth"] ? string | number : string | number | Defaults["maxWidth"]>;
|
||||
default: unknown extends Defaults["maxWidth"] ? string | number : Defaults["maxWidth"] | NonNullable<string | number>;
|
||||
};
|
||||
minHeight: unknown extends Defaults["minHeight"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: import("vue").PropType<unknown extends Defaults["minHeight"] ? string | number : string | number | Defaults["minHeight"]>;
|
||||
default: unknown extends Defaults["minHeight"] ? string | number : Defaults["minHeight"] | NonNullable<string | number>;
|
||||
};
|
||||
minWidth: unknown extends Defaults["minWidth"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: import("vue").PropType<unknown extends Defaults["minWidth"] ? string | number : string | number | Defaults["minWidth"]>;
|
||||
default: unknown extends Defaults["minWidth"] ? string | number : Defaults["minWidth"] | NonNullable<string | number>;
|
||||
};
|
||||
width: unknown extends Defaults["width"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: import("vue").PropType<unknown extends Defaults["width"] ? string | number : string | number | Defaults["width"]>;
|
||||
default: unknown extends Defaults["width"] ? string | number : Defaults["width"] | NonNullable<string | number>;
|
||||
};
|
||||
location: unknown extends Defaults["location"] ? import("vue").PropType<import("../../util/index.js").Anchor | null> : {
|
||||
type: import("vue").PropType<unknown extends Defaults["location"] ? import("../../util/index.js").Anchor | null : Defaults["location"] | import("../../util/index.js").Anchor | null>;
|
||||
default: unknown extends Defaults["location"] ? import("../../util/index.js").Anchor | null : Defaults["location"] | NonNullable<import("../../util/index.js").Anchor | null>;
|
||||
};
|
||||
position: unknown extends Defaults["position"] ? {
|
||||
type: import("vue").PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
|
||||
validator: (v: any) => boolean;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
|
||||
validator: (v: any) => boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["position"] ? "absolute" | "fixed" | "relative" | "static" | "sticky" : "absolute" | "fixed" | "relative" | "static" | "sticky" | Defaults["position"]>;
|
||||
default: unknown extends Defaults["position"] ? "absolute" | "fixed" | "relative" | "static" | "sticky" : Defaults["position"] | NonNullable<"absolute" | "fixed" | "relative" | "static" | "sticky">;
|
||||
};
|
||||
color: unknown extends Defaults["color"] ? StringConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["color"] ? string : string | Defaults["color"]>;
|
||||
default: unknown extends Defaults["color"] ? string : string | Defaults["color"];
|
||||
};
|
||||
bgColor: unknown extends Defaults["bgColor"] ? StringConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["bgColor"] ? string : string | Defaults["bgColor"]>;
|
||||
default: unknown extends Defaults["bgColor"] ? string : string | Defaults["bgColor"];
|
||||
};
|
||||
divided: unknown extends Defaults["divided"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["divided"] ? boolean : boolean | Defaults["divided"]>;
|
||||
default: unknown extends Defaults["divided"] ? boolean : boolean | Defaults["divided"];
|
||||
};
|
||||
landscape: unknown extends Defaults["landscape"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["landscape"] ? boolean : boolean | Defaults["landscape"]>;
|
||||
default: unknown extends Defaults["landscape"] ? boolean : boolean | Defaults["landscape"];
|
||||
};
|
||||
title: unknown extends Defaults["title"] ? StringConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["title"] ? string : string | Defaults["title"]>;
|
||||
default: unknown extends Defaults["title"] ? string : string | Defaults["title"];
|
||||
};
|
||||
hideHeader: unknown extends Defaults["hideHeader"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["hideHeader"] ? boolean : boolean | Defaults["hideHeader"]>;
|
||||
default: unknown extends Defaults["hideHeader"] ? boolean : boolean | Defaults["hideHeader"];
|
||||
};
|
||||
hideTitle: unknown extends Defaults["hideTitle"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["hideTitle"] ? boolean : boolean | Defaults["hideTitle"]>;
|
||||
default: unknown extends Defaults["hideTitle"] ? boolean : boolean | Defaults["hideTitle"];
|
||||
};
|
||||
};
|
||||
export declare const VPicker: {
|
||||
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
divided: boolean;
|
||||
landscape: boolean;
|
||||
hideHeader: boolean;
|
||||
hideTitle: boolean;
|
||||
} & {
|
||||
theme?: string | undefined;
|
||||
class?: any;
|
||||
border?: string | number | boolean | undefined;
|
||||
elevation?: string | number | undefined;
|
||||
rounded?: string | number | boolean | undefined;
|
||||
height?: string | number | undefined;
|
||||
maxHeight?: string | number | undefined;
|
||||
maxWidth?: string | number | undefined;
|
||||
minHeight?: string | number | undefined;
|
||||
minWidth?: string | number | undefined;
|
||||
width?: string | number | undefined;
|
||||
location?: import("../../util/index.js").Anchor | null | undefined;
|
||||
position?: "absolute" | "fixed" | "relative" | "static" | "sticky" | undefined;
|
||||
color?: string | undefined;
|
||||
bgColor?: string | undefined;
|
||||
title?: string | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
header?: (() => import("vue").VNodeChild) | undefined;
|
||||
default?: (() => import("vue").VNodeChild) | undefined;
|
||||
actions?: (() => import("vue").VNodeChild) | undefined;
|
||||
title?: (() => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
header?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
default?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
actions?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
title?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:actions"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:header"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:title"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
|
||||
style: import("vue").StyleValue;
|
||||
rounded: string | number | boolean;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
divided: boolean;
|
||||
landscape: boolean;
|
||||
hideHeader: boolean;
|
||||
hideTitle: boolean;
|
||||
}, true, {}, import("vue").SlotsType<Partial<{
|
||||
header: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
actions: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
title: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
||||
P: {};
|
||||
B: {};
|
||||
D: {};
|
||||
C: {};
|
||||
M: {};
|
||||
Defaults: {};
|
||||
}, {
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
divided: boolean;
|
||||
landscape: boolean;
|
||||
hideHeader: boolean;
|
||||
hideTitle: boolean;
|
||||
} & {
|
||||
theme?: string | undefined;
|
||||
class?: any;
|
||||
border?: string | number | boolean | undefined;
|
||||
elevation?: string | number | undefined;
|
||||
rounded?: string | number | boolean | undefined;
|
||||
height?: string | number | undefined;
|
||||
maxHeight?: string | number | undefined;
|
||||
maxWidth?: string | number | undefined;
|
||||
minHeight?: string | number | undefined;
|
||||
minWidth?: string | number | undefined;
|
||||
width?: string | number | undefined;
|
||||
location?: import("../../util/index.js").Anchor | null | undefined;
|
||||
position?: "absolute" | "fixed" | "relative" | "static" | "sticky" | undefined;
|
||||
color?: string | undefined;
|
||||
bgColor?: string | undefined;
|
||||
title?: string | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
header?: (() => import("vue").VNodeChild) | undefined;
|
||||
default?: (() => import("vue").VNodeChild) | undefined;
|
||||
actions?: (() => import("vue").VNodeChild) | undefined;
|
||||
title?: (() => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
header?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
default?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
actions?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
title?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:actions"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:header"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:title"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
}, {}, {}, {}, {}, {
|
||||
style: import("vue").StyleValue;
|
||||
rounded: string | number | boolean;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
divided: boolean;
|
||||
landscape: boolean;
|
||||
hideHeader: boolean;
|
||||
hideTitle: boolean;
|
||||
}>;
|
||||
__isFragment?: undefined;
|
||||
__isTeleport?: undefined;
|
||||
__isSuspense?: undefined;
|
||||
} & import("vue").ComponentOptionsBase<{
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
divided: boolean;
|
||||
landscape: boolean;
|
||||
hideHeader: boolean;
|
||||
hideTitle: boolean;
|
||||
} & {
|
||||
theme?: string | undefined;
|
||||
class?: any;
|
||||
border?: string | number | boolean | undefined;
|
||||
elevation?: string | number | undefined;
|
||||
rounded?: string | number | boolean | undefined;
|
||||
height?: string | number | undefined;
|
||||
maxHeight?: string | number | undefined;
|
||||
maxWidth?: string | number | undefined;
|
||||
minHeight?: string | number | undefined;
|
||||
minWidth?: string | number | undefined;
|
||||
width?: string | number | undefined;
|
||||
location?: import("../../util/index.js").Anchor | null | undefined;
|
||||
position?: "absolute" | "fixed" | "relative" | "static" | "sticky" | undefined;
|
||||
color?: string | undefined;
|
||||
bgColor?: string | undefined;
|
||||
title?: string | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
header?: (() => import("vue").VNodeChild) | undefined;
|
||||
default?: (() => import("vue").VNodeChild) | undefined;
|
||||
actions?: (() => import("vue").VNodeChild) | undefined;
|
||||
title?: (() => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
header?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
default?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
actions?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
title?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:actions"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:header"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:title"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
|
||||
style: import("vue").StyleValue;
|
||||
rounded: string | number | boolean;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
divided: boolean;
|
||||
landscape: boolean;
|
||||
hideHeader: boolean;
|
||||
hideTitle: boolean;
|
||||
}, {}, string, import("vue").SlotsType<Partial<{
|
||||
header: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
actions: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
title: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
|
||||
theme: StringConstructor;
|
||||
class: import("vue").PropType<any>;
|
||||
style: {
|
||||
type: import("vue").PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
};
|
||||
border: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
elevation: {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
};
|
||||
rounded: {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
};
|
||||
tile: BooleanConstructor;
|
||||
tag: {
|
||||
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
};
|
||||
height: (NumberConstructor | StringConstructor)[];
|
||||
maxHeight: (NumberConstructor | StringConstructor)[];
|
||||
maxWidth: (NumberConstructor | StringConstructor)[];
|
||||
minHeight: (NumberConstructor | StringConstructor)[];
|
||||
minWidth: (NumberConstructor | StringConstructor)[];
|
||||
width: (NumberConstructor | StringConstructor)[];
|
||||
location: import("vue").PropType<import("../../util/index.js").Anchor | null>;
|
||||
position: {
|
||||
type: import("vue").PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
|
||||
validator: (v: any) => boolean;
|
||||
};
|
||||
color: StringConstructor;
|
||||
bgColor: StringConstructor;
|
||||
divided: BooleanConstructor;
|
||||
landscape: BooleanConstructor;
|
||||
title: StringConstructor;
|
||||
hideHeader: BooleanConstructor;
|
||||
hideTitle: BooleanConstructor;
|
||||
}, import("vue").ExtractPropTypes<{
|
||||
theme: StringConstructor;
|
||||
class: import("vue").PropType<any>;
|
||||
style: {
|
||||
type: import("vue").PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
};
|
||||
border: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
elevation: {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
};
|
||||
rounded: {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
};
|
||||
tile: BooleanConstructor;
|
||||
tag: {
|
||||
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
};
|
||||
height: (NumberConstructor | StringConstructor)[];
|
||||
maxHeight: (NumberConstructor | StringConstructor)[];
|
||||
maxWidth: (NumberConstructor | StringConstructor)[];
|
||||
minHeight: (NumberConstructor | StringConstructor)[];
|
||||
minWidth: (NumberConstructor | StringConstructor)[];
|
||||
width: (NumberConstructor | StringConstructor)[];
|
||||
location: import("vue").PropType<import("../../util/index.js").Anchor | null>;
|
||||
position: {
|
||||
type: import("vue").PropType<"absolute" | "fixed" | "relative" | "static" | "sticky">;
|
||||
validator: (v: any) => boolean;
|
||||
};
|
||||
color: StringConstructor;
|
||||
bgColor: StringConstructor;
|
||||
divided: BooleanConstructor;
|
||||
landscape: BooleanConstructor;
|
||||
title: StringConstructor;
|
||||
hideHeader: BooleanConstructor;
|
||||
hideTitle: BooleanConstructor;
|
||||
}>>;
|
||||
export type VPicker = InstanceType<typeof VPicker>;
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
import { createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, mergeProps as _mergeProps } from "vue";
|
||||
// Styles
|
||||
import "./VPicker.css";
|
||||
|
||||
// Components
|
||||
import { VPickerTitle } from "./VPickerTitle.js";
|
||||
import { VDefaultsProvider } from "../../components/VDefaultsProvider/VDefaultsProvider.js";
|
||||
import { makeVSheetProps, VSheet } from "../../components/VSheet/VSheet.js"; // Composables
|
||||
import { useBackgroundColor } from "../../composables/color.js"; // Utilities
|
||||
import { genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
|
||||
export const makeVPickerProps = propsFactory({
|
||||
bgColor: String,
|
||||
divided: Boolean,
|
||||
landscape: Boolean,
|
||||
title: String,
|
||||
hideHeader: Boolean,
|
||||
hideTitle: Boolean,
|
||||
...makeVSheetProps()
|
||||
}, 'VPicker');
|
||||
export const VPicker = genericComponent()({
|
||||
name: 'VPicker',
|
||||
props: makeVPickerProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const {
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles
|
||||
} = useBackgroundColor(() => props.color);
|
||||
useRender(() => {
|
||||
const sheetProps = VSheet.filterProps(props);
|
||||
const hasTitle = !props.hideTitle && !!(props.title || slots.title);
|
||||
return _createVNode(VSheet, _mergeProps(sheetProps, {
|
||||
"color": props.bgColor,
|
||||
"class": ['v-picker', {
|
||||
'v-picker--divided': props.divided,
|
||||
'v-picker--landscape': props.landscape,
|
||||
'v-picker--with-actions': !!slots.actions
|
||||
}, props.class],
|
||||
"style": props.style
|
||||
}), {
|
||||
default: () => [!props.hideHeader && _createElementVNode("div", {
|
||||
"key": "header",
|
||||
"class": _normalizeClass(['v-picker__header-wrapper', backgroundColorClasses.value]),
|
||||
"style": _normalizeStyle([backgroundColorStyles.value])
|
||||
}, [hasTitle && _createVNode(VPickerTitle, {
|
||||
"key": "picker-title"
|
||||
}, {
|
||||
default: () => [slots.title?.() ?? props.title]
|
||||
}), slots.header && _createElementVNode("div", {
|
||||
"class": "v-picker__header"
|
||||
}, [slots.header()])]), _createElementVNode("div", {
|
||||
"class": "v-picker__body"
|
||||
}, [slots.default?.()]), slots.actions && _createVNode(VDefaultsProvider, {
|
||||
"defaults": {
|
||||
VBtn: {
|
||||
slim: true,
|
||||
variant: 'text'
|
||||
}
|
||||
}
|
||||
}, {
|
||||
default: () => [_createElementVNode("div", {
|
||||
"class": "v-picker__actions"
|
||||
}, [slots.actions()])]
|
||||
})]
|
||||
});
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=VPicker.js.map
|
||||
Generated
Vendored
+1
File diff suppressed because one or more lines are too long
+62
@@ -0,0 +1,62 @@
|
||||
@use '../../styles/settings'
|
||||
@use '../../styles/tools'
|
||||
@use './variables' as *
|
||||
|
||||
@include tools.layer('components')
|
||||
.v-picker.v-sheet
|
||||
display: grid
|
||||
grid-auto-rows: min-content
|
||||
grid-template-areas: "header" "body"
|
||||
grid-template-columns: minmax(0, 1fr)
|
||||
overflow: hidden
|
||||
@include tools.elevation($picker-elevation)
|
||||
@include tools.rounded($picker-border-radius)
|
||||
|
||||
&.v-picker--with-actions
|
||||
grid-template-areas: "header" "body" "actions"
|
||||
|
||||
&.v-picker--landscape
|
||||
grid-template-columns: auto 1fr
|
||||
grid-template-areas: "header body" "header body"
|
||||
|
||||
&.v-picker--with-actions
|
||||
grid-template-areas: "header body" "header actions"
|
||||
|
||||
.v-picker__body
|
||||
grid-area: body
|
||||
overflow: hidden
|
||||
position: relative
|
||||
display: flex
|
||||
justify-content: center
|
||||
flex-wrap: wrap
|
||||
|
||||
.v-picker__header-wrapper
|
||||
grid-area: header
|
||||
|
||||
.v-picker__actions
|
||||
grid-area: actions
|
||||
padding: $picker-actions-padding
|
||||
display: flex
|
||||
align-items: center
|
||||
justify-content: flex-end
|
||||
|
||||
.v-btn
|
||||
min-width: 48px
|
||||
|
||||
&:not(:last-child)
|
||||
margin-inline-end: 8px
|
||||
|
||||
.v-picker--divided
|
||||
.v-picker__header
|
||||
border-bottom-color: $picker-border-color
|
||||
border-bottom-style: $picker-border-style
|
||||
border-bottom-width: $picker-border-thin-width
|
||||
|
||||
.v-picker-title
|
||||
text-transform: uppercase
|
||||
font-size: .75rem
|
||||
padding-inline: 24px 12px
|
||||
padding-top: 16px
|
||||
padding-bottom: 16px
|
||||
font-weight: $picker-title-font-weight
|
||||
letter-spacing: .1666666667em
|
||||
Generated
Vendored
+105
@@ -0,0 +1,105 @@
|
||||
export declare const VPickerTitle: {
|
||||
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
tag: string;
|
||||
} & {
|
||||
class?: any;
|
||||
} & {
|
||||
$children?: {
|
||||
default?: (() => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
default?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
|
||||
style: import("vue").StyleValue;
|
||||
tag: string;
|
||||
}, true, {}, import("vue").SlotsType<Partial<{
|
||||
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
||||
P: {};
|
||||
B: {};
|
||||
D: {};
|
||||
C: {};
|
||||
M: {};
|
||||
Defaults: {};
|
||||
}, {
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
tag: string;
|
||||
} & {
|
||||
class?: any;
|
||||
} & {
|
||||
$children?: {
|
||||
default?: (() => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
default?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>, {}, {}, {}, {
|
||||
style: import("vue").StyleValue;
|
||||
tag: string;
|
||||
}>;
|
||||
__isFragment?: undefined;
|
||||
__isTeleport?: undefined;
|
||||
__isSuspense?: undefined;
|
||||
} & import("vue").ComponentOptionsBase<{
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
tag: string;
|
||||
} & {
|
||||
class?: any;
|
||||
} & {
|
||||
$children?: {
|
||||
default?: (() => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
default?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
|
||||
style: import("vue").StyleValue;
|
||||
tag: string;
|
||||
}, {}, string, import("vue").SlotsType<Partial<{
|
||||
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
|
||||
class: import("vue").PropType<any>;
|
||||
style: {
|
||||
type: import("vue").PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
};
|
||||
tag: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
}, import("vue").ExtractPropTypes<{
|
||||
class: import("vue").PropType<any>;
|
||||
style: {
|
||||
type: import("vue").PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
};
|
||||
tag: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
}>>;
|
||||
export type VPickerTitle = InstanceType<typeof VPickerTitle>;
|
||||
Generated
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
// Utilities
|
||||
import { createSimpleFunctional } from "../../util/index.js";
|
||||
export const VPickerTitle = createSimpleFunctional('v-picker-title');
|
||||
//# sourceMappingURL=VPickerTitle.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"VPickerTitle.js","names":["createSimpleFunctional","VPickerTitle"],"sources":["../../../src/labs/VPicker/VPickerTitle.ts"],"sourcesContent":["// Utilities\nimport { createSimpleFunctional } from '@/util'\n\nexport const VPickerTitle = createSimpleFunctional('v-picker-title')\n\nexport type VPickerTitle = InstanceType<typeof VPickerTitle>\n"],"mappings":"AAAA;AAAA,SACSA,sBAAsB;AAE/B,OAAO,MAAMC,YAAY,GAAGD,sBAAsB,CAAC,gBAAgB,CAAC","ignoreList":[]}
|
||||
Generated
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
@use '../../styles/settings';
|
||||
|
||||
$picker-actions-padding: 0 12px 12px !default;
|
||||
$picker-border-color: settings.$border-color-root !default;
|
||||
$picker-border-radius: settings.$border-radius-root !default;
|
||||
$picker-border-radius: settings.$border-radius-root !default;
|
||||
$picker-border-style: settings.$border-style-root !default;
|
||||
$picker-border-thin-width: thin !default;
|
||||
$picker-elevation: 0 !default;
|
||||
$picker-inactive-btn-opacity: .6 !default;
|
||||
$picker-title-font-weight: 400 !default;
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
export { VPicker } from './VPicker.js';
|
||||
export { VPickerTitle } from './VPickerTitle.js';
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
export { VPicker } from "./VPicker.js";
|
||||
export { VPickerTitle } from "./VPickerTitle.js";
|
||||
//# sourceMappingURL=index.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.js","names":["VPicker","VPickerTitle"],"sources":["../../../src/labs/VPicker/index.ts"],"sourcesContent":["export { VPicker } from './VPicker'\nexport { VPickerTitle } from './VPickerTitle'\n"],"mappings":"SAASA,OAAO;AAAA,SACPC,YAAY","ignoreList":[]}
|
||||
+108
@@ -0,0 +1,108 @@
|
||||
.v-pie {
|
||||
display: grid;
|
||||
align-items: center;
|
||||
column-gap: 24px;
|
||||
--v-pie-size: 250px;
|
||||
}
|
||||
.v-pie--legend-top {
|
||||
grid-template-areas: "title" "legend" "content";
|
||||
grid-template-columns: var(--v-pie-size);
|
||||
}
|
||||
.v-pie--legend-bottom {
|
||||
grid-template-areas: "title" "content" "legend";
|
||||
grid-template-columns: var(--v-pie-size);
|
||||
}
|
||||
.v-pie--legend-right {
|
||||
grid-template-areas: "title ." "content legend";
|
||||
}
|
||||
.v-pie--legend-left {
|
||||
grid-template-areas: ". title" "legend content";
|
||||
}
|
||||
.v-pie--legend-hidden {
|
||||
grid-template-areas: "title" "content";
|
||||
}
|
||||
.v-pie__title {
|
||||
grid-area: title;
|
||||
text-align: center;
|
||||
padding-bottom: 12px;
|
||||
}
|
||||
.v-pie__content {
|
||||
grid-area: content;
|
||||
position: relative;
|
||||
width: var(--v-pie-size);
|
||||
height: var(--v-pie-size);
|
||||
}
|
||||
.v-pie__content:is(.v-pie__content) {
|
||||
background: none !important;
|
||||
}
|
||||
.v-pie__content .v-overlay .v-overlay__scrim,
|
||||
.v-pie__content .v-overlay .v-overlay__content {
|
||||
pointer-events: none !important;
|
||||
}
|
||||
.v-pie__segments {
|
||||
border-radius: 50%;
|
||||
}
|
||||
.v-pie__content-underlay {
|
||||
border-radius: 50%;
|
||||
position: absolute;
|
||||
inset: -8px;
|
||||
pointer-events: none;
|
||||
z-index: -1;
|
||||
}
|
||||
.v-pie__center-content {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
pointer-events: none;
|
||||
}
|
||||
.v-pie__center-content > div {
|
||||
pointer-events: auto;
|
||||
}
|
||||
.v-pie__legend {
|
||||
grid-area: legend;
|
||||
padding-block: 12px;
|
||||
}
|
||||
.v-pie__legend .v-avatar {
|
||||
border: thin solid rgba(var(--v-theme-on-surface), 0.2);
|
||||
}
|
||||
.v-pie__legend .v-chip__content {
|
||||
width: 100%;
|
||||
}
|
||||
.v-pie__legend .v-chip-group .v-chip:not(.v-chip--selected) {
|
||||
opacity: 0.4;
|
||||
}
|
||||
.v-pie__legend__text {
|
||||
font-size: 0.8125rem;
|
||||
white-space: nowrap;
|
||||
width: 100%;
|
||||
}
|
||||
.v-chip--density-compact .v-pie__legend__text {
|
||||
font-size: 0.66rem;
|
||||
}
|
||||
.v-pie .v-chip.v-chip--density-comfortable .v-avatar--start {
|
||||
margin-inline-start: -6px;
|
||||
}
|
||||
.v-pie .v-chip.v-chip--density-default .v-avatar--start {
|
||||
margin-inline-start: -4px;
|
||||
}
|
||||
.v-pie-segment {
|
||||
pointer-events: none;
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
}
|
||||
.v-pie-segment .v-pie-segment__overlay {
|
||||
pointer-events: auto;
|
||||
opacity: 0;
|
||||
}
|
||||
.v-pie__tooltip-content .v-list-item {
|
||||
padding-inline: 0;
|
||||
min-width: 100px;
|
||||
zoom: 0.88;
|
||||
}
|
||||
.v-pie__tooltip-content .v-list-item-subtitle {
|
||||
opacity: 1;
|
||||
}
|
||||
.v-pie__tooltip-content .v-avatar {
|
||||
border: thin solid rgba(var(--v-theme-on-surface-variant), 0.2);
|
||||
}
|
||||
+964
@@ -0,0 +1,964 @@
|
||||
// Styles
|
||||
|
||||
// Types
|
||||
import type { PropType, TransitionProps } from 'vue';
|
||||
import type { PieItem, TextTemplate } from './types.js';
|
||||
export type VPieSlots = {
|
||||
center: {
|
||||
total: number;
|
||||
};
|
||||
legend: {
|
||||
isActive: (item: PieItem) => boolean;
|
||||
toggle: (item: PieItem) => void;
|
||||
items: PieItem[];
|
||||
total: number;
|
||||
};
|
||||
'legend-text': {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
};
|
||||
title: never;
|
||||
tooltip: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
};
|
||||
};
|
||||
export declare const makeVPieProps: <Defaults extends {
|
||||
density?: unknown;
|
||||
reveal?: unknown;
|
||||
innerCut?: unknown;
|
||||
hoverScale?: unknown;
|
||||
gap?: unknown;
|
||||
rounded?: unknown;
|
||||
animation?: unknown;
|
||||
hideSlice?: unknown;
|
||||
title?: unknown;
|
||||
bgColor?: unknown;
|
||||
items?: unknown;
|
||||
palette?: unknown;
|
||||
itemKey?: unknown;
|
||||
itemValue?: unknown;
|
||||
itemTitle?: unknown;
|
||||
size?: unknown;
|
||||
rotate?: unknown;
|
||||
gaugeCut?: unknown;
|
||||
legend?: unknown;
|
||||
tooltip?: unknown;
|
||||
} = {}>(defaults?: Defaults | undefined) => {
|
||||
density: unknown extends Defaults["density"] ? {
|
||||
type: PropType<import("../../composables/density.js").Density>;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
} : Omit<{
|
||||
type: PropType<import("../../composables/density.js").Density>;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["density"] ? import("../../composables/density.js").Density : Defaults["density"] | import("../../composables/density.js").Density>;
|
||||
default: unknown extends Defaults["density"] ? import("../../composables/density.js").Density : Defaults["density"] | NonNullable<import("../../composables/density.js").Density>;
|
||||
};
|
||||
reveal: unknown extends Defaults["reveal"] ? {
|
||||
type: PropType<boolean | {
|
||||
duration?: number | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
} : Omit<{
|
||||
type: PropType<boolean | {
|
||||
duration?: number | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["reveal"] ? boolean | {
|
||||
duration?: number | undefined;
|
||||
} : boolean | {
|
||||
duration?: number | undefined;
|
||||
} | Defaults["reveal"]>;
|
||||
default: unknown extends Defaults["reveal"] ? boolean | {
|
||||
duration?: number | undefined;
|
||||
} : Defaults["reveal"] | NonNullable<boolean | {
|
||||
duration?: number | undefined;
|
||||
}>;
|
||||
};
|
||||
innerCut: unknown extends Defaults["innerCut"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["innerCut"] ? string | number : string | number | Defaults["innerCut"]>;
|
||||
default: unknown extends Defaults["innerCut"] ? string | number : Defaults["innerCut"] | NonNullable<string | number>;
|
||||
};
|
||||
hoverScale: unknown extends Defaults["hoverScale"] ? {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
} : Omit<{
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["hoverScale"] ? string | number : string | number | Defaults["hoverScale"]>;
|
||||
default: unknown extends Defaults["hoverScale"] ? string | number : Defaults["hoverScale"] | NonNullable<string | number>;
|
||||
};
|
||||
gap: unknown extends Defaults["gap"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["gap"] ? string | number : string | number | Defaults["gap"]>;
|
||||
default: unknown extends Defaults["gap"] ? string | number : Defaults["gap"] | NonNullable<string | number>;
|
||||
};
|
||||
rounded: unknown extends Defaults["rounded"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["rounded"] ? string | number : string | number | Defaults["rounded"]>;
|
||||
default: unknown extends Defaults["rounded"] ? string | number : Defaults["rounded"] | NonNullable<string | number>;
|
||||
};
|
||||
animation: unknown extends Defaults["animation"] ? {
|
||||
type: PropType<boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
} : Omit<{
|
||||
type: PropType<boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["animation"] ? boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
} : boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
} | Defaults["animation"]>;
|
||||
default: unknown extends Defaults["animation"] ? boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
} : Defaults["animation"] | NonNullable<boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
}>;
|
||||
};
|
||||
hideSlice: unknown extends Defaults["hideSlice"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["hideSlice"] ? boolean : boolean | Defaults["hideSlice"]>;
|
||||
default: unknown extends Defaults["hideSlice"] ? boolean : boolean | Defaults["hideSlice"];
|
||||
};
|
||||
title: unknown extends Defaults["title"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["title"] ? string : string | Defaults["title"]>;
|
||||
default: unknown extends Defaults["title"] ? string : string | Defaults["title"];
|
||||
};
|
||||
bgColor: unknown extends Defaults["bgColor"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["bgColor"] ? string : string | Defaults["bgColor"]>;
|
||||
default: unknown extends Defaults["bgColor"] ? string : string | Defaults["bgColor"];
|
||||
};
|
||||
items: unknown extends Defaults["items"] ? {
|
||||
type: PropType<{
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
}[] | Record<string, any>>;
|
||||
default: () => never[];
|
||||
} : Omit<{
|
||||
type: PropType<{
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
}[] | Record<string, any>>;
|
||||
default: () => never[];
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["items"] ? {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
}[] | Record<string, any> : {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
}[] | Record<string, any> | Defaults["items"]>;
|
||||
default: unknown extends Defaults["items"] ? {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
}[] | Record<string, any> : Defaults["items"] | NonNullable<{
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
}[] | Record<string, any>>;
|
||||
};
|
||||
palette: unknown extends Defaults["palette"] ? {
|
||||
type: PropType<(string | {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
})[]>;
|
||||
default: () => never[];
|
||||
} : Omit<{
|
||||
type: PropType<(string | {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
})[]>;
|
||||
default: () => never[];
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["palette"] ? (string | {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
})[] : (string | {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
})[] | Defaults["palette"]>;
|
||||
default: unknown extends Defaults["palette"] ? (string | {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
})[] : (string | {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
})[] | Defaults["palette"];
|
||||
};
|
||||
itemKey: unknown extends Defaults["itemKey"] ? {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["itemKey"] ? string : string | Defaults["itemKey"]>;
|
||||
default: unknown extends Defaults["itemKey"] ? string : string | Defaults["itemKey"];
|
||||
};
|
||||
itemValue: unknown extends Defaults["itemValue"] ? {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["itemValue"] ? string : string | Defaults["itemValue"]>;
|
||||
default: unknown extends Defaults["itemValue"] ? string : string | Defaults["itemValue"];
|
||||
};
|
||||
itemTitle: unknown extends Defaults["itemTitle"] ? {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["itemTitle"] ? string : string | Defaults["itemTitle"]>;
|
||||
default: unknown extends Defaults["itemTitle"] ? string : string | Defaults["itemTitle"];
|
||||
};
|
||||
size: unknown extends Defaults["size"] ? {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
} : Omit<{
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["size"] ? string | number : string | number | Defaults["size"]>;
|
||||
default: unknown extends Defaults["size"] ? string | number : Defaults["size"] | NonNullable<string | number>;
|
||||
};
|
||||
rotate: unknown extends Defaults["rotate"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["rotate"] ? string | number : string | number | Defaults["rotate"]>;
|
||||
default: unknown extends Defaults["rotate"] ? string | number : Defaults["rotate"] | NonNullable<string | number>;
|
||||
};
|
||||
gaugeCut: unknown extends Defaults["gaugeCut"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["gaugeCut"] ? string | number : string | number | Defaults["gaugeCut"]>;
|
||||
default: unknown extends Defaults["gaugeCut"] ? string | number : Defaults["gaugeCut"] | NonNullable<string | number>;
|
||||
};
|
||||
legend: unknown extends Defaults["legend"] ? {
|
||||
type: PropType<boolean | {
|
||||
position?: "bottom" | "left" | "right" | "top" | undefined;
|
||||
textFormat?: TextTemplate | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
} : Omit<{
|
||||
type: PropType<boolean | {
|
||||
position?: "bottom" | "left" | "right" | "top" | undefined;
|
||||
textFormat?: TextTemplate | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["legend"] ? boolean | {
|
||||
position?: "bottom" | "left" | "right" | "top" | undefined;
|
||||
textFormat?: TextTemplate | undefined;
|
||||
} : boolean | {
|
||||
position?: "bottom" | "left" | "right" | "top" | undefined;
|
||||
textFormat?: TextTemplate | undefined;
|
||||
} | Defaults["legend"]>;
|
||||
default: unknown extends Defaults["legend"] ? boolean | {
|
||||
position?: "bottom" | "left" | "right" | "top" | undefined;
|
||||
textFormat?: TextTemplate | undefined;
|
||||
} : Defaults["legend"] | NonNullable<boolean | {
|
||||
position?: "bottom" | "left" | "right" | "top" | undefined;
|
||||
textFormat?: TextTemplate | undefined;
|
||||
}>;
|
||||
};
|
||||
tooltip: unknown extends Defaults["tooltip"] ? {
|
||||
type: PropType<boolean | {
|
||||
titleFormat?: TextTemplate | undefined;
|
||||
subtitleFormat?: TextTemplate | undefined;
|
||||
avatarSize?: number | undefined;
|
||||
transition?: string | boolean | TransitionProps | undefined;
|
||||
offset?: number | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
} : Omit<{
|
||||
type: PropType<boolean | {
|
||||
titleFormat?: TextTemplate | undefined;
|
||||
subtitleFormat?: TextTemplate | undefined;
|
||||
avatarSize?: number | undefined;
|
||||
transition?: string | boolean | TransitionProps | undefined;
|
||||
offset?: number | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["tooltip"] ? boolean | {
|
||||
titleFormat?: TextTemplate | undefined;
|
||||
subtitleFormat?: TextTemplate | undefined;
|
||||
avatarSize?: number | undefined;
|
||||
transition?: string | boolean | TransitionProps | undefined;
|
||||
offset?: number | undefined;
|
||||
} : boolean | {
|
||||
titleFormat?: TextTemplate | undefined;
|
||||
subtitleFormat?: TextTemplate | undefined;
|
||||
avatarSize?: number | undefined;
|
||||
transition?: string | boolean | TransitionProps | undefined;
|
||||
offset?: number | undefined;
|
||||
} | Defaults["tooltip"]>;
|
||||
default: unknown extends Defaults["tooltip"] ? boolean | {
|
||||
titleFormat?: TextTemplate | undefined;
|
||||
subtitleFormat?: TextTemplate | undefined;
|
||||
avatarSize?: number | undefined;
|
||||
transition?: string | boolean | TransitionProps | undefined;
|
||||
offset?: number | undefined;
|
||||
} : Defaults["tooltip"] | NonNullable<boolean | {
|
||||
titleFormat?: TextTemplate | undefined;
|
||||
subtitleFormat?: TextTemplate | undefined;
|
||||
avatarSize?: number | undefined;
|
||||
transition?: string | boolean | TransitionProps | undefined;
|
||||
offset?: number | undefined;
|
||||
}>;
|
||||
};
|
||||
};
|
||||
export declare const VPie: {
|
||||
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
|
||||
density: import("../../composables/density.js").Density;
|
||||
reveal: boolean | {
|
||||
duration?: number | undefined;
|
||||
};
|
||||
hoverScale: string | number;
|
||||
animation: boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
};
|
||||
hideSlice: boolean;
|
||||
items: {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
}[] | Record<string, any>;
|
||||
palette: (string | {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
})[];
|
||||
itemKey: string;
|
||||
itemValue: string;
|
||||
itemTitle: string;
|
||||
size: string | number;
|
||||
legend: boolean | {
|
||||
position?: "bottom" | "left" | "right" | "top" | undefined;
|
||||
textFormat?: TextTemplate | undefined;
|
||||
};
|
||||
tooltip: boolean | {
|
||||
titleFormat?: TextTemplate | undefined;
|
||||
subtitleFormat?: TextTemplate | undefined;
|
||||
avatarSize?: number | undefined;
|
||||
transition?: string | boolean | TransitionProps | undefined;
|
||||
offset?: number | undefined;
|
||||
};
|
||||
} & {
|
||||
innerCut?: string | number | undefined;
|
||||
gap?: string | number | undefined;
|
||||
rounded?: string | number | undefined;
|
||||
title?: string | undefined;
|
||||
bgColor?: string | undefined;
|
||||
rotate?: string | number | undefined;
|
||||
gaugeCut?: string | number | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
center?: ((arg: {
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
legend?: ((arg: {
|
||||
isActive: (item: PieItem) => boolean;
|
||||
toggle: (item: PieItem) => void;
|
||||
items: PieItem[];
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"legend-text"?: ((arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
title?: (() => import("vue").VNodeChild) | undefined;
|
||||
tooltip?: ((arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | {} | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
center?: false | ((arg: {
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
legend?: false | ((arg: {
|
||||
isActive: (item: PieItem) => boolean;
|
||||
toggle: (item: PieItem) => void;
|
||||
items: PieItem[];
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"legend-text"?: false | ((arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
title?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
tooltip?: false | ((arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:center"?: false | ((arg: {
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:legend"?: false | ((arg: {
|
||||
isActive: (item: PieItem) => boolean;
|
||||
toggle: (item: PieItem) => void;
|
||||
items: PieItem[];
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:legend-text"?: false | ((arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:title"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:tooltip"?: false | ((arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
|
||||
density: import("../../composables/density.js").Density;
|
||||
reveal: boolean | {
|
||||
duration?: number | undefined;
|
||||
};
|
||||
hoverScale: string | number;
|
||||
animation: boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
};
|
||||
hideSlice: boolean;
|
||||
items: {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
}[] | Record<string, any>;
|
||||
palette: (string | {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
})[];
|
||||
itemKey: string;
|
||||
itemValue: string;
|
||||
itemTitle: string;
|
||||
size: string | number;
|
||||
legend: boolean | {
|
||||
position?: "bottom" | "left" | "right" | "top" | undefined;
|
||||
textFormat?: TextTemplate | undefined;
|
||||
};
|
||||
tooltip: boolean | {
|
||||
titleFormat?: TextTemplate | undefined;
|
||||
subtitleFormat?: TextTemplate | undefined;
|
||||
avatarSize?: number | undefined;
|
||||
transition?: string | boolean | TransitionProps | undefined;
|
||||
offset?: number | undefined;
|
||||
};
|
||||
}, true, {}, import("vue").SlotsType<Partial<{
|
||||
center: (arg: {
|
||||
total: number;
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
legend: (arg: {
|
||||
isActive: (item: PieItem) => boolean;
|
||||
toggle: (item: PieItem) => void;
|
||||
items: PieItem[];
|
||||
total: number;
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
"legend-text": (arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
title: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
tooltip: (arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
||||
P: {};
|
||||
B: {};
|
||||
D: {};
|
||||
C: {};
|
||||
M: {};
|
||||
Defaults: {};
|
||||
}, {
|
||||
density: import("../../composables/density.js").Density;
|
||||
reveal: boolean | {
|
||||
duration?: number | undefined;
|
||||
};
|
||||
hoverScale: string | number;
|
||||
animation: boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
};
|
||||
hideSlice: boolean;
|
||||
items: {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
}[] | Record<string, any>;
|
||||
palette: (string | {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
})[];
|
||||
itemKey: string;
|
||||
itemValue: string;
|
||||
itemTitle: string;
|
||||
size: string | number;
|
||||
legend: boolean | {
|
||||
position?: "bottom" | "left" | "right" | "top" | undefined;
|
||||
textFormat?: TextTemplate | undefined;
|
||||
};
|
||||
tooltip: boolean | {
|
||||
titleFormat?: TextTemplate | undefined;
|
||||
subtitleFormat?: TextTemplate | undefined;
|
||||
avatarSize?: number | undefined;
|
||||
transition?: string | boolean | TransitionProps | undefined;
|
||||
offset?: number | undefined;
|
||||
};
|
||||
} & {
|
||||
innerCut?: string | number | undefined;
|
||||
gap?: string | number | undefined;
|
||||
rounded?: string | number | undefined;
|
||||
title?: string | undefined;
|
||||
bgColor?: string | undefined;
|
||||
rotate?: string | number | undefined;
|
||||
gaugeCut?: string | number | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
center?: ((arg: {
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
legend?: ((arg: {
|
||||
isActive: (item: PieItem) => boolean;
|
||||
toggle: (item: PieItem) => void;
|
||||
items: PieItem[];
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"legend-text"?: ((arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
title?: (() => import("vue").VNodeChild) | undefined;
|
||||
tooltip?: ((arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | {} | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
center?: false | ((arg: {
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
legend?: false | ((arg: {
|
||||
isActive: (item: PieItem) => boolean;
|
||||
toggle: (item: PieItem) => void;
|
||||
items: PieItem[];
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"legend-text"?: false | ((arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
title?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
tooltip?: false | ((arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:center"?: false | ((arg: {
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:legend"?: false | ((arg: {
|
||||
isActive: (item: PieItem) => boolean;
|
||||
toggle: (item: PieItem) => void;
|
||||
items: PieItem[];
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:legend-text"?: false | ((arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:title"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:tooltip"?: false | ((arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
}, () => JSX.Element, {}, {}, {}, {
|
||||
density: import("../../composables/density.js").Density;
|
||||
reveal: boolean | {
|
||||
duration?: number | undefined;
|
||||
};
|
||||
hoverScale: string | number;
|
||||
animation: boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
};
|
||||
hideSlice: boolean;
|
||||
items: {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
}[] | Record<string, any>;
|
||||
palette: (string | {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
})[];
|
||||
itemKey: string;
|
||||
itemValue: string;
|
||||
itemTitle: string;
|
||||
size: string | number;
|
||||
legend: boolean | {
|
||||
position?: "bottom" | "left" | "right" | "top" | undefined;
|
||||
textFormat?: TextTemplate | undefined;
|
||||
};
|
||||
tooltip: boolean | {
|
||||
titleFormat?: TextTemplate | undefined;
|
||||
subtitleFormat?: TextTemplate | undefined;
|
||||
avatarSize?: number | undefined;
|
||||
transition?: string | boolean | TransitionProps | undefined;
|
||||
offset?: number | undefined;
|
||||
};
|
||||
}>;
|
||||
__isFragment?: undefined;
|
||||
__isTeleport?: undefined;
|
||||
__isSuspense?: undefined;
|
||||
} & import("vue").ComponentOptionsBase<{
|
||||
density: import("../../composables/density.js").Density;
|
||||
reveal: boolean | {
|
||||
duration?: number | undefined;
|
||||
};
|
||||
hoverScale: string | number;
|
||||
animation: boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
};
|
||||
hideSlice: boolean;
|
||||
items: {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
}[] | Record<string, any>;
|
||||
palette: (string | {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
})[];
|
||||
itemKey: string;
|
||||
itemValue: string;
|
||||
itemTitle: string;
|
||||
size: string | number;
|
||||
legend: boolean | {
|
||||
position?: "bottom" | "left" | "right" | "top" | undefined;
|
||||
textFormat?: TextTemplate | undefined;
|
||||
};
|
||||
tooltip: boolean | {
|
||||
titleFormat?: TextTemplate | undefined;
|
||||
subtitleFormat?: TextTemplate | undefined;
|
||||
avatarSize?: number | undefined;
|
||||
transition?: string | boolean | TransitionProps | undefined;
|
||||
offset?: number | undefined;
|
||||
};
|
||||
} & {
|
||||
innerCut?: string | number | undefined;
|
||||
gap?: string | number | undefined;
|
||||
rounded?: string | number | undefined;
|
||||
title?: string | undefined;
|
||||
bgColor?: string | undefined;
|
||||
rotate?: string | number | undefined;
|
||||
gaugeCut?: string | number | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
center?: ((arg: {
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
legend?: ((arg: {
|
||||
isActive: (item: PieItem) => boolean;
|
||||
toggle: (item: PieItem) => void;
|
||||
items: PieItem[];
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"legend-text"?: ((arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
title?: (() => import("vue").VNodeChild) | undefined;
|
||||
tooltip?: ((arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | {} | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
center?: false | ((arg: {
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
legend?: false | ((arg: {
|
||||
isActive: (item: PieItem) => boolean;
|
||||
toggle: (item: PieItem) => void;
|
||||
items: PieItem[];
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"legend-text"?: false | ((arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
title?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
tooltip?: false | ((arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:center"?: false | ((arg: {
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:legend"?: false | ((arg: {
|
||||
isActive: (item: PieItem) => boolean;
|
||||
toggle: (item: PieItem) => void;
|
||||
items: PieItem[];
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:legend-text"?: false | ((arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:title"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:tooltip"?: false | ((arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
|
||||
density: import("../../composables/density.js").Density;
|
||||
reveal: boolean | {
|
||||
duration?: number | undefined;
|
||||
};
|
||||
hoverScale: string | number;
|
||||
animation: boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
};
|
||||
hideSlice: boolean;
|
||||
items: {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
}[] | Record<string, any>;
|
||||
palette: (string | {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
})[];
|
||||
itemKey: string;
|
||||
itemValue: string;
|
||||
itemTitle: string;
|
||||
size: string | number;
|
||||
legend: boolean | {
|
||||
position?: "bottom" | "left" | "right" | "top" | undefined;
|
||||
textFormat?: TextTemplate | undefined;
|
||||
};
|
||||
tooltip: boolean | {
|
||||
titleFormat?: TextTemplate | undefined;
|
||||
subtitleFormat?: TextTemplate | undefined;
|
||||
avatarSize?: number | undefined;
|
||||
transition?: string | boolean | TransitionProps | undefined;
|
||||
offset?: number | undefined;
|
||||
};
|
||||
}, {}, string, import("vue").SlotsType<Partial<{
|
||||
center: (arg: {
|
||||
total: number;
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
legend: (arg: {
|
||||
isActive: (item: PieItem) => boolean;
|
||||
toggle: (item: PieItem) => void;
|
||||
items: PieItem[];
|
||||
total: number;
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
"legend-text": (arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
title: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
tooltip: (arg: {
|
||||
item: PieItem;
|
||||
total: number;
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
|
||||
density: {
|
||||
type: PropType<import("../../composables/density.js").Density>;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
};
|
||||
reveal: {
|
||||
type: PropType<boolean | {
|
||||
duration?: number | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
};
|
||||
innerCut: (NumberConstructor | StringConstructor)[];
|
||||
hoverScale: {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
};
|
||||
gap: (NumberConstructor | StringConstructor)[];
|
||||
rounded: (NumberConstructor | StringConstructor)[];
|
||||
animation: {
|
||||
type: PropType<boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
};
|
||||
hideSlice: BooleanConstructor;
|
||||
title: StringConstructor;
|
||||
bgColor: StringConstructor;
|
||||
items: {
|
||||
type: PropType<{
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
}[] | Record<string, any>>;
|
||||
default: () => never[];
|
||||
};
|
||||
palette: {
|
||||
type: PropType<(string | {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
})[]>;
|
||||
default: () => never[];
|
||||
};
|
||||
itemKey: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
itemValue: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
itemTitle: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
size: {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
};
|
||||
rotate: (NumberConstructor | StringConstructor)[];
|
||||
gaugeCut: (NumberConstructor | StringConstructor)[];
|
||||
legend: {
|
||||
type: PropType<boolean | {
|
||||
position?: "bottom" | "left" | "right" | "top" | undefined;
|
||||
textFormat?: TextTemplate | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
};
|
||||
tooltip: {
|
||||
type: PropType<boolean | {
|
||||
titleFormat?: TextTemplate | undefined;
|
||||
subtitleFormat?: TextTemplate | undefined;
|
||||
avatarSize?: number | undefined;
|
||||
transition?: string | boolean | TransitionProps | undefined;
|
||||
offset?: number | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
};
|
||||
}, import("vue").ExtractPropTypes<{
|
||||
density: {
|
||||
type: PropType<import("../../composables/density.js").Density>;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
};
|
||||
reveal: {
|
||||
type: PropType<boolean | {
|
||||
duration?: number | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
};
|
||||
innerCut: (NumberConstructor | StringConstructor)[];
|
||||
hoverScale: {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
};
|
||||
gap: (NumberConstructor | StringConstructor)[];
|
||||
rounded: (NumberConstructor | StringConstructor)[];
|
||||
animation: {
|
||||
type: PropType<boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
};
|
||||
hideSlice: BooleanConstructor;
|
||||
title: StringConstructor;
|
||||
bgColor: StringConstructor;
|
||||
items: {
|
||||
type: PropType<{
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
}[] | Record<string, any>>;
|
||||
default: () => never[];
|
||||
};
|
||||
palette: {
|
||||
type: PropType<(string | {
|
||||
color?: string | undefined;
|
||||
pattern?: string | undefined;
|
||||
})[]>;
|
||||
default: () => never[];
|
||||
};
|
||||
itemKey: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
itemValue: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
itemTitle: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
size: {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
};
|
||||
rotate: (NumberConstructor | StringConstructor)[];
|
||||
gaugeCut: (NumberConstructor | StringConstructor)[];
|
||||
legend: {
|
||||
type: PropType<boolean | {
|
||||
position?: "bottom" | "left" | "right" | "top" | undefined;
|
||||
textFormat?: TextTemplate | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
};
|
||||
tooltip: {
|
||||
type: PropType<boolean | {
|
||||
titleFormat?: TextTemplate | undefined;
|
||||
subtitleFormat?: TextTemplate | undefined;
|
||||
avatarSize?: number | undefined;
|
||||
transition?: string | boolean | TransitionProps | undefined;
|
||||
offset?: number | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
};
|
||||
}>>;
|
||||
export type VPie = InstanceType<typeof VPie>;
|
||||
+338
@@ -0,0 +1,338 @@
|
||||
import { createElementVNode as _createElementVNode, createVNode as _createVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, mergeProps as _mergeProps, withDirectives as _withDirectives } from "vue";
|
||||
// Styles
|
||||
import "./VPie.css";
|
||||
|
||||
// Components
|
||||
import { makeVPieSegmentProps, VPieSegment } from "./VPieSegment.js";
|
||||
import { VPieTooltip } from "./VPieTooltip.js";
|
||||
import { VAvatar } from "../../components/VAvatar/index.js";
|
||||
import { VChip } from "../../components/VChip/index.js";
|
||||
import { VChipGroup } from "../../components/VChipGroup/index.js";
|
||||
import { VDefaultsProvider } from "../../components/VDefaultsProvider/index.js"; // Composables
|
||||
import { useColor } from "../../composables/color.js";
|
||||
import { makeDensityProps } from "../../composables/density.js"; // Directives
|
||||
import vClickOutside from "../../directives/click-outside/index.js"; // Utilities
|
||||
import { computed, shallowRef, toRef, watch } from 'vue';
|
||||
import { formatTextTemplate } from "./utils.js";
|
||||
import { convertToUnit, genericComponent, pick, propsFactory } from "../../util/index.js"; // Types
|
||||
export const makeVPieProps = propsFactory({
|
||||
title: String,
|
||||
bgColor: String,
|
||||
items: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
palette: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
itemKey: {
|
||||
type: String,
|
||||
default: 'key'
|
||||
},
|
||||
itemValue: {
|
||||
type: String,
|
||||
default: 'value'
|
||||
},
|
||||
itemTitle: {
|
||||
type: String,
|
||||
default: 'title'
|
||||
},
|
||||
size: {
|
||||
type: [Number, String],
|
||||
default: 250
|
||||
},
|
||||
rotate: [Number, String],
|
||||
gaugeCut: [Number, String],
|
||||
legend: {
|
||||
type: [Boolean, Object],
|
||||
default: false
|
||||
},
|
||||
tooltip: {
|
||||
type: [Boolean, Object],
|
||||
default: false
|
||||
},
|
||||
...makeDensityProps(),
|
||||
...pick(makeVPieSegmentProps(), ['animation', 'gap', 'rounded', 'innerCut', 'hoverScale', 'hideSlice', 'reveal'])
|
||||
}, 'VPie');
|
||||
export const VPie = genericComponent()({
|
||||
name: 'VPie',
|
||||
directives: {
|
||||
vClickOutside
|
||||
},
|
||||
props: makeVPieProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const legendConfig = computed(() => ({
|
||||
visible: !!props.legend,
|
||||
position: 'bottom',
|
||||
textFormat: '[title]',
|
||||
...(typeof props.legend === 'object' ? props.legend : {})
|
||||
}));
|
||||
const {
|
||||
colorClasses,
|
||||
colorStyles
|
||||
} = useColor(() => ({
|
||||
background: props.bgColor
|
||||
}));
|
||||
const textColorStyles = toRef(() => pick(colorStyles.value, ['color', 'caretColor']));
|
||||
const legendAvatarSize = toRef(() => ({
|
||||
default: 20,
|
||||
comfortable: 18,
|
||||
compact: 16
|
||||
})[props.density ?? 'default']);
|
||||
const legendDirection = toRef(() => ['left', 'right'].includes(legendConfig.value.position) ? 'vertical' : 'horizontal');
|
||||
const legendMode = toRef(() => !legendConfig.value.visible ? 'hidden' : legendConfig.value.position);
|
||||
const legendTextFormatFunction = toRef(() => item => {
|
||||
return typeof legendConfig.value.textFormat === 'function' ? legendConfig.value.textFormat(item) : formatTextTemplate(legendConfig.value.textFormat, item);
|
||||
});
|
||||
const arcs = computed(() => {
|
||||
// hidden items get (value: 0) to trigger disappearing animation
|
||||
return props.items.filter(Boolean).map((item, index) => {
|
||||
return {
|
||||
key: item[props.itemKey],
|
||||
color: item.color ?? colorFromPalette(index),
|
||||
value: item[props.itemValue],
|
||||
title: String(item[props.itemTitle]),
|
||||
pattern: item.pattern ?? patternFromPalette(index),
|
||||
raw: item
|
||||
};
|
||||
});
|
||||
});
|
||||
const visibleItemsKeys = shallowRef([]);
|
||||
watch(() => arcs.value.length, () => {
|
||||
// reset when number of items changes
|
||||
visibleItemsKeys.value = arcs.value.map(a => a.key);
|
||||
}, {
|
||||
immediate: true
|
||||
});
|
||||
const visibleItems = computed(() => {
|
||||
// hidden items get (value: 0) to trigger disappearing animation
|
||||
return arcs.value.map(item => {
|
||||
return isVisible(item) ? item : {
|
||||
...item,
|
||||
value: 0
|
||||
};
|
||||
});
|
||||
});
|
||||
const total = computed(() => visibleItems.value.reduce((sum, item) => sum + item.value, 0));
|
||||
const gaugeCut = toRef(() => Number(props.gaugeCut ?? 0));
|
||||
const gaugeOffset = computed(() => (1 - Math.cos(Math.PI * Math.min(90, gaugeCut.value / 2) / 180)) / 2);
|
||||
const rotateDeg = computed(() => `${gaugeCut.value ? 180 + gaugeCut.value / 2 : props.rotate ?? 0}deg`);
|
||||
function arcOffset(index) {
|
||||
return visibleItems.value.slice(0, index).reduce((acc, s) => acc + (total.value > 0 ? s.value / total.value : 0) * (360 - gaugeCut.value), 0);
|
||||
}
|
||||
function arcSize(v) {
|
||||
return v / total.value * (100 - gaugeCut.value / 3.6);
|
||||
}
|
||||
function colorFromPalette(index) {
|
||||
if (props.palette.length === 0) return undefined;
|
||||
const paletteItem = props.palette[index % props.palette.length];
|
||||
return typeof paletteItem === 'object' ? paletteItem.color : paletteItem;
|
||||
}
|
||||
function patternFromPalette(index) {
|
||||
if (props.palette.length === 0) return undefined;
|
||||
const paletteItem = props.palette[index % props.palette.length];
|
||||
return typeof paletteItem === 'object' ? paletteItem.pattern : undefined;
|
||||
}
|
||||
function isVisible(item) {
|
||||
return visibleItemsKeys.value.includes(item.key);
|
||||
}
|
||||
function toggle(item) {
|
||||
if (isVisible(item)) {
|
||||
visibleItemsKeys.value = visibleItemsKeys.value.filter(x => x !== item.key);
|
||||
} else {
|
||||
visibleItemsKeys.value = [...visibleItemsKeys.value, item.key];
|
||||
}
|
||||
}
|
||||
const tooltipItem = shallowRef(null);
|
||||
const tooltipVisible = shallowRef(false);
|
||||
const tooltipTarget = shallowRef([0, 0]);
|
||||
let mouseLeaveTimeout = null;
|
||||
function setItemActive(item, active) {
|
||||
arcs.value.forEach(a => a.isActive = a.key === item.key && active);
|
||||
if (props.tooltip) {
|
||||
setTooltip(item, active);
|
||||
}
|
||||
}
|
||||
function setTooltip(item, active) {
|
||||
clearTimeout(mouseLeaveTimeout);
|
||||
if (active) {
|
||||
tooltipVisible.value = true;
|
||||
tooltipItem.value = item;
|
||||
} else {
|
||||
mouseLeaveTimeout = setTimeout(() => {
|
||||
tooltipVisible.value = false;
|
||||
|
||||
// intentionally reusing timeout here
|
||||
mouseLeaveTimeout = setTimeout(() => {
|
||||
tooltipItem.value = null;
|
||||
}, 500);
|
||||
}, 100);
|
||||
}
|
||||
}
|
||||
let frame = -1;
|
||||
function onSvgMousemove(_ref2) {
|
||||
let {
|
||||
clientX,
|
||||
clientY
|
||||
} = _ref2;
|
||||
cancelAnimationFrame(frame);
|
||||
frame = requestAnimationFrame(() => {
|
||||
tooltipTarget.value = [clientX, clientY];
|
||||
});
|
||||
}
|
||||
function onSvgTouchstart(_ref3) {
|
||||
let {
|
||||
touches
|
||||
} = _ref3;
|
||||
if (!touches) return;
|
||||
const {
|
||||
clientX,
|
||||
clientY
|
||||
} = touches[0];
|
||||
tooltipTarget.value = [clientX, clientY];
|
||||
}
|
||||
function onSvgClickOutside() {
|
||||
arcs.value.forEach(a => a.isActive = false);
|
||||
tooltipVisible.value = false;
|
||||
}
|
||||
return () => {
|
||||
const segmentProps = pick(props, ['animation', 'gap', 'rounded', 'hideSlice', 'reveal', 'innerCut', 'hoverScale']);
|
||||
const defaultTooltipTransition = {
|
||||
name: 'fade-transition',
|
||||
duration: 150
|
||||
};
|
||||
const tooltipProps = {
|
||||
item: tooltipItem.value,
|
||||
modelValue: tooltipVisible.value,
|
||||
titleFormat: typeof props.tooltip === 'object' ? props.tooltip.titleFormat : '[title]',
|
||||
subtitleFormat: typeof props.tooltip === 'object' ? props.tooltip.subtitleFormat : '[value]',
|
||||
transition: typeof props.tooltip === 'object' ? props.tooltip.transition : defaultTooltipTransition,
|
||||
offset: typeof props.tooltip === 'object' ? props.tooltip.offset : 16,
|
||||
target: tooltipTarget.value
|
||||
};
|
||||
const legendDefaults = {
|
||||
VChipGroup: {
|
||||
direction: legendDirection.value
|
||||
},
|
||||
VChip: {
|
||||
density: props.density
|
||||
},
|
||||
VAvatar: {
|
||||
size: legendAvatarSize.value
|
||||
}
|
||||
};
|
||||
const tooltipDefaults = {
|
||||
VAvatar: {
|
||||
size: typeof props.tooltip === 'object' ? props.tooltip.avatarSize ?? 28 : 28
|
||||
}
|
||||
};
|
||||
const avatarSlot = _ref4 => {
|
||||
let {
|
||||
item
|
||||
} = _ref4;
|
||||
return _createVNode(VAvatar, {
|
||||
"color": item.color,
|
||||
"start": true
|
||||
}, {
|
||||
default: () => [item.pattern && _createElementVNode("svg", {
|
||||
"height": "40",
|
||||
"width": "40"
|
||||
}, [_createElementVNode("rect", {
|
||||
"width": "40",
|
||||
"height": "40",
|
||||
"fill": item.pattern
|
||||
}, null)])]
|
||||
});
|
||||
};
|
||||
return _createElementVNode("div", {
|
||||
"class": _normalizeClass(['v-pie', `v-pie--legend-${legendMode.value}`]),
|
||||
"style": {
|
||||
'--v-pie-size': convertToUnit(props.size)
|
||||
}
|
||||
}, [slots.title?.() ?? (props.title && _createElementVNode("div", {
|
||||
"class": "v-pie__title"
|
||||
}, [props.title])), _createElementVNode("div", {
|
||||
"class": _normalizeClass(['v-pie__content', colorClasses.value]),
|
||||
"style": _normalizeStyle([{
|
||||
transform: `rotate(${rotateDeg.value})`,
|
||||
marginBottom: `calc(-1 * ${convertToUnit(props.size)} * ${gaugeOffset.value})`
|
||||
}, textColorStyles.value])
|
||||
}, [_createElementVNode("div", {
|
||||
"class": _normalizeClass(['v-pie__content-underlay', colorClasses.value]),
|
||||
"style": _normalizeStyle(colorStyles.value)
|
||||
}, null), _withDirectives(_createElementVNode("svg", {
|
||||
"xmlns": "http://www.w3.org/2000/svg",
|
||||
"viewBox": "0 0 100 100",
|
||||
"class": "v-pie__segments",
|
||||
"onMousemove": onSvgMousemove,
|
||||
"onTouchstart": onSvgTouchstart
|
||||
}, [arcs.value.map((item, index) => _createVNode(VPieSegment, _mergeProps(segmentProps, {
|
||||
"key": item.key,
|
||||
"active": item.isActive,
|
||||
"color": item.color,
|
||||
"value": isVisible(item) ? arcSize(item.value) : 0,
|
||||
"rotate": arcOffset(index),
|
||||
"pattern": item.pattern,
|
||||
"onUpdate:active": val => setItemActive(item, val),
|
||||
"onTouchend": () => setItemActive(item, true)
|
||||
}), null))]), [[vClickOutside, {
|
||||
handler: onSvgClickOutside
|
||||
}]]), _createElementVNode("div", {
|
||||
"class": "v-pie__center-content",
|
||||
"style": {
|
||||
transform: `translate(-50%, -50%)
|
||||
rotate(-${rotateDeg.value})
|
||||
translateY(calc(-100% * ${gaugeOffset.value}))`
|
||||
}
|
||||
}, [_createElementVNode("div", null, [slots.center?.({
|
||||
total: total.value
|
||||
})])])]), legendConfig.value.visible && _createVNode(VDefaultsProvider, {
|
||||
"key": "legend",
|
||||
"defaults": legendDefaults
|
||||
}, {
|
||||
default: () => [_createElementVNode("div", {
|
||||
"class": "v-pie__legend"
|
||||
}, [slots.legend?.({
|
||||
isActive: isVisible,
|
||||
toggle,
|
||||
items: arcs.value,
|
||||
total: total.value
|
||||
}) ?? _createVNode(VChipGroup, {
|
||||
"column": true,
|
||||
"multiple": true,
|
||||
"modelValue": visibleItemsKeys.value,
|
||||
"onUpdate:modelValue": $event => visibleItemsKeys.value = $event
|
||||
}, {
|
||||
default: () => [arcs.value.map(item => _createVNode(VChip, {
|
||||
"value": item.key
|
||||
}, {
|
||||
prepend: () => avatarSlot({
|
||||
item
|
||||
}),
|
||||
default: () => _createElementVNode("div", {
|
||||
"class": "v-pie__legend__text"
|
||||
}, [slots['legend-text']?.({
|
||||
item,
|
||||
total: total.value
|
||||
}) ?? legendTextFormatFunction.value(item)])
|
||||
}))]
|
||||
})])]
|
||||
}), !!props.tooltip && _createVNode(VDefaultsProvider, {
|
||||
"defaults": tooltipDefaults
|
||||
}, {
|
||||
default: () => [_createVNode(VPieTooltip, tooltipProps, {
|
||||
default: slots.tooltip ? slotProps => slots.tooltip?.({
|
||||
...slotProps,
|
||||
total: total.value
|
||||
}) : undefined,
|
||||
prepend: avatarSlot
|
||||
})]
|
||||
})]);
|
||||
};
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=VPie.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+112
@@ -0,0 +1,112 @@
|
||||
@use '../../styles/tools'
|
||||
@use './variables' as *
|
||||
|
||||
@include tools.layer('components')
|
||||
.v-pie
|
||||
display: grid
|
||||
align-items: center
|
||||
column-gap: 24px
|
||||
--v-pie-size: 250px
|
||||
|
||||
&--legend
|
||||
&-top
|
||||
grid-template-areas: 'title' 'legend' 'content'
|
||||
grid-template-columns: var(--v-pie-size)
|
||||
&-bottom
|
||||
grid-template-areas: 'title' 'content' 'legend'
|
||||
grid-template-columns: var(--v-pie-size)
|
||||
&-right
|
||||
grid-template-areas: 'title .' 'content legend'
|
||||
&-left
|
||||
grid-template-areas: '. title' 'legend content'
|
||||
&-hidden
|
||||
grid-template-areas: 'title' 'content'
|
||||
|
||||
&__title
|
||||
grid-area: title
|
||||
text-align: center
|
||||
padding-bottom: $pie-title-padding-bottom
|
||||
|
||||
&__content
|
||||
grid-area: content
|
||||
position: relative
|
||||
width: var(--v-pie-size)
|
||||
height: var(--v-pie-size)
|
||||
|
||||
&:is(&)
|
||||
// expected to get bg-* class for text color
|
||||
// actual background is applied to underlay
|
||||
background: none !important
|
||||
|
||||
.v-overlay
|
||||
.v-overlay__scrim,
|
||||
.v-overlay__content
|
||||
pointer-events: none !important
|
||||
|
||||
&__segments
|
||||
border-radius: 50%
|
||||
|
||||
&__content-underlay
|
||||
border-radius: 50%
|
||||
position: absolute
|
||||
inset: $pie-underlay-inset
|
||||
pointer-events: none
|
||||
z-index: -1
|
||||
|
||||
&__center-content
|
||||
position: absolute
|
||||
top: 50%
|
||||
left: 50%
|
||||
transform: translate(-50%, -50%)
|
||||
pointer-events: none
|
||||
|
||||
> div
|
||||
pointer-events: auto
|
||||
|
||||
&__legend
|
||||
grid-area: legend
|
||||
padding-block: $pie-legend-padding-block
|
||||
|
||||
.v-avatar
|
||||
border: $pie-legend-avatar-border
|
||||
|
||||
.v-chip__content
|
||||
width: 100%
|
||||
|
||||
.v-chip-group .v-chip:not(.v-chip--selected)
|
||||
opacity: $pie-legend-chip-disabled-opacity
|
||||
|
||||
&__text
|
||||
font-size: $pie-legend-chip-default-font-size
|
||||
white-space: nowrap
|
||||
width: 100%
|
||||
|
||||
.v-chip--density-compact &
|
||||
font-size: $pie-legend-chip-compact-font-size
|
||||
|
||||
.v-chip.v-chip--density-comfortable .v-avatar--start
|
||||
margin-inline-start: -6px
|
||||
|
||||
.v-chip.v-chip--density-default .v-avatar--start
|
||||
margin-inline-start: -4px
|
||||
|
||||
&-segment
|
||||
pointer-events: none
|
||||
position: absolute
|
||||
inset: 0
|
||||
|
||||
.v-pie-segment__overlay
|
||||
pointer-events: auto
|
||||
opacity: 0
|
||||
|
||||
&__tooltip-content
|
||||
.v-list-item
|
||||
padding-inline: 0
|
||||
min-width: $pie-tooltip-min-width
|
||||
zoom: 0.88
|
||||
|
||||
.v-list-item-subtitle
|
||||
opacity: 1
|
||||
|
||||
.v-avatar
|
||||
border: $pie-tooltip-avatar-border
|
||||
+337
@@ -0,0 +1,337 @@
|
||||
// Types
|
||||
import type { PropType } from 'vue';
|
||||
export declare const makeVPieSegmentProps: <Defaults extends {
|
||||
reveal?: unknown;
|
||||
active?: unknown;
|
||||
rotate?: unknown;
|
||||
value?: unknown;
|
||||
color?: unknown;
|
||||
innerCut?: unknown;
|
||||
hoverScale?: unknown;
|
||||
gap?: unknown;
|
||||
rounded?: unknown;
|
||||
animation?: unknown;
|
||||
pattern?: unknown;
|
||||
hideSlice?: unknown;
|
||||
} = {}>(defaults?: Defaults | undefined) => {
|
||||
reveal: unknown extends Defaults["reveal"] ? {
|
||||
type: PropType<boolean | {
|
||||
duration?: number | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
} : Omit<{
|
||||
type: PropType<boolean | {
|
||||
duration?: number | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["reveal"] ? boolean | {
|
||||
duration?: number | undefined;
|
||||
} : boolean | {
|
||||
duration?: number | undefined;
|
||||
} | Defaults["reveal"]>;
|
||||
default: unknown extends Defaults["reveal"] ? boolean | {
|
||||
duration?: number | undefined;
|
||||
} : Defaults["reveal"] | NonNullable<boolean | {
|
||||
duration?: number | undefined;
|
||||
}>;
|
||||
};
|
||||
active: unknown extends Defaults["active"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["active"] ? boolean : boolean | Defaults["active"]>;
|
||||
default: unknown extends Defaults["active"] ? boolean : boolean | Defaults["active"];
|
||||
};
|
||||
rotate: unknown extends Defaults["rotate"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["rotate"] ? string | number : string | number | Defaults["rotate"]>;
|
||||
default: unknown extends Defaults["rotate"] ? string | number : Defaults["rotate"] | NonNullable<string | number>;
|
||||
};
|
||||
value: unknown extends Defaults["value"] ? {
|
||||
type: NumberConstructor;
|
||||
default: number;
|
||||
} : Omit<{
|
||||
type: NumberConstructor;
|
||||
default: number;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["value"] ? number : number | Defaults["value"]>;
|
||||
default: unknown extends Defaults["value"] ? number : number | Defaults["value"];
|
||||
};
|
||||
color: unknown extends Defaults["color"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["color"] ? string : string | Defaults["color"]>;
|
||||
default: unknown extends Defaults["color"] ? string : string | Defaults["color"];
|
||||
};
|
||||
innerCut: unknown extends Defaults["innerCut"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["innerCut"] ? string | number : string | number | Defaults["innerCut"]>;
|
||||
default: unknown extends Defaults["innerCut"] ? string | number : Defaults["innerCut"] | NonNullable<string | number>;
|
||||
};
|
||||
hoverScale: unknown extends Defaults["hoverScale"] ? {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
} : Omit<{
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["hoverScale"] ? string | number : string | number | Defaults["hoverScale"]>;
|
||||
default: unknown extends Defaults["hoverScale"] ? string | number : Defaults["hoverScale"] | NonNullable<string | number>;
|
||||
};
|
||||
gap: unknown extends Defaults["gap"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["gap"] ? string | number : string | number | Defaults["gap"]>;
|
||||
default: unknown extends Defaults["gap"] ? string | number : Defaults["gap"] | NonNullable<string | number>;
|
||||
};
|
||||
rounded: unknown extends Defaults["rounded"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: PropType<unknown extends Defaults["rounded"] ? string | number : string | number | Defaults["rounded"]>;
|
||||
default: unknown extends Defaults["rounded"] ? string | number : Defaults["rounded"] | NonNullable<string | number>;
|
||||
};
|
||||
animation: unknown extends Defaults["animation"] ? {
|
||||
type: PropType<boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
} : Omit<{
|
||||
type: PropType<boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["animation"] ? boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
} : boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
} | Defaults["animation"]>;
|
||||
default: unknown extends Defaults["animation"] ? boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
} : Defaults["animation"] | NonNullable<boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
}>;
|
||||
};
|
||||
pattern: unknown extends Defaults["pattern"] ? StringConstructor : {
|
||||
type: PropType<unknown extends Defaults["pattern"] ? string : string | Defaults["pattern"]>;
|
||||
default: unknown extends Defaults["pattern"] ? string : string | Defaults["pattern"];
|
||||
};
|
||||
hideSlice: unknown extends Defaults["hideSlice"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["hideSlice"] ? boolean : boolean | Defaults["hideSlice"]>;
|
||||
default: unknown extends Defaults["hideSlice"] ? boolean : boolean | Defaults["hideSlice"];
|
||||
};
|
||||
};
|
||||
export declare const VPieSegment: {
|
||||
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
|
||||
reveal: boolean | {
|
||||
duration?: number | undefined;
|
||||
};
|
||||
active: boolean;
|
||||
value: number;
|
||||
hoverScale: string | number;
|
||||
animation: boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
};
|
||||
hideSlice: boolean;
|
||||
} & {
|
||||
rotate?: string | number | undefined;
|
||||
color?: string | undefined;
|
||||
innerCut?: string | number | undefined;
|
||||
gap?: string | number | undefined;
|
||||
rounded?: string | number | undefined;
|
||||
pattern?: string | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
default?: (() => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
default?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} & {
|
||||
"onUpdate:active"?: ((val: boolean) => any) | undefined;
|
||||
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
||||
"update:active": (val: boolean) => true;
|
||||
}, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
|
||||
reveal: boolean | {
|
||||
duration?: number | undefined;
|
||||
};
|
||||
active: boolean;
|
||||
value: number;
|
||||
hoverScale: string | number;
|
||||
animation: boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
};
|
||||
hideSlice: boolean;
|
||||
}, true, {}, import("vue").SlotsType<Partial<{
|
||||
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
||||
P: {};
|
||||
B: {};
|
||||
D: {};
|
||||
C: {};
|
||||
M: {};
|
||||
Defaults: {};
|
||||
}, {
|
||||
reveal: boolean | {
|
||||
duration?: number | undefined;
|
||||
};
|
||||
active: boolean;
|
||||
value: number;
|
||||
hoverScale: string | number;
|
||||
animation: boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
};
|
||||
hideSlice: boolean;
|
||||
} & {
|
||||
rotate?: string | number | undefined;
|
||||
color?: string | undefined;
|
||||
innerCut?: string | number | undefined;
|
||||
gap?: string | number | undefined;
|
||||
rounded?: string | number | undefined;
|
||||
pattern?: string | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
default?: (() => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
default?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} & {
|
||||
"onUpdate:active"?: ((val: boolean) => any) | undefined;
|
||||
}, () => JSX.Element, {}, {}, {}, {
|
||||
reveal: boolean | {
|
||||
duration?: number | undefined;
|
||||
};
|
||||
active: boolean;
|
||||
value: number;
|
||||
hoverScale: string | number;
|
||||
animation: boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
};
|
||||
hideSlice: boolean;
|
||||
}>;
|
||||
__isFragment?: undefined;
|
||||
__isTeleport?: undefined;
|
||||
__isSuspense?: undefined;
|
||||
} & import("vue").ComponentOptionsBase<{
|
||||
reveal: boolean | {
|
||||
duration?: number | undefined;
|
||||
};
|
||||
active: boolean;
|
||||
value: number;
|
||||
hoverScale: string | number;
|
||||
animation: boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
};
|
||||
hideSlice: boolean;
|
||||
} & {
|
||||
rotate?: string | number | undefined;
|
||||
color?: string | undefined;
|
||||
innerCut?: string | number | undefined;
|
||||
gap?: string | number | undefined;
|
||||
rounded?: string | number | undefined;
|
||||
pattern?: string | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
default?: (() => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
default?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
} & {
|
||||
"onUpdate:active"?: ((val: boolean) => any) | undefined;
|
||||
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
||||
"update:active": (val: boolean) => true;
|
||||
}, string, {
|
||||
reveal: boolean | {
|
||||
duration?: number | undefined;
|
||||
};
|
||||
active: boolean;
|
||||
value: number;
|
||||
hoverScale: string | number;
|
||||
animation: boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
};
|
||||
hideSlice: boolean;
|
||||
}, {}, string, import("vue").SlotsType<Partial<{
|
||||
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
|
||||
reveal: {
|
||||
type: PropType<boolean | {
|
||||
duration?: number | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
};
|
||||
active: BooleanConstructor;
|
||||
rotate: (NumberConstructor | StringConstructor)[];
|
||||
value: {
|
||||
type: NumberConstructor;
|
||||
default: number;
|
||||
};
|
||||
color: StringConstructor;
|
||||
innerCut: (NumberConstructor | StringConstructor)[];
|
||||
hoverScale: {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
};
|
||||
gap: (NumberConstructor | StringConstructor)[];
|
||||
rounded: (NumberConstructor | StringConstructor)[];
|
||||
animation: {
|
||||
type: PropType<boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
};
|
||||
pattern: StringConstructor;
|
||||
hideSlice: BooleanConstructor;
|
||||
}, import("vue").ExtractPropTypes<{
|
||||
reveal: {
|
||||
type: PropType<boolean | {
|
||||
duration?: number | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
};
|
||||
active: BooleanConstructor;
|
||||
rotate: (NumberConstructor | StringConstructor)[];
|
||||
value: {
|
||||
type: NumberConstructor;
|
||||
default: number;
|
||||
};
|
||||
color: StringConstructor;
|
||||
innerCut: (NumberConstructor | StringConstructor)[];
|
||||
hoverScale: {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
default: number;
|
||||
};
|
||||
gap: (NumberConstructor | StringConstructor)[];
|
||||
rounded: (NumberConstructor | StringConstructor)[];
|
||||
animation: {
|
||||
type: PropType<boolean | {
|
||||
duration?: number | undefined;
|
||||
easing?: "easeInCubic" | "easeInOutCubic" | "easeInOutQuad" | "easeInOutQuart" | "easeInOutQuint" | "easeInQuad" | "easeInQuart" | "easeInQuint" | "easeOutCubic" | "easeOutQuad" | "easeOutQuart" | "easeOutQuint" | "instant" | "linear" | undefined;
|
||||
}>;
|
||||
default: boolean;
|
||||
};
|
||||
pattern: StringConstructor;
|
||||
hideSlice: BooleanConstructor;
|
||||
}>>;
|
||||
export type VPieSegment = InstanceType<typeof VPieSegment>;
|
||||
+108
@@ -0,0 +1,108 @@
|
||||
import { createElementVNode as _createElementVNode } from "vue";
|
||||
// Composables
|
||||
import { useProxiedModel } from "../../composables/proxiedModel.js";
|
||||
import { makeRevealProps, useReveal } from "../../composables/reveal.js"; // Utilities
|
||||
import { computed, toRef } from 'vue';
|
||||
import { useInnerSlicePath, useOuterSlicePath, usePieArc } from "./utils.js";
|
||||
import { easingPatterns, genericComponent, propsFactory, useTransition } from "../../util/index.js"; // Types
|
||||
export const makeVPieSegmentProps = propsFactory({
|
||||
active: Boolean,
|
||||
rotate: [Number, String],
|
||||
value: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
color: String,
|
||||
innerCut: [Number, String],
|
||||
hoverScale: {
|
||||
type: [Number, String],
|
||||
default: 0.05
|
||||
},
|
||||
gap: [Number, String],
|
||||
rounded: [Number, String],
|
||||
animation: {
|
||||
type: [Boolean, Object],
|
||||
default: false
|
||||
},
|
||||
pattern: String,
|
||||
hideSlice: Boolean,
|
||||
...makeRevealProps()
|
||||
}, 'VPieSegment');
|
||||
export const VPieSegment = genericComponent()({
|
||||
name: 'VPieSegment',
|
||||
props: makeVPieSegmentProps(),
|
||||
emits: {
|
||||
'update:active': val => true
|
||||
},
|
||||
setup(props) {
|
||||
const isActive = useProxiedModel(props, 'active');
|
||||
const {
|
||||
state: revealState,
|
||||
duration: revealDuration
|
||||
} = useReveal(props);
|
||||
const transitionConfig = computed(() => {
|
||||
const defaultEasing = 'easeInOutCubic';
|
||||
const defaultDuration = 400;
|
||||
const easingName = typeof props.animation === 'object' ? props.animation.easing ?? defaultEasing : defaultEasing;
|
||||
return {
|
||||
duration: ['initial', 'pending'].includes(revealState.value) ? revealDuration.value : typeof props.animation === 'object' ? props.animation.duration : props.animation ? defaultDuration : 0,
|
||||
transition: easingPatterns[easingName]
|
||||
};
|
||||
});
|
||||
const {
|
||||
hoverZoomRatio,
|
||||
normalizedValue,
|
||||
normalizedInnerCut,
|
||||
outerX,
|
||||
outerY,
|
||||
arcWidth
|
||||
} = usePieArc(props, isActive);
|
||||
const arcSize = toRef(() => revealState.value === 'initial' ? 0 : normalizedValue.value);
|
||||
const currentArcSize = useTransition(arcSize, transitionConfig);
|
||||
const angle = toRef(() => revealState.value === 'initial' ? 0 : Number(props.rotate ?? 0) + Number(props.gap ?? 0) / 2);
|
||||
const currentAngle = useTransition(angle, transitionConfig);
|
||||
const arcRadius = toRef(() => 50 * (isActive.value ? 1 : 1 - hoverZoomRatio.value));
|
||||
const currentArcRadius = useTransition(arcRadius, transitionConfig);
|
||||
const currentArcWidth = useTransition(arcWidth, transitionConfig);
|
||||
const outerSlicePath = useOuterSlicePath({
|
||||
angle: currentAngle,
|
||||
radius: currentArcRadius,
|
||||
size: currentArcSize,
|
||||
width: currentArcWidth,
|
||||
rounded: () => Number(props.rounded ?? 0)
|
||||
});
|
||||
const innerSlicePath = useInnerSlicePath({
|
||||
angle: currentAngle,
|
||||
radius: () => currentArcRadius.value - currentArcWidth.value,
|
||||
size: currentArcSize
|
||||
});
|
||||
const overlayPath = toRef(() => `M 50 0 A 50 50 0 ${normalizedValue.value > 50 ? 1 : 0} 1 ${outerX.value} ${outerY.value} L 50 50`);
|
||||
return () => _createElementVNode("g", {
|
||||
"class": "v-pie-segment",
|
||||
"style": {
|
||||
color: props.color
|
||||
}
|
||||
}, [_createElementVNode("path", {
|
||||
"key": "outer-slice",
|
||||
"fill": "currentColor",
|
||||
"shape-rendering": "geometricPrecision",
|
||||
"d": outerSlicePath.value
|
||||
}, null), props.pattern && _createElementVNode("path", {
|
||||
"key": "pattern-overlay",
|
||||
"shape-rendering": "geometricPrecision",
|
||||
"fill": props.pattern,
|
||||
"d": outerSlicePath.value
|
||||
}, null), !props.hideSlice && normalizedInnerCut.value > 0 && _createElementVNode("path", {
|
||||
"key": "inner-slice",
|
||||
"fill": "oklch(from currentColor l c h / calc(alpha / 2))",
|
||||
"d": innerSlicePath.value
|
||||
}, null), ['disabled', 'done'].includes(revealState.value) && _createElementVNode("path", {
|
||||
"transform": `rotate(${currentAngle.value} 50 50)`,
|
||||
"class": "v-pie-segment__overlay",
|
||||
"d": overlayPath.value,
|
||||
"onMouseenter": () => isActive.value = true,
|
||||
"onMouseleave": () => isActive.value = false
|
||||
}, null)]);
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=VPieSegment.js.map
|
||||
Generated
Vendored
+1
File diff suppressed because one or more lines are too long
+298
@@ -0,0 +1,298 @@
|
||||
// Types
|
||||
import type { PropType } from 'vue';
|
||||
import type { PieItem, TextTemplate } from './types.js';
|
||||
export type VPieTooltipSlots = {
|
||||
default: {
|
||||
item: PieItem;
|
||||
};
|
||||
prepend: {
|
||||
item: PieItem;
|
||||
};
|
||||
};
|
||||
export declare const makeVPieTooltipProps: <Defaults extends {
|
||||
offset?: unknown;
|
||||
transition?: unknown;
|
||||
modelValue?: unknown;
|
||||
target?: unknown;
|
||||
item?: unknown;
|
||||
titleFormat?: unknown;
|
||||
subtitleFormat?: unknown;
|
||||
} = {}>(defaults?: Defaults | undefined) => {
|
||||
offset: unknown extends Defaults["offset"] ? {
|
||||
type: PropType<string | number | number[] | undefined>;
|
||||
default: NonNullable<string | number | number[] | undefined>;
|
||||
} : Omit<{
|
||||
type: PropType<string | number | number[] | undefined>;
|
||||
default: NonNullable<string | number | number[] | undefined>;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["offset"] ? string | number | number[] | undefined : string | number | number[] | Defaults["offset"] | undefined>;
|
||||
default: unknown extends Defaults["offset"] ? string | number | number[] | undefined : Defaults["offset"] | NonNullable<string | number | number[] | undefined>;
|
||||
};
|
||||
transition: unknown extends Defaults["transition"] ? import("vue").Prop<string | boolean | (import("vue").TransitionProps & {
|
||||
component?: import("vue").Component | undefined;
|
||||
}) | null> : {
|
||||
type: PropType<unknown extends Defaults["transition"] ? string | boolean | (import("vue").TransitionProps & {
|
||||
component?: import("vue").Component | undefined;
|
||||
}) | null : string | boolean | Defaults["transition"] | (import("vue").TransitionProps & {
|
||||
component?: import("vue").Component | undefined;
|
||||
}) | null>;
|
||||
default: unknown extends Defaults["transition"] ? string | boolean | (import("vue").TransitionProps & {
|
||||
component?: import("vue").Component | undefined;
|
||||
}) | null : Defaults["transition"] | NonNullable<string | boolean | (import("vue").TransitionProps & {
|
||||
component?: import("vue").Component | undefined;
|
||||
}) | null>;
|
||||
};
|
||||
modelValue: unknown extends Defaults["modelValue"] ? BooleanConstructor : {
|
||||
type: PropType<unknown extends Defaults["modelValue"] ? boolean : boolean | Defaults["modelValue"]>;
|
||||
default: unknown extends Defaults["modelValue"] ? boolean : boolean | Defaults["modelValue"];
|
||||
};
|
||||
target: unknown extends Defaults["target"] ? PropType<[x: number, y: number]> : {
|
||||
type: PropType<unknown extends Defaults["target"] ? [x: number, y: number] : [x: number, y: number] | Defaults["target"]>;
|
||||
default: unknown extends Defaults["target"] ? [x: number, y: number] : [x: number, y: number] | Defaults["target"];
|
||||
};
|
||||
item: unknown extends Defaults["item"] ? {
|
||||
type: PropType<PieItem | null>;
|
||||
default: null;
|
||||
} : Omit<{
|
||||
type: PropType<PieItem | null>;
|
||||
default: null;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["item"] ? PieItem | null : PieItem | Defaults["item"] | null>;
|
||||
default: unknown extends Defaults["item"] ? PieItem | null : PieItem | Defaults["item"];
|
||||
};
|
||||
titleFormat: unknown extends Defaults["titleFormat"] ? {
|
||||
type: PropType<TextTemplate>;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: PropType<TextTemplate>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["titleFormat"] ? TextTemplate : Defaults["titleFormat"] | TextTemplate>;
|
||||
default: unknown extends Defaults["titleFormat"] ? TextTemplate : Defaults["titleFormat"] | NonNullable<TextTemplate>;
|
||||
};
|
||||
subtitleFormat: unknown extends Defaults["subtitleFormat"] ? {
|
||||
type: PropType<TextTemplate>;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: PropType<TextTemplate>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: PropType<unknown extends Defaults["subtitleFormat"] ? TextTemplate : Defaults["subtitleFormat"] | TextTemplate>;
|
||||
default: unknown extends Defaults["subtitleFormat"] ? TextTemplate : Defaults["subtitleFormat"] | NonNullable<TextTemplate>;
|
||||
};
|
||||
};
|
||||
export declare const VPieTooltip: {
|
||||
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
|
||||
offset: string | number | number[];
|
||||
modelValue: boolean;
|
||||
item: PieItem | null;
|
||||
titleFormat: TextTemplate;
|
||||
subtitleFormat: TextTemplate;
|
||||
} & {
|
||||
transition?: string | boolean | (import("vue").TransitionProps & {
|
||||
component?: import("vue").Component | undefined;
|
||||
}) | null | undefined;
|
||||
target?: [x: number, y: number] | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
default?: ((arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
prepend?: ((arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | ((arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
default?: false | ((arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
prepend?: false | ((arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:default"?: false | ((arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:prepend"?: false | ((arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
|
||||
offset: string | number | number[] | undefined;
|
||||
modelValue: boolean;
|
||||
item: PieItem | null;
|
||||
titleFormat: TextTemplate;
|
||||
subtitleFormat: TextTemplate;
|
||||
}, true, {}, import("vue").SlotsType<Partial<{
|
||||
default: (arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
prepend: (arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
||||
P: {};
|
||||
B: {};
|
||||
D: {};
|
||||
C: {};
|
||||
M: {};
|
||||
Defaults: {};
|
||||
}, {
|
||||
offset: string | number | number[];
|
||||
modelValue: boolean;
|
||||
item: PieItem | null;
|
||||
titleFormat: TextTemplate;
|
||||
subtitleFormat: TextTemplate;
|
||||
} & {
|
||||
transition?: string | boolean | (import("vue").TransitionProps & {
|
||||
component?: import("vue").Component | undefined;
|
||||
}) | null | undefined;
|
||||
target?: [x: number, y: number] | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
default?: ((arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
prepend?: ((arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | ((arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
default?: false | ((arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
prepend?: false | ((arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:default"?: false | ((arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:prepend"?: false | ((arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
}, () => JSX.Element, {}, {}, {}, {
|
||||
offset: string | number | number[] | undefined;
|
||||
modelValue: boolean;
|
||||
item: PieItem | null;
|
||||
titleFormat: TextTemplate;
|
||||
subtitleFormat: TextTemplate;
|
||||
}>;
|
||||
__isFragment?: undefined;
|
||||
__isTeleport?: undefined;
|
||||
__isSuspense?: undefined;
|
||||
} & import("vue").ComponentOptionsBase<{
|
||||
offset: string | number | number[];
|
||||
modelValue: boolean;
|
||||
item: PieItem | null;
|
||||
titleFormat: TextTemplate;
|
||||
subtitleFormat: TextTemplate;
|
||||
} & {
|
||||
transition?: string | boolean | (import("vue").TransitionProps & {
|
||||
component?: import("vue").Component | undefined;
|
||||
}) | null | undefined;
|
||||
target?: [x: number, y: number] | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
default?: ((arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
prepend?: ((arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | ((arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
default?: false | ((arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
prepend?: false | ((arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:default"?: false | ((arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:prepend"?: false | ((arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
|
||||
offset: string | number | number[] | undefined;
|
||||
modelValue: boolean;
|
||||
item: PieItem | null;
|
||||
titleFormat: TextTemplate;
|
||||
subtitleFormat: TextTemplate;
|
||||
}, {}, string, import("vue").SlotsType<Partial<{
|
||||
default: (arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
prepend: (arg: {
|
||||
item: PieItem;
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
|
||||
offset: {
|
||||
type: PropType<string | number | number[] | undefined>;
|
||||
default: NonNullable<string | number | number[] | undefined>;
|
||||
};
|
||||
transition: import("vue").Prop<string | boolean | (import("vue").TransitionProps & {
|
||||
component?: import("vue").Component | undefined;
|
||||
}) | null>;
|
||||
modelValue: BooleanConstructor;
|
||||
target: PropType<[x: number, y: number]>;
|
||||
item: {
|
||||
type: PropType<PieItem | null>;
|
||||
default: null;
|
||||
};
|
||||
titleFormat: {
|
||||
type: PropType<TextTemplate>;
|
||||
default: string;
|
||||
};
|
||||
subtitleFormat: {
|
||||
type: PropType<TextTemplate>;
|
||||
default: string;
|
||||
};
|
||||
}, import("vue").ExtractPropTypes<{
|
||||
offset: {
|
||||
type: PropType<string | number | number[] | undefined>;
|
||||
default: NonNullable<string | number | number[] | undefined>;
|
||||
};
|
||||
transition: import("vue").Prop<string | boolean | (import("vue").TransitionProps & {
|
||||
component?: import("vue").Component | undefined;
|
||||
}) | null>;
|
||||
modelValue: BooleanConstructor;
|
||||
target: PropType<[x: number, y: number]>;
|
||||
item: {
|
||||
type: PropType<PieItem | null>;
|
||||
default: null;
|
||||
};
|
||||
titleFormat: {
|
||||
type: PropType<TextTemplate>;
|
||||
default: string;
|
||||
};
|
||||
subtitleFormat: {
|
||||
type: PropType<TextTemplate>;
|
||||
default: string;
|
||||
};
|
||||
}>>;
|
||||
export type VPieTooltip = InstanceType<typeof VPieTooltip>;
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
import { createVNode as _createVNode } from "vue";
|
||||
// Components
|
||||
import { VListItem } from "../../components/VList/VListItem.js";
|
||||
import { makeVTooltipProps, VTooltip } from "../../components/VTooltip/VTooltip.js"; // Composables
|
||||
import { makeTransitionProps, MaybeTransition } from "../../composables/transition.js"; // Utilities
|
||||
import { toRef } from 'vue';
|
||||
import { formatTextTemplate } from "./utils.js";
|
||||
import { genericComponent, pick, propsFactory } from "../../util/index.js"; // Types
|
||||
export const makeVPieTooltipProps = propsFactory({
|
||||
modelValue: Boolean,
|
||||
target: Object,
|
||||
item: {
|
||||
type: Object,
|
||||
default: null
|
||||
},
|
||||
titleFormat: {
|
||||
type: [String, Function],
|
||||
default: '[title]'
|
||||
},
|
||||
subtitleFormat: {
|
||||
type: [String, Function],
|
||||
default: '[value]'
|
||||
},
|
||||
...makeTransitionProps(),
|
||||
...pick(makeVTooltipProps(), ['offset'])
|
||||
}, 'VPieTooltip');
|
||||
export const VPieTooltip = genericComponent()({
|
||||
name: 'VPieTooltip',
|
||||
props: makeVPieTooltipProps(),
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const tooltipTitleFormatFunction = toRef(() => segment => {
|
||||
return typeof props.titleFormat === 'function' ? props.titleFormat(segment) : formatTextTemplate(props.titleFormat, segment);
|
||||
});
|
||||
const tooltipSubtitleFormatFunction = toRef(() => segment => {
|
||||
return typeof props.subtitleFormat === 'function' ? props.subtitleFormat(segment) : formatTextTemplate(props.subtitleFormat, segment);
|
||||
});
|
||||
return () => _createVNode(VTooltip, {
|
||||
"offset": props.offset,
|
||||
"modelValue": props.modelValue,
|
||||
"target": props.target,
|
||||
"contentClass": "v-pie__tooltip-content"
|
||||
}, {
|
||||
default: () => [!!props.item && (slots.default?.({
|
||||
item: props.item
|
||||
}) ?? _createVNode(MaybeTransition, {
|
||||
"transition": props.transition,
|
||||
"mode": "out-in"
|
||||
}, {
|
||||
default: () => [_createVNode(VListItem, {
|
||||
"key": props.item.key,
|
||||
"density": "compact",
|
||||
"title": tooltipTitleFormatFunction.value(props.item),
|
||||
"subtitle": tooltipSubtitleFormatFunction.value(props.item)
|
||||
}, {
|
||||
prepend: slots.prepend ? () => slots.prepend({
|
||||
item: props.item
|
||||
}) : undefined
|
||||
})]
|
||||
}))]
|
||||
});
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=VPieTooltip.js.map
|
||||
Generated
Vendored
+1
File diff suppressed because one or more lines are too long
+11
@@ -0,0 +1,11 @@
|
||||
@use '../../styles/settings';
|
||||
|
||||
$pie-underlay-inset: -8px !default;
|
||||
$pie-title-padding-bottom: 12px !default;
|
||||
$pie-legend-padding-block: 12px !default;
|
||||
$pie-legend-chip-default-font-size: 0.8125rem !default;
|
||||
$pie-legend-chip-compact-font-size: 0.66rem !default;
|
||||
$pie-legend-chip-disabled-opacity: .4 !default;
|
||||
$pie-legend-avatar-border: thin solid rgba(var(--v-theme-on-surface), .2) !default;
|
||||
$pie-tooltip-min-width: 100px !default;
|
||||
$pie-tooltip-avatar-border: thin solid rgba(var(--v-theme-on-surface-variant), .2) !default;
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
export { VPie } from './VPie.js';
|
||||
export { VPieSegment } from './VPieSegment.js';
|
||||
export { VPieTooltip } from './VPieTooltip.js';
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
export { VPie } from "./VPie.js";
|
||||
export { VPieSegment } from "./VPieSegment.js";
|
||||
export { VPieTooltip } from "./VPieTooltip.js";
|
||||
//# sourceMappingURL=index.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.js","names":["VPie","VPieSegment","VPieTooltip"],"sources":["../../../src/labs/VPie/index.ts"],"sourcesContent":["export { VPie } from './VPie'\nexport { VPieSegment } from './VPieSegment'\nexport { VPieTooltip } from './VPieTooltip'\n"],"mappings":"SAASA,IAAI;AAAA,SACJC,WAAW;AAAA,SACXC,WAAW","ignoreList":[]}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
export interface PieItem {
|
||||
key: string | number | symbol;
|
||||
color: string;
|
||||
value: number;
|
||||
title: string;
|
||||
pattern?: string;
|
||||
isActive: boolean;
|
||||
raw?: Record<string, any>;
|
||||
}
|
||||
export interface PieSegmentProps {
|
||||
gap?: number | string;
|
||||
hoverScale?: number | string;
|
||||
innerCut?: number | string;
|
||||
rounded?: number | string;
|
||||
value: number;
|
||||
}
|
||||
export type TextTemplate = string | ((v: PieItem) => string);
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
export {};
|
||||
//# sourceMappingURL=types.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"types.js","names":[],"sources":["../../../src/labs/VPie/types.ts"],"sourcesContent":["export interface PieItem {\n key: string | number | symbol\n color: string\n value: number\n title: string\n pattern?: string\n isActive: boolean\n raw?: Record<string, any>\n}\n\nexport interface PieSegmentProps {\n gap?: number | string\n hoverScale?: number | string\n innerCut?: number | string\n rounded?: number | string\n value: number\n}\n\nexport type TextTemplate = string | ((v: PieItem) => string)\n"],"mappings":"","ignoreList":[]}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
// Types
|
||||
import type { MaybeRefOrGetter, Ref } from 'vue';
|
||||
import type { PieItem, PieSegmentProps } from './types.js';
|
||||
export declare function formatTextTemplate(template: string, item?: PieItem): string | undefined;
|
||||
export declare function usePieArc(props: PieSegmentProps, isHovering: Ref<boolean>): {
|
||||
hoverZoomRatio: Readonly<Ref<number, number>>;
|
||||
normalizedValue: Readonly<Ref<number, number>>;
|
||||
normalizedInnerCut: Readonly<Ref<number, number>>;
|
||||
outerX: Readonly<Ref<number, number>>;
|
||||
outerY: Readonly<Ref<number, number>>;
|
||||
arcWidth: import("vue").ComputedRef<number>;
|
||||
};
|
||||
export declare function useOuterSlicePath({ angle, radius, size, width, rounded }: {
|
||||
angle: MaybeRefOrGetter<number>;
|
||||
radius: MaybeRefOrGetter<number>;
|
||||
size: MaybeRefOrGetter<number>;
|
||||
width: MaybeRefOrGetter<number>;
|
||||
rounded: MaybeRefOrGetter<number>;
|
||||
}): import("vue").ComputedRef<string>;
|
||||
export declare function useInnerSlicePath({ angle, radius, size }: {
|
||||
angle: MaybeRefOrGetter<number>;
|
||||
radius: MaybeRefOrGetter<number>;
|
||||
size: MaybeRefOrGetter<number>;
|
||||
}): import("vue").ComputedRef<string>;
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
// Utilities
|
||||
import { computed, toRef, toValue } from 'vue';
|
||||
import { clamp } from "../../util/index.js";
|
||||
import { roundedArc, simpleArc } from "../../util/svg-arc-corners.js"; // Types
|
||||
export function formatTextTemplate(template, item) {
|
||||
return item ? template.replaceAll('[title]', item.title).replaceAll('[value]', String(item.value)) : undefined;
|
||||
}
|
||||
export function usePieArc(props, isHovering) {
|
||||
const hoverZoomRatio = toRef(() => clamp(Number(props.hoverScale ?? 0), 0, 0.25));
|
||||
const normalizedValue = toRef(() => clamp(props.value - 100 * Number(props.gap ?? 0) / 360, 0.01, 99.99));
|
||||
const normalizedInnerCut = toRef(() => {
|
||||
const min = Number(props.rounded ?? 0) > 0 ? 0.2 : 0;
|
||||
return clamp(Number(props.innerCut ?? 0) / 100, min, 1);
|
||||
});
|
||||
const radians = computed(() => (360 * (-normalizedValue.value / 100) + 90) * (Math.PI / 180));
|
||||
const arcWidth = computed(() => 50 * (1 - normalizedInnerCut.value) * (isHovering.value ? 1 : 1 - hoverZoomRatio.value));
|
||||
const outerX = toRef(() => 50 + 50 * Math.cos(radians.value));
|
||||
const outerY = toRef(() => 50 - 50 * Math.sin(radians.value));
|
||||
return {
|
||||
hoverZoomRatio,
|
||||
normalizedValue,
|
||||
normalizedInnerCut,
|
||||
outerX,
|
||||
outerY,
|
||||
arcWidth
|
||||
};
|
||||
}
|
||||
export function useOuterSlicePath(_ref) {
|
||||
let {
|
||||
angle,
|
||||
radius,
|
||||
size,
|
||||
width,
|
||||
rounded
|
||||
} = _ref;
|
||||
return computed(() => roundedArc([50, 50], toValue(radius), toValue(angle), toValue(angle) + 360 * toValue(size) / 100,
|
||||
// angle end,
|
||||
toValue(width), toValue(rounded)));
|
||||
}
|
||||
export function useInnerSlicePath(_ref2) {
|
||||
let {
|
||||
angle,
|
||||
radius,
|
||||
size
|
||||
} = _ref2;
|
||||
return computed(() => simpleArc([50, 50], toValue(radius), toValue(angle), toValue(angle) + 360 * toValue(size) / 100 // angle end,
|
||||
));
|
||||
}
|
||||
//# sourceMappingURL=utils.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
Generated
Vendored
+27
@@ -0,0 +1,27 @@
|
||||
.v-pull-to-refresh {
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
.v-pull-to-refresh__pull-down {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
transition: top 0.3s ease-out;
|
||||
}
|
||||
.v-pull-to-refresh__pull-down--touching {
|
||||
transition: none;
|
||||
}
|
||||
.v-pull-to-refresh__pull-down-default {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
justify-content: center;
|
||||
align-items: flex-end;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
.v-pull-to-refresh__scroll-container {
|
||||
position: relative;
|
||||
transition: top 0.3s ease-out;
|
||||
}
|
||||
.v-pull-to-refresh__scroll-container--touching {
|
||||
transition: none;
|
||||
}
|
||||
Generated
Vendored
+174
@@ -0,0 +1,174 @@
|
||||
// Styles
|
||||
|
||||
export type VPullToRefreshSlots = {
|
||||
default: never;
|
||||
pullDownPanel: {
|
||||
canRefresh: boolean;
|
||||
goingUp: boolean;
|
||||
refreshing: boolean;
|
||||
};
|
||||
};
|
||||
export declare const VPullToRefresh: {
|
||||
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
|
||||
disabled: boolean;
|
||||
pullDownThreshold: number;
|
||||
} & {} & {
|
||||
$children?: {
|
||||
default?: (() => import("vue").VNodeChild) | undefined;
|
||||
pullDownPanel?: ((arg: {
|
||||
canRefresh: boolean;
|
||||
goingUp: boolean;
|
||||
refreshing: boolean;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
default?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
pullDownPanel?: false | ((arg: {
|
||||
canRefresh: boolean;
|
||||
goingUp: boolean;
|
||||
refreshing: boolean;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:pullDownPanel"?: false | ((arg: {
|
||||
canRefresh: boolean;
|
||||
goingUp: boolean;
|
||||
refreshing: boolean;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} & {
|
||||
onLoad?: ((options: {
|
||||
done: () => void;
|
||||
}) => any) | undefined;
|
||||
}, void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
||||
load: (options: {
|
||||
done: () => void;
|
||||
}) => true;
|
||||
}, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
|
||||
disabled: boolean;
|
||||
pullDownThreshold: number;
|
||||
}, true, {}, import("vue").SlotsType<Partial<{
|
||||
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
pullDownPanel: (arg: {
|
||||
canRefresh: boolean;
|
||||
goingUp: boolean;
|
||||
refreshing: boolean;
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
||||
P: {};
|
||||
B: {};
|
||||
D: {};
|
||||
C: {};
|
||||
M: {};
|
||||
Defaults: {};
|
||||
}, {
|
||||
disabled: boolean;
|
||||
pullDownThreshold: number;
|
||||
} & {} & {
|
||||
$children?: {
|
||||
default?: (() => import("vue").VNodeChild) | undefined;
|
||||
pullDownPanel?: ((arg: {
|
||||
canRefresh: boolean;
|
||||
goingUp: boolean;
|
||||
refreshing: boolean;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
default?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
pullDownPanel?: false | ((arg: {
|
||||
canRefresh: boolean;
|
||||
goingUp: boolean;
|
||||
refreshing: boolean;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:pullDownPanel"?: false | ((arg: {
|
||||
canRefresh: boolean;
|
||||
goingUp: boolean;
|
||||
refreshing: boolean;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} & {
|
||||
onLoad?: ((options: {
|
||||
done: () => void;
|
||||
}) => any) | undefined;
|
||||
}, {}, {}, {}, {}, {
|
||||
disabled: boolean;
|
||||
pullDownThreshold: number;
|
||||
}>;
|
||||
__isFragment?: undefined;
|
||||
__isTeleport?: undefined;
|
||||
__isSuspense?: undefined;
|
||||
} & import("vue").ComponentOptionsBase<{
|
||||
disabled: boolean;
|
||||
pullDownThreshold: number;
|
||||
} & {} & {
|
||||
$children?: {
|
||||
default?: (() => import("vue").VNodeChild) | undefined;
|
||||
pullDownPanel?: ((arg: {
|
||||
canRefresh: boolean;
|
||||
goingUp: boolean;
|
||||
refreshing: boolean;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | (() => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
default?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
pullDownPanel?: false | ((arg: {
|
||||
canRefresh: boolean;
|
||||
goingUp: boolean;
|
||||
refreshing: boolean;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:default"?: false | (() => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:pullDownPanel"?: false | ((arg: {
|
||||
canRefresh: boolean;
|
||||
goingUp: boolean;
|
||||
refreshing: boolean;
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} & {
|
||||
onLoad?: ((options: {
|
||||
done: () => void;
|
||||
}) => any) | undefined;
|
||||
}, void, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
||||
load: (options: {
|
||||
done: () => void;
|
||||
}) => true;
|
||||
}, string, {
|
||||
disabled: boolean;
|
||||
pullDownThreshold: number;
|
||||
}, {}, string, import("vue").SlotsType<Partial<{
|
||||
default: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
pullDownPanel: (arg: {
|
||||
canRefresh: boolean;
|
||||
goingUp: boolean;
|
||||
refreshing: boolean;
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
|
||||
disabled: BooleanConstructor;
|
||||
pullDownThreshold: {
|
||||
type: NumberConstructor;
|
||||
default: number;
|
||||
};
|
||||
}, import("vue").ExtractPropTypes<{
|
||||
disabled: BooleanConstructor;
|
||||
pullDownThreshold: {
|
||||
type: NumberConstructor;
|
||||
default: number;
|
||||
};
|
||||
}>>;
|
||||
export type VPullToRefresh = InstanceType<typeof VPullToRefresh>;
|
||||
Generated
Vendored
+118
@@ -0,0 +1,118 @@
|
||||
import { createVNode as _createVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode } from "vue";
|
||||
// Styles
|
||||
import "./VPullToRefresh.css";
|
||||
|
||||
// Components
|
||||
import { VIcon } from "../../components/VIcon/index.js";
|
||||
import { VProgressCircular } from "../../components/VProgressCircular/index.js"; // Utilities
|
||||
import { computed, onMounted, ref, shallowRef, watch } from 'vue';
|
||||
import { clamp, convertToUnit, genericComponent, getScrollParents, useRender } from "../../util/index.js";
|
||||
export const VPullToRefresh = genericComponent()({
|
||||
name: 'VPullToRefresh',
|
||||
props: {
|
||||
disabled: Boolean,
|
||||
pullDownThreshold: {
|
||||
type: Number,
|
||||
default: 64
|
||||
}
|
||||
},
|
||||
emits: {
|
||||
load: options => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots,
|
||||
emit
|
||||
} = _ref;
|
||||
let touchstartY = 0;
|
||||
let scrollParents = [];
|
||||
const touchDiff = shallowRef(0);
|
||||
const containerRef = ref();
|
||||
const refreshing = shallowRef(false);
|
||||
const goingUp = shallowRef(false);
|
||||
const touching = shallowRef(false);
|
||||
const canRefresh = computed(() => touchDiff.value >= props.pullDownThreshold && !refreshing.value);
|
||||
const topOffset = computed(() => clamp(touchDiff.value, 0, props.pullDownThreshold));
|
||||
function onTouchstart(e) {
|
||||
if (refreshing.value || props.disabled) return;
|
||||
touching.value = true;
|
||||
touchstartY = 'clientY' in e ? e.clientY : e.touches[0].clientY;
|
||||
}
|
||||
function onTouchmove(e) {
|
||||
if (refreshing.value || !touching.value || props.disabled) return;
|
||||
const touchY = 'clientY' in e ? e.clientY : e.touches[0].clientY;
|
||||
if (scrollParents.length && !scrollParents[0].scrollTop) {
|
||||
touchDiff.value = touchY - touchstartY;
|
||||
}
|
||||
}
|
||||
function onTouchend(e) {
|
||||
if (refreshing.value || props.disabled) return;
|
||||
touching.value = false;
|
||||
if (canRefresh.value) {
|
||||
function done() {
|
||||
if (!refreshing.value) return;
|
||||
touchDiff.value = 0;
|
||||
refreshing.value = false;
|
||||
}
|
||||
emit('load', {
|
||||
done
|
||||
});
|
||||
refreshing.value = true;
|
||||
} else {
|
||||
touchDiff.value = 0;
|
||||
}
|
||||
}
|
||||
onMounted(() => {
|
||||
scrollParents = getScrollParents(containerRef.value);
|
||||
});
|
||||
watch([topOffset, refreshing], () => {
|
||||
if (scrollParents.length) {
|
||||
const stopScrolling = topOffset.value && !refreshing.value;
|
||||
scrollParents.forEach(p => p.style.overflow = stopScrolling ? 'hidden' : 'auto');
|
||||
}
|
||||
});
|
||||
watch(topOffset, (newVal, oldVal) => {
|
||||
goingUp.value = newVal < oldVal;
|
||||
});
|
||||
useRender(() => {
|
||||
return _createElementVNode("div", {
|
||||
"class": _normalizeClass(['v-pull-to-refresh']),
|
||||
"onTouchstart": onTouchstart,
|
||||
"onTouchmove": onTouchmove,
|
||||
"onTouchend": onTouchend,
|
||||
"onMousedown": onTouchstart,
|
||||
"onMouseup": onTouchend,
|
||||
"onMouseleave": onTouchend,
|
||||
"onMousemove": onTouchmove,
|
||||
"ref": containerRef
|
||||
}, [_createElementVNode("div", {
|
||||
"class": _normalizeClass(['v-pull-to-refresh__pull-down', {
|
||||
'v-pull-to-refresh__pull-down--touching': touching.value
|
||||
}]),
|
||||
"style": {
|
||||
top: convertToUnit(-1 * props.pullDownThreshold + topOffset.value),
|
||||
height: convertToUnit(props.pullDownThreshold)
|
||||
}
|
||||
}, [slots.pullDownPanel ? slots.pullDownPanel({
|
||||
canRefresh: canRefresh.value,
|
||||
goingUp: goingUp.value,
|
||||
refreshing: refreshing.value
|
||||
}) : _createElementVNode("div", {
|
||||
"class": _normalizeClass(['v-pull-to-refresh__pull-down-default'])
|
||||
}, [refreshing.value ? _createVNode(VProgressCircular, {
|
||||
"indeterminate": true,
|
||||
"active": false
|
||||
}, null) : _createVNode(VIcon, {
|
||||
"icon": canRefresh.value || goingUp.value ? '$sortAsc' : '$sortDesc'
|
||||
}, null)])]), _createElementVNode("div", {
|
||||
"class": _normalizeClass(['v-pull-to-refresh__scroll-container', {
|
||||
'v-pull-to-refresh__scroll-container--touching': touching.value
|
||||
}]),
|
||||
"style": {
|
||||
top: convertToUnit(topOffset.value)
|
||||
}
|
||||
}, [slots.default?.()])]);
|
||||
});
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=VPullToRefresh.js.map
|
||||
Generated
Vendored
+1
File diff suppressed because one or more lines are too long
Generated
Vendored
+23
@@ -0,0 +1,23 @@
|
||||
.v-pull-to-refresh
|
||||
overflow: hidden
|
||||
position: relative
|
||||
&__pull-down
|
||||
position: absolute
|
||||
width: 100%
|
||||
transition: top .3s ease-out
|
||||
&--touching
|
||||
transition: none
|
||||
|
||||
&__pull-down-default
|
||||
display: flex
|
||||
width: 100%
|
||||
height: 100%
|
||||
justify-content: center
|
||||
align-items: flex-end
|
||||
padding-bottom: 10px
|
||||
|
||||
&__scroll-container
|
||||
position: relative
|
||||
transition: top .3s ease-out
|
||||
&--touching
|
||||
transition: none
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
export { VPullToRefresh } from './VPullToRefresh.js';
|
||||
Generated
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
export { VPullToRefresh } from "./VPullToRefresh.js";
|
||||
//# sourceMappingURL=index.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.js","names":["VPullToRefresh"],"sources":["../../../src/labs/VPullToRefresh/index.ts"],"sourcesContent":["export { VPullToRefresh } from './VPullToRefresh'\n"],"mappings":"SAASA,cAAc","ignoreList":[]}
|
||||
Generated
Vendored
+834
@@ -0,0 +1,834 @@
|
||||
// Types
|
||||
import type { StepperVerticalItemActionSlot } from './VStepperVerticalItem.js';
|
||||
import type { VStepperSlot } from '../../components/VStepper/VStepper.js';
|
||||
import type { StepperItemSlot } from '../../components/VStepper/VStepperItem.js';
|
||||
import type { GenericProps } from '../../util/index.js';
|
||||
export type VStepperVerticalSlots<T> = {
|
||||
actions: StepperVerticalItemActionSlot<T>;
|
||||
default: VStepperSlot & {
|
||||
step: T;
|
||||
};
|
||||
icon: StepperItemSlot<T>;
|
||||
title: StepperItemSlot<T>;
|
||||
subtitle: StepperItemSlot<T>;
|
||||
prev: StepperVerticalItemActionSlot<T>;
|
||||
next: StepperVerticalItemActionSlot<T>;
|
||||
} & {
|
||||
[key: `header-item.${string}`]: StepperItemSlot<T>;
|
||||
[key: `item.${string}`]: StepperItemSlot<T>;
|
||||
};
|
||||
export declare const makeVStepperVerticalProps: <Defaults extends {
|
||||
theme?: unknown;
|
||||
class?: unknown;
|
||||
style?: unknown;
|
||||
mobile?: unknown;
|
||||
mobileBreakpoint?: unknown;
|
||||
elevation?: unknown;
|
||||
rounded?: unknown;
|
||||
tile?: unknown;
|
||||
tag?: unknown;
|
||||
modelValue?: unknown;
|
||||
multiple?: unknown;
|
||||
mandatory?: unknown;
|
||||
max?: unknown;
|
||||
selectedClass?: unknown;
|
||||
disabled?: unknown;
|
||||
eager?: unknown;
|
||||
color?: unknown;
|
||||
expandIcon?: unknown;
|
||||
collapseIcon?: unknown;
|
||||
hideActions?: unknown;
|
||||
focusable?: unknown;
|
||||
ripple?: unknown;
|
||||
readonly?: unknown;
|
||||
bgColor?: unknown;
|
||||
flat?: unknown;
|
||||
variant?: unknown;
|
||||
altLabels?: unknown;
|
||||
completeIcon?: unknown;
|
||||
editIcon?: unknown;
|
||||
editable?: unknown;
|
||||
errorIcon?: unknown;
|
||||
items?: unknown;
|
||||
itemTitle?: unknown;
|
||||
itemValue?: unknown;
|
||||
itemProps?: unknown;
|
||||
nonLinear?: unknown;
|
||||
prevText?: unknown;
|
||||
nextText?: unknown;
|
||||
} = {}>(defaults?: Defaults | undefined) => {
|
||||
theme: unknown extends Defaults["theme"] ? StringConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["theme"] ? string : string | Defaults["theme"]>;
|
||||
default: unknown extends Defaults["theme"] ? string : string | Defaults["theme"];
|
||||
};
|
||||
class: unknown extends Defaults["class"] ? import("vue").PropType<any> : {
|
||||
type: import("vue").PropType<unknown extends Defaults["class"] ? any : any>;
|
||||
default: unknown extends Defaults["class"] ? any : any;
|
||||
};
|
||||
style: unknown extends Defaults["style"] ? {
|
||||
type: import("vue").PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | import("vue").StyleValue>;
|
||||
default: unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | NonNullable<import("vue").StyleValue>;
|
||||
};
|
||||
mobile: unknown extends Defaults["mobile"] ? {
|
||||
type: import("vue").PropType<boolean | null>;
|
||||
default: boolean;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<boolean | null>;
|
||||
default: boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["mobile"] ? boolean | null : boolean | Defaults["mobile"] | null>;
|
||||
default: unknown extends Defaults["mobile"] ? boolean | null : Defaults["mobile"] | NonNullable<boolean | null>;
|
||||
};
|
||||
mobileBreakpoint: unknown extends Defaults["mobileBreakpoint"] ? import("vue").PropType<number | import("../../types.js").DisplayBreakpoint> : {
|
||||
type: import("vue").PropType<unknown extends Defaults["mobileBreakpoint"] ? number | import("../../types.js").DisplayBreakpoint : number | Defaults["mobileBreakpoint"] | import("../../types.js").DisplayBreakpoint>;
|
||||
default: unknown extends Defaults["mobileBreakpoint"] ? number | import("../../types.js").DisplayBreakpoint : Defaults["mobileBreakpoint"] | NonNullable<number | import("../../types.js").DisplayBreakpoint>;
|
||||
};
|
||||
elevation: unknown extends Defaults["elevation"] ? {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
} : Omit<{
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["elevation"] ? string | number : string | number | Defaults["elevation"]>;
|
||||
default: unknown extends Defaults["elevation"] ? string | number : Defaults["elevation"] | NonNullable<string | number>;
|
||||
};
|
||||
rounded: unknown extends Defaults["rounded"] ? {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
} : Omit<{
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["rounded"] ? string | number | boolean : string | number | boolean | Defaults["rounded"]>;
|
||||
default: unknown extends Defaults["rounded"] ? string | number | boolean : Defaults["rounded"] | NonNullable<string | number | boolean>;
|
||||
};
|
||||
tile: unknown extends Defaults["tile"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"]>;
|
||||
default: unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"];
|
||||
};
|
||||
tag: unknown extends Defaults["tag"] ? {
|
||||
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : string | Defaults["tag"] | import("../../util/index.js").JSXComponent>;
|
||||
default: unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : Defaults["tag"] | NonNullable<string | import("../../util/index.js").JSXComponent>;
|
||||
};
|
||||
modelValue: unknown extends Defaults["modelValue"] ? {
|
||||
type: null;
|
||||
default: undefined;
|
||||
} : Omit<{
|
||||
type: null;
|
||||
default: undefined;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["modelValue"] ? any : any>;
|
||||
default: unknown extends Defaults["modelValue"] ? any : any;
|
||||
};
|
||||
multiple: unknown extends Defaults["multiple"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["multiple"] ? boolean : boolean | Defaults["multiple"]>;
|
||||
default: unknown extends Defaults["multiple"] ? boolean : boolean | Defaults["multiple"];
|
||||
};
|
||||
mandatory: unknown extends Defaults["mandatory"] ? {
|
||||
type: import("vue").PropType<"force" | boolean>;
|
||||
default: NonNullable<"force" | boolean>;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<"force" | boolean>;
|
||||
default: NonNullable<"force" | boolean>;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["mandatory"] ? "force" | boolean : "force" | boolean | Defaults["mandatory"]>;
|
||||
default: unknown extends Defaults["mandatory"] ? "force" | boolean : Defaults["mandatory"] | NonNullable<"force" | boolean>;
|
||||
};
|
||||
max: unknown extends Defaults["max"] ? NumberConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["max"] ? number : number | Defaults["max"]>;
|
||||
default: unknown extends Defaults["max"] ? number : number | Defaults["max"];
|
||||
};
|
||||
selectedClass: unknown extends Defaults["selectedClass"] ? StringConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["selectedClass"] ? string : string | Defaults["selectedClass"]>;
|
||||
default: unknown extends Defaults["selectedClass"] ? string : string | Defaults["selectedClass"];
|
||||
};
|
||||
disabled: unknown extends Defaults["disabled"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"]>;
|
||||
default: unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"];
|
||||
};
|
||||
eager: unknown extends Defaults["eager"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["eager"] ? boolean : boolean | Defaults["eager"]>;
|
||||
default: unknown extends Defaults["eager"] ? boolean : boolean | Defaults["eager"];
|
||||
};
|
||||
color: unknown extends Defaults["color"] ? StringConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["color"] ? string : string | Defaults["color"]>;
|
||||
default: unknown extends Defaults["color"] ? string : string | Defaults["color"];
|
||||
};
|
||||
expandIcon: unknown extends Defaults["expandIcon"] ? {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["expandIcon"] ? import("../../composables/icons.js").IconValue : Defaults["expandIcon"] | import("../../composables/icons.js").IconValue>;
|
||||
default: unknown extends Defaults["expandIcon"] ? import("../../composables/icons.js").IconValue : Defaults["expandIcon"] | NonNullable<import("../../composables/icons.js").IconValue>;
|
||||
};
|
||||
collapseIcon: unknown extends Defaults["collapseIcon"] ? {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["collapseIcon"] ? import("../../composables/icons.js").IconValue : Defaults["collapseIcon"] | import("../../composables/icons.js").IconValue>;
|
||||
default: unknown extends Defaults["collapseIcon"] ? import("../../composables/icons.js").IconValue : Defaults["collapseIcon"] | NonNullable<import("../../composables/icons.js").IconValue>;
|
||||
};
|
||||
hideActions: unknown extends Defaults["hideActions"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["hideActions"] ? boolean : boolean | Defaults["hideActions"]>;
|
||||
default: unknown extends Defaults["hideActions"] ? boolean : boolean | Defaults["hideActions"];
|
||||
};
|
||||
focusable: unknown extends Defaults["focusable"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["focusable"] ? boolean : boolean | Defaults["focusable"]>;
|
||||
default: unknown extends Defaults["focusable"] ? boolean : boolean | Defaults["focusable"];
|
||||
};
|
||||
ripple: unknown extends Defaults["ripple"] ? {
|
||||
type: import("vue").PropType<boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined>;
|
||||
default: boolean;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined>;
|
||||
default: boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["ripple"] ? boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined : boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | Defaults["ripple"] | undefined>;
|
||||
default: unknown extends Defaults["ripple"] ? boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined : Defaults["ripple"] | NonNullable<boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined>;
|
||||
};
|
||||
readonly: unknown extends Defaults["readonly"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["readonly"] ? boolean : boolean | Defaults["readonly"]>;
|
||||
default: unknown extends Defaults["readonly"] ? boolean : boolean | Defaults["readonly"];
|
||||
};
|
||||
bgColor: unknown extends Defaults["bgColor"] ? StringConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["bgColor"] ? string : string | Defaults["bgColor"]>;
|
||||
default: unknown extends Defaults["bgColor"] ? string : string | Defaults["bgColor"];
|
||||
};
|
||||
flat: unknown extends Defaults["flat"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["flat"] ? boolean : boolean | Defaults["flat"]>;
|
||||
default: unknown extends Defaults["flat"] ? boolean : boolean | Defaults["flat"];
|
||||
};
|
||||
variant: unknown extends Defaults["variant"] ? Omit<{
|
||||
type: import("vue").PropType<"accordion" | "default" | "inset" | "popout">;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<"accordion" | "default" | "inset" | "popout">;
|
||||
default: NonNullable<"accordion" | "default" | "inset" | "popout">;
|
||||
} : Omit<Omit<{
|
||||
type: import("vue").PropType<"accordion" | "default" | "inset" | "popout">;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<"accordion" | "default" | "inset" | "popout">;
|
||||
default: NonNullable<"accordion" | "default" | "inset" | "popout">;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["variant"] ? "accordion" | "default" | "inset" | "popout" : "accordion" | "default" | "inset" | "popout" | Defaults["variant"]>;
|
||||
default: unknown extends Defaults["variant"] ? "accordion" | "default" | "inset" | "popout" : Defaults["variant"] | NonNullable<"accordion" | "default" | "inset" | "popout">;
|
||||
};
|
||||
altLabels: unknown extends Defaults["altLabels"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["altLabels"] ? boolean : boolean | Defaults["altLabels"]>;
|
||||
default: unknown extends Defaults["altLabels"] ? boolean : boolean | Defaults["altLabels"];
|
||||
};
|
||||
completeIcon: unknown extends Defaults["completeIcon"] ? import("vue").PropType<import("../../composables/icons.js").IconValue> : {
|
||||
type: import("vue").PropType<unknown extends Defaults["completeIcon"] ? import("../../composables/icons.js").IconValue : Defaults["completeIcon"] | import("../../composables/icons.js").IconValue>;
|
||||
default: unknown extends Defaults["completeIcon"] ? import("../../composables/icons.js").IconValue : Defaults["completeIcon"] | NonNullable<import("../../composables/icons.js").IconValue>;
|
||||
};
|
||||
editIcon: unknown extends Defaults["editIcon"] ? import("vue").PropType<import("../../composables/icons.js").IconValue> : {
|
||||
type: import("vue").PropType<unknown extends Defaults["editIcon"] ? import("../../composables/icons.js").IconValue : Defaults["editIcon"] | import("../../composables/icons.js").IconValue>;
|
||||
default: unknown extends Defaults["editIcon"] ? import("../../composables/icons.js").IconValue : Defaults["editIcon"] | NonNullable<import("../../composables/icons.js").IconValue>;
|
||||
};
|
||||
editable: unknown extends Defaults["editable"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["editable"] ? boolean : boolean | Defaults["editable"]>;
|
||||
default: unknown extends Defaults["editable"] ? boolean : boolean | Defaults["editable"];
|
||||
};
|
||||
errorIcon: unknown extends Defaults["errorIcon"] ? import("vue").PropType<import("../../composables/icons.js").IconValue> : {
|
||||
type: import("vue").PropType<unknown extends Defaults["errorIcon"] ? import("../../composables/icons.js").IconValue : Defaults["errorIcon"] | import("../../composables/icons.js").IconValue>;
|
||||
default: unknown extends Defaults["errorIcon"] ? import("../../composables/icons.js").IconValue : Defaults["errorIcon"] | NonNullable<import("../../composables/icons.js").IconValue>;
|
||||
};
|
||||
items: unknown extends Defaults["items"] ? {
|
||||
type: import("vue").PropType<readonly import("../../components/VStepper/VStepperItem.js").StepperItem[]>;
|
||||
default: () => never[];
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<readonly import("../../components/VStepper/VStepperItem.js").StepperItem[]>;
|
||||
default: () => never[];
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["items"] ? readonly import("../../components/VStepper/VStepperItem.js").StepperItem[] : readonly import("../../components/VStepper/VStepperItem.js").StepperItem[] | Defaults["items"]>;
|
||||
default: unknown extends Defaults["items"] ? readonly import("../../components/VStepper/VStepperItem.js").StepperItem[] : readonly import("../../components/VStepper/VStepperItem.js").StepperItem[] | Defaults["items"];
|
||||
};
|
||||
itemTitle: unknown extends Defaults["itemTitle"] ? {
|
||||
type: import("vue").PropType<import("../../util/index.js").SelectItemKey>;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<import("../../util/index.js").SelectItemKey>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["itemTitle"] ? import("../../util/index.js").SelectItemKey : Defaults["itemTitle"] | import("../../util/index.js").SelectItemKey>;
|
||||
default: unknown extends Defaults["itemTitle"] ? import("../../util/index.js").SelectItemKey : Defaults["itemTitle"] | NonNullable<import("../../util/index.js").SelectItemKey>;
|
||||
};
|
||||
itemValue: unknown extends Defaults["itemValue"] ? {
|
||||
type: import("vue").PropType<import("../../util/index.js").SelectItemKey>;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<import("../../util/index.js").SelectItemKey>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["itemValue"] ? import("../../util/index.js").SelectItemKey : Defaults["itemValue"] | import("../../util/index.js").SelectItemKey>;
|
||||
default: unknown extends Defaults["itemValue"] ? import("../../util/index.js").SelectItemKey : Defaults["itemValue"] | NonNullable<import("../../util/index.js").SelectItemKey>;
|
||||
};
|
||||
itemProps: unknown extends Defaults["itemProps"] ? {
|
||||
type: import("vue").PropType<import("../../util/index.js").SelectItemKey>;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<import("../../util/index.js").SelectItemKey>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["itemProps"] ? import("../../util/index.js").SelectItemKey : Defaults["itemProps"] | import("../../util/index.js").SelectItemKey>;
|
||||
default: unknown extends Defaults["itemProps"] ? import("../../util/index.js").SelectItemKey : Defaults["itemProps"] | NonNullable<import("../../util/index.js").SelectItemKey>;
|
||||
};
|
||||
nonLinear: unknown extends Defaults["nonLinear"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["nonLinear"] ? boolean : boolean | Defaults["nonLinear"]>;
|
||||
default: unknown extends Defaults["nonLinear"] ? boolean : boolean | Defaults["nonLinear"];
|
||||
};
|
||||
prevText: unknown extends Defaults["prevText"] ? {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["prevText"] ? string : string | Defaults["prevText"]>;
|
||||
default: unknown extends Defaults["prevText"] ? string : string | Defaults["prevText"];
|
||||
};
|
||||
nextText: unknown extends Defaults["nextText"] ? {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["nextText"] ? string : string | Defaults["nextText"]>;
|
||||
default: unknown extends Defaults["nextText"] ? string : string | Defaults["nextText"];
|
||||
};
|
||||
};
|
||||
export declare const VStepperVertical: {
|
||||
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
mobile: boolean | null;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
multiple: boolean;
|
||||
mandatory: "force" | boolean;
|
||||
disabled: boolean;
|
||||
eager: boolean;
|
||||
expandIcon: import("../../composables/icons.js").IconValue;
|
||||
collapseIcon: import("../../composables/icons.js").IconValue;
|
||||
hideActions: boolean;
|
||||
focusable: boolean;
|
||||
ripple: boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
};
|
||||
readonly: boolean;
|
||||
flat: boolean;
|
||||
variant: "accordion" | "default" | "inset" | "popout";
|
||||
altLabels: boolean;
|
||||
editable: boolean;
|
||||
items: readonly import("../../components/VStepper/VStepperItem.js").StepperItem[];
|
||||
itemTitle: string | boolean | readonly (string | number)[] | ((item: Record<string, any>, fallback?: any) => any) | null;
|
||||
itemValue: string | boolean | readonly (string | number)[] | ((item: Record<string, any>, fallback?: any) => any) | null;
|
||||
itemProps: string | boolean | readonly (string | number)[] | ((item: Record<string, any>, fallback?: any) => any) | null;
|
||||
nonLinear: boolean;
|
||||
prevText: string;
|
||||
nextText: string;
|
||||
} & {
|
||||
theme?: string | undefined;
|
||||
class?: any;
|
||||
mobileBreakpoint?: number | import("../../types.js").DisplayBreakpoint | undefined;
|
||||
elevation?: string | number | undefined;
|
||||
rounded?: string | number | boolean | undefined;
|
||||
max?: number | undefined;
|
||||
selectedClass?: string | undefined;
|
||||
color?: string | undefined;
|
||||
bgColor?: string | undefined;
|
||||
completeIcon?: import("../../composables/icons.js").IconValue | undefined;
|
||||
editIcon?: import("../../composables/icons.js").IconValue | undefined;
|
||||
errorIcon?: import("../../composables/icons.js").IconValue | undefined;
|
||||
} & {}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Omit<{
|
||||
"update:modelValue": (val: any) => true;
|
||||
}, "$children" | "modelValue" | "update:modelValue" | "v-slot:actions" | "v-slot:default" | "v-slot:icon" | "v-slot:next" | "v-slot:prev" | "v-slot:subtitle" | "v-slot:title" | "v-slots" | `v-slot:header-item.${string}` | `v-slot:item.${string}`>, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
|
||||
style: import("vue").StyleValue;
|
||||
mobile: boolean | null;
|
||||
rounded: string | number | boolean;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
multiple: boolean;
|
||||
mandatory: "force" | boolean;
|
||||
disabled: boolean;
|
||||
eager: boolean;
|
||||
expandIcon: import("../../composables/icons.js").IconValue;
|
||||
collapseIcon: import("../../composables/icons.js").IconValue;
|
||||
hideActions: boolean;
|
||||
focusable: boolean;
|
||||
ripple: boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined;
|
||||
readonly: boolean;
|
||||
flat: boolean;
|
||||
variant: "accordion" | "default" | "inset" | "popout";
|
||||
altLabels: boolean;
|
||||
editable: boolean;
|
||||
items: readonly import("../../components/VStepper/VStepperItem.js").StepperItem[];
|
||||
itemTitle: import("../../util/index.js").SelectItemKey;
|
||||
itemValue: import("../../util/index.js").SelectItemKey;
|
||||
itemProps: import("../../util/index.js").SelectItemKey;
|
||||
nonLinear: boolean;
|
||||
prevText: string;
|
||||
nextText: string;
|
||||
}, true, {}, import("vue").SlotsType<Partial<{
|
||||
[x: `header-item.${string}`]: (arg: StepperItemSlot<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
[x: `item.${string}`]: (arg: StepperItemSlot<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
actions: (arg: StepperVerticalItemActionSlot<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
default: (arg: VStepperSlot & {
|
||||
step: unknown;
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
icon: (arg: StepperItemSlot<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
title: (arg: StepperItemSlot<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
subtitle: (arg: StepperItemSlot<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
prev: (arg: StepperVerticalItemActionSlot<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
next: (arg: StepperVerticalItemActionSlot<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
||||
P: {};
|
||||
B: {};
|
||||
D: {};
|
||||
C: {};
|
||||
M: {};
|
||||
Defaults: {};
|
||||
}, {
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
mobile: boolean | null;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
multiple: boolean;
|
||||
mandatory: "force" | boolean;
|
||||
disabled: boolean;
|
||||
eager: boolean;
|
||||
expandIcon: import("../../composables/icons.js").IconValue;
|
||||
collapseIcon: import("../../composables/icons.js").IconValue;
|
||||
hideActions: boolean;
|
||||
focusable: boolean;
|
||||
ripple: boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
};
|
||||
readonly: boolean;
|
||||
flat: boolean;
|
||||
variant: "accordion" | "default" | "inset" | "popout";
|
||||
altLabels: boolean;
|
||||
editable: boolean;
|
||||
items: readonly import("../../components/VStepper/VStepperItem.js").StepperItem[];
|
||||
itemTitle: string | boolean | readonly (string | number)[] | ((item: Record<string, any>, fallback?: any) => any) | null;
|
||||
itemValue: string | boolean | readonly (string | number)[] | ((item: Record<string, any>, fallback?: any) => any) | null;
|
||||
itemProps: string | boolean | readonly (string | number)[] | ((item: Record<string, any>, fallback?: any) => any) | null;
|
||||
nonLinear: boolean;
|
||||
prevText: string;
|
||||
nextText: string;
|
||||
} & {
|
||||
theme?: string | undefined;
|
||||
class?: any;
|
||||
mobileBreakpoint?: number | import("../../types.js").DisplayBreakpoint | undefined;
|
||||
elevation?: string | number | undefined;
|
||||
rounded?: string | number | boolean | undefined;
|
||||
max?: number | undefined;
|
||||
selectedClass?: string | undefined;
|
||||
color?: string | undefined;
|
||||
bgColor?: string | undefined;
|
||||
completeIcon?: import("../../composables/icons.js").IconValue | undefined;
|
||||
editIcon?: import("../../composables/icons.js").IconValue | undefined;
|
||||
errorIcon?: import("../../composables/icons.js").IconValue | undefined;
|
||||
} & {}, {}, {}, {}, {}, {
|
||||
style: import("vue").StyleValue;
|
||||
mobile: boolean | null;
|
||||
rounded: string | number | boolean;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
multiple: boolean;
|
||||
mandatory: "force" | boolean;
|
||||
disabled: boolean;
|
||||
eager: boolean;
|
||||
expandIcon: import("../../composables/icons.js").IconValue;
|
||||
collapseIcon: import("../../composables/icons.js").IconValue;
|
||||
hideActions: boolean;
|
||||
focusable: boolean;
|
||||
ripple: boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined;
|
||||
readonly: boolean;
|
||||
flat: boolean;
|
||||
variant: "accordion" | "default" | "inset" | "popout";
|
||||
altLabels: boolean;
|
||||
editable: boolean;
|
||||
items: readonly import("../../components/VStepper/VStepperItem.js").StepperItem[];
|
||||
itemTitle: import("../../util/index.js").SelectItemKey;
|
||||
itemValue: import("../../util/index.js").SelectItemKey;
|
||||
itemProps: import("../../util/index.js").SelectItemKey;
|
||||
nonLinear: boolean;
|
||||
prevText: string;
|
||||
nextText: string;
|
||||
}>;
|
||||
__isFragment?: undefined;
|
||||
__isTeleport?: undefined;
|
||||
__isSuspense?: undefined;
|
||||
} & import("vue").ComponentOptionsBase<{
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
mobile: boolean | null;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
multiple: boolean;
|
||||
mandatory: "force" | boolean;
|
||||
disabled: boolean;
|
||||
eager: boolean;
|
||||
expandIcon: import("../../composables/icons.js").IconValue;
|
||||
collapseIcon: import("../../composables/icons.js").IconValue;
|
||||
hideActions: boolean;
|
||||
focusable: boolean;
|
||||
ripple: boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
};
|
||||
readonly: boolean;
|
||||
flat: boolean;
|
||||
variant: "accordion" | "default" | "inset" | "popout";
|
||||
altLabels: boolean;
|
||||
editable: boolean;
|
||||
items: readonly import("../../components/VStepper/VStepperItem.js").StepperItem[];
|
||||
itemTitle: string | boolean | readonly (string | number)[] | ((item: Record<string, any>, fallback?: any) => any) | null;
|
||||
itemValue: string | boolean | readonly (string | number)[] | ((item: Record<string, any>, fallback?: any) => any) | null;
|
||||
itemProps: string | boolean | readonly (string | number)[] | ((item: Record<string, any>, fallback?: any) => any) | null;
|
||||
nonLinear: boolean;
|
||||
prevText: string;
|
||||
nextText: string;
|
||||
} & {
|
||||
theme?: string | undefined;
|
||||
class?: any;
|
||||
mobileBreakpoint?: number | import("../../types.js").DisplayBreakpoint | undefined;
|
||||
elevation?: string | number | undefined;
|
||||
rounded?: string | number | boolean | undefined;
|
||||
max?: number | undefined;
|
||||
selectedClass?: string | undefined;
|
||||
color?: string | undefined;
|
||||
bgColor?: string | undefined;
|
||||
completeIcon?: import("../../composables/icons.js").IconValue | undefined;
|
||||
editIcon?: import("../../composables/icons.js").IconValue | undefined;
|
||||
errorIcon?: import("../../composables/icons.js").IconValue | undefined;
|
||||
} & {}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Omit<{
|
||||
"update:modelValue": (val: any) => true;
|
||||
}, "$children" | "modelValue" | "update:modelValue" | "v-slot:actions" | "v-slot:default" | "v-slot:icon" | "v-slot:next" | "v-slot:prev" | "v-slot:subtitle" | "v-slot:title" | "v-slots" | `v-slot:header-item.${string}` | `v-slot:item.${string}`>, string, {
|
||||
style: import("vue").StyleValue;
|
||||
mobile: boolean | null;
|
||||
rounded: string | number | boolean;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
multiple: boolean;
|
||||
mandatory: "force" | boolean;
|
||||
disabled: boolean;
|
||||
eager: boolean;
|
||||
expandIcon: import("../../composables/icons.js").IconValue;
|
||||
collapseIcon: import("../../composables/icons.js").IconValue;
|
||||
hideActions: boolean;
|
||||
focusable: boolean;
|
||||
ripple: boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined;
|
||||
readonly: boolean;
|
||||
flat: boolean;
|
||||
variant: "accordion" | "default" | "inset" | "popout";
|
||||
altLabels: boolean;
|
||||
editable: boolean;
|
||||
items: readonly import("../../components/VStepper/VStepperItem.js").StepperItem[];
|
||||
itemTitle: import("../../util/index.js").SelectItemKey;
|
||||
itemValue: import("../../util/index.js").SelectItemKey;
|
||||
itemProps: import("../../util/index.js").SelectItemKey;
|
||||
nonLinear: boolean;
|
||||
prevText: string;
|
||||
nextText: string;
|
||||
}, {}, string, import("vue").SlotsType<Partial<{
|
||||
[x: `header-item.${string}`]: (arg: StepperItemSlot<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
[x: `item.${string}`]: (arg: StepperItemSlot<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
actions: (arg: StepperVerticalItemActionSlot<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
default: (arg: VStepperSlot & {
|
||||
step: unknown;
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
icon: (arg: StepperItemSlot<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
title: (arg: StepperItemSlot<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
subtitle: (arg: StepperItemSlot<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
prev: (arg: StepperVerticalItemActionSlot<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
next: (arg: StepperVerticalItemActionSlot<unknown>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new <T = number>(props: {
|
||||
modelValue?: T | undefined;
|
||||
"onUpdate:modelValue"?: ((value: T) => void) | undefined;
|
||||
}, slots: VStepperVerticalSlots<T>) => GenericProps<{
|
||||
modelValue?: T | undefined;
|
||||
"onUpdate:modelValue"?: ((value: T) => void) | undefined;
|
||||
}, VStepperVerticalSlots<T>>) & import("../../util/index.js").FilterPropsOptions<{
|
||||
theme: StringConstructor;
|
||||
class: import("vue").PropType<any>;
|
||||
style: {
|
||||
type: import("vue").PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
};
|
||||
mobile: {
|
||||
type: import("vue").PropType<boolean | null>;
|
||||
default: boolean;
|
||||
};
|
||||
mobileBreakpoint: import("vue").PropType<number | import("../../types.js").DisplayBreakpoint>;
|
||||
elevation: {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
};
|
||||
rounded: {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
};
|
||||
tile: BooleanConstructor;
|
||||
tag: {
|
||||
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
};
|
||||
modelValue: {
|
||||
type: null;
|
||||
default: undefined;
|
||||
};
|
||||
multiple: BooleanConstructor;
|
||||
mandatory: {
|
||||
type: import("vue").PropType<"force" | boolean>;
|
||||
default: NonNullable<"force" | boolean>;
|
||||
};
|
||||
max: NumberConstructor;
|
||||
selectedClass: StringConstructor;
|
||||
disabled: BooleanConstructor;
|
||||
eager: BooleanConstructor;
|
||||
color: StringConstructor;
|
||||
expandIcon: {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
};
|
||||
collapseIcon: {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
};
|
||||
hideActions: BooleanConstructor;
|
||||
focusable: BooleanConstructor;
|
||||
ripple: {
|
||||
type: import("vue").PropType<boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined>;
|
||||
default: boolean;
|
||||
};
|
||||
readonly: BooleanConstructor;
|
||||
bgColor: StringConstructor;
|
||||
flat: BooleanConstructor;
|
||||
variant: Omit<{
|
||||
type: import("vue").PropType<"accordion" | "default" | "inset" | "popout">;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<"accordion" | "default" | "inset" | "popout">;
|
||||
default: NonNullable<"accordion" | "default" | "inset" | "popout">;
|
||||
};
|
||||
altLabels: BooleanConstructor;
|
||||
completeIcon: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
editIcon: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
editable: BooleanConstructor;
|
||||
errorIcon: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
items: {
|
||||
type: import("vue").PropType<readonly import("../../components/VStepper/VStepperItem.js").StepperItem[]>;
|
||||
default: () => never[];
|
||||
};
|
||||
itemTitle: {
|
||||
type: import("vue").PropType<import("../../util/index.js").SelectItemKey>;
|
||||
default: string;
|
||||
};
|
||||
itemValue: {
|
||||
type: import("vue").PropType<import("../../util/index.js").SelectItemKey>;
|
||||
default: string;
|
||||
};
|
||||
itemProps: {
|
||||
type: import("vue").PropType<import("../../util/index.js").SelectItemKey>;
|
||||
default: string;
|
||||
};
|
||||
nonLinear: BooleanConstructor;
|
||||
prevText: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
nextText: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
}, import("vue").ExtractPropTypes<{
|
||||
theme: StringConstructor;
|
||||
class: import("vue").PropType<any>;
|
||||
style: {
|
||||
type: import("vue").PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
};
|
||||
mobile: {
|
||||
type: import("vue").PropType<boolean | null>;
|
||||
default: boolean;
|
||||
};
|
||||
mobileBreakpoint: import("vue").PropType<number | import("../../types.js").DisplayBreakpoint>;
|
||||
elevation: {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
};
|
||||
rounded: {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
};
|
||||
tile: BooleanConstructor;
|
||||
tag: {
|
||||
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
};
|
||||
modelValue: {
|
||||
type: null;
|
||||
default: undefined;
|
||||
};
|
||||
multiple: BooleanConstructor;
|
||||
mandatory: {
|
||||
type: import("vue").PropType<"force" | boolean>;
|
||||
default: NonNullable<"force" | boolean>;
|
||||
};
|
||||
max: NumberConstructor;
|
||||
selectedClass: StringConstructor;
|
||||
disabled: BooleanConstructor;
|
||||
eager: BooleanConstructor;
|
||||
color: StringConstructor;
|
||||
expandIcon: {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
};
|
||||
collapseIcon: {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
};
|
||||
hideActions: BooleanConstructor;
|
||||
focusable: BooleanConstructor;
|
||||
ripple: {
|
||||
type: import("vue").PropType<boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined>;
|
||||
default: boolean;
|
||||
};
|
||||
readonly: BooleanConstructor;
|
||||
bgColor: StringConstructor;
|
||||
flat: BooleanConstructor;
|
||||
variant: Omit<{
|
||||
type: import("vue").PropType<"accordion" | "default" | "inset" | "popout">;
|
||||
default: string;
|
||||
validator: (v: any) => boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<"accordion" | "default" | "inset" | "popout">;
|
||||
default: NonNullable<"accordion" | "default" | "inset" | "popout">;
|
||||
};
|
||||
altLabels: BooleanConstructor;
|
||||
completeIcon: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
editIcon: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
editable: BooleanConstructor;
|
||||
errorIcon: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
items: {
|
||||
type: import("vue").PropType<readonly import("../../components/VStepper/VStepperItem.js").StepperItem[]>;
|
||||
default: () => never[];
|
||||
};
|
||||
itemTitle: {
|
||||
type: import("vue").PropType<import("../../util/index.js").SelectItemKey>;
|
||||
default: string;
|
||||
};
|
||||
itemValue: {
|
||||
type: import("vue").PropType<import("../../util/index.js").SelectItemKey>;
|
||||
default: string;
|
||||
};
|
||||
itemProps: {
|
||||
type: import("vue").PropType<import("../../util/index.js").SelectItemKey>;
|
||||
default: string;
|
||||
};
|
||||
nonLinear: BooleanConstructor;
|
||||
prevText: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
nextText: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
}>>;
|
||||
export type VStepperVertical = InstanceType<typeof VStepperVertical>;
|
||||
Generated
Vendored
+115
@@ -0,0 +1,115 @@
|
||||
import { Fragment as _Fragment, createVNode as _createVNode, createElementVNode as _createElementVNode, mergeProps as _mergeProps } from "vue";
|
||||
// Components
|
||||
import { VStepperVerticalItem } from "./VStepperVerticalItem.js";
|
||||
import { makeVExpansionPanelsProps, VExpansionPanels } from "../../components/VExpansionPanel/VExpansionPanels.js";
|
||||
import { makeStepperProps } from "../../components/VStepper/VStepper.js"; // Composables
|
||||
import { provideDefaults } from "../../composables/defaults.js";
|
||||
import { useProxiedModel } from "../../composables/proxiedModel.js"; // Utilities
|
||||
import { computed, ref, toRefs } from 'vue';
|
||||
import { genericComponent, getPropertyFromItem, omit, propsFactory, useRender } from "../../util/index.js"; // Types
|
||||
export const makeVStepperVerticalProps = propsFactory({
|
||||
prevText: {
|
||||
type: String,
|
||||
default: '$vuetify.stepper.prev'
|
||||
},
|
||||
nextText: {
|
||||
type: String,
|
||||
default: '$vuetify.stepper.next'
|
||||
},
|
||||
...makeStepperProps(),
|
||||
...omit(makeVExpansionPanelsProps({
|
||||
mandatory: 'force',
|
||||
variant: 'accordion'
|
||||
}), ['static'])
|
||||
}, 'VStepperVertical');
|
||||
export const VStepperVertical = genericComponent()({
|
||||
name: 'VStepperVertical',
|
||||
props: makeVStepperVerticalProps(),
|
||||
emits: {
|
||||
'update:modelValue': val => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
slots
|
||||
} = _ref;
|
||||
const vExpansionPanelsRef = ref();
|
||||
const {
|
||||
color,
|
||||
eager,
|
||||
editable,
|
||||
prevText,
|
||||
nextText,
|
||||
hideActions
|
||||
} = toRefs(props);
|
||||
const model = useProxiedModel(props, 'modelValue');
|
||||
const items = computed(() => props.items.map((item, index) => {
|
||||
const title = getPropertyFromItem(item, props.itemTitle, item);
|
||||
const value = getPropertyFromItem(item, props.itemValue, index + 1);
|
||||
const itemProps = props.itemProps === true ? item : getPropertyFromItem(item, props.itemProps);
|
||||
const _props = {
|
||||
title,
|
||||
value,
|
||||
...itemProps
|
||||
};
|
||||
return {
|
||||
title: _props.title,
|
||||
value: _props.value,
|
||||
props: _props,
|
||||
raw: item
|
||||
};
|
||||
}));
|
||||
provideDefaults({
|
||||
VStepperVerticalItem: {
|
||||
color,
|
||||
eager,
|
||||
editable,
|
||||
hideActions,
|
||||
static: true
|
||||
},
|
||||
VStepperVerticalActions: {
|
||||
color,
|
||||
nextText,
|
||||
prevText
|
||||
}
|
||||
});
|
||||
useRender(() => {
|
||||
const expansionPanelProps = VExpansionPanels.filterProps(props);
|
||||
return _createVNode(VExpansionPanels, _mergeProps(expansionPanelProps, {
|
||||
"modelValue": model.value,
|
||||
"onUpdate:modelValue": $event => model.value = $event,
|
||||
"ref": vExpansionPanelsRef,
|
||||
"class": ['v-stepper', {
|
||||
'v-stepper--alt-labels': props.altLabels,
|
||||
'v-stepper--flat': props.flat,
|
||||
'v-stepper--non-linear': props.nonLinear,
|
||||
'v-stepper--mobile': props.mobile
|
||||
}, props.class],
|
||||
"style": props.style
|
||||
}), {
|
||||
...slots,
|
||||
default: _ref2 => {
|
||||
let {
|
||||
prev,
|
||||
next
|
||||
} = _ref2;
|
||||
return _createElementVNode(_Fragment, null, [items.value.map(_ref3 => {
|
||||
let {
|
||||
raw,
|
||||
...item
|
||||
} = _ref3;
|
||||
return _createVNode(VStepperVerticalItem, item.props, {
|
||||
...slots,
|
||||
default: slots[`item.${item.value}`]
|
||||
});
|
||||
}), slots.default?.({
|
||||
prev,
|
||||
next,
|
||||
step: model.value
|
||||
})]);
|
||||
}
|
||||
});
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=VStepperVertical.js.map
|
||||
Generated
Vendored
+1
File diff suppressed because one or more lines are too long
Generated
Vendored
+272
@@ -0,0 +1,272 @@
|
||||
export declare const makeVStepperVerticalActionsProps: <Defaults extends {
|
||||
color?: unknown;
|
||||
disabled?: unknown;
|
||||
prevText?: unknown;
|
||||
nextText?: unknown;
|
||||
} = {}>(defaults?: Defaults | undefined) => {
|
||||
color: unknown extends Defaults["color"] ? StringConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["color"] ? string : string | Defaults["color"]>;
|
||||
default: unknown extends Defaults["color"] ? string : string | Defaults["color"];
|
||||
};
|
||||
disabled: unknown extends Defaults["disabled"] ? {
|
||||
type: import("vue").PropType<"next" | "prev" | boolean>;
|
||||
default: boolean;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<"next" | "prev" | boolean>;
|
||||
default: boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["disabled"] ? "next" | "prev" | boolean : "next" | "prev" | boolean | Defaults["disabled"]>;
|
||||
default: unknown extends Defaults["disabled"] ? "next" | "prev" | boolean : Defaults["disabled"] | NonNullable<"next" | "prev" | boolean>;
|
||||
};
|
||||
prevText: unknown extends Defaults["prevText"] ? {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["prevText"] ? string : string | Defaults["prevText"]>;
|
||||
default: unknown extends Defaults["prevText"] ? string : string | Defaults["prevText"];
|
||||
};
|
||||
nextText: unknown extends Defaults["nextText"] ? {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["nextText"] ? string : string | Defaults["nextText"]>;
|
||||
default: unknown extends Defaults["nextText"] ? string : string | Defaults["nextText"];
|
||||
};
|
||||
};
|
||||
export declare const VStepperVerticalActions: {
|
||||
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
|
||||
disabled: "next" | "prev" | boolean;
|
||||
prevText: string;
|
||||
nextText: string;
|
||||
} & {
|
||||
color?: string | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
prev?: ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
next?: ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | {} | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
prev?: false | ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
next?: false | ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:next"?: false | ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:prev"?: false | ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} & {
|
||||
"onClick:next"?: (() => any) | undefined;
|
||||
"onClick:prev"?: (() => any) | undefined;
|
||||
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
||||
"click:prev": () => true;
|
||||
"click:next": () => true;
|
||||
}, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
|
||||
disabled: "next" | "prev" | boolean;
|
||||
prevText: string;
|
||||
nextText: string;
|
||||
}, true, {}, import("vue").SlotsType<Partial<{
|
||||
prev: (arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
next: (arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
||||
P: {};
|
||||
B: {};
|
||||
D: {};
|
||||
C: {};
|
||||
M: {};
|
||||
Defaults: {};
|
||||
}, {
|
||||
disabled: "next" | "prev" | boolean;
|
||||
prevText: string;
|
||||
nextText: string;
|
||||
} & {
|
||||
color?: string | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
prev?: ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
next?: ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | {} | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
prev?: false | ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
next?: false | ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:next"?: false | ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:prev"?: false | ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} & {
|
||||
"onClick:next"?: (() => any) | undefined;
|
||||
"onClick:prev"?: (() => any) | undefined;
|
||||
}, {}, {}, {}, {}, {
|
||||
disabled: "next" | "prev" | boolean;
|
||||
prevText: string;
|
||||
nextText: string;
|
||||
}>;
|
||||
__isFragment?: undefined;
|
||||
__isTeleport?: undefined;
|
||||
__isSuspense?: undefined;
|
||||
} & import("vue").ComponentOptionsBase<{
|
||||
disabled: "next" | "prev" | boolean;
|
||||
prevText: string;
|
||||
nextText: string;
|
||||
} & {
|
||||
color?: string | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
prev?: ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
next?: ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | {} | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
prev?: false | ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
next?: false | ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:next"?: false | ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:prev"?: false | ((arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNodeChild) | undefined;
|
||||
} & {
|
||||
"onClick:next"?: (() => any) | undefined;
|
||||
"onClick:prev"?: (() => any) | undefined;
|
||||
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
||||
"click:prev": () => true;
|
||||
"click:next": () => true;
|
||||
}, string, {
|
||||
disabled: "next" | "prev" | boolean;
|
||||
prevText: string;
|
||||
nextText: string;
|
||||
}, {}, string, import("vue").SlotsType<Partial<{
|
||||
prev: (arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
next: (arg: {
|
||||
props: {
|
||||
onClick: () => void;
|
||||
};
|
||||
}) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
|
||||
color: StringConstructor;
|
||||
disabled: {
|
||||
type: import("vue").PropType<"next" | "prev" | boolean>;
|
||||
default: boolean;
|
||||
};
|
||||
prevText: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
nextText: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
}, import("vue").ExtractPropTypes<{
|
||||
color: StringConstructor;
|
||||
disabled: {
|
||||
type: import("vue").PropType<"next" | "prev" | boolean>;
|
||||
default: boolean;
|
||||
};
|
||||
prevText: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
nextText: {
|
||||
type: StringConstructor;
|
||||
default: string;
|
||||
};
|
||||
}>>;
|
||||
export type VStepperVerticalActions = InstanceType<typeof VStepperVerticalActions>;
|
||||
Generated
Vendored
+38
@@ -0,0 +1,38 @@
|
||||
import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
|
||||
// Components
|
||||
import { makeVStepperActionsProps, VStepperActions } from "../../components/VStepper/VStepperActions.js"; // Utilities
|
||||
import { genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
|
||||
export const makeVStepperVerticalActionsProps = propsFactory({
|
||||
...makeVStepperActionsProps()
|
||||
}, 'VStepperActions');
|
||||
export const VStepperVerticalActions = genericComponent()({
|
||||
name: 'VStepperVerticalActions',
|
||||
props: makeVStepperVerticalActionsProps(),
|
||||
emits: {
|
||||
'click:prev': () => true,
|
||||
'click:next': () => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
emit,
|
||||
slots
|
||||
} = _ref;
|
||||
function onClickPrev() {
|
||||
emit('click:prev');
|
||||
}
|
||||
function onClickNext() {
|
||||
emit('click:next');
|
||||
}
|
||||
useRender(() => {
|
||||
const stepperActionsProps = VStepperActions.filterProps(props);
|
||||
return _createVNode(VStepperActions, _mergeProps({
|
||||
"class": "v-stepper-vertical-actions"
|
||||
}, stepperActionsProps, {
|
||||
"onClick:prev": onClickPrev,
|
||||
"onClick:next": onClickNext
|
||||
}), slots);
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=VStepperVerticalActions.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"VStepperVerticalActions.js","names":["makeVStepperActionsProps","VStepperActions","genericComponent","propsFactory","useRender","makeVStepperVerticalActionsProps","VStepperVerticalActions","name","props","emits","click:prev","click:next","setup","_ref","emit","slots","onClickPrev","onClickNext","stepperActionsProps","filterProps","_createVNode","_mergeProps"],"sources":["../../../src/labs/VStepperVertical/VStepperVerticalActions.tsx"],"sourcesContent":["// Components\nimport { makeVStepperActionsProps, VStepperActions } from '@/components/VStepper/VStepperActions'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VStepperActionsSlots } from '@/components/VStepper/VStepperActions'\n\nexport const makeVStepperVerticalActionsProps = propsFactory({\n ...makeVStepperActionsProps(),\n}, 'VStepperActions')\n\nexport const VStepperVerticalActions = genericComponent<VStepperActionsSlots>()({\n name: 'VStepperVerticalActions',\n\n props: makeVStepperVerticalActionsProps(),\n\n emits: {\n 'click:prev': () => true,\n 'click:next': () => true,\n },\n\n setup (props, { emit, slots }) {\n function onClickPrev () {\n emit('click:prev')\n }\n\n function onClickNext () {\n emit('click:next')\n }\n\n useRender(() => {\n const stepperActionsProps = VStepperActions.filterProps(props)\n\n return (\n <VStepperActions\n class=\"v-stepper-vertical-actions\"\n { ...stepperActionsProps }\n onClick:prev={ onClickPrev }\n onClick:next={ onClickNext }\n v-slots={ slots }\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VStepperVerticalActions = InstanceType<typeof VStepperVerticalActions>\n"],"mappings":";AAAA;AAAA,SACSA,wBAAwB,EAAEC,eAAe,wDAElD;AAAA,SACSC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,+BAElD;AAGA,OAAO,MAAMC,gCAAgC,GAAGF,YAAY,CAAC;EAC3D,GAAGH,wBAAwB,CAAC;AAC9B,CAAC,EAAE,iBAAiB,CAAC;AAErB,OAAO,MAAMM,uBAAuB,GAAGJ,gBAAgB,CAAuB,CAAC,CAAC;EAC9EK,IAAI,EAAE,yBAAyB;EAE/BC,KAAK,EAAEH,gCAAgC,CAAC,CAAC;EAEzCI,KAAK,EAAE;IACL,YAAY,EAAEC,CAAA,KAAM,IAAI;IACxB,YAAY,EAAEC,CAAA,KAAM;EACtB,CAAC;EAEDC,KAAKA,CAAEJ,KAAK,EAAAK,IAAA,EAAmB;IAAA,IAAjB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC3B,SAASG,WAAWA,CAAA,EAAI;MACtBF,IAAI,CAAC,YAAY,CAAC;IACpB;IAEA,SAASG,WAAWA,CAAA,EAAI;MACtBH,IAAI,CAAC,YAAY,CAAC;IACpB;IAEAV,SAAS,CAAC,MAAM;MACd,MAAMc,mBAAmB,GAAGjB,eAAe,CAACkB,WAAW,CAACX,KAAK,CAAC;MAE9D,OAAAY,YAAA,CAAAnB,eAAA,EAAAoB,WAAA;QAAA;MAAA,GAGSH,mBAAmB;QAAA,gBACTF,WAAW;QAAA,gBACXC;MAAW,IAChBF,KAAK;IAGrB,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}
|
||||
ServerManagerWebApp/frontend/node_modules/vuetify/lib/labs/VStepperVertical/VStepperVerticalItem.css
Generated
Vendored
+73
@@ -0,0 +1,73 @@
|
||||
.v-stepper-vertical-item {
|
||||
position: relative;
|
||||
transition-duration: 0.2s;
|
||||
transition-property: opacity;
|
||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||
}
|
||||
.v-stepper-vertical-item--error {
|
||||
color: rgb(var(--v-theme-error));
|
||||
}
|
||||
.v-stepper-vertical-item__title {
|
||||
font-size: 1rem;
|
||||
}
|
||||
.v-stepper-vertical-item__subtitle {
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
.v-stepper-vertical-item .v-expansion-panel-text {
|
||||
padding-inline-start: 32px;
|
||||
}
|
||||
.v-stepper-vertical-item:not(:last-child):before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: 2px;
|
||||
height: calc(100% - 30px);
|
||||
background: rgba(var(--v-border-color), var(--v-border-opacity));
|
||||
left: 35px;
|
||||
top: 44px;
|
||||
z-index: 1;
|
||||
transition-duration: 300ms;
|
||||
transition-property: height;
|
||||
}
|
||||
.v-stepper-vertical-item:after {
|
||||
display: none;
|
||||
}
|
||||
.v-stepper-vertical-item.v-expansion-panel--disabled .v-expansion-panel-title, .v-stepper-vertical-item:not(.v-stepper-vertical-item--editable) .v-expansion-panel-title {
|
||||
pointer-events: none;
|
||||
}
|
||||
.v-stepper-vertical-item.v-expansion-panel--disabled .v-expansion-panel-title .v-expansion-panel-title__overlay, .v-stepper-vertical-item:not(.v-stepper-vertical-item--editable) .v-expansion-panel-title .v-expansion-panel-title__overlay {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.v-stepper-vertical-item__avatar.v-avatar {
|
||||
background: rgba(var(--v-theme-surface-variant), var(--v-medium-emphasis-opacity));
|
||||
color: rgb(var(--v-theme-on-surface-variant));
|
||||
transition-property: background;
|
||||
align-self: start;
|
||||
}
|
||||
.v-stepper-vertical-item__avatar.v-avatar .v-icon {
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
.v-expansion-panel--active .v-stepper-vertical-item__avatar.v-avatar {
|
||||
background: rgb(var(--v-theme-surface-variant));
|
||||
}
|
||||
.v-stepper-vertical-item--error .v-stepper-vertical-item__avatar.v-avatar {
|
||||
background: rgb(var(--v-theme-error));
|
||||
color: rgb(var(--v-theme-on-error));
|
||||
}
|
||||
|
||||
.v-stepper-vertical-item--error .v-stepper-vertical-item__title {
|
||||
color: rgb(var(--v-theme-error));
|
||||
}
|
||||
|
||||
.v-stepper-vertical-item--error .v-stepper-vertical-item__subtitle {
|
||||
color: rgb(var(--v-theme-error));
|
||||
}
|
||||
|
||||
.v-stepper-vertical-actions.v-stepper-actions .v-btn {
|
||||
margin-inline-end: 8px;
|
||||
}
|
||||
.v-stepper .v-stepper-vertical-actions.v-stepper-actions {
|
||||
justify-content: flex-end;
|
||||
padding: 24px 0 0;
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
Generated
Vendored
+830
@@ -0,0 +1,830 @@
|
||||
// Styles
|
||||
|
||||
// Types
|
||||
import type { StepperItemSlot } from '../../components/VStepper/VStepperItem.js';
|
||||
export type StepperVerticalItemActionSlot<T = any> = StepperItemSlot<T> & {
|
||||
next: () => void;
|
||||
prev: () => void;
|
||||
};
|
||||
export type VStepperVerticalItemSlots<T = any> = {
|
||||
default: StepperItemSlot<T>;
|
||||
icon: StepperItemSlot<T>;
|
||||
subtitle: StepperItemSlot<T>;
|
||||
title: StepperItemSlot<T>;
|
||||
text: StepperItemSlot<T>;
|
||||
prev: StepperVerticalItemActionSlot<T>;
|
||||
next: StepperVerticalItemActionSlot<T>;
|
||||
actions: StepperVerticalItemActionSlot<T>;
|
||||
};
|
||||
export declare const makeVStepperVerticalItemProps: <Defaults extends {
|
||||
class?: unknown;
|
||||
style?: unknown;
|
||||
elevation?: unknown;
|
||||
rounded?: unknown;
|
||||
tile?: unknown;
|
||||
tag?: unknown;
|
||||
value?: unknown;
|
||||
disabled?: unknown;
|
||||
selectedClass?: unknown;
|
||||
height?: unknown;
|
||||
maxHeight?: unknown;
|
||||
maxWidth?: unknown;
|
||||
minHeight?: unknown;
|
||||
minWidth?: unknown;
|
||||
width?: unknown;
|
||||
eager?: unknown;
|
||||
color?: unknown;
|
||||
expandIcon?: unknown;
|
||||
collapseIcon?: unknown;
|
||||
focusable?: unknown;
|
||||
static?: unknown;
|
||||
ripple?: unknown;
|
||||
readonly?: unknown;
|
||||
title?: unknown;
|
||||
text?: unknown;
|
||||
bgColor?: unknown;
|
||||
subtitle?: unknown;
|
||||
complete?: unknown;
|
||||
completeIcon?: unknown;
|
||||
editable?: unknown;
|
||||
editIcon?: unknown;
|
||||
error?: unknown;
|
||||
errorIcon?: unknown;
|
||||
icon?: unknown;
|
||||
rules?: unknown;
|
||||
hideActions?: unknown;
|
||||
} = {}>(defaults?: Defaults | undefined) => {
|
||||
class: unknown extends Defaults["class"] ? import("vue").PropType<any> : {
|
||||
type: import("vue").PropType<unknown extends Defaults["class"] ? any : any>;
|
||||
default: unknown extends Defaults["class"] ? any : any;
|
||||
};
|
||||
style: unknown extends Defaults["style"] ? {
|
||||
type: import("vue").PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | import("vue").StyleValue>;
|
||||
default: unknown extends Defaults["style"] ? import("vue").StyleValue : Defaults["style"] | NonNullable<import("vue").StyleValue>;
|
||||
};
|
||||
elevation: unknown extends Defaults["elevation"] ? {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
} : Omit<{
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["elevation"] ? string | number : string | number | Defaults["elevation"]>;
|
||||
default: unknown extends Defaults["elevation"] ? string | number : Defaults["elevation"] | NonNullable<string | number>;
|
||||
};
|
||||
rounded: unknown extends Defaults["rounded"] ? {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
} : Omit<{
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["rounded"] ? string | number | boolean : string | number | boolean | Defaults["rounded"]>;
|
||||
default: unknown extends Defaults["rounded"] ? string | number | boolean : Defaults["rounded"] | NonNullable<string | number | boolean>;
|
||||
};
|
||||
tile: unknown extends Defaults["tile"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"]>;
|
||||
default: unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"];
|
||||
};
|
||||
tag: unknown extends Defaults["tag"] ? {
|
||||
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : string | Defaults["tag"] | import("../../util/index.js").JSXComponent>;
|
||||
default: unknown extends Defaults["tag"] ? string | import("../../util/index.js").JSXComponent : Defaults["tag"] | NonNullable<string | import("../../util/index.js").JSXComponent>;
|
||||
};
|
||||
value: unknown extends Defaults["value"] ? null : {
|
||||
type: import("vue").PropType<unknown extends Defaults["value"] ? any : any>;
|
||||
default: unknown extends Defaults["value"] ? any : any;
|
||||
};
|
||||
disabled: unknown extends Defaults["disabled"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"]>;
|
||||
default: unknown extends Defaults["disabled"] ? boolean : boolean | Defaults["disabled"];
|
||||
};
|
||||
selectedClass: unknown extends Defaults["selectedClass"] ? StringConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["selectedClass"] ? string : string | Defaults["selectedClass"]>;
|
||||
default: unknown extends Defaults["selectedClass"] ? string : string | Defaults["selectedClass"];
|
||||
};
|
||||
height: unknown extends Defaults["height"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: import("vue").PropType<unknown extends Defaults["height"] ? string | number : string | number | Defaults["height"]>;
|
||||
default: unknown extends Defaults["height"] ? string | number : Defaults["height"] | NonNullable<string | number>;
|
||||
};
|
||||
maxHeight: unknown extends Defaults["maxHeight"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: import("vue").PropType<unknown extends Defaults["maxHeight"] ? string | number : string | number | Defaults["maxHeight"]>;
|
||||
default: unknown extends Defaults["maxHeight"] ? string | number : Defaults["maxHeight"] | NonNullable<string | number>;
|
||||
};
|
||||
maxWidth: unknown extends Defaults["maxWidth"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: import("vue").PropType<unknown extends Defaults["maxWidth"] ? string | number : string | number | Defaults["maxWidth"]>;
|
||||
default: unknown extends Defaults["maxWidth"] ? string | number : Defaults["maxWidth"] | NonNullable<string | number>;
|
||||
};
|
||||
minHeight: unknown extends Defaults["minHeight"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: import("vue").PropType<unknown extends Defaults["minHeight"] ? string | number : string | number | Defaults["minHeight"]>;
|
||||
default: unknown extends Defaults["minHeight"] ? string | number : Defaults["minHeight"] | NonNullable<string | number>;
|
||||
};
|
||||
minWidth: unknown extends Defaults["minWidth"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: import("vue").PropType<unknown extends Defaults["minWidth"] ? string | number : string | number | Defaults["minWidth"]>;
|
||||
default: unknown extends Defaults["minWidth"] ? string | number : Defaults["minWidth"] | NonNullable<string | number>;
|
||||
};
|
||||
width: unknown extends Defaults["width"] ? (NumberConstructor | StringConstructor)[] : {
|
||||
type: import("vue").PropType<unknown extends Defaults["width"] ? string | number : string | number | Defaults["width"]>;
|
||||
default: unknown extends Defaults["width"] ? string | number : Defaults["width"] | NonNullable<string | number>;
|
||||
};
|
||||
eager: unknown extends Defaults["eager"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["eager"] ? boolean : boolean | Defaults["eager"]>;
|
||||
default: unknown extends Defaults["eager"] ? boolean : boolean | Defaults["eager"];
|
||||
};
|
||||
color: unknown extends Defaults["color"] ? StringConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["color"] ? string : string | Defaults["color"]>;
|
||||
default: unknown extends Defaults["color"] ? string : string | Defaults["color"];
|
||||
};
|
||||
expandIcon: unknown extends Defaults["expandIcon"] ? Omit<{
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: NonNullable<import("../../composables/icons.js").IconValue>;
|
||||
} : Omit<Omit<{
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: NonNullable<import("../../composables/icons.js").IconValue>;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["expandIcon"] ? import("../../composables/icons.js").IconValue : Defaults["expandIcon"] | import("../../composables/icons.js").IconValue>;
|
||||
default: unknown extends Defaults["expandIcon"] ? import("../../composables/icons.js").IconValue : Defaults["expandIcon"] | NonNullable<import("../../composables/icons.js").IconValue>;
|
||||
};
|
||||
collapseIcon: unknown extends Defaults["collapseIcon"] ? Omit<{
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: NonNullable<import("../../composables/icons.js").IconValue>;
|
||||
} : Omit<Omit<{
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: NonNullable<import("../../composables/icons.js").IconValue>;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["collapseIcon"] ? import("../../composables/icons.js").IconValue : Defaults["collapseIcon"] | import("../../composables/icons.js").IconValue>;
|
||||
default: unknown extends Defaults["collapseIcon"] ? import("../../composables/icons.js").IconValue : Defaults["collapseIcon"] | NonNullable<import("../../composables/icons.js").IconValue>;
|
||||
};
|
||||
focusable: unknown extends Defaults["focusable"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["focusable"] ? boolean : boolean | Defaults["focusable"]>;
|
||||
default: unknown extends Defaults["focusable"] ? boolean : boolean | Defaults["focusable"];
|
||||
};
|
||||
static: unknown extends Defaults["static"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["static"] ? boolean : boolean | Defaults["static"]>;
|
||||
default: unknown extends Defaults["static"] ? boolean : boolean | Defaults["static"];
|
||||
};
|
||||
ripple: unknown extends Defaults["ripple"] ? {
|
||||
type: import("vue").PropType<boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined>;
|
||||
default: boolean;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined>;
|
||||
default: boolean;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["ripple"] ? boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined : boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | Defaults["ripple"] | undefined>;
|
||||
default: unknown extends Defaults["ripple"] ? boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined : Defaults["ripple"] | NonNullable<boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined>;
|
||||
};
|
||||
readonly: unknown extends Defaults["readonly"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["readonly"] ? boolean : boolean | Defaults["readonly"]>;
|
||||
default: unknown extends Defaults["readonly"] ? boolean : boolean | Defaults["readonly"];
|
||||
};
|
||||
title: unknown extends Defaults["title"] ? StringConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["title"] ? string : string | Defaults["title"]>;
|
||||
default: unknown extends Defaults["title"] ? string : string | Defaults["title"];
|
||||
};
|
||||
text: unknown extends Defaults["text"] ? StringConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["text"] ? string : string | Defaults["text"]>;
|
||||
default: unknown extends Defaults["text"] ? string : string | Defaults["text"];
|
||||
};
|
||||
bgColor: unknown extends Defaults["bgColor"] ? StringConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["bgColor"] ? string : string | Defaults["bgColor"]>;
|
||||
default: unknown extends Defaults["bgColor"] ? string : string | Defaults["bgColor"];
|
||||
};
|
||||
subtitle: unknown extends Defaults["subtitle"] ? StringConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["subtitle"] ? string : string | Defaults["subtitle"]>;
|
||||
default: unknown extends Defaults["subtitle"] ? string : string | Defaults["subtitle"];
|
||||
};
|
||||
complete: unknown extends Defaults["complete"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["complete"] ? boolean : boolean | Defaults["complete"]>;
|
||||
default: unknown extends Defaults["complete"] ? boolean : boolean | Defaults["complete"];
|
||||
};
|
||||
completeIcon: unknown extends Defaults["completeIcon"] ? {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["completeIcon"] ? import("../../composables/icons.js").IconValue : Defaults["completeIcon"] | import("../../composables/icons.js").IconValue>;
|
||||
default: unknown extends Defaults["completeIcon"] ? import("../../composables/icons.js").IconValue : Defaults["completeIcon"] | NonNullable<import("../../composables/icons.js").IconValue>;
|
||||
};
|
||||
editable: unknown extends Defaults["editable"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["editable"] ? boolean : boolean | Defaults["editable"]>;
|
||||
default: unknown extends Defaults["editable"] ? boolean : boolean | Defaults["editable"];
|
||||
};
|
||||
editIcon: unknown extends Defaults["editIcon"] ? {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["editIcon"] ? import("../../composables/icons.js").IconValue : Defaults["editIcon"] | import("../../composables/icons.js").IconValue>;
|
||||
default: unknown extends Defaults["editIcon"] ? import("../../composables/icons.js").IconValue : Defaults["editIcon"] | NonNullable<import("../../composables/icons.js").IconValue>;
|
||||
};
|
||||
error: unknown extends Defaults["error"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["error"] ? boolean : boolean | Defaults["error"]>;
|
||||
default: unknown extends Defaults["error"] ? boolean : boolean | Defaults["error"];
|
||||
};
|
||||
errorIcon: unknown extends Defaults["errorIcon"] ? {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["errorIcon"] ? import("../../composables/icons.js").IconValue : Defaults["errorIcon"] | import("../../composables/icons.js").IconValue>;
|
||||
default: unknown extends Defaults["errorIcon"] ? import("../../composables/icons.js").IconValue : Defaults["errorIcon"] | NonNullable<import("../../composables/icons.js").IconValue>;
|
||||
};
|
||||
icon: unknown extends Defaults["icon"] ? import("vue").PropType<import("../../composables/icons.js").IconValue> : {
|
||||
type: import("vue").PropType<unknown extends Defaults["icon"] ? import("../../composables/icons.js").IconValue : Defaults["icon"] | import("../../composables/icons.js").IconValue>;
|
||||
default: unknown extends Defaults["icon"] ? import("../../composables/icons.js").IconValue : Defaults["icon"] | NonNullable<import("../../composables/icons.js").IconValue>;
|
||||
};
|
||||
rules: unknown extends Defaults["rules"] ? {
|
||||
type: import("vue").PropType<readonly import("../../components/VStepper/VStepperItem.js").ValidationRule[]>;
|
||||
default: () => never[];
|
||||
} : Omit<{
|
||||
type: import("vue").PropType<readonly import("../../components/VStepper/VStepperItem.js").ValidationRule[]>;
|
||||
default: () => never[];
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<unknown extends Defaults["rules"] ? readonly import("../../components/VStepper/VStepperItem.js").ValidationRule[] : readonly import("../../components/VStepper/VStepperItem.js").ValidationRule[] | Defaults["rules"]>;
|
||||
default: unknown extends Defaults["rules"] ? readonly import("../../components/VStepper/VStepperItem.js").ValidationRule[] : readonly import("../../components/VStepper/VStepperItem.js").ValidationRule[] | Defaults["rules"];
|
||||
};
|
||||
hideActions: unknown extends Defaults["hideActions"] ? BooleanConstructor : {
|
||||
type: import("vue").PropType<unknown extends Defaults["hideActions"] ? boolean : boolean | Defaults["hideActions"]>;
|
||||
default: unknown extends Defaults["hideActions"] ? boolean : boolean | Defaults["hideActions"];
|
||||
};
|
||||
};
|
||||
export declare const VStepperVerticalItem: {
|
||||
new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<{
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
disabled: boolean;
|
||||
eager: boolean;
|
||||
expandIcon: import("../../composables/icons.js").IconValue;
|
||||
collapseIcon: import("../../composables/icons.js").IconValue;
|
||||
focusable: boolean;
|
||||
static: boolean;
|
||||
ripple: boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
};
|
||||
readonly: boolean;
|
||||
complete: boolean;
|
||||
completeIcon: import("../../composables/icons.js").IconValue;
|
||||
editable: boolean;
|
||||
editIcon: import("../../composables/icons.js").IconValue;
|
||||
error: boolean;
|
||||
errorIcon: import("../../composables/icons.js").IconValue;
|
||||
rules: readonly import("../../components/VStepper/VStepperItem.js").ValidationRule[];
|
||||
hideActions: boolean;
|
||||
} & {
|
||||
class?: any;
|
||||
elevation?: string | number | undefined;
|
||||
rounded?: string | number | boolean | undefined;
|
||||
value?: any;
|
||||
selectedClass?: string | undefined;
|
||||
height?: string | number | undefined;
|
||||
maxHeight?: string | number | undefined;
|
||||
maxWidth?: string | number | undefined;
|
||||
minHeight?: string | number | undefined;
|
||||
minWidth?: string | number | undefined;
|
||||
width?: string | number | undefined;
|
||||
color?: string | undefined;
|
||||
title?: string | undefined;
|
||||
text?: string | undefined;
|
||||
bgColor?: string | undefined;
|
||||
subtitle?: string | undefined;
|
||||
icon?: import("../../composables/icons.js").IconValue | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
default?: ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
icon?: ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
subtitle?: ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
title?: ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
text?: ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
prev?: ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
next?: ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
actions?: ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
default?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
icon?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
subtitle?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
title?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
text?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
prev?: false | ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
next?: false | ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
actions?: false | ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:actions"?: false | ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:default"?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:icon"?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:next"?: false | ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:prev"?: false | ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:subtitle"?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:text"?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:title"?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
} & {
|
||||
"onClick:finish"?: (() => any) | undefined;
|
||||
"onClick:next"?: (() => any) | undefined;
|
||||
"onClick:prev"?: (() => any) | undefined;
|
||||
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
||||
"click:next": () => true;
|
||||
"click:prev": () => true;
|
||||
"click:finish": () => true;
|
||||
}, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, {
|
||||
style: import("vue").StyleValue;
|
||||
rounded: string | number | boolean;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
disabled: boolean;
|
||||
eager: boolean;
|
||||
expandIcon: import("../../composables/icons.js").IconValue;
|
||||
collapseIcon: import("../../composables/icons.js").IconValue;
|
||||
focusable: boolean;
|
||||
static: boolean;
|
||||
ripple: boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined;
|
||||
readonly: boolean;
|
||||
complete: boolean;
|
||||
completeIcon: import("../../composables/icons.js").IconValue;
|
||||
editable: boolean;
|
||||
editIcon: import("../../composables/icons.js").IconValue;
|
||||
error: boolean;
|
||||
errorIcon: import("../../composables/icons.js").IconValue;
|
||||
rules: readonly import("../../components/VStepper/VStepperItem.js").ValidationRule[];
|
||||
hideActions: boolean;
|
||||
}, true, {}, import("vue").SlotsType<Partial<{
|
||||
default: (arg: StepperItemSlot<any>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
icon: (arg: StepperItemSlot<any>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
subtitle: (arg: StepperItemSlot<any>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
title: (arg: StepperItemSlot<any>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
text: (arg: StepperItemSlot<any>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
prev: (arg: StepperVerticalItemActionSlot<any>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
next: (arg: StepperVerticalItemActionSlot<any>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
actions: (arg: StepperVerticalItemActionSlot<any>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
|
||||
P: {};
|
||||
B: {};
|
||||
D: {};
|
||||
C: {};
|
||||
M: {};
|
||||
Defaults: {};
|
||||
}, {
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
disabled: boolean;
|
||||
eager: boolean;
|
||||
expandIcon: import("../../composables/icons.js").IconValue;
|
||||
collapseIcon: import("../../composables/icons.js").IconValue;
|
||||
focusable: boolean;
|
||||
static: boolean;
|
||||
ripple: boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
};
|
||||
readonly: boolean;
|
||||
complete: boolean;
|
||||
completeIcon: import("../../composables/icons.js").IconValue;
|
||||
editable: boolean;
|
||||
editIcon: import("../../composables/icons.js").IconValue;
|
||||
error: boolean;
|
||||
errorIcon: import("../../composables/icons.js").IconValue;
|
||||
rules: readonly import("../../components/VStepper/VStepperItem.js").ValidationRule[];
|
||||
hideActions: boolean;
|
||||
} & {
|
||||
class?: any;
|
||||
elevation?: string | number | undefined;
|
||||
rounded?: string | number | boolean | undefined;
|
||||
value?: any;
|
||||
selectedClass?: string | undefined;
|
||||
height?: string | number | undefined;
|
||||
maxHeight?: string | number | undefined;
|
||||
maxWidth?: string | number | undefined;
|
||||
minHeight?: string | number | undefined;
|
||||
minWidth?: string | number | undefined;
|
||||
width?: string | number | undefined;
|
||||
color?: string | undefined;
|
||||
title?: string | undefined;
|
||||
text?: string | undefined;
|
||||
bgColor?: string | undefined;
|
||||
subtitle?: string | undefined;
|
||||
icon?: import("../../composables/icons.js").IconValue | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
default?: ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
icon?: ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
subtitle?: ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
title?: ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
text?: ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
prev?: ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
next?: ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
actions?: ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
default?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
icon?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
subtitle?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
title?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
text?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
prev?: false | ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
next?: false | ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
actions?: false | ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:actions"?: false | ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:default"?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:icon"?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:next"?: false | ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:prev"?: false | ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:subtitle"?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:text"?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:title"?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
} & {
|
||||
"onClick:finish"?: (() => any) | undefined;
|
||||
"onClick:next"?: (() => any) | undefined;
|
||||
"onClick:prev"?: (() => any) | undefined;
|
||||
}, {}, {}, {}, {}, {
|
||||
style: import("vue").StyleValue;
|
||||
rounded: string | number | boolean;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
disabled: boolean;
|
||||
eager: boolean;
|
||||
expandIcon: import("../../composables/icons.js").IconValue;
|
||||
collapseIcon: import("../../composables/icons.js").IconValue;
|
||||
focusable: boolean;
|
||||
static: boolean;
|
||||
ripple: boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined;
|
||||
readonly: boolean;
|
||||
complete: boolean;
|
||||
completeIcon: import("../../composables/icons.js").IconValue;
|
||||
editable: boolean;
|
||||
editIcon: import("../../composables/icons.js").IconValue;
|
||||
error: boolean;
|
||||
errorIcon: import("../../composables/icons.js").IconValue;
|
||||
rules: readonly import("../../components/VStepper/VStepperItem.js").ValidationRule[];
|
||||
hideActions: boolean;
|
||||
}>;
|
||||
__isFragment?: undefined;
|
||||
__isTeleport?: undefined;
|
||||
__isSuspense?: undefined;
|
||||
} & import("vue").ComponentOptionsBase<{
|
||||
style: string | false | import("vue").StyleValue[] | import("vue").CSSProperties | null;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
disabled: boolean;
|
||||
eager: boolean;
|
||||
expandIcon: import("../../composables/icons.js").IconValue;
|
||||
collapseIcon: import("../../composables/icons.js").IconValue;
|
||||
focusable: boolean;
|
||||
static: boolean;
|
||||
ripple: boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
};
|
||||
readonly: boolean;
|
||||
complete: boolean;
|
||||
completeIcon: import("../../composables/icons.js").IconValue;
|
||||
editable: boolean;
|
||||
editIcon: import("../../composables/icons.js").IconValue;
|
||||
error: boolean;
|
||||
errorIcon: import("../../composables/icons.js").IconValue;
|
||||
rules: readonly import("../../components/VStepper/VStepperItem.js").ValidationRule[];
|
||||
hideActions: boolean;
|
||||
} & {
|
||||
class?: any;
|
||||
elevation?: string | number | undefined;
|
||||
rounded?: string | number | boolean | undefined;
|
||||
value?: any;
|
||||
selectedClass?: string | undefined;
|
||||
height?: string | number | undefined;
|
||||
maxHeight?: string | number | undefined;
|
||||
maxWidth?: string | number | undefined;
|
||||
minHeight?: string | number | undefined;
|
||||
minWidth?: string | number | undefined;
|
||||
width?: string | number | undefined;
|
||||
color?: string | undefined;
|
||||
title?: string | undefined;
|
||||
text?: string | undefined;
|
||||
bgColor?: string | undefined;
|
||||
subtitle?: string | undefined;
|
||||
icon?: import("../../composables/icons.js").IconValue | undefined;
|
||||
} & {
|
||||
$children?: {
|
||||
default?: ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
icon?: ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
subtitle?: ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
title?: ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
text?: ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
prev?: ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
next?: ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
actions?: ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
} | {
|
||||
$stable?: boolean | undefined;
|
||||
} | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | import("vue").VNodeChild;
|
||||
"v-slots"?: {
|
||||
default?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
icon?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
subtitle?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
title?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
text?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
prev?: false | ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
next?: false | ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
actions?: false | ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
} | undefined;
|
||||
} & {
|
||||
"v-slot:actions"?: false | ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:default"?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:icon"?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:next"?: false | ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:prev"?: false | ((arg: StepperVerticalItemActionSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:subtitle"?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:text"?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
"v-slot:title"?: false | ((arg: StepperItemSlot<any>) => import("vue").VNodeChild) | undefined;
|
||||
} & {
|
||||
"onClick:finish"?: (() => any) | undefined;
|
||||
"onClick:next"?: (() => any) | undefined;
|
||||
"onClick:prev"?: (() => any) | undefined;
|
||||
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
||||
"click:next": () => true;
|
||||
"click:prev": () => true;
|
||||
"click:finish": () => true;
|
||||
}, string, {
|
||||
style: import("vue").StyleValue;
|
||||
rounded: string | number | boolean;
|
||||
tile: boolean;
|
||||
tag: string | import("../../util/index.js").JSXComponent;
|
||||
disabled: boolean;
|
||||
eager: boolean;
|
||||
expandIcon: import("../../composables/icons.js").IconValue;
|
||||
collapseIcon: import("../../composables/icons.js").IconValue;
|
||||
focusable: boolean;
|
||||
static: boolean;
|
||||
ripple: boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined;
|
||||
readonly: boolean;
|
||||
complete: boolean;
|
||||
completeIcon: import("../../composables/icons.js").IconValue;
|
||||
editable: boolean;
|
||||
editIcon: import("../../composables/icons.js").IconValue;
|
||||
error: boolean;
|
||||
errorIcon: import("../../composables/icons.js").IconValue;
|
||||
rules: readonly import("../../components/VStepper/VStepperItem.js").ValidationRule[];
|
||||
hideActions: boolean;
|
||||
}, {}, string, import("vue").SlotsType<Partial<{
|
||||
default: (arg: StepperItemSlot<any>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
icon: (arg: StepperItemSlot<any>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
subtitle: (arg: StepperItemSlot<any>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
title: (arg: StepperItemSlot<any>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
text: (arg: StepperItemSlot<any>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
prev: (arg: StepperVerticalItemActionSlot<any>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
next: (arg: StepperVerticalItemActionSlot<any>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
actions: (arg: StepperVerticalItemActionSlot<any>) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
||||
[key: string]: any;
|
||||
}>[];
|
||||
}>>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("../../util/index.js").FilterPropsOptions<{
|
||||
class: import("vue").PropType<any>;
|
||||
style: {
|
||||
type: import("vue").PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
};
|
||||
elevation: {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
};
|
||||
rounded: {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
};
|
||||
tile: BooleanConstructor;
|
||||
tag: {
|
||||
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
};
|
||||
value: null;
|
||||
disabled: BooleanConstructor;
|
||||
selectedClass: StringConstructor;
|
||||
height: (NumberConstructor | StringConstructor)[];
|
||||
maxHeight: (NumberConstructor | StringConstructor)[];
|
||||
maxWidth: (NumberConstructor | StringConstructor)[];
|
||||
minHeight: (NumberConstructor | StringConstructor)[];
|
||||
minWidth: (NumberConstructor | StringConstructor)[];
|
||||
width: (NumberConstructor | StringConstructor)[];
|
||||
eager: BooleanConstructor;
|
||||
color: StringConstructor;
|
||||
expandIcon: Omit<{
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: NonNullable<import("../../composables/icons.js").IconValue>;
|
||||
};
|
||||
collapseIcon: Omit<{
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: NonNullable<import("../../composables/icons.js").IconValue>;
|
||||
};
|
||||
focusable: BooleanConstructor;
|
||||
static: BooleanConstructor;
|
||||
ripple: {
|
||||
type: import("vue").PropType<boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined>;
|
||||
default: boolean;
|
||||
};
|
||||
readonly: BooleanConstructor;
|
||||
title: StringConstructor;
|
||||
text: StringConstructor;
|
||||
bgColor: StringConstructor;
|
||||
subtitle: StringConstructor;
|
||||
complete: BooleanConstructor;
|
||||
completeIcon: {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
};
|
||||
editable: BooleanConstructor;
|
||||
editIcon: {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
};
|
||||
error: BooleanConstructor;
|
||||
errorIcon: {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
};
|
||||
icon: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
rules: {
|
||||
type: import("vue").PropType<readonly import("../../components/VStepper/VStepperItem.js").ValidationRule[]>;
|
||||
default: () => never[];
|
||||
};
|
||||
hideActions: BooleanConstructor;
|
||||
}, import("vue").ExtractPropTypes<{
|
||||
class: import("vue").PropType<any>;
|
||||
style: {
|
||||
type: import("vue").PropType<import("vue").StyleValue>;
|
||||
default: null;
|
||||
};
|
||||
elevation: {
|
||||
type: (NumberConstructor | StringConstructor)[];
|
||||
validator(v: any): boolean;
|
||||
};
|
||||
rounded: {
|
||||
type: (BooleanConstructor | NumberConstructor | StringConstructor)[];
|
||||
default: undefined;
|
||||
};
|
||||
tile: BooleanConstructor;
|
||||
tag: {
|
||||
type: import("vue").PropType<string | import("../../util/index.js").JSXComponent>;
|
||||
default: string;
|
||||
};
|
||||
value: null;
|
||||
disabled: BooleanConstructor;
|
||||
selectedClass: StringConstructor;
|
||||
height: (NumberConstructor | StringConstructor)[];
|
||||
maxHeight: (NumberConstructor | StringConstructor)[];
|
||||
maxWidth: (NumberConstructor | StringConstructor)[];
|
||||
minHeight: (NumberConstructor | StringConstructor)[];
|
||||
minWidth: (NumberConstructor | StringConstructor)[];
|
||||
width: (NumberConstructor | StringConstructor)[];
|
||||
eager: BooleanConstructor;
|
||||
color: StringConstructor;
|
||||
expandIcon: Omit<{
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: NonNullable<import("../../composables/icons.js").IconValue>;
|
||||
};
|
||||
collapseIcon: Omit<{
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
}, "default" | "type"> & {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: NonNullable<import("../../composables/icons.js").IconValue>;
|
||||
};
|
||||
focusable: BooleanConstructor;
|
||||
static: BooleanConstructor;
|
||||
ripple: {
|
||||
type: import("vue").PropType<boolean | {
|
||||
class?: string | undefined;
|
||||
keys?: string[] | undefined;
|
||||
} | undefined>;
|
||||
default: boolean;
|
||||
};
|
||||
readonly: BooleanConstructor;
|
||||
title: StringConstructor;
|
||||
text: StringConstructor;
|
||||
bgColor: StringConstructor;
|
||||
subtitle: StringConstructor;
|
||||
complete: BooleanConstructor;
|
||||
completeIcon: {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
};
|
||||
editable: BooleanConstructor;
|
||||
editIcon: {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
};
|
||||
error: BooleanConstructor;
|
||||
errorIcon: {
|
||||
type: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
default: string;
|
||||
};
|
||||
icon: import("vue").PropType<import("../../composables/icons.js").IconValue>;
|
||||
rules: {
|
||||
type: import("vue").PropType<readonly import("../../components/VStepper/VStepperItem.js").ValidationRule[]>;
|
||||
default: () => never[];
|
||||
};
|
||||
hideActions: BooleanConstructor;
|
||||
}>>;
|
||||
export type VStepperVerticalItem = InstanceType<typeof VStepperVerticalItem>;
|
||||
Generated
Vendored
+131
@@ -0,0 +1,131 @@
|
||||
import { Fragment as _Fragment, createVNode as _createVNode, createElementVNode as _createElementVNode, mergeProps as _mergeProps } from "vue";
|
||||
// Styles
|
||||
import "./VStepperVerticalItem.css";
|
||||
|
||||
// Components
|
||||
import { VStepperVerticalActions } from "./VStepperVerticalActions.js";
|
||||
import { VAvatar } from "../../components/VAvatar/VAvatar.js";
|
||||
import { VDefaultsProvider } from "../../components/VDefaultsProvider/VDefaultsProvider.js";
|
||||
import { makeVExpansionPanelProps, VExpansionPanel } from "../../components/VExpansionPanel/VExpansionPanel.js";
|
||||
import { VIcon } from "../../components/VIcon/VIcon.js";
|
||||
import { makeStepperItemProps } from "../../components/VStepper/VStepperItem.js"; // Utilities
|
||||
import { computed, ref } from 'vue';
|
||||
import { genericComponent, omit, propsFactory, useRender } from "../../util/index.js"; // Types
|
||||
export const makeVStepperVerticalItemProps = propsFactory({
|
||||
hideActions: Boolean,
|
||||
...makeStepperItemProps(),
|
||||
...omit(makeVExpansionPanelProps({
|
||||
expandIcon: '',
|
||||
collapseIcon: ''
|
||||
}), ['hideActions'])
|
||||
}, 'VStepperVerticalItem');
|
||||
export const VStepperVerticalItem = genericComponent()({
|
||||
name: 'VStepperVerticalItem',
|
||||
props: makeVStepperVerticalItemProps(),
|
||||
emits: {
|
||||
'click:next': () => true,
|
||||
'click:prev': () => true,
|
||||
'click:finish': () => true
|
||||
},
|
||||
setup(props, _ref) {
|
||||
let {
|
||||
emit,
|
||||
slots
|
||||
} = _ref;
|
||||
const vExpansionPanelRef = ref();
|
||||
const step = computed(() => !isNaN(parseInt(props.value)) ? Number(props.value) : props.value);
|
||||
const groupItem = computed(() => vExpansionPanelRef.value?.groupItem);
|
||||
const isValid = computed(() => props.rules.every(handler => handler() === true));
|
||||
const canEdit = computed(() => !props.disabled && props.editable);
|
||||
const hasError = computed(() => props.error || !isValid.value);
|
||||
const hasCompleted = computed(() => props.complete || props.rules.length > 0 && isValid.value);
|
||||
const disabled = computed(() => {
|
||||
if (props.disabled) return props.disabled;
|
||||
if (groupItem.value?.isFirst.value) return 'prev';
|
||||
return false;
|
||||
});
|
||||
const icon = computed(() => {
|
||||
if (hasError.value) return props.errorIcon;
|
||||
if (hasCompleted.value) return props.completeIcon;
|
||||
if (groupItem.value?.isSelected.value && props.editable) return props.editIcon;
|
||||
return props.icon;
|
||||
});
|
||||
const slotProps = computed(() => ({
|
||||
canEdit: canEdit.value,
|
||||
hasError: hasError.value,
|
||||
hasCompleted: hasCompleted.value,
|
||||
title: props.title,
|
||||
subtitle: props.subtitle,
|
||||
step: step.value
|
||||
}));
|
||||
const actionProps = computed(() => ({
|
||||
...slotProps.value,
|
||||
prev: onClickPrev,
|
||||
next: onClickNext
|
||||
}));
|
||||
function onClickNext() {
|
||||
emit('click:next');
|
||||
if (groupItem.value?.isLast.value) return;
|
||||
groupItem.value.group.next();
|
||||
}
|
||||
function onClickPrev() {
|
||||
emit('click:prev');
|
||||
groupItem.value.group.prev();
|
||||
}
|
||||
useRender(() => {
|
||||
const hasColor = (!groupItem.value || groupItem.value?.isSelected.value || hasCompleted.value || canEdit.value) && !hasError.value && !props.disabled;
|
||||
const hasActions = !props.hideActions || !!slots.actions;
|
||||
const expansionPanelProps = VExpansionPanel.filterProps(props);
|
||||
return _createVNode(VExpansionPanel, _mergeProps({
|
||||
"_as": "VStepperVerticalItem",
|
||||
"ref": vExpansionPanelRef
|
||||
}, expansionPanelProps, {
|
||||
"class": ['v-stepper-vertical-item', {
|
||||
'v-stepper-vertical-item--complete': hasCompleted.value,
|
||||
'v-stepper-vertical-item--disabled': props.disabled,
|
||||
'v-stepper-vertical-item--editable': canEdit.value,
|
||||
'v-stepper-vertical-item--error': hasError.value
|
||||
}, props.class],
|
||||
"readonly": !props.editable,
|
||||
"style": props.style,
|
||||
"color": "",
|
||||
"hideActions": false,
|
||||
"value": step.value
|
||||
}), {
|
||||
title: () => _createElementVNode(_Fragment, null, [_createVNode(VAvatar, {
|
||||
"key": "stepper-avatar",
|
||||
"class": "v-stepper-vertical-item__avatar",
|
||||
"color": hasColor ? props.color : undefined,
|
||||
"size": 24,
|
||||
"start": true
|
||||
}, {
|
||||
default: () => [slots.icon?.(slotProps.value) ?? (icon.value ? _createVNode(VIcon, {
|
||||
"icon": icon.value
|
||||
}, null) : step.value)]
|
||||
}), _createElementVNode("div", null, [_createElementVNode("div", {
|
||||
"class": "v-stepper-vertical-item__title"
|
||||
}, [slots.title?.(slotProps.value) ?? props.title]), _createElementVNode("div", {
|
||||
"class": "v-stepper-vertical-item__subtitle"
|
||||
}, [slots.subtitle?.(slotProps.value) ?? props.subtitle])])]),
|
||||
text: () => _createElementVNode(_Fragment, null, [slots.default?.(slotProps.value) ?? props.text, hasActions && _createVNode(VDefaultsProvider, {
|
||||
"defaults": {
|
||||
VStepperVerticalActions: {
|
||||
disabled: disabled.value,
|
||||
finish: groupItem.value?.isLast.value
|
||||
}
|
||||
}
|
||||
}, {
|
||||
default: () => [slots.actions?.(actionProps.value) ?? _createVNode(VStepperVerticalActions, {
|
||||
"onClick:next": onClickNext,
|
||||
"onClick:prev": onClickPrev
|
||||
}, {
|
||||
prev: slots.prev ? () => slots.prev?.(actionProps.value) : undefined,
|
||||
next: slots.next ? () => slots.next?.(actionProps.value) : undefined
|
||||
})]
|
||||
})])
|
||||
});
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=VStepperVerticalItem.js.map
|
||||
Generated
Vendored
+1
File diff suppressed because one or more lines are too long
Generated
Vendored
+79
@@ -0,0 +1,79 @@
|
||||
@use '../../styles/settings'
|
||||
@use '../../styles/tools'
|
||||
@use './variables' as *
|
||||
|
||||
@include tools.layer('components')
|
||||
.v-stepper-vertical-item
|
||||
position: relative
|
||||
transition-duration: $stepper-vertical-item-transition-duration
|
||||
transition-property: $stepper-vertical-item-transition-property
|
||||
transition-timing-function: $stepper-vertical-item-transition-timing-function
|
||||
|
||||
&--error
|
||||
color: rgb(var(--v-theme-error))
|
||||
|
||||
&__title
|
||||
font-size: 1rem
|
||||
|
||||
&__subtitle
|
||||
font-size: .75rem
|
||||
|
||||
.v-expansion-panel-text
|
||||
padding-inline-start: 32px
|
||||
|
||||
&:not(:last-child):before
|
||||
content: ''
|
||||
position: absolute
|
||||
width: 2px
|
||||
height: calc(100% - 30px)
|
||||
background: rgba(var(--v-border-color), var(--v-border-opacity))
|
||||
left: 35px
|
||||
top: 44px
|
||||
z-index: 1
|
||||
transition-duration: 300ms
|
||||
transition-property: height
|
||||
|
||||
&:after
|
||||
display: none
|
||||
|
||||
&.v-expansion-panel--disabled,
|
||||
&:not(.v-stepper-vertical-item--editable)
|
||||
.v-expansion-panel-title
|
||||
pointer-events: none
|
||||
|
||||
.v-expansion-panel-title__overlay
|
||||
opacity: 0
|
||||
|
||||
.v-stepper-vertical-item__avatar.v-avatar
|
||||
background: rgba(var(--v-theme-surface-variant), var(--v-medium-emphasis-opacity))
|
||||
color: rgb(var(--v-theme-on-surface-variant))
|
||||
transition-property: background
|
||||
align-self: start
|
||||
|
||||
.v-icon
|
||||
font-size: .875rem
|
||||
|
||||
.v-expansion-panel--active &
|
||||
background: rgb(var(--v-theme-surface-variant))
|
||||
|
||||
.v-stepper-vertical-item--error &
|
||||
background: rgb(var(--v-theme-error))
|
||||
color: rgb(var(--v-theme-on-error))
|
||||
|
||||
.v-stepper-vertical-item__title
|
||||
.v-stepper-vertical-item--error &
|
||||
color: rgb(var(--v-theme-error))
|
||||
|
||||
.v-stepper-vertical-item__subtitle
|
||||
.v-stepper-vertical-item--error &
|
||||
color: rgb(var(--v-theme-error))
|
||||
|
||||
.v-stepper-vertical-actions
|
||||
&.v-stepper-actions
|
||||
.v-btn
|
||||
margin-inline-end: 8px
|
||||
|
||||
.v-stepper &
|
||||
justify-content: flex-end
|
||||
padding: 24px 0 0
|
||||
flex-direction: row-reverse
|
||||
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
$stepper-vertical-item-transition-duration: .2s !default;
|
||||
$stepper-vertical-item-transition-property: opacity !default;
|
||||
$stepper-vertical-item-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !default;
|
||||
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
export { VStepperVertical } from './VStepperVertical.js';
|
||||
export { VStepperVerticalItem } from './VStepperVerticalItem.js';
|
||||
export { VStepperVerticalActions } from './VStepperVerticalActions.js';
|
||||
Generated
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
export { VStepperVertical } from "./VStepperVertical.js";
|
||||
export { VStepperVerticalItem } from "./VStepperVerticalItem.js";
|
||||
export { VStepperVerticalActions } from "./VStepperVerticalActions.js";
|
||||
//# sourceMappingURL=index.js.map
|
||||
Generated
Vendored
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.js","names":["VStepperVertical","VStepperVerticalItem","VStepperVerticalActions"],"sources":["../../../src/labs/VStepperVertical/index.ts"],"sourcesContent":["export { VStepperVertical } from './VStepperVertical'\nexport { VStepperVerticalItem } from './VStepperVerticalItem'\nexport { VStepperVerticalActions } from './VStepperVerticalActions'\n"],"mappings":"SAASA,gBAAgB;AAAA,SAChBC,oBAAoB;AAAA,SACpBC,uBAAuB","ignoreList":[]}
|
||||
+322
@@ -0,0 +1,322 @@
|
||||
.v-video {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
--v-video-aspect-ratio: 1.7777777778;
|
||||
--v-video-controls-height: 58px;
|
||||
--v-video-controls-pill-border-radius: 99px;
|
||||
}
|
||||
.v-video--density-default {
|
||||
--v-video-controls-height: 58px;
|
||||
}
|
||||
|
||||
.v-video--density-comfortable {
|
||||
--v-video-controls-height: 50px;
|
||||
}
|
||||
|
||||
.v-video--density-compact {
|
||||
--v-video-controls-height: 42px;
|
||||
}
|
||||
|
||||
.v-video__video {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
z-index: 0;
|
||||
}
|
||||
.v-video__video::-webkit-media-controls {
|
||||
display: none !important;
|
||||
}
|
||||
.v-video__video ~ * {
|
||||
z-index: 1;
|
||||
}
|
||||
.v-video__header {
|
||||
position: relative;
|
||||
opacity: 0;
|
||||
transition: opacity 0.6s ease-in-out;
|
||||
pointer-events: none;
|
||||
}
|
||||
.v-video__header > * {
|
||||
pointer-events: auto;
|
||||
}
|
||||
.v-video__content {
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
border-radius: inherit;
|
||||
z-index: 0;
|
||||
}
|
||||
.v-video__content {
|
||||
box-shadow: 0px 2px 4px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, 0.2)), 0px 4px 5px 0px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, 0.14)), 0px 1px 10px 0px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, 0.12));
|
||||
}
|
||||
.v-video:not(.v-video--idle) .v-video__content .v-video__overlay-fill, .v-video:not(.v-video--idle) .v-video__content .v-video__overlay-fill > * {
|
||||
pointer-events: none;
|
||||
}
|
||||
.v-video__overlay-fill {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: inherit;
|
||||
}
|
||||
.v-video__overlay-fill > .v-img {
|
||||
position: absolute;
|
||||
border-radius: inherit;
|
||||
inset: 0;
|
||||
}
|
||||
.v-video:has(.v-video-controls:not(.v-video-controls--detached)) .v-video__content .v-video__overlay-fill {
|
||||
padding-bottom: var(--v-video-controls-height);
|
||||
}
|
||||
.v-video__center-icon.v-icon-btn {
|
||||
border: 5px solid currentColor;
|
||||
opacity: 0.6;
|
||||
transition-property: transform, opacity;
|
||||
transition-duration: 0.28s;
|
||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||
}
|
||||
.v-video__content:hover .v-video__center-icon {
|
||||
transform: scale(1.05);
|
||||
opacity: 1;
|
||||
}
|
||||
.v-video-volume--inline {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.v-video-volume__menu {
|
||||
background: rgb(var(--v-theme-surface));
|
||||
color: rgb(var(--v-theme-on-surface));
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.v-video-volume__menu {
|
||||
border-color: rgba(var(--v-border-color), var(--v-border-opacity));
|
||||
border-style: solid;
|
||||
border-width: thin;
|
||||
}
|
||||
.v-video-volume__menu--border {
|
||||
border-width: thin;
|
||||
box-shadow: none;
|
||||
}
|
||||
.v-video-volume__menu {
|
||||
box-shadow: 0px 3px 1px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, 0.2)), 0px 2px 2px 0px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, 0.14)), 0px 1px 5px 0px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, 0.12));
|
||||
}
|
||||
.v-video-volume__menu {
|
||||
border-radius: 4px;
|
||||
}
|
||||
.v-video-volume__menu:has(.v-input--horizontal) {
|
||||
height: 40px;
|
||||
}
|
||||
.v-video-volume__menu:has(.v-input--vertical) {
|
||||
width: 40px;
|
||||
}
|
||||
.v-video-volume__menu .v-slider.v-input--horizontal {
|
||||
margin: 0 16px;
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
}
|
||||
.v-video-volume__menu .v-slider.v-input--vertical {
|
||||
margin: 16px 0;
|
||||
height: 100px;
|
||||
width: 40px;
|
||||
}
|
||||
.v-video-volume__menu .v-slider.v-input--vertical > .v-input__control {
|
||||
min-height: 50px;
|
||||
}
|
||||
.v-video__track {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
.v-video__track.v-slider.v-input--horizontal > .v-input__control {
|
||||
min-height: 4px;
|
||||
}
|
||||
.v-video__track .v-slider-thumb:not(:hover) .v-slider-thumb__label {
|
||||
opacity: 0;
|
||||
transition-delay: 0.2s;
|
||||
}
|
||||
.v-video__track .v-slider-thumb__label {
|
||||
color: rgb(var(--v-theme-on-surface-variant)) !important;
|
||||
}
|
||||
.v-video__time {
|
||||
font-size: 0.875rem;
|
||||
line-height: 1;
|
||||
letter-spacing: 0.02em;
|
||||
}
|
||||
.v-video--variant-player {
|
||||
width: 100%;
|
||||
}
|
||||
.v-video--variant-player > .v-video__content {
|
||||
width: 100%;
|
||||
aspect-ratio: var(--v-video-aspect-ratio);
|
||||
}
|
||||
.v-video--variant-background {
|
||||
outline: none;
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
pointer-events: none;
|
||||
}
|
||||
.v-video--variant-background > .v-video__content {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.v-video-controls {
|
||||
--v-background-opacity: 0.8;
|
||||
--v-video-controls-gap: 16px;
|
||||
--v-video-controls-pill-height: 42px;
|
||||
flex: 1 0 100%;
|
||||
align-self: stretch;
|
||||
padding: 8px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
gap: var(--v-video-controls-gap);
|
||||
min-height: var(--v-video-controls-height);
|
||||
backdrop-filter: blur(5px);
|
||||
background-color: rgba(var(--v-theme-surface), var(--v-background-opacity));
|
||||
color: rgb(var(--v-theme-on-surface));
|
||||
width: 100%;
|
||||
opacity: 0;
|
||||
}
|
||||
.v-video-controls--density-default {
|
||||
--v-video-controls-gap: 16px;
|
||||
}
|
||||
|
||||
.v-video-controls--density-comfortable {
|
||||
--v-video-controls-gap: 12px;
|
||||
}
|
||||
|
||||
.v-video-controls--density-compact {
|
||||
--v-video-controls-gap: 8px;
|
||||
}
|
||||
|
||||
.v-video-controls, .v-video-controls--pills > .v-video-control__pill {
|
||||
transition: 0.6s ease-in-out;
|
||||
transition-property: opacity, background-color;
|
||||
}
|
||||
.v-video-controls--pills > .v-video-control__pill {
|
||||
box-shadow: 0px 2px 4px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, 0.2)), 0px 4px 5px 0px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, 0.14)), 0px 1px 10px 0px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, 0.12));
|
||||
}
|
||||
.v-video-controls:hover {
|
||||
--v-background-opacity: 1;
|
||||
}
|
||||
.v-video-controls .v-video__track {
|
||||
width: auto;
|
||||
}
|
||||
.v-video-controls .v-video-control__pill {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
.v-video-controls--pills {
|
||||
--v-background-opacity: 1;
|
||||
--v-video-controls-height: calc(var(--v-video-controls-pill-height) + 24px);
|
||||
backdrop-filter: none;
|
||||
pointer-events: none;
|
||||
}
|
||||
.v-video-controls--pills > * {
|
||||
pointer-events: auto;
|
||||
}
|
||||
.v-video-controls--pills:not(:empty) {
|
||||
background: transparent;
|
||||
}
|
||||
.v-video-controls--pills > .v-video-control__pill {
|
||||
backdrop-filter: blur(5px);
|
||||
background: rgba(var(--v-theme-surface), var(--v-background-opacity));
|
||||
border-radius: var(--v-video-controls-pill-border-radius);
|
||||
min-height: var(--v-video-controls-pill-height);
|
||||
min-width: var(--v-video-controls-pill-height);
|
||||
padding: 0 6px;
|
||||
z-index: 1;
|
||||
}
|
||||
.v-video-controls--pills > .v-video-control__pill > .v-icon-btn {
|
||||
border-radius: inherit;
|
||||
}
|
||||
.v-video-controls--pills > .v-video-control__pill:empty {
|
||||
display: none;
|
||||
}
|
||||
.v-video-controls--pills > .v-video-control__pill:has(> *:only-child) {
|
||||
padding-inline: 0;
|
||||
justify-content: center;
|
||||
border-radius: var(--v-video-controls-pill-border-radius);
|
||||
}
|
||||
.v-video-controls--pills > .v-video__time {
|
||||
padding: 0 16px;
|
||||
}
|
||||
.v-video-controls--variant-tube .v-slider.v-video__track {
|
||||
position: absolute;
|
||||
top: -8px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
.v-video-controls--variant-tube .v-slider.v-video__track .v-slider-track {
|
||||
height: calc(var(--v-slider-track-size) + 10px);
|
||||
}
|
||||
.v-video-controls--variant-tube .v-slider.v-video__track .v-slider-track__fill {
|
||||
height: var(--v-slider-track-size);
|
||||
}
|
||||
.v-video-controls--split-time {
|
||||
padding-inline: 20px;
|
||||
}
|
||||
.v-video-controls:not(.v-video-controls--detached) {
|
||||
margin-top: calc(-1 * var(--v-video-controls-height));
|
||||
}
|
||||
.v-video-controls:not(.v-video-controls--floating) {
|
||||
border-bottom-left-radius: inherit;
|
||||
border-bottom-right-radius: inherit;
|
||||
}
|
||||
.v-video-controls:not(.v-video-controls--floating):not(.v-video-controls--pills) {
|
||||
border-top: thin solid rgba(var(--v-theme-surface-variant), 0.2);
|
||||
}
|
||||
.v-video-controls--floating {
|
||||
--v-background-opacity: 1;
|
||||
border-radius: inherit;
|
||||
margin-inline: 12px;
|
||||
width: calc(100% - 2 * 12px);
|
||||
}
|
||||
.v-video-controls--floating:not(.v-video-controls--detached) {
|
||||
margin-top: calc(-1 * var(--v-video-controls-height) - 12px);
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
.v-video-controls--detached {
|
||||
--v-background-opacity: 1;
|
||||
position: relative;
|
||||
margin-block-start: 12px;
|
||||
padding-inline: 12px;
|
||||
backdrop-filter: none;
|
||||
border-top: none;
|
||||
border-radius: inherit;
|
||||
opacity: 1;
|
||||
}
|
||||
.v-video-controls--detached:not(.v-video-controls--pills) {
|
||||
box-shadow: 0px 2px 4px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, 0.2)), 0px 4px 5px 0px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, 0.14)), 0px 1px 10px 0px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, 0.12));
|
||||
}
|
||||
.v-video:not(.v-video--playing) .v-video__header,
|
||||
.v-video:not(.v-video--playing) .v-video-controls, .v-video:hover .v-video__header,
|
||||
.v-video:hover .v-video-controls {
|
||||
opacity: 1;
|
||||
}
|
||||
.v-video--rounded {
|
||||
border-radius: 4px;
|
||||
}
|
||||
.v-video:fullscreen .v-video__content {
|
||||
min-height: 100% !important;
|
||||
min-width: 100% !important;
|
||||
}
|
||||
.v-video:fullscreen .v-video-controls {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
z-index: 2147483647;
|
||||
}
|
||||
.v-video:fullscreen .v-video-controls--floating {
|
||||
bottom: 12px;
|
||||
}
|
||||
|
||||
.poster-fade-out-leave-active {
|
||||
transition: opacity 1s linear 0.3s;
|
||||
}
|
||||
.poster-fade-out-leave-to {
|
||||
opacity: 0;
|
||||
}
|
||||
+9825
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user