@lx-frontend/wrap-element-ui 1.0.25 → 1.0.26

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 (113) hide show
  1. package/README.md +54 -4
  2. package/dist/auto/index.mjs +21 -0
  3. package/dist/auto/types/index.d.ts +9 -0
  4. package/dist/vue2/index.css +1 -0
  5. package/dist/vue2/index.mjs +3017 -0
  6. package/dist/vue2/types/components/AddMembers/index.vue.d.ts +31 -0
  7. package/dist/vue2/types/components/AuditSteps/index.vue.d.ts +46 -0
  8. package/dist/vue2/types/components/DemoComponent/index.vue.d.ts +2 -0
  9. package/{src/components/EditableTable/bizHooks/index.ts → dist/vue2/types/components/EditableTable/bizHooks/index.d.ts} +1 -1
  10. package/dist/vue2/types/components/EditableTable/bizHooks/useCellHover.d.ts +11 -0
  11. package/dist/vue2/types/components/EditableTable/bizHooks/useColumnHeaderOperation.d.ts +34 -0
  12. package/dist/vue2/types/components/EditableTable/bizHooks/useDefaultOperation.d.ts +22 -0
  13. package/dist/vue2/types/components/EditableTable/bizHooks/useDragSort.d.ts +14 -0
  14. package/dist/vue2/types/components/EditableTable/bizHooks/usePagination.d.ts +12 -0
  15. package/dist/vue2/types/components/EditableTable/bizHooks/useRowBgColor.d.ts +15 -0
  16. package/dist/vue2/types/components/EditableTable/bizHooks/useViewSetting.d.ts +26 -0
  17. package/dist/vue2/types/components/EditableTable/features/bizColorSelect.vue.d.ts +25 -0
  18. package/dist/vue2/types/components/EditableTable/features/bizEditCell.vue.d.ts +21 -0
  19. package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizCheckboxFilter.vue.d.ts +21 -0
  20. package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizColorRadioFilter.vue.d.ts +21 -0
  21. package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizDoubleDatePickerFilter.vue.d.ts +21 -0
  22. package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizInputFilter.vue.d.ts +21 -0
  23. package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.helper.d.ts +48 -0
  24. package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.vue.d.ts +21 -0
  25. package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizRadioFilter.vue.d.ts +21 -0
  26. package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/BizSortFilter.vue.d.ts +23 -0
  27. package/dist/vue2/types/components/EditableTable/features/bizTableHeaderPopover/index.vue.d.ts +311 -0
  28. package/dist/vue2/types/components/EditableTable/features/bizTableOperatePopover.vue.d.ts +32 -0
  29. package/dist/vue2/types/components/EditableTable/features/bizViewSettingDialog.vue.d.ts +30 -0
  30. package/dist/vue2/types/components/EditableTable/index.vue.d.ts +472 -0
  31. package/dist/vue2/types/components/EditableTable/types/index.d.ts +235 -0
  32. package/dist/vue2/types/components/Ellipsis/MultilineEllipsis.vue.d.ts +91 -0
  33. package/dist/vue2/types/components/Ellipsis/index.vue.d.ts +89 -0
  34. package/dist/vue2/types/components/LxTable/index.vue.d.ts +2 -0
  35. package/dist/vue2/types/components/PopoverForm/index.vue.d.ts +50 -0
  36. package/dist/vue2/types/components/SearchForm/index.vue.d.ts +116 -0
  37. package/dist/vue2/types/components/SearchForm/types/index.d.ts +65 -0
  38. package/dist/vue2/types/components/SearchSelect/index.vue.d.ts +53 -0
  39. package/dist/vue2/types/components/helper.d.ts +8 -0
  40. package/dist/vue2/types/components/index.d.ts +12 -0
  41. package/dist/vue2/types/components/singleMessage/index.d.ts +4 -0
  42. package/dist/vue2/types/vue2/index.d.ts +1363 -0
  43. package/dist/vue3/index.css +1 -0
  44. package/dist/vue3/index.mjs +2306 -0
  45. package/dist/vue3/index.mjs.map +1 -0
  46. package/dist/vue3/types/components/EditableTable/features/bizColorSelect.vue.d.ts +31 -0
  47. package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizCheckboxFilter.vue.d.ts +23 -0
  48. package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizColorRadioFilter.vue.d.ts +23 -0
  49. package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizDoubleDatePickerFilter.vue.d.ts +23 -0
  50. package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizInputFilter.vue.d.ts +23 -0
  51. package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.helper.d.ts +48 -0
  52. package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.vue.d.ts +23 -0
  53. package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizRadioFilter.vue.d.ts +23 -0
  54. package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/BizSortFilter.vue.d.ts +25 -0
  55. package/dist/vue3/types/components/EditableTable/features/bizTableHeaderPopover/index.vue.d.ts +77 -0
  56. package/dist/vue3/types/components/EditableTable/features/bizTableOperatePopover.vue.d.ts +36 -0
  57. package/dist/vue3/types/components/EditableTable/features/bizViewSettingDialog.vue.d.ts +35 -0
  58. package/dist/vue3/types/components/EditableTable/hooks/index.d.ts +9 -0
  59. package/dist/vue3/types/components/EditableTable/hooks/useCellHover.d.ts +19 -0
  60. package/dist/vue3/types/components/EditableTable/hooks/useColumnHeaderOperation.d.ts +37 -0
  61. package/dist/vue3/types/components/EditableTable/hooks/useDefaultOperation.d.ts +22 -0
  62. package/dist/vue3/types/components/EditableTable/hooks/useDragSort.d.ts +15 -0
  63. package/dist/vue3/types/components/EditableTable/hooks/usePagination.d.ts +12 -0
  64. package/dist/vue3/types/components/EditableTable/hooks/useRowBgColor.d.ts +18 -0
  65. package/dist/vue3/types/components/EditableTable/hooks/useRowEdit.d.ts +14 -0
  66. package/dist/vue3/types/components/EditableTable/hooks/useTableRender.d.ts +41 -0
  67. package/dist/vue3/types/components/EditableTable/hooks/useViewSetting.d.ts +26 -0
  68. package/dist/vue3/types/components/EditableTable/index.vue.d.ts +4478 -0
  69. package/dist/vue3/types/components/EditableTable/types.d.ts +419 -0
  70. package/dist/vue3/types/components/helper.d.ts +8 -0
  71. package/dist/vue3/types/index.d.ts +7 -0
  72. package/dist/vue3/types/stories/EditableTable.fake.d.ts +33 -0
  73. package/dist/vue3/types/stories/EditableTable.hook.d.ts +12 -0
  74. package/dist/vue3/types/stories/EditableTable.stories.d.ts +18 -0
  75. package/package.json +38 -8
  76. package/src/components/AddMembers/index.vue +0 -149
  77. package/src/components/AuditSteps/index.vue +0 -140
  78. package/src/components/DemoComponent/index.vue +0 -21
  79. package/src/components/EditableTable/README.md +0 -147
  80. package/src/components/EditableTable/bizHooks/useCellHover.ts +0 -72
  81. package/src/components/EditableTable/bizHooks/useColumnHeaderOperation.ts +0 -339
  82. package/src/components/EditableTable/bizHooks/useDefaultOperation.ts +0 -96
  83. package/src/components/EditableTable/bizHooks/useDragSort.ts +0 -291
  84. package/src/components/EditableTable/bizHooks/usePagination.ts +0 -31
  85. package/src/components/EditableTable/bizHooks/useRowBgColor.ts +0 -44
  86. package/src/components/EditableTable/bizHooks/useViewSetting.ts +0 -206
  87. package/src/components/EditableTable/features/bizColorSelect.vue +0 -63
  88. package/src/components/EditableTable/features/bizEditCell.vue +0 -44
  89. package/src/components/EditableTable/features/bizTableHeaderPopover/BizCheckboxFilter.vue +0 -40
  90. package/src/components/EditableTable/features/bizTableHeaderPopover/BizColorRadioFilter.vue +0 -56
  91. package/src/components/EditableTable/features/bizTableHeaderPopover/BizDoubleDatePickerFilter.vue +0 -94
  92. package/src/components/EditableTable/features/bizTableHeaderPopover/BizInputFilter.vue +0 -26
  93. package/src/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.helper.ts +0 -131
  94. package/src/components/EditableTable/features/bizTableHeaderPopover/BizMonthDayPicker.vue +0 -115
  95. package/src/components/EditableTable/features/bizTableHeaderPopover/BizRadioFilter.vue +0 -39
  96. package/src/components/EditableTable/features/bizTableHeaderPopover/BizSortFilter.vue +0 -50
  97. package/src/components/EditableTable/features/bizTableHeaderPopover/index.vue +0 -160
  98. package/src/components/EditableTable/features/bizTableOperatePopover.vue +0 -67
  99. package/src/components/EditableTable/features/bizViewSettingDialog.vue +0 -137
  100. package/src/components/EditableTable/index.less +0 -820
  101. package/src/components/EditableTable/index.vue +0 -681
  102. package/src/components/EditableTable/pin-top.png +0 -0
  103. package/src/components/EditableTable/types/index.ts +0 -212
  104. package/src/components/Ellipsis/MultilineEllipsis.vue +0 -141
  105. package/src/components/Ellipsis/index.vue +0 -119
  106. package/src/components/LxTable/index.vue +0 -296
  107. package/src/components/PopoverForm/index.vue +0 -66
  108. package/src/components/SearchForm/index.vue +0 -262
  109. package/src/components/SearchForm/types/index.ts +0 -81
  110. package/src/components/SearchSelect/index.vue +0 -153
  111. package/src/components/helper.ts +0 -37
  112. package/src/components/index.ts +0 -24
  113. package/src/components/singleMessage/index.ts +0 -44
@@ -1,212 +0,0 @@
1
- import type { TableColumn, DatePicker } from 'element-ui'
2
-
3
- export enum IEditType {
4
- INPUT = 'input',
5
- SELECT = 'select',
6
- DATE_ONLY = 'date'
7
- }
8
-
9
- export interface ISortOption {
10
- prop: string
11
- label: string
12
- }
13
-
14
- /** 筛选组件 - 输入框 */
15
- export interface IFilterInput {
16
- type: 'input'
17
- prop: string,
18
- label?: string,
19
- validator?: (value: string) => boolean
20
- placeholder?: string
21
- }
22
-
23
- export interface IFilterSelectOptions {
24
- value: any;
25
- text: string;
26
- [key: string]: any;
27
- }
28
-
29
- /** 筛选组件 - 单选/多选 */
30
- export interface IFilterSelect {
31
- type: 'radio' | 'checkbox'
32
- prop: string
33
- options: IFilterSelectOptions[]
34
- label?: string
35
- defaultValue?: any | any[]
36
- }
37
-
38
- /** 筛选组件 - 日期范围(拆分两个日期选择器) */
39
- export interface IFilterDoubleDatePickerBase {
40
- type: 'doubleDatePicker',
41
- prop: [string, string],
42
- label?: string,
43
- }
44
-
45
- export interface IFilterDoubleDatePicker extends IFilterDoubleDatePickerBase {
46
- pickerOptions?: {
47
- start?: DatePicker['pickerOptions']
48
- end?: DatePicker['pickerOptions']
49
- }
50
- }
51
-
52
- export interface IFilterDoubleDatePickerLimit extends IFilterDoubleDatePickerBase {
53
- /** 限制天数范围 */
54
- limit?: number
55
- }
56
-
57
- /** 筛选组件 - 月日选择器 */
58
- export interface IFilterMonthDayPicker {
59
- type: 'monthDayPicker',
60
- prop: [string, string],
61
- label?: string,
62
- /** 可选择的范围 */
63
- limit: number,
64
- }
65
-
66
- /** 筛选组件 - 颜色选择器 */
67
- export interface IFilterColorRadio {
68
- type: 'colorRadio',
69
- prop: string,
70
- label?: string,
71
- options: Array<IFilterSelectOptions & { color: string }>
72
- }
73
-
74
- export interface IFilterSlot {
75
- type: 'slot',
76
- slotName: string,
77
- active: () => boolean
78
- }
79
-
80
- export type FilterItem = IFilterInput | IFilterSelect | IFilterDoubleDatePicker | IFilterDoubleDatePickerLimit | IFilterMonthDayPicker | IFilterColorRadio | IFilterSlot
81
-
82
- /** 筛选组件类型 */
83
- export type FilterListType = Array<FilterItem>
84
-
85
- type _IColumnConfigRequired = {
86
- prop: string;
87
- label: string;
88
- editType?: IEditType; // 编辑格式
89
- editSlotName?: string; // 编辑时,自定义编辑组件的slotName
90
- sortable?: boolean | ISortOption[]; // 该列是否允许排序,ture则表头弹窗会显示升降序按钮
91
- _sortable?: _IColumnConfigRequired['sortable']; // 内部使用,el-table 的 sortable 不支持数组,用来同步 sortable
92
- /** 内部使用, */
93
- isColumnSortable?: boolean;
94
- slotName?: string; // 如果要自定义,传入 slotName
95
- hoverSlotName?: string; // 悬浮时,自定义悬浮组件的slotName
96
- isAlwaysShow?: boolean; // 不可隐藏,显示设置中,该列不允许隐藏
97
- /** 默认隐藏,显示设置中,该列默认隐藏 */
98
- defaultHide?: boolean;
99
- summary?: boolean; // 是否可以显示该列的统计
100
- summaryMethod?: (values: any[]) => string | number; // 这一列的统计方法,values为该列的所有值
101
- /** 格式化函数,用于自定义渲染 */
102
- formatter?: (row: any, column: IColumnConfig, value: any, index: number) => string | number;
103
- width?: number | string;
104
- minWidth?: number | string;
105
- /** 自定义颜色表头label */
106
- customColorLabel?: boolean;
107
- filters?: FilterListType;
108
- selectOptions?: any
109
- }
110
-
111
- export type IColumnConfigRequired = _IColumnConfigRequired & Partial<Omit<TableColumn, keyof _IColumnConfigRequired>>
112
-
113
- type IInputColumn = IColumnConfigRequired & {
114
- inputType: string | number;
115
- }
116
-
117
- type ISelectColumn = IColumnConfigRequired & {
118
- options: { key: string; value: string | number;[key: string]: any }[];
119
- }
120
-
121
- type IDateOnlyColumn = IColumnConfigRequired
122
- type IDateTimeColumn = IColumnConfigRequired
123
-
124
- export type IColumnConfig = IInputColumn | ISelectColumn | IDateOnlyColumn | IDateTimeColumn
125
-
126
- export type IColorList = {
127
- name: string; // 颜色名称
128
- textColor: string; // 颜色弹窗中文本颜色
129
- sampleColor: string; // 颜色弹窗中样例的颜色
130
- bgColor: string; // 选中颜色后,行背景色
131
- id: number; // 颜色id
132
- default?: boolean // 是否是默认色,默认色需要显示颜色图标
133
- }[]
134
-
135
- type IPointLoc = {
136
- x: number;
137
- y: number;
138
- }
139
- export type IDraggingData = {
140
- isDragging?: boolean
141
- startPosition?: IPointLoc
142
- draggingRow?: HTMLElement | HTMLElement[]
143
- draggingIndex?: number
144
- dropIndex?: number
145
- rowDoms?: Record<number, HTMLElement[]>
146
- rowHeight?: number
147
- rowsRange?: ([number, number] | undefined)[]
148
- hiddenTds?: HTMLElement[]
149
- fullScreenDiv?: HTMLElement
150
- }
151
-
152
- export type IDefaultOperationType = 'edit' | 'delete' | 'top'
153
-
154
- export type ITableDataItem = {
155
- colorId?: number;
156
- isPinned?: boolean;
157
- // 固定背景色:如果行数据中有该值,行背景色将以该值为准,优先级大于colorId指定的背景色(颜色实例不受影响)
158
- __static_bg_color__?: string;
159
- [k: string]: any;
160
- }
161
-
162
- export type SettingStorgeConfig = {
163
- version: string,
164
- config: {
165
- fields: Record<string, { hidden: boolean, order: number }>,
166
- leftFixedColumnCount: number
167
- }
168
- }
169
-
170
- export type SettingStorgeMigrationConfigs = {
171
- schemaVersion?: number
172
- version: {
173
- form: string
174
- to: string
175
- }
176
- migration: (currentConfig: any, columns: IColumnConfig[]) => SettingStorgeConfig
177
- }[]
178
-
179
- export interface IProps {
180
- dataList: ITableDataItem[];
181
- columnConfig: IColumnConfig[];
182
- hasExpandRow?: boolean;
183
- hasIndexColumn?: boolean;
184
- hasSelectionColumn?: boolean;
185
- rowDragAble?: boolean;
186
- total: number;
187
- defaultOperations?: IDefaultOperationType[];
188
- colorList?: IColorList;
189
- colorFilterConfig?: IColumnConfig
190
- leftFixedCount?: number;
191
- dragSemiRange?: number;
192
- loading?: boolean;
193
- settingStorgeKey?: string
194
- settingStorgeMigrationConfigs?: SettingStorgeMigrationConfigs
195
- localSort?: boolean
196
- localFilter?: boolean
197
- currentPage: number
198
- }
199
-
200
- export interface IEmits {
201
- (e: 'selection-change', selection: any): void
202
- (e: 'row-bg-change', param: { colorId: number; row: ITableDataItem; rowIndex: number }): void
203
- (e: 'row-drag-drop', param: { row: any; fromIndex: number; toIndex: number; page: number; size: number; }): void
204
- (e: 'row-delete', param: { row: any; index: number; page: number; size: number; }): void
205
- (e: 'row-edit', param: { row: any, index: number; page: number; size: number; }): void
206
- (e: 'row-pin-to-top', param: { row: any, rawIndex: number; page: number; size: number; }): void
207
- (e: 'row-edit-save', param: { page: number; size: number; row: any; changedData: Record<string, any>; }): void
208
- (e: 'row-edit-cancel', param: { row: any; page: number; size: number; }): void
209
- (e: 'page-change', param: { page: number, size: number }): void
210
- (e: 'search', param: Record<string, any>): void
211
- (e: 'sort-change', param: { order: 'descending' | 'ascending' | null, prop: string }): void
212
- }
@@ -1,141 +0,0 @@
1
- <template>
2
- <div class="ellipsis">
3
- <div class="ellipsis__container" :style="{ 'font-size': `${fontSize}px`, 'line-height': lineHeight, color }">
4
- <div class="ellipsis__content" ref="contentEl" :style="{ height: `${preHeight}px`, 'align-items': alignItems }">{{ preContent }}</div>
5
- <div class="ellipsis__last-line" ref="lastLineEl" :style="{ height: `${lastLineHeight}px` }">{{ restContent }}
6
- <span v-if="isShowIconMethod()" :class="iconName"></span>
7
- </div>
8
- </div>
9
- </div>
10
- </template>
11
-
12
- <script>
13
- export default {
14
- name: 'MultilineEllipsis',
15
- props: {
16
- fontSize: {
17
- type: Number,
18
- default: 12
19
- },
20
- color: {
21
- type: String,
22
- default: '#000000'
23
- },
24
- lineCount: {
25
- type: Number,
26
- default: 1
27
- },
28
- content: {
29
- type: String,
30
- default: ''
31
- },
32
- isOverflow: {
33
- type: Boolean,
34
- default: false
35
- },
36
- iconName: {
37
- type: String,
38
- default: 'el-icon-arrow-down'
39
- },
40
- overCountTip: {
41
- type: Object,
42
- },
43
- showIconObj: {
44
- type: Object,
45
- default: () => {
46
- return {
47
- isShowIcon: false,
48
- length: 0,
49
- }
50
- },
51
- },
52
- },
53
- data () {
54
- return {
55
- restContent: '',
56
- preContent: '',
57
- lastLineHeight: 0,
58
- alignItems: 'center'
59
- }
60
- },
61
- computed: {
62
- preHeight () {
63
- return (this.fontSize + 2) * (this.lineCount - 1)
64
- },
65
- lineHeight () {
66
- return `${this.fontSize + 2}px`
67
- }
68
- },
69
- mounted () {
70
- // 由于在 element table 中,渲染计算时的宽度可能与实际展示时的宽度可能存在偏差,在此把宽度固定为组件挂载时获取到的宽度
71
- this.$refs.contentEl.style.width = `${this.$refs.contentEl.offsetWidth}px`
72
- // 处理长度为1的数据不用走截取逻辑减少计算
73
- if (this.content.length === 1) {
74
- this.restContent = this.content;
75
- this.$refs.contentEl.remove();
76
- this.lastLineHeight = (this.fontSize + 2);
77
- return;
78
- }
79
- this.bsearch(this.content)
80
- this.lastLineHeight = (this.fontSize + 2)
81
- },
82
- methods: {
83
- bsearch (data, pre = 0) {
84
- const len = data.length
85
- const half = Math.floor((len - pre) / 2) + pre
86
- if (len - pre <= 1) {
87
- const restContent = pre === 0 ? this.content.slice(pre) : this.content.slice(pre + 1)
88
- this.preContent = pre === 0 ? '' : data.slice(0, pre + 1)
89
- if (!restContent) {
90
- this.lastLineHeight = 0
91
- this.$emit('update:isOverflow', false)
92
- return false
93
- }
94
- this.restContent = restContent
95
- this.$nextTick(() => {
96
- this.$emit('update:isOverflow', this.$refs.lastLineEl.scrollWidth !== this.$refs.lastLineEl.offsetWidth)
97
- })
98
- return true
99
- }
100
- this.preContent = data.slice(0, half + 1)
101
- this.$nextTick(() => {
102
- const isEqual = this.$refs.contentEl.scrollHeight === this.preHeight
103
- if (isEqual) {
104
- this.alignItems = 'center'
105
- return this.bsearch(data, half)
106
- }
107
- this.alignItems = 'flex-start'
108
- return this.bsearch(data.slice(0, half), pre)
109
- })
110
- return true
111
- },
112
- isShowIconMethod() {
113
- /**
114
- * 1、isShowIcon--是否展示icon; length-- 所有传入数据总数量
115
- * 2、this.overCountTip.index === this.overCountTip.length 当前列表展示个数(最后一个列)
116
- * 3、length > this.overCountTip.length 满足总个数大于当前列表展示个数
117
- **/
118
- const { isShowIcon, length } = this.showIconObj;
119
- return (isShowIcon && this.overCountTip.index === this.overCountTip.length && this.content.length && (length > this.overCountTip.length));
120
- }
121
- }
122
- }
123
- </script>
124
-
125
- <style lang="less">
126
- .ellipsis {
127
- width: 100%;
128
- margin: 5px auto;
129
- &__content {
130
- width: 100%;
131
- overflow: hidden;
132
- display: flex;
133
- }
134
- &__last-line {
135
- width: 100%;
136
- overflow: hidden;
137
- white-space: nowrap;
138
- text-overflow: ellipsis;
139
- }
140
- }
141
- </style>
@@ -1,119 +0,0 @@
1
- <template>
2
- <div class="ellipsis-popover">
3
- <ElPopover
4
- :disabled="showPopover === 'off' || (showPopover !== 'always' && !isOverflow)"
5
- :popper-class="popoverName"
6
- placement="top-start"
7
- trigger="hover"
8
- >
9
- <div class="popover-content">
10
- <slot name="popover">
11
- <div v-for="(item, index) in contentArr" :key="getKey(item, index)">{{ item }}</div>
12
- </slot>
13
- </div>
14
- <div slot="reference">
15
- <div v-for="(item, index) in contentArr" :key="getKey(item, index)">
16
- <MultilineEllipsis
17
- :content="item"
18
- :fontSize="fontSize"
19
- :color="color"
20
- :lineCount="lineCount"
21
- :iconName="iconName"
22
- :showIconObj="{
23
- isShowIcon: showIconObj.isShowIcon,
24
- length: showIconObj.length,
25
- }"
26
- :overCountTip="{
27
- index: index + 1,
28
- length: contentArr.length,
29
- }"
30
- :isOverflow.sync="overflowArr[index]">
31
- </MultilineEllipsis>
32
- </div>
33
- </div>
34
- </ElPopover>
35
- </div>
36
- </template>
37
-
38
- <script>
39
- import MultilineEllipsis from './MultilineEllipsis.vue'
40
-
41
- export default {
42
- name: 'Ellipsis',
43
- components: {
44
- MultilineEllipsis
45
- },
46
- props: {
47
- fontSize: {
48
- type: Number,
49
- default: 12
50
- },
51
- color: {
52
- type: String,
53
- default: '#000000'
54
- },
55
- lineCount: {
56
- type: Number,
57
- default: 1
58
- },
59
- iconName: {
60
- type: String,
61
- default: 'el-icon-arrow-down'
62
- },
63
- overCountTip: {
64
- type: Object
65
- },
66
- showIconObj: {
67
- type: Object,
68
- default: () => {
69
- return {
70
- isShowIcon: false,
71
- length: 0
72
- }
73
- },
74
- },
75
- content: {
76
- type: [String, Array],
77
- default: ''
78
- },
79
- popoverName: String,
80
- showPopover: {
81
- type: String,
82
- default: 'auto' // 可选值 auto, always, off
83
- }
84
- },
85
- data () {
86
- return {
87
- overflowArr: []
88
- }
89
- },
90
- computed: {
91
- contentArr () {
92
- return typeof (this.content) === 'string' ? [this.content] : [...this.content]
93
- },
94
- isOverflow () {
95
- return this.overflowArr.includes(true)
96
- }
97
- },
98
- watch: {
99
- contentArr (val) {
100
- this.overflowArr.length = val.length
101
- }
102
- },
103
- methods: {
104
- getKey (item, index) {
105
- return btoa(escape(`${item}_${index}`))
106
- }
107
- }
108
- }
109
- </script>
110
-
111
- <style lang="less">
112
- .ellipsis-popover {
113
- width: 100%;
114
- }
115
-
116
- .popover-content {
117
- padding: 18px 20px;
118
- }
119
- </style>