@jetlinks-web/components 2.0.2 → 2.0.3

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.
Files changed (237) hide show
  1. package/es/AMap/Map.js +124 -0
  2. package/es/AMap/index.js +2 -0
  3. package/es/AMap/util.js +56 -0
  4. package/es/BadgeStatus/Badge.js +54 -0
  5. package/es/BadgeStatus/color.js +21 -0
  6. package/es/BadgeStatus/index.js +3 -0
  7. package/es/CardSelect/CardSelect.js +123 -0
  8. package/es/CardSelect/index.js +2 -0
  9. package/es/CheckButton/CheckButton.js +121 -0
  10. package/es/CheckButton/index.js +2 -0
  11. package/es/ConfigProvider/context.js +12 -0
  12. package/es/ConfigProvider/index.js +31 -0
  13. package/es/Echarts/Echarts.js +47 -0
  14. package/es/Echarts/index.js +2 -0
  15. package/es/Ellipsis/Ellipsis.js +189 -0
  16. package/es/Ellipsis/index.js +2 -0
  17. package/es/Empty/Empty.js +56 -0
  18. package/es/Empty/image.js +2 -0
  19. package/es/Empty/index.js +2 -0
  20. package/es/FullPage/FullPage.js +31 -0
  21. package/es/FullPage/index.js +2 -0
  22. package/es/Icon/icon.js +42 -0
  23. package/{src/Icon/index.ts → es/Icon/index.js} +2 -3
  24. package/es/MonacoEditor/Monaco.js +238 -0
  25. package/es/MonacoEditor/index.js +2 -0
  26. package/es/PermissionButton/index.js +117 -0
  27. package/es/ProLayout/Basic/BasicLayout.js +259 -0
  28. package/es/ProLayout/Basic/Header.js +97 -0
  29. package/es/ProLayout/PageContainer/index.js +324 -0
  30. package/es/ProLayout/PageContainer/typings.js +1 -0
  31. package/es/ProLayout/RouteContext.js +22 -0
  32. package/es/ProLayout/SiderMenu/BaseMenu.js +285 -0
  33. package/es/ProLayout/SiderMenu/SiderMenu.js +278 -0
  34. package/es/ProLayout/SiderMenu/index.js +2 -0
  35. package/es/ProLayout/SiderMenu/typings.js +1 -0
  36. package/es/ProLayout/TopHeader/index.js +163 -0
  37. package/es/ProLayout/defaultSettings.js +66 -0
  38. package/{src/ProLayout/index.ts → es/ProLayout/index.js} +4 -6
  39. package/{src → es}/ProLayout/style/default.less +4 -4
  40. package/es/ProLayout/style/index.js +1 -0
  41. package/es/ProLayout/typings.js +1 -0
  42. package/es/ProLayout/util.js +61 -0
  43. package/es/ProTable/index.js +411 -0
  44. package/es/ProTable/proTableTypes.js +11 -0
  45. package/es/ProTable/style/index.css +65 -0
  46. package/es/ProTable/style/index.js +1 -0
  47. package/es/Scrollbar/Bar.js +114 -0
  48. package/es/Scrollbar/Scrollbar.js +212 -0
  49. package/es/Scrollbar/Thumb.js +189 -0
  50. package/es/Scrollbar/constants.js +1 -0
  51. package/es/Scrollbar/index.js +2 -0
  52. package/es/Scrollbar/scrollbarProps.js +100 -0
  53. package/es/Scrollbar/thumbProps.js +10 -0
  54. package/es/Scrollbar/util.js +30 -0
  55. package/es/Search/Advanced/History.js +183 -0
  56. package/es/Search/Advanced/SaveHistory.js +153 -0
  57. package/es/Search/Advanced/index.js +520 -0
  58. package/es/Search/Item.js +497 -0
  59. package/es/Search/Search.js +249 -0
  60. package/es/Search/hooks/index.js +1 -0
  61. package/es/Search/hooks/useSearchItems.js +40 -0
  62. package/es/Search/index.js +4 -0
  63. package/es/Search/setting.js +91 -0
  64. package/es/Search/style/Item.less +33 -0
  65. package/es/Search/style/Search.less +179 -0
  66. package/es/Search/style/index.js +2 -0
  67. package/es/Search/typing.js +1 -0
  68. package/es/Search/util.js +234 -0
  69. package/es/ValueItem/ValueItem.js +233 -0
  70. package/es/ValueItem/index.js +2 -0
  71. package/es/ValueItem/util.js +16 -0
  72. package/es/index.js +24 -0
  73. package/es/style/index.js +3 -0
  74. package/es/style/variable.css +0 -0
  75. package/{src → es}/style/variable.less +0 -2
  76. package/es/style.js +3 -0
  77. package/lib/AMap/Map.js +124 -0
  78. package/lib/AMap/index.js +9 -0
  79. package/lib/AMap/util.js +62 -0
  80. package/lib/BadgeStatus/Badge.js +54 -0
  81. package/lib/BadgeStatus/color.js +27 -0
  82. package/lib/BadgeStatus/index.js +22 -0
  83. package/lib/CardSelect/CardSelect.js +123 -0
  84. package/lib/CardSelect/index.js +9 -0
  85. package/lib/CheckButton/CheckButton.js +121 -0
  86. package/lib/CheckButton/index.js +9 -0
  87. package/lib/ConfigProvider/context.js +19 -0
  88. package/lib/ConfigProvider/index.js +37 -0
  89. package/lib/Echarts/Echarts.js +47 -0
  90. package/lib/Echarts/index.js +9 -0
  91. package/lib/Ellipsis/Ellipsis.js +189 -0
  92. package/lib/Ellipsis/index.js +9 -0
  93. package/lib/Empty/Empty.js +56 -0
  94. package/lib/Empty/image.js +8 -0
  95. package/lib/Empty/index.js +9 -0
  96. package/lib/FullPage/FullPage.js +31 -0
  97. package/lib/FullPage/index.js +9 -0
  98. package/lib/Icon/icon.js +52 -0
  99. package/lib/Icon/index.js +9 -0
  100. package/lib/MonacoEditor/Monaco.js +238 -0
  101. package/lib/MonacoEditor/index.js +9 -0
  102. package/lib/PermissionButton/index.js +124 -0
  103. package/lib/ProLayout/Basic/BasicLayout.js +268 -0
  104. package/lib/ProLayout/Basic/BasicLayout.less +66 -0
  105. package/lib/ProLayout/Basic/Header.js +103 -0
  106. package/lib/ProLayout/Basic/Header.less +8 -0
  107. package/lib/ProLayout/PageContainer/index.js +327 -0
  108. package/lib/ProLayout/PageContainer/index.less +103 -0
  109. package/lib/ProLayout/PageContainer/typings.js +5 -0
  110. package/lib/ProLayout/RouteContext.js +28 -0
  111. package/lib/ProLayout/SiderMenu/BaseMenu.js +290 -0
  112. package/lib/ProLayout/SiderMenu/SiderMenu.js +287 -0
  113. package/lib/ProLayout/SiderMenu/index.js +20 -0
  114. package/lib/ProLayout/SiderMenu/index.less +212 -0
  115. package/lib/ProLayout/SiderMenu/typings.js +5 -0
  116. package/lib/ProLayout/TopHeader/index.js +168 -0
  117. package/lib/ProLayout/TopHeader/index.less +174 -0
  118. package/lib/ProLayout/defaultSettings.js +72 -0
  119. package/lib/ProLayout/index.js +16 -0
  120. package/lib/ProLayout/style/default.less +4 -0
  121. package/lib/ProLayout/style/index.js +3 -0
  122. package/lib/ProLayout/style/style.less +7 -0
  123. package/lib/ProLayout/typings.js +5 -0
  124. package/lib/ProLayout/util.js +72 -0
  125. package/lib/ProTable/index.js +417 -0
  126. package/lib/ProTable/proTableTypes.js +17 -0
  127. package/lib/ProTable/style/index.css +65 -0
  128. package/lib/ProTable/style/index.js +3 -0
  129. package/lib/ProTable/style/index.less +92 -0
  130. package/lib/Scrollbar/Bar.js +114 -0
  131. package/lib/Scrollbar/Scrollbar.js +212 -0
  132. package/lib/Scrollbar/Thumb.js +189 -0
  133. package/lib/Scrollbar/constants.js +7 -0
  134. package/lib/Scrollbar/index.js +9 -0
  135. package/{src/Scrollbar/scrollbar.ts → lib/Scrollbar/scrollbarProps.js} +106 -108
  136. package/lib/Scrollbar/thumbProps.js +16 -0
  137. package/lib/Scrollbar/util.js +37 -0
  138. package/lib/Search/Advanced/History.js +183 -0
  139. package/lib/Search/Advanced/SaveHistory.js +153 -0
  140. package/lib/Search/Advanced/index.js +520 -0
  141. package/lib/Search/Item.js +497 -0
  142. package/lib/Search/Search.js +249 -0
  143. package/lib/Search/hooks/index.js +16 -0
  144. package/lib/Search/hooks/useSearchItems.js +47 -0
  145. package/lib/Search/index.js +16 -0
  146. package/lib/Search/setting.js +97 -0
  147. package/lib/Search/style/Item.less +33 -0
  148. package/lib/Search/style/Search.less +179 -0
  149. package/lib/Search/style/index.js +4 -0
  150. package/lib/Search/typing.js +5 -0
  151. package/lib/Search/util.js +241 -0
  152. package/lib/ValueItem/ValueItem.js +233 -0
  153. package/lib/ValueItem/index.js +9 -0
  154. package/lib/ValueItem/util.js +22 -0
  155. package/lib/index.js +158 -0
  156. package/lib/style/components.less +1 -0
  157. package/lib/style/index.js +4 -0
  158. package/lib/style/variable.css +0 -0
  159. package/lib/style/variable.less +2 -0
  160. package/lib/style.js +5 -0
  161. package/package.json +122 -13
  162. package/index.ts +0 -64
  163. package/src/AMap/Map.vue +0 -110
  164. package/src/AMap/index.ts +0 -1
  165. package/src/AMap/util.ts +0 -56
  166. package/src/BadgeStatus/Badge.vue +0 -41
  167. package/src/BadgeStatus/color.ts +0 -25
  168. package/src/BadgeStatus/index.ts +0 -4
  169. package/src/CardSelect/CardSelect.vue +0 -136
  170. package/src/CardSelect/index.ts +0 -3
  171. package/src/CheckButton/CheckButton.vue +0 -146
  172. package/src/CheckButton/index.md +0 -27
  173. package/src/CheckButton/index.ts +0 -3
  174. package/src/ConfigProvider/context.ts +0 -17
  175. package/src/ConfigProvider/index.tsx +0 -42
  176. package/src/Echarts/Echarts.vue +0 -43
  177. package/src/Echarts/index.ts +0 -3
  178. package/src/Ellipsis/Ellipsis.vue +0 -182
  179. package/src/Ellipsis/index.ts +0 -3
  180. package/src/Empty/Empty.vue +0 -43
  181. package/src/Empty/image.ts +0 -3
  182. package/src/Empty/index.ts +0 -2
  183. package/src/FullPage/FullPage.vue +0 -30
  184. package/src/FullPage/index.ts +0 -3
  185. package/src/Icon/icon.tsx +0 -40
  186. package/src/MonacoEditor/Monaco.vue +0 -242
  187. package/src/MonacoEditor/index.md +0 -26
  188. package/src/MonacoEditor/index.ts +0 -2
  189. package/src/PermissionButton/index.tsx +0 -110
  190. package/src/ProLayout/Basic/BasicLayout.tsx +0 -392
  191. package/src/ProLayout/Basic/Header.tsx +0 -115
  192. package/src/ProLayout/PageContainer/index.tsx +0 -441
  193. package/src/ProLayout/PageContainer/typings.ts +0 -56
  194. package/src/ProLayout/RouteContext.ts +0 -87
  195. package/src/ProLayout/SiderMenu/BaseMenu.tsx +0 -296
  196. package/src/ProLayout/SiderMenu/SiderMenu.tsx +0 -320
  197. package/src/ProLayout/SiderMenu/index.ts +0 -2
  198. package/src/ProLayout/SiderMenu/typings.ts +0 -49
  199. package/src/ProLayout/TopHeader/index.tsx +0 -210
  200. package/src/ProLayout/defaultSettings.ts +0 -106
  201. package/src/ProLayout/style/index.ts +0 -1
  202. package/src/ProLayout/typings.ts +0 -87
  203. package/src/ProLayout/util.ts +0 -64
  204. package/src/ProTable/index.md +0 -53
  205. package/src/ProTable/index.tsx +0 -551
  206. package/src/ProTable/proTableTypes.ts +0 -70
  207. package/src/ProTable/style/index.ts +0 -1
  208. package/src/Scrollbar/Bar.vue +0 -75
  209. package/src/Scrollbar/Scrollbar.vue +0 -260
  210. package/src/Scrollbar/Thumb.vue +0 -163
  211. package/src/Scrollbar/constants.ts +0 -10
  212. package/src/Scrollbar/index.ts +0 -4
  213. package/src/Scrollbar/thumb.ts +0 -16
  214. package/src/Scrollbar/util.ts +0 -38
  215. package/src/Search/Advanced/History.vue +0 -140
  216. package/src/Search/Advanced/SaveHistory.vue +0 -108
  217. package/src/Search/Advanced/index.vue +0 -435
  218. package/src/Search/Item.vue +0 -525
  219. package/src/Search/Search.vue +0 -398
  220. package/src/Search/hooks/index.ts +0 -1
  221. package/src/Search/hooks/useSearchItems.ts +0 -68
  222. package/src/Search/index.md +0 -57
  223. package/src/Search/index.ts +0 -5
  224. package/src/Search/setting.ts +0 -55
  225. package/src/Search/typing.ts +0 -76
  226. package/src/Search/util.ts +0 -263
  227. package/src/ValueItem/ValueItem.vue +0 -192
  228. package/src/ValueItem/index.ts +0 -3
  229. package/src/ValueItem/util.ts +0 -16
  230. package/src/style/index.ts +0 -3
  231. /package/{src → es}/ProLayout/Basic/BasicLayout.less +0 -0
  232. /package/{src → es}/ProLayout/Basic/Header.less +0 -0
  233. /package/{src → es}/ProLayout/PageContainer/index.less +0 -0
  234. /package/{src → es}/ProLayout/SiderMenu/index.less +0 -0
  235. /package/{src → es}/ProLayout/TopHeader/index.less +0 -0
  236. /package/{src → es}/ProLayout/style/style.less +0 -0
  237. /package/{src → es}/ProTable/style/index.less +0 -0
@@ -1,146 +0,0 @@
1
- <template>
2
- <div :class="['j-check-button', props.class]" :style="style">
3
- <div
4
- v-for="item in _options"
5
- :key="item.value"
6
- :class="[
7
- 'j-check-button-item',
8
- myValue.includes(item.value) ? 'selected' : '',
9
- item.disabled ? 'disabled' : '',
10
- ]"
11
- @click="
12
- () => {
13
- selected(item.value, item.disabled);
14
- }
15
- "
16
- >
17
- {{ item.label }}
18
- </div>
19
- </div>
20
- </template>
21
-
22
- <script setup lang="ts">
23
- import { computed, CSSProperties, PropType, ref, watch } from 'vue';
24
- import { isArray } from '@jetlinks-web/utils';
25
-
26
- const props = defineProps({
27
- value: {
28
- type: [String, Array],
29
- default: undefined,
30
- },
31
- options: {
32
- type: Array as PropType<{ disabled?: boolean; label: string; value: string }[]>,
33
- default: () => [],
34
- },
35
- multiple: {
36
- type: Boolean,
37
- default: false,
38
- },
39
- disabled: {
40
- type: Boolean,
41
- default: false,
42
- },
43
- class: {
44
- type: String,
45
- default: undefined,
46
- },
47
- style: {
48
- type: Object as PropType<CSSProperties>,
49
- default: () => ({}),
50
- },
51
- });
52
- const emit = defineEmits(['update:value', 'change', 'select']);
53
-
54
- const myValue = ref();
55
- const optionsMap = ref(new Map());
56
-
57
- const _options = computed(() => {
58
- props.options.forEach((item: any) => {
59
- if (props.disabled) {
60
- item.display = props.disabled;
61
- }
62
- optionsMap.value.set(item.value, item);
63
- });
64
- return props.options;
65
- });
66
-
67
- watch(
68
- () => props.value,
69
- () => {
70
- if (props.value) {
71
- myValue.value = isArray(props.value) ? props.value : [props.value];
72
- } else {
73
- myValue.value = [];
74
- }
75
- },
76
- {immediate: true, deep: true},
77
- );
78
-
79
- const selected = (key: string | number, disabled: boolean) => {
80
- if (disabled) return;
81
-
82
- const values = new Set(myValue.value);
83
-
84
- if (values.has(key)) {
85
- values.delete(key);
86
- } else {
87
- if (!props.multiple) {
88
- values.clear();
89
- }
90
- values.add(key);
91
- }
92
-
93
- myValue.value = [...values.values()];
94
-
95
- const optionsItems = myValue.value.map((_key) => {
96
- return optionsMap.value.get(_key);
97
- });
98
-
99
- const _value = props.multiple ? myValue.value : myValue.value[0];
100
-
101
- emit('update:value', _value);
102
- emit('change', _value, props.multiple ? optionsItems : optionsItems[0]);
103
- emit('select', _value, props.multiple ? optionsItems : optionsItems[0]);
104
- };
105
- </script>
106
-
107
- <style scoped lang="less">
108
- .j-check-button {
109
- display: flex;
110
- gap: 16px;
111
- width: 100%;
112
-
113
- .j-check-button-item {
114
- flex: 1;
115
- min-width: 0;
116
- padding: 8px;
117
- border-radius: @border-radius-base;
118
- background-color: #f2f3f5;
119
- transition: all 0.3s;
120
- color: #333;
121
- text-align: center;
122
- cursor: pointer;
123
-
124
- &:hover {
125
- background-color: @primary-color;
126
- opacity: 0.85;
127
- color: #fff;
128
- }
129
-
130
- &.selected {
131
- background-color: @primary-color;
132
- color: #fff;
133
- }
134
-
135
- &.disabled {
136
- cursor: not-allowed;
137
- color: #00000060;
138
-
139
- &:hover {
140
- background-color: #f2f3f5;
141
- color: #00000060;
142
- }
143
- }
144
- }
145
- }
146
- </style>
@@ -1,27 +0,0 @@
1
- ---
2
- category: Components
3
- subtitle: 选择按钮
4
- type: 数据录入
5
- title: Checkbutton
6
- ---
7
-
8
- ## API
9
-
10
- ### 属性
11
-
12
- #### CheckButton
13
-
14
- | 参数 | 说明 | 类型 | 默认值 | 版本 |
15
- | -------- | ------------------------------- | ------------------------------------------------------------ | ------ | ---- |
16
- | multiple | 多选 | boolean | false | |
17
- | disabled | 失效状态 | boolean | false | |
18
- | value | 与 CheckboxGroup 组合使用时的值 | boolean \| string \| number | - | |
19
- | options | 选择项 | Array&lt;{ label: string value: string disabled?: boolean }> | \[] | |
20
- | class | 类名 | string | undefined | - |
21
- | style | css样式 | CSSProperties | {} | - |
22
-
23
- #### 事件
24
-
25
- | 事件名称 | 说明 | 回调参数 | 默认值 |版本 | |
26
- | -------- | -------------- | --------------------- | ----------------------- | --- | --- |
27
- | change | 变化时回调函数 | Function(keys: string | string[], nodes: any[]) | - | |
@@ -1,3 +0,0 @@
1
- import CheckButton from './CheckButton.vue';
2
-
3
- export default CheckButton;
@@ -1,17 +0,0 @@
1
- import type {PropType} from "vue";
2
- import { configProviderProps } from 'ant-design-vue/es/config-provider/context';
3
-
4
- export type MapConfigType = {
5
- mapStyle?: any
6
- JSKey?: string
7
- WebKey?: string
8
- }
9
- export const configProps = () => ({
10
- ...configProviderProps(),
11
- IconConfig: {
12
- type: Object as PropType<{ scriptUrl: string }>
13
- },
14
- MapConfig: {
15
- type: Object as PropType<MapConfigType>
16
- }
17
- })
@@ -1,42 +0,0 @@
1
- import {defineComponent, provide, reactive} from 'vue'
2
- import { configProps } from './context'
3
- import type { MapConfigType } from './context'
4
- import { ComponentsEnum, MAPConfig } from '@jetlinks-web/constants'
5
- import { ConfigProvider } from 'ant-design-vue'
6
- import {omit} from 'lodash-es'
7
- import Empty from '../Empty'
8
-
9
- const JConfigProvider = defineComponent({
10
- name: 'JConfigProvider',
11
- inheritAttrs: false,
12
- props: {
13
- ...configProps()
14
- },
15
- setup(props, { slots }) {
16
-
17
- const _iconConfig = reactive(props.IconConfig || {})
18
- const _mapConfig = reactive<MapConfigType>(props.MapConfig || {})
19
-
20
- provide(ComponentsEnum.Icon, _iconConfig) // 全局Icon 配置
21
-
22
- provide(MAPConfig, _mapConfig) // 全局地图配置
23
-
24
- return () => {
25
- return (
26
- <ConfigProvider
27
- {...omit(props, ['IconConfig', 'MapConfig'])}
28
- v-slots={{
29
- renderEmpty: () => (slots.renderEmpty?.() || <Empty />),
30
- ...slots,
31
- }}
32
- >
33
- { slots.default?.() }
34
- </ConfigProvider>
35
- )
36
- }
37
- }
38
- })
39
-
40
- JConfigProvider.config = ConfigProvider.config
41
-
42
- export default JConfigProvider
@@ -1,43 +0,0 @@
1
- <template>
2
- <div ref="echartsDom" class="echarts-warp" :style="style"></div>
3
- </template>
4
-
5
- <script lang="ts" name="Echarts" setup>
6
- import {CSSProperties, nextTick, ref, watch, Ref} from 'vue'
7
- import {useECharts} from '@jetlinks-web/hooks'
8
-
9
- interface Props {
10
- style?: CSSProperties
11
- }
12
-
13
- const props = defineProps({
14
- options: {
15
- type: Object,
16
- default: undefined,
17
- },
18
- style: Object as PropType<Props['style']>,
19
- })
20
-
21
- const echartsDom = ref<Ref<HTMLDivElement> | HTMLDivElement>()
22
-
23
- const {setOptions} = useECharts(echartsDom.value)
24
-
25
- watch(
26
- () => JSON.stringify(props.options),
27
- () => {
28
- if (props.options) {
29
- nextTick(() => {
30
- setOptions(props.options)
31
- })
32
- }
33
- },
34
- {immediate: true},
35
- )
36
- </script>
37
-
38
- <style scoped>
39
- .echarts-warp {
40
- width: 100%;
41
- height: 100%;
42
- }
43
- </style>
@@ -1,3 +0,0 @@
1
- import Echarts from './Echarts.vue'
2
-
3
- export default Echarts
@@ -1,182 +0,0 @@
1
- <template>
2
- <Tooltip ref="tooltipRef" placement="top" v-bind="tooltip" :visible="visible">
3
- <template v-if="tooltip">
4
- <div :class="[jEllipsisLineClampClass, jEllipsis, 'j-ellipsis-deep']">
5
- <slot></slot>
6
- <slot name="tooltip"></slot>
7
- </div>
8
- </template>
9
- <span
10
- ref="triggerRef"
11
- v-bind="triggerAttrs()"
12
- @click="handleClickRef"
13
- @mouseleave="visible = false"
14
- @mouseenter="
15
- ;[
16
- props.expandTrigger === 'click'
17
- ? getTooltipDisabled()
18
- : showTooltip(),
19
- ]
20
- "
21
- >
22
- </span>
23
- </Tooltip>
24
- </template>
25
-
26
- <script setup>
27
- import { Tooltip } from 'ant-design-vue'
28
- import { computed, mergeProps, ref, useAttrs } from 'vue'
29
-
30
- defineOptions({
31
- name: 'Ellipsis',
32
- })
33
-
34
- const props = defineProps({
35
- expandTrigger: {
36
- type: String,
37
- default: undefined,
38
- },
39
- /** multiline ellipsis */
40
- lineClamp: {
41
- type: [Number, String],
42
- default: 1,
43
- },
44
- tooltip: {
45
- type: [Boolean, Object],
46
- default: true,
47
- },
48
- })
49
-
50
- // define class name
51
- const jEllipsis = 'j-ellipsis'
52
- const jEllipsisCursorClass = 'j-ellipsis-cursor'
53
- const jEllipsisLineClampClass = 'j-ellipsis-line-clamp'
54
-
55
- const expandedRef = ref(false)
56
- const tooltipRef = ref(null)
57
- const triggerRef = ref(null)
58
- const visible = ref(false)
59
-
60
- const attrs = useAttrs()
61
-
62
- const handleClickRef = computed(() => {
63
- return props.expandTrigger === 'click'
64
- ? () => {
65
- const { value: expanded } = expandedRef
66
- expandedRef.value = !expanded
67
- }
68
- : undefined
69
- })
70
-
71
- function triggerAttrs() {
72
- return {
73
- ...mergeProps(attrs, {
74
- class: [
75
- jEllipsis,
76
- props.lineClamp !== undefined ? jEllipsisLineClampClass : undefined,
77
- props.expandTrigger === 'click' ? jEllipsisCursorClass : undefined,
78
- ],
79
- style: ellipsisStyleRef.value,
80
- }),
81
- }
82
- }
83
-
84
- const showTooltip = () => {
85
- const { value: trigger } = triggerRef
86
- if (trigger) {
87
- visible.value = trigger.scrollHeight > trigger.offsetHeight
88
- }
89
- }
90
-
91
- const ellipsisStyleRef = computed(() => {
92
- const { lineClamp } = props
93
- const { value: expanded } = expandedRef
94
- if (lineClamp !== undefined) {
95
- return {
96
- textOverflow: '',
97
- '-webkit-line-clamp': expanded ? '' : lineClamp,
98
- }
99
- } else {
100
- return {
101
- textOverflow: expanded ? '' : 'ellipsis',
102
- '-webkit-line-clamp': '',
103
- }
104
- }
105
- })
106
-
107
- const syncEllipsisStyle = (trigger) => {
108
- if (!trigger) return
109
- const latestStyle = ellipsisStyleRef.value
110
- const lineClampClass = jEllipsisLineClampClass
111
- if (props.lineClamp !== undefined) {
112
- syncTriggerClass(trigger, lineClampClass, 'add')
113
- } else {
114
- syncTriggerClass(trigger, lineClampClass, 'remove')
115
- }
116
- for (const key in latestStyle) {
117
- if (trigger.style[key] !== latestStyle[key]) {
118
- trigger.style[key] = latestStyle[key]
119
- }
120
- }
121
- }
122
-
123
- const syncTriggerClass = (trigger, styleClass, action) => {
124
- if (action === 'add') {
125
- if (!trigger.classList.contains(styleClass)) {
126
- trigger.classList.add(styleClass)
127
- }
128
- } else {
129
- if (trigger.classList.contains(styleClass)) {
130
- trigger.classList.remove(styleClass)
131
- }
132
- }
133
- }
134
-
135
- const syncCursorStyle = (trigger, tooltipDisabled) => {
136
- if (props.expandTrigger === 'click' && !tooltipDisabled) {
137
- syncTriggerClass(trigger, jEllipsisCursorClass, 'add')
138
- } else {
139
- syncTriggerClass(trigger, jEllipsisCursorClass, 'remove')
140
- }
141
- }
142
-
143
- const getTooltipDisabled = () => {
144
- let tooltipDisabled = false
145
- const { value: expanded } = expandedRef
146
-
147
- if (expanded) return true
148
-
149
- const { value: trigger } = triggerRef
150
-
151
- if (trigger) {
152
- syncEllipsisStyle(trigger)
153
- tooltipDisabled = trigger.scrollHeight <= trigger.offsetHeight
154
-
155
- syncCursorStyle(trigger, tooltipDisabled)
156
- }
157
- return tooltipDisabled
158
- }
159
- </script>
160
-
161
- <style scoped>
162
- .j-ellipsis {
163
- overflow: hidden;
164
- vertical-align: bottom;
165
- }
166
-
167
- .j-ellipsis-cursor {
168
- cursor: pointer;
169
- }
170
-
171
- .j-ellipsis-line-clamp {
172
- display: -webkit-box;
173
- -webkit-box-orient: vertical;
174
- word-break: break-all;
175
- }
176
-
177
- .j-ellipsis-deep {
178
- max-height: 380px;
179
- -webkit-line-clamp: 17;
180
- text-overflow: ellipsis;
181
- }
182
- </style>
@@ -1,3 +0,0 @@
1
- import Ellipsis from './Ellipsis.vue'
2
-
3
- export default Ellipsis
@@ -1,43 +0,0 @@
1
- <template>
2
- <Empty v-bind="baseProps">
3
- <template v-for="item in renderArr" :key="item" #[item]="scope">
4
- <slot :name="item" :scope="scope"></slot>
5
- </template>
6
- </Empty>
7
- </template>
8
-
9
- <script lang="ts" setup name="JEmpty">
10
- import { Empty } from 'ant-design-vue'
11
- import { useSlots } from 'vue'
12
- import NoData from './image'
13
- import { omit } from 'lodash-es'
14
- import type { PropType, CSSProperties } from 'vue'
15
-
16
- const slots = useSlots()
17
- const renderArr = Object.keys(slots)
18
-
19
- const props = defineProps({
20
- description: {
21
- type: String,
22
- default: '暂无数据',
23
- },
24
- image: {
25
- type: String,
26
- default: NoData,
27
- },
28
- imageStyle: {
29
- type: Object as PropType<CSSProperties>,
30
- default: () => {
31
- return { height: '60px' }
32
- },
33
- },
34
- })
35
-
36
- const baseProps = omit(props, ...renderArr)
37
- </script>
38
- <style lang="less">
39
- .@{ant-prefix}-empty-description {
40
- color: #b3b3b3;
41
- font-size: 14px;
42
- }
43
- </style>
@@ -1,3 +0,0 @@
1
- const img =
2
- 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAuCAYAAABu3ppsAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAWUSURBVHgB7ZoLTuNIEIY7vN8k4iWE0Don2LnBZG/AnoDMCbJ7gpk9wbInGOYGszfw3IAbxAghhAAR3m/Y+hpX1DF24gerzIz4JctOu92u/6/qqnaDMT84SqYP2N7ebjw9PdXlslwqlfzHx8c/q9Vqy+TAkCkIMWZdjNnAGDl8uf4gxgTNZpPfnhzvnO7BwMDAr4ODgxtzc3NGrs3Z2Vldjm2598nkQCEPiJHe8PBwE2PGxsbM6empOT4+DkJDa2KoGRkZafe/v783Nzc3tm12dtZMTEzYtt3d3ZbneRWTA0U9sDY6OmqNv729RU0jv71yuezRloTz83OImqurK0vEPHsvF4oSKA8NDVmDTk5OTKVSsar2wtTUlD1arZbZ39+nKTA5MWCKISAkUHNhYSGV8S7EU2ZyctJeEo4mB4oS2Lq+vrbGu7GeBZCQMCIbfTY5UIiATNQGBnSL9zQIx6iJF/4wGZE7C2kGWlpaMsyDosCTMh9akoarWWpCbg+I+h/JQEWMlwJmU+/l5aX1ohxko3qWMTK/XZSvifHvRanazMxMxz1yOhMaw6gNvcjt7e3ZM6mUTMZZPNGQd7TEC5smBXqGUJgd1mSSvZdzTcKmTIHC2JWVlY6+R0dH1pDV1VVLBBJJgOTOzo4lifpUZQhIUbMJQYgE8s5N6feFym7SEgiXAKrympxtUWLQ8fFxI4PaAkTMLi4udjx7cHBgiSmWl5fb1xDjHvlfPQNJ2hiLvrRTF0jHIpQtjIRXSOSvOCIdBGRd8zeLLFRmEIxmoCgYGMXIHi4whoIWTa3hcsFeI4JLnAoO8MjFxYV9hrE58DTtkOCQa4j8I0S2XhDQrMLEpDjxMC+LK05xBHgRbXHg3uHhobm7uzPT09MmOnfAw8ODJe4C8fC4iGqJUrmlH5nqdyHh06c9y8gqOriyRk2Mxe2EEaRcYBB9ASFCVYVEtKjRhhAIw3UcWVUcb2GwjonhvAcy2CH9yhJ6H+W2b9QDqC9Mm0zKaOZgEA5erh7hJRz8dg1wf7tAOZ7XfnFZCvXpo3NFF4k6/5QwzxKO4okK9UJHWEO9uLSnCy+UIGeTaQBq0Y5auDlpKYFhGEFfDFNjaMfLJATGZjz6Qcw1OAra6SfzpS4/N6wHgiBAfS9NUcIIV1EGI/31epbnMJjnMF49pionGRwHvCRC+vIN8VtJwqcu7D+zFEaltHDnCcYRWnhRJ70aTPxyxkANC/pkMTju3XwESRhVdQ5QqBqiYg01sxAB7jzB/byAw1X4NdZLQOcK4SwEPnTUASGyKS9aJ6bzEKGyYjjGRqt0XqinMZpz2Ma3N4XNj8oSaCjAkPBISwQPaErlTAjlVV1V5swEJ4UyFmHOpJcJ/O1FHXBBRqAzxUWJQCIpUwGqKM/xDLGOWnEFKw5RlRmH9zBOL/G6ShQlgsp4iILnEkFtJiv3KHzMA5TqRiCqMs+oyoRwWqTycZQIhQRlNH3iIdRqDyptEHErLtc60TGaMQmNNCoXJhAlgrIuEQyan5+3YQRQkL4QA9zXIpZH5VcjEEcEo+PWSShLGKEy6TRuVfsaKJScMTopzjX//98ouq3Sd7wR6DfeCPQbPx8Byrq7NfK9I1oHNsM9ynVZ13jRNU+/wGcroiJu+CXY3jtNrOd8qUm5Z//TEnHXOklgecEaiGVFUbB2wtgwIthK2ZLjX7n11d3gSrO1aInIUsBj3dPtjxhFCERVFgKBGizHVtKOdeoVVUikIcuHdywf4ohkJeCqzEo3/NJ6oXI3ZF4SsjuNR4SI3Z12dxR6EYhRmdD4Yp43qfw8fysu9AcOOX3iG5ovNVacfE1FCXRR2Xf3OPOi8KJciYhX1vWTkg8dV2W591XOanSuv8gn4dX+1cAh8gu/ReVv5tlg37whGf8BDgTT6KlQOV4AAAAASUVORK5CYII=';
3
- export default img;
@@ -1,2 +0,0 @@
1
- import Empty from './Empty.vue'
2
- export default Empty;
@@ -1,30 +0,0 @@
1
- <template>
2
- <div
3
- class="full-page-warp"
4
- ref="fullPage"
5
- :style="{ minHeight: `calc(100vh - ${y + 24}px)` }"
6
- >
7
- <div class="full-page-warp-content">
8
- <slot></slot>
9
- </div>
10
- </div>
11
- </template>
12
-
13
- <script setup lang="ts" name="FullPage">
14
- import { ref } from 'vue'
15
- import { useElementBounding } from '@vueuse/core'
16
-
17
- const fullPage = ref(null)
18
- const { y } = useElementBounding(fullPage)
19
- </script>
20
-
21
- <style scoped lang="less">
22
- .full-page-warp {
23
- background: #fff;
24
- display: flex;
25
-
26
- .full-page-warp-content {
27
- width: 100%;
28
- }
29
- }
30
- </style>
@@ -1,3 +0,0 @@
1
- import FullPage from './FullPage.vue'
2
-
3
- export default FullPage
package/src/Icon/icon.tsx DELETED
@@ -1,40 +0,0 @@
1
- import { defineComponent, createVNode, watchEffect } from 'vue';
2
- import * as aIcon from '@ant-design/icons-vue';
3
- import { createFromIconfontCN } from '@ant-design/icons-vue';
4
- import { useIcon } from '@jetlinks-web/hooks'
5
-
6
- let MyIcon = createFromIconfontCN({
7
- scriptUrl: '//at.alicdn.com/t/c/font_3183515_i7oma42he.js', // 在 iconfont.cn 上生成
8
- });
9
-
10
- const AntdIcon = (props: { type: string }) => createVNode(aIcon[props.type]);
11
-
12
- const Icon = (props: any) =>
13
- Object.keys(aIcon).includes(props.type) ? (
14
- <AntdIcon {...props} />
15
- ) : (
16
- <MyIcon {...props} />
17
- );
18
-
19
- export default defineComponent({
20
- name: 'AIcon',
21
- // 传入组件配置
22
- props: ['type', 'scriptUrl', 'class'],
23
- emits: ['click'],
24
- setup(props, {emit, attrs}) {
25
- const config = useIcon()
26
- watchEffect(() => {
27
- const url = props.scriptUrl || config.scriptUrl
28
- if (url) {
29
- MyIcon = createFromIconfontCN({
30
- scriptUrl: url,
31
- });
32
- }
33
- });
34
-
35
- const click = () => {
36
- emit('click');
37
- };
38
- return () => <Icon {...props} style={attrs.style} onClick={click}/>;
39
- },
40
- });