1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from "vue";
- // Components
- import { makeVWindowProps, VWindow } from "../VWindow/VWindow.mjs"; // Composables
- import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
- import { computed, inject } from 'vue';
- import { genericComponent, omit, propsFactory, useRender } from "../../util/index.mjs"; // Types
- import { VTabsSymbol } from "./shared.mjs";
- export const makeVTabsWindowProps = propsFactory({
- ...omit(makeVWindowProps(), ['continuous', 'nextIcon', 'prevIcon', 'showArrows', 'touch', 'mandatory'])
- }, 'VTabsWindow');
- export const VTabsWindow = genericComponent()({
- name: 'VTabsWindow',
- props: makeVTabsWindowProps(),
- emits: {
- 'update:modelValue': v => true
- },
- setup(props, _ref) {
- let {
- slots
- } = _ref;
- const group = inject(VTabsSymbol, null);
- const _model = useProxiedModel(props, 'modelValue');
- const model = computed({
- get() {
- // Always return modelValue if defined
- // or if not within a VTabs group
- if (_model.value != null || !group) return _model.value;
- // If inside of a VTabs, find the currently selected
- // item by id. Item value may be assigned by its index
- return group.items.value.find(item => group.selected.value.includes(item.id))?.value;
- },
- set(val) {
- _model.value = val;
- }
- });
- useRender(() => {
- const windowProps = VWindow.filterProps(props);
- return _createVNode(VWindow, _mergeProps({
- "_as": "VTabsWindow"
- }, windowProps, {
- "modelValue": model.value,
- "onUpdate:modelValue": $event => model.value = $event,
- "class": ['v-tabs-window', props.class],
- "style": props.style,
- "mandatory": false,
- "touch": false
- }), slots);
- });
- return {};
- }
- });
- //# sourceMappingURL=VTabsWindow.mjs.map
|