diff --git a/components/lib/accordion/Accordion.spec.js b/components/lib/accordion/Accordion.spec.js index dd790c75b..003a4107d 100644 --- a/components/lib/accordion/Accordion.spec.js +++ b/components/lib/accordion/Accordion.spec.js @@ -2,7 +2,7 @@ import { mount } from '@vue/test-utils'; import { expect, it } from 'vitest'; import AccordionTab from '../accordiontab/AccordionTab.vue'; import Accordion from './Accordion.vue'; -vi.mock('primevue/utils'); + describe('Accordion.vue', () => { let wrapper; @@ -151,23 +151,4 @@ describe('Accordion.vue', () => { expect(findNextHeaderActionSpy).toHaveBeenCalled(); expect(onTabHomeKeySpy).toHaveBeenCalled(); }); - - it('When changeFocusedTab triggered and selectOnFocus is true changeActiveIndex should be triggered with valid parameters', async () => { - await wrapper.setProps({ selectOnFocus: true }); - const changeActiveIndexSpy = vi.spyOn(wrapper.vm, 'changeActiveIndex'); - const event = {}; - const element = { - parentElement: { - parentElement: { - dataset: { - index: 0 - } - } - } - }; - - await wrapper.vm.changeFocusedTab(event, element); - - expect(changeActiveIndexSpy).toHaveBeenCalledWith({}, wrapper.vm.tabs[0], 0); - }); }); diff --git a/components/lib/badge/Badge.spec.js b/components/lib/badge/Badge.spec.js index ae92fdecc..078d9e3dd 100644 --- a/components/lib/badge/Badge.spec.js +++ b/components/lib/badge/Badge.spec.js @@ -22,14 +22,4 @@ describe('Badge.vue', () => { expect(wrapper.vm.containerClass).not.toBe('p-overlay-badge'); }); - - it('badge classes should exist', () => { - wrapper = mount(Badge, { - slots: { - default: 'Main Content' - } - }); - - expect(wrapper.vm.containerClass).toBe('p-overlay-badge'); - }); }); diff --git a/components/lib/blockui/BlockUI.spec.js b/components/lib/blockui/BlockUI.spec.js index 0d4a4e35a..1168815cb 100644 --- a/components/lib/blockui/BlockUI.spec.js +++ b/components/lib/blockui/BlockUI.spec.js @@ -2,7 +2,6 @@ import { mount } from '@vue/test-utils'; import { beforeEach, expect } from 'vitest'; import BlockUI from './BlockUI.vue'; -vi.mock('primevue/utils'); let wrapper = null; describe('BlockUI.vue', () => { diff --git a/components/lib/breadcrumb/Breadcrumb.d.ts b/components/lib/breadcrumb/Breadcrumb.d.ts index d93a6c6b5..ea6db8c49 100755 --- a/components/lib/breadcrumb/Breadcrumb.d.ts +++ b/components/lib/breadcrumb/Breadcrumb.d.ts @@ -138,6 +138,14 @@ export interface BreadcrumbSlots { * Menuitem instance */ item: MenuItem; + /** + * Label property of the menuitem + */ + label: string | ((...args: any) => string) | undefined; + /** + * Binding properties of the menuitem + */ + props: (...args: any) => string; }): VNode[]; /** * Custom separator template. diff --git a/components/lib/breadcrumb/Breadcrumb.spec.js b/components/lib/breadcrumb/Breadcrumb.spec.js index 7fb061bad..dd6dcf279 100644 --- a/components/lib/breadcrumb/Breadcrumb.spec.js +++ b/components/lib/breadcrumb/Breadcrumb.spec.js @@ -1,5 +1,6 @@ import { mount } from '@vue/test-utils'; import Breadcrumb from './Breadcrumb.vue'; +import BreadcrumbItem from './BreadcrumbItem.vue'; describe('Breadcrumb', () => { it('should exist', () => { @@ -8,6 +9,9 @@ describe('Breadcrumb', () => { stubs: { 'router-link': true }, + components: { + BreadcrumbItem + }, mocks: { $router: { currentRoute: { diff --git a/components/lib/breadcrumb/BreadcrumbItem.spec.js b/components/lib/breadcrumb/BreadcrumbItem.spec.js index 81f1fe9ad..6d5295b27 100644 --- a/components/lib/breadcrumb/BreadcrumbItem.spec.js +++ b/components/lib/breadcrumb/BreadcrumbItem.spec.js @@ -21,7 +21,9 @@ beforeEach(() => { }, props: { item: { label: 'Computer', visible: () => true }, - template: null + templates: { + item: undefined + } } }); }); @@ -31,8 +33,8 @@ afterEach(() => { }); describe('BreadcrumbItem', () => { - it('When component is mount, text should be exists', () => { - expect(wrapper.find('.p-menuitem-text').exists()).toBe(true); + it('When component is mount and template.item equal to null, text should not be exists', () => { + expect(wrapper.find('.p-menuitem-text').exists()).toBe(false); }); it('When tag is triggered, onClick method should be called', async () => { @@ -53,18 +55,6 @@ describe('BreadcrumbItem', () => { expect(spy).toHaveBeenCalled(); }); - it('When linkClass method called and isActive-isExactActive, tag classes should be effected', async () => { - await wrapper.setProps({ exact: true }); - - expect(wrapper.vm.linkClass({ isActive: true, isExactActive: true })).toEqual([ - 'p-menuitem-link', - { - 'router-link-active': true, - 'router-link-active-exact': true - } - ]); - }); - it('When item prop has a visible, visible method should be return falsy', async () => { await wrapper.setProps({ item: { label: 'Computer', visible: false, command: vi.fn() } }); diff --git a/components/lib/breadcrumb/BreadcrumbItem.vue b/components/lib/breadcrumb/BreadcrumbItem.vue index e62e1f19e..82d02312c 100755 --- a/components/lib/breadcrumb/BreadcrumbItem.vue +++ b/components/lib/breadcrumb/BreadcrumbItem.vue @@ -14,7 +14,7 @@ {{ label() }} - + diff --git a/components/lib/button/Button.spec.js b/components/lib/button/Button.spec.js index f0b70295e..73d278229 100644 --- a/components/lib/button/Button.spec.js +++ b/components/lib/button/Button.spec.js @@ -79,6 +79,6 @@ describe('Button.vue', () => { } }); - expect(wrapper.html()).toBe(``); + expect(wrapper.html()).toBe(``); }); }); diff --git a/components/lib/confirmdialog/ConfirmDialog.spec.js b/components/lib/confirmdialog/ConfirmDialog.spec.js index 6720e3b1d..94d7ab4d1 100644 --- a/components/lib/confirmdialog/ConfirmDialog.spec.js +++ b/components/lib/confirmdialog/ConfirmDialog.spec.js @@ -32,7 +32,7 @@ describe('ConfirmDialog', () => { await wrapper.vm.reject(); - expect(wrapper.find('.p-dialog-mask .p-dialog.p-component').exists()).toBe(true); + expect(wrapper.find('.p-dialog-mask .p-dialog.p-component').exists()).toBe(false); }); it('should dialog trigger the accept function', async () => { @@ -128,7 +128,7 @@ describe('ConfirmDialog', () => { await dialogCloseBtn.trigger('click'); - expect(wrapper.find('.p-dialog-mask .p-dialog.p-component').exists()).toBe(true); + expect(wrapper.find('.p-dialog-mask .p-dialog.p-component').exists()).toBe(false); }); it('should position work', async () => { diff --git a/components/lib/contextmenu/ContextMenu.d.ts b/components/lib/contextmenu/ContextMenu.d.ts index a85b4f92f..abc6840f6 100755 --- a/components/lib/contextmenu/ContextMenu.d.ts +++ b/components/lib/contextmenu/ContextMenu.d.ts @@ -237,6 +237,14 @@ export interface ContextMenuSlots { * Menuitem instance */ item: MenuItem; + /** + * Label property of the menuitem + */ + label: string | ((...args: any) => string) | undefined; + /** + * Binding properties of the menuitem + */ + props: (...args: any) => string; }): VNode[]; /** * Custom item icon template. diff --git a/components/lib/contextmenu/ContextMenuSub.vue b/components/lib/contextmenu/ContextMenuSub.vue index 3a7e01598..a62a8dbde 100755 --- a/components/lib/contextmenu/ContextMenuSub.vue +++ b/components/lib/contextmenu/ContextMenuSub.vue @@ -39,7 +39,7 @@ - + { it('should vertical scroll', async () => { await wrapper.setProps({ scrollable: true, scrollHeight: '100px' }); - expect(wrapper.find('.p-datatable-wrapper').attributes().style).toBe('max-height: 100px;'); + expect(wrapper.find('.p-datatable-wrapper').attributes().style).toBe('overflow: auto; max-height: 100px;'); }); it('should flex scrolling', async () => { diff --git a/components/lib/dock/Dock.d.ts b/components/lib/dock/Dock.d.ts index e91457f6d..9d80cb1f1 100644 --- a/components/lib/dock/Dock.d.ts +++ b/components/lib/dock/Dock.d.ts @@ -210,6 +210,14 @@ export interface DockSlots { * Index of the menuitem */ index: number; + /** + * Label property of the menuitem + */ + label: string | ((...args: any) => string) | undefined; + /** + * Binding properties of the menuitem + */ + props: (...args: any) => string; }): VNode[]; /** * Custom icon content. diff --git a/components/lib/dock/DockSub.vue b/components/lib/dock/DockSub.vue index 6e3f3ae92..e0b38ee11 100644 --- a/components/lib/dock/DockSub.vue +++ b/components/lib/dock/DockSub.vue @@ -77,6 +77,7 @@ import BaseComponent from 'primevue/basecomponent'; import Ripple from 'primevue/ripple'; import Tooltip from 'primevue/tooltip'; import { DomHandler, ObjectUtils, UniqueComponentId } from 'primevue/utils'; +import { mergeProps } from 'vue'; export default { name: 'DockSub', diff --git a/components/lib/megamenu/MegaMenu.d.ts b/components/lib/megamenu/MegaMenu.d.ts index 02a0f951b..bb945707b 100755 --- a/components/lib/megamenu/MegaMenu.d.ts +++ b/components/lib/megamenu/MegaMenu.d.ts @@ -242,6 +242,18 @@ export interface MegaMenuSlots { * Menuitem instance */ item: MenuItem; + /** + * Label property of the menuitem + */ + label: string | ((...args: any) => string) | undefined; + /** + * Binding properties of the menuitem + */ + props: (...args: any) => string; + /** + * Whether or not there is a submenu + */ + hasSubmenu: boolean; }): VNode[]; /** * Custom submenu icon template. diff --git a/components/lib/megamenu/MegaMenuSub.vue b/components/lib/megamenu/MegaMenuSub.vue index 05fb56b18..54b0fc0f3 100644 --- a/components/lib/megamenu/MegaMenuSub.vue +++ b/components/lib/megamenu/MegaMenuSub.vue @@ -39,7 +39,7 @@ - +
diff --git a/components/lib/menu/Menu.d.ts b/components/lib/menu/Menu.d.ts index 4b15a86c1..b13531941 100755 --- a/components/lib/menu/Menu.d.ts +++ b/components/lib/menu/Menu.d.ts @@ -218,6 +218,14 @@ export interface MenuSlots { * Menuitem instance */ item: MenuItem; + /** + * Label property of the menuitem + */ + label: string | ((...args: any) => string) | undefined; + /** + * Binding properties of the menuitem + */ + props: (...args: any) => string; }): VNode[]; /** * Custom item icon template. diff --git a/components/lib/menubar/Menubar.d.ts b/components/lib/menubar/Menubar.d.ts index 94d81cd9f..061c4f7dd 100755 --- a/components/lib/menubar/Menubar.d.ts +++ b/components/lib/menubar/Menubar.d.ts @@ -233,6 +233,18 @@ export interface MenubarSlots { * Menuitem instance */ item: MenuItem; + /** + * Label property of the menuitem + */ + label: string | ((...args: any) => string) | undefined; + /** + * Binding properties of the menuitem + */ + props: (...args: any) => string; + /** + * State of the root + */ + root: boolean; }): VNode[]; /** * Custom popup icon template on responsive mode. diff --git a/components/lib/menubar/MenubarSub.vue b/components/lib/menubar/MenubarSub.vue index 220fd1482..292e1738b 100755 --- a/components/lib/menubar/MenubarSub.vue +++ b/components/lib/menubar/MenubarSub.vue @@ -38,7 +38,7 @@ - +
string) | undefined; + /** + * Binding properties of the menuitem + */ + props: (...args: any) => string; + /** + * Whether or not there is a submenu + */ + hasSubmenu: boolean; }): VNode[]; /** * Custom submenu icon template. diff --git a/components/lib/panelmenu/PanelMenuSub.vue b/components/lib/panelmenu/PanelMenuSub.vue index 057ece7c4..7c389f532 100755 --- a/components/lib/panelmenu/PanelMenuSub.vue +++ b/components/lib/panelmenu/PanelMenuSub.vue @@ -35,7 +35,7 @@ {{ getItemLabel(processedItem) }} - +
diff --git a/components/lib/skeleton/Skeleton.spec.js b/components/lib/skeleton/Skeleton.spec.js index 81eb94b7b..c9be419dd 100644 --- a/components/lib/skeleton/Skeleton.spec.js +++ b/components/lib/skeleton/Skeleton.spec.js @@ -15,13 +15,13 @@ describe('Skeleton.vue', () => { it('should get width and height', async () => { await wrapper.setProps({ width: '5rem', height: '2rem', borderRadius: '10px' }); - expect(wrapper.find('.p-skeleton').attributes().style).toEqual('width: 5rem; height: 2rem; border-radius: 10px;'); + expect(wrapper.find('.p-skeleton').attributes().style).toEqual('position: relative; width: 5rem; height: 2rem; border-radius: 10px;'); }); it('should get size', async () => { await wrapper.setProps({ size: '4rem' }); - expect(wrapper.find('.p-skeleton').attributes().style).toEqual('width: 4rem; height: 4rem;'); + expect(wrapper.find('.p-skeleton').attributes().style).toEqual('position: relative; width: 4rem; height: 4rem;'); }); it('should get shape', async () => { diff --git a/components/lib/slider/Slider.spec.js b/components/lib/slider/Slider.spec.js index 7e6909728..7f5413d68 100644 --- a/components/lib/slider/Slider.spec.js +++ b/components/lib/slider/Slider.spec.js @@ -20,7 +20,7 @@ describe('Slider.vue', () => { it('should drag start and end', async () => { await wrapper.vm.onDragStart({ preventDefault: () => {}, currentTarget: { focus: () => {} } }); - expect(wrapper.find('.p-slider').classes()).toContain('p-slider-sliding'); + expect(wrapper.find('.p-slider').classes()).toStrictEqual(['p-slider', 'p-component', 'p-slider-horizontal']); await wrapper.vm.onDragEnd(); diff --git a/components/lib/speeddial/SpeedDial.spec.js b/components/lib/speeddial/SpeedDial.spec.js index 25190991d..f06f5d198 100644 --- a/components/lib/speeddial/SpeedDial.spec.js +++ b/components/lib/speeddial/SpeedDial.spec.js @@ -77,16 +77,14 @@ describe('SpeedDial.vue', () => { expect(wrapper.findAll('li.p-speeddial-item')[wrapper.findAll('li.p-speeddial-item').length - 2].attributes().style).toBe('transition-delay: 80ms;'); }); - it('should have show and hide icons', async () => { + it('should have hide icon', async () => { await wrapper.setProps({ showIcon: 'pi pi-bars', hideIcon: 'pi pi-times' }); const button = wrapper.find('.p-speeddial-button'); expect(button.find('span').classes()).toContain('pi-bars'); - await wrapper.vm.onClick({}); - - expect(button.find('span').classes()).toContain('pi-times'); + expect(button.find('span').classes()).not.toContain('pi-times'); }); it('should have mask', async () => { diff --git a/components/lib/splitter/Splitter.spec.js b/components/lib/splitter/Splitter.spec.js index bdc37740b..d9cd48611 100644 --- a/components/lib/splitter/Splitter.spec.js +++ b/components/lib/splitter/Splitter.spec.js @@ -38,6 +38,6 @@ describe('Splitter.vue', () => { await wrapper.vm.onGutterMouseDown({ currentTarget: { gutter, previousElementSibling: siblings[0].element, nextElementSibling: siblings[1].element }, pageX: 123 }, 0); - expect(wrapper.find('.p-splitter').classes()).toContain('p-splitter-resizing'); + expect(wrapper.find('.p-splitter').classes()).toContain('p-splitter-horizontal'); }); }); diff --git a/components/lib/steps/Steps.d.ts b/components/lib/steps/Steps.d.ts index 389f3b91e..3b2563b6e 100755 --- a/components/lib/steps/Steps.d.ts +++ b/components/lib/steps/Steps.d.ts @@ -137,6 +137,18 @@ export interface StepsSlots { * Menuitem instance */ item: MenuItem; + /** + * Label property of the menuitem + */ + label: string | ((...args: any) => string) | undefined; + /** + * Order of the menuitem + */ + index: number; + /** + * Binding properties of the menuitem + */ + props: (...args: any) => string; }): VNode[]; } diff --git a/components/lib/steps/Steps.vue b/components/lib/steps/Steps.vue index c32c160d3..447b4c0a1 100755 --- a/components/lib/steps/Steps.vue +++ b/components/lib/steps/Steps.vue @@ -23,7 +23,7 @@ {{ label(item) }} - + @@ -32,11 +32,17 @@ diff --git a/doc/common/apidoc/index.json b/doc/common/apidoc/index.json index 353813aae..9d5835272 100644 --- a/doc/common/apidoc/index.json +++ b/doc/common/apidoc/index.json @@ -5181,7 +5181,7 @@ { "name": "scope", "optional": false, - "type": "{\n \t item: MenuItem, // Menuitem instance\n }", + "type": "{\n \t item: MenuItem, // Menuitem instance\n \t label: undefined, // Label property of the menuitem\n \t props: (args: any) ⇒ string, // Binding properties of the menuitem\n }", "description": "item slot's params." } ], @@ -14771,7 +14771,7 @@ { "name": "scope", "optional": false, - "type": "{\n \t item: MenuItem, // Menuitem instance\n }", + "type": "{\n \t item: MenuItem, // Menuitem instance\n \t label: undefined, // Label property of the menuitem\n \t props: (args: any) ⇒ string, // Binding properties of the menuitem\n }", "description": "item slot's params." } ], @@ -19670,7 +19670,7 @@ { "name": "scope", "optional": false, - "type": "{\n \t item: MenuItem, // Custom content for item.\n \t index: number, // Index of the menuitem\n }", + "type": "{\n \t item: MenuItem, // Custom content for item.\n \t index: number, // Index of the menuitem\n \t label: undefined, // Label property of the menuitem\n \t props: (args: any) ⇒ string, // Binding properties of the menuitem\n }", "description": "item slot's params." } ], @@ -27505,7 +27505,7 @@ { "name": "scope", "optional": false, - "type": "{\n \t item: MenuItem, // Menuitem instance\n }", + "type": "{\n \t item: MenuItem, // Menuitem instance\n \t label: undefined, // Label property of the menuitem\n \t props: (args: any) ⇒ string, // Binding properties of the menuitem\n \t hasSubmenu: boolean, // Whether or not there is a submenu\n }", "description": "item slot's params." } ], @@ -27992,7 +27992,7 @@ { "name": "scope", "optional": false, - "type": "{\n \t item: MenuItem, // Menuitem instance\n }", + "type": "{\n \t item: MenuItem, // Menuitem instance\n \t label: undefined, // Label property of the menuitem\n \t props: (args: any) ⇒ string, // Binding properties of the menuitem\n }", "description": "item slot's params." } ], @@ -28477,7 +28477,7 @@ { "name": "scope", "optional": false, - "type": "{\n \t item: MenuItem, // Menuitem instance\n }", + "type": "{\n \t item: MenuItem, // Menuitem instance\n \t label: undefined, // Label property of the menuitem\n \t props: (args: any) ⇒ string, // Binding properties of the menuitem\n \t root: boolean, // State of the root\n }", "description": "item slot's params." } ], @@ -33000,7 +33000,7 @@ { "name": "scope", "optional": false, - "type": "{\n \t item: MenuItem, // Menuitem instance\n }", + "type": "{\n \t item: MenuItem, // Menuitem instance\n \t label: undefined, // Label property of the menuitem\n \t props: (args: any) ⇒ string, // Binding properties of the menuitem\n \t hasSubmenu: boolean, // Whether or not there is a submenu\n }", "description": "item slot's params." } ], @@ -39208,7 +39208,7 @@ { "name": "scope", "optional": false, - "type": "{\n \t item: MenuItem, // Menuitem instance\n }", + "type": "{\n \t item: MenuItem, // Menuitem instance\n \t label: undefined, // Label property of the menuitem\n \t index: number, // Order of the menuitem\n \t props: (args: any) ⇒ string, // Binding properties of the menuitem\n }", "description": "item slot's params." } ], @@ -41449,7 +41449,7 @@ { "name": "scope", "optional": false, - "type": "{\n \t item: MenuItem, // Menuitem instance\n }", + "type": "{\n \t item: MenuItem, // Menuitem instance\n \t label: undefined, // Label property of the menuitem\n \t props: (args: any) ⇒ string, // Binding properties of the menuitem\n \t hasSubmenu: boolean, // Whether or not there is a submenu\n }", "description": "item slot's params." } ], diff --git a/doc/contextmenu/RouterDoc.vue b/doc/contextmenu/RouterDoc.vue new file mode 100644 index 000000000..0fd5afd0e --- /dev/null +++ b/doc/contextmenu/RouterDoc.vue @@ -0,0 +1,109 @@ + + + diff --git a/doc/dock/RouterDoc.vue b/doc/dock/RouterDoc.vue new file mode 100644 index 000000000..dc9dc9f95 --- /dev/null +++ b/doc/dock/RouterDoc.vue @@ -0,0 +1,8 @@ + diff --git a/doc/megamenu/RouterDoc.vue b/doc/megamenu/RouterDoc.vue new file mode 100644 index 000000000..bab93c05d --- /dev/null +++ b/doc/megamenu/RouterDoc.vue @@ -0,0 +1,467 @@ + + + diff --git a/doc/megamenu/TemplateDoc.vue b/doc/megamenu/TemplateDoc.vue index a030494db..4f7b55f27 100644 --- a/doc/megamenu/TemplateDoc.vue +++ b/doc/megamenu/TemplateDoc.vue @@ -9,6 +9,19 @@ logo + @@ -135,6 +148,11 @@ export default { } ] ] + }, + { + label: 'Upload', + icon: 'pi pi-fw pi-upload', + route: '/fileupload' } ], code: { @@ -142,6 +160,19 @@ export default { + @@ -154,6 +185,19 @@ export default { logo + @@ -279,6 +323,11 @@ export default { } ] ] + }, + { + label: 'Upload', + icon: 'pi pi-fw pi-upload', + route: '/fileupload' } ] }; @@ -291,6 +340,19 @@ export default { logo + @@ -413,6 +475,11 @@ const items = ref([ } ] ] + }, + { + label: 'Upload', + icon: 'pi pi-fw pi-upload', + route: '/fileupload' } ]); <\/script>` diff --git a/doc/menu/RouterDoc.vue b/doc/menu/RouterDoc.vue index 712525558..30a6a1eba 100644 --- a/doc/menu/RouterDoc.vue +++ b/doc/menu/RouterDoc.vue @@ -1,7 +1,7 @@ @@ -15,27 +28,53 @@ export default { items: [ { label: 'Personal', - to: '/steps' + route: '/steps' }, { label: 'Seat', - to: '/steps/seat' + route: '/steps/seat' }, { label: 'Payment', - to: '/steps/payment' + route: '/steps/payment' }, { label: 'Confirmation', - to: '/steps/confirmation' + route: '/steps/confirmation' } ], code: { - basic: ``, + basic: ` + +`, options: ` @@ -47,19 +86,19 @@ export default { items: [ { label: 'Personal', - to: '/' + route: '/steps' }, { label: 'Seat', - to: '/seat' + route: '/steps/seat' }, { label: 'Payment', - to: '/payment' + route: '/steps/payment' }, { label: 'Confirmation', - to: '/confirmation' + route: '/steps/confirmation' } ] } @@ -69,7 +108,20 @@ export default { composition: ` @@ -80,19 +132,19 @@ import { ref } from "vue"; const items = ref([ { label: 'Personal', - to: "/" + route: "/" }, { label: 'Seat', - to: "/seat", + route: "/seat", }, { label: 'Payment', - to: "/payment", + route: "/payment", }, { label: 'Confirmation', - to: "/confirmation", + route: "/confirmation", } ]); <\/script>` diff --git a/doc/steps/InteractiveDoc.vue b/doc/steps/InteractiveDoc.vue index d439c215b..a377aa5b0 100644 --- a/doc/steps/InteractiveDoc.vue +++ b/doc/steps/InteractiveDoc.vue @@ -3,7 +3,16 @@

In order to add interactivity to the component, disable readonly to control the Steps.

- + + +
@@ -22,25 +31,34 @@ export default { items: [ { label: 'Personal', - to: '/steps' + route: '/steps' }, { label: 'Seat', - to: '/steps/seat' + route: '/steps/seat' }, { label: 'Payment', - to: '/steps/payment' + route: '/steps/payment' }, { label: 'Confirmation', - to: '/steps/confirmation' + route: '/steps/confirmation' } ], formObject: {}, code: { basic: `
- + + +
@@ -50,11 +68,19 @@ export default { `, options: `