zartui 3.0.7 → 3.0.8

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 (85) hide show
  1. package/es/calendar/Calendar.d.ts +23 -33
  2. package/es/calendar/Calendar.mjs +124 -31
  3. package/es/calendar/CalendarDay.mjs +1 -1
  4. package/es/calendar/CalendarHeader.d.ts +15 -1
  5. package/es/calendar/CalendarHeader.mjs +106 -4
  6. package/es/calendar/CalendarMonth.d.ts +23 -24
  7. package/es/calendar/CalendarMonth.mjs +49 -8
  8. package/es/calendar/index.css +1 -1
  9. package/es/calendar/index.d.ts +15 -22
  10. package/es/calendar/types.d.ts +3 -1
  11. package/es/calendar/utils.d.ts +4 -1
  12. package/es/calendar/utils.mjs +23 -3
  13. package/es/cascader/Cascader.mjs +1 -1
  14. package/es/dialog/Dialog.d.ts +4 -0
  15. package/es/dialog/Dialog.mjs +24 -9
  16. package/es/dialog/index.css +1 -1
  17. package/es/dialog/index.d.ts +3 -0
  18. package/es/dialog/types.d.ts +1 -0
  19. package/es/field/Field.d.ts +3 -0
  20. package/es/field/Field.mjs +2 -1
  21. package/es/field/index.d.ts +2 -0
  22. package/es/icon/config.mjs +2 -1
  23. package/es/icon/index.css +1 -1
  24. package/es/overlay/index.d.ts +1 -1
  25. package/es/popover/Popover.mjs +14 -6
  26. package/es/swipe-cell/index.d.ts +1 -1
  27. package/es/table/Table.d.ts +8 -3
  28. package/es/table/Table.mjs +122 -31
  29. package/es/table/index.css +1 -1
  30. package/es/table/index.d.ts +4 -2
  31. package/es/table/style/index.mjs +2 -0
  32. package/es/table/types.d.ts +5 -0
  33. package/es/table/types.mjs +8 -0
  34. package/es/tag/Tag.d.ts +3 -0
  35. package/es/tag/Tag.mjs +24 -16
  36. package/es/tag/index.css +1 -1
  37. package/es/tag/index.d.ts +2 -0
  38. package/es/tag/style/index.mjs +1 -0
  39. package/es/uploader/UploaderPreviewItem.d.ts +1 -1
  40. package/lib/calendar/Calendar.d.ts +23 -33
  41. package/lib/calendar/Calendar.js +123 -30
  42. package/lib/calendar/CalendarDay.js +1 -1
  43. package/lib/calendar/CalendarHeader.d.ts +15 -1
  44. package/lib/calendar/CalendarHeader.js +106 -4
  45. package/lib/calendar/CalendarMonth.d.ts +23 -24
  46. package/lib/calendar/CalendarMonth.js +48 -7
  47. package/lib/calendar/index.css +1 -1
  48. package/lib/calendar/index.d.ts +15 -22
  49. package/lib/calendar/types.d.ts +3 -1
  50. package/lib/calendar/utils.d.ts +4 -1
  51. package/lib/calendar/utils.js +23 -3
  52. package/lib/cascader/Cascader.js +1 -1
  53. package/lib/dialog/Dialog.d.ts +4 -0
  54. package/lib/dialog/Dialog.js +24 -9
  55. package/lib/dialog/index.css +1 -1
  56. package/lib/dialog/index.d.ts +3 -0
  57. package/lib/dialog/types.d.ts +1 -0
  58. package/lib/field/Field.d.ts +3 -0
  59. package/lib/field/Field.js +2 -1
  60. package/lib/field/index.d.ts +2 -0
  61. package/lib/icon/config.js +2 -1
  62. package/lib/icon/index.css +1 -1
  63. package/lib/index.css +1 -1
  64. package/lib/overlay/index.d.ts +1 -1
  65. package/lib/popover/Popover.js +14 -6
  66. package/lib/swipe-cell/index.d.ts +1 -1
  67. package/lib/table/Table.d.ts +8 -3
  68. package/lib/table/Table.js +122 -31
  69. package/lib/table/index.css +1 -1
  70. package/lib/table/index.d.ts +4 -2
  71. package/lib/table/style/index.js +2 -0
  72. package/lib/table/types.d.ts +5 -0
  73. package/lib/table/types.js +27 -0
  74. package/lib/tag/Tag.d.ts +3 -0
  75. package/lib/tag/Tag.js +34 -16
  76. package/lib/tag/index.css +1 -1
  77. package/lib/tag/index.d.ts +2 -0
  78. package/lib/tag/style/index.js +1 -0
  79. package/lib/uploader/UploaderPreviewItem.d.ts +1 -1
  80. package/lib/web-types.json +1 -1
  81. package/lib/zartui.cjs.js +487 -109
  82. package/lib/zartui.es.js +487 -109
  83. package/lib/zartui.js +487 -109
  84. package/lib/zartui.min.js +1 -1
  85. package/package.json +7 -7
@@ -35,6 +35,6 @@ export default Overlay;
35
35
  export type { OverlayProps } from './Overlay';
36
36
  declare module 'vue' {
37
37
  interface GlobalComponents {
38
- VanOverlay: typeof Overlay;
38
+ ZtOverlay: typeof Overlay;
39
39
  }
40
40
  }
@@ -196,12 +196,14 @@ var stdin_default = (0, import_vue2.defineComponent)({
196
196
  return __async(this, null, function* () {
197
197
  var _a;
198
198
  if (wrapperRef.value && popupRef.value && arrowRef.value) {
199
+ const popoverEl = popupRef.value;
200
+ const wrapperEl = wrapperRef.value;
199
201
  const {
200
202
  x,
201
203
  y,
202
204
  placement: realPlacement,
203
205
  middlewareData
204
- } = yield (0, import_vue3.computePosition)(wrapperRef.value, popupRef.value, {
206
+ } = yield (0, import_vue3.computePosition)(wrapperEl, popoverEl, {
205
207
  placement: props.placement,
206
208
  middleware: [(0, import_vue3.offset)(8), (0, import_vue3.shift)({
207
209
  padding: 4,
@@ -212,11 +214,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
212
214
  padding: 6
213
215
  })]
214
216
  });
215
- Object.assign(popupRef.value.style, {
216
- left: `${x}px`,
217
- top: `${y}px`
218
- });
219
- popupRef.value.setAttribute("data-popper-placement", realPlacement);
217
+ let popupTop = y;
220
218
  const side = realPlacement.split("-")[0];
221
219
  const arrowSide = {
222
220
  top: "bottom",
@@ -224,6 +222,16 @@ var stdin_default = (0, import_vue2.defineComponent)({
224
222
  bottom: "top",
225
223
  left: "right"
226
224
  }[side];
225
+ if (y < 0) {
226
+ popupTop = 0;
227
+ } else if (y > 0 && y + popoverEl.offsetHeight > document.body.clientHeight) {
228
+ popupTop = document.body.clientHeight - popoverEl.offsetHeight;
229
+ }
230
+ Object.assign(popupRef.value.style, {
231
+ left: `${x}px`,
232
+ top: `${popupTop}px`
233
+ });
234
+ popupRef.value.setAttribute("data-popper-placement", realPlacement);
227
235
  const {
228
236
  x: arrowX,
229
237
  y: arrowY
@@ -34,6 +34,6 @@ export type { SwipeCellProps };
34
34
  export type { SwipeCellSide, SwipeCellPosition, SwipeCellInstance, } from './types';
35
35
  declare module 'vue' {
36
36
  interface GlobalComponents {
37
- VanSwipeCell: typeof SwipeCell;
37
+ ZtSwipeCell: typeof SwipeCell;
38
38
  }
39
39
  }
@@ -1,5 +1,6 @@
1
1
  import { CSSProperties } from 'vue';
2
2
  import type { ExtractPropTypes } from 'vue';
3
+ import { SortOrderType } from './types';
3
4
  export declare type TableBodyOption = {
4
5
  [key: string]: any;
5
6
  };
@@ -9,7 +10,9 @@ export declare type TableHeaderOption = {
9
10
  width?: string;
10
11
  fixed?: boolean;
11
12
  style?: CSSProperties;
12
- click?: (data: TableBodyOption) => void;
13
+ click?: (data: TableBodyOption, index?: number) => void;
14
+ defaultSortOrder?: SortOrderType;
15
+ sorter?: boolean;
13
16
  [key: string]: any;
14
17
  };
15
18
  export declare const tableProps: {
@@ -72,7 +75,7 @@ declare const _default: import("vue").DefineComponent<{
72
75
  type: BooleanConstructor;
73
76
  default: boolean;
74
77
  };
75
- }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
78
+ }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "sort"[], "sort", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
76
79
  headList: {
77
80
  type: import("vue").PropType<TableHeaderOption[]>;
78
81
  default: () => TableHeaderOption[];
@@ -101,7 +104,9 @@ declare const _default: import("vue").DefineComponent<{
101
104
  type: BooleanConstructor;
102
105
  default: boolean;
103
106
  };
104
- }>>, {
107
+ }>> & {
108
+ onSort?: ((...args: any[]) => any) | undefined;
109
+ }, {
105
110
  border: boolean;
106
111
  loading: boolean;
107
112
  headList: TableHeaderOption[];
@@ -24,6 +24,8 @@ module.exports = __toCommonJS(stdin_exports);
24
24
  var import_vue = require("vue");
25
25
  var import_vue2 = require("vue");
26
26
  var import_utils = require("../utils");
27
+ var import_icon = require("../icon");
28
+ var import_types = require("./types");
27
29
  const [name, bem] = (0, import_utils.createNamespace)("table");
28
30
  const tableProps = {
29
31
  headList: (0, import_utils.makeArrayProp)(),
@@ -46,12 +48,42 @@ const tableProps = {
46
48
  var stdin_default = (0, import_vue2.defineComponent)({
47
49
  name,
48
50
  props: tableProps,
49
- setup(props) {
50
- const fixedBoxRef = (0, import_vue2.ref)();
51
+ emits: ["sort"],
52
+ setup(props, {
53
+ emit
54
+ }) {
55
+ const sortOrder = (0, import_vue2.ref)("");
56
+ const sortKey = (0, import_vue2.ref)("");
51
57
  const fixedColumn = (0, import_vue2.computed)(() => props.headList.filter((v) => v.fixed));
58
+ const formatColumns = (0, import_vue2.computed)(() => {
59
+ const columns = [];
60
+ let left = 0;
61
+ props.headList.forEach((element, index) => {
62
+ var _a;
63
+ const column = Object.assign({}, element);
64
+ const preColumn = props.headList[index - 1];
65
+ const nextColumn = props.headList[index + 1];
66
+ if (preColumn) {
67
+ left += Number((_a = preColumn.width) == null ? void 0 : _a.split("px")[0]);
68
+ column.left = `${left}px`;
69
+ } else {
70
+ column.left = 0;
71
+ }
72
+ if (element.fixed && !nextColumn.fixed) {
73
+ column.lastFixLeft = true;
74
+ }
75
+ columns.push(column);
76
+ });
77
+ return columns;
78
+ });
79
+ const pingedLeft = (0, import_vue2.ref)(false);
52
80
  const resortHeadList = (0, import_vue2.computed)(() => fixedColumn.value.concat(props.headList.filter((v) => !v.fixed)));
53
81
  (0, import_vue2.onMounted)(() => {
54
82
  const fixedIndexList = props.headList.map((v, i) => {
83
+ if (v.sorter && v.defaultSortOrder) {
84
+ sortOrder.value = v.defaultSortOrder || "";
85
+ sortKey.value = v.key;
86
+ }
55
87
  if (v.fixed) {
56
88
  return `tableHead${i}`;
57
89
  } else {
@@ -68,31 +100,86 @@ var stdin_default = (0, import_vue2.defineComponent)({
68
100
  }, 0);
69
101
  }
70
102
  });
71
- const onScroll = (e) => {
72
- var _a, _b, _c;
73
- if (((_a = e.target) == null ? void 0 : _a.scrollLeft) > 0) {
74
- (_b = fixedBoxRef.value) == null ? void 0 : _b.classList.add("shadow");
103
+ const getNextSortOrder = (type) => {
104
+ if (!type) {
105
+ return import_types.SortOrderEnum.ASCEND;
106
+ } else if (type === import_types.SortOrderEnum.ASCEND) {
107
+ return import_types.SortOrderEnum.DESCEND;
75
108
  } else {
76
- (_c = fixedBoxRef.value) == null ? void 0 : _c.classList.remove("shadow");
109
+ return "";
77
110
  }
78
111
  };
79
- const onClick = (data, click) => {
80
- if (click) {
81
- click(data);
112
+ const onHeaderClick = (data) => {
113
+ if (!data.sorter)
114
+ return;
115
+ sortOrder.value = getNextSortOrder(data.key === sortKey.value ? sortOrder.value : "");
116
+ sortKey.value = data.key;
117
+ emit("sort", {
118
+ order: sortOrder.value,
119
+ key: data.key
120
+ });
121
+ };
122
+ const onScroll = (event) => {
123
+ const {
124
+ scrollLeft,
125
+ currentTarget
126
+ } = event;
127
+ const mergedScrollLeft = typeof scrollLeft === "number" ? scrollLeft : currentTarget == null ? void 0 : currentTarget.scrollLeft;
128
+ pingedLeft.value = mergedScrollLeft > 0;
129
+ };
130
+ const getHead = (colData) => {
131
+ if ((colData == null ? void 0 : colData.colSpan) !== 0) {
132
+ return (0, import_vue.createVNode)("th", {
133
+ "class": bem("left", {
134
+ fixed: colData.fixed,
135
+ last: colData.lastFixLeft && pingedLeft.value
136
+ }),
137
+ "style": {
138
+ left: colData.fixed ? colData.left : ""
139
+ },
140
+ "colspan": (colData == null ? void 0 : colData.colSpan) !== 1 ? colData == null ? void 0 : colData.colSpan : null
141
+ }, [(0, import_vue.createVNode)("div", {
142
+ "class": bem("head"),
143
+ "onClick": () => onHeaderClick(colData)
144
+ }, [(0, import_vue.createVNode)("span", {
145
+ "class": bem("head-label")
146
+ }, [colData.label]), colData.sorter ? (0, import_vue.createVNode)("span", {
147
+ "class": bem("head-sort")
148
+ }, [(0, import_vue.createVNode)(import_icon.Icon, {
149
+ "class": [colData.key === sortKey.value && sortOrder.value === import_types.SortOrderEnum.ASCEND ? bem("sort-active") : ""],
150
+ "name": "spinner-shrink",
151
+ "size": "12",
152
+ "style": {
153
+ marginBottom: "-3px"
154
+ }
155
+ }, null), (0, import_vue.createVNode)(import_icon.Icon, {
156
+ "class": [colData.key === sortKey.value && sortOrder.value === import_types.SortOrderEnum.DESCEND ? bem("sort-active") : ""],
157
+ "name": "spinner-expand",
158
+ "size": "12",
159
+ "style": {
160
+ marginTop: "-3px"
161
+ }
162
+ }, null)]) : ""])]);
82
163
  }
83
164
  };
84
- const getValue = (value) => value === void 0 || value === "" || value === null ? props.emptyValue : value;
85
- const genColumn = (headObj, index, isFixed) => (0, import_vue.createVNode)("div", {
86
- "class": [bem(isFixed ? "fixed-head" : "head")],
87
- "id": isFixed ? `fixedHead${index}` : `tableHead${index}`,
88
- "style": isFixed ? "" : headObj.width ? `width:${headObj.width};` : ""
89
- }, [(0, import_vue.createVNode)("div", {
90
- "class": [bem("item"), bem("head-item")]
91
- }, [headObj.label]), props.dataList.map((data) => (0, import_vue.createVNode)("div", {
92
- "class": [bem("item"), bem("body")],
93
- "style": headObj.style,
94
- "onClick": () => onClick(data, headObj.click)
95
- }, [getValue(data[headObj.key])]))]);
165
+ const getBody = (rowData, rowIndex) => (0, import_vue.createVNode)("tr", null, [formatColumns.value.map((colData) => {
166
+ let additionalCellProps;
167
+ if (colData.customCell) {
168
+ additionalCellProps = colData.customCell(rowData, rowIndex);
169
+ }
170
+ const style = Object.assign({}, colData.style);
171
+ style.left = colData.fixed ? colData.left : "";
172
+ return (additionalCellProps == null ? void 0 : additionalCellProps.rowSpan) !== 0 && (additionalCellProps == null ? void 0 : additionalCellProps.colSpan) !== 0 && (0, import_vue.createVNode)("td", {
173
+ "onClick": () => colData.click && colData.click(rowData, rowIndex),
174
+ "class": bem("left", {
175
+ fixed: colData.fixed,
176
+ last: colData.lastFixLeft && pingedLeft.value
177
+ }),
178
+ "colspan": (additionalCellProps == null ? void 0 : additionalCellProps.colSpan) !== 1 ? additionalCellProps == null ? void 0 : additionalCellProps.colSpan : null,
179
+ "rowspan": (additionalCellProps == null ? void 0 : additionalCellProps.rowSpan) !== 1 ? additionalCellProps == null ? void 0 : additionalCellProps.rowSpan : null,
180
+ "style": style
181
+ }, [rowData[colData.key]]);
182
+ })]);
96
183
  const getCol = () => {
97
184
  const cols = [];
98
185
  const col = resortHeadList.value.length;
@@ -123,15 +210,19 @@ var stdin_default = (0, import_vue2.defineComponent)({
123
210
  })
124
211
  }, [getLoadingColumn()]) : (0, import_vue.createVNode)("div", {
125
212
  "class": bem({
126
- striped: props.striped,
127
- "no-border": !props.border
128
- })
129
- }, [(0, import_vue.createVNode)("div", {
130
- "class": bem("normal-box"),
213
+ fixed: fixedColumn.value.length > 0,
214
+ bordered: props.border,
215
+ striped: props.striped
216
+ }),
131
217
  "onScroll": onScroll
132
- }, [resortHeadList.value.map((x, i) => genColumn(x, i))]), (0, import_vue.createVNode)("div", {
133
- "class": bem("fixed-box"),
134
- "ref": fixedBoxRef
135
- }, [fixedColumn.value.map((x, i) => genColumn(x, i, true))])]);
218
+ }, [(0, import_vue.createVNode)("table", null, [(0, import_vue.createVNode)("colgroup", null, [props.headList.map((item) => (0, import_vue.createVNode)("col", {
219
+ "style": {
220
+ width: item.width
221
+ }
222
+ }, null))]), (0, import_vue.createVNode)("thead", {
223
+ "class": bem("thead")
224
+ }, [(0, import_vue.createVNode)("tr", null, [formatColumns.value.map((colData) => getHead(colData))])]), (0, import_vue.createVNode)("tbody", {
225
+ "class": bem("tbody")
226
+ }, [props.dataList.map((rowData, rowIndex) => getBody(rowData, rowIndex))])])]);
136
227
  }
137
228
  });
@@ -1 +1 @@
1
- :root{--zt-table-head-height: 40px;--zt-table-head-font-size: var(--zt-font-size-md);--zt-table-head-color: var(--zt-blue);--zt-table-head-background: #e6f5ff;--zt-table-body-height: 40px;--zt-table-body-font-size: var(--zt-font-size-md);--zt-table-body-color: var(--zt-gray-default);--zt-table-body-background: var(--zt-white)}.zt-base-hair{position:relative}.zt-base-hair:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid var(--zt-border-color);transform:scale(.5)}.zt-table{position:relative}.zt-table--no-border .zt-table__head:after,.zt-table--no-border .zt-table__fixed-head:after,.zt-table--no-border .zt-table__normal-box:after,.zt-table--no-border .zt-table__head-item:after,.zt-table--no-border .zt-table__body:after{display:none}.zt-table--skeleton{background-color:#fff;padding-bottom:10px}.zt-table__row{display:flex;box-sizing:border-box;padding:0 10px;height:40px}.zt-table__row--head{display:flex;justify-content:center;align-items:center;background-color:#e7f0fb;margin-bottom:8px}.zt-table__row--head .zt-table__col-item{background-color:#cfdae9;height:20px}.zt-table__col{display:flex;align-items:center;justify-content:center;box-sizing:border-box;flex:1;padding:4px 6px;height:40px}.zt-table__col-item{width:100%;height:100%;border-radius:4px;background-color:rgba(45,75,115,.06)}.zt-table--animate{animation:zt-table-blink var(--zt-skeleton-duration) ease-in-out infinite}.zt-table__normal-box{display:flex;overflow-x:scroll;position:relative}.zt-table__normal-box:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid var(--zt-border-color);transform:scale(.5)}.zt-table__normal-box:after{border-left-width:var(--zt-border-width)}.zt-table__normal-box::-webkit-scrollbar{width:unset;background-color:unset;height:4px}.zt-table__normal-box::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.1)}.zt-table--striped .zt-table__body:nth-child(odd){background-color:var(--zt-background)}.zt-table__fixed-box{display:flex;position:absolute;top:0;left:0;z-index:2}.zt-table__fixed-box.shadow:after{content:"";position:absolute;top:0;right:-10px;width:10px;height:100%;opacity:.06;background-image:linear-gradient(90deg,#000000 0%,rgba(0,0,0,0) 100%)}.zt-table__fixed-head{position:relative}.zt-table__fixed-head:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid var(--zt-border-color);transform:scale(.5)}.zt-table__fixed-head:after{border-width:var(--zt-border-width)}.zt-table__head{flex-shrink:0;flex:1 0 auto;position:relative}.zt-table__head:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid var(--zt-border-color);transform:scale(.5)}.zt-table__head:after{border-right-width:var(--zt-border-width)}.zt-table__item{text-align:center}.zt-table__head-item{height:var(--zt-table-head-height);font-size:var(--zt-table-head-font-size);color:var(--zt-table-head-color);line-height:var(--zt-table-head-height);background:var(--zt-table-head-background);font-weight:600;position:relative}.zt-table__head-item:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid var(--zt-border-color);transform:scale(.5)}.zt-table__head-item:after{border-width:var(--zt-border-width) 0}.zt-table__body{height:var(--zt-table-body-height);font-size:var(--zt-table-body-font-size);color:var(--zt-table-body-color);line-height:var(--zt-table-body-height);background:var(--zt-table-body-background);position:relative}.zt-table__body:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;right:0;bottom:0;left:0;border-bottom:1px solid var(--zt-border-color);transform:scaleY(.5)}@keyframes zt-table-blink{50%{opacity:.6}}
1
+ :root{--zt-table-head-height: 40px;--zt-table-head-font-size: var(--zt-font-size-md);--zt-table-head-color: var(--zt-blue);--zt-table-head-background: #e6f5ff;--zt-table-body-height: 40px;--zt-table-body-line-height: 20px;--zt-table-body-font-size: var(--zt-font-size-md);--zt-table-body-color: var(--zt-gray-default);--zt-table-body-background: var(--zt-white);--zt-table-sort-default: var(--zt-gray-5);--zt-table-sort-active: var(--zt-blue)}.zt-base-hair{position:relative}.zt-base-hair:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid var(--zt-border-color);transform:scale(.5)}.zt-table table{border-collapse:separate;border-spacing:0;width:100%;table-layout:auto;box-sizing:border-box}.zt-table--fixed{overflow:auto scroll}.zt-table--fixed::-webkit-scrollbar{width:0;height:0}.zt-table--fixed table{table-layout:fixed}.zt-table--thead-fixed{position:-webkit-sticky!important;position:sticky!important;z-index:2}.zt-table--bordered{position:relative}.zt-table--bordered:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid var(--zt-border-color);transform:scale(.5)}.zt-table--bordered:after{border-left-width:var(--zt-border-width)}.zt-table--bordered>table{position:relative}.zt-table--bordered>table:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid var(--zt-border-color);transform:scale(.5)}.zt-table--bordered>table:after{border-top-width:var(--zt-border-width)}.zt-table--bordered .zt-table__thead>tr>th{position:relative}.zt-table--bordered .zt-table__thead>tr>th:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid var(--zt-border-color);transform:scale(.5)}.zt-table--bordered .zt-table__thead>tr>th:after{border-right-width:var(--zt-border-width);border-bottom-width:var(--zt-border-width)}.zt-table--bordered .zt-table__tbody>tr>td{position:relative}.zt-table--bordered .zt-table__tbody>tr>td:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid var(--zt-border-color);transform:scale(.5)}.zt-table--bordered .zt-table__tbody>tr>td:after{border-right-width:var(--zt-border-width);border-bottom-width:var(--zt-border-width)}.zt-table__thead>tr>th{box-sizing:border-box;overflow-wrap:break-word;min-height:var(--zt-table-head-height);font-weight:600;font-size:var(--zt-table-head-font-size);color:var(--zt-table-head-color);text-align:center;line-height:var(--zt-table-head-height);background:var(--zt-table-head-background)}.zt-table__tbody>tr>td{box-sizing:border-box;overflow-wrap:break-word;min-height:var(--zt-table-body-height);font-size:var(--zt-table-body-font-size);color:var(--zt-table-body-color);text-align:center;line-height:var(--zt-table-body-line-height);background:var(--zt-table-body-background);padding:10px 16px}.zt-table--striped .zt-table__tbody>tr:nth-child(even)>td{background:var(--zt-table-head-background)}.zt-table__left--last{border-right:none!important}.zt-table__left--last:after{content:"";position:absolute;top:0;right:-10px;width:10px;height:100%;opacity:.06;background-image:linear-gradient(90deg,#000000 0%,rgba(0,0,0,0) 100%)}.zt-table__left--fixed{position:-webkit-sticky!important;position:sticky!important;z-index:2}.zt-table__head{display:flex;justify-content:center}.zt-table__head-sort{display:inline-flex;align-items:center;justify-content:center;flex-direction:column;color:var(--zt-table-sort-default)}.zt-table__head-label{line-height:var(--zt-table-head-height)}.zt-table__sort-active{color:var(--zt-table-sort-active)}.zt-table--skeleton{background-color:#fff;padding-bottom:10px}.zt-table__row{display:flex;box-sizing:border-box;padding:0 10px;height:40px}.zt-table__row--head{display:flex;justify-content:center;align-items:center;background-color:#e7f0fb;margin-bottom:8px}.zt-table__row--head .zt-table__col-item{background-color:#cfdae9;height:20px}.zt-table__col{display:flex;align-items:center;justify-content:center;box-sizing:border-box;flex:1;padding:4px 6px;height:40px}.zt-table__col-item{width:100%;height:100%;border-radius:4px;background-color:rgba(45,75,115,.06)}.zt-table--animate{animation:zt-table-blink var(--zt-skeleton-duration) ease-in-out infinite}@keyframes zt-table-blink{50%{opacity:.6}}
@@ -27,7 +27,7 @@ export declare const Table: import("../utils").WithInstall<import("vue").DefineC
27
27
  type: BooleanConstructor;
28
28
  default: boolean;
29
29
  };
30
- }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
30
+ }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "sort"[], "sort", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
31
31
  headList: {
32
32
  type: import("vue").PropType<import("./Table").TableHeaderOption[]>;
33
33
  default: () => import("./Table").TableHeaderOption[];
@@ -56,7 +56,9 @@ export declare const Table: import("../utils").WithInstall<import("vue").DefineC
56
56
  type: BooleanConstructor;
57
57
  default: boolean;
58
58
  };
59
- }>>, {
59
+ }>> & {
60
+ onSort?: ((...args: any[]) => any) | undefined;
61
+ }, {
60
62
  border: boolean;
61
63
  loading: boolean;
62
64
  headList: import("./Table").TableHeaderOption[];
@@ -1,2 +1,4 @@
1
1
  require("../../style/base.css");
2
+ require("../../badge/index.css");
3
+ require("../../icon/index.css");
2
4
  require("../index.css");
@@ -0,0 +1,5 @@
1
+ export declare type SortOrderType = 'ascend' | 'descend';
2
+ export declare enum SortOrderEnum {
3
+ ASCEND = "ascend",
4
+ DESCEND = "descend"
5
+ }
@@ -0,0 +1,27 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var stdin_exports = {};
19
+ __export(stdin_exports, {
20
+ SortOrderEnum: () => SortOrderEnum
21
+ });
22
+ module.exports = __toCommonJS(stdin_exports);
23
+ var SortOrderEnum = /* @__PURE__ */ ((SortOrderEnum2) => {
24
+ SortOrderEnum2["ASCEND"] = "ascend";
25
+ SortOrderEnum2["DESCEND"] = "descend";
26
+ return SortOrderEnum2;
27
+ })(SortOrderEnum || {});
package/lib/tag/Tag.d.ts CHANGED
@@ -17,6 +17,7 @@ export declare const tagProps: {
17
17
  borderColor: StringConstructor;
18
18
  closeable: BooleanConstructor;
19
19
  icon: StringConstructor;
20
+ image: StringConstructor;
20
21
  iconPrefix: StringConstructor;
21
22
  iconColor: StringConstructor;
22
23
  badge: BooleanConstructor;
@@ -52,6 +53,7 @@ declare const _default: import("vue").DefineComponent<{
52
53
  borderColor: StringConstructor;
53
54
  closeable: BooleanConstructor;
54
55
  icon: StringConstructor;
56
+ image: StringConstructor;
55
57
  iconPrefix: StringConstructor;
56
58
  iconColor: StringConstructor;
57
59
  badge: BooleanConstructor;
@@ -85,6 +87,7 @@ declare const _default: import("vue").DefineComponent<{
85
87
  borderColor: StringConstructor;
86
88
  closeable: BooleanConstructor;
87
89
  icon: StringConstructor;
90
+ image: StringConstructor;
88
91
  iconPrefix: StringConstructor;
89
92
  iconColor: StringConstructor;
90
93
  badge: BooleanConstructor;
package/lib/tag/Tag.js CHANGED
@@ -1,6 +1,8 @@
1
+ var __create = Object.create;
1
2
  var __defProp = Object.defineProperty;
2
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
4
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
7
  var __export = (target, all) => {
6
8
  for (var name2 in all)
@@ -14,6 +16,14 @@ var __copyProps = (to, from, except, desc) => {
14
16
  }
15
17
  return to;
16
18
  };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
17
27
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
28
  var stdin_exports = {};
19
29
  __export(stdin_exports, {
@@ -26,6 +36,7 @@ var import_vue2 = require("vue");
26
36
  var import_utils = require("../utils");
27
37
  var import_icon = require("../icon");
28
38
  var import_parse = require("../utils/parse");
39
+ var import_image = __toESM(require("../image"));
29
40
  const [name, bem] = (0, import_utils.createNamespace)("tag");
30
41
  const tagProps = {
31
42
  mark: Boolean,
@@ -38,6 +49,7 @@ const tagProps = {
38
49
  borderColor: String,
39
50
  closeable: Boolean,
40
51
  icon: String,
52
+ image: String,
41
53
  iconPrefix: String,
42
54
  iconColor: String,
43
55
  badge: Boolean,
@@ -100,27 +112,33 @@ var stdin_default = (0, import_vue2.defineComponent)({
100
112
  "class": [bem("close"), import_utils.HAPTICS_FEEDBACK],
101
113
  "onClick": onClose
102
114
  }, null);
103
- const LeftIcon = props.icon && (0, import_vue.createVNode)(import_icon.Icon, {
104
- "name": props.icon,
105
- "class": bem("icon"),
106
- "classPrefix": props.iconPrefix,
107
- "style": {
108
- color: props.iconColor
115
+ const LeftIcon = () => {
116
+ if (props.image) {
117
+ return (0, import_vue.createVNode)(import_image.default, {
118
+ "class": bem("image"),
119
+ "src": props.image
120
+ }, null);
121
+ } else if (props.icon) {
122
+ return (0, import_vue.createVNode)(import_icon.Icon, {
123
+ "name": props.icon,
124
+ "class": bem("icon"),
125
+ "classPrefix": props.iconPrefix,
126
+ "style": {
127
+ color: props.iconColor
128
+ }
129
+ }, null);
109
130
  }
110
- }, null);
131
+ };
111
132
  return (0, import_vue.createVNode)("span", {
112
133
  "style": getStyle(),
113
134
  "class": bem([classes, type])
114
- }, [LeftIcon, (_a = slots.default) == null ? void 0 : _a.call(slots), CloseIcon]);
115
- };
116
- const getStampStyle = () => {
117
- const style = {
118
- color: props.color || props.textColor,
119
- width: props.stampDiameter + "px",
120
- height: props.stampDiameter + "px"
121
- };
122
- return style;
135
+ }, [LeftIcon(), (_a = slots.default) == null ? void 0 : _a.call(slots), CloseIcon]);
123
136
  };
137
+ const getStampStyle = () => ({
138
+ color: props.color || props.textColor,
139
+ width: props.stampDiameter + "px",
140
+ height: props.stampDiameter + "px"
141
+ });
124
142
  const renderStampTag = () => {
125
143
  var _a;
126
144
  const {
package/lib/tag/index.css CHANGED
@@ -1 +1 @@
1
- :root{--zt-tag-padding: var(--zt-padding-base) var(--zt-padding-sm);--zt-tag-text-color: var(--zt-white);--zt-tag-font-size: var(--zt-font-size-sm);--zt-tag-radius: 2px;--zt-tag-line-height: 16px;--zt-tag-icon-gap: 2px;--zt-tag-icon-size: 16px;--zt-tag-close-icon-size: 20px;--zt-tag-round-radius: 12px;--zt-tag-round-line-height: 16px;--zt-tag-badge-padding: 0 var(--zt-padding-sm);--zt-tag-closeable-font-size: var(--zt-font-size-md);--zt-tag-closeable-line-height: 20px;--zt-tag-closeable-radius: 14px;--zt-tag-closeable-background: var(--zt-gray-a6);--zt-tag-danger-color: var(--zt-danger-color);--zt-tag-primary-color: var(--zt-primary-color);--zt-tag-success-color: var(--zt-success-color);--zt-tag-warning-color: var(--zt-warning-color);--zt-tag-default-color: var(--zt-gray-a08);--zt-tag-plain-background: var(--zt-background-2);--zt-tag-stamp-diameter: 60px}.zt-tag{position:relative;display:inline-flex;box-sizing:border-box;align-items:center;padding:var(--zt-tag-padding);color:var(--zt-tag-text-color);font-size:var(--zt-tag-font-size);line-height:var(--zt-tag-line-height);border-radius:var(--zt-tag-radius);overflow:hidden;word-break:break-all}.zt-tag__icon{font-size:var(--zt-tag-icon-size);margin-right:var(--zt-tag-icon-gap)}.zt-tag--default{background:var(--zt-tag-default-color)}.zt-tag--default.zt-tag--plain{color:var(--zt-tag-default-color)}.zt-tag--danger{background:var(--zt-tag-danger-color)}.zt-tag--danger.zt-tag--plain{color:var(--zt-tag-danger-color)}.zt-tag--primary{background:var(--zt-tag-primary-color)}.zt-tag--primary.zt-tag--plain{color:var(--zt-tag-primary-color)}.zt-tag--success{background:var(--zt-tag-success-color)}.zt-tag--success.zt-tag--plain{color:var(--zt-tag-success-color)}.zt-tag--warning{background:var(--zt-tag-warning-color)}.zt-tag--warning.zt-tag--plain{color:var(--zt-tag-warning-color)}.zt-tag--plain{background:var(--zt-tag-plain-background);border-color:currentColor}.zt-tag--plain:before{position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid;border-color:inherit;border-radius:inherit;content:"";pointer-events:none}.zt-tag--mark{border-radius:0 var(--zt-tag-round-radius) var(--zt-tag-round-radius) 0}.zt-tag--mark:after{display:block;width:2px;content:""}.zt-tag--round{border-radius:var(--zt-tag-round-radius);line-height:var(--zt-tag-round-line-height)}.zt-tag__close{font-size:var(--zt-tag-close-icon-size);margin-left:2px}.zt-tag--closeable{font-size:var(--zt-tag-closeable-font-size);line-height:var(--zt-tag-closeable-line-height);background:var(--zt-tag-closeable-background);border-radius:var(--zt-tag-closeable-radius)}.zt-tag--badge{position:absolute;text-align:center;display:block;box-sizing:border-box;padding:var(--zt-tag-badge-padding)}.zt-tag__stamp{width:var(--zt-tag-stamp-diameter);height:var(--zt-tag-stamp-diameter);background:rgba(0,0,0,0);padding:0}.zt-tag__stamp--text{width:50px;height:24px;line-height:24px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;text-align:center;font-weight:600}.zt-tag__stamp--default{color:var(--zt-gray-a6)}.zt-tag__stamp--danger{color:var(--zt-tag-danger-color)}.zt-tag__stamp--primary{color:var(--zt-tag-primary-color)}.zt-tag__stamp--success{color:var(--zt-tag-success-color)}.zt-tag__stamp--warning{color:var(--zt-tag-warning-color)}.zt-theme-dark{--zt-tag-closeable-background: rgba(255, 255, 255, .1)}
1
+ :root{--zt-tag-padding: var(--zt-padding-base) var(--zt-padding-sm);--zt-tag-text-color: var(--zt-white);--zt-tag-font-size: var(--zt-font-size-sm);--zt-tag-radius: 2px;--zt-tag-line-height: 16px;--zt-tag-icon-gap: 2px;--zt-tag-icon-size: 16px;--zt-tag-close-icon-size: 20px;--zt-tag-round-radius: 12px;--zt-tag-round-line-height: 16px;--zt-tag-badge-padding: 0 var(--zt-padding-sm);--zt-tag-closeable-font-size: var(--zt-font-size-md);--zt-tag-closeable-line-height: 20px;--zt-tag-closeable-radius: 14px;--zt-tag-closeable-background: var(--zt-gray-a6);--zt-tag-danger-color: var(--zt-danger-color);--zt-tag-primary-color: var(--zt-primary-color);--zt-tag-success-color: var(--zt-success-color);--zt-tag-warning-color: var(--zt-warning-color);--zt-tag-default-color: var(--zt-gray-a08);--zt-tag-plain-background: var(--zt-background-2);--zt-tag-stamp-diameter: 60px}.zt-tag{position:relative;display:inline-flex;box-sizing:border-box;align-items:center;padding:var(--zt-tag-padding);color:var(--zt-tag-text-color);font-size:var(--zt-tag-font-size);line-height:var(--zt-tag-line-height);border-radius:var(--zt-tag-radius);overflow:hidden;word-break:break-all}.zt-tag__icon{font-size:var(--zt-tag-icon-size);margin-right:var(--zt-tag-icon-gap)}.zt-tag__image{width:var(--zt-tag-icon-size);height:var(--zt-tag-icon-size);margin-right:var(--zt-tag-icon-gap)}.zt-tag--default{background:var(--zt-tag-default-color)}.zt-tag--default.zt-tag--plain{color:var(--zt-tag-default-color)}.zt-tag--danger{background:var(--zt-tag-danger-color)}.zt-tag--danger.zt-tag--plain{color:var(--zt-tag-danger-color)}.zt-tag--primary{background:var(--zt-tag-primary-color)}.zt-tag--primary.zt-tag--plain{color:var(--zt-tag-primary-color)}.zt-tag--success{background:var(--zt-tag-success-color)}.zt-tag--success.zt-tag--plain{color:var(--zt-tag-success-color)}.zt-tag--warning{background:var(--zt-tag-warning-color)}.zt-tag--warning.zt-tag--plain{color:var(--zt-tag-warning-color)}.zt-tag--plain{background:var(--zt-tag-plain-background);border-color:currentColor}.zt-tag--plain:before{position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid;border-color:inherit;border-radius:inherit;content:"";pointer-events:none}.zt-tag--mark{border-radius:0 var(--zt-tag-round-radius) var(--zt-tag-round-radius) 0}.zt-tag--mark:after{display:block;width:2px;content:""}.zt-tag--round{border-radius:var(--zt-tag-round-radius);line-height:var(--zt-tag-round-line-height)}.zt-tag__close{font-size:var(--zt-tag-close-icon-size);margin-left:2px}.zt-tag--closeable{font-size:var(--zt-tag-closeable-font-size);line-height:var(--zt-tag-closeable-line-height);background:var(--zt-tag-closeable-background);border-radius:var(--zt-tag-closeable-radius)}.zt-tag--badge{position:absolute;text-align:center;display:block;box-sizing:border-box;padding:var(--zt-tag-badge-padding)}.zt-tag__stamp{width:var(--zt-tag-stamp-diameter);height:var(--zt-tag-stamp-diameter);background:rgba(0,0,0,0);padding:0}.zt-tag__stamp--text{width:50px;height:24px;line-height:24px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;text-align:center;font-weight:600}.zt-tag__stamp--default{color:var(--zt-gray-a6)}.zt-tag__stamp--danger{color:var(--zt-tag-danger-color)}.zt-tag__stamp--primary{color:var(--zt-tag-primary-color)}.zt-tag__stamp--success{color:var(--zt-tag-success-color)}.zt-tag__stamp--warning{color:var(--zt-tag-warning-color)}.zt-theme-dark{--zt-tag-closeable-background: rgba(255, 255, 255, .1)}
@@ -15,6 +15,7 @@ export declare const Tag: import("../utils").WithInstall<import("vue").DefineCom
15
15
  borderColor: StringConstructor;
16
16
  closeable: BooleanConstructor;
17
17
  icon: StringConstructor;
18
+ image: StringConstructor;
18
19
  iconPrefix: StringConstructor;
19
20
  iconColor: StringConstructor;
20
21
  badge: BooleanConstructor;
@@ -48,6 +49,7 @@ export declare const Tag: import("../utils").WithInstall<import("vue").DefineCom
48
49
  borderColor: StringConstructor;
49
50
  closeable: BooleanConstructor;
50
51
  icon: StringConstructor;
52
+ image: StringConstructor;
51
53
  iconPrefix: StringConstructor;
52
54
  iconColor: StringConstructor;
53
55
  badge: BooleanConstructor;
@@ -1,4 +1,5 @@
1
1
  require("../../style/base.css");
2
2
  require("../../badge/index.css");
3
3
  require("../../icon/index.css");
4
+ require("../../image/index.css");
4
5
  require("../index.css");
@@ -14,7 +14,7 @@ declare const _default: import("vue").DefineComponent<{
14
14
  deletable: BooleanConstructor;
15
15
  previewSize: PropType<Numeric | [Numeric, Numeric]>;
16
16
  beforeDelete: PropType<Interceptor>;
17
- }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("delete" | "preview")[], "preview" | "delete", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
17
+ }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("preview" | "delete")[], "preview" | "delete", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
18
18
  name: (NumberConstructor | StringConstructor)[];
19
19
  item: {
20
20
  type: PropType<UploaderFileListItem>;