vue-devui 1.0.0-beta.18 → 1.0.0-beta.20220808
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/README.md +94 -118
- package/alert/index.es.js +74 -45
- package/alert/index.umd.js +1 -1
- package/alert/style.css +1 -1
- package/auto-complete/index.es.js +8395 -463
- package/auto-complete/index.umd.js +40 -1
- package/auto-complete/style.css +1 -1
- package/avatar/index.es.js +153 -146
- package/avatar/index.umd.js +1 -1
- package/avatar/style.css +1 -1
- package/badge/index.es.js +45 -20
- package/badge/index.umd.js +1 -1
- package/badge/style.css +1 -1
- package/button/index.es.js +5751 -156
- package/button/index.umd.js +27 -1
- package/button/style.css +1 -1
- package/card/index.es.js +63 -35
- package/card/index.umd.js +1 -1
- package/card/style.css +1 -1
- package/checkbox/index.es.js +8110 -278
- package/checkbox/index.umd.js +38 -1
- package/checkbox/style.css +1 -1
- package/{accordion → collapse}/index.d.ts +0 -0
- package/collapse/index.es.js +195 -0
- package/collapse/index.umd.js +1 -0
- package/{back-top → collapse}/package.json +1 -1
- package/collapse/style.css +1 -0
- package/countdown/index.es.js +60 -19
- package/countdown/index.umd.js +1 -1
- package/{anchor → date-picker-pro}/index.d.ts +0 -0
- package/date-picker-pro/index.es.js +12035 -0
- package/date-picker-pro/index.umd.js +38 -0
- package/date-picker-pro/package.json +7 -0
- package/date-picker-pro/style.css +1 -0
- package/drawer/index.es.js +191 -5756
- package/drawer/index.umd.js +1 -27
- package/drawer/style.css +1 -1
- package/dropdown/index.es.js +616 -415
- package/dropdown/index.umd.js +1 -1
- package/dropdown/style.css +1 -1
- package/editable-select/index.es.js +779 -211
- package/editable-select/index.umd.js +1 -1
- package/editable-select/style.css +1 -1
- package/form/index.es.js +2405 -2125
- package/form/index.umd.js +28 -17
- package/form/style.css +1 -1
- package/fullscreen/index.es.js +137 -134
- package/fullscreen/index.umd.js +1 -1
- package/fullscreen/style.css +1 -1
- package/grid/index.es.js +105 -103
- package/grid/index.umd.js +1 -1
- package/grid/style.css +1 -1
- package/icon/index.es.js +199 -56
- package/icon/index.umd.js +1 -1
- package/icon/style.css +1 -0
- package/image-preview/index.es.js +67 -54
- package/image-preview/index.umd.js +1 -1
- package/image-preview/style.css +1 -1
- package/input/index.es.js +8268 -144
- package/input/index.umd.js +38 -1
- package/input/style.css +1 -1
- package/input-number/index.es.js +260 -192
- package/input-number/index.umd.js +1 -1
- package/input-number/style.css +1 -1
- package/layout/index.es.js +40 -25
- package/layout/index.umd.js +1 -1
- package/layout/style.css +1 -1
- package/loading/index.es.js +86 -70
- package/loading/index.umd.js +1 -1
- package/loading/style.css +1 -1
- package/{back-top → mention}/index.d.ts +0 -0
- package/{color-picker → mention}/index.es.js +3036 -2898
- package/mention/index.umd.js +47 -0
- package/{anchor → mention}/package.json +1 -1
- package/mention/style.css +1 -0
- package/{breadcrumb → menu}/index.d.ts +0 -0
- package/menu/index.es.js +891 -0
- package/menu/index.umd.js +1 -0
- package/{toast → menu}/package.json +1 -1
- package/menu/style.css +1 -0
- package/{carousel → message}/index.d.ts +0 -0
- package/message/index.es.js +533 -0
- package/message/index.umd.js +1 -0
- package/{comment → message}/package.json +1 -1
- package/message/style.css +1 -0
- package/modal/index.es.js +602 -1061
- package/modal/index.umd.js +1 -1
- package/modal/style.css +1 -1
- package/{cascader → notification}/index.d.ts +0 -0
- package/notification/index.es.js +528 -0
- package/notification/index.umd.js +1 -0
- package/{accordion → notification}/package.json +1 -1
- package/notification/style.css +1 -0
- package/nuxt/components/ButtonGroup.js +3 -0
- package/nuxt/components/CheckboxButton.js +3 -0
- package/nuxt/components/CheckboxGroup.js +3 -0
- package/nuxt/components/Collapse.js +3 -0
- package/nuxt/components/CollapseItem.js +3 -0
- package/nuxt/components/DRangeDatePickerPro.js +3 -0
- package/nuxt/components/DatePickerPro.js +3 -0
- package/nuxt/components/DropdownMenu.js +3 -0
- package/nuxt/components/DropdownPropsKey.js +3 -0
- package/nuxt/components/FORM_ITEM_TOKEN.js +3 -0
- package/nuxt/components/FORM_TOKEN.js +3 -0
- package/nuxt/components/IFileOptions.js +3 -0
- package/nuxt/components/IUploadOptions.js +3 -0
- package/nuxt/components/Icon.js +1 -0
- package/nuxt/components/IconGroup.js +3 -0
- package/nuxt/components/LABEL_DATA.js +3 -0
- package/nuxt/components/LoadingOptions.js +3 -0
- package/nuxt/components/Mention.js +3 -0
- package/nuxt/components/Menu.js +3 -0
- package/nuxt/components/MenuItem.js +3 -0
- package/nuxt/components/Message.js +3 -0
- package/nuxt/components/Notification.js +3 -0
- package/nuxt/components/NotificationService.js +3 -0
- package/nuxt/components/Option.js +3 -0
- package/nuxt/components/OptionGroup.js +3 -0
- package/nuxt/components/PanelBody.js +3 -0
- package/nuxt/components/PanelFooter.js +3 -0
- package/nuxt/components/PanelHeader.js +3 -0
- package/nuxt/components/RadioButton.js +3 -0
- package/nuxt/components/Step.js +3 -0
- package/nuxt/components/Steps.js +3 -0
- package/nuxt/components/SubMenu.js +3 -0
- package/nuxt/components/TABLE_TOKEN.js +3 -0
- package/nuxt/components/Tab.js +3 -0
- package/nuxt/components/TimeSelect.js +3 -0
- package/nuxt/components/Timeline.js +3 -0
- package/nuxt/components/TimelineItem.js +3 -0
- package/nuxt/components/UploadStatus.js +3 -0
- package/nuxt/components/alertProps.js +3 -0
- package/nuxt/components/animationInjectionKey.js +3 -0
- package/nuxt/components/autoCompleteProps.js +3 -0
- package/nuxt/components/avatarProps.js +3 -0
- package/nuxt/components/badgeProps.js +3 -0
- package/nuxt/components/buttonGroupInjectionKey.js +3 -0
- package/nuxt/components/buttonGroupProps.js +3 -0
- package/nuxt/components/cardProps.js +3 -0
- package/nuxt/components/checkboxGroupInjectionKey.js +3 -0
- package/nuxt/components/checkboxGroupProps.js +3 -0
- package/nuxt/components/checkboxProps.js +3 -0
- package/nuxt/components/colProps.js +3 -0
- package/nuxt/components/colPropsBaseClass.js +3 -0
- package/nuxt/components/colPropsBaseStyle.js +3 -0
- package/nuxt/components/collapseItemProps.js +3 -0
- package/nuxt/components/collapseProps.js +3 -0
- package/nuxt/components/countdownProps.js +3 -0
- package/nuxt/components/datePickerProCommonProps.js +3 -0
- package/nuxt/components/datePickerProPanelProps.js +3 -0
- package/nuxt/components/datePickerProProps.js +3 -0
- package/nuxt/components/dropdownMenuProps.js +3 -0
- package/nuxt/components/editableSelectProps.js +3 -0
- package/nuxt/components/fixedOverlayProps.js +3 -0
- package/nuxt/components/flexibleOverlayProps.js +3 -0
- package/nuxt/components/formItemProps.js +3 -0
- package/nuxt/components/formProps.js +3 -0
- package/nuxt/components/fullscreenProps.js +3 -0
- package/nuxt/components/iconProps.js +3 -0
- package/nuxt/components/imagePreviewProps.js +3 -0
- package/nuxt/components/inputProps.js +3 -0
- package/nuxt/components/loadingProps.js +3 -0
- package/nuxt/components/mentionProps.js +3 -0
- package/nuxt/components/messageProps.js +3 -0
- package/nuxt/components/modalProps.js +3 -0
- package/nuxt/components/notificationProps.js +3 -0
- package/nuxt/components/paginationProps.js +3 -0
- package/nuxt/components/panelProps.js +3 -0
- package/nuxt/components/popoverProps.js +3 -0
- package/nuxt/components/progressProps.js +3 -0
- package/nuxt/components/rateProps.js +3 -0
- package/nuxt/components/resultProps.js +3 -0
- package/nuxt/components/roundInjectionKey.js +3 -0
- package/nuxt/components/rowProps.js +3 -0
- package/nuxt/components/screenSizes.js +3 -0
- package/nuxt/components/searchProps.js +3 -0
- package/nuxt/components/skeletonItemProps.js +3 -0
- package/nuxt/components/skeletonProps.js +3 -0
- package/nuxt/components/sliderProps.js +3 -0
- package/nuxt/components/splitterProps.js +3 -0
- package/nuxt/components/statisticProps.js +3 -0
- package/nuxt/components/stepProps.js +3 -0
- package/nuxt/components/stepsProps.js +3 -0
- package/nuxt/components/svgIconProps.js +3 -0
- package/nuxt/components/switchProps.js +3 -0
- package/nuxt/components/tableProps.js +3 -0
- package/nuxt/components/tabsProps.js +3 -0
- package/nuxt/components/tagProps.js +3 -0
- package/nuxt/components/textareaProps.js +3 -0
- package/nuxt/components/timeAxisProps.js +3 -0
- package/nuxt/components/timerPickerPanelProps.js +3 -0
- package/nuxt/components/tooltipProps.js +3 -0
- package/nuxt/components/treeNodeProps.js +3 -0
- package/nuxt/components/treeProps.js +3 -0
- package/nuxt/components/uploadProps.js +3 -0
- package/overlay/index.es.js +239 -314
- package/overlay/index.umd.js +1 -1
- package/overlay/style.css +1 -1
- package/package.json +44 -87
- package/pagination/index.es.js +331 -153
- package/pagination/index.umd.js +1 -1
- package/pagination/style.css +1 -1
- package/panel/index.es.js +45 -32
- package/panel/index.umd.js +1 -1
- package/panel/style.css +1 -1
- package/popover/index.es.js +6034 -215
- package/popover/index.umd.js +27 -1
- package/popover/style.css +1 -1
- package/progress/index.es.js +110 -56
- package/progress/index.umd.js +3 -3
- package/progress/style.css +1 -1
- package/radio/index.es.js +8013 -180
- package/radio/index.umd.js +38 -1
- package/radio/style.css +1 -1
- package/rate/index.es.js +77 -55
- package/rate/index.umd.js +1 -1
- package/rate/style.css +1 -1
- package/result/index.es.js +186 -57
- package/result/index.umd.js +1 -1
- package/result/style.css +1 -1
- package/ripple/index.es.js +52 -60
- package/ripple/index.umd.js +1 -1
- package/search/index.es.js +3885 -1152
- package/search/index.umd.js +29 -18
- package/search/style.css +1 -1
- package/select/index.es.js +9235 -516
- package/select/index.umd.js +38 -1
- package/select/style.css +1 -1
- package/skeleton/index.es.js +113 -265
- package/skeleton/index.umd.js +1 -1
- package/skeleton/style.css +1 -1
- package/slider/index.es.js +144 -137
- package/slider/index.umd.js +1 -1
- package/slider/style.css +1 -1
- package/splitter/index.es.js +6219 -232
- package/splitter/index.umd.js +27 -1
- package/splitter/style.css +1 -1
- package/statistic/index.es.js +41 -55
- package/statistic/index.umd.js +1 -1
- package/statistic/style.css +1 -1
- package/status/index.es.js +27 -6
- package/status/index.umd.js +1 -1
- package/status/style.css +1 -1
- package/{color-picker → steps}/index.d.ts +0 -0
- package/steps/index.es.js +386 -0
- package/steps/index.umd.js +1 -0
- package/{gantt → steps}/package.json +1 -1
- package/steps/style.css +1 -0
- package/style.css +1 -1
- package/switch/index.es.js +7818 -64
- package/switch/index.umd.js +38 -1
- package/switch/style.css +1 -1
- package/table/index.es.js +11109 -1451
- package/table/index.umd.js +38 -1
- package/table/style.css +1 -1
- package/tabs/index.es.js +356 -144
- package/tabs/index.umd.js +1 -1
- package/tabs/style.css +1 -1
- package/tag/index.es.js +49 -24
- package/tag/index.umd.js +1 -1
- package/tag/style.css +1 -1
- package/textarea/index.es.js +7940 -83
- package/textarea/index.umd.js +46 -1
- package/textarea/style.css +1 -1
- package/time-picker/index.es.js +8953 -632
- package/time-picker/index.umd.js +38 -1
- package/time-picker/style.css +1 -1
- package/{comment → time-select}/index.d.ts +0 -0
- package/time-select/index.es.js +9606 -0
- package/time-select/index.umd.js +38 -0
- package/{breadcrumb → time-select}/package.json +1 -1
- package/time-select/style.css +1 -0
- package/{date-picker → timeline}/index.d.ts +0 -0
- package/timeline/index.es.js +427 -0
- package/timeline/index.umd.js +1 -0
- package/{carousel → timeline}/package.json +1 -1
- package/timeline/style.css +1 -0
- package/tooltip/index.es.js +5871 -96
- package/tooltip/index.umd.js +27 -1
- package/tooltip/style.css +1 -1
- package/tree/index.es.js +7601 -2508
- package/tree/index.umd.js +29 -18
- package/tree/style.css +1 -1
- package/upload/index.es.js +849 -6143
- package/upload/index.umd.js +1 -27
- package/upload/style.css +1 -1
- package/vue-devui.es.js +20537 -19051
- package/vue-devui.umd.js +41 -19
- package/accordion/index.es.js +0 -508
- package/accordion/index.umd.js +0 -1
- package/accordion/style.css +0 -1
- package/anchor/index.es.js +0 -263
- package/anchor/index.umd.js +0 -1
- package/anchor/style.css +0 -1
- package/back-top/index.es.js +0 -128
- package/back-top/index.umd.js +0 -1
- package/back-top/style.css +0 -1
- package/breadcrumb/index.es.js +0 -127
- package/breadcrumb/index.umd.js +0 -1
- package/breadcrumb/style.css +0 -1
- package/carousel/index.es.js +0 -329
- package/carousel/index.umd.js +0 -1
- package/carousel/style.css +0 -1
- package/cascader/index.es.js +0 -5963
- package/cascader/index.umd.js +0 -27
- package/cascader/package.json +0 -7
- package/cascader/style.css +0 -1
- package/color-picker/index.umd.js +0 -27
- package/color-picker/package.json +0 -7
- package/color-picker/style.css +0 -1
- package/comment/index.es.js +0 -86
- package/comment/index.umd.js +0 -1
- package/comment/style.css +0 -1
- package/date-picker/index.es.js +0 -1171
- package/date-picker/index.umd.js +0 -1
- package/date-picker/package.json +0 -7
- package/date-picker/style.css +0 -1
- package/dragdrop/index.d.ts +0 -7
- package/dragdrop/index.es.js +0 -157
- package/dragdrop/index.umd.js +0 -1
- package/dragdrop/package.json +0 -7
- package/gantt/index.d.ts +0 -7
- package/gantt/index.es.js +0 -523
- package/gantt/index.umd.js +0 -1
- package/gantt/style.css +0 -1
- package/input-icon/index.d.ts +0 -7
- package/input-icon/index.es.js +0 -331
- package/input-icon/index.umd.js +0 -1
- package/input-icon/package.json +0 -7
- package/input-icon/style.css +0 -1
- package/nav-sprite/index.d.ts +0 -7
- package/nav-sprite/index.es.js +0 -68
- package/nav-sprite/index.umd.js +0 -1
- package/nav-sprite/package.json +0 -7
- package/nuxt/components/Accordion.js +0 -3
- package/nuxt/components/Anchor.js +0 -3
- package/nuxt/components/BackTop.js +0 -3
- package/nuxt/components/Breadcrumb.js +0 -3
- package/nuxt/components/Carousel.js +0 -3
- package/nuxt/components/CarouselItem.js +0 -3
- package/nuxt/components/Cascader.js +0 -3
- package/nuxt/components/ColorPicker.js +0 -3
- package/nuxt/components/Comment.js +0 -3
- package/nuxt/components/DatePicker.js +0 -3
- package/nuxt/components/FormControl.js +0 -3
- package/nuxt/components/FormLabel.js +0 -3
- package/nuxt/components/Gantt.js +0 -3
- package/nuxt/components/InputIcon.js +0 -3
- package/nuxt/components/NavSprite.js +0 -2
- package/nuxt/components/QuadrantDiagram.js +0 -3
- package/nuxt/components/ReadTip.js +0 -3
- package/nuxt/components/StepsGuide.js +0 -3
- package/nuxt/components/StickSlider.js +0 -3
- package/nuxt/components/Sticky.js +0 -2
- package/nuxt/components/TagInput.js +0 -3
- package/nuxt/components/TimeAxis.js +0 -3
- package/nuxt/components/TimeAxisItem.js +0 -3
- package/nuxt/components/Toast.js +0 -3
- package/nuxt/components/ToastService.js +0 -3
- package/nuxt/components/Transfer.js +0 -3
- package/nuxt/components/TreeSelect.js +0 -3
- package/quadrant-diagram/index.d.ts +0 -7
- package/quadrant-diagram/index.es.js +0 -5728
- package/quadrant-diagram/index.umd.js +0 -27
- package/quadrant-diagram/package.json +0 -7
- package/quadrant-diagram/style.css +0 -1
- package/read-tip/index.d.ts +0 -7
- package/read-tip/index.es.js +0 -258
- package/read-tip/index.umd.js +0 -1
- package/read-tip/package.json +0 -7
- package/read-tip/style.css +0 -1
- package/steps-guide/index.d.ts +0 -7
- package/steps-guide/index.es.js +0 -239
- package/steps-guide/index.umd.js +0 -1
- package/steps-guide/package.json +0 -7
- package/steps-guide/style.css +0 -1
- package/sticky/index.d.ts +0 -7
- package/sticky/index.es.js +0 -197
- package/sticky/index.umd.js +0 -1
- package/sticky/package.json +0 -7
- package/tag-input/index.d.ts +0 -7
- package/tag-input/index.es.js +0 -329
- package/tag-input/index.umd.js +0 -1
- package/tag-input/package.json +0 -7
- package/tag-input/style.css +0 -1
- package/time-axis/index.d.ts +0 -7
- package/time-axis/index.es.js +0 -299
- package/time-axis/index.umd.js +0 -1
- package/time-axis/package.json +0 -7
- package/time-axis/style.css +0 -1
- package/toast/index.d.ts +0 -7
- package/toast/index.es.js +0 -5918
- package/toast/index.umd.js +0 -27
- package/toast/style.css +0 -1
- package/transfer/index.d.ts +0 -7
- package/transfer/index.es.js +0 -7340
- package/transfer/index.umd.js +0 -27
- package/transfer/package.json +0 -7
- package/transfer/style.css +0 -1
- package/tree-select/index.d.ts +0 -7
- package/tree-select/index.es.js +0 -623
- package/tree-select/index.umd.js +0 -1
- package/tree-select/package.json +0 -7
- package/tree-select/style.css +0 -1
package/tabs/index.es.js
CHANGED
|
@@ -1,195 +1,407 @@
|
|
|
1
|
-
import { defineComponent,
|
|
1
|
+
import { toRefs, computed, defineComponent, shallowRef, reactive, inject, onUpdated, onBeforeMount, onMounted, watch, createVNode, resolveComponent, provide, mergeProps, onUnmounted } from "vue";
|
|
2
|
+
const tabsProps = {
|
|
3
|
+
modelValue: {
|
|
4
|
+
type: [String, Number],
|
|
5
|
+
default: null
|
|
6
|
+
},
|
|
7
|
+
type: {
|
|
8
|
+
type: String,
|
|
9
|
+
default: "tabs"
|
|
10
|
+
},
|
|
11
|
+
showContent: {
|
|
12
|
+
type: Boolean,
|
|
13
|
+
default: true
|
|
14
|
+
},
|
|
15
|
+
reactivable: {
|
|
16
|
+
type: Boolean,
|
|
17
|
+
default: true
|
|
18
|
+
},
|
|
19
|
+
customWidth: {
|
|
20
|
+
type: String,
|
|
21
|
+
default: ""
|
|
22
|
+
},
|
|
23
|
+
cssClass: {
|
|
24
|
+
type: String,
|
|
25
|
+
default: ""
|
|
26
|
+
},
|
|
27
|
+
beforeChange: {
|
|
28
|
+
type: Function,
|
|
29
|
+
default: null
|
|
30
|
+
},
|
|
31
|
+
closeable: {
|
|
32
|
+
type: Boolean,
|
|
33
|
+
default: false
|
|
34
|
+
},
|
|
35
|
+
addable: {
|
|
36
|
+
type: Boolean,
|
|
37
|
+
default: false
|
|
38
|
+
},
|
|
39
|
+
tabPosition: {
|
|
40
|
+
type: String,
|
|
41
|
+
default: "top"
|
|
42
|
+
}
|
|
43
|
+
};
|
|
2
44
|
var tabs = "";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
45
|
+
function createBem(namespace, element, modifier) {
|
|
46
|
+
let cls = namespace;
|
|
47
|
+
if (element) {
|
|
48
|
+
cls += `__${element}`;
|
|
49
|
+
}
|
|
50
|
+
if (modifier) {
|
|
51
|
+
cls += `--${modifier}`;
|
|
52
|
+
}
|
|
53
|
+
return cls;
|
|
54
|
+
}
|
|
55
|
+
function useNamespace(block, needDot = false) {
|
|
56
|
+
const namespace = needDot ? `.devui-${block}` : `devui-${block}`;
|
|
57
|
+
const b = () => createBem(namespace);
|
|
58
|
+
const e = (element) => element ? createBem(namespace, element) : "";
|
|
59
|
+
const m = (modifier) => modifier ? createBem(namespace, "", modifier) : "";
|
|
60
|
+
const em = (element, modifier) => element && modifier ? createBem(namespace, element, modifier) : "";
|
|
61
|
+
return {
|
|
62
|
+
b,
|
|
63
|
+
e,
|
|
64
|
+
m,
|
|
65
|
+
em
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
const ns$1 = useNamespace("tabs");
|
|
69
|
+
function useTabNavRender(props, data) {
|
|
70
|
+
const { cssClass, tabPosition, customWidth } = toRefs(props);
|
|
71
|
+
const ulClasses = computed(() => ({
|
|
72
|
+
[ns$1.e("nav")]: true,
|
|
73
|
+
[ns$1.em("nav", props.type)]: true,
|
|
74
|
+
[cssClass.value]: Boolean(cssClass.value),
|
|
75
|
+
[ns$1.em("nav", "top")]: tabPosition.value === "top",
|
|
76
|
+
[ns$1.em("nav", "right")]: tabPosition.value === "right",
|
|
77
|
+
[ns$1.em("nav", "bottom")]: tabPosition.value === "bottom",
|
|
78
|
+
[ns$1.em("nav", "left")]: tabPosition.value === "left"
|
|
79
|
+
}));
|
|
80
|
+
const aClasses = computed(() => ({
|
|
81
|
+
["custom-width"]: Boolean(customWidth.value)
|
|
82
|
+
}));
|
|
83
|
+
const customStyle = {
|
|
84
|
+
width: props.customWidth ? props.customWidth : ""
|
|
85
|
+
};
|
|
86
|
+
const sliderAnimationStyle = computed(() => {
|
|
87
|
+
if (["top", "bottom"].includes(props.tabPosition)) {
|
|
88
|
+
return {
|
|
89
|
+
left: data.offsetLeft + "px",
|
|
90
|
+
width: data.offsetWidth + "px"
|
|
91
|
+
};
|
|
92
|
+
} else {
|
|
93
|
+
return {
|
|
94
|
+
top: data.offsetTop + "px",
|
|
95
|
+
height: data.offsetHeight + "px",
|
|
96
|
+
width: data.offsetWidth + "px"
|
|
97
|
+
};
|
|
37
98
|
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const state = reactive({
|
|
51
|
-
data: [],
|
|
52
|
-
active: props.modelValue,
|
|
53
|
-
showContent: props.showContent,
|
|
54
|
-
slots: []
|
|
55
|
-
});
|
|
56
|
-
provide("tabs", {
|
|
57
|
-
state
|
|
58
|
-
});
|
|
59
|
-
const canChange = function(currentTab) {
|
|
60
|
-
let changeResult = Promise.resolve(true);
|
|
61
|
-
if (typeof props.beforeChange === "function") {
|
|
62
|
-
const result = props.beforeChange(currentTab);
|
|
63
|
-
if (typeof result !== "undefined") {
|
|
64
|
-
if (result.then) {
|
|
65
|
-
changeResult = result;
|
|
99
|
+
});
|
|
100
|
+
return { ulClasses, aClasses, customStyle, sliderAnimationStyle };
|
|
101
|
+
}
|
|
102
|
+
function useTabNavFunction(props, tabs2, data, ctx, tabsEle) {
|
|
103
|
+
const update = () => {
|
|
104
|
+
if (props.type === "slider") {
|
|
105
|
+
setTimeout(() => {
|
|
106
|
+
var _a;
|
|
107
|
+
const tabEle = (_a = tabsEle.value) == null ? void 0 : _a.querySelector("#" + props.modelValue + ".active");
|
|
108
|
+
if (tabEle && tabsEle.value) {
|
|
109
|
+
if (["top", "bottom"].includes(props.tabPosition)) {
|
|
110
|
+
data.offsetLeft = tabEle.getBoundingClientRect().left - tabsEle.value.getBoundingClientRect().left;
|
|
66
111
|
} else {
|
|
67
|
-
|
|
68
|
-
|
|
112
|
+
data.offsetTop = tabEle.getBoundingClientRect().top - tabsEle.value.getBoundingClientRect().top;
|
|
113
|
+
data.offsetHeight = tabEle.getBoundingClientRect().height;
|
|
69
114
|
}
|
|
115
|
+
data.offsetWidth = tabEle.getBoundingClientRect().width;
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
const canChange = (currentTab) => {
|
|
121
|
+
let changeResult = Promise.resolve(true);
|
|
122
|
+
if (typeof props.beforeChange === "function") {
|
|
123
|
+
const result = props.beforeChange(currentTab);
|
|
124
|
+
if (typeof result !== "undefined") {
|
|
125
|
+
if (result.then) {
|
|
126
|
+
changeResult = result;
|
|
127
|
+
} else {
|
|
128
|
+
changeResult = Promise.resolve(result);
|
|
70
129
|
}
|
|
71
130
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
131
|
+
}
|
|
132
|
+
return changeResult;
|
|
133
|
+
};
|
|
134
|
+
const activeClick = (item, tabEl) => {
|
|
135
|
+
if (!props.reactivable && props.modelValue === item.id) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
canChange(item.id).then((change) => {
|
|
139
|
+
var _a, _b;
|
|
140
|
+
if (!change) {
|
|
76
141
|
return;
|
|
77
142
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
this.offsetLeft = tabEl.getBoundingClientRect().left - this.tabsEle.nativeElement.getBoundingClientRect().left;
|
|
88
|
-
this.offsetWidth = tabEl.getBoundingClientRect().width;
|
|
143
|
+
const tab2 = (_b = (_a = tabs2 == null ? void 0 : tabs2.state) == null ? void 0 : _a.data) == null ? void 0 : _b.find((itemOption) => itemOption.id === item.id);
|
|
144
|
+
if (tabs2 && tab2 && !tab2.disabled) {
|
|
145
|
+
tabs2.state.active = item.id;
|
|
146
|
+
if (props.type === "slider" && tabEl && tabsEle && tabsEle.value) {
|
|
147
|
+
if (["left", "right"].includes(props.tabPosition)) {
|
|
148
|
+
data.offsetLeft = tabEl.getBoundingClientRect().left - tabsEle.value.nativeElement.getBoundingClientRect().left;
|
|
149
|
+
} else {
|
|
150
|
+
data.offsetTop = tabEl.getBoundingClientRect().top - tabsEle.value.nativeElement.getBoundingClientRect().top;
|
|
151
|
+
data.offsetHeight = tabEl.getBoundingClientRect().height;
|
|
89
152
|
}
|
|
90
|
-
|
|
153
|
+
data.offsetWidth = tabEl.getBoundingClientRect().width;
|
|
91
154
|
}
|
|
92
|
-
|
|
93
|
-
};
|
|
94
|
-
const ulClass = [props.type];
|
|
95
|
-
props.cssClass && ulClass.push(props.cssClass);
|
|
96
|
-
props.vertical && ulClass.push("devui-nav-stacked");
|
|
97
|
-
onUpdated(() => {
|
|
98
|
-
if (props.type === "slider") {
|
|
99
|
-
setTimeout(() => {
|
|
100
|
-
const tabEle = tabsEle.value.querySelector("#" + props.modelValue + ".active");
|
|
101
|
-
if (tabEle) {
|
|
102
|
-
data.offsetLeft = tabEle.getBoundingClientRect().left - tabsEle.value.getBoundingClientRect().left;
|
|
103
|
-
data.offsetWidth = tabEle.getBoundingClientRect().width;
|
|
104
|
-
}
|
|
105
|
-
});
|
|
155
|
+
ctx.emit("active-tab-change", tab2.id);
|
|
106
156
|
}
|
|
107
157
|
});
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
158
|
+
};
|
|
159
|
+
const beforeMount = () => {
|
|
160
|
+
if (props.type !== "slider" && props.modelValue === void 0 && (tabs2 == null ? void 0 : tabs2.state.data) && tabs2.state.data.length > 0) {
|
|
161
|
+
activeClick(tabs2.state.data[0]);
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
const mounted = () => {
|
|
165
|
+
var _a;
|
|
166
|
+
if (props.type === "slider" && props.modelValue === void 0 && (tabs2 == null ? void 0 : tabs2.state.data) && tabs2.state.data.length > 0 && tabs2.state.data[0]) {
|
|
167
|
+
const tabsStateData = tabs2.state.data[0];
|
|
168
|
+
const dom = (_a = tabsStateData.tabsEle) == null ? void 0 : _a.value;
|
|
169
|
+
const ele = dom == null ? void 0 : dom.getElementById(tabsStateData.tabId);
|
|
170
|
+
activeClick(ele);
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
const tabCanClose = (item) => {
|
|
174
|
+
return (props.closeable || item.closeable) && !item.disabled;
|
|
175
|
+
};
|
|
176
|
+
return { update, activeClick, beforeMount, mounted, tabCanClose };
|
|
177
|
+
}
|
|
178
|
+
function useTabNavEvent(ctx) {
|
|
179
|
+
const onTabRemove = (item, ev) => {
|
|
180
|
+
ev.stopPropagation();
|
|
181
|
+
ctx.emit("tab-remove", item, ev);
|
|
182
|
+
ctx.emit("tab-change", item.id, "delete");
|
|
183
|
+
};
|
|
184
|
+
const onTabAdd = () => {
|
|
185
|
+
ctx.emit("tab-add");
|
|
186
|
+
ctx.emit("tab-change", void 0, "add");
|
|
187
|
+
};
|
|
188
|
+
return { onTabRemove, onTabAdd };
|
|
189
|
+
}
|
|
190
|
+
var tabNav = "";
|
|
191
|
+
var TabNav = defineComponent({
|
|
192
|
+
name: "DTabNav",
|
|
193
|
+
props: tabsProps,
|
|
194
|
+
emits: ["active-tab-change", "tab-remove", "tab-add", "tab-change"],
|
|
195
|
+
setup(props, ctx) {
|
|
196
|
+
const ns2 = useNamespace("tabs");
|
|
197
|
+
const tabsEle = shallowRef();
|
|
198
|
+
const data = reactive({
|
|
199
|
+
offsetLeft: 0,
|
|
200
|
+
offsetWidth: 0,
|
|
201
|
+
offsetTop: 0,
|
|
202
|
+
offsetHeight: 0,
|
|
203
|
+
id: null
|
|
112
204
|
});
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
205
|
+
const tabs2 = inject("tabs");
|
|
206
|
+
const {
|
|
207
|
+
ulClasses,
|
|
208
|
+
aClasses,
|
|
209
|
+
customStyle,
|
|
210
|
+
sliderAnimationStyle
|
|
211
|
+
} = useTabNavRender(props, data);
|
|
212
|
+
const {
|
|
213
|
+
update,
|
|
214
|
+
beforeMount,
|
|
215
|
+
mounted,
|
|
216
|
+
activeClick,
|
|
217
|
+
tabCanClose
|
|
218
|
+
} = useTabNavFunction(props, tabs2, data, ctx, tabsEle);
|
|
219
|
+
const {
|
|
220
|
+
onTabRemove,
|
|
221
|
+
onTabAdd
|
|
222
|
+
} = useTabNavEvent(ctx);
|
|
223
|
+
onUpdated(() => update());
|
|
224
|
+
onBeforeMount(() => beforeMount());
|
|
225
|
+
onMounted(() => mounted());
|
|
226
|
+
watch(() => props.modelValue, () => {
|
|
227
|
+
var _a;
|
|
228
|
+
const tab2 = (_a = tabs2 == null ? void 0 : tabs2.state.data) == null ? void 0 : _a.find((item) => item.id === props.modelValue);
|
|
229
|
+
if (tab2) {
|
|
230
|
+
activeClick(tab2);
|
|
116
231
|
}
|
|
117
232
|
});
|
|
118
233
|
return () => {
|
|
119
|
-
|
|
234
|
+
const closeIconEl = (item) => {
|
|
235
|
+
return tabCanClose(item) ? createVNode("span", {
|
|
236
|
+
"class": ns2.e("close-btn"),
|
|
237
|
+
"onClick": (ev) => onTabRemove(item, ev)
|
|
238
|
+
}, [createVNode(resolveComponent("d-icon"), {
|
|
239
|
+
"size": "12px",
|
|
240
|
+
"name": "error-o"
|
|
241
|
+
}, null)]) : null;
|
|
242
|
+
};
|
|
243
|
+
const newButton = props.addable ? createVNode("li", {
|
|
244
|
+
"class": ns2.e("new-tab"),
|
|
245
|
+
"onClick": onTabAdd
|
|
246
|
+
}, [createVNode(resolveComponent("d-icon"), {
|
|
247
|
+
"name": "add"
|
|
248
|
+
}, null)]) : null;
|
|
249
|
+
return createVNode("ul", {
|
|
120
250
|
"ref": tabsEle,
|
|
121
251
|
"role": "tablist",
|
|
122
|
-
"class":
|
|
123
|
-
|
|
124
|
-
|
|
252
|
+
"class": ulClasses.value
|
|
253
|
+
}, [((tabs2 == null ? void 0 : tabs2.state.data) || []).map((item, i) => {
|
|
254
|
+
var _a, _b;
|
|
125
255
|
return createVNode("li", {
|
|
126
256
|
"role": "presentation",
|
|
127
257
|
"onClick": () => {
|
|
128
258
|
activeClick(item);
|
|
129
259
|
},
|
|
130
|
-
"class": (props.modelValue === (item.id || item.tabId) ? "active" : "") +
|
|
260
|
+
"class": (props.modelValue === (item.id || item.tabId) ? "active" : "") + (item.disabled ? " disabled" : ""),
|
|
131
261
|
"id": item.id || item.tabId
|
|
262
|
+
}, [createVNode("span", {
|
|
263
|
+
"class": ns2.e("nav-content")
|
|
132
264
|
}, [createVNode("a", {
|
|
133
265
|
"role": "tab",
|
|
134
266
|
"data-toggle": item.id,
|
|
135
|
-
"aria-expanded": props.modelValue === (item.id || item.tabId)
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
"
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
267
|
+
"aria-expanded": props.modelValue === (item.id || item.tabId),
|
|
268
|
+
"class": aClasses.value,
|
|
269
|
+
"style": customStyle
|
|
270
|
+
}, [(tabs2 == null ? void 0 : tabs2.state.slots[i]) ? (_b = (_a = tabs2.state.slots)[i]) == null ? void 0 : _b.call(_a) : createVNode("span", null, [item.title])]), closeIconEl(item)])]);
|
|
271
|
+
}), newButton, createVNode("div", {
|
|
272
|
+
"class": ns2.e(`nav-${props.type}-animation`),
|
|
273
|
+
"style": sliderAnimationStyle.value
|
|
274
|
+
}, null)]);
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
const ns = useNamespace("tabs");
|
|
279
|
+
function useTabsEvent(ctx) {
|
|
280
|
+
const onUpdateModelValue = (value) => {
|
|
281
|
+
ctx.emit("update:modelValue", value);
|
|
282
|
+
};
|
|
283
|
+
const onActiveTabChange = (value) => {
|
|
284
|
+
ctx.emit("active-tab-change", value);
|
|
285
|
+
};
|
|
286
|
+
const onTabRemove = (item, ev) => {
|
|
287
|
+
ctx.emit("tab-remove", item, ev);
|
|
288
|
+
};
|
|
289
|
+
const onTabAdd = () => {
|
|
290
|
+
ctx.emit("tab-add");
|
|
291
|
+
};
|
|
292
|
+
const onTabChange = (id, type) => {
|
|
293
|
+
ctx.emit("tab-change", id, type);
|
|
294
|
+
};
|
|
295
|
+
return { onUpdateModelValue, onActiveTabChange, onTabRemove, onTabAdd, onTabChange };
|
|
296
|
+
}
|
|
297
|
+
function useTabsRender(props) {
|
|
298
|
+
const tabsClasses = computed(() => ({
|
|
299
|
+
[ns.b()]: true,
|
|
300
|
+
[ns.m(props.tabPosition)]: true
|
|
301
|
+
}));
|
|
302
|
+
return { tabsClasses };
|
|
303
|
+
}
|
|
304
|
+
var Tabs = defineComponent({
|
|
305
|
+
name: "DTabs",
|
|
306
|
+
props: tabsProps,
|
|
307
|
+
emits: ["update:modelValue", "active-tab-change", "tab-remove", "tab-add", "tab-change"],
|
|
308
|
+
setup(props, ctx) {
|
|
309
|
+
const state = reactive({
|
|
310
|
+
data: [],
|
|
311
|
+
active: props.modelValue,
|
|
312
|
+
showContent: props.showContent,
|
|
313
|
+
slots: []
|
|
314
|
+
});
|
|
315
|
+
provide("tabs", {
|
|
316
|
+
state
|
|
317
|
+
});
|
|
318
|
+
const {
|
|
319
|
+
onUpdateModelValue,
|
|
320
|
+
onActiveTabChange,
|
|
321
|
+
onTabRemove,
|
|
322
|
+
onTabAdd,
|
|
323
|
+
onTabChange
|
|
324
|
+
} = useTabsEvent(ctx);
|
|
325
|
+
const {
|
|
326
|
+
tabsClasses
|
|
327
|
+
} = useTabsRender(props);
|
|
328
|
+
watch(() => state.active, () => {
|
|
329
|
+
onUpdateModelValue(state.active);
|
|
330
|
+
});
|
|
331
|
+
return () => {
|
|
332
|
+
var _a, _b;
|
|
333
|
+
const tabNav2 = createVNode(TabNav, mergeProps(props, {
|
|
334
|
+
"onActiveTabChange": onActiveTabChange,
|
|
335
|
+
"onTabRemove": onTabRemove,
|
|
336
|
+
"onTabAdd": onTabAdd,
|
|
337
|
+
"onTabChange": onTabChange
|
|
338
|
+
}), null);
|
|
339
|
+
const content = (_b = (_a = ctx.slots).default) == null ? void 0 : _b.call(_a);
|
|
340
|
+
return createVNode("div", {
|
|
341
|
+
"class": tabsClasses.value
|
|
342
|
+
}, [props.tabPosition === "bottom" ? [content, tabNav2] : [tabNav2, content], createVNode("div", {
|
|
343
|
+
"style": "clear: both"
|
|
344
|
+
}, null)]);
|
|
144
345
|
};
|
|
145
346
|
}
|
|
146
347
|
});
|
|
348
|
+
const tabProps = {
|
|
349
|
+
title: {
|
|
350
|
+
type: [String, Number],
|
|
351
|
+
default: null
|
|
352
|
+
},
|
|
353
|
+
id: {
|
|
354
|
+
type: String,
|
|
355
|
+
default: null
|
|
356
|
+
},
|
|
357
|
+
disabled: {
|
|
358
|
+
type: Boolean,
|
|
359
|
+
default: false
|
|
360
|
+
},
|
|
361
|
+
closeable: {
|
|
362
|
+
type: Boolean,
|
|
363
|
+
default: false
|
|
364
|
+
}
|
|
365
|
+
};
|
|
366
|
+
var tab = "";
|
|
147
367
|
var Tab = defineComponent({
|
|
148
368
|
name: "DTab",
|
|
149
|
-
props:
|
|
150
|
-
title: {
|
|
151
|
-
default: null,
|
|
152
|
-
type: [String, Number]
|
|
153
|
-
},
|
|
154
|
-
id: {
|
|
155
|
-
default: null,
|
|
156
|
-
type: String
|
|
157
|
-
},
|
|
158
|
-
disabled: {
|
|
159
|
-
type: Boolean,
|
|
160
|
-
default: false
|
|
161
|
-
}
|
|
162
|
-
},
|
|
369
|
+
props: tabProps,
|
|
163
370
|
setup(props, {
|
|
164
371
|
slots
|
|
165
372
|
}) {
|
|
373
|
+
var _a;
|
|
166
374
|
const tabs2 = inject("tabs");
|
|
167
|
-
tabs2.state.slots.push(slots.
|
|
168
|
-
tabs2.state.data.push(props);
|
|
375
|
+
tabs2 == null ? void 0 : tabs2.state.slots.push(slots.title);
|
|
376
|
+
(_a = tabs2 == null ? void 0 : tabs2.state.data) == null ? void 0 : _a.push(props);
|
|
377
|
+
const ns2 = useNamespace("tab");
|
|
378
|
+
onUnmounted(() => {
|
|
379
|
+
var _a2;
|
|
380
|
+
if (tabs2) {
|
|
381
|
+
tabs2.state.data = (_a2 = tabs2.state.data) == null ? void 0 : _a2.filter((tab2) => tab2.id !== props.id);
|
|
382
|
+
}
|
|
383
|
+
});
|
|
169
384
|
return () => {
|
|
385
|
+
var _a2;
|
|
170
386
|
const {
|
|
171
387
|
id
|
|
172
388
|
} = props;
|
|
173
|
-
const content = tabs2.state.showContent && tabs2.state.active === id ? createVNode("div", {
|
|
174
|
-
"class": "
|
|
389
|
+
const content = (tabs2 == null ? void 0 : tabs2.state.showContent) && tabs2.state.active === id ? createVNode("div", {
|
|
390
|
+
"class": ns2.e("content")
|
|
175
391
|
}, [createVNode("div", {
|
|
176
|
-
"role": "tabpanel"
|
|
177
|
-
|
|
178
|
-
}, [slots.default()])]) : null;
|
|
392
|
+
"role": "tabpanel"
|
|
393
|
+
}, [(_a2 = slots.default) == null ? void 0 : _a2.call(slots)])]) : null;
|
|
179
394
|
return content;
|
|
180
395
|
};
|
|
181
396
|
}
|
|
182
397
|
});
|
|
183
|
-
Tabs.install = function(app) {
|
|
184
|
-
app.component(Tabs.name, Tabs);
|
|
185
|
-
app.component(Tab.name, Tab);
|
|
186
|
-
};
|
|
187
398
|
var index = {
|
|
188
399
|
title: "Tabs \u9009\u9879\u5361",
|
|
189
400
|
category: "\u5BFC\u822A",
|
|
190
|
-
status: "
|
|
401
|
+
status: "100%",
|
|
191
402
|
install(app) {
|
|
192
|
-
app.
|
|
403
|
+
app.component(Tabs.name, Tabs);
|
|
404
|
+
app.component(Tab.name, Tab);
|
|
193
405
|
}
|
|
194
406
|
};
|
|
195
|
-
export { Tabs, index as default };
|
|
407
|
+
export { Tab, Tabs, index as default, tabsProps };
|
package/tabs/index.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(b,n){typeof exports=="object"&&typeof module!="undefined"?n(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],n):(b=typeof globalThis!="undefined"?globalThis:b||self,n(b.index={},b.Vue))})(this,function(b,n){"use strict";const w={modelValue:{type:[String,Number],default:null},type:{type:String,default:"tabs"},showContent:{type:Boolean,default:!0},reactivable:{type:Boolean,default:!0},customWidth:{type:String,default:""},cssClass:{type:String,default:""},beforeChange:{type:Function,default:null},closeable:{type:Boolean,default:!1},addable:{type:Boolean,default:!1},tabPosition:{type:String,default:"top"}};var _="";function y(e,a,t){let s=e;return a&&(s+=`__${a}`),t&&(s+=`--${t}`),s}function p(e,a=!1){const t=a?`.devui-${e}`:`devui-${e}`;return{b:()=>y(t),e:o=>o?y(t,o):"",m:o=>o?y(t,"",o):"",em:(o,m)=>o&&m?y(t,o,m):""}}const h=p("tabs");function I(e,a){const{cssClass:t,tabPosition:s,customWidth:i}=n.toRefs(e),l=n.computed(()=>({[h.e("nav")]:!0,[h.em("nav",e.type)]:!0,[t.value]:Boolean(t.value),[h.em("nav","top")]:s.value==="top",[h.em("nav","right")]:s.value==="right",[h.em("nav","bottom")]:s.value==="bottom",[h.em("nav","left")]:s.value==="left"})),u=n.computed(()=>({["custom-width"]:Boolean(i.value)})),o={width:e.customWidth?e.customWidth:""},m=n.computed(()=>["top","bottom"].includes(e.tabPosition)?{left:a.offsetLeft+"px",width:a.offsetWidth+"px"}:{top:a.offsetTop+"px",height:a.offsetHeight+"px",width:a.offsetWidth+"px"});return{ulClasses:l,aClasses:u,customStyle:o,sliderAnimationStyle:m}}function $(e,a,t,s,i){const l=()=>{e.type==="slider"&&setTimeout(()=>{var c;const d=(c=i.value)==null?void 0:c.querySelector("#"+e.modelValue+".active");d&&i.value&&(["top","bottom"].includes(e.tabPosition)?t.offsetLeft=d.getBoundingClientRect().left-i.value.getBoundingClientRect().left:(t.offsetTop=d.getBoundingClientRect().top-i.value.getBoundingClientRect().top,t.offsetHeight=d.getBoundingClientRect().height),t.offsetWidth=d.getBoundingClientRect().width)})},u=d=>{let c=Promise.resolve(!0);if(typeof e.beforeChange=="function"){const r=e.beforeChange(d);typeof r!="undefined"&&(r.then?c=r:c=Promise.resolve(r))}return c},o=(d,c)=>{!e.reactivable&&e.modelValue===d.id||u(d.id).then(r=>{var V,B;if(!r)return;const g=(B=(V=a==null?void 0:a.state)==null?void 0:V.data)==null?void 0:B.find(v=>v.id===d.id);a&&g&&!g.disabled&&(a.state.active=d.id,e.type==="slider"&&c&&i&&i.value&&(["left","right"].includes(e.tabPosition)?t.offsetLeft=c.getBoundingClientRect().left-i.value.nativeElement.getBoundingClientRect().left:(t.offsetTop=c.getBoundingClientRect().top-i.value.nativeElement.getBoundingClientRect().top,t.offsetHeight=c.getBoundingClientRect().height),t.offsetWidth=c.getBoundingClientRect().width),s.emit("active-tab-change",g.id))})};return{update:l,activeClick:o,beforeMount:()=>{e.type!=="slider"&&e.modelValue===void 0&&(a==null?void 0:a.state.data)&&a.state.data.length>0&&o(a.state.data[0])},mounted:()=>{var d;if(e.type==="slider"&&e.modelValue===void 0&&(a==null?void 0:a.state.data)&&a.state.data.length>0&&a.state.data[0]){const c=a.state.data[0],r=(d=c.tabsEle)==null?void 0:d.value,g=r==null?void 0:r.getElementById(c.tabId);o(g)}},tabCanClose:d=>(e.closeable||d.closeable)&&!d.disabled}}function U(e){return{onTabRemove:(s,i)=>{i.stopPropagation(),e.emit("tab-remove",s,i),e.emit("tab-change",s.id,"delete")},onTabAdd:()=>{e.emit("tab-add"),e.emit("tab-change",void 0,"add")}}}var F="",j=n.defineComponent({name:"DTabNav",props:w,emits:["active-tab-change","tab-remove","tab-add","tab-change"],setup(e,a){const t=p("tabs"),s=n.shallowRef(),i=n.reactive({offsetLeft:0,offsetWidth:0,offsetTop:0,offsetHeight:0,id:null}),l=n.inject("tabs"),{ulClasses:u,aClasses:o,customStyle:m,sliderAnimationStyle:C}=I(e,i),{update:T,beforeMount:d,mounted:c,activeClick:r,tabCanClose:g}=$(e,l,i,a,s),{onTabRemove:V,onTabAdd:B}=U(a);return n.onUpdated(()=>T()),n.onBeforeMount(()=>d()),n.onMounted(()=>c()),n.watch(()=>e.modelValue,()=>{var N;const v=(N=l==null?void 0:l.state.data)==null?void 0:N.find(f=>f.id===e.modelValue);v&&r(v)}),()=>{const v=f=>g(f)?n.createVNode("span",{class:t.e("close-btn"),onClick:R=>V(f,R)},[n.createVNode(n.resolveComponent("d-icon"),{size:"12px",name:"error-o"},null)]):null,N=e.addable?n.createVNode("li",{class:t.e("new-tab"),onClick:B},[n.createVNode(n.resolveComponent("d-icon"),{name:"add"},null)]):null;return n.createVNode("ul",{ref:s,role:"tablist",class:u.value},[((l==null?void 0:l.state.data)||[]).map((f,R)=>{var M,W;return n.createVNode("li",{role:"presentation",onClick:()=>{r(f)},class:(e.modelValue===(f.id||f.tabId)?"active":"")+(f.disabled?" disabled":""),id:f.id||f.tabId},[n.createVNode("span",{class:t.e("nav-content")},[n.createVNode("a",{role:"tab","data-toggle":f.id,"aria-expanded":e.modelValue===(f.id||f.tabId),class:o.value,style:m},[l!=null&&l.state.slots[R]?(W=(M=l.state.slots)[R])==null?void 0:W.call(M):n.createVNode("span",null,[f.title])]),v(f)])])}),N,n.createVNode("div",{class:t.e(`nav-${e.type}-animation`),style:C.value},null)])}}});const A=p("tabs");function k(e){return{onUpdateModelValue:u=>{e.emit("update:modelValue",u)},onActiveTabChange:u=>{e.emit("active-tab-change",u)},onTabRemove:(u,o)=>{e.emit("tab-remove",u,o)},onTabAdd:()=>{e.emit("tab-add")},onTabChange:(u,o)=>{e.emit("tab-change",u,o)}}}function D(e){return{tabsClasses:n.computed(()=>({[A.b()]:!0,[A.m(e.tabPosition)]:!0}))}}var P=n.defineComponent({name:"DTabs",props:w,emits:["update:modelValue","active-tab-change","tab-remove","tab-add","tab-change"],setup(e,a){const t=n.reactive({data:[],active:e.modelValue,showContent:e.showContent,slots:[]});n.provide("tabs",{state:t});const{onUpdateModelValue:s,onActiveTabChange:i,onTabRemove:l,onTabAdd:u,onTabChange:o}=k(a),{tabsClasses:m}=D(e);return n.watch(()=>t.active,()=>{s(t.active)}),()=>{var d,c;const C=n.createVNode(j,n.mergeProps(e,{onActiveTabChange:i,onTabRemove:l,onTabAdd:u,onTabChange:o}),null),T=(c=(d=a.slots).default)==null?void 0:c.call(d);return n.createVNode("div",{class:m.value},[e.tabPosition==="bottom"?[T,C]:[C,T],n.createVNode("div",{style:"clear: both"},null)])}}});const H={title:{type:[String,Number],default:null},id:{type:String,default:null},disabled:{type:Boolean,default:!1},closeable:{type:Boolean,default:!1}};var q="",S=n.defineComponent({name:"DTab",props:H,setup(e,{slots:a}){var i;const t=n.inject("tabs");t==null||t.state.slots.push(a.title),(i=t==null?void 0:t.state.data)==null||i.push(e);const s=p("tab");return n.onUnmounted(()=>{var l;t&&(t.state.data=(l=t.state.data)==null?void 0:l.filter(u=>u.id!==e.id))}),()=>{var o;const{id:l}=e;return(t==null?void 0:t.state.showContent)&&t.state.active===l?n.createVNode("div",{class:s.e("content")},[n.createVNode("div",{role:"tabpanel"},[(o=a.default)==null?void 0:o.call(a)])]):null}}}),L={title:"Tabs \u9009\u9879\u5361",category:"\u5BFC\u822A",status:"100%",install(e){e.component(P.name,P),e.component(S.name,S)}};b.Tab=S,b.Tabs=P,b.default=L,b.tabsProps=w,Object.defineProperties(b,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/tabs/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:host{display:block}.devui-nav-tabs,.devui-nav-pills{font-size:var(--devui-font-size, 12px);background:transparent;font-weight:700;list-style:none}.devui-nav-tabs li,.devui-nav-pills li{cursor:pointer;border:2px solid transparent}.devui-nav-tabs li a,.devui-nav-pills li a{cursor:pointer;border:none;line-height:30px;background-color:transparent;padding:0;text-decoration:none;color:var(--devui-text, #252b3a)}.devui-nav-tabs li a:hover,.devui-nav-tabs li a:focus,.devui-nav-tabs li a:active,.devui-nav-pills li a:hover,.devui-nav-pills li a:focus,.devui-nav-pills li a:active{outline:none}.devui-nav-tabs li.disabled a,.devui-nav-pills li.disabled a{color:var(--devui-disabled-text, #adb0b8);cursor:not-allowed}.devui-nav-tabs li.active a,.devui-nav-tabs li:hover:not(.disabled) a,.devui-nav-pills li.active a,.devui-nav-pills li:hover:not(.disabled) a{color:var(--devui-brand, #5e7ce0)}.devui-nav-tabs li:after,.devui-nav-pills li:after{content:"";display:block;margin:auto;height:2px;width:0;background:transparent;transition:width .3s ease-out,background-color .3s ease-out}.devui-nav-tabs li.active:after,.devui-nav-pills li.active:after{width:100%;background:var(--devui-brand, #5e7ce0)}.devui-nav-options{font-size:var(--devui-font-size, 12px);background:transparent;border:none;border-radius:var(--devui-border-radius, 2px)}.devui-nav-options>li{cursor:pointer;border:1px solid var(--devui-line, #adb0b8);border-left-width:0;background-color:var(--devui-base-bg, #ffffff);float:left}.devui-nav-options>li:first-child{border-left-width:1px;border-radius:var(--devui-border-radius, 2px) 0 0 var(--devui-border-radius, 2px)}.devui-nav-options>li:last-child{border-radius:0 var(--devui-border-radius, 2px) var(--devui-border-radius, 2px) 0}.devui-nav-options>li>a{cursor:pointer;border:none;color:var(--devui-text, #252b3a);line-height:26px;padding:0 15px}.devui-nav-options>li>a:hover,.devui-nav-options>li>a:focus,.devui-nav-options>li>a:active{outline:none}.devui-nav-options>li.disabled{border-color:var(--devui-disabled-line, #dfe1e6)}.devui-nav-options>li.disabled a{color:var(--devui-disabled-text, #adb0b8);cursor:not-allowed}.devui-nav-options>li.active>a,.devui-nav-options>li:hover:not(.disabled)>a{color:var(--devui-light-text, #ffffff)}.devui-nav-options>li.active>a:hover,.devui-nav-options>li:hover:not(.disabled)>a:hover{color:var(--devui-light-text, #ffffff);background:transparent}.devui-nav-options>li.active{background-color:var(--devui-brand, #5e7ce0);border-color:var(--devui-brand, #5e7ce0)}.devui-nav-options>li.active:not(:first-child):before{background-color:var(--devui-brand, #5e7ce0)}.devui-nav-options>li.active+li:before{background-color:var(--devui-brand, #5e7ce0)}.devui-nav-options>li:hover:not(.active):not(.disabled){background-color:var(--devui-brand-active, #526ecc);border-color:var(--devui-brand-active, #526ecc)}.devui-nav-options>li:hover:not(.active):not(.disabled):not(:first-child):before{background-color:var(--devui-brand-active, #526ecc)}.devui-nav-slider{font-size:var(--devui-font-size, 12px);border:none;border-radius:var(--devui-border-radius, 2px);background:var(--devui-list-item-hover-bg, #f2f5fc);width:fit-content;display:flex!important;align-items:center;position:relative}.devui-nav-slider>li{cursor:pointer;margin:2px;float:left;position:relative;z-index:1}.devui-nav-slider>li:first-child{border-left-width:1px;border-radius:var(--devui-border-radius, 2px) 0 0 var(--devui-border-radius, 2px)}.devui-nav-slider>li:last-child{border-radius:0 var(--devui-border-radius, 2px) var(--devui-border-radius, 2px) 0}.devui-nav-slider>li a{cursor:pointer;border:none;color:var(--devui-text, #252b3a);line-height:28px;padding:0 15px}.devui-nav-slider>li a:hover,.devui-nav-slider>li a:focus,.devui-nav-slider>li a:active{outline:none}.devui-nav-slider>li.disabled{border-color:var(--devui-disabled-line, #dfe1e6)}.devui-nav-slider>li.disabled a{color:var(--devui-disabled-text, #adb0b8);cursor:not-allowed}.devui-nav-slider>li.active a,.devui-nav-slider>li:hover:not(.disabled) a{color:var(--devui-brand-active, #526ecc)}.devui-nav-slider>li.active a:hover,.devui-nav-slider>li:hover:not(.disabled) a:hover{color:var(--devui-brand-active, #526ecc);background:transparent}.devui-nav-slider>li.active:not(:first-child):before,.devui-nav-slider>li:hover:not(.disabled):not(:first-child):before{content:"";display:block;top:-1px;left:-1px;width:1px;height:"calc(100% + 2px)";position:absolute}.devui-nav-slider>li.active{text-shadow:0 0 .7px var(--devui-brand, #5e7ce0)}.devui-nav-slider>li.active:not(:first-child):before{background-color:var(--devui-brand, #5e7ce0)}.devui-nav-slider>li.active+li:before{background-color:var(--devui-brand, #5e7ce0)}.devui-nav-slider>li:hover:not(.active):not(.disabled){color:var(--devui-brand-active, #526ecc)}.devui-nav-slider>li:hover:not(.active):not(.disabled):not(:first-child):before{background-color:var(--devui-brand-active, #526ecc)}.devui-nav-wrapped{font-size:var(--devui-font-size, 12px);background:transparent;border-bottom:1px solid var(--devui-dividing-line, #dfe1e6);background-color:var(--devui-base-bg, #ffffff)}.devui-nav-wrapped>li{cursor:pointer;float:left;position:relative;padding:8px 16px}.devui-nav-wrapped>li a{cursor:pointer;border:none;color:var(--devui-text, #252b3a);border-radius:var(--devui-border-radius, 2px) var(--devui-border-radius, 2px) 0 0}.devui-nav-wrapped>li a:hover,.devui-nav-wrapped>li a:focus,.devui-nav-wrapped>li a:active{outline:none}.devui-nav-wrapped>li.disabled{border-color:var(--devui-disabled-line, #dfe1e6)}.devui-nav-wrapped>li.disabled a{color:var(--devui-disabled-text, #adb0b8);cursor:not-allowed}.devui-nav-wrapped>li.active{border:1px solid var(--devui-dividing-line, #dfe1e6);background:var(--devui-global-bg, #f3f6f8);border-radius:var(--devui-border-radius, 2px) var(--devui-border-radius, 2px) 0 0;font-weight:700;margin:-1px;border-bottom-color:transparent}.devui-nav-wrapped>li.active a{color:var(--devui-brand-active, #526ecc)}.devui-nav-wrapped>li:hover:not(.active):not(.disabled) a{color:var(--devui-brand, #5e7ce0)}.devui-nav{list-style:none;padding-left:0}.devui-nav li a{text-decoration:none}.devui-nav li a.custom-width{display:inline-block;padding:0;text-align:center}.devui-nav-tabs:not(.devui-nav-stacked){border-bottom:1px var(--devui-line, #adb0b8) solid}.devui-nav-tabs:not(.devui-nav-stacked) li{float:left;margin-left:32px;margin-bottom:-3px}.devui-nav-tabs:not(.devui-nav-stacked) li:first-child{margin-left:0}.devui-nav-pills:not(.devui-nav-stacked)>li{float:left;margin-left:32px}.devui-nav-pills:not(.devui-nav-stacked)>li:first-child{margin-left:0}.devui-nav:before,.devui-nav:after{content:" ";display:table}.devui-nav:after{clear:both}.devui-tab-content{margin-top:20px}.devui-nav-slider-animation{position:absolute;z-index:0;background-color:var(--devui-base-bg, #ffffff);border-radius:var(--devui-border-radius, 2px);box-shadow:0 2px 4px 0 var(--devui-light-shadow, rgba(0, 0, 0, .1));top:1px;height:30px;transition:left .3s cubic-bezier(.645,.045,.355,1),width .3s cubic-bezier(.645,.045,.355,1)}
|
|
1
|
+
:host{display:block}.devui-tabs__nav--tabs,.devui-tabs__nav--pills{font-size:var(--devui-font-size, 14px);background:transparent;list-style:none}.devui-tabs__nav--tabs li,.devui-tabs__nav--pills li{cursor:pointer;border:2px solid transparent}.devui-tabs__nav--tabs li a,.devui-tabs__nav--pills li a{cursor:pointer;border:none;line-height:30px;background-color:transparent;padding:0;text-decoration:none;color:var(--devui-aide-text, #71757f)}.devui-tabs__nav--tabs li a:hover,.devui-tabs__nav--tabs li a:focus,.devui-tabs__nav--tabs li a:active,.devui-tabs__nav--pills li a:hover,.devui-tabs__nav--pills li a:focus,.devui-tabs__nav--pills li a:active{outline:none}.devui-tabs__nav--tabs li.disabled a,.devui-tabs__nav--pills li.disabled a{color:var(--devui-disabled-text, #adb0b8);cursor:not-allowed}.devui-tabs__nav--tabs li.active a,.devui-tabs__nav--tabs li:hover:not(.disabled) a,.devui-tabs__nav--pills li.active a,.devui-tabs__nav--pills li:hover:not(.disabled) a{color:var(--devui-brand, #5e7ce0)}.devui-tabs__nav--tabs li:after,.devui-tabs__nav--pills li:after{content:"";display:block;margin:auto;height:2px;width:0;background:transparent;transition:width var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out, cubic-bezier(.5, .05, .5, .95)),background-color var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out, cubic-bezier(.5, .05, .5, .95))}.devui-tabs__nav--tabs li.active:after,.devui-tabs__nav--pills li.active:after{width:100%;background:var(--devui-brand, #5e7ce0)}.devui-tabs__nav--tabs .devui-tabs__new-tab,.devui-tabs__nav--pills .devui-tabs__new-tab{padding:2px 0 0}.devui-tabs__nav--options{background:var(--devui-base-bg, #ffffff);border:1px solid var(--devui-dividing-line, #f2f2f3);border-radius:var(--devui-border-radius, 4px);padding:2px;width:fit-content}.devui-tabs__nav--options>li{cursor:pointer;background-color:var(--devui-base-bg, #ffffff);border-radius:var(--devui-border-radius, 4px);transition:background-color var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out, cubic-bezier(.5, .05, .5, .95)),text-shadow var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out, cubic-bezier(.5, .05, .5, .95))}.devui-tabs__nav--options>li span>a{border:none;color:var(--devui-aide-text, #71757f);line-height:26px;padding:0 16px}.devui-tabs__nav--options>li span>a:hover,.devui-tabs__nav--options>li span>a:focus,.devui-tabs__nav--options>li span>a:active{outline:none}.devui-tabs__nav--options>li.active{background-color:var(--devui-brand-foil, #f2f2f3)}.devui-tabs__nav--options>li.active span>a{color:var(--devui-brand, #5e7ce0);padding:0 16px}.devui-tabs__nav--options>li.disabled{border-color:var(--devui-disabled-line, #dfe1e6)}.devui-tabs__nav--options>li.disabled a{color:var(--devui-disabled-text, #adb0b8);cursor:not-allowed}.devui-tabs__nav--options>li.active span>a:hover,.devui-tabs__nav--options>li:hover:not(.disabled) span>a:hover{color:var(--devui-brand, #5e7ce0);background:transparent}.devui-tabs__nav--options .devui-tabs__close-btn{margin-right:12px}.devui-tabs__nav--options .devui-tabs__new-tab{padding:2px 16px 0}.devui-tabs__nav--slider{font-size:var(--devui-font-size, 14px);border:none;border-radius:var(--devui-border-radius, 4px);background:var(--devui-list-item-hover-bg, #f2f2f3);width:fit-content;display:flex;align-items:center;position:relative}.devui-tabs__nav--slider>li{cursor:pointer;margin:2px;position:relative;z-index:1}.devui-tabs__nav--slider>li:first-child{border-left-width:1px;border-radius:var(--devui-border-radius, 4px) 0 0 var(--devui-border-radius, 4px)}.devui-tabs__nav--slider>li:last-child{border-radius:0 var(--devui-border-radius, 4px) var(--devui-border-radius, 4px) 0}.devui-tabs__nav--slider>li a{cursor:pointer;border:none;color:var(--devui-aide-text, #71757f);line-height:28px;padding:0 16px}.devui-tabs__nav--slider>li a:hover,.devui-tabs__nav--slider>li a:focus,.devui-tabs__nav--slider>li a:active{outline:none}.devui-tabs__nav--slider>li.disabled{border-color:var(--devui-disabled-line, #dfe1e6)}.devui-tabs__nav--slider>li.disabled a{color:var(--devui-disabled-text, #adb0b8);cursor:not-allowed}.devui-tabs__nav--slider>li.active a,.devui-tabs__nav--slider>li:hover:not(.disabled) a{color:var(--devui-brand-active, #526ecc)}.devui-tabs__nav--slider>li.active a:hover,.devui-tabs__nav--slider>li:hover:not(.disabled) a:hover{color:var(--devui-brand-active, #526ecc);background:transparent}.devui-tabs__nav--slider>li.active{text-shadow:0 0 .7px var(--devui-brand, #5e7ce0)}.devui-tabs__nav--slider>li:hover:not(.active):not(.disabled){color:var(--devui-brand-active, #526ecc)}.devui-tabs__nav--slider .devui-tabs__close-btn{margin-right:12px}.devui-tabs__nav--slider .devui-tabs__new-tab{padding:2px 16px 0}.devui-tabs__nav--wrapped{font-size:var(--devui-font-size, 14px);background:transparent;border-bottom:1px solid var(--devui-dividing-line, #f2f2f3);background-color:var(--devui-base-bg, #ffffff)}.devui-tabs__nav--wrapped>li{cursor:pointer;position:relative;padding:8px 16px}.devui-tabs__nav--wrapped>li a{cursor:pointer;border:none;color:var(--devui-aide-text, #71757f);border-radius:var(--devui-border-radius, 4px) var(--devui-border-radius, 4px) 0 0}.devui-tabs__nav--wrapped>li a:hover,.devui-tabs__nav--wrapped>li a:focus,.devui-tabs__nav--wrapped>li a:active{outline:none}.devui-tabs__nav--wrapped>li.disabled{border-color:var(--devui-disabled-line, #dfe1e6)}.devui-tabs__nav--wrapped>li.disabled a{color:var(--devui-disabled-text, #adb0b8);cursor:not-allowed}.devui-tabs__nav--wrapped>li.active{border:1px solid var(--devui-dividing-line, #f2f2f3);background:var(--devui-global-bg, #f8f8fa);border-radius:var(--devui-border-radius, 4px) var(--devui-border-radius, 4px) 0 0;margin:-1px;border-bottom-color:transparent}.devui-tabs__nav--wrapped>li.active a{color:var(--devui-brand-active, #526ecc)}.devui-tabs__nav--wrapped>li:hover:not(.active):not(.disabled) a{color:var(--devui-brand, #5e7ce0)}.devui-tabs__nav--tabs{border-bottom:1px var(--devui-line, #d7d8da) solid}.devui-tabs__nav--tabs li{margin-left:32px;margin-bottom:-3px}.devui-tabs__nav--tabs li:first-child{margin-left:0}.devui-tabs__nav--pills>li{margin-left:32px}.devui-tabs__nav--pills>li:first-child{margin-left:0}.devui-tabs__nav{display:flex;align-items:center;list-style:none;padding-left:0}.devui-tabs__nav li a{text-decoration:none}.devui-tabs__nav li a.custom-width{display:inline-block;padding:0;text-align:center}.devui-tabs__nav--right,.devui-tabs__nav--left{margin:0}.devui-tabs__nav--right .devui-tabs__nav-slider-animation,.devui-tabs__nav--left .devui-tabs__nav-slider-animation{transition:top var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out, cubic-bezier(.5, .05, .5, .95)),height var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out, cubic-bezier(.5, .05, .5, .95))}.devui-tabs__nav--right .devui-tabs__new-tab,.devui-tabs__nav--left .devui-tabs__new-tab{text-align:center}.devui-tabs__nav--right{display:block;float:right;border-bottom:none;margin-left:10px}.devui-tabs__nav--right>li{margin-left:0;padding:0 16px;position:relative}.devui-tabs__nav--right>li:after{display:none}.devui-tabs__nav--right>li:before{content:" ";position:absolute;top:0;left:-5px;margin:auto;height:0;width:2px;background:transparent;transition:height var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out, cubic-bezier(.5, .05, .5, .95)),background-color var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out, cubic-bezier(.5, .05, .5, .95))}.devui-tabs__nav--right>li.active:before{height:100%;background:var(--devui-brand, #5e7ce0)}.devui-tabs__nav--left{display:block;float:left;border-bottom:none;margin-right:10px}.devui-tabs__nav--left>li{margin-left:0;padding:0 16px;position:relative}.devui-tabs__nav--left>li:after{content:" ";position:absolute;top:0;right:-5px;margin:auto;height:0;width:2px;background:transparent;transition:height var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out, cubic-bezier(.5, .05, .5, .95)),background-color var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out, cubic-bezier(.5, .05, .5, .95))}.devui-tabs__nav--left>li.active:after{height:100%;width:2px;background:var(--devui-brand, #5e7ce0)}.devui-tabs__nav-content{display:flex;align-items:center}.devui-tabs__nav--options{padding-left:2px}.devui-tabs__nav-slider-animation{position:absolute;z-index:0;background-color:var(--devui-base-bg, #ffffff);border-radius:var(--devui-border-radius, 4px);box-shadow:0 2px 4px 0 var(--devui-light-shadow, rgba(37, 43, 58, .1));top:1px;height:30px;transition:left var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out, cubic-bezier(.5, .05, .5, .95)),width var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out, cubic-bezier(.5, .05, .5, .95))}.devui-tabs__new-tab .devui-icon__container:hover,.devui-tabs__close-btn .devui-icon__container:hover{color:var(--devui-text, #252b3a)}.devui-tabs__new-tab .devui-icon__container>i,.devui-tabs__close-btn .devui-icon__container>i{transition:none}.devui-tabs__new-tab .devui-icon__container{color:var(--devui-aide-text, #71757f)}.devui-tabs__close-btn{margin-left:12px}.devui-tabs__close-btn .devui-icon__container{color:var(--devui-form-control-line, #d7d8da)}.devui-tabs--right .devui-tabs__nav--options,.devui-tabs--right .devui-tabs__nav--wrapped,.devui-tabs--left .devui-tabs__nav--options,.devui-tabs--left .devui-tabs__nav--wrapped{border-bottom:1px solid var(--devui-dividing-line, #f2f2f3)}.devui-tabs--right .devui-tabs__nav--options>li:after,.devui-tabs--right .devui-tabs__nav--wrapped>li:after,.devui-tabs--left .devui-tabs__nav--options>li:after,.devui-tabs--left .devui-tabs__nav--wrapped>li:after{display:none}.devui-tabs--right .devui-tabs__nav--options>li:before,.devui-tabs--right .devui-tabs__nav--wrapped>li:before,.devui-tabs--left .devui-tabs__nav--options>li:before,.devui-tabs--left .devui-tabs__nav--wrapped>li:before{display:none}.devui-tabs--right .devui-tabs__nav--wrapped,.devui-tabs--left .devui-tabs__nav--wrapped{border-bottom:none}.devui-tabs--right .devui-tabs__nav--wrapped>li,.devui-tabs--left .devui-tabs__nav--wrapped>li{padding:8px 16px}.devui-tabs--right .devui-tabs__nav--slider>li:after,.devui-tabs--left .devui-tabs__nav--slider>li:after{display:none}.devui-tabs--right .devui-tabs__nav--slider>li:before,.devui-tabs--left .devui-tabs__nav--slider>li:before{display:none}.devui-tabs--right .devui-tabs__nav--slider .devui-tabs__nav-slider-animation,.devui-tabs--left .devui-tabs__nav--slider .devui-tabs__nav-slider-animation{left:1px}.devui-tabs--right .devui-tabs__nav--wrapped{border-left:1px solid var(--devui-dividing-line, #f2f2f3)}.devui-tabs--right .devui-tabs__nav--wrapped>li a{border-radius:0 var(--devui-border-radius, 4px) var(--devui-border-radius, 4px) 0}.devui-tabs--right .devui-tabs__nav--wrapped>li.active{border-radius:0 var(--devui-border-radius, 4px) var(--devui-border-radius, 4px) 0;border-bottom-color:var(--devui-dividing-line, #f2f2f3);border-left-color:transparent}.devui-tabs--right .devui-tabs__nav--tabs{border-left:1px solid var(--devui-line, #d7d8da)}.devui-tabs--left .devui-tabs__nav--wrapped{border-right:1px solid var(--devui-dividing-line, #f2f2f3)}.devui-tabs--left .devui-tabs__nav--wrapped>li a{border-radius:var(--devui-border-radius, 4px) 0 0 var(--devui-border-radius, 4px)}.devui-tabs--left .devui-tabs__nav--wrapped>li.active{border-radius:var(--devui-border-radius, 4px) 0 0 var(--devui-border-radius, 4px);border-bottom-color:var(--devui-dividing-line, #f2f2f3);border-right-color:transparent}.devui-tabs--left .devui-tabs__nav--tabs{border-right:1px solid var(--devui-line, #d7d8da)}.devui-tab__content{margin-top:10px;overflow:hidden;padding:10px 0}
|