@oinone/kunlun-vue-ui-antd 6.2.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/README.md +1 -0
- package/dist/oinone-kunlun-vue-ui-antd.css +1 -0
- package/dist/oinone-kunlun-vue-ui-antd.esm.js +16 -0
- package/dist/oinone-kunlun-vue-ui-antd.scss +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/src/component/index.d.ts +31 -0
- package/dist/types/src/component/oio-block/index.d.ts +3 -0
- package/dist/types/src/component/oio-block/oio-block.vue.d.ts +39 -0
- package/dist/types/src/component/oio-block/oio-col.vue.d.ts +86 -0
- package/dist/types/src/component/oio-block/oio-row.vue.d.ts +34 -0
- package/dist/types/src/component/oio-breadcrumb/index.d.ts +2 -0
- package/dist/types/src/component/oio-breadcrumb/oio-breadcrumb-item.vue.d.ts +14 -0
- package/dist/types/src/component/oio-breadcrumb/oio-breadcrumb.vue.d.ts +14 -0
- package/dist/types/src/component/oio-button/index.d.ts +1 -0
- package/dist/types/src/component/oio-button/oio-button.vue.d.ts +136 -0
- package/dist/types/src/component/oio-cascader/index.d.ts +1 -0
- package/dist/types/src/component/oio-cascader/oio-cascader.vue.d.ts +236 -0
- package/dist/types/src/component/oio-checkbox/index.d.ts +1 -0
- package/dist/types/src/component/oio-checkbox/oio-checkbox.vue.d.ts +56 -0
- package/dist/types/src/component/oio-collapse/index.d.ts +2 -0
- package/dist/types/src/component/oio-collapse/oio-collapse-panel.vue.d.ts +86 -0
- package/dist/types/src/component/oio-collapse/oio-collapse.vue.d.ts +103 -0
- package/dist/types/src/component/oio-date-time-picker/index.d.ts +5 -0
- package/dist/types/src/component/oio-date-time-picker/oio-date-picker.vue.d.ts +182 -0
- package/dist/types/src/component/oio-date-time-picker/oio-date-time-picker.vue.d.ts +240 -0
- package/dist/types/src/component/oio-date-time-picker/oio-time-picker.vue.d.ts +176 -0
- package/dist/types/src/component/oio-date-time-picker/oio-year-picker.vue.d.ts +139 -0
- package/dist/types/src/component/oio-date-time-picker/use-date-time-picker-props.d.ts +15 -0
- package/dist/types/src/component/oio-date-time-range-picker/index.d.ts +5 -0
- package/dist/types/src/component/oio-date-time-range-picker/oio-date-range-picker.vue.d.ts +139 -0
- package/dist/types/src/component/oio-date-time-range-picker/oio-date-time-range-picker.vue.d.ts +195 -0
- package/dist/types/src/component/oio-date-time-range-picker/oio-time-range-picker.vue.d.ts +139 -0
- package/dist/types/src/component/oio-date-time-range-picker/oio-year-range-picker.vue.d.ts +124 -0
- package/dist/types/src/component/oio-date-time-range-picker/use-date-time-range-picker-props.d.ts +12 -0
- package/dist/types/src/component/oio-divider/index.d.ts +2 -0
- package/dist/types/src/component/oio-divider/oio-divider.vue.d.ts +38 -0
- package/dist/types/src/component/oio-drawer/index.d.ts +1 -0
- package/dist/types/src/component/oio-drawer/oio-drawer.vue.d.ts +227 -0
- package/dist/types/src/component/oio-dropdown/index.d.ts +1 -0
- package/dist/types/src/component/oio-dropdown/oio-dropdown.vue.d.ts +78 -0
- package/dist/types/src/component/oio-empty/index.d.ts +1 -0
- package/dist/types/src/component/oio-empty/oio-empty-data.vue.d.ts +42 -0
- package/dist/types/src/component/oio-form/index.d.ts +2 -0
- package/dist/types/src/component/oio-form/oio-form-item.vue.d.ts +126 -0
- package/dist/types/src/component/oio-form/oio-form.vue.d.ts +100 -0
- package/dist/types/src/component/oio-gallery/index.d.ts +1 -0
- package/dist/types/src/component/oio-gallery/oio-gallery.vue.d.ts +98 -0
- package/dist/types/src/component/oio-group/index.d.ts +2 -0
- package/dist/types/src/component/oio-group/oio-group-help.vue.d.ts +65 -0
- package/dist/types/src/component/oio-group/oio-group.vue.d.ts +113 -0
- package/dist/types/src/component/oio-inner-popup/index.d.ts +1 -0
- package/dist/types/src/component/oio-inner-popup/oio-inner-popup.vue.d.ts +195 -0
- package/dist/types/src/component/oio-input/index.d.ts +5 -0
- package/dist/types/src/component/oio-input/oio-input-group.vue.d.ts +16 -0
- package/dist/types/src/component/oio-input/oio-input-number.vue.d.ts +167 -0
- package/dist/types/src/component/oio-input/oio-input-password.vue.d.ts +111 -0
- package/dist/types/src/component/oio-input/oio-input-search.vue.d.ts +106 -0
- package/dist/types/src/component/oio-input/oio-input.vue.d.ts +107 -0
- package/dist/types/src/component/oio-modal/index.d.ts +1 -0
- package/dist/types/src/component/oio-modal/oio-modal.vue.d.ts +230 -0
- package/dist/types/src/component/oio-notification/index.d.ts +116 -0
- package/dist/types/src/component/oio-pagination/index.d.ts +1 -0
- package/dist/types/src/component/oio-pagination/oio-pagination.vue.d.ts +107 -0
- package/dist/types/src/component/oio-popconfirm/index.d.ts +1 -0
- package/dist/types/src/component/oio-popconfirm/oio-popconfirm.vue.d.ts +119 -0
- package/dist/types/src/component/oio-select/index.d.ts +1 -0
- package/dist/types/src/component/oio-select/oio-select.vue.d.ts +153 -0
- package/dist/types/src/component/oio-slider/index.d.ts +1 -0
- package/dist/types/src/component/oio-slider/oio-slider.vue.d.ts +155 -0
- package/dist/types/src/component/oio-spin/index.d.ts +1 -0
- package/dist/types/src/component/oio-spin/oio-spin.vue.d.ts +54 -0
- package/dist/types/src/component/oio-switch/index.d.ts +1 -0
- package/dist/types/src/component/oio-switch/oio-switch.vue.d.ts +92 -0
- package/dist/types/src/component/oio-tabs/index.d.ts +3 -0
- package/dist/types/src/component/oio-tabs/oio-tab.vue.d.ts +67 -0
- package/dist/types/src/component/oio-tabs/oio-tabs.vue.d.ts +93 -0
- package/dist/types/src/component/oio-tabs/use-tab-bar.d.ts +5 -0
- package/dist/types/src/component/oio-textarea/index.d.ts +1 -0
- package/dist/types/src/component/oio-textarea/oio-textarea.vue.d.ts +100 -0
- package/dist/types/src/component/oio-tooltip/index.d.ts +2 -0
- package/dist/types/src/component/oio-tooltip/oio-tooltip-help.vue.d.ts +12 -0
- package/dist/types/src/component/oio-tooltip/oio-tooltip.vue.d.ts +76 -0
- package/dist/types/src/component/oio-tree/index.d.ts +1 -0
- package/dist/types/src/component/oio-tree/oio-tree.vue.d.ts +171 -0
- package/dist/types/src/component/oio-tree-select/index.d.ts +1 -0
- package/dist/types/src/component/oio-tree-select/oio-tree-select.vue.d.ts +226 -0
- package/dist/types/src/component/oio-upload/index.d.ts +1 -0
- package/dist/types/src/component/oio-upload/oio-upload.vue.d.ts +187 -0
- package/dist/types/src/index.d.ts +2 -0
- package/dist/types/src/theme/index.d.ts +1 -0
- package/dist/types/src/vc-component/index.d.ts +1 -0
- package/dist/types/src/vc-component/use-max-tag-placeholder.d.ts +7 -0
- package/index.ts +3 -0
- package/package.json +36 -0
- package/rollup.config.js +15 -0
- package/src/component/index.ts +32 -0
- package/src/component/oio-block/index.ts +3 -0
- package/src/component/oio-block/oio-block.vue +77 -0
- package/src/component/oio-block/oio-col.vue +32 -0
- package/src/component/oio-block/oio-row.vue +42 -0
- package/src/component/oio-block/style/a-col.scss +18 -0
- package/src/component/oio-block/style/index.scss +42 -0
- package/src/component/oio-block/style/parameters.scss +13 -0
- package/src/component/oio-breadcrumb/index.ts +2 -0
- package/src/component/oio-breadcrumb/oio-breadcrumb-item.vue +30 -0
- package/src/component/oio-breadcrumb/oio-breadcrumb.vue +30 -0
- package/src/component/oio-button/index.ts +1 -0
- package/src/component/oio-button/oio-button.vue +154 -0
- package/src/component/oio-button/style/a-button.scss +210 -0
- package/src/component/oio-button/style/index.scss +21 -0
- package/src/component/oio-button/style/parameters.scss +5 -0
- package/src/component/oio-cascader/index.ts +1 -0
- package/src/component/oio-cascader/oio-cascader.vue +171 -0
- package/src/component/oio-cascader/style/index.scss +59 -0
- package/src/component/oio-cascader/style/parameters.scss +5 -0
- package/src/component/oio-checkbox/index.ts +1 -0
- package/src/component/oio-checkbox/oio-checkbox.vue +69 -0
- package/src/component/oio-checkbox/style/index.scss +8 -0
- package/src/component/oio-checkbox/style/parameters.scss +5 -0
- package/src/component/oio-collapse/index.ts +2 -0
- package/src/component/oio-collapse/oio-collapse-panel.vue +92 -0
- package/src/component/oio-collapse/oio-collapse.vue +138 -0
- package/src/component/oio-collapse/style/index.scss +59 -0
- package/src/component/oio-collapse/style/parameters.scss +5 -0
- package/src/component/oio-date-time-picker/index.ts +5 -0
- package/src/component/oio-date-time-picker/oio-date-picker.vue +34 -0
- package/src/component/oio-date-time-picker/oio-date-time-picker.vue +91 -0
- package/src/component/oio-date-time-picker/oio-time-picker.vue +34 -0
- package/src/component/oio-date-time-picker/oio-year-picker.vue +34 -0
- package/src/component/oio-date-time-picker/style/index.scss +348 -0
- package/src/component/oio-date-time-picker/style/mixin.scss +16 -0
- package/src/component/oio-date-time-picker/style/parameters.scss +5 -0
- package/src/component/oio-date-time-picker/use-date-time-picker-props.ts +151 -0
- package/src/component/oio-date-time-range-picker/index.ts +5 -0
- package/src/component/oio-date-time-range-picker/oio-date-range-picker.vue +29 -0
- package/src/component/oio-date-time-range-picker/oio-date-time-range-picker.vue +82 -0
- package/src/component/oio-date-time-range-picker/oio-time-range-picker.vue +29 -0
- package/src/component/oio-date-time-range-picker/oio-year-range-picker.vue +29 -0
- package/src/component/oio-date-time-range-picker/style/index.scss +227 -0
- package/src/component/oio-date-time-range-picker/style/parameters.scss +5 -0
- package/src/component/oio-date-time-range-picker/use-date-time-range-picker-props.ts +138 -0
- package/src/component/oio-divider/index.ts +3 -0
- package/src/component/oio-divider/oio-divider.vue +31 -0
- package/src/component/oio-divider/style/index.scss +7 -0
- package/src/component/oio-divider/style/parameters.scss +5 -0
- package/src/component/oio-drawer/index.ts +1 -0
- package/src/component/oio-drawer/oio-drawer.vue +120 -0
- package/src/component/oio-drawer/style/index.scss +93 -0
- package/src/component/oio-drawer/style/parameters.scss +5 -0
- package/src/component/oio-dropdown/index.ts +1 -0
- package/src/component/oio-dropdown/oio-dropdown.vue +81 -0
- package/src/component/oio-dropdown/style/index.scss +30 -0
- package/src/component/oio-dropdown/style/parameters.scss +5 -0
- package/src/component/oio-empty/index.ts +1 -0
- package/src/component/oio-empty/oio-empty-data.vue +47 -0
- package/src/component/oio-empty/style/index.scss +6 -0
- package/src/component/oio-form/index.ts +2 -0
- package/src/component/oio-form/oio-form-item.vue +81 -0
- package/src/component/oio-form/oio-form.vue +102 -0
- package/src/component/oio-form/style/animation.scss +17 -0
- package/src/component/oio-form/style/index.scss +135 -0
- package/src/component/oio-form/style/parameters.scss +9 -0
- package/src/component/oio-gallery/index.ts +1 -0
- package/src/component/oio-gallery/oio-gallery.vue +158 -0
- package/src/component/oio-group/index.ts +2 -0
- package/src/component/oio-group/oio-group-help.vue +28 -0
- package/src/component/oio-group/oio-group.vue +140 -0
- package/src/component/oio-group/style/index.scss +98 -0
- package/src/component/oio-group/style/parameters.scss +5 -0
- package/src/component/oio-inner-popup/index.ts +1 -0
- package/src/component/oio-inner-popup/oio-inner-popup.vue +230 -0
- package/src/component/oio-inner-popup/style/index.scss +147 -0
- package/src/component/oio-inner-popup/style/parameters.scss +5 -0
- package/src/component/oio-input/index.ts +5 -0
- package/src/component/oio-input/oio-input-group.vue +40 -0
- package/src/component/oio-input/oio-input-number.vue +374 -0
- package/src/component/oio-input/oio-input-password.vue +67 -0
- package/src/component/oio-input/oio-input-search.vue +107 -0
- package/src/component/oio-input/oio-input.vue +124 -0
- package/src/component/oio-input/style/a-input.scss +103 -0
- package/src/component/oio-input/style/index.scss +198 -0
- package/src/component/oio-input/style/mixin.scss +50 -0
- package/src/component/oio-input/style/oio-input-group.scss +31 -0
- package/src/component/oio-input/style/oio-input-number.scss +13 -0
- package/src/component/oio-input/style/oio-input-search.scss +94 -0
- package/src/component/oio-input/style/parameters.scss +21 -0
- package/src/component/oio-modal/index.ts +1 -0
- package/src/component/oio-modal/index.zh-CN.md +167 -0
- package/src/component/oio-modal/oio-modal.vue +184 -0
- package/src/component/oio-modal/style/index.scss +167 -0
- package/src/component/oio-modal/style/parameters.scss +5 -0
- package/src/component/oio-notification/index.ts +197 -0
- package/src/component/oio-notification/style/index.scss +67 -0
- package/src/component/oio-notification/style/parameters.scss +5 -0
- package/src/component/oio-pagination/index.ts +1 -0
- package/src/component/oio-pagination/oio-pagination.vue +105 -0
- package/src/component/oio-pagination/style/index.scss +181 -0
- package/src/component/oio-pagination/style/parameters.scss +5 -0
- package/src/component/oio-popconfirm/index.ts +1 -0
- package/src/component/oio-popconfirm/oio-popconfirm.vue +192 -0
- package/src/component/oio-popconfirm/style/index.scss +54 -0
- package/src/component/oio-popconfirm/style/parameters.scss +5 -0
- package/src/component/oio-popover/style/index.scss +16 -0
- package/src/component/oio-popover/style/parameters.scss +5 -0
- package/src/component/oio-radio/style/index.scss +24 -0
- package/src/component/oio-radio/style/parameters.scss +5 -0
- package/src/component/oio-select/index.ts +1 -0
- package/src/component/oio-select/oio-select.vue +104 -0
- package/src/component/oio-select/style/a-select.scss +102 -0
- package/src/component/oio-select/style/index.scss +129 -0
- package/src/component/oio-select/style/mixin.scss +18 -0
- package/src/component/oio-select/style/parameters.scss +5 -0
- package/src/component/oio-slider/index.ts +1 -0
- package/src/component/oio-slider/oio-slider.vue +81 -0
- package/src/component/oio-slider/style/index.scss +100 -0
- package/src/component/oio-slider/style/parameters.scss +5 -0
- package/src/component/oio-spin/index.ts +1 -0
- package/src/component/oio-spin/oio-spin.vue +87 -0
- package/src/component/oio-spin/style/index.scss +48 -0
- package/src/component/oio-spin/style/parameters.scss +5 -0
- package/src/component/oio-switch/index.ts +1 -0
- package/src/component/oio-switch/oio-switch.vue +42 -0
- package/src/component/oio-switch/style/index.scss +36 -0
- package/src/component/oio-switch/style/parameters.scss +5 -0
- package/src/component/oio-tabs/index.ts +3 -0
- package/src/component/oio-tabs/oio-tab.vue +99 -0
- package/src/component/oio-tabs/oio-tabs.vue +188 -0
- package/src/component/oio-tabs/style/index.scss +274 -0
- package/src/component/oio-tabs/style/parameters.scss +9 -0
- package/src/component/oio-tabs/use-tab-bar.ts +69 -0
- package/src/component/oio-textarea/index.ts +1 -0
- package/src/component/oio-textarea/oio-textarea.vue +76 -0
- package/src/component/oio-textarea/style/index.scss +108 -0
- package/src/component/oio-textarea/style/parameters.scss +5 -0
- package/src/component/oio-tooltip/index.ts +2 -0
- package/src/component/oio-tooltip/oio-tooltip-help.vue +40 -0
- package/src/component/oio-tooltip/oio-tooltip.vue +59 -0
- package/src/component/oio-tooltip/style/index.scss +8 -0
- package/src/component/oio-tooltip/style/parameters.scss +9 -0
- package/src/component/oio-tree/index.ts +1 -0
- package/src/component/oio-tree/oio-tree.vue +181 -0
- package/src/component/oio-tree/style/index.scss +51 -0
- package/src/component/oio-tree/style/parameters.scss +5 -0
- package/src/component/oio-tree-select/index.ts +1 -0
- package/src/component/oio-tree-select/oio-tree-select.vue +180 -0
- package/src/component/oio-tree-select/style/index.scss +92 -0
- package/src/component/oio-tree-select/style/parameters.scss +5 -0
- package/src/component/oio-upload/index.ts +1 -0
- package/src/component/oio-upload/oio-upload.vue +232 -0
- package/src/component/oio-upload/style/index.scss +66 -0
- package/src/component/oio-upload/style/parameters.scss +5 -0
- package/src/index.ts +3 -0
- package/src/shim-translate.d.ts +7 -0
- package/src/shim-vue.d.ts +6 -0
- package/src/style/global-parameters.scss +9 -0
- package/src/style/index.scss +31 -0
- package/src/style/mixin.scss +135 -0
- package/src/theme/index.ts +1 -0
- package/src/vc-component/index.ts +1 -0
- package/src/vc-component/use-max-tag-placeholder.ts +38 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { DEFAULT_TAB_TITLE, TabHTMLNode } from '@oinone/kunlun-vue-ui-common';
|
|
2
|
+
import { createVNode, Ref, unref, VNode } from 'vue';
|
|
3
|
+
import { DEFAULT_PREFIX } from '../../theme';
|
|
4
|
+
import { Tooltip as ATooltip } from 'ant-design-vue';
|
|
5
|
+
import { QuestionCircleOutlined } from '@ant-design/icons-vue';
|
|
6
|
+
|
|
7
|
+
export function useTabBar(title: string | Ref<string>, help?: string | Ref<string>): VNode {
|
|
8
|
+
const titleValue = unref(title) || DEFAULT_TAB_TITLE;
|
|
9
|
+
const vnodes = [
|
|
10
|
+
createVNode(
|
|
11
|
+
'span',
|
|
12
|
+
{ class: 'oio-tab-title', title: titleValue },
|
|
13
|
+
titleValue
|
|
14
|
+
)
|
|
15
|
+
]
|
|
16
|
+
const helpValue = unref(help) || '';
|
|
17
|
+
if (helpValue && helpValue !== '') {
|
|
18
|
+
vnodes.push(
|
|
19
|
+
createVNode(
|
|
20
|
+
ATooltip,
|
|
21
|
+
{ placement: 'top', overlayStyle: { maxWidth: '260px' } as CSSStyleDeclaration },
|
|
22
|
+
{
|
|
23
|
+
title: () => {
|
|
24
|
+
return [createVNode('span', {}, helpValue)];
|
|
25
|
+
},
|
|
26
|
+
default: () => {
|
|
27
|
+
return [createVNode(QuestionCircleOutlined, { class: 'oio-question-icon', style: { marginLeft: '5px' } as CSSStyleDeclaration })];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
)
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
return createVNode(
|
|
34
|
+
'div',
|
|
35
|
+
{
|
|
36
|
+
class: 'oio-tab-bar'
|
|
37
|
+
},
|
|
38
|
+
vnodes
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const INVISIBLE_CLASS_NAME = `${DEFAULT_PREFIX}-tab-bar-invisible`;
|
|
43
|
+
|
|
44
|
+
export function onTabInvisibleChange(nodes: TabHTMLNode[], index: number, invisible: boolean | undefined) {
|
|
45
|
+
const currentTabHTMLNode = nodes[index];
|
|
46
|
+
if (!currentTabHTMLNode || index !== currentTabHTMLNode.index) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
onTabInvisible(currentTabHTMLNode.el, invisible);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export function onTabInvisible(el: HTMLElement, invisible: boolean | undefined) {
|
|
53
|
+
if (invisible) {
|
|
54
|
+
addInvisibleClassName(el);
|
|
55
|
+
} else {
|
|
56
|
+
removeInvisibleClassName(el);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function addInvisibleClassName(el: HTMLElement) {
|
|
61
|
+
const { classList } = el;
|
|
62
|
+
if (!classList.contains(INVISIBLE_CLASS_NAME)) {
|
|
63
|
+
classList.add(INVISIBLE_CLASS_NAME);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function removeInvisibleClassName(el: HTMLElement) {
|
|
68
|
+
el.classList.remove(INVISIBLE_CLASS_NAME);
|
|
69
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as OioTextarea } from './oio-textarea.vue';
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { CastHelper, StringHelper } from '@oinone/kunlun-shared';
|
|
3
|
+
import { ATextareaProps, OioTextareaProps, PropRecordHelper } from '@oinone/kunlun-vue-ui-common';
|
|
4
|
+
import { Textarea as ATextarea } from 'ant-design-vue';
|
|
5
|
+
import { isEmpty, isNil } from 'lodash-es';
|
|
6
|
+
import { createVNode, defineComponent, ref } from 'vue';
|
|
7
|
+
import { DEFAULT_PREFIX } from '../../theme';
|
|
8
|
+
|
|
9
|
+
export default defineComponent({
|
|
10
|
+
name: 'OioTextarea',
|
|
11
|
+
components: {
|
|
12
|
+
ATextarea
|
|
13
|
+
},
|
|
14
|
+
inheritAttrs: false,
|
|
15
|
+
props: {
|
|
16
|
+
...OioTextareaProps
|
|
17
|
+
},
|
|
18
|
+
emits: ['update:value', 'change'],
|
|
19
|
+
setup(props, context) {
|
|
20
|
+
const origin = ref();
|
|
21
|
+
|
|
22
|
+
context.expose({
|
|
23
|
+
focus: () => origin.value.focus(),
|
|
24
|
+
blur: () => origin.value.blur()
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
return {
|
|
28
|
+
origin
|
|
29
|
+
};
|
|
30
|
+
},
|
|
31
|
+
render() {
|
|
32
|
+
const otherProps = {};
|
|
33
|
+
const textareaClassList = [`${DEFAULT_PREFIX}-textarea`];
|
|
34
|
+
if (this.readonly) {
|
|
35
|
+
textareaClassList.push(`${DEFAULT_PREFIX}-textarea-readonly`);
|
|
36
|
+
}
|
|
37
|
+
if (this.allowClear && !isEmpty(this.value)) {
|
|
38
|
+
textareaClassList.push(`${DEFAULT_PREFIX}-textarea-allow-clear`);
|
|
39
|
+
}
|
|
40
|
+
const maxlength = this.maxlength;
|
|
41
|
+
const { truncateMaxLength } = this;
|
|
42
|
+
const textareaProps: Record<string, unknown> = {
|
|
43
|
+
...PropRecordHelper.convert(ATextareaProps, CastHelper.cast(this)),
|
|
44
|
+
...this.$attrs,
|
|
45
|
+
readonly: this.readonly,
|
|
46
|
+
'onUpdate:value': (val) => this.$emit('update:value', val),
|
|
47
|
+
ref: 'origin'
|
|
48
|
+
};
|
|
49
|
+
if (this.showCount && (!isNil(maxlength) || !isNil(truncateMaxLength))) {
|
|
50
|
+
let { value } = this;
|
|
51
|
+
if (isNil(value)) {
|
|
52
|
+
value = '';
|
|
53
|
+
}
|
|
54
|
+
textareaClassList.push(`${DEFAULT_PREFIX}-textarea-show-count`);
|
|
55
|
+
otherProps['data-count'] = value.length;
|
|
56
|
+
otherProps['data-total'] = maxlength || truncateMaxLength;
|
|
57
|
+
textareaProps.class = StringHelper.append([], CastHelper.cast(this.$attrs.class));
|
|
58
|
+
} else {
|
|
59
|
+
textareaProps.class = StringHelper.append(textareaClassList, CastHelper.cast(this.$attrs.class));
|
|
60
|
+
}
|
|
61
|
+
let textareaNode = createVNode(ATextarea, textareaProps);
|
|
62
|
+
if (!isEmpty(otherProps)) {
|
|
63
|
+
textareaNode = createVNode(
|
|
64
|
+
'div',
|
|
65
|
+
{
|
|
66
|
+
class: textareaClassList,
|
|
67
|
+
style: this.$attrs.style,
|
|
68
|
+
...otherProps
|
|
69
|
+
},
|
|
70
|
+
[textareaNode]
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
return textareaNode;
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
</script>
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
@import '../../../style/mixin.scss';
|
|
2
|
+
@import '../../oio-input/style/mixin.scss';
|
|
3
|
+
@import './parameters.scss';
|
|
4
|
+
|
|
5
|
+
.#{$textareaClassPrefix} {
|
|
6
|
+
&.ant-input-affix-wrapper,
|
|
7
|
+
.ant-input-affix-wrapper {
|
|
8
|
+
border: none;
|
|
9
|
+
background-color: transparent;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.ant-input-textarea-clear-icon {
|
|
13
|
+
display: none;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
&.#{$textareaClassPrefix}-allow-clear {
|
|
17
|
+
&:hover {
|
|
18
|
+
& + .ant-input-textarea-clear-icon {
|
|
19
|
+
display: inline-block;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
& > .ant-input-affix-wrapper-textarea-with-clear-btn > .ant-input-textarea-clear-icon {
|
|
23
|
+
display: inline-block;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
textarea.ant-input {
|
|
29
|
+
font-size: var(--oio-font-size);
|
|
30
|
+
@include oio-appearance($textareaParameterPrefix);
|
|
31
|
+
|
|
32
|
+
&:hover {
|
|
33
|
+
@include oio-hover($textareaParameterPrefix);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
&:focus {
|
|
37
|
+
@include oio-focus($textareaParameterPrefix);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
textarea.ant-input[disabled] {
|
|
42
|
+
background-color: var($parameterPrefix + -disabled-bg);
|
|
43
|
+
color: var($parameterPrefix + -disabled-color);
|
|
44
|
+
|
|
45
|
+
&:hover {
|
|
46
|
+
border-color: var($textareaParameterPrefix + -border-color);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
&.#{$textareaClassPrefix}-readonly {
|
|
51
|
+
textarea.ant-input {
|
|
52
|
+
background-color: var($parameterPrefix + -disabled-bg);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.ant-input-affix-wrapper-textarea-with-clear-btn {
|
|
56
|
+
.ant-input-textarea-clear-icon {
|
|
57
|
+
visibility: hidden;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
&.#{$textareaClassPrefix}-show-count[data-count] {
|
|
63
|
+
position: relative;
|
|
64
|
+
|
|
65
|
+
&:after {
|
|
66
|
+
@include counter();
|
|
67
|
+
bottom: 9px;
|
|
68
|
+
right: 12px;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
textarea.#{$textareaClassPrefix} {
|
|
74
|
+
font-size: var(--oio-font-size);
|
|
75
|
+
@include oio-appearance($textareaParameterPrefix);
|
|
76
|
+
|
|
77
|
+
&:hover {
|
|
78
|
+
@include oio-hover($textareaParameterPrefix);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
&:focus {
|
|
82
|
+
@include oio-focus($textareaParameterPrefix);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
&[readonly] {
|
|
86
|
+
@include oio-readonly(true);
|
|
87
|
+
|
|
88
|
+
&:hover {
|
|
89
|
+
@include oio-readonly(true);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
&:focus {
|
|
93
|
+
@include oio-readonly(true);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
&[disabled] {
|
|
98
|
+
@include oio-disabled(true);
|
|
99
|
+
|
|
100
|
+
&:hover {
|
|
101
|
+
@include oio-disabled(true);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
&:focus {
|
|
105
|
+
@include oio-disabled(true);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { QuestionCircleOutlined } from '@ant-design/icons-vue';
|
|
3
|
+
import { PropRecordHelper } from '@oinone/kunlun-vue-ui-common';
|
|
4
|
+
import { createVNode, defineComponent } from 'vue';
|
|
5
|
+
import { DEFAULT_PREFIX } from '../../theme';
|
|
6
|
+
import OioTooltip from './oio-tooltip.vue';
|
|
7
|
+
|
|
8
|
+
export default defineComponent({
|
|
9
|
+
name: 'OioTooltipHelp',
|
|
10
|
+
components: {
|
|
11
|
+
OioTooltip,
|
|
12
|
+
QuestionCircleOutlined
|
|
13
|
+
},
|
|
14
|
+
props: {
|
|
15
|
+
content: {
|
|
16
|
+
type: String,
|
|
17
|
+
required: true
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
slots: ['default', 'title'],
|
|
21
|
+
render() {
|
|
22
|
+
const { content } = this;
|
|
23
|
+
return [
|
|
24
|
+
createVNode(
|
|
25
|
+
OioTooltip,
|
|
26
|
+
{ class: `${DEFAULT_PREFIX}-tooltip-help`, title: this.$translate(content) },
|
|
27
|
+
PropRecordHelper.collectionSlots(this.$slots, [
|
|
28
|
+
{
|
|
29
|
+
origin: 'default',
|
|
30
|
+
default: () => {
|
|
31
|
+
return [createVNode(QuestionCircleOutlined)];
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
'title'
|
|
35
|
+
])
|
|
36
|
+
)
|
|
37
|
+
];
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
</script>
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { CastHelper, StringHelper } from '@oinone/kunlun-shared';
|
|
3
|
+
import { convertAntdTooltipPlacement, OioTooltipProps, PropRecordHelper } from '@oinone/kunlun-vue-ui-common';
|
|
4
|
+
import { Tooltip as ATooltip } from 'ant-design-vue';
|
|
5
|
+
import { computed, createVNode, defineComponent } from 'vue';
|
|
6
|
+
import { DEFAULT_PREFIX } from '../../theme';
|
|
7
|
+
|
|
8
|
+
export default defineComponent({
|
|
9
|
+
name: 'OioTooltip',
|
|
10
|
+
components: {
|
|
11
|
+
ATooltip
|
|
12
|
+
},
|
|
13
|
+
inheritAttrs: false,
|
|
14
|
+
props: {
|
|
15
|
+
...OioTooltipProps
|
|
16
|
+
},
|
|
17
|
+
slots: ['default', 'title'],
|
|
18
|
+
emits: ['update:visible'],
|
|
19
|
+
setup(props, context) {
|
|
20
|
+
const placement = computed<string | undefined>(() => {
|
|
21
|
+
return convertAntdTooltipPlacement(props.placement);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
const onUpdateVisible = (val: boolean) => {
|
|
25
|
+
if (props.disabled) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
context.emit('update:visible', val);
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
return {
|
|
32
|
+
placement,
|
|
33
|
+
onUpdateVisible
|
|
34
|
+
};
|
|
35
|
+
},
|
|
36
|
+
render() {
|
|
37
|
+
const componentProps: Record<string, unknown> = {
|
|
38
|
+
title: this.title,
|
|
39
|
+
trigger: this.trigger,
|
|
40
|
+
placement: this.placement,
|
|
41
|
+
overlayStyle: this.overlayStyle,
|
|
42
|
+
...this.$attrs,
|
|
43
|
+
destroyTooltipOnHide: this.destroyOnHide,
|
|
44
|
+
'onUpdate:visible': this.onUpdateVisible,
|
|
45
|
+
class: StringHelper.append([`${DEFAULT_PREFIX}-tooltip`], CastHelper.cast(this.$attrs.class)),
|
|
46
|
+
overlayClassName: StringHelper.append(
|
|
47
|
+
[`${DEFAULT_PREFIX}-tooltip-overlay`],
|
|
48
|
+
CastHelper.cast(this.overlayClassName)
|
|
49
|
+
).join(' ')
|
|
50
|
+
};
|
|
51
|
+
if (this.disabled) {
|
|
52
|
+
componentProps.visible = false;
|
|
53
|
+
} else if (this.visible !== undefined) {
|
|
54
|
+
componentProps.visible = this.visible;
|
|
55
|
+
}
|
|
56
|
+
return createVNode(ATooltip, componentProps, PropRecordHelper.collectionSlots(this.$slots, ['default', 'title']));
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
</script>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
@import '../../../style/global-parameters.scss';
|
|
2
|
+
|
|
3
|
+
$tooltipPrefix: $prefix + -tooltip;
|
|
4
|
+
$tooltipParameterPrefix: $parameterPrefix + -tooltip;
|
|
5
|
+
$tooltipClassPrefix: $tooltipPrefix;
|
|
6
|
+
|
|
7
|
+
$tooltipHelpPrefix: $tooltipPrefix + -help;
|
|
8
|
+
$tooltipHelpParameterPrefix: $tooltipParameterPrefix + -help;
|
|
9
|
+
$tooltipHelpClassPrefix: $tooltipHelpPrefix;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as OioTree } from './oio-tree.vue';
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { StringHelper } from '@oinone/kunlun-shared';
|
|
3
|
+
import {
|
|
4
|
+
OioTreeNode,
|
|
5
|
+
OioTreeProps,
|
|
6
|
+
PropRecordHelper,
|
|
7
|
+
TreeNodeCheckedEvent,
|
|
8
|
+
TreeNodeExpandedEvent,
|
|
9
|
+
TreeNodeSelectedEvent
|
|
10
|
+
} from '@oinone/kunlun-vue-ui-common';
|
|
11
|
+
import { Tree as ATree } from 'ant-design-vue';
|
|
12
|
+
import { isNil } from 'lodash-es';
|
|
13
|
+
import { computed, createVNode, defineComponent, ref } from 'vue';
|
|
14
|
+
import { DEFAULT_PREFIX } from '../../theme';
|
|
15
|
+
import { OioSpin } from '../oio-spin';
|
|
16
|
+
|
|
17
|
+
export default defineComponent({
|
|
18
|
+
name: 'OioTree',
|
|
19
|
+
components: {
|
|
20
|
+
ATree,
|
|
21
|
+
OioSpin
|
|
22
|
+
},
|
|
23
|
+
inheritAttrs: false,
|
|
24
|
+
props: {
|
|
25
|
+
...OioTreeProps
|
|
26
|
+
},
|
|
27
|
+
slots: ['title', 'icon', 'switcherIcon'],
|
|
28
|
+
emits: [
|
|
29
|
+
'update:expandedKeys',
|
|
30
|
+
'update:selectedKeys',
|
|
31
|
+
'update:checkedKeys',
|
|
32
|
+
'update:loadedKeys',
|
|
33
|
+
'selected',
|
|
34
|
+
'expanded',
|
|
35
|
+
'checked'
|
|
36
|
+
],
|
|
37
|
+
setup(props, { emit }) {
|
|
38
|
+
const internalLoadedKeys = ref<string[]>([]);
|
|
39
|
+
const loadedKeys = computed({
|
|
40
|
+
get() {
|
|
41
|
+
return props.loadedKeys || internalLoadedKeys.value;
|
|
42
|
+
},
|
|
43
|
+
set(val: string[]) {
|
|
44
|
+
internalLoadedKeys.value = val;
|
|
45
|
+
emit('update:loadedKeys', val);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
const loadData = async (event: { dataRef: OioTreeNode; loaded: boolean }) => {
|
|
50
|
+
if (event.loaded || event.dataRef.loaded) {
|
|
51
|
+
loadedKeys.value = [...new Set([...loadedKeys.value, event.dataRef.key])];
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
await props.loadData?.(event.dataRef);
|
|
56
|
+
loadedKeys.value = [...new Set([...loadedKeys.value, event.dataRef.key])];
|
|
57
|
+
} catch (e) {
|
|
58
|
+
console.error(e);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const onSelected = (
|
|
63
|
+
selectedKeys: string[],
|
|
64
|
+
e: { nativeEvent: PointerEvent; node: { dataRef: OioTreeNode }; selected: boolean }
|
|
65
|
+
) => {
|
|
66
|
+
const event: TreeNodeSelectedEvent = {
|
|
67
|
+
origin: [selectedKeys, e],
|
|
68
|
+
event: e.nativeEvent,
|
|
69
|
+
node: e.node.dataRef,
|
|
70
|
+
selected: e.selected,
|
|
71
|
+
selectedKeys
|
|
72
|
+
};
|
|
73
|
+
emit('selected', event);
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
const onExpanded = (
|
|
77
|
+
expandedKeys: string[],
|
|
78
|
+
e: { nativeEvent: PointerEvent; node: { dataRef: OioTreeNode }; expanded: boolean }
|
|
79
|
+
) => {
|
|
80
|
+
const event: TreeNodeExpandedEvent = {
|
|
81
|
+
origin: [expandedKeys, e],
|
|
82
|
+
event: e.nativeEvent,
|
|
83
|
+
node: e.node.dataRef,
|
|
84
|
+
expanded: e.expanded,
|
|
85
|
+
expandedKeys
|
|
86
|
+
};
|
|
87
|
+
emit('expanded', event);
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
const onChecked = (
|
|
91
|
+
checkedKeys: string[],
|
|
92
|
+
e: { nativeEvent: PointerEvent; node: { dataRef: OioTreeNode }; checked: boolean }
|
|
93
|
+
) => {
|
|
94
|
+
const event: TreeNodeCheckedEvent = {
|
|
95
|
+
origin: [checkedKeys, e],
|
|
96
|
+
event: e.nativeEvent,
|
|
97
|
+
node: e.node.dataRef,
|
|
98
|
+
checked: e.checked,
|
|
99
|
+
checkedKeys
|
|
100
|
+
};
|
|
101
|
+
emit('checked', event);
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
return {
|
|
105
|
+
loadData,
|
|
106
|
+
loadedKeys,
|
|
107
|
+
onSelected,
|
|
108
|
+
onExpanded,
|
|
109
|
+
onChecked
|
|
110
|
+
};
|
|
111
|
+
},
|
|
112
|
+
render() {
|
|
113
|
+
const {
|
|
114
|
+
loading,
|
|
115
|
+
loadingIndicator,
|
|
116
|
+
wrapperClassName,
|
|
117
|
+
|
|
118
|
+
data,
|
|
119
|
+
loadData,
|
|
120
|
+
loadedKeys,
|
|
121
|
+
blockNode,
|
|
122
|
+
showIcon,
|
|
123
|
+
showLine,
|
|
124
|
+
|
|
125
|
+
selectable,
|
|
126
|
+
selectedKeys,
|
|
127
|
+
|
|
128
|
+
expandedKeys,
|
|
129
|
+
autoExpandParent,
|
|
130
|
+
|
|
131
|
+
checkable,
|
|
132
|
+
checkedKeys,
|
|
133
|
+
checkStrictly
|
|
134
|
+
} = this;
|
|
135
|
+
const treeComponent = createVNode(
|
|
136
|
+
ATree,
|
|
137
|
+
{
|
|
138
|
+
treeData: data,
|
|
139
|
+
loadData,
|
|
140
|
+
loadedKeys,
|
|
141
|
+
blockNode,
|
|
142
|
+
showIcon,
|
|
143
|
+
showLine,
|
|
144
|
+
|
|
145
|
+
selectable,
|
|
146
|
+
selectedKeys,
|
|
147
|
+
|
|
148
|
+
expandedKeys,
|
|
149
|
+
autoExpandParent,
|
|
150
|
+
|
|
151
|
+
checkable,
|
|
152
|
+
checkedKeys,
|
|
153
|
+
checkStrictly,
|
|
154
|
+
|
|
155
|
+
'onUpdate:expandedKeys': (val) => this.$emit('update:expandedKeys', val),
|
|
156
|
+
'onUpdate:checkedKeys': (val) => this.$emit('update:checkedKeys', val),
|
|
157
|
+
'onUpdate:selectedKeys': (val) => this.$emit('update:selectedKeys', val),
|
|
158
|
+
...PropRecordHelper.collectionBasicProps(this.$attrs, [`${DEFAULT_PREFIX}-tree`]),
|
|
159
|
+
onSelect: this.onSelected,
|
|
160
|
+
onExpand: this.onExpanded,
|
|
161
|
+
onCheck: this.onChecked
|
|
162
|
+
},
|
|
163
|
+
PropRecordHelper.collectionSlots(this.$slots, ['title', showIcon ? 'icon' : '', 'switcherIcon'])
|
|
164
|
+
);
|
|
165
|
+
if (isNil(loading)) {
|
|
166
|
+
return treeComponent;
|
|
167
|
+
}
|
|
168
|
+
return createVNode(
|
|
169
|
+
OioSpin,
|
|
170
|
+
{
|
|
171
|
+
loading,
|
|
172
|
+
loadingIndicator,
|
|
173
|
+
wrapperClassName: StringHelper.append([`${DEFAULT_PREFIX}-tree-wrapper`], wrapperClassName).join(' ')
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
default: () => [treeComponent]
|
|
177
|
+
}
|
|
178
|
+
);
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
</script>
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
@import './parameters.scss';
|
|
2
|
+
|
|
3
|
+
.#{$treeClassPrefix} {
|
|
4
|
+
background-color: transparent;
|
|
5
|
+
|
|
6
|
+
.ant-tree-node-content-wrapper {
|
|
7
|
+
color: var(--oio-text-color);
|
|
8
|
+
|
|
9
|
+
&.ant-tree-node-selected {
|
|
10
|
+
background-color: rgba(var(--oio-primary-color-rgb), 0.1);
|
|
11
|
+
border-radius: 4px;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
&.ant-tree .ant-tree-node-content-wrapper:hover {
|
|
16
|
+
background-color: var(--oio-menu-hover-background-color);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.ant-tree-checkbox:not(.ant-tree-checkbox-checked) {
|
|
20
|
+
background: var(--oio-checkbox-background);
|
|
21
|
+
|
|
22
|
+
.ant-tree-checkbox-inner {
|
|
23
|
+
background-color: var(--oio-background);
|
|
24
|
+
border: 1px solid var(--oio-border-color);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.anticon {
|
|
29
|
+
color: var(--oio-icon-color);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.ant-tree-checkbox-checked .ant-tree-checkbox-inner {
|
|
34
|
+
background-color: var(--oio-primary-color);
|
|
35
|
+
border-color: var(--oio-primary-color);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.ant-tree-checkbox-disabled .ant-tree-checkbox-inner {
|
|
39
|
+
background-color: var(--oio-disabled-bg);
|
|
40
|
+
border-color: var(--oio-disabled-border-color);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner:after {
|
|
44
|
+
background-color: var(--oio-primary-color);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.ant-tree-checkbox-input:focus + .ant-tree-checkbox-inner,
|
|
48
|
+
.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-inner,
|
|
49
|
+
.ant-tree-checkbox:hover .ant-tree-checkbox-inner {
|
|
50
|
+
border-color: var(--oio-primary-color);
|
|
51
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as OioTreeSelect } from './oio-tree-select.vue';
|