webcake-ui-kit 1.2.0 → 1.2.1
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/package.json +8 -2
- package/src/components/checkbox/Checkbox.vue +1 -1
- package/src/components/drawer/Drawer.vue +261 -0
- package/src/components/drawer/drawer.css +162 -0
- package/src/components/dropdown/Dropdown.vue +15 -9
- package/src/components/hover-card/HoverCard.vue +159 -0
- package/src/components/hover-card/hover-card.css +10 -0
- package/src/components/input-counter/InputCounter.vue +250 -0
- package/src/components/input-counter/input-counter.css +209 -0
- package/src/components/menu/Menu.vue +4 -2
- package/src/components/popover/Popover.vue +144 -0
- package/src/components/popover/popover.css +3 -0
- package/src/components/table-v2/ColumnDragHandle.vue +103 -0
- package/src/components/table-v2/Table.vue +299 -0
- package/src/components/table-v2/TableColGroup.vue +55 -0
- package/src/components/table-v2/TableEmpty.vue +10 -0
- package/src/components/table-v2/TableLoading.vue +25 -0
- package/src/components/table-v2/TableResizeObserver.vue +93 -0
- package/src/components/table-v2/TableWrapper.vue +193 -0
- package/src/components/table-v2/body/DragPreview.vue +65 -0
- package/src/components/table-v2/body/MeasureCell.vue +42 -0
- package/src/components/table-v2/body/TableBody.vue +126 -0
- package/src/components/table-v2/body/TableCell.vue +108 -0
- package/src/components/table-v2/body/TableRow.vue +73 -0
- package/src/components/table-v2/composables/useColumns.js +19 -0
- package/src/components/table-v2/composables/useSorter.js +12 -0
- package/src/components/table-v2/composables/useSticky.js +31 -0
- package/src/components/table-v2/constants.js +2 -0
- package/src/components/table-v2/context/createTableContext.js +79 -0
- package/src/components/table-v2/header/TableHeader.vue +15 -0
- package/src/components/table-v2/header/TableHeaderCell.vue +89 -0
- package/src/components/table-v2/header/TableHeaderRow.vue +107 -0
- package/src/components/table-v2/style/table-body.css +0 -0
- package/src/components/table-v2/style/table-header.css +0 -0
- package/src/components/table-v2/style/table-loading.css +19 -0
- package/src/components/table-v2/style/table-wrapper.css +287 -0
- package/src/components/table-v2/style/table.css +5 -0
- package/src/icons/BoxShadow.vue +35 -0
- package/src/icons/Carousel.vue +34 -0
- package/src/icons/CloudSync2.vue +42 -0
- package/src/icons/CornerBottomLeft.vue +26 -0
- package/src/icons/CornerBottomRight.vue +26 -0
- package/src/icons/CornerTopLeft.vue +26 -0
- package/src/icons/CornerTopRight.vue +26 -0
- package/src/icons/DistanceRight.vue +30 -0
- package/src/icons/DistanceTop.vue +30 -0
- package/src/icons/DropShadow.vue +35 -0
- package/src/icons/Fire.vue +26 -0
- package/src/icons/GlobeAccess.vue +32 -0
- package/src/icons/InnerShadow.vue +33 -0
- package/src/icons/Livestream.vue +54 -0
- package/src/icons/PaddingBottom.vue +30 -0
- package/src/icons/PaddingLeft.vue +30 -0
- package/src/icons/PaddingRight.vue +30 -0
- package/src/icons/PaddingTop.vue +30 -0
- package/src/icons/SkewHeight.vue +32 -0
- package/src/icons/SkewWidth.vue +32 -0
- package/src/icons/SquareDashedBottomSolid.vue +26 -0
- package/src/icons/SquareDashedLeftSolid.vue +26 -0
- package/src/icons/SquareDashedRightSolid.vue +26 -0
- package/src/icons/StrokeLine.vue +23 -0
- package/src/icons/Topline.vue +26 -0
- package/src/icons/index.js +25 -0
- package/src/index.js +5 -0
- package/src/styles/.omc/state/agent-replay-645326b7-372b-463d-ab45-0adaafe31a51.jsonl +2 -0
- package/src/styles/.omc/state/subagent-tracking.json +7 -0
- package/src/utils/common.js +34 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export function createTableContext() {
|
|
2
|
+
return {
|
|
3
|
+
columns: {
|
|
4
|
+
flat: [],
|
|
5
|
+
leaf: []
|
|
6
|
+
},
|
|
7
|
+
|
|
8
|
+
rows: {
|
|
9
|
+
customRow: () => {},
|
|
10
|
+
customHeaderRow: () => {}
|
|
11
|
+
},
|
|
12
|
+
|
|
13
|
+
data: {
|
|
14
|
+
source: [],
|
|
15
|
+
display: [],
|
|
16
|
+
loading: false,
|
|
17
|
+
emptyText: ''
|
|
18
|
+
},
|
|
19
|
+
|
|
20
|
+
layout: {
|
|
21
|
+
bordered: false,
|
|
22
|
+
size: 'md',
|
|
23
|
+
tableLayout: 'auto',
|
|
24
|
+
scroll: null,
|
|
25
|
+
rowKey: 'key',
|
|
26
|
+
scrollBarWidth: 0,
|
|
27
|
+
containerWidth: 0,
|
|
28
|
+
columnWidths: new Map(),
|
|
29
|
+
rowHeight: 50,
|
|
30
|
+
headerHeight: 36
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
sort: {
|
|
34
|
+
columnKey: null,
|
|
35
|
+
order: null
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
selection: {
|
|
39
|
+
selectedRowKeys: [],
|
|
40
|
+
hideSelectAll: false,
|
|
41
|
+
columnWidth: 0,
|
|
42
|
+
type: '',
|
|
43
|
+
checkAll: false,
|
|
44
|
+
onChange: (selectedRowKeys, selectedRows) => {},
|
|
45
|
+
onSelect: (ecord, selected, selectedRows, nativeEvent) => {},
|
|
46
|
+
onSelectAll: (selected, selectedRows, changeRows) => {},
|
|
47
|
+
onSelectNone: () => {}
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
draggable: {
|
|
51
|
+
enabled: false,
|
|
52
|
+
enableAnimationFlip: false,
|
|
53
|
+
columnWidth: 0,
|
|
54
|
+
handleReorder: (fromIndex, toIndex, dataSource) => {},
|
|
55
|
+
draggingRecord: null,
|
|
56
|
+
getPreviewEl: null
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
sticky: {
|
|
60
|
+
leftOffsets: {},
|
|
61
|
+
rightOffsets: {}
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
virtual: {
|
|
65
|
+
enabled: false,
|
|
66
|
+
startIndex: 0,
|
|
67
|
+
endIndex: 0,
|
|
68
|
+
offsetY: 0
|
|
69
|
+
},
|
|
70
|
+
|
|
71
|
+
actions: {
|
|
72
|
+
sort: null,
|
|
73
|
+
select: null,
|
|
74
|
+
resize: null,
|
|
75
|
+
expand: null,
|
|
76
|
+
reorder: null
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<thead class="ui-table-v2__header">
|
|
3
|
+
<TableHeaderRow />
|
|
4
|
+
</thead>
|
|
5
|
+
</template>
|
|
6
|
+
|
|
7
|
+
<script>
|
|
8
|
+
import TableHeaderRow from './TableHeaderRow.vue'
|
|
9
|
+
|
|
10
|
+
export default {
|
|
11
|
+
name: 'TableV2Header',
|
|
12
|
+
components: { TableHeaderRow },
|
|
13
|
+
inject: ['tableContext']
|
|
14
|
+
}
|
|
15
|
+
</script>
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<th
|
|
3
|
+
:class="[
|
|
4
|
+
'ui-table-v2__header-cell',
|
|
5
|
+
isSelectionCol && 'ui-table-v2__header-cell--selection',
|
|
6
|
+
isLastItem && 'ui-table-v2__header-cell--last',
|
|
7
|
+
isSelectionCol && !isHideSelectAll && 'ui-table-v2__header-cell--selection',
|
|
8
|
+
column.fixed && `ui-table-v2__cell--fixed-${column.fixed}`,
|
|
9
|
+
isLastFixedLeft && 'ui-table-v2__cell--fixed-left__last',
|
|
10
|
+
isFirstFixedRight && 'ui-table-v2__cell--fixed-right__first'
|
|
11
|
+
]"
|
|
12
|
+
:style="cellStyle"
|
|
13
|
+
>
|
|
14
|
+
<div v-if="isSelectionCol && !isHideSelectAll" class="wrapper-option">
|
|
15
|
+
<Checkbox :checked="tableContext.selection.checkAll" @change="onCheckAll" />
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<span v-else :class="[column.ellipsis && 'ui-table-v2__header-cell--ellipsis']">{{ column.title }}</span>
|
|
19
|
+
|
|
20
|
+
<slot name="drag-handle"></slot>
|
|
21
|
+
</th>
|
|
22
|
+
</template>
|
|
23
|
+
|
|
24
|
+
<script>
|
|
25
|
+
import Checkbox from '../../checkbox/Checkbox.vue'
|
|
26
|
+
import { SELECTION_COLUMN } from '../constants.js'
|
|
27
|
+
import { toCssSize } from '../../../utils/common.js'
|
|
28
|
+
|
|
29
|
+
export default {
|
|
30
|
+
name: 'TableV2HeaderCell',
|
|
31
|
+
components: { Checkbox },
|
|
32
|
+
inject: ['tableContext'],
|
|
33
|
+
props: {
|
|
34
|
+
column: { type: Object, required: true },
|
|
35
|
+
isLastItem: { type: Boolean, default: false },
|
|
36
|
+
offset: { type: [Number, String], default: 0 }
|
|
37
|
+
},
|
|
38
|
+
computed: {
|
|
39
|
+
isHideSelectAll() {
|
|
40
|
+
return this.tableContext.selection.hideSelectAll
|
|
41
|
+
},
|
|
42
|
+
isSelectionCol: function () {
|
|
43
|
+
return this.column.type === SELECTION_COLUMN
|
|
44
|
+
},
|
|
45
|
+
isLastFixedLeft: function () {
|
|
46
|
+
if (this.column.fixed !== 'left') return false
|
|
47
|
+
const cols = this.tableContext.columns.flat
|
|
48
|
+
let lastKey = null
|
|
49
|
+
for (let i = 0; i < cols.length; i++) {
|
|
50
|
+
if (cols[i].fixed === 'left') lastKey = cols[i].key
|
|
51
|
+
}
|
|
52
|
+
return lastKey === this.column.key
|
|
53
|
+
},
|
|
54
|
+
isFirstFixedRight: function () {
|
|
55
|
+
if (this.column.fixed !== 'right') return false
|
|
56
|
+
const cols = this.tableContext.columns.flat
|
|
57
|
+
for (let i = 0; i < cols.length; i++) {
|
|
58
|
+
if (cols[i].fixed === 'right') return cols[i].key === this.column.key
|
|
59
|
+
}
|
|
60
|
+
return false
|
|
61
|
+
},
|
|
62
|
+
cellStyle: function () {
|
|
63
|
+
const res = { textAlign: this.column.align }
|
|
64
|
+
if (this.column.fixed) {
|
|
65
|
+
if (this.column.fixed === 'left') {
|
|
66
|
+
res.left = toCssSize(this.offset)
|
|
67
|
+
} else if (this.column.fixed === 'right') {
|
|
68
|
+
res.right = toCssSize(this.offset)
|
|
69
|
+
}
|
|
70
|
+
res.position = 'sticky'
|
|
71
|
+
}
|
|
72
|
+
return res
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
methods: {
|
|
76
|
+
onCheckAll: function (checked) {
|
|
77
|
+
const key = this.tableContext.layout.rowKey
|
|
78
|
+
const allKeys = this.tableContext.data.display.map(function (r) {
|
|
79
|
+
return r[key]
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
this.tableContext.actions.select(checked ? allKeys : [], {
|
|
83
|
+
type: checked ? 'all' : 'none',
|
|
84
|
+
selected: checked
|
|
85
|
+
})
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
</script>
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<tr
|
|
3
|
+
v-bind="customAttrs"
|
|
4
|
+
v-on="customListeners"
|
|
5
|
+
:class="['ui-table-v2__header-row', customAttrs.class]"
|
|
6
|
+
:style="rowStyle"
|
|
7
|
+
>
|
|
8
|
+
<TableHeaderCell
|
|
9
|
+
v-for="(column, index) in tableContext.columns.flat"
|
|
10
|
+
:key="column.key"
|
|
11
|
+
:column="column"
|
|
12
|
+
:is-last-item="index === tableContext.columns.flat.length - 1"
|
|
13
|
+
:offset="column.fixed === 'left' ? leftStickyOffsets[column.key] : rightStickyOffsets[column.key]"
|
|
14
|
+
>
|
|
15
|
+
<template v-if="column.resizable && !isEmpty" #drag-handle>
|
|
16
|
+
<ColumnDragHandle
|
|
17
|
+
:column="column"
|
|
18
|
+
:width="columnWidths.get(column.key)"
|
|
19
|
+
:min-width="column.minWidth"
|
|
20
|
+
:max-width="column.maxWidth"
|
|
21
|
+
@resize="hanldeResize"
|
|
22
|
+
/>
|
|
23
|
+
</template>
|
|
24
|
+
</TableHeaderCell>
|
|
25
|
+
<th v-if="hasScrollBar" class="ui-table-v2__scrollbar-cell" aria-hidden="true" :style="styleFakeScrollbar" />
|
|
26
|
+
</tr>
|
|
27
|
+
</template>
|
|
28
|
+
|
|
29
|
+
<script>
|
|
30
|
+
import TableHeaderCell from './TableHeaderCell.vue'
|
|
31
|
+
import { splitProps } from '../../../utils/common.js'
|
|
32
|
+
import ColumnDragHandle from '../ColumnDragHandle.vue'
|
|
33
|
+
|
|
34
|
+
export default {
|
|
35
|
+
name: 'TableV2HeaderRow',
|
|
36
|
+
components: {
|
|
37
|
+
TableHeaderCell,
|
|
38
|
+
ColumnDragHandle
|
|
39
|
+
},
|
|
40
|
+
inject: ['tableContext'],
|
|
41
|
+
|
|
42
|
+
computed: {
|
|
43
|
+
rowStyle() {
|
|
44
|
+
return { height: this.tableContext.layout.headerHeight + 'px' }
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
hasScrollBar: function () {
|
|
48
|
+
const w = parseFloat(this.tableContext.layout.scrollBarWidth)
|
|
49
|
+
return !!w
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
columnWidths() {
|
|
53
|
+
return this.tableContext.layout.columnWidths
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
leftStickyOffsets() {
|
|
57
|
+
return this.tableContext.sticky.leftOffsets
|
|
58
|
+
},
|
|
59
|
+
|
|
60
|
+
rightStickyOffsets() {
|
|
61
|
+
const scrollBarWidth = parseFloat(this.tableContext.layout.scrollBarWidth) || 0
|
|
62
|
+
const rightOffsets = Object.fromEntries(
|
|
63
|
+
Object.entries(this.tableContext.sticky.rightOffsets).map(([key, value]) => [key, value + scrollBarWidth])
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
return rightOffsets
|
|
67
|
+
},
|
|
68
|
+
|
|
69
|
+
hasFixedRight: function () {
|
|
70
|
+
return Object.keys(this.rightStickyOffsets).length > 0
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
styleFakeScrollbar: function () {
|
|
74
|
+
if (this.hasFixedRight) {
|
|
75
|
+
return {
|
|
76
|
+
position: 'sticky',
|
|
77
|
+
right: '0'
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return {}
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
customProps: function () {
|
|
84
|
+
var fn = this.tableContext.rows.customHeaderRow
|
|
85
|
+
return typeof fn === 'function' ? fn(this.tableContext.columns.flat, 0) || {} : {}
|
|
86
|
+
},
|
|
87
|
+
|
|
88
|
+
customAttrs: function () {
|
|
89
|
+
return splitProps(this.customProps).attrs
|
|
90
|
+
},
|
|
91
|
+
|
|
92
|
+
customListeners: function () {
|
|
93
|
+
return splitProps(this.customProps).listeners
|
|
94
|
+
},
|
|
95
|
+
|
|
96
|
+
isEmpty: function () {
|
|
97
|
+
return this.tableContext.data.display.length === 0
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
|
|
101
|
+
methods: {
|
|
102
|
+
hanldeResize(width, column) {
|
|
103
|
+
this.tableContext.actions.resize(column.key, width)
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
</script>
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
.ui-table-v2__loading-wrap {
|
|
2
|
+
position: relative;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.ui-table-v2__loading-overlay {
|
|
6
|
+
position: absolute;
|
|
7
|
+
inset: 0;
|
|
8
|
+
z-index: 10;
|
|
9
|
+
display: flex;
|
|
10
|
+
align-items: center;
|
|
11
|
+
justify-content: center;
|
|
12
|
+
background: rgba(255, 255, 255, 0.6);
|
|
13
|
+
border-radius: inherit;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.ui-table-v2__loading-wrap--loading > :not(.ui-table-v2__loading-overlay) {
|
|
17
|
+
pointer-events: none;
|
|
18
|
+
user-select: none;
|
|
19
|
+
}
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
.ui-table-v2__wrapper {
|
|
2
|
+
overflow: hidden;
|
|
3
|
+
border-radius: var(--rounded-2xl);
|
|
4
|
+
border-inline-end: 1px solid var(--border-primary);
|
|
5
|
+
border-inline-start: 1px solid var(--border-primary);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.ui-table-v2__wrapper table {
|
|
9
|
+
width: 100%;
|
|
10
|
+
text-align: start;
|
|
11
|
+
border-radius: 8px 8px 0 0;
|
|
12
|
+
border-collapse: separate;
|
|
13
|
+
border-spacing: 0;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.ui-table-v2__wrapper .ui-table-v2__content {
|
|
17
|
+
border-top: 1px solid var(--border-primary);
|
|
18
|
+
border-bottom: 1px solid var(--border-primary);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.ui-table-v2__wrapper .ui-table-v2__header-hold {
|
|
22
|
+
border-top: 1px solid var(--border-primary);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.ui-table-v2__wrapper .ui-table-v2__body-hold {
|
|
26
|
+
border-bottom: 1px solid var(--border-primary);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* Common betwenn Header and Body */
|
|
30
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__header > tr > th,
|
|
31
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__body > tr > td {
|
|
32
|
+
color: var(--primary-fg);
|
|
33
|
+
font-size: var(--paragraph-small-font-size);
|
|
34
|
+
line-height: var(--paragraph-small-line-height);
|
|
35
|
+
letter-spacing: var(--paragraph-small-letter-spacing);
|
|
36
|
+
border-bottom: 1px solid var(--border-primary);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__body > tr:last-child td {
|
|
40
|
+
border-bottom: none;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__table--bordered .ui-table-v2__header > tr > th:not(:last-child),
|
|
44
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__table--bordered .ui-table-v2__body > tr > td:not(:last-child) {
|
|
45
|
+
border-inline-end: 1px solid var(--border-primary);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__table--bordered .ui-table-v2__header .ui-table-v2__header-cell--last {
|
|
49
|
+
border-inline-end: 1px solid transparent !important;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__header-cell--ellipsis,
|
|
53
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__cell--ellipsis {
|
|
54
|
+
overflow: hidden;
|
|
55
|
+
white-space: nowrap;
|
|
56
|
+
text-overflow: ellipsis;
|
|
57
|
+
word-break: keep-all;
|
|
58
|
+
min-width: 0;
|
|
59
|
+
display: block;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.ui-table-v2__wrapper ::v-deep .wrapper-option {
|
|
63
|
+
height: 100%;
|
|
64
|
+
width: 100%;
|
|
65
|
+
display: flex;
|
|
66
|
+
justify-content: center;
|
|
67
|
+
align-items: center;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.ui-table-v2__wrapper ::v-deep .wrapper-option .ui-checkbox {
|
|
71
|
+
margin: auto;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.ui-table-v2__wrapper ::v-deep .wrapper-option .drag-handle {
|
|
75
|
+
cursor: grab;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.ui-table-v2__wrapper--ping-left ::v-deep .ui-table-v2__cell--fixed-left__last {
|
|
79
|
+
box-shadow: var(--shadow-fixed-column-left);
|
|
80
|
+
border-inline-end: none !important;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.ui-table-v2__wrapper--ping-right ::v-deep .ui-table-v2__cell--fixed-right__first {
|
|
84
|
+
box-shadow: var(--shadow-fixed-column-right);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__cell--fixed-left,
|
|
88
|
+
.ui-table-v2__wrapper::v-deep .ui-table-v2__cell--fixed-right {
|
|
89
|
+
background: var(--primary-bg);
|
|
90
|
+
z-index: 2;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__cell--fixed-left__last::after {
|
|
94
|
+
position: absolute;
|
|
95
|
+
top: 0;
|
|
96
|
+
right: 0;
|
|
97
|
+
bottom: -1px;
|
|
98
|
+
width: 30px;
|
|
99
|
+
transform: translateX(100%);
|
|
100
|
+
transition: box-shadow 0.3s;
|
|
101
|
+
content: '';
|
|
102
|
+
pointer-events: none;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__cell--fixed-right__first::before {
|
|
106
|
+
position: absolute;
|
|
107
|
+
top: 0;
|
|
108
|
+
bottom: -1px;
|
|
109
|
+
left: 0;
|
|
110
|
+
width: 30px;
|
|
111
|
+
transform: translateX(-100%);
|
|
112
|
+
transition: box-shadow 0.3s;
|
|
113
|
+
content: '';
|
|
114
|
+
pointer-events: none;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__cell-resize-handle {
|
|
118
|
+
position: absolute;
|
|
119
|
+
top: 0;
|
|
120
|
+
height: 100% !important;
|
|
121
|
+
bottom: 0;
|
|
122
|
+
left: auto;
|
|
123
|
+
right: -8px;
|
|
124
|
+
cursor: col-resize;
|
|
125
|
+
touch-action: none;
|
|
126
|
+
-webkit-user-select: none;
|
|
127
|
+
-moz-user-select: none;
|
|
128
|
+
user-select: none;
|
|
129
|
+
width: 16px;
|
|
130
|
+
z-index: 1;
|
|
131
|
+
display: flex;
|
|
132
|
+
align-items: center;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__cell-resize-handle .ui-table-v2__cell-resize-line {
|
|
136
|
+
display: block;
|
|
137
|
+
width: 2px;
|
|
138
|
+
margin-left: 7px;
|
|
139
|
+
height: 1.6em;
|
|
140
|
+
background: var(--border-focus);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__cell-resize-handle.reversed {
|
|
144
|
+
right: auto;
|
|
145
|
+
left: -8px;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__cell-resize-handle:hover .ui-table-v2__cell-resize-line,
|
|
149
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__cell-resize-handle.dragging .ui-table-v2__cell-resize-line {
|
|
150
|
+
opacity: 1;
|
|
151
|
+
background-color: #1677ff;
|
|
152
|
+
height: 100% !important;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/* Header */
|
|
156
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__header > tr > th {
|
|
157
|
+
background: var(--secondary-bg);
|
|
158
|
+
padding: var(--spacing-xs);
|
|
159
|
+
font-weight: 500;
|
|
160
|
+
text-align: start;
|
|
161
|
+
position: relative;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/* Body */
|
|
165
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__body .ui-table-v2__row {
|
|
166
|
+
height: 50px;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.ui-table-v2__wrapper ::v-deep .drag-handle {
|
|
170
|
+
cursor: grab;
|
|
171
|
+
display: flex;
|
|
172
|
+
align-items: center;
|
|
173
|
+
color: var(--secondary-fg, #999);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.ui-table-v2__wrapper ::v-deep .drag-handle:active {
|
|
177
|
+
cursor: grabbing;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.ui-table-v2__wrapper ::v-deep .sortable-chosen > td {
|
|
181
|
+
background: var(--accent-1);
|
|
182
|
+
opacity: 0.8;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__body > tr > td {
|
|
186
|
+
padding: var(--spacing-xs);
|
|
187
|
+
font-weight: 400;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__body > .ui-table-v2__row:hover > td {
|
|
191
|
+
background: var(--accent-1);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__body .ui-table-v2__row--selected > td {
|
|
195
|
+
background: var(--accent-1);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__drag-preview .ui-table-v2__body > tr > td {
|
|
199
|
+
background: var(--primary-bg);
|
|
200
|
+
position: unset;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/* Empty */
|
|
204
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__body > tr > td:has(.ui-table-v2__row-empty):hover {
|
|
205
|
+
background: transparent;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__row-empty {
|
|
209
|
+
min-height: 300px;
|
|
210
|
+
display: flex;
|
|
211
|
+
flex-direction: column;
|
|
212
|
+
align-items: center;
|
|
213
|
+
justify-content: center;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__row-empty .wrapper-img {
|
|
217
|
+
width: 120px;
|
|
218
|
+
height: 120px;
|
|
219
|
+
user-select: none;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.ui-table-v2__wrapper ::v-deep .ui-table-v2__row-empty .wrapper-img img {
|
|
223
|
+
width: 100%;
|
|
224
|
+
height: 100%;
|
|
225
|
+
object-fit: cover;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/* Scrollbar */
|
|
229
|
+
.ui-table-v2__body-hold::-webkit-scrollbar {
|
|
230
|
+
width: 10px;
|
|
231
|
+
height: 10px;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.ui-table-v2__body-hold::-webkit-scrollbar-track:vertical {
|
|
235
|
+
border-left: 1px solid var(--border-primary);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.ui-table-v2__body-hold::-webkit-scrollbar-track:horizontal {
|
|
239
|
+
border-top: 1px solid var(--border-primary);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.ui-table-v2__body-hold::-webkit-scrollbar-thumb {
|
|
243
|
+
background: var(--border-primary);
|
|
244
|
+
border-radius: 3px;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
.ui-table-v2__body-hold::-webkit-scrollbar-thumb:vertical {
|
|
248
|
+
border-left: 2px solid transparent;
|
|
249
|
+
border-right: 1px solid transparent;
|
|
250
|
+
background-clip: content-box;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
.ui-table-v2__body-hold::-webkit-scrollbar-thumb:horizontal {
|
|
254
|
+
border-top: 2px solid transparent;
|
|
255
|
+
border-bottom: 1px solid transparent;
|
|
256
|
+
background-clip: content-box;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
.ui-table-v2__content::-webkit-scrollbar {
|
|
260
|
+
width: 10px;
|
|
261
|
+
height: 10px;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
.ui-table-v2__content::-webkit-scrollbar-track:vertical {
|
|
265
|
+
border-left: 1px solid var(--border-primary);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
.ui-table-v2__content::-webkit-scrollbar-track:horizontal {
|
|
269
|
+
border-top: 1px solid var(--border-primary);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.ui-table-v2__content::-webkit-scrollbar-thumb {
|
|
273
|
+
background: var(--border-primary);
|
|
274
|
+
border-radius: 3px;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
.ui-table-v2__content::-webkit-scrollbar-thumb:vertical {
|
|
278
|
+
border-left: 2px solid transparent;
|
|
279
|
+
border-right: 1px solid transparent;
|
|
280
|
+
background-clip: content-box;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
.ui-table-v2__content::-webkit-scrollbar-thumb:horizontal {
|
|
284
|
+
border-top: 2px solid transparent;
|
|
285
|
+
border-bottom: 1px solid transparent;
|
|
286
|
+
background-clip: content-box;
|
|
287
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<BaseIcon v-bind="$attrs" v-on="listeners">
|
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
|
|
4
|
+
<path
|
|
5
|
+
fill-rule="evenodd"
|
|
6
|
+
clip-rule="evenodd"
|
|
7
|
+
d="M20.8188 19.0986C20.936 18.7828 21 18.4411 21 18.0845V5.91549C21 4.30531 19.6947 3 18.0845 3H5.91549C4.30531 3 3 4.30531 3 5.91549V18.0845C3 18.4411 3.06402 18.7828 3.1812 19.0986C3.59313 20.2088 4.66192 21 5.91549 21H18.0845C19.3381 21 20.4069 20.2088 20.8188 19.0986ZM19.2254 5.91549C19.2254 5.28542 18.7146 4.77465 18.0845 4.77465H5.91549C5.28542 4.77465 4.77465 5.28542 4.77465 5.91549V17.4288V18.0845C4.77465 18.7146 5.28542 19.2254 5.91549 19.2254H18.0845C18.7146 19.2254 19.2254 18.7146 19.2254 18.0845V17.4288V5.91549Z"
|
|
8
|
+
fill="currentColor"
|
|
9
|
+
/>
|
|
10
|
+
<path
|
|
11
|
+
opacity="0.3"
|
|
12
|
+
fill-rule="evenodd"
|
|
13
|
+
clip-rule="evenodd"
|
|
14
|
+
d="M5 20.8534V21C5 22.1046 5.89543 23 7 23H21C22.1046 23 23 22.1046 23 21V6C23 4.89543 22.1046 4 21 4H20.2825C20.7294 4.51231 21 5.1823 21 5.9155V18.0845C21 18.4411 20.936 18.7828 20.8188 19.0986C20.4069 20.2088 19.3381 21 18.0845 21H5.9155C5.59569 21 5.28792 20.9485 5 20.8534Z"
|
|
15
|
+
fill="currentColor"
|
|
16
|
+
/>
|
|
17
|
+
</svg>
|
|
18
|
+
</BaseIcon>
|
|
19
|
+
</template>
|
|
20
|
+
|
|
21
|
+
<script>
|
|
22
|
+
import BaseIcon from './BaseIcon.vue'
|
|
23
|
+
|
|
24
|
+
export default {
|
|
25
|
+
name: 'BoxShadow',
|
|
26
|
+
components: { BaseIcon },
|
|
27
|
+
inheritAttrs: false,
|
|
28
|
+
emits: [],
|
|
29
|
+
computed: {
|
|
30
|
+
listeners() {
|
|
31
|
+
return this.$listeners || {}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
</script>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<BaseIcon v-bind="$attrs" v-on="listeners">
|
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
|
|
4
|
+
<path
|
|
5
|
+
d="M1.8045 6.90671V17.053C1.8047 18.3081 2.82214 19.3255 4.07721 19.3257H6.42169C6.78413 19.3257 7.07794 19.0318 7.07794 18.6694C7.07794 18.307 6.78413 18.0132 6.42169 18.0132H4.07721C3.547 18.013 3.1172 17.5832 3.117 17.053V6.90671C3.11718 6.37646 3.54698 5.9467 4.07721 5.94651H6.50299C6.86533 5.94641 7.15922 5.65261 7.15924 5.29026C7.15924 4.92788 6.86534 4.63411 6.50299 4.63401H4.07721C2.82213 4.6342 1.80468 5.65156 1.8045 6.90671Z"
|
|
6
|
+
fill="currentColor"
|
|
7
|
+
/>
|
|
8
|
+
<path
|
|
9
|
+
d="M20.8833 6.90667V17.0529C20.8831 17.5833 20.4527 18.0131 19.9224 18.0131H17.5779C17.2155 18.0132 16.9216 18.307 16.9216 18.6694C16.9216 19.0318 17.2155 19.3255 17.5779 19.3256H19.9224C21.1776 19.3256 22.1956 18.3082 22.1958 17.0529V6.90667C22.1956 5.6514 21.1776 4.63397 19.9224 4.63397H17.5376C17.1752 4.63397 16.8814 4.92778 16.8814 5.29022C16.8814 5.65263 17.1752 5.94647 17.5376 5.94647H19.9224C20.4528 5.94647 20.8831 6.3763 20.8833 6.90667Z"
|
|
10
|
+
fill="currentColor"
|
|
11
|
+
/>
|
|
12
|
+
<path
|
|
13
|
+
d="M16.8409 19.9228C16.8407 20.4531 16.4104 20.883 15.88 20.883H8.11926C7.58905 20.8828 7.15925 20.453 7.15906 19.9228V4.07758C7.15906 3.54718 7.58893 3.11757 8.11926 3.11737H15.88C16.4105 3.11737 16.8409 3.54706 16.8409 4.07758V19.9228ZM18.1534 4.07758C18.1534 2.82216 17.1354 1.80487 15.88 1.80487H8.11926C6.86407 1.80507 5.84656 2.82228 5.84656 4.07758V19.9228C5.84675 21.1779 6.8642 22.1953 8.11926 22.1955H15.88C17.1352 22.1955 18.1532 21.178 18.1534 19.9228V4.07758Z"
|
|
14
|
+
fill="currentColor"
|
|
15
|
+
/>
|
|
16
|
+
</svg>
|
|
17
|
+
</BaseIcon>
|
|
18
|
+
</template>
|
|
19
|
+
|
|
20
|
+
<script>
|
|
21
|
+
import BaseIcon from './BaseIcon.vue'
|
|
22
|
+
|
|
23
|
+
export default {
|
|
24
|
+
name: 'Carousel',
|
|
25
|
+
components: { BaseIcon },
|
|
26
|
+
inheritAttrs: false,
|
|
27
|
+
emits: [],
|
|
28
|
+
computed: {
|
|
29
|
+
listeners() {
|
|
30
|
+
return this.$listeners || {}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
</script>
|