@indielayer/ui 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/App.vue +19 -4
- package/docs/assets/css/tailwind.css +7 -1
- package/docs/components/Cookies.vue +3 -1
- package/docs/components/common/CodePreview.vue +1 -1
- package/docs/components/common/DocsCopyPage.vue +200 -0
- package/docs/components/common/DocumentPage.vue +76 -23
- package/docs/components/toolbar/ToolbarColorToggle.vue +29 -18
- package/docs/components/toolbar/ToolbarSearch.vue +4 -4
- package/docs/composables/useDocMeta.ts +63 -4
- package/docs/icons.ts +3 -0
- package/docs/main.ts +25 -26
- package/docs/pages/component/accordion/index.vue +2 -2
- package/docs/pages/component/alert/index.vue +2 -2
- package/docs/pages/component/avatar/index.vue +4 -4
- package/docs/pages/component/badge/index.vue +2 -2
- package/docs/pages/component/breadcrumbs/index.vue +2 -2
- package/docs/pages/component/button/button-group.vue +3 -3
- package/docs/pages/component/button/index.vue +14 -7
- package/docs/pages/component/button/tooltip.vue +10 -0
- package/docs/pages/component/card/index.vue +2 -2
- package/docs/pages/component/carousel/index.vue +2 -2
- package/docs/pages/component/checkbox/index.vue +5 -5
- package/docs/pages/component/container/index.vue +2 -2
- package/docs/pages/component/datepicker/index.vue +2 -2
- package/docs/pages/component/divider/index.vue +4 -4
- package/docs/pages/component/drawer/index.vue +2 -2
- package/docs/pages/component/empty/index.vue +3 -3
- package/docs/pages/component/form/index.vue +2 -2
- package/docs/pages/component/formGroup/index.vue +2 -2
- package/docs/pages/component/infiniteLoader/index.vue +3 -3
- package/docs/pages/component/input/index.vue +5 -5
- package/docs/pages/component/inputGroup/index.vue +3 -3
- package/docs/pages/component/inputGroup/validation.vue +6 -1
- package/docs/pages/component/link/index.vue +2 -2
- package/docs/pages/component/loader/index.vue +2 -2
- package/docs/pages/component/menu/index.vue +2 -2
- package/docs/pages/component/modal/index.vue +3 -3
- package/docs/pages/component/notifications/index.vue +2 -2
- package/docs/pages/component/pagination/index.vue +2 -2
- package/docs/pages/component/popover/index.vue +2 -2
- package/docs/pages/component/popover/usage.vue +14 -0
- package/docs/pages/component/progress/index.vue +3 -3
- package/docs/pages/component/qrCode/index.vue +2 -2
- package/docs/pages/component/radio/index.vue +3 -3
- package/docs/pages/component/scroll/index.vue +3 -3
- package/docs/pages/component/select/index.vue +5 -5
- package/docs/pages/component/skeleton/index.vue +2 -2
- package/docs/pages/component/slider/index.vue +2 -2
- package/docs/pages/component/spacer/index.vue +2 -2
- package/docs/pages/component/spinner/index.vue +3 -3
- package/docs/pages/component/table/index.vue +4 -4
- package/docs/pages/component/tabs/index.vue +2 -2
- package/docs/pages/component/tabs/usage.vue +26 -0
- package/docs/pages/component/tag/index.vue +2 -2
- package/docs/pages/component/textarea/index.vue +4 -4
- package/docs/pages/component/toggle/index.vue +4 -4
- package/docs/pages/component/upload/index.vue +2 -2
- package/docs/pages/component/upload/usage.vue +1 -0
- package/docs/pages/component/virtualGrid/index.vue +2 -2
- package/docs/pages/component/virtualList/index.vue +3 -3
- package/docs/pages/icons.vue +2 -2
- package/docs/router/index.ts +39 -44
- package/docs/search/components.json +1 -1
- package/docs/search/index.json +1 -1
- package/lib/common/buttonGroupRadius.d.ts +3 -0
- package/lib/common/buttonGroupRadius.js +6 -0
- package/lib/common/props.d.ts +1 -1
- package/lib/common/props.js +10 -9
- package/lib/components/accordion/Accordion.vue.d.ts +42 -9
- package/lib/components/accordion/Accordion.vue_vue_type_script_setup_true_lang.js +18 -6
- package/lib/components/accordion/AccordionItem.vue.d.ts +33 -6
- package/lib/components/accordion/AccordionItem.vue_vue_type_script_setup_true_lang.js +31 -6
- package/lib/components/alert/Alert.vue.d.ts +27 -6
- package/lib/components/alert/Alert.vue_vue_type_script_setup_true_lang.js +20 -6
- package/lib/components/avatar/Avatar.vue.d.ts +45 -9
- package/lib/components/avatar/Avatar.vue_vue_type_script_setup_true_lang.js +17 -6
- package/lib/components/badge/Badge.vue.d.ts +54 -9
- package/lib/components/badge/Badge.vue_vue_type_script_setup_true_lang.js +26 -9
- package/lib/components/breadcrumbs/Breadcrumbs.vue.d.ts +30 -6
- package/lib/components/breadcrumbs/Breadcrumbs.vue_vue_type_script_setup_true_lang.js +13 -5
- package/lib/components/button/Button.js +2 -2
- package/lib/components/button/Button.vue.d.ts +138 -28
- package/lib/components/button/Button.vue_vue_type_script_setup_true_lang.js +192 -70
- package/lib/components/button/ButtonGroup.js +4 -5
- package/lib/components/button/ButtonGroup.vue.d.ts +54 -10
- package/lib/components/button/ButtonGroup.vue_vue_type_script_setup_true_lang.js +30 -19
- package/lib/components/button/theme/Button.base.theme.js +6 -5
- package/lib/components/button/theme/Button.carbon.theme.js +6 -5
- package/lib/components/card/Card.vue.d.ts +3 -0
- package/lib/components/card/Card.vue_vue_type_script_setup_true_lang.js +4 -2
- package/lib/components/carousel/Carousel.vue.d.ts +21 -3
- package/lib/components/carousel/Carousel.vue_vue_type_script_setup_true_lang.js +23 -5
- package/lib/components/carousel/CarouselSlide.js +2 -2
- package/lib/components/carousel/CarouselSlide.vue.d.ts +3 -0
- package/lib/components/carousel/CarouselSlide.vue_vue_type_script_setup_true_lang.js +3 -1
- package/lib/components/carousel/{CarouselSlide.vue_vue_type_style_index_0_scoped_e90d2127_lang.module.js → CarouselSlide.vue_vue_type_style_index_0_scoped_4f559831_lang.module.js} +1 -1
- package/lib/components/checkbox/Checkbox.vue.d.ts +198 -45
- package/lib/components/checkbox/Checkbox.vue_vue_type_script_setup_true_lang.js +20 -3
- package/lib/components/container/Container.vue.d.ts +6 -0
- package/lib/components/container/Container.vue_vue_type_script_setup_true_lang.js +5 -2
- package/lib/components/datepicker/Datepicker.vue.d.ts +462 -36
- package/lib/components/datepicker/Datepicker.vue_vue_type_script_setup_true_lang.js +294 -153
- package/lib/components/divider/Divider.vue.d.ts +12 -3
- package/lib/components/divider/Divider.vue_vue_type_script_setup_true_lang.js +6 -2
- package/lib/components/drawer/Drawer.vue.d.ts +39 -6
- package/lib/components/drawer/Drawer.vue_vue_type_script_setup_true_lang.js +30 -7
- package/lib/components/empty/Empty.vue.d.ts +30 -6
- package/lib/components/empty/Empty.vue_vue_type_script_setup_true_lang.js +17 -4
- package/lib/components/form/Form.vue.d.ts +48 -9
- package/lib/components/form/Form.vue_vue_type_script_setup_true_lang.js +34 -7
- package/lib/components/formGroup/FormGroup.vue.d.ts +171 -39
- package/lib/components/formGroup/FormGroup.vue_vue_type_script_setup_true_lang.js +15 -9
- package/lib/components/icon/Icon.vue.d.ts +9 -0
- package/lib/components/icon/Icon.vue_vue_type_script_setup_true_lang.js +6 -3
- package/lib/components/image/Image.vue.d.ts +12 -3
- package/lib/components/image/Image.vue_vue_type_script_setup_true_lang.js +5 -1
- package/lib/components/index.js +18 -18
- package/lib/components/input/Input.vue.d.ts +291 -66
- package/lib/components/input/Input.vue_vue_type_script_setup_true_lang.js +53 -15
- package/lib/components/inputFooter/InputFooter.vue.d.ts +48 -12
- package/lib/components/inputFooter/InputFooter.vue_vue_type_script_setup_true_lang.js +18 -5
- package/lib/components/inputGroup/InputGroup.vue.d.ts +171 -39
- package/lib/components/inputGroup/InputGroup.vue_vue_type_script_setup_true_lang.js +6 -1
- package/lib/components/label/Label.vue.d.ts +78 -18
- package/lib/components/label/Label.vue_vue_type_script_setup_true_lang.js +28 -8
- package/lib/components/link/Link.js +2 -2
- package/lib/components/link/Link.vue.d.ts +18 -3
- package/lib/components/link/Link.vue_vue_type_script_setup_true_lang.js +10 -5
- package/lib/components/loader/Loader.vue.d.ts +30 -6
- package/lib/components/loader/Loader.vue_vue_type_script_setup_true_lang.js +11 -3
- package/lib/components/menu/Menu.vue.d.ts +51 -9
- package/lib/components/menu/Menu.vue_vue_type_script_setup_true_lang.js +24 -8
- package/lib/components/menu/MenuItem.js +2 -2
- package/lib/components/menu/MenuItem.vue.d.ts +198 -45
- package/lib/components/menu/MenuItem.vue_vue_type_script_setup_true_lang.js +84 -23
- package/lib/components/menu/{MenuItem.vue_vue_type_style_index_0_scoped_2a6b7341_lang.module.js → MenuItem.vue_vue_type_style_index_0_scoped_5aebaff3_lang.module.js} +1 -1
- package/lib/components/modal/Modal.vue.d.ts +177 -39
- package/lib/components/modal/Modal.vue_vue_type_script_setup_true_lang.js +104 -23
- package/lib/components/notifications/Notifications.vue.d.ts +24 -0
- package/lib/components/notifications/Notifications.vue_vue_type_script_setup_true_lang.js +39 -12
- package/lib/components/pagination/Pagination.vue.d.ts +12 -0
- package/lib/components/pagination/Pagination.vue_vue_type_script_setup_true_lang.js +8 -4
- package/lib/components/pagination/PaginationItem.vue.d.ts +18 -3
- package/lib/components/pagination/PaginationItem.vue_vue_type_script_setup_true_lang.js +8 -3
- package/lib/components/popover/Popover.vue.d.ts +204 -45
- package/lib/components/popover/Popover.vue_vue_type_script_setup_true_lang.js +157 -66
- package/lib/components/popover/PopoverContainer.vue.d.ts +3 -0
- package/lib/components/popover/PopoverContainer.vue_vue_type_script_setup_true_lang.js +3 -1
- package/lib/components/popover/PopoverContentBoundary.js +5 -0
- package/lib/components/popover/PopoverContentBoundary.vue.d.ts +9 -0
- package/lib/components/popover/PopoverContentBoundary.vue_vue_type_script_setup_true_lang.js +18 -0
- package/lib/components/popover/theme/PopoverContainer.base.theme.js +1 -1
- package/lib/components/progress/Progress.vue.d.ts +9 -0
- package/lib/components/progress/Progress.vue_vue_type_script_setup_true_lang.js +7 -4
- package/lib/components/qrCode/QrCode.vue.d.ts +24 -3
- package/lib/components/qrCode/QrCode.vue_vue_type_script_setup_true_lang.js +13 -5
- package/lib/components/radio/Radio.vue.d.ts +186 -42
- package/lib/components/radio/Radio.vue_vue_type_script_setup_true_lang.js +10 -2
- package/lib/components/radioButton/RadioButton.vue.d.ts +186 -42
- package/lib/components/radioButton/RadioButton.vue_vue_type_script_setup_true_lang.js +9 -1
- package/lib/components/scroll/Scroll.vue.d.ts +3 -0
- package/lib/components/scroll/Scroll.vue_vue_type_script_setup_true_lang.js +9 -4
- package/lib/components/select/Select.vue.d.ts +633 -144
- package/lib/components/select/Select.vue_vue_type_script_setup_true_lang.js +224 -189
- package/lib/components/skeleton/Skeleton.vue.d.ts +6 -0
- package/lib/components/skeleton/Skeleton.vue_vue_type_script_setup_true_lang.js +5 -2
- package/lib/components/slider/Slider.js +1 -1
- package/lib/components/slider/Slider.vue.d.ts +180 -39
- package/lib/components/slider/Slider.vue_vue_type_script_setup_true_lang.js +14 -3
- package/lib/components/spinner/Spinner.vue.d.ts +6 -0
- package/lib/components/spinner/Spinner.vue_vue_type_script_setup_true_lang.js +3 -1
- package/lib/components/stepper/Stepper.vue.d.ts +120 -24
- package/lib/components/stepper/Stepper.vue_vue_type_script_setup_true_lang.js +63 -15
- package/lib/components/tab/Tab.vue.d.ts +112 -31
- package/lib/components/tab/Tab.vue_vue_type_script_setup_true_lang.js +166 -95
- package/lib/components/tab/TabGroup.vue.d.ts +47 -12
- package/lib/components/tab/TabGroup.vue_vue_type_script_setup_true_lang.js +93 -49
- package/lib/components/tab/theme/Tab.base.theme.js +6 -6
- package/lib/components/tab/theme/Tab.carbon.theme.js +6 -6
- package/lib/components/tab/theme/TabGroup.base.theme.js +7 -7
- package/lib/components/tab/theme/TabGroup.carbon.theme.js +3 -3
- package/lib/components/table/Table.vue.d.ts +45 -9
- package/lib/components/table/Table.vue_vue_type_script_setup_true_lang.js +82 -27
- package/lib/components/table/TableCell.vue.d.ts +54 -12
- package/lib/components/table/TableCell.vue_vue_type_script_setup_true_lang.js +23 -8
- package/lib/components/table/TableHead.vue_vue_type_script_setup_true_lang.js +2 -1
- package/lib/components/table/TableHeader.vue.d.ts +18 -3
- package/lib/components/table/TableHeader.vue_vue_type_script_setup_true_lang.js +10 -4
- package/lib/components/table/TableRow.vue.d.ts +15 -3
- package/lib/components/table/TableRow.vue_vue_type_script_setup_true_lang.js +10 -5
- package/lib/components/tag/Tag.vue.d.ts +33 -6
- package/lib/components/tag/Tag.vue_vue_type_script_setup_true_lang.js +21 -7
- package/lib/components/textarea/Textarea.vue.d.ts +237 -54
- package/lib/components/textarea/Textarea.vue_vue_type_script_setup_true_lang.js +38 -13
- package/lib/components/themeProvider/ThemeProvider.vue.d.ts +10 -4
- package/lib/components/themeProvider/ThemeProvider.vue_vue_type_script_setup_true_lang.js +6 -1
- package/lib/components/toggle/Toggle.vue.d.ts +174 -39
- package/lib/components/toggle/Toggle.vue_vue_type_script_setup_true_lang.js +5 -1
- package/lib/components/tooltip/ToggleTip.vue.d.ts +24 -6
- package/lib/components/tooltip/ToggleTip.vue_vue_type_script_setup_true_lang.js +9 -2
- package/lib/components/tooltip/Tooltip.vue.d.ts +30 -6
- package/lib/components/tooltip/Tooltip.vue_vue_type_script_setup_true_lang.js +16 -4
- package/lib/components/upload/Upload.vue.d.ts +249 -57
- package/lib/components/upload/Upload.vue_vue_type_script_setup_true_lang.js +156 -125
- package/lib/components/upload/fileAccept.d.ts +6 -0
- package/lib/components/upload/fileAccept.js +17 -0
- package/lib/composables/useColors.d.ts +1 -0
- package/lib/composables/useColors.js +2 -1
- package/lib/composables/useCommon.d.ts +1 -0
- package/lib/composables/useCommon.js +2 -1
- package/lib/composables/useFocusTrap.js +1 -1
- package/lib/composables/useInputtable.d.ts +45 -10
- package/lib/composables/useInputtable.js +56 -14
- package/lib/composables/useInteractive.d.ts +13 -3
- package/lib/composables/useInteractive.js +14 -4
- package/lib/index.js +12 -12
- package/lib/index.umd.js +9 -10
- package/lib/themes/base/styles.d.ts +1 -1
- package/lib/themes/base/styles.js +1 -1
- package/lib/themes/carbon/styles.d.ts +1 -1
- package/lib/themes/carbon/styles.js +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/virtual/components/infiniteLoader/InfiniteLoader.vue.d.ts +27 -16
- package/lib/virtual/components/infiniteLoader/InfiniteLoader.vue_vue_type_script_setup_true_lang.js +25 -5
- package/lib/virtual/components/virtualGrid/VirtualGrid.vue.d.ts +108 -86
- package/lib/virtual/components/virtualGrid/VirtualGrid.vue_vue_type_script_setup_true_lang.js +91 -21
- package/lib/virtual/components/virtualList/VirtualList.vue.d.ts +62 -48
- package/lib/virtual/components/virtualList/VirtualList.vue_vue_type_script_setup_true_lang.js +64 -13
- package/lib/virtual/components/virtualList/useDynamicRowHeight.js +4 -3
- package/package.json +5 -3
- package/src/common/buttonGroupRadius.ts +16 -0
- package/src/common/props.ts +10 -9
- package/src/components/accordion/Accordion.vue +20 -4
- package/src/components/accordion/AccordionItem.vue +28 -3
- package/src/components/alert/Alert.vue +22 -6
- package/src/components/avatar/Avatar.vue +20 -5
- package/src/components/badge/Badge.vue +24 -5
- package/src/components/breadcrumbs/Breadcrumbs.vue +15 -5
- package/src/components/button/Button.vue +140 -5
- package/src/components/button/ButtonGroup.vue +41 -25
- package/src/components/button/__tests__/ Button.spec.ts +41 -0
- package/src/components/button/__tests__/ ButtonGroup.spec.ts +32 -0
- package/src/components/button/theme/Button.base.theme.ts +4 -1
- package/src/components/button/theme/Button.carbon.theme.ts +5 -4
- package/src/components/card/Card.vue +10 -2
- package/src/components/carousel/Carousel.vue +22 -2
- package/src/components/carousel/CarouselSlide.vue +6 -0
- package/src/components/checkbox/Checkbox.vue +22 -3
- package/src/components/container/Container.vue +10 -1
- package/src/components/datepicker/Datepicker.vue +466 -101
- package/src/components/datepicker/__tests__/Datepicker.spec.ts +31 -0
- package/src/components/divider/Divider.vue +9 -3
- package/src/components/drawer/Drawer.vue +27 -2
- package/src/components/empty/Empty.vue +18 -3
- package/src/components/form/Form.vue +32 -3
- package/src/components/formGroup/FormGroup.vue +12 -0
- package/src/components/icon/Icon.vue +4 -1
- package/src/components/image/Image.vue +8 -2
- package/src/components/input/Input.vue +54 -12
- package/src/components/inputFooter/InputFooter.vue +21 -6
- package/src/components/inputGroup/InputGroup.vue +12 -1
- package/src/components/label/Label.vue +31 -7
- package/src/components/link/Link.vue +16 -5
- package/src/components/loader/Loader.vue +10 -2
- package/src/components/menu/Menu.vue +23 -5
- package/src/components/menu/MenuItem.vue +78 -17
- package/src/components/modal/Modal.vue +90 -15
- package/src/components/notifications/Notifications.vue +23 -0
- package/src/components/notifications/__tests__/Notifications.spec.ts +44 -4
- package/src/components/pagination/Pagination.vue +9 -1
- package/src/components/pagination/PaginationItem.vue +11 -2
- package/src/components/popover/Popover.vue +113 -18
- package/src/components/popover/PopoverContainer.vue +9 -1
- package/src/components/popover/PopoverContentBoundary.vue +32 -0
- package/src/components/popover/__tests__/Popover.spec.ts +51 -0
- package/src/components/popover/theme/PopoverContainer.base.theme.ts +1 -1
- package/src/components/progress/Progress.vue +8 -3
- package/src/components/qrCode/QrCode.vue +9 -1
- package/src/components/radio/Radio.vue +16 -2
- package/src/components/radioButton/RadioButton.vue +15 -1
- package/src/components/scroll/Scroll.vue +15 -4
- package/src/components/select/Select.vue +53 -16
- package/src/components/skeleton/Skeleton.vue +3 -0
- package/src/components/slider/Slider.vue +15 -0
- package/src/components/spinner/Spinner.vue +2 -0
- package/src/components/stepper/Stepper.vue +57 -9
- package/src/components/tab/Tab.vue +153 -63
- package/src/components/tab/TabGroup.vue +110 -26
- package/src/components/tab/__tests__/Tab.spec.ts +53 -0
- package/src/components/tab/__tests__/TabGroup.spec.ts +113 -0
- package/src/components/tab/theme/Tab.base.theme.ts +24 -2
- package/src/components/tab/theme/Tab.carbon.theme.ts +30 -7
- package/src/components/tab/theme/TabGroup.base.theme.ts +12 -9
- package/src/components/tab/theme/TabGroup.carbon.theme.ts +6 -2
- package/src/components/table/Table.vue +76 -19
- package/src/components/table/TableCell.vue +25 -6
- package/src/components/table/TableHead.vue +9 -2
- package/src/components/table/TableHeader.vue +16 -3
- package/src/components/table/TableRow.vue +17 -5
- package/src/components/tag/Tag.vue +22 -6
- package/src/components/textarea/Textarea.vue +40 -11
- package/src/components/themeProvider/ThemeProvider.vue +22 -7
- package/src/components/toggle/Toggle.vue +9 -1
- package/src/components/tooltip/ToggleTip.vue +12 -3
- package/src/components/tooltip/Tooltip.vue +19 -3
- package/src/components/upload/Upload.vue +46 -16
- package/src/components/upload/__tests__/fileAccept.spec.ts +39 -0
- package/src/components/upload/fileAccept.ts +29 -0
- package/src/composables/useColors.ts +1 -0
- package/src/composables/useCommon.ts +1 -0
- package/src/composables/useFocusTrap.ts +3 -1
- package/src/composables/useInputtable.ts +66 -10
- package/src/composables/useInteractive.ts +13 -3
- package/src/themes/base/styles.ts +2 -3
- package/src/themes/carbon/styles.ts +2 -3
- package/src/version.ts +1 -1
- package/src/virtual/components/infiniteLoader/InfiniteLoader.vue +33 -1
- package/src/virtual/components/virtualGrid/VirtualGrid.vue +104 -10
- package/src/virtual/components/virtualList/VirtualList.vue +73 -8
- package/src/virtual/components/virtualList/useDynamicRowHeight.ts +9 -2
- package/volar.d.ts +3 -0
- package/docs/layouts/simple.vue +0 -5
- package/lib/components/button/ButtonGroup.vue_vue_type_style_index_0_lang.module.js +0 -7
- /package/lib/components/button/{Button.vue_vue_type_style_index_0_scoped_4402fde2_lang.module.js → Button.vue_vue_type_style_index_0_scoped_486cb9c0_lang.module.js} +0 -0
- /package/lib/components/link/{Link.vue_vue_type_style_index_0_scoped_8e0e4d08_lang.module.js → Link.vue_vue_type_style_index_0_scoped_3ee61e03_lang.module.js} +0 -0
|
@@ -3,6 +3,7 @@ const popoverContainerProps = {
|
|
|
3
3
|
tag: {
|
|
4
4
|
default: 'div',
|
|
5
5
|
type: String,
|
|
6
|
+
description: 'Root element tag.',
|
|
6
7
|
},
|
|
7
8
|
}
|
|
8
9
|
|
|
@@ -11,7 +12,14 @@ export type PopoverContainerProps = ExtractPublicPropTypes<typeof popoverContain
|
|
|
11
12
|
type InternalClasses = 'wrapper'
|
|
12
13
|
export interface PopoverContainerTheme extends ThemeComponent<PopoverContainerProps, InternalClasses> {}
|
|
13
14
|
|
|
14
|
-
export default {
|
|
15
|
+
export default {
|
|
16
|
+
name: 'XPopoverContainer',
|
|
17
|
+
docs: {
|
|
18
|
+
slots: {
|
|
19
|
+
default: 'Styled container content for popover panels.',
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
}
|
|
15
23
|
</script>
|
|
16
24
|
|
|
17
25
|
<script setup lang="ts">
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
export default {
|
|
3
|
+
name: 'XPopoverContentBoundary',
|
|
4
|
+
docs: {
|
|
5
|
+
slots: {
|
|
6
|
+
default: 'Popover content isolated from parent ButtonGroup provide/inject.',
|
|
7
|
+
},
|
|
8
|
+
},
|
|
9
|
+
}
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<script setup lang="ts">
|
|
13
|
+
import { computed, provide } from 'vue'
|
|
14
|
+
import { injectButtonGroupKey } from '../../composables/keys'
|
|
15
|
+
import type { ButtonGroupInjection } from '../button/ButtonGroup.vue'
|
|
16
|
+
|
|
17
|
+
/** Isolate popover content from parent ButtonGroup (provide/inject crosses teleport). */
|
|
18
|
+
const inactiveButtonGroup: ButtonGroupInjection = {
|
|
19
|
+
isButtonGroup: false,
|
|
20
|
+
groupProps: {},
|
|
21
|
+
registerChild: () => {},
|
|
22
|
+
unregisterChild: () => {},
|
|
23
|
+
getPosition: () => 'only',
|
|
24
|
+
childOrder: computed(() => []),
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
provide(injectButtonGroupKey, inactiveButtonGroup)
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<template>
|
|
31
|
+
<slot ></slot>
|
|
32
|
+
</template>
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest'
|
|
2
2
|
import { mount } from '@vue/test-utils'
|
|
3
|
+
import { h, defineComponent, nextTick } from 'vue'
|
|
3
4
|
import Popover from '../Popover.vue'
|
|
5
|
+
import PopoverContentBoundary from '../PopoverContentBoundary.vue'
|
|
6
|
+
import ButtonGroup from '../../button/ButtonGroup.vue'
|
|
7
|
+
import Button from '../../button/Button.vue'
|
|
8
|
+
import { injectThemeKey } from '../../../composables/keys'
|
|
9
|
+
import BaseTheme from '../../../themes/base'
|
|
10
|
+
|
|
11
|
+
const themeProvide = {
|
|
12
|
+
global: {
|
|
13
|
+
provide: {
|
|
14
|
+
[injectThemeKey as symbol]: BaseTheme,
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
}
|
|
4
18
|
|
|
5
19
|
describe('Popover', () => {
|
|
6
20
|
it('renders without errors', () => {
|
|
@@ -8,4 +22,41 @@ describe('Popover', () => {
|
|
|
8
22
|
|
|
9
23
|
expect(wrapper.vm).toBeTruthy()
|
|
10
24
|
})
|
|
25
|
+
|
|
26
|
+
it('keeps trigger button group radius when popover content mounts', async () => {
|
|
27
|
+
const Demo = defineComponent({
|
|
28
|
+
setup() {
|
|
29
|
+
return () => h(ButtonGroup, null, {
|
|
30
|
+
default: () => [
|
|
31
|
+
h(Button, null, () => 'Add New'),
|
|
32
|
+
h(Popover, null, {
|
|
33
|
+
default: () => h(Button, null, () => 'More'),
|
|
34
|
+
content: () => h(Button, null, () => 'Option 1'),
|
|
35
|
+
}),
|
|
36
|
+
// Simulate teleported content that would otherwise join the group
|
|
37
|
+
h(PopoverContentBoundary, null, {
|
|
38
|
+
default: () => [
|
|
39
|
+
h(Button, null, () => 'Option 1'),
|
|
40
|
+
h(Button, null, () => 'Option 2'),
|
|
41
|
+
h(Button, null, () => 'Option 3'),
|
|
42
|
+
],
|
|
43
|
+
}),
|
|
44
|
+
],
|
|
45
|
+
})
|
|
46
|
+
},
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
const wrapper = mount(Demo, themeProvide)
|
|
50
|
+
|
|
51
|
+
await nextTick()
|
|
52
|
+
|
|
53
|
+
const buttons = wrapper.findAll('button')
|
|
54
|
+
const addNew = buttons.find((b) => b.text() === 'Add New')
|
|
55
|
+
const more = buttons.find((b) => b.text() === 'More')
|
|
56
|
+
const option1 = buttons.find((b) => b.text() === 'Option 1')
|
|
57
|
+
|
|
58
|
+
expect(addNew?.classes().some((c) => c.includes('rounded-s'))).toBe(true)
|
|
59
|
+
expect(more?.classes().some((c) => c.includes('rounded-e'))).toBe(true)
|
|
60
|
+
expect(option1?.classes().includes('rounded-md')).toBe(true)
|
|
61
|
+
})
|
|
11
62
|
})
|
|
@@ -2,7 +2,7 @@ import type { PopoverContainerTheme } from '../PopoverContainer.vue'
|
|
|
2
2
|
|
|
3
3
|
const theme: PopoverContainerTheme = {
|
|
4
4
|
classes: {
|
|
5
|
-
wrapper: 'block w-full bg-white dark:bg-secondary-
|
|
5
|
+
wrapper: 'block w-full bg-white dark:bg-secondary-800 shadow-lg rounded-md border border-secondary-200 dark:border-secondary-700',
|
|
6
6
|
},
|
|
7
7
|
}
|
|
8
8
|
|
|
@@ -7,13 +7,15 @@ const progressProps = {
|
|
|
7
7
|
type: [Number, String],
|
|
8
8
|
default: 0,
|
|
9
9
|
validator: (value: number) => value >= 0 && value <= 100,
|
|
10
|
+
description: 'Fill amount from 0 to 100.',
|
|
10
11
|
},
|
|
11
|
-
gradient: optionalBooleanProp(),
|
|
12
|
+
gradient: optionalBooleanProp('Uses a gradient fill instead of a solid color.'),
|
|
12
13
|
animate: {
|
|
13
14
|
type: Boolean,
|
|
14
15
|
default: true,
|
|
16
|
+
description: 'Animates width changes when the percentage updates.',
|
|
15
17
|
},
|
|
16
|
-
thick: optionalBooleanProp(),
|
|
18
|
+
thick: optionalBooleanProp('Increases the bar thickness.'),
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
export type ProgressProps = ExtractPublicPropTypes<typeof progressProps>
|
|
@@ -21,7 +23,10 @@ export type ProgressProps = ExtractPublicPropTypes<typeof progressProps>
|
|
|
21
23
|
type InternalClasses = 'wrapper' | 'list' | 'item'
|
|
22
24
|
export interface ProgressTheme extends ThemeComponent<ProgressProps, InternalClasses> {}
|
|
23
25
|
|
|
24
|
-
export default {
|
|
26
|
+
export default {
|
|
27
|
+
name: 'XProgress',
|
|
28
|
+
docs: {},
|
|
29
|
+
}
|
|
25
30
|
</script>
|
|
26
31
|
|
|
27
32
|
<script setup lang="ts">
|
|
@@ -1,21 +1,28 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
const qrCodeProps = {
|
|
3
|
-
value:
|
|
3
|
+
value: {
|
|
4
|
+
type: String,
|
|
5
|
+
description: 'Text or URL encoded in the QR code.',
|
|
6
|
+
},
|
|
4
7
|
color: {
|
|
5
8
|
type: String,
|
|
6
9
|
default: '#000',
|
|
10
|
+
description: 'Foreground module color.',
|
|
7
11
|
},
|
|
8
12
|
backgroundColor: {
|
|
9
13
|
type: String,
|
|
10
14
|
default: '#fff',
|
|
15
|
+
description: 'Background color behind the modules.',
|
|
11
16
|
},
|
|
12
17
|
size: {
|
|
13
18
|
type: [String, Number],
|
|
14
19
|
default: 100,
|
|
20
|
+
description: 'Rendered size of the QR canvas in pixels.',
|
|
15
21
|
},
|
|
16
22
|
errorCorrectionLevel: {
|
|
17
23
|
type: String,
|
|
18
24
|
default: 'M',
|
|
25
|
+
description: 'Error correction level (L, M, Q, or H).',
|
|
19
26
|
},
|
|
20
27
|
}
|
|
21
28
|
|
|
@@ -29,6 +36,7 @@ export default {
|
|
|
29
36
|
validators: {
|
|
30
37
|
errorCorrectionLevel: ['L', 'M', 'Q', 'H'],
|
|
31
38
|
},
|
|
39
|
+
docs: {},
|
|
32
40
|
}
|
|
33
41
|
</script>
|
|
34
42
|
|
|
@@ -6,8 +6,11 @@ const radioProps = {
|
|
|
6
6
|
...useColors.props('primary'),
|
|
7
7
|
...useInteractive.props(),
|
|
8
8
|
...useInputtable.props(),
|
|
9
|
-
value:
|
|
10
|
-
|
|
9
|
+
value: {
|
|
10
|
+
type: [String, Number],
|
|
11
|
+
description: 'Value emitted when this option is selected (v-model / form-group).',
|
|
12
|
+
},
|
|
13
|
+
glow: optionalBooleanProp('Soft colored glow behind the control.'),
|
|
11
14
|
}
|
|
12
15
|
|
|
13
16
|
export type RadioProps = ExtractPublicPropTypes<typeof radioProps>
|
|
@@ -21,6 +24,17 @@ export default {
|
|
|
21
24
|
validators: {
|
|
22
25
|
...useCommon.validators(),
|
|
23
26
|
},
|
|
27
|
+
docs: {
|
|
28
|
+
slots: {
|
|
29
|
+
default: 'Optional content shown below the label.',
|
|
30
|
+
},
|
|
31
|
+
emits: {
|
|
32
|
+
...useInputtable.emitDocs(false),
|
|
33
|
+
},
|
|
34
|
+
methods: {
|
|
35
|
+
...useInputtable.methodDocs(),
|
|
36
|
+
},
|
|
37
|
+
},
|
|
24
38
|
}
|
|
25
39
|
</script>
|
|
26
40
|
|
|
@@ -6,7 +6,10 @@ const radioButtonProps = {
|
|
|
6
6
|
...useColors.props('primary'),
|
|
7
7
|
...useInteractive.props(),
|
|
8
8
|
...useInputtable.props(),
|
|
9
|
-
value:
|
|
9
|
+
value: {
|
|
10
|
+
type: [String, Number],
|
|
11
|
+
description: 'Value emitted when this option is selected (v-model / form-group).',
|
|
12
|
+
},
|
|
10
13
|
...variantBooleanProps(),
|
|
11
14
|
}
|
|
12
15
|
|
|
@@ -21,6 +24,17 @@ export default {
|
|
|
21
24
|
validators: {
|
|
22
25
|
...useCommon.validators(),
|
|
23
26
|
},
|
|
27
|
+
docs: {
|
|
28
|
+
slots: {
|
|
29
|
+
default: 'Button label; falls back to the `label` prop.',
|
|
30
|
+
},
|
|
31
|
+
emits: {
|
|
32
|
+
...useInputtable.emitDocs(false),
|
|
33
|
+
},
|
|
34
|
+
methods: {
|
|
35
|
+
...useInputtable.methodDocs(),
|
|
36
|
+
},
|
|
37
|
+
},
|
|
24
38
|
}
|
|
25
39
|
</script>
|
|
26
40
|
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
import { optionalBooleanProp } from '../../common/props'
|
|
3
3
|
|
|
4
4
|
const scrollProps = {
|
|
5
|
-
shadow: optionalBooleanProp(),
|
|
6
|
-
horizontal: optionalBooleanProp(),
|
|
7
|
-
mousewheel: optionalBooleanProp(),
|
|
5
|
+
shadow: optionalBooleanProp('Shows edge shadows when more content can be scrolled.'),
|
|
6
|
+
horizontal: optionalBooleanProp('Scrolls horizontally instead of vertically.'),
|
|
7
|
+
mousewheel: optionalBooleanProp('Maps vertical mouse wheel to horizontal scroll when `horizontal` is set.'),
|
|
8
8
|
scrollbar: {
|
|
9
9
|
type: Boolean,
|
|
10
10
|
default: true,
|
|
11
|
+
description: 'Shows the native scrollbar. Set false to hide it.',
|
|
11
12
|
},
|
|
12
13
|
}
|
|
13
14
|
|
|
@@ -16,7 +17,17 @@ export type ScrollProps = ExtractPublicPropTypes<typeof scrollProps>
|
|
|
16
17
|
type InternalClasses = 'wrapper'
|
|
17
18
|
export interface ScrollTheme extends ThemeComponent<ScrollProps, InternalClasses> {}
|
|
18
19
|
|
|
19
|
-
export default {
|
|
20
|
+
export default {
|
|
21
|
+
name: 'XScroll',
|
|
22
|
+
docs: {
|
|
23
|
+
slots: {
|
|
24
|
+
default: 'Scrollable content.',
|
|
25
|
+
},
|
|
26
|
+
methods: {
|
|
27
|
+
scrollEl: 'Ref to the inner scrollable element.',
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
}
|
|
20
31
|
</script>
|
|
21
32
|
|
|
22
33
|
<script setup lang="ts">
|
|
@@ -6,34 +6,52 @@ const selectProps = {
|
|
|
6
6
|
...useCommon.props(),
|
|
7
7
|
...useInteractive.props(),
|
|
8
8
|
...useInputtable.props(),
|
|
9
|
-
placeholder:
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
placeholder: {
|
|
10
|
+
type: String,
|
|
11
|
+
description: 'Placeholder shown when no option is selected.',
|
|
12
|
+
},
|
|
13
|
+
options: {
|
|
14
|
+
type: Array as PropType<SelectOption[]>,
|
|
15
|
+
description: 'Available options (`value`, `label`, optional prefix/suffix/disabled).',
|
|
16
|
+
},
|
|
17
|
+
multiple: optionalBooleanProp('Allows selecting more than one option.'),
|
|
18
|
+
multipleCheckbox: optionalBooleanProp('Multiple selection with checkbox-style items.'),
|
|
19
|
+
truncate: optionalBooleanProp('Truncates selected labels when space is limited.'),
|
|
20
|
+
flat: optionalBooleanProp('Removes elevation and border emphasis on the trigger.'),
|
|
21
|
+
native: optionalBooleanProp('Renders a native HTML select instead of the custom popover.'),
|
|
22
|
+
filterable: optionalBooleanProp('Shows a filter input inside the options list.'),
|
|
23
|
+
clearable: optionalBooleanProp('Shows a clear control when a value is selected.'),
|
|
18
24
|
filterPlaceholder: {
|
|
19
25
|
type: String,
|
|
20
26
|
default: 'Filter by...',
|
|
27
|
+
description: 'Placeholder for the filter input when `filterable` is enabled.',
|
|
28
|
+
},
|
|
29
|
+
filterablePrefix: optionalBooleanProp('Includes option prefixes when filtering.'),
|
|
30
|
+
filterableSuffix: optionalBooleanProp('Includes option suffixes when filtering.'),
|
|
31
|
+
hideSelectedOptionSlots: optionalBooleanProp('Hides prefix/suffix slots on the selected value display.'),
|
|
32
|
+
virtualList: optionalBooleanProp('Virtualizes the options list for large datasets.'),
|
|
33
|
+
virtualListOffsetTop: {
|
|
34
|
+
type: Number,
|
|
35
|
+
description: 'Extra top offset (px) for the virtual list viewport.',
|
|
36
|
+
},
|
|
37
|
+
virtualListOffsetBottom: {
|
|
38
|
+
type: Number,
|
|
39
|
+
description: 'Extra bottom offset (px) for the virtual list viewport.',
|
|
21
40
|
},
|
|
22
|
-
filterablePrefix: optionalBooleanProp(),
|
|
23
|
-
filterableSuffix: optionalBooleanProp(),
|
|
24
|
-
hideSelectedOptionSlots: optionalBooleanProp(),
|
|
25
|
-
virtualList: optionalBooleanProp(),
|
|
26
|
-
virtualListOffsetTop: Number,
|
|
27
|
-
virtualListOffsetBottom: Number,
|
|
28
41
|
virtualListItemHeight: {
|
|
29
42
|
type: Number,
|
|
30
43
|
default: 33,
|
|
44
|
+
description: 'Estimated row height (px) used by the virtual list.',
|
|
31
45
|
},
|
|
32
46
|
virtualListOverscan: {
|
|
33
47
|
type: Number,
|
|
34
48
|
default: 10,
|
|
49
|
+
description: 'Extra rows rendered above/below the visible virtual list window.',
|
|
50
|
+
},
|
|
51
|
+
placement: {
|
|
52
|
+
type: String as PropType<PopoverPlacement>,
|
|
53
|
+
description: 'Popover placement for the options menu.',
|
|
35
54
|
},
|
|
36
|
-
placement: String as PropType<PopoverPlacement>,
|
|
37
55
|
}
|
|
38
56
|
|
|
39
57
|
export type SelectOption = {
|
|
@@ -62,6 +80,25 @@ export default {
|
|
|
62
80
|
validators: {
|
|
63
81
|
...useCommon.validators(),
|
|
64
82
|
},
|
|
83
|
+
docs: {
|
|
84
|
+
slots: {
|
|
85
|
+
prefix: 'Prefix content for an option or the selected value (`item`).',
|
|
86
|
+
suffix: 'Suffix content for an option or the selected value (`item`).',
|
|
87
|
+
label: 'Custom label content for an option (`item`).',
|
|
88
|
+
input: 'Custom trigger content (popover, selected value, disabled, label).',
|
|
89
|
+
'content-header': 'Content above the options list (default includes the filter).',
|
|
90
|
+
'content-footer': 'Content below the options list.',
|
|
91
|
+
icon: 'Custom chevron/icon on the trigger.',
|
|
92
|
+
},
|
|
93
|
+
emits: {
|
|
94
|
+
...useInputtable.emitDocs(),
|
|
95
|
+
open: 'Emitted when the options popover opens.',
|
|
96
|
+
close: 'Emitted when the options popover closes.',
|
|
97
|
+
},
|
|
98
|
+
methods: {
|
|
99
|
+
...useInputtable.methodDocs(),
|
|
100
|
+
},
|
|
101
|
+
},
|
|
65
102
|
}
|
|
66
103
|
</script>
|
|
67
104
|
|
|
@@ -11,11 +11,13 @@ const skeletonProps = {
|
|
|
11
11
|
tag: {
|
|
12
12
|
type: String,
|
|
13
13
|
default: 'div',
|
|
14
|
+
description: 'Root element tag.',
|
|
14
15
|
},
|
|
15
16
|
shape: {
|
|
16
17
|
type: String as PropType<SkeletonShape>,
|
|
17
18
|
default: 'line',
|
|
18
19
|
validator: (val: SkeletonShape) => validators.shape.includes(val),
|
|
20
|
+
description: 'Placeholder shape (line or circle).',
|
|
19
21
|
},
|
|
20
22
|
}
|
|
21
23
|
|
|
@@ -27,6 +29,7 @@ export interface SkeletonTheme extends ThemeComponent<SkeletonProps, InternalCla
|
|
|
27
29
|
export default {
|
|
28
30
|
name: 'XSkeleton',
|
|
29
31
|
validators,
|
|
32
|
+
docs: {},
|
|
30
33
|
}
|
|
31
34
|
</script>
|
|
32
35
|
|
|
@@ -6,14 +6,17 @@ const sliderProps = {
|
|
|
6
6
|
min: {
|
|
7
7
|
type: [Number, String],
|
|
8
8
|
default: 0,
|
|
9
|
+
description: 'Minimum value of the range.',
|
|
9
10
|
},
|
|
10
11
|
max: {
|
|
11
12
|
type: [Number, String],
|
|
12
13
|
default: 100,
|
|
14
|
+
description: 'Maximum value of the range.',
|
|
13
15
|
},
|
|
14
16
|
step: {
|
|
15
17
|
type: [Number, String],
|
|
16
18
|
default: 1,
|
|
19
|
+
description: 'Increment between selectable values.',
|
|
17
20
|
},
|
|
18
21
|
}
|
|
19
22
|
|
|
@@ -27,6 +30,18 @@ export default {
|
|
|
27
30
|
validators: {
|
|
28
31
|
...useCommon.validators(),
|
|
29
32
|
},
|
|
33
|
+
docs: {
|
|
34
|
+
slots: {
|
|
35
|
+
prefix: 'Content before the track (`value`).',
|
|
36
|
+
suffix: 'Content after the track (`value`).',
|
|
37
|
+
},
|
|
38
|
+
emits: {
|
|
39
|
+
...useInputtable.emitDocs(),
|
|
40
|
+
},
|
|
41
|
+
methods: {
|
|
42
|
+
...useInputtable.methodDocs(),
|
|
43
|
+
},
|
|
44
|
+
},
|
|
30
45
|
}
|
|
31
46
|
</script>
|
|
32
47
|
|
|
@@ -4,6 +4,7 @@ const spinnerProps = {
|
|
|
4
4
|
icon: {
|
|
5
5
|
type: String,
|
|
6
6
|
default: '<g stroke-width="0"><path fill="currentColor" d="M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z" opacity=".25"/><path fill="currentColor" d="M10.72,19.9a8,8,0,0,1-6.5-9.79A7.77,7.77,0,0,1,10.4,4.16a8,8,0,0,1,9.49,6.52A1.54,1.54,0,0,0,21.38,12h.13a1.37,1.37,0,0,0,1.38-1.54,11,11,0,1,0-12.7,12.39A1.54,1.54,0,0,0,12,21.34h0A1.47,1.47,0,0,0,10.72,19.9Z"><animateTransform attributeName="transform" dur="0.65s" repeatCount="indefinite" type="rotate" values="0 12 12;360 12 12"/></path></g>',
|
|
7
|
+
description: 'SVG markup or icon name used for the spinner.',
|
|
7
8
|
},
|
|
8
9
|
}
|
|
9
10
|
|
|
@@ -14,6 +15,7 @@ export default {
|
|
|
14
15
|
validators: {
|
|
15
16
|
...useCommon.validators(),
|
|
16
17
|
},
|
|
18
|
+
docs: {},
|
|
17
19
|
}
|
|
18
20
|
</script>
|
|
19
21
|
|
|
@@ -10,39 +10,69 @@ const validators = {
|
|
|
10
10
|
const stepperProps = {
|
|
11
11
|
...useCommon.props(),
|
|
12
12
|
...useColors.props('primary'),
|
|
13
|
-
modelValue:
|
|
13
|
+
modelValue: {
|
|
14
|
+
type: [String, Number],
|
|
15
|
+
description: 'Active step value (`v-model`).',
|
|
16
|
+
},
|
|
14
17
|
steps: {
|
|
15
18
|
type: Array as PropType<StepperStep[]>,
|
|
16
19
|
default: () => [],
|
|
20
|
+
description: 'Step definitions (value, title, optional, completed, error, etc.).',
|
|
21
|
+
},
|
|
22
|
+
validate: {
|
|
23
|
+
type: Function as PropType<() => boolean>,
|
|
24
|
+
description: 'Runs before leaving the current step; return false to block navigation.',
|
|
25
|
+
},
|
|
26
|
+
beforeChange: {
|
|
27
|
+
type: Function as PropType<(to: string | number, from: string | number) => boolean | Promise<boolean>>,
|
|
28
|
+
description: 'Async guard before changing steps; return false to cancel.',
|
|
17
29
|
},
|
|
18
|
-
validate: Function as PropType<() => boolean>,
|
|
19
|
-
beforeChange: Function as PropType<(to: string | number, from: string | number) => boolean | Promise<boolean>>,
|
|
20
30
|
variant: {
|
|
21
31
|
type: String as PropType<StepperVariant>,
|
|
22
32
|
default: 'line',
|
|
33
|
+
description: 'Indicator style: line or dot.',
|
|
23
34
|
},
|
|
24
35
|
orientation: {
|
|
25
36
|
type: String as PropType<StepperOrientation>,
|
|
26
37
|
default: 'vertical',
|
|
38
|
+
description: 'Layout direction: vertical (sidebar) or horizontal.',
|
|
27
39
|
},
|
|
28
40
|
labelPlacement: {
|
|
29
41
|
type: String as PropType<StepperLabelPlacement>,
|
|
30
42
|
default: 'end',
|
|
43
|
+
description: 'Where labels sit relative to indicators in horizontal mode.',
|
|
31
44
|
},
|
|
32
45
|
linear: {
|
|
33
46
|
type: Boolean,
|
|
34
47
|
default: true,
|
|
48
|
+
description: 'Require prior steps to be completed before navigating ahead.',
|
|
35
49
|
},
|
|
36
50
|
interactive: {
|
|
37
51
|
type: Boolean,
|
|
38
52
|
default: true,
|
|
53
|
+
description: 'Allow clicking step indicators to navigate.',
|
|
54
|
+
},
|
|
55
|
+
editable: optionalBooleanProp('Allow revisiting completed steps (shows edit icon).'),
|
|
56
|
+
disabled: {
|
|
57
|
+
type: Boolean,
|
|
58
|
+
description: 'Disables all step navigation.',
|
|
59
|
+
},
|
|
60
|
+
loading: {
|
|
61
|
+
type: Boolean,
|
|
62
|
+
description: 'Blocks navigation while an async step action runs.',
|
|
63
|
+
},
|
|
64
|
+
iconComplete: {
|
|
65
|
+
type: String,
|
|
66
|
+
description: 'Icon for completed steps.',
|
|
67
|
+
},
|
|
68
|
+
iconError: {
|
|
69
|
+
type: String,
|
|
70
|
+
description: 'Icon for steps in an error state.',
|
|
71
|
+
},
|
|
72
|
+
iconEdit: {
|
|
73
|
+
type: String,
|
|
74
|
+
description: 'Icon for editable completed steps.',
|
|
39
75
|
},
|
|
40
|
-
editable: optionalBooleanProp(),
|
|
41
|
-
disabled: Boolean,
|
|
42
|
-
loading: Boolean,
|
|
43
|
-
iconComplete: String,
|
|
44
|
-
iconError: String,
|
|
45
|
-
iconEdit: String,
|
|
46
76
|
}
|
|
47
77
|
|
|
48
78
|
export type StepperStepStatus = 'upcoming' | 'active' | 'complete' | 'error'
|
|
@@ -105,6 +135,24 @@ export interface StepperTheme extends ThemeComponent<StepperProps, InternalClass
|
|
|
105
135
|
export default {
|
|
106
136
|
name: 'XStepper',
|
|
107
137
|
validators,
|
|
138
|
+
docs: {
|
|
139
|
+
slots: {
|
|
140
|
+
'content-prefix': 'Content rendered above the active step panel.',
|
|
141
|
+
'[stepValue]': 'Panel content for a step; slot name matches `step.value`.',
|
|
142
|
+
'summary-[stepValue]': 'Sidebar summary for a completed step (vertical orientation).',
|
|
143
|
+
},
|
|
144
|
+
emits: {
|
|
145
|
+
'update:modelValue': 'Active step value (`v-model`).',
|
|
146
|
+
change: 'Emitted when the active step changes; payload is `(value, index)`.',
|
|
147
|
+
'step-complete': 'Emitted when a step is marked complete via `next()`; payload is `(value, index)`.',
|
|
148
|
+
},
|
|
149
|
+
methods: {
|
|
150
|
+
next: 'Advance to the next step after validation.',
|
|
151
|
+
prev: 'Go to the previous step.',
|
|
152
|
+
goTo: 'Navigate to a step by value or index when allowed.',
|
|
153
|
+
reset: 'Clear completion state and return to the first step.',
|
|
154
|
+
},
|
|
155
|
+
},
|
|
108
156
|
}
|
|
109
157
|
</script>
|
|
110
158
|
|