@robot-admin/naive-ui-components 0.6.28 → 0.6.30
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/dist/C_Chat-CJ8KESTM.css.map +1 -0
- package/dist/C_Chat-DzV4AFLd.css.map +1 -0
- package/dist/C_Chat.css +14 -8
- package/dist/{C_CollapsePanel-CWkFCqNQ.css.map → C_CollapsePanel-BkOivqn3.css.map} +1 -1
- package/dist/{C_CollapsePanel-pcVJA_4z.css.map → C_CollapsePanel-CedsEM0N.css.map} +1 -1
- package/dist/C_CollapsePanel.css +35 -35
- package/dist/C_CollapsePanel.js.map +1 -1
- package/dist/C_CollapsePanel2.js +1 -1
- package/dist/C_CollapsePanel2.js.map +1 -1
- package/dist/C_Editor-C49qURgb.css.map +1 -0
- package/dist/C_Editor-DuxBD9Qg.css.map +1 -0
- package/dist/C_Editor.css +60 -29
- package/dist/C_Editor.js.map +1 -1
- package/dist/C_Editor2.js +1 -1
- package/dist/C_Editor2.js.map +1 -1
- package/dist/C_Guide.d.cts +2 -2
- package/dist/C_Guide.d.ts +2 -2
- package/dist/C_Guide.js.map +1 -1
- package/dist/C_Guide2.js +1 -1
- package/dist/C_Guide2.js.map +1 -1
- package/dist/C_Markdown-7J0uPEuk.css.map +1 -0
- package/dist/C_Markdown-C7Lg0_9z.css.map +1 -0
- package/dist/C_Markdown.css +16 -10
- package/dist/C_OrgChart-ChZu346B.css.map +1 -0
- package/dist/C_OrgChart-DqBufOv5.css.map +1 -0
- package/dist/C_OrgChart.cjs +1 -0
- package/dist/C_OrgChart.css +282 -0
- package/dist/C_OrgChart.d.cts +2 -0
- package/dist/C_OrgChart.d.ts +2 -0
- package/dist/C_OrgChart.js +1 -0
- package/dist/C_OrgChart.js.map +1 -0
- package/dist/C_OrgChart2.js +2 -0
- package/dist/C_OrgChart2.js.map +1 -0
- package/dist/C_Progress.d.cts +1 -1
- package/dist/C_Progress.d.ts +1 -1
- package/dist/C_Signature.js.map +1 -1
- package/dist/C_Signature2.js.map +1 -1
- package/dist/C_Skeleton-BNPbaut7.css.map +1 -0
- package/dist/C_Skeleton-Djsjw8XY.css.map +1 -0
- package/dist/C_Skeleton.cjs +1 -0
- package/dist/C_Skeleton.css +253 -0
- package/dist/C_Skeleton.d.cts +2 -0
- package/dist/C_Skeleton.d.ts +2 -0
- package/dist/C_Skeleton.js +1 -0
- package/dist/C_Skeleton.js.map +1 -0
- package/dist/C_Skeleton2.js +2 -0
- package/dist/C_Skeleton2.js.map +1 -0
- package/dist/C_Steps.d.cts +1 -1
- package/dist/C_Steps.d.ts +1 -1
- package/dist/C_Table-B8hpzOcR.css.map +1 -0
- package/dist/C_Table-CGP3n_u0.css.map +1 -0
- package/dist/C_Table.css +94 -69
- package/dist/C_Table.d.cts +2 -2
- package/dist/C_Table.d.ts +2 -2
- package/dist/C_Table.js.map +1 -1
- package/dist/C_Table2.js +1 -1
- package/dist/C_Table2.js.map +1 -1
- package/dist/C_TagsView.d.cts +1 -1
- package/dist/C_TagsView.d.ts +1 -1
- package/dist/C_Theme.d.cts +1 -1
- package/dist/C_Theme.d.ts +1 -1
- package/dist/{C_Timeline-BKkimrZx.css.map → C_Timeline-DG70WtJP.css.map} +1 -1
- package/dist/{C_Timeline-DTuSCX6p.css.map → C_Timeline-Dzxmmdjg.css.map} +1 -1
- package/dist/C_Timeline.css +45 -45
- package/dist/C_Timeline.d.cts +1 -1
- package/dist/C_Timeline.d.ts +1 -1
- package/dist/C_Timeline.js.map +1 -1
- package/dist/C_Timeline2.js +1 -1
- package/dist/C_Timeline2.js.map +1 -1
- package/dist/C_Transfer.d.cts +1 -1
- package/dist/C_Transfer.d.ts +1 -1
- package/dist/{C_Upload-S30RmC9t.css.map → C_Upload-CFAxVGVz.css.map} +1 -1
- package/dist/{C_Upload-i8LB_29U.css.map → C_Upload-D8_QeSV0.css.map} +1 -1
- package/dist/C_Upload.css +14 -9
- package/dist/C_Upload.js.map +1 -1
- package/dist/C_Upload2.js +1 -1
- package/dist/C_Upload2.js.map +1 -1
- package/dist/C_VtableGantt.d.cts +1 -1
- package/dist/C_VtableGantt.d.ts +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants2.d.ts +2 -2
- package/dist/constants3.d.ts +3 -3
- package/dist/constants4.d.ts +5 -5
- package/dist/constants5.d.ts +2 -2
- package/dist/data.d.ts +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +22 -20
- package/dist/index.d.ts +22 -20
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.vue.d.ts +1 -1
- package/dist/index13.vue.d.ts +3 -3
- package/dist/index14.vue.d.ts +85 -7
- package/dist/index15.vue.d.ts +6 -6
- package/dist/index17.vue.d.ts +1 -1
- package/dist/index18.vue.d.ts +4 -4
- package/dist/index20.vue.d.ts +87 -40
- package/dist/index21.vue.d.ts +47 -27
- package/dist/index22.vue.d.ts +95 -79
- package/dist/index23.vue.d.ts +24 -7
- package/dist/index24.vue.d.ts +76 -100
- package/dist/index25.vue.d.ts +7 -70
- package/dist/index26.vue.d.ts +99 -649
- package/dist/index27.vue.d.ts +81 -0
- package/dist/index28.vue.d.ts +662 -0
- package/dist/index3.vue.d.ts +3 -3
- package/dist/index4.vue.d.ts +6 -6
- package/dist/index6.vue.d.ts +2 -2
- package/dist/index8.vue.d.ts +1 -1
- package/dist/resolver.cjs +1 -1
- package/dist/resolver.cjs.map +1 -1
- package/dist/resolver.d.cts +1 -1
- package/dist/resolver.d.ts +1 -1
- package/dist/resolver.js +1 -1
- package/dist/resolver.js.map +1 -1
- package/dist/style.css +832 -220
- package/dist/useCalendarEvents.d.ts +1 -1
- package/dist/useCollapsePanel.d.ts +8 -8
- package/dist/useCropperCore.d.ts +4 -4
- package/dist/useDraggableLayout.d.ts +8 -8
- package/dist/useDynamicFormState.d.ts +10 -10
- package/dist/useEdgeInteraction.d.ts +1 -1
- package/dist/useFullscreen.d.ts +2 -2
- package/dist/useInfiniteScroll.d.ts +2 -2
- package/dist/useModalEdit.d.ts +52 -6
- package/dist/useQRCode.d.ts +5 -5
- package/dist/useSearchState.d.ts +2 -2
- package/dist/useSignatureHistory.d.ts +3 -3
- package/dist/useSplitResize.d.ts +8 -8
- package/dist/useTimeSelection.d.ts +2 -2
- package/dist/useTreeOperations.d.ts +4 -4
- package/dist/useWorkflowValidation.d.ts +2 -2
- package/package.json +5 -1
- package/dist/C_Chat-CcdWgVE8.css.map +0 -1
- package/dist/C_Chat-Cx0woEEe.css.map +0 -1
- package/dist/C_Editor-D0_6UhIa.css.map +0 -1
- package/dist/C_Editor-OlxIF9-5.css.map +0 -1
- package/dist/C_Markdown-7iBnLDtL.css.map +0 -1
- package/dist/C_Markdown-BbTvdFCl.css.map +0 -1
- package/dist/C_Table-vZlcgH6x.css.map +0 -1
- package/dist/C_Table-wzAO43l0.css.map +0 -1
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
/* unplugin-vue-components disabled *//* C_OrgChart 组织架构图组件样式 */
|
|
2
|
+
.c-orgchart {
|
|
3
|
+
--c-orgchart-line-color: #d1d5db;
|
|
4
|
+
--c-orgchart-line-width: 2px;
|
|
5
|
+
--c-orgchart-node-spacing: 24px;
|
|
6
|
+
--c-orgchart-level-spacing: 48px;
|
|
7
|
+
--c-orgchart-node-bg: var(--card-color, #ffffff);
|
|
8
|
+
--c-orgchart-node-border: var(--border-color, #e5e7eb);
|
|
9
|
+
--c-orgchart-node-shadow: rgba(0, 0, 0, 0.06);
|
|
10
|
+
--c-orgchart-node-hover-shadow: rgba(0, 0, 0, 0.12);
|
|
11
|
+
--c-orgchart-label-color: var(--text-color-1, #262626);
|
|
12
|
+
--c-orgchart-subtitle-color: var(--text-color-3, #999999);
|
|
13
|
+
--c-orgchart-toggle-bg: var(--card-color, #ffffff);
|
|
14
|
+
--c-orgchart-toggle-color: var(--text-color-2, #666666);
|
|
15
|
+
--c-orgchart-avatar-size: 36px;
|
|
16
|
+
--c-orgchart-controls-bg: var(--card-color, #ffffff);
|
|
17
|
+
--c-orgchart-controls-shadow: rgba(0, 0, 0, 0.1);
|
|
18
|
+
position: relative;
|
|
19
|
+
width: 100%;
|
|
20
|
+
height: 100%;
|
|
21
|
+
min-height: 300px;
|
|
22
|
+
overflow: hidden;
|
|
23
|
+
cursor: grab;
|
|
24
|
+
user-select: none;
|
|
25
|
+
}
|
|
26
|
+
.c-orgchart:active {
|
|
27
|
+
cursor: grabbing;
|
|
28
|
+
}
|
|
29
|
+
.c-orgchart__viewport {
|
|
30
|
+
display: inline-flex;
|
|
31
|
+
justify-content: center;
|
|
32
|
+
width: 100%;
|
|
33
|
+
padding: 32px;
|
|
34
|
+
transition: transform 0.15s ease;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* ─── 节点包裹器(垂直布局) ─── */
|
|
38
|
+
.c-orgchart--vertical .c-orgchart__node-wrapper {
|
|
39
|
+
display: flex;
|
|
40
|
+
flex-direction: column;
|
|
41
|
+
align-items: center;
|
|
42
|
+
}
|
|
43
|
+
.c-orgchart--vertical .c-orgchart__children {
|
|
44
|
+
display: flex;
|
|
45
|
+
justify-content: center;
|
|
46
|
+
padding-top: var(--c-orgchart-level-spacing);
|
|
47
|
+
gap: var(--c-orgchart-node-spacing);
|
|
48
|
+
position: relative;
|
|
49
|
+
/* 垂直连线:父→子 */
|
|
50
|
+
/* 横连线:兄弟节点 */
|
|
51
|
+
/* 兄弟之间的水平线 */
|
|
52
|
+
}
|
|
53
|
+
.c-orgchart--vertical .c-orgchart__children::before {
|
|
54
|
+
content: "";
|
|
55
|
+
position: absolute;
|
|
56
|
+
top: 0;
|
|
57
|
+
left: 50%;
|
|
58
|
+
width: var(--c-orgchart-line-width);
|
|
59
|
+
height: calc(var(--c-orgchart-level-spacing) / 2);
|
|
60
|
+
background: var(--c-orgchart-line-color);
|
|
61
|
+
transform: translateX(-50%);
|
|
62
|
+
}
|
|
63
|
+
.c-orgchart--vertical .c-orgchart__children > .c-orgchart__node-wrapper {
|
|
64
|
+
position: relative;
|
|
65
|
+
}
|
|
66
|
+
.c-orgchart--vertical .c-orgchart__children > .c-orgchart__node-wrapper::before {
|
|
67
|
+
content: "";
|
|
68
|
+
position: absolute;
|
|
69
|
+
top: calc(var(--c-orgchart-level-spacing) / -2);
|
|
70
|
+
left: 50%;
|
|
71
|
+
width: var(--c-orgchart-line-width);
|
|
72
|
+
height: calc(var(--c-orgchart-level-spacing) / 2);
|
|
73
|
+
background: var(--c-orgchart-line-color);
|
|
74
|
+
transform: translateX(-50%);
|
|
75
|
+
}
|
|
76
|
+
.c-orgchart--vertical .c-orgchart__children > .c-orgchart__node-wrapper:not(:only-child)::after {
|
|
77
|
+
content: "";
|
|
78
|
+
position: absolute;
|
|
79
|
+
top: calc(var(--c-orgchart-level-spacing) / -2);
|
|
80
|
+
height: var(--c-orgchart-line-width);
|
|
81
|
+
background: var(--c-orgchart-line-color);
|
|
82
|
+
}
|
|
83
|
+
.c-orgchart--vertical .c-orgchart__children > .c-orgchart__node-wrapper:not(:only-child):first-child::after {
|
|
84
|
+
left: 50%;
|
|
85
|
+
right: calc(-1 * var(--c-orgchart-node-spacing) / 2);
|
|
86
|
+
}
|
|
87
|
+
.c-orgchart--vertical .c-orgchart__children > .c-orgchart__node-wrapper:not(:only-child):last-child::after {
|
|
88
|
+
left: calc(-1 * var(--c-orgchart-node-spacing) / 2);
|
|
89
|
+
right: 50%;
|
|
90
|
+
}
|
|
91
|
+
.c-orgchart--vertical .c-orgchart__children > .c-orgchart__node-wrapper:not(:only-child):not(:first-child):not(:last-child)::after {
|
|
92
|
+
left: calc(-1 * var(--c-orgchart-node-spacing) / 2);
|
|
93
|
+
right: calc(-1 * var(--c-orgchart-node-spacing) / 2);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* ─── 水平布局 ─── */
|
|
97
|
+
.c-orgchart--horizontal .c-orgchart__node-wrapper {
|
|
98
|
+
display: flex;
|
|
99
|
+
align-items: center;
|
|
100
|
+
}
|
|
101
|
+
.c-orgchart--horizontal .c-orgchart__children {
|
|
102
|
+
display: flex;
|
|
103
|
+
flex-direction: column;
|
|
104
|
+
justify-content: center;
|
|
105
|
+
padding-left: var(--c-orgchart-level-spacing);
|
|
106
|
+
gap: var(--c-orgchart-node-spacing);
|
|
107
|
+
position: relative;
|
|
108
|
+
}
|
|
109
|
+
.c-orgchart--horizontal .c-orgchart__children::before {
|
|
110
|
+
content: "";
|
|
111
|
+
position: absolute;
|
|
112
|
+
left: 0;
|
|
113
|
+
top: 50%;
|
|
114
|
+
height: var(--c-orgchart-line-width);
|
|
115
|
+
width: calc(var(--c-orgchart-level-spacing) / 2);
|
|
116
|
+
background: var(--c-orgchart-line-color);
|
|
117
|
+
transform: translateY(-50%);
|
|
118
|
+
}
|
|
119
|
+
.c-orgchart--horizontal .c-orgchart__children > .c-orgchart__node-wrapper {
|
|
120
|
+
position: relative;
|
|
121
|
+
}
|
|
122
|
+
.c-orgchart--horizontal .c-orgchart__children > .c-orgchart__node-wrapper::before {
|
|
123
|
+
content: "";
|
|
124
|
+
position: absolute;
|
|
125
|
+
left: calc(var(--c-orgchart-level-spacing) / -2);
|
|
126
|
+
top: 50%;
|
|
127
|
+
width: calc(var(--c-orgchart-level-spacing) / 2);
|
|
128
|
+
height: var(--c-orgchart-line-width);
|
|
129
|
+
background: var(--c-orgchart-line-color);
|
|
130
|
+
transform: translateY(-50%);
|
|
131
|
+
}
|
|
132
|
+
.c-orgchart--horizontal .c-orgchart__children > .c-orgchart__node-wrapper:not(:only-child)::after {
|
|
133
|
+
content: "";
|
|
134
|
+
position: absolute;
|
|
135
|
+
left: calc(var(--c-orgchart-level-spacing) / -2);
|
|
136
|
+
width: var(--c-orgchart-line-width);
|
|
137
|
+
background: var(--c-orgchart-line-color);
|
|
138
|
+
}
|
|
139
|
+
.c-orgchart--horizontal .c-orgchart__children > .c-orgchart__node-wrapper:not(:only-child):first-child::after {
|
|
140
|
+
top: 50%;
|
|
141
|
+
bottom: calc(-1 * var(--c-orgchart-node-spacing) / 2);
|
|
142
|
+
}
|
|
143
|
+
.c-orgchart--horizontal .c-orgchart__children > .c-orgchart__node-wrapper:not(:only-child):last-child::after {
|
|
144
|
+
top: calc(-1 * var(--c-orgchart-node-spacing) / 2);
|
|
145
|
+
bottom: 50%;
|
|
146
|
+
}
|
|
147
|
+
.c-orgchart--horizontal .c-orgchart__children > .c-orgchart__node-wrapper:not(:only-child):not(:first-child):not(:last-child)::after {
|
|
148
|
+
top: calc(-1 * var(--c-orgchart-node-spacing) / 2);
|
|
149
|
+
bottom: calc(-1 * var(--c-orgchart-node-spacing) / 2);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/* ─── 圆角连线 ─── */
|
|
153
|
+
.c-orgchart--line-rounded .c-orgchart__children::before,
|
|
154
|
+
.c-orgchart--line-rounded .c-orgchart__node-wrapper::before,
|
|
155
|
+
.c-orgchart--line-rounded .c-orgchart__node-wrapper::after {
|
|
156
|
+
border-radius: 4px;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/* ─── 节点卡片 ─── */
|
|
160
|
+
.c-orgchart__node {
|
|
161
|
+
position: relative;
|
|
162
|
+
background: var(--c-orgchart-node-bg);
|
|
163
|
+
border: 1px solid var(--c-orgchart-node-border);
|
|
164
|
+
border-radius: 8px;
|
|
165
|
+
padding: 12px 16px;
|
|
166
|
+
cursor: pointer;
|
|
167
|
+
box-shadow: 0 2px 8px var(--c-orgchart-node-shadow);
|
|
168
|
+
transition: box-shadow 0.2s ease, transform 0.2s ease;
|
|
169
|
+
white-space: nowrap;
|
|
170
|
+
}
|
|
171
|
+
.c-orgchart__node:hover {
|
|
172
|
+
box-shadow: 0 4px 16px var(--c-orgchart-node-hover-shadow);
|
|
173
|
+
transform: translateY(-2px);
|
|
174
|
+
}
|
|
175
|
+
.c-orgchart__node--leaf {
|
|
176
|
+
opacity: 0.9;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/* ─── 默认节点布局 ─── */
|
|
180
|
+
.c-orgchart__node-default {
|
|
181
|
+
display: flex;
|
|
182
|
+
align-items: center;
|
|
183
|
+
gap: 10px;
|
|
184
|
+
}
|
|
185
|
+
.c-orgchart__avatar {
|
|
186
|
+
width: var(--c-orgchart-avatar-size);
|
|
187
|
+
height: var(--c-orgchart-avatar-size);
|
|
188
|
+
border-radius: 50%;
|
|
189
|
+
overflow: hidden;
|
|
190
|
+
flex-shrink: 0;
|
|
191
|
+
}
|
|
192
|
+
.c-orgchart__avatar img {
|
|
193
|
+
width: 100%;
|
|
194
|
+
height: 100%;
|
|
195
|
+
object-fit: cover;
|
|
196
|
+
}
|
|
197
|
+
.c-orgchart__info {
|
|
198
|
+
display: flex;
|
|
199
|
+
flex-direction: column;
|
|
200
|
+
gap: 2px;
|
|
201
|
+
}
|
|
202
|
+
.c-orgchart__label {
|
|
203
|
+
font-size: 14px;
|
|
204
|
+
font-weight: 600;
|
|
205
|
+
color: var(--c-orgchart-label-color);
|
|
206
|
+
}
|
|
207
|
+
.c-orgchart__subtitle {
|
|
208
|
+
font-size: 12px;
|
|
209
|
+
color: var(--c-orgchart-subtitle-color);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/* ─── 折叠按钮 ─── */
|
|
213
|
+
.c-orgchart__toggle {
|
|
214
|
+
position: absolute;
|
|
215
|
+
bottom: -12px;
|
|
216
|
+
left: 50%;
|
|
217
|
+
transform: translateX(-50%);
|
|
218
|
+
width: 24px;
|
|
219
|
+
height: 24px;
|
|
220
|
+
border-radius: 50%;
|
|
221
|
+
border: 1px solid var(--c-orgchart-node-border);
|
|
222
|
+
background: var(--c-orgchart-toggle-bg);
|
|
223
|
+
color: var(--c-orgchart-toggle-color);
|
|
224
|
+
font-size: 14px;
|
|
225
|
+
font-weight: 600;
|
|
226
|
+
cursor: pointer;
|
|
227
|
+
display: flex;
|
|
228
|
+
align-items: center;
|
|
229
|
+
justify-content: center;
|
|
230
|
+
z-index: 1;
|
|
231
|
+
transition: background 0.2s ease;
|
|
232
|
+
}
|
|
233
|
+
.c-orgchart__toggle:hover {
|
|
234
|
+
background: color-mix(in srgb, var(--c-orgchart-node-border) 20%, var(--c-orgchart-toggle-bg));
|
|
235
|
+
}
|
|
236
|
+
.c-orgchart--horizontal .c-orgchart__toggle {
|
|
237
|
+
bottom: auto;
|
|
238
|
+
left: auto;
|
|
239
|
+
right: -12px;
|
|
240
|
+
top: 50%;
|
|
241
|
+
transform: translateY(-50%);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/* ─── 缩放控制 ─── */
|
|
245
|
+
.c-orgchart__controls {
|
|
246
|
+
position: absolute;
|
|
247
|
+
bottom: 16px;
|
|
248
|
+
right: 16px;
|
|
249
|
+
display: flex;
|
|
250
|
+
align-items: center;
|
|
251
|
+
gap: 4px;
|
|
252
|
+
background: var(--c-orgchart-controls-bg);
|
|
253
|
+
border-radius: 8px;
|
|
254
|
+
padding: 4px;
|
|
255
|
+
box-shadow: 0 2px 8px var(--c-orgchart-controls-shadow);
|
|
256
|
+
z-index: 10;
|
|
257
|
+
}
|
|
258
|
+
.c-orgchart__control-btn {
|
|
259
|
+
width: 32px;
|
|
260
|
+
height: 32px;
|
|
261
|
+
border: none;
|
|
262
|
+
border-radius: 6px;
|
|
263
|
+
background: transparent;
|
|
264
|
+
color: var(--c-orgchart-label-color);
|
|
265
|
+
font-size: 16px;
|
|
266
|
+
cursor: pointer;
|
|
267
|
+
display: flex;
|
|
268
|
+
align-items: center;
|
|
269
|
+
justify-content: center;
|
|
270
|
+
transition: background 0.2s ease;
|
|
271
|
+
}
|
|
272
|
+
.c-orgchart__control-btn:hover {
|
|
273
|
+
background: color-mix(in srgb, var(--c-orgchart-node-border) 30%, transparent);
|
|
274
|
+
}
|
|
275
|
+
.c-orgchart__zoom-level {
|
|
276
|
+
font-size: 12px;
|
|
277
|
+
color: var(--c-orgchart-subtitle-color);
|
|
278
|
+
min-width: 40px;
|
|
279
|
+
text-align: center;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/*# sourceMappingURL=C_OrgChart-ChZu346B.css.map*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./C_OrgChart2.js";export{e as C_OrgChart};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"C_OrgChart.js","names":["node","$emit","collapsible","$slots"],"sources":["../src/components/C_OrgChart/OrgNode.vue","../src/components/C_OrgChart/OrgNode.vue","../src/components/C_OrgChart/OrgNode.vue","../src/components/C_OrgChart/index.vue","../src/components/C_OrgChart/index.vue","../src/components/C_OrgChart/index.vue"],"sourcesContent":["/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2026-03-06\r\n * @Description: C_OrgChart 递归节点组件\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\r\n-->\r\n<template>\r\n <div class=\"c-orgchart__node-wrapper\">\r\n <!-- 节点卡片 -->\r\n <div\r\n class=\"c-orgchart__node\"\r\n :class=\"[node.className, { 'c-orgchart__node--leaf': isLeaf }]\"\r\n @click.stop=\"$emit('node-click', node)\"\r\n >\r\n <slot\r\n name=\"node\"\r\n :node=\"node\"\r\n :is-leaf=\"isLeaf\"\r\n :is-expanded=\"isExpanded\"\r\n >\r\n <!-- 默认节点渲染 -->\r\n <div class=\"c-orgchart__node-default\">\r\n <div\r\n v-if=\"node.avatar\"\r\n class=\"c-orgchart__avatar\"\r\n >\r\n <img\r\n :src=\"node.avatar\"\r\n :alt=\"node.label\"\r\n />\r\n </div>\r\n <div class=\"c-orgchart__info\">\r\n <div class=\"c-orgchart__label\">{{ node.label }}</div>\r\n <div\r\n v-if=\"node.subtitle\"\r\n class=\"c-orgchart__subtitle\"\r\n >\r\n {{ node.subtitle }}\r\n </div>\r\n </div>\r\n </div>\r\n </slot>\r\n\r\n <!-- 折叠/展开按钮 -->\r\n <button\r\n v-if=\"collapsible && !isLeaf\"\r\n class=\"c-orgchart__toggle\"\r\n @click.stop=\"toggleExpand\"\r\n >\r\n {{ isExpanded ? '−' : '+' }}\r\n </button>\r\n </div>\r\n\r\n <!-- 子节点容器 -->\r\n <div\r\n v-if=\"hasChildren && isExpanded\"\r\n class=\"c-orgchart__children\"\r\n >\r\n <OrgNode\r\n v-for=\"child in node.children\"\r\n :key=\"child.id\"\r\n :node=\"child\"\r\n :collapsible=\"collapsible\"\r\n @node-click=\"$emit('node-click', $event)\"\r\n @node-expand=\"$emit('node-expand', $event)\"\r\n @node-collapse=\"$emit('node-collapse', $event)\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { ref, computed } from 'vue'\r\n import type { OrgChartNode } from './types'\r\n\r\n defineOptions({ name: 'OrgNode' })\r\n\r\n const props = defineProps<{\r\n node: OrgChartNode\r\n collapsible?: boolean\r\n }>()\r\n\r\n defineEmits<{\r\n 'node-click': [node: OrgChartNode]\r\n 'node-expand': [node: OrgChartNode]\r\n 'node-collapse': [node: OrgChartNode]\r\n }>()\r\n\r\n const isExpanded = ref(!props.node.collapsed)\r\n\r\n const hasChildren = computed(\r\n () => props.node.children && props.node.children.length > 0\r\n )\r\n\r\n const isLeaf = computed(() => !hasChildren.value)\r\n\r\n const toggleExpand = () => {\r\n isExpanded.value = !isExpanded.value\r\n }\r\n</script>\r\n","/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2026-03-06\r\n * @Description: C_OrgChart 递归节点组件\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\r\n-->\r\n<template>\r\n <div class=\"c-orgchart__node-wrapper\">\r\n <!-- 节点卡片 -->\r\n <div\r\n class=\"c-orgchart__node\"\r\n :class=\"[node.className, { 'c-orgchart__node--leaf': isLeaf }]\"\r\n @click.stop=\"$emit('node-click', node)\"\r\n >\r\n <slot\r\n name=\"node\"\r\n :node=\"node\"\r\n :is-leaf=\"isLeaf\"\r\n :is-expanded=\"isExpanded\"\r\n >\r\n <!-- 默认节点渲染 -->\r\n <div class=\"c-orgchart__node-default\">\r\n <div\r\n v-if=\"node.avatar\"\r\n class=\"c-orgchart__avatar\"\r\n >\r\n <img\r\n :src=\"node.avatar\"\r\n :alt=\"node.label\"\r\n />\r\n </div>\r\n <div class=\"c-orgchart__info\">\r\n <div class=\"c-orgchart__label\">{{ node.label }}</div>\r\n <div\r\n v-if=\"node.subtitle\"\r\n class=\"c-orgchart__subtitle\"\r\n >\r\n {{ node.subtitle }}\r\n </div>\r\n </div>\r\n </div>\r\n </slot>\r\n\r\n <!-- 折叠/展开按钮 -->\r\n <button\r\n v-if=\"collapsible && !isLeaf\"\r\n class=\"c-orgchart__toggle\"\r\n @click.stop=\"toggleExpand\"\r\n >\r\n {{ isExpanded ? '−' : '+' }}\r\n </button>\r\n </div>\r\n\r\n <!-- 子节点容器 -->\r\n <div\r\n v-if=\"hasChildren && isExpanded\"\r\n class=\"c-orgchart__children\"\r\n >\r\n <OrgNode\r\n v-for=\"child in node.children\"\r\n :key=\"child.id\"\r\n :node=\"child\"\r\n :collapsible=\"collapsible\"\r\n @node-click=\"$emit('node-click', $event)\"\r\n @node-expand=\"$emit('node-expand', $event)\"\r\n @node-collapse=\"$emit('node-collapse', $event)\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { ref, computed } from 'vue'\r\n import type { OrgChartNode } from './types'\r\n\r\n defineOptions({ name: 'OrgNode' })\r\n\r\n const props = defineProps<{\r\n node: OrgChartNode\r\n collapsible?: boolean\r\n }>()\r\n\r\n defineEmits<{\r\n 'node-click': [node: OrgChartNode]\r\n 'node-expand': [node: OrgChartNode]\r\n 'node-collapse': [node: OrgChartNode]\r\n }>()\r\n\r\n const isExpanded = ref(!props.node.collapsed)\r\n\r\n const hasChildren = computed(\r\n () => props.node.children && props.node.children.length > 0\r\n )\r\n\r\n const isLeaf = computed(() => !hasChildren.value)\r\n\r\n const toggleExpand = () => {\r\n isExpanded.value = !isExpanded.value\r\n }\r\n</script>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2026-03-06\r\n * @Description: C_OrgChart 递归节点组件\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\r\n-->\r\n<template>\r\n <div class=\"c-orgchart__node-wrapper\">\r\n <!-- 节点卡片 -->\r\n <div\r\n class=\"c-orgchart__node\"\r\n :class=\"[node.className, { 'c-orgchart__node--leaf': isLeaf }]\"\r\n @click.stop=\"$emit('node-click', node)\"\r\n >\r\n <slot\r\n name=\"node\"\r\n :node=\"node\"\r\n :is-leaf=\"isLeaf\"\r\n :is-expanded=\"isExpanded\"\r\n >\r\n <!-- 默认节点渲染 -->\r\n <div class=\"c-orgchart__node-default\">\r\n <div\r\n v-if=\"node.avatar\"\r\n class=\"c-orgchart__avatar\"\r\n >\r\n <img\r\n :src=\"node.avatar\"\r\n :alt=\"node.label\"\r\n />\r\n </div>\r\n <div class=\"c-orgchart__info\">\r\n <div class=\"c-orgchart__label\">{{ node.label }}</div>\r\n <div\r\n v-if=\"node.subtitle\"\r\n class=\"c-orgchart__subtitle\"\r\n >\r\n {{ node.subtitle }}\r\n </div>\r\n </div>\r\n </div>\r\n </slot>\r\n\r\n <!-- 折叠/展开按钮 -->\r\n <button\r\n v-if=\"collapsible && !isLeaf\"\r\n class=\"c-orgchart__toggle\"\r\n @click.stop=\"toggleExpand\"\r\n >\r\n {{ isExpanded ? '−' : '+' }}\r\n </button>\r\n </div>\r\n\r\n <!-- 子节点容器 -->\r\n <div\r\n v-if=\"hasChildren && isExpanded\"\r\n class=\"c-orgchart__children\"\r\n >\r\n <OrgNode\r\n v-for=\"child in node.children\"\r\n :key=\"child.id\"\r\n :node=\"child\"\r\n :collapsible=\"collapsible\"\r\n @node-click=\"$emit('node-click', $event)\"\r\n @node-expand=\"$emit('node-expand', $event)\"\r\n @node-collapse=\"$emit('node-collapse', $event)\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { ref, computed } from 'vue'\r\n import type { OrgChartNode } from './types'\r\n\r\n defineOptions({ name: 'OrgNode' })\r\n\r\n const props = defineProps<{\r\n node: OrgChartNode\r\n collapsible?: boolean\r\n }>()\r\n\r\n defineEmits<{\r\n 'node-click': [node: OrgChartNode]\r\n 'node-expand': [node: OrgChartNode]\r\n 'node-collapse': [node: OrgChartNode]\r\n }>()\r\n\r\n const isExpanded = ref(!props.node.collapsed)\r\n\r\n const hasChildren = computed(\r\n () => props.node.children && props.node.children.length > 0\r\n )\r\n\r\n const isLeaf = computed(() => !hasChildren.value)\r\n\r\n const toggleExpand = () => {\r\n isExpanded.value = !isExpanded.value\r\n }\r\n</script>\r\n","/* unplugin-vue-components disabled */<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2026-03-06\n * @Description: C_OrgChart 组织架构图组件\n * 纯 CSS + Vue 实现的树形组织架构图,支持缩放/平移/折叠\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\n-->\n<template>\n <div\n ref=\"containerRef\"\n class=\"c-orgchart\"\n :class=\"[\n `c-orgchart--${props.direction}`,\n `c-orgchart--line-${props.lineStyle}`,\n ]\"\n :style=\"cssVars\"\n @wheel.prevent=\"handleWheel\"\n @mousedown=\"handlePanStart\"\n @mousemove=\"handlePanMove\"\n @mouseup=\"handlePanEnd\"\n @mouseleave=\"handlePanEnd\"\n >\n <div\n class=\"c-orgchart__viewport\"\n :style=\"viewportStyle\"\n >\n <OrgNode\n :node=\"props.data\"\n :collapsible=\"props.collapsible\"\n @node-click=\"handleNodeClick\"\n @node-expand=\"handleNodeExpand\"\n @node-collapse=\"handleNodeCollapse\"\n >\n <template\n v-if=\"$slots.node\"\n #node=\"slotProps\"\n >\n <slot\n name=\"node\"\n v-bind=\"slotProps\"\n />\n </template>\n </OrgNode>\n </div>\n\n <!-- 缩放控制 -->\n <div\n v-if=\"props.zoomable\"\n class=\"c-orgchart__controls\"\n >\n <button\n class=\"c-orgchart__control-btn\"\n title=\"放大\"\n @click=\"zoomIn\"\n >\n +\n </button>\n <span class=\"c-orgchart__zoom-level\">{{ zoomPercent }}%</span>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"缩小\"\n @click=\"zoomOut\"\n >\n −\n </button>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"重置\"\n @click=\"resetView\"\n >\n ⟳\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { ref, computed } from 'vue'\n import OrgNode from './OrgNode.vue'\n import type { OrgChartProps, OrgChartNode } from './types'\n\n defineOptions({ name: 'C_OrgChart' })\n\n const props = withDefaults(defineProps<OrgChartProps>(), {\n direction: 'vertical',\n lineStyle: 'rounded',\n lineColor: '#d1d5db',\n lineWidth: 2,\n nodeSpacing: 24,\n levelSpacing: 48,\n zoomable: true,\n pannable: true,\n initialZoom: 1,\n minZoom: 0.3,\n maxZoom: 2,\n collapsible: true,\n })\n\n const emit = defineEmits<{\n 'node-click': [node: OrgChartNode]\n 'node-expand': [node: OrgChartNode]\n 'node-collapse': [node: OrgChartNode]\n }>()\n\n const containerRef = ref<HTMLElement | null>(null)\n\n // ─── 缩放 & 平移 ───\n const zoom = ref(props.initialZoom)\n const panX = ref(0)\n const panY = ref(0)\n const isPanning = ref(false)\n const panStartX = ref(0)\n const panStartY = ref(0)\n\n const zoomPercent = computed(() => Math.round(zoom.value * 100))\n\n const cssVars = computed(() => ({\n '--c-orgchart-line-color': props.lineColor,\n '--c-orgchart-line-width': `${props.lineWidth}px`,\n '--c-orgchart-node-spacing': `${props.nodeSpacing}px`,\n '--c-orgchart-level-spacing': `${props.levelSpacing}px`,\n }))\n\n const viewportStyle = computed(() => ({\n transform: `translate(${panX.value}px, ${panY.value}px) scale(${zoom.value})`,\n transformOrigin: 'center top',\n }))\n\n /**\n * * @description: 鼠标滚轮缩放\n */\n const handleWheel = (e: WheelEvent) => {\n if (!props.zoomable) return\n const delta = e.deltaY > 0 ? -0.1 : 0.1\n const newZoom = Math.max(\n props.minZoom,\n Math.min(props.maxZoom, zoom.value + delta)\n )\n zoom.value = Math.round(newZoom * 100) / 100\n }\n\n const handlePanStart = (e: MouseEvent) => {\n if (!props.pannable) return\n isPanning.value = true\n panStartX.value = e.clientX - panX.value\n panStartY.value = e.clientY - panY.value\n }\n\n const handlePanMove = (e: MouseEvent) => {\n if (!isPanning.value) return\n panX.value = e.clientX - panStartX.value\n panY.value = e.clientY - panStartY.value\n }\n\n const handlePanEnd = () => {\n isPanning.value = false\n }\n\n const zoomIn = () => {\n zoom.value = Math.min(props.maxZoom, zoom.value + 0.1)\n }\n\n const zoomOut = () => {\n zoom.value = Math.max(props.minZoom, zoom.value - 0.1)\n }\n\n const resetView = () => {\n zoom.value = props.initialZoom\n panX.value = 0\n panY.value = 0\n }\n\n // ─── 事件桥接 ───\n const handleNodeClick = (node: OrgChartNode) => emit('node-click', node)\n const handleNodeExpand = (node: OrgChartNode) => emit('node-expand', node)\n const handleNodeCollapse = (node: OrgChartNode) => emit('node-collapse', node)\n\n defineExpose({\n zoomIn,\n zoomOut,\n resetView,\n zoom,\n })\n</script>\n\n<style lang=\"scss\">\n @use './index.scss';\n</style>\n","/* unplugin-vue-components disabled */<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2026-03-06\n * @Description: C_OrgChart 组织架构图组件\n * 纯 CSS + Vue 实现的树形组织架构图,支持缩放/平移/折叠\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\n-->\n<template>\n <div\n ref=\"containerRef\"\n class=\"c-orgchart\"\n :class=\"[\n `c-orgchart--${props.direction}`,\n `c-orgchart--line-${props.lineStyle}`,\n ]\"\n :style=\"cssVars\"\n @wheel.prevent=\"handleWheel\"\n @mousedown=\"handlePanStart\"\n @mousemove=\"handlePanMove\"\n @mouseup=\"handlePanEnd\"\n @mouseleave=\"handlePanEnd\"\n >\n <div\n class=\"c-orgchart__viewport\"\n :style=\"viewportStyle\"\n >\n <OrgNode\n :node=\"props.data\"\n :collapsible=\"props.collapsible\"\n @node-click=\"handleNodeClick\"\n @node-expand=\"handleNodeExpand\"\n @node-collapse=\"handleNodeCollapse\"\n >\n <template\n v-if=\"$slots.node\"\n #node=\"slotProps\"\n >\n <slot\n name=\"node\"\n v-bind=\"slotProps\"\n />\n </template>\n </OrgNode>\n </div>\n\n <!-- 缩放控制 -->\n <div\n v-if=\"props.zoomable\"\n class=\"c-orgchart__controls\"\n >\n <button\n class=\"c-orgchart__control-btn\"\n title=\"放大\"\n @click=\"zoomIn\"\n >\n +\n </button>\n <span class=\"c-orgchart__zoom-level\">{{ zoomPercent }}%</span>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"缩小\"\n @click=\"zoomOut\"\n >\n −\n </button>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"重置\"\n @click=\"resetView\"\n >\n ⟳\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { ref, computed } from 'vue'\n import OrgNode from './OrgNode.vue'\n import type { OrgChartProps, OrgChartNode } from './types'\n\n defineOptions({ name: 'C_OrgChart' })\n\n const props = withDefaults(defineProps<OrgChartProps>(), {\n direction: 'vertical',\n lineStyle: 'rounded',\n lineColor: '#d1d5db',\n lineWidth: 2,\n nodeSpacing: 24,\n levelSpacing: 48,\n zoomable: true,\n pannable: true,\n initialZoom: 1,\n minZoom: 0.3,\n maxZoom: 2,\n collapsible: true,\n })\n\n const emit = defineEmits<{\n 'node-click': [node: OrgChartNode]\n 'node-expand': [node: OrgChartNode]\n 'node-collapse': [node: OrgChartNode]\n }>()\n\n const containerRef = ref<HTMLElement | null>(null)\n\n // ─── 缩放 & 平移 ───\n const zoom = ref(props.initialZoom)\n const panX = ref(0)\n const panY = ref(0)\n const isPanning = ref(false)\n const panStartX = ref(0)\n const panStartY = ref(0)\n\n const zoomPercent = computed(() => Math.round(zoom.value * 100))\n\n const cssVars = computed(() => ({\n '--c-orgchart-line-color': props.lineColor,\n '--c-orgchart-line-width': `${props.lineWidth}px`,\n '--c-orgchart-node-spacing': `${props.nodeSpacing}px`,\n '--c-orgchart-level-spacing': `${props.levelSpacing}px`,\n }))\n\n const viewportStyle = computed(() => ({\n transform: `translate(${panX.value}px, ${panY.value}px) scale(${zoom.value})`,\n transformOrigin: 'center top',\n }))\n\n /**\n * * @description: 鼠标滚轮缩放\n */\n const handleWheel = (e: WheelEvent) => {\n if (!props.zoomable) return\n const delta = e.deltaY > 0 ? -0.1 : 0.1\n const newZoom = Math.max(\n props.minZoom,\n Math.min(props.maxZoom, zoom.value + delta)\n )\n zoom.value = Math.round(newZoom * 100) / 100\n }\n\n const handlePanStart = (e: MouseEvent) => {\n if (!props.pannable) return\n isPanning.value = true\n panStartX.value = e.clientX - panX.value\n panStartY.value = e.clientY - panY.value\n }\n\n const handlePanMove = (e: MouseEvent) => {\n if (!isPanning.value) return\n panX.value = e.clientX - panStartX.value\n panY.value = e.clientY - panStartY.value\n }\n\n const handlePanEnd = () => {\n isPanning.value = false\n }\n\n const zoomIn = () => {\n zoom.value = Math.min(props.maxZoom, zoom.value + 0.1)\n }\n\n const zoomOut = () => {\n zoom.value = Math.max(props.minZoom, zoom.value - 0.1)\n }\n\n const resetView = () => {\n zoom.value = props.initialZoom\n panX.value = 0\n panY.value = 0\n }\n\n // ─── 事件桥接 ───\n const handleNodeClick = (node: OrgChartNode) => emit('node-click', node)\n const handleNodeExpand = (node: OrgChartNode) => emit('node-expand', node)\n const handleNodeCollapse = (node: OrgChartNode) => emit('node-collapse', node)\n\n defineExpose({\n zoomIn,\n zoomOut,\n resetView,\n zoom,\n })\n</script>\n\n<style lang=\"scss\">\n @use './index.scss';\n</style>\n","<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2026-03-06\n * @Description: C_OrgChart 组织架构图组件\n * 纯 CSS + Vue 实现的树形组织架构图,支持缩放/平移/折叠\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\n-->\n<template>\n <div\n ref=\"containerRef\"\n class=\"c-orgchart\"\n :class=\"[\n `c-orgchart--${props.direction}`,\n `c-orgchart--line-${props.lineStyle}`,\n ]\"\n :style=\"cssVars\"\n @wheel.prevent=\"handleWheel\"\n @mousedown=\"handlePanStart\"\n @mousemove=\"handlePanMove\"\n @mouseup=\"handlePanEnd\"\n @mouseleave=\"handlePanEnd\"\n >\n <div\n class=\"c-orgchart__viewport\"\n :style=\"viewportStyle\"\n >\n <OrgNode\n :node=\"props.data\"\n :collapsible=\"props.collapsible\"\n @node-click=\"handleNodeClick\"\n @node-expand=\"handleNodeExpand\"\n @node-collapse=\"handleNodeCollapse\"\n >\n <template\n v-if=\"$slots.node\"\n #node=\"slotProps\"\n >\n <slot\n name=\"node\"\n v-bind=\"slotProps\"\n />\n </template>\n </OrgNode>\n </div>\n\n <!-- 缩放控制 -->\n <div\n v-if=\"props.zoomable\"\n class=\"c-orgchart__controls\"\n >\n <button\n class=\"c-orgchart__control-btn\"\n title=\"放大\"\n @click=\"zoomIn\"\n >\n +\n </button>\n <span class=\"c-orgchart__zoom-level\">{{ zoomPercent }}%</span>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"缩小\"\n @click=\"zoomOut\"\n >\n −\n </button>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"重置\"\n @click=\"resetView\"\n >\n ⟳\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { ref, computed } from 'vue'\n import OrgNode from './OrgNode.vue'\n import type { OrgChartProps, OrgChartNode } from './types'\n\n defineOptions({ name: 'C_OrgChart' })\n\n const props = withDefaults(defineProps<OrgChartProps>(), {\n direction: 'vertical',\n lineStyle: 'rounded',\n lineColor: '#d1d5db',\n lineWidth: 2,\n nodeSpacing: 24,\n levelSpacing: 48,\n zoomable: true,\n pannable: true,\n initialZoom: 1,\n minZoom: 0.3,\n maxZoom: 2,\n collapsible: true,\n })\n\n const emit = defineEmits<{\n 'node-click': [node: OrgChartNode]\n 'node-expand': [node: OrgChartNode]\n 'node-collapse': [node: OrgChartNode]\n }>()\n\n const containerRef = ref<HTMLElement | null>(null)\n\n // ─── 缩放 & 平移 ───\n const zoom = ref(props.initialZoom)\n const panX = ref(0)\n const panY = ref(0)\n const isPanning = ref(false)\n const panStartX = ref(0)\n const panStartY = ref(0)\n\n const zoomPercent = computed(() => Math.round(zoom.value * 100))\n\n const cssVars = computed(() => ({\n '--c-orgchart-line-color': props.lineColor,\n '--c-orgchart-line-width': `${props.lineWidth}px`,\n '--c-orgchart-node-spacing': `${props.nodeSpacing}px`,\n '--c-orgchart-level-spacing': `${props.levelSpacing}px`,\n }))\n\n const viewportStyle = computed(() => ({\n transform: `translate(${panX.value}px, ${panY.value}px) scale(${zoom.value})`,\n transformOrigin: 'center top',\n }))\n\n /**\n * * @description: 鼠标滚轮缩放\n */\n const handleWheel = (e: WheelEvent) => {\n if (!props.zoomable) return\n const delta = e.deltaY > 0 ? -0.1 : 0.1\n const newZoom = Math.max(\n props.minZoom,\n Math.min(props.maxZoom, zoom.value + delta)\n )\n zoom.value = Math.round(newZoom * 100) / 100\n }\n\n const handlePanStart = (e: MouseEvent) => {\n if (!props.pannable) return\n isPanning.value = true\n panStartX.value = e.clientX - panX.value\n panStartY.value = e.clientY - panY.value\n }\n\n const handlePanMove = (e: MouseEvent) => {\n if (!isPanning.value) return\n panX.value = e.clientX - panStartX.value\n panY.value = e.clientY - panStartY.value\n }\n\n const handlePanEnd = () => {\n isPanning.value = false\n }\n\n const zoomIn = () => {\n zoom.value = Math.min(props.maxZoom, zoom.value + 0.1)\n }\n\n const zoomOut = () => {\n zoom.value = Math.max(props.minZoom, zoom.value - 0.1)\n }\n\n const resetView = () => {\n zoom.value = props.initialZoom\n panX.value = 0\n panY.value = 0\n }\n\n // ─── 事件桥接 ───\n const handleNodeClick = (node: OrgChartNode) => emit('node-click', node)\n const handleNodeExpand = (node: OrgChartNode) => emit('node-expand', node)\n const handleNodeCollapse = (node: OrgChartNode) => emit('node-collapse', node)\n\n defineExpose({\n zoomIn,\n zoomOut,\n resetView,\n zoom,\n })\n</script>\n\n<style lang=\"scss\">\n @use './index.scss';\n</style>\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Fragment as e,computed as t,createBlock as n,createCommentVNode as r,createElementBlock as i,createElementVNode as a,createSlots as o,createVNode as s,defineComponent as c,guardReactiveProps as l,normalizeClass as u,normalizeProps as d,normalizeStyle as f,openBlock as p,ref as m,renderList as h,renderSlot as g,resolveComponent as _,toDisplayString as v,withCtx as y,withModifiers as b}from"vue";const x={class:`c-orgchart__node-wrapper`},S={class:`c-orgchart__node-default`},C={key:0,class:`c-orgchart__avatar`},w=[`src`,`alt`],T={class:`c-orgchart__info`},E={class:`c-orgchart__label`},D={key:0,class:`c-orgchart__subtitle`},O={key:0,class:`c-orgchart__children`};var k=c({name:`OrgNode`,__name:`OrgNode`,props:{node:{},collapsible:{type:Boolean}},emits:[`node-click`,`node-expand`,`node-collapse`],setup(o){let s=o,c=m(!s.node.collapsed),l=t(()=>s.node.children&&s.node.children.length>0),d=t(()=>!l.value),f=()=>{c.value=!c.value};return(t,o)=>{let s=_(`OrgNode`,!0);return p(),i(`div`,x,[r(` 节点卡片 `),a(`div`,{class:u([`c-orgchart__node`,[t.node.className,{"c-orgchart__node--leaf":d.value}]]),onClick:o[0]||=b(e=>t.$emit(`node-click`,t.node),[`stop`])},[g(t.$slots,`node`,{node:t.node,isLeaf:d.value,isExpanded:c.value},()=>[r(` 默认节点渲染 `),a(`div`,S,[t.node.avatar?(p(),i(`div`,C,[a(`img`,{src:t.node.avatar,alt:t.node.label},null,8,w)])):r(`v-if`,!0),a(`div`,T,[a(`div`,E,v(t.node.label),1),t.node.subtitle?(p(),i(`div`,D,v(t.node.subtitle),1)):r(`v-if`,!0)])])]),r(` 折叠/展开按钮 `),t.collapsible&&!d.value?(p(),i(`button`,{key:0,class:`c-orgchart__toggle`,onClick:b(f,[`stop`])},v(c.value?`−`:`+`),1)):r(`v-if`,!0)],2),r(` 子节点容器 `),l.value&&c.value?(p(),i(`div`,O,[(p(!0),i(e,null,h(t.node.children,e=>(p(),n(s,{key:e.id,node:e,collapsible:t.collapsible,onNodeClick:o[1]||=e=>t.$emit(`node-click`,e),onNodeExpand:o[2]||=e=>t.$emit(`node-expand`,e),onNodeCollapse:o[3]||=e=>t.$emit(`node-collapse`,e)},null,8,[`node`,`collapsible`]))),128))])):r(`v-if`,!0)])}}});const A={key:0,class:`c-orgchart__controls`},j={class:`c-orgchart__zoom-level`};var M=c({name:`C_OrgChart`,__name:`index`,props:{data:{},direction:{default:`vertical`},lineStyle:{default:`rounded`},lineColor:{default:`#d1d5db`},lineWidth:{default:2},nodeSpacing:{default:24},levelSpacing:{default:48},zoomable:{type:Boolean,default:!0},pannable:{type:Boolean,default:!0},initialZoom:{default:1},minZoom:{default:.3},maxZoom:{default:2},collapsible:{type:Boolean,default:!0}},emits:[`node-click`,`node-expand`,`node-collapse`],setup(e,{expose:n,emit:c}){let h=e,_=c,x=m(null),S=m(h.initialZoom),C=m(0),w=m(0),T=m(!1),E=m(0),D=m(0),O=t(()=>Math.round(S.value*100)),M=t(()=>({"--c-orgchart-line-color":h.lineColor,"--c-orgchart-line-width":`${h.lineWidth}px`,"--c-orgchart-node-spacing":`${h.nodeSpacing}px`,"--c-orgchart-level-spacing":`${h.levelSpacing}px`})),N=t(()=>({transform:`translate(${C.value}px, ${w.value}px) scale(${S.value})`,transformOrigin:`center top`})),P=e=>{if(!h.zoomable)return;let t=e.deltaY>0?-.1:.1,n=Math.max(h.minZoom,Math.min(h.maxZoom,S.value+t));S.value=Math.round(n*100)/100},F=e=>{h.pannable&&(T.value=!0,E.value=e.clientX-C.value,D.value=e.clientY-w.value)},I=e=>{T.value&&(C.value=e.clientX-E.value,w.value=e.clientY-D.value)},L=()=>{T.value=!1},R=()=>{S.value=Math.min(h.maxZoom,S.value+.1)},z=()=>{S.value=Math.max(h.minZoom,S.value-.1)},B=()=>{S.value=h.initialZoom,C.value=0,w.value=0},V=e=>_(`node-click`,e),H=e=>_(`node-expand`,e),U=e=>_(`node-collapse`,e);return n({zoomIn:R,zoomOut:z,resetView:B,zoom:S}),(e,t)=>(p(),i(`div`,{ref_key:`containerRef`,ref:x,class:u([`c-orgchart`,[`c-orgchart--${h.direction}`,`c-orgchart--line-${h.lineStyle}`]]),style:f(M.value),onWheel:b(P,[`prevent`]),onMousedown:F,onMousemove:I,onMouseup:L,onMouseleave:L},[a(`div`,{class:`c-orgchart__viewport`,style:f(N.value)},[s(k,{node:h.data,collapsible:h.collapsible,onNodeClick:V,onNodeExpand:H,onNodeCollapse:U},o({_:2},[e.$slots.node?{name:`node`,fn:y(t=>[g(e.$slots,`node`,d(l(t)))]),key:`0`}:void 0]),1032,[`node`,`collapsible`])],4),r(` 缩放控制 `),h.zoomable?(p(),i(`div`,A,[a(`button`,{class:`c-orgchart__control-btn`,title:`放大`,onClick:R},` + `),a(`span`,j,v(O.value)+`%`,1),a(`button`,{class:`c-orgchart__control-btn`,title:`缩小`,onClick:z},` − `),a(`button`,{class:`c-orgchart__control-btn`,title:`重置`,onClick:B},` ⟳ `)])):r(`v-if`,!0)],38))}});export{M as t};
|
|
2
|
+
//# sourceMappingURL=C_OrgChart2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"C_OrgChart2.js","names":["node","$emit","collapsible","$slots"],"sources":["../src/components/C_OrgChart/OrgNode.vue","../src/components/C_OrgChart/OrgNode.vue","../src/components/C_OrgChart/OrgNode.vue","../src/components/C_OrgChart/index.vue","../src/components/C_OrgChart/index.vue","../src/components/C_OrgChart/index.vue"],"sourcesContent":["/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2026-03-06\r\n * @Description: C_OrgChart 递归节点组件\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\r\n-->\r\n<template>\r\n <div class=\"c-orgchart__node-wrapper\">\r\n <!-- 节点卡片 -->\r\n <div\r\n class=\"c-orgchart__node\"\r\n :class=\"[node.className, { 'c-orgchart__node--leaf': isLeaf }]\"\r\n @click.stop=\"$emit('node-click', node)\"\r\n >\r\n <slot\r\n name=\"node\"\r\n :node=\"node\"\r\n :is-leaf=\"isLeaf\"\r\n :is-expanded=\"isExpanded\"\r\n >\r\n <!-- 默认节点渲染 -->\r\n <div class=\"c-orgchart__node-default\">\r\n <div\r\n v-if=\"node.avatar\"\r\n class=\"c-orgchart__avatar\"\r\n >\r\n <img\r\n :src=\"node.avatar\"\r\n :alt=\"node.label\"\r\n />\r\n </div>\r\n <div class=\"c-orgchart__info\">\r\n <div class=\"c-orgchart__label\">{{ node.label }}</div>\r\n <div\r\n v-if=\"node.subtitle\"\r\n class=\"c-orgchart__subtitle\"\r\n >\r\n {{ node.subtitle }}\r\n </div>\r\n </div>\r\n </div>\r\n </slot>\r\n\r\n <!-- 折叠/展开按钮 -->\r\n <button\r\n v-if=\"collapsible && !isLeaf\"\r\n class=\"c-orgchart__toggle\"\r\n @click.stop=\"toggleExpand\"\r\n >\r\n {{ isExpanded ? '−' : '+' }}\r\n </button>\r\n </div>\r\n\r\n <!-- 子节点容器 -->\r\n <div\r\n v-if=\"hasChildren && isExpanded\"\r\n class=\"c-orgchart__children\"\r\n >\r\n <OrgNode\r\n v-for=\"child in node.children\"\r\n :key=\"child.id\"\r\n :node=\"child\"\r\n :collapsible=\"collapsible\"\r\n @node-click=\"$emit('node-click', $event)\"\r\n @node-expand=\"$emit('node-expand', $event)\"\r\n @node-collapse=\"$emit('node-collapse', $event)\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { ref, computed } from 'vue'\r\n import type { OrgChartNode } from './types'\r\n\r\n defineOptions({ name: 'OrgNode' })\r\n\r\n const props = defineProps<{\r\n node: OrgChartNode\r\n collapsible?: boolean\r\n }>()\r\n\r\n defineEmits<{\r\n 'node-click': [node: OrgChartNode]\r\n 'node-expand': [node: OrgChartNode]\r\n 'node-collapse': [node: OrgChartNode]\r\n }>()\r\n\r\n const isExpanded = ref(!props.node.collapsed)\r\n\r\n const hasChildren = computed(\r\n () => props.node.children && props.node.children.length > 0\r\n )\r\n\r\n const isLeaf = computed(() => !hasChildren.value)\r\n\r\n const toggleExpand = () => {\r\n isExpanded.value = !isExpanded.value\r\n }\r\n</script>\r\n","/* unplugin-vue-components disabled */<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2026-03-06\r\n * @Description: C_OrgChart 递归节点组件\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\r\n-->\r\n<template>\r\n <div class=\"c-orgchart__node-wrapper\">\r\n <!-- 节点卡片 -->\r\n <div\r\n class=\"c-orgchart__node\"\r\n :class=\"[node.className, { 'c-orgchart__node--leaf': isLeaf }]\"\r\n @click.stop=\"$emit('node-click', node)\"\r\n >\r\n <slot\r\n name=\"node\"\r\n :node=\"node\"\r\n :is-leaf=\"isLeaf\"\r\n :is-expanded=\"isExpanded\"\r\n >\r\n <!-- 默认节点渲染 -->\r\n <div class=\"c-orgchart__node-default\">\r\n <div\r\n v-if=\"node.avatar\"\r\n class=\"c-orgchart__avatar\"\r\n >\r\n <img\r\n :src=\"node.avatar\"\r\n :alt=\"node.label\"\r\n />\r\n </div>\r\n <div class=\"c-orgchart__info\">\r\n <div class=\"c-orgchart__label\">{{ node.label }}</div>\r\n <div\r\n v-if=\"node.subtitle\"\r\n class=\"c-orgchart__subtitle\"\r\n >\r\n {{ node.subtitle }}\r\n </div>\r\n </div>\r\n </div>\r\n </slot>\r\n\r\n <!-- 折叠/展开按钮 -->\r\n <button\r\n v-if=\"collapsible && !isLeaf\"\r\n class=\"c-orgchart__toggle\"\r\n @click.stop=\"toggleExpand\"\r\n >\r\n {{ isExpanded ? '−' : '+' }}\r\n </button>\r\n </div>\r\n\r\n <!-- 子节点容器 -->\r\n <div\r\n v-if=\"hasChildren && isExpanded\"\r\n class=\"c-orgchart__children\"\r\n >\r\n <OrgNode\r\n v-for=\"child in node.children\"\r\n :key=\"child.id\"\r\n :node=\"child\"\r\n :collapsible=\"collapsible\"\r\n @node-click=\"$emit('node-click', $event)\"\r\n @node-expand=\"$emit('node-expand', $event)\"\r\n @node-collapse=\"$emit('node-collapse', $event)\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { ref, computed } from 'vue'\r\n import type { OrgChartNode } from './types'\r\n\r\n defineOptions({ name: 'OrgNode' })\r\n\r\n const props = defineProps<{\r\n node: OrgChartNode\r\n collapsible?: boolean\r\n }>()\r\n\r\n defineEmits<{\r\n 'node-click': [node: OrgChartNode]\r\n 'node-expand': [node: OrgChartNode]\r\n 'node-collapse': [node: OrgChartNode]\r\n }>()\r\n\r\n const isExpanded = ref(!props.node.collapsed)\r\n\r\n const hasChildren = computed(\r\n () => props.node.children && props.node.children.length > 0\r\n )\r\n\r\n const isLeaf = computed(() => !hasChildren.value)\r\n\r\n const toggleExpand = () => {\r\n isExpanded.value = !isExpanded.value\r\n }\r\n</script>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2026-03-06\r\n * @Description: C_OrgChart 递归节点组件\r\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\r\n-->\r\n<template>\r\n <div class=\"c-orgchart__node-wrapper\">\r\n <!-- 节点卡片 -->\r\n <div\r\n class=\"c-orgchart__node\"\r\n :class=\"[node.className, { 'c-orgchart__node--leaf': isLeaf }]\"\r\n @click.stop=\"$emit('node-click', node)\"\r\n >\r\n <slot\r\n name=\"node\"\r\n :node=\"node\"\r\n :is-leaf=\"isLeaf\"\r\n :is-expanded=\"isExpanded\"\r\n >\r\n <!-- 默认节点渲染 -->\r\n <div class=\"c-orgchart__node-default\">\r\n <div\r\n v-if=\"node.avatar\"\r\n class=\"c-orgchart__avatar\"\r\n >\r\n <img\r\n :src=\"node.avatar\"\r\n :alt=\"node.label\"\r\n />\r\n </div>\r\n <div class=\"c-orgchart__info\">\r\n <div class=\"c-orgchart__label\">{{ node.label }}</div>\r\n <div\r\n v-if=\"node.subtitle\"\r\n class=\"c-orgchart__subtitle\"\r\n >\r\n {{ node.subtitle }}\r\n </div>\r\n </div>\r\n </div>\r\n </slot>\r\n\r\n <!-- 折叠/展开按钮 -->\r\n <button\r\n v-if=\"collapsible && !isLeaf\"\r\n class=\"c-orgchart__toggle\"\r\n @click.stop=\"toggleExpand\"\r\n >\r\n {{ isExpanded ? '−' : '+' }}\r\n </button>\r\n </div>\r\n\r\n <!-- 子节点容器 -->\r\n <div\r\n v-if=\"hasChildren && isExpanded\"\r\n class=\"c-orgchart__children\"\r\n >\r\n <OrgNode\r\n v-for=\"child in node.children\"\r\n :key=\"child.id\"\r\n :node=\"child\"\r\n :collapsible=\"collapsible\"\r\n @node-click=\"$emit('node-click', $event)\"\r\n @node-expand=\"$emit('node-expand', $event)\"\r\n @node-collapse=\"$emit('node-collapse', $event)\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { ref, computed } from 'vue'\r\n import type { OrgChartNode } from './types'\r\n\r\n defineOptions({ name: 'OrgNode' })\r\n\r\n const props = defineProps<{\r\n node: OrgChartNode\r\n collapsible?: boolean\r\n }>()\r\n\r\n defineEmits<{\r\n 'node-click': [node: OrgChartNode]\r\n 'node-expand': [node: OrgChartNode]\r\n 'node-collapse': [node: OrgChartNode]\r\n }>()\r\n\r\n const isExpanded = ref(!props.node.collapsed)\r\n\r\n const hasChildren = computed(\r\n () => props.node.children && props.node.children.length > 0\r\n )\r\n\r\n const isLeaf = computed(() => !hasChildren.value)\r\n\r\n const toggleExpand = () => {\r\n isExpanded.value = !isExpanded.value\r\n }\r\n</script>\r\n","/* unplugin-vue-components disabled */<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2026-03-06\n * @Description: C_OrgChart 组织架构图组件\n * 纯 CSS + Vue 实现的树形组织架构图,支持缩放/平移/折叠\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\n-->\n<template>\n <div\n ref=\"containerRef\"\n class=\"c-orgchart\"\n :class=\"[\n `c-orgchart--${props.direction}`,\n `c-orgchart--line-${props.lineStyle}`,\n ]\"\n :style=\"cssVars\"\n @wheel.prevent=\"handleWheel\"\n @mousedown=\"handlePanStart\"\n @mousemove=\"handlePanMove\"\n @mouseup=\"handlePanEnd\"\n @mouseleave=\"handlePanEnd\"\n >\n <div\n class=\"c-orgchart__viewport\"\n :style=\"viewportStyle\"\n >\n <OrgNode\n :node=\"props.data\"\n :collapsible=\"props.collapsible\"\n @node-click=\"handleNodeClick\"\n @node-expand=\"handleNodeExpand\"\n @node-collapse=\"handleNodeCollapse\"\n >\n <template\n v-if=\"$slots.node\"\n #node=\"slotProps\"\n >\n <slot\n name=\"node\"\n v-bind=\"slotProps\"\n />\n </template>\n </OrgNode>\n </div>\n\n <!-- 缩放控制 -->\n <div\n v-if=\"props.zoomable\"\n class=\"c-orgchart__controls\"\n >\n <button\n class=\"c-orgchart__control-btn\"\n title=\"放大\"\n @click=\"zoomIn\"\n >\n +\n </button>\n <span class=\"c-orgchart__zoom-level\">{{ zoomPercent }}%</span>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"缩小\"\n @click=\"zoomOut\"\n >\n −\n </button>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"重置\"\n @click=\"resetView\"\n >\n ⟳\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { ref, computed } from 'vue'\n import OrgNode from './OrgNode.vue'\n import type { OrgChartProps, OrgChartNode } from './types'\n\n defineOptions({ name: 'C_OrgChart' })\n\n const props = withDefaults(defineProps<OrgChartProps>(), {\n direction: 'vertical',\n lineStyle: 'rounded',\n lineColor: '#d1d5db',\n lineWidth: 2,\n nodeSpacing: 24,\n levelSpacing: 48,\n zoomable: true,\n pannable: true,\n initialZoom: 1,\n minZoom: 0.3,\n maxZoom: 2,\n collapsible: true,\n })\n\n const emit = defineEmits<{\n 'node-click': [node: OrgChartNode]\n 'node-expand': [node: OrgChartNode]\n 'node-collapse': [node: OrgChartNode]\n }>()\n\n const containerRef = ref<HTMLElement | null>(null)\n\n // ─── 缩放 & 平移 ───\n const zoom = ref(props.initialZoom)\n const panX = ref(0)\n const panY = ref(0)\n const isPanning = ref(false)\n const panStartX = ref(0)\n const panStartY = ref(0)\n\n const zoomPercent = computed(() => Math.round(zoom.value * 100))\n\n const cssVars = computed(() => ({\n '--c-orgchart-line-color': props.lineColor,\n '--c-orgchart-line-width': `${props.lineWidth}px`,\n '--c-orgchart-node-spacing': `${props.nodeSpacing}px`,\n '--c-orgchart-level-spacing': `${props.levelSpacing}px`,\n }))\n\n const viewportStyle = computed(() => ({\n transform: `translate(${panX.value}px, ${panY.value}px) scale(${zoom.value})`,\n transformOrigin: 'center top',\n }))\n\n /**\n * * @description: 鼠标滚轮缩放\n */\n const handleWheel = (e: WheelEvent) => {\n if (!props.zoomable) return\n const delta = e.deltaY > 0 ? -0.1 : 0.1\n const newZoom = Math.max(\n props.minZoom,\n Math.min(props.maxZoom, zoom.value + delta)\n )\n zoom.value = Math.round(newZoom * 100) / 100\n }\n\n const handlePanStart = (e: MouseEvent) => {\n if (!props.pannable) return\n isPanning.value = true\n panStartX.value = e.clientX - panX.value\n panStartY.value = e.clientY - panY.value\n }\n\n const handlePanMove = (e: MouseEvent) => {\n if (!isPanning.value) return\n panX.value = e.clientX - panStartX.value\n panY.value = e.clientY - panStartY.value\n }\n\n const handlePanEnd = () => {\n isPanning.value = false\n }\n\n const zoomIn = () => {\n zoom.value = Math.min(props.maxZoom, zoom.value + 0.1)\n }\n\n const zoomOut = () => {\n zoom.value = Math.max(props.minZoom, zoom.value - 0.1)\n }\n\n const resetView = () => {\n zoom.value = props.initialZoom\n panX.value = 0\n panY.value = 0\n }\n\n // ─── 事件桥接 ───\n const handleNodeClick = (node: OrgChartNode) => emit('node-click', node)\n const handleNodeExpand = (node: OrgChartNode) => emit('node-expand', node)\n const handleNodeCollapse = (node: OrgChartNode) => emit('node-collapse', node)\n\n defineExpose({\n zoomIn,\n zoomOut,\n resetView,\n zoom,\n })\n</script>\n\n<style lang=\"scss\">\n @use './index.scss';\n</style>\n","/* unplugin-vue-components disabled */<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2026-03-06\n * @Description: C_OrgChart 组织架构图组件\n * 纯 CSS + Vue 实现的树形组织架构图,支持缩放/平移/折叠\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\n-->\n<template>\n <div\n ref=\"containerRef\"\n class=\"c-orgchart\"\n :class=\"[\n `c-orgchart--${props.direction}`,\n `c-orgchart--line-${props.lineStyle}`,\n ]\"\n :style=\"cssVars\"\n @wheel.prevent=\"handleWheel\"\n @mousedown=\"handlePanStart\"\n @mousemove=\"handlePanMove\"\n @mouseup=\"handlePanEnd\"\n @mouseleave=\"handlePanEnd\"\n >\n <div\n class=\"c-orgchart__viewport\"\n :style=\"viewportStyle\"\n >\n <OrgNode\n :node=\"props.data\"\n :collapsible=\"props.collapsible\"\n @node-click=\"handleNodeClick\"\n @node-expand=\"handleNodeExpand\"\n @node-collapse=\"handleNodeCollapse\"\n >\n <template\n v-if=\"$slots.node\"\n #node=\"slotProps\"\n >\n <slot\n name=\"node\"\n v-bind=\"slotProps\"\n />\n </template>\n </OrgNode>\n </div>\n\n <!-- 缩放控制 -->\n <div\n v-if=\"props.zoomable\"\n class=\"c-orgchart__controls\"\n >\n <button\n class=\"c-orgchart__control-btn\"\n title=\"放大\"\n @click=\"zoomIn\"\n >\n +\n </button>\n <span class=\"c-orgchart__zoom-level\">{{ zoomPercent }}%</span>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"缩小\"\n @click=\"zoomOut\"\n >\n −\n </button>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"重置\"\n @click=\"resetView\"\n >\n ⟳\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { ref, computed } from 'vue'\n import OrgNode from './OrgNode.vue'\n import type { OrgChartProps, OrgChartNode } from './types'\n\n defineOptions({ name: 'C_OrgChart' })\n\n const props = withDefaults(defineProps<OrgChartProps>(), {\n direction: 'vertical',\n lineStyle: 'rounded',\n lineColor: '#d1d5db',\n lineWidth: 2,\n nodeSpacing: 24,\n levelSpacing: 48,\n zoomable: true,\n pannable: true,\n initialZoom: 1,\n minZoom: 0.3,\n maxZoom: 2,\n collapsible: true,\n })\n\n const emit = defineEmits<{\n 'node-click': [node: OrgChartNode]\n 'node-expand': [node: OrgChartNode]\n 'node-collapse': [node: OrgChartNode]\n }>()\n\n const containerRef = ref<HTMLElement | null>(null)\n\n // ─── 缩放 & 平移 ───\n const zoom = ref(props.initialZoom)\n const panX = ref(0)\n const panY = ref(0)\n const isPanning = ref(false)\n const panStartX = ref(0)\n const panStartY = ref(0)\n\n const zoomPercent = computed(() => Math.round(zoom.value * 100))\n\n const cssVars = computed(() => ({\n '--c-orgchart-line-color': props.lineColor,\n '--c-orgchart-line-width': `${props.lineWidth}px`,\n '--c-orgchart-node-spacing': `${props.nodeSpacing}px`,\n '--c-orgchart-level-spacing': `${props.levelSpacing}px`,\n }))\n\n const viewportStyle = computed(() => ({\n transform: `translate(${panX.value}px, ${panY.value}px) scale(${zoom.value})`,\n transformOrigin: 'center top',\n }))\n\n /**\n * * @description: 鼠标滚轮缩放\n */\n const handleWheel = (e: WheelEvent) => {\n if (!props.zoomable) return\n const delta = e.deltaY > 0 ? -0.1 : 0.1\n const newZoom = Math.max(\n props.minZoom,\n Math.min(props.maxZoom, zoom.value + delta)\n )\n zoom.value = Math.round(newZoom * 100) / 100\n }\n\n const handlePanStart = (e: MouseEvent) => {\n if (!props.pannable) return\n isPanning.value = true\n panStartX.value = e.clientX - panX.value\n panStartY.value = e.clientY - panY.value\n }\n\n const handlePanMove = (e: MouseEvent) => {\n if (!isPanning.value) return\n panX.value = e.clientX - panStartX.value\n panY.value = e.clientY - panStartY.value\n }\n\n const handlePanEnd = () => {\n isPanning.value = false\n }\n\n const zoomIn = () => {\n zoom.value = Math.min(props.maxZoom, zoom.value + 0.1)\n }\n\n const zoomOut = () => {\n zoom.value = Math.max(props.minZoom, zoom.value - 0.1)\n }\n\n const resetView = () => {\n zoom.value = props.initialZoom\n panX.value = 0\n panY.value = 0\n }\n\n // ─── 事件桥接 ───\n const handleNodeClick = (node: OrgChartNode) => emit('node-click', node)\n const handleNodeExpand = (node: OrgChartNode) => emit('node-expand', node)\n const handleNodeCollapse = (node: OrgChartNode) => emit('node-collapse', node)\n\n defineExpose({\n zoomIn,\n zoomOut,\n resetView,\n zoom,\n })\n</script>\n\n<style lang=\"scss\">\n @use './index.scss';\n</style>\n","<!--\n * @Author: ChenYu ycyplus@gmail.com\n * @Date: 2026-03-06\n * @Description: C_OrgChart 组织架构图组件\n * 纯 CSS + Vue 实现的树形组织架构图,支持缩放/平移/折叠\n * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.\n-->\n<template>\n <div\n ref=\"containerRef\"\n class=\"c-orgchart\"\n :class=\"[\n `c-orgchart--${props.direction}`,\n `c-orgchart--line-${props.lineStyle}`,\n ]\"\n :style=\"cssVars\"\n @wheel.prevent=\"handleWheel\"\n @mousedown=\"handlePanStart\"\n @mousemove=\"handlePanMove\"\n @mouseup=\"handlePanEnd\"\n @mouseleave=\"handlePanEnd\"\n >\n <div\n class=\"c-orgchart__viewport\"\n :style=\"viewportStyle\"\n >\n <OrgNode\n :node=\"props.data\"\n :collapsible=\"props.collapsible\"\n @node-click=\"handleNodeClick\"\n @node-expand=\"handleNodeExpand\"\n @node-collapse=\"handleNodeCollapse\"\n >\n <template\n v-if=\"$slots.node\"\n #node=\"slotProps\"\n >\n <slot\n name=\"node\"\n v-bind=\"slotProps\"\n />\n </template>\n </OrgNode>\n </div>\n\n <!-- 缩放控制 -->\n <div\n v-if=\"props.zoomable\"\n class=\"c-orgchart__controls\"\n >\n <button\n class=\"c-orgchart__control-btn\"\n title=\"放大\"\n @click=\"zoomIn\"\n >\n +\n </button>\n <span class=\"c-orgchart__zoom-level\">{{ zoomPercent }}%</span>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"缩小\"\n @click=\"zoomOut\"\n >\n −\n </button>\n <button\n class=\"c-orgchart__control-btn\"\n title=\"重置\"\n @click=\"resetView\"\n >\n ⟳\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { ref, computed } from 'vue'\n import OrgNode from './OrgNode.vue'\n import type { OrgChartProps, OrgChartNode } from './types'\n\n defineOptions({ name: 'C_OrgChart' })\n\n const props = withDefaults(defineProps<OrgChartProps>(), {\n direction: 'vertical',\n lineStyle: 'rounded',\n lineColor: '#d1d5db',\n lineWidth: 2,\n nodeSpacing: 24,\n levelSpacing: 48,\n zoomable: true,\n pannable: true,\n initialZoom: 1,\n minZoom: 0.3,\n maxZoom: 2,\n collapsible: true,\n })\n\n const emit = defineEmits<{\n 'node-click': [node: OrgChartNode]\n 'node-expand': [node: OrgChartNode]\n 'node-collapse': [node: OrgChartNode]\n }>()\n\n const containerRef = ref<HTMLElement | null>(null)\n\n // ─── 缩放 & 平移 ───\n const zoom = ref(props.initialZoom)\n const panX = ref(0)\n const panY = ref(0)\n const isPanning = ref(false)\n const panStartX = ref(0)\n const panStartY = ref(0)\n\n const zoomPercent = computed(() => Math.round(zoom.value * 100))\n\n const cssVars = computed(() => ({\n '--c-orgchart-line-color': props.lineColor,\n '--c-orgchart-line-width': `${props.lineWidth}px`,\n '--c-orgchart-node-spacing': `${props.nodeSpacing}px`,\n '--c-orgchart-level-spacing': `${props.levelSpacing}px`,\n }))\n\n const viewportStyle = computed(() => ({\n transform: `translate(${panX.value}px, ${panY.value}px) scale(${zoom.value})`,\n transformOrigin: 'center top',\n }))\n\n /**\n * * @description: 鼠标滚轮缩放\n */\n const handleWheel = (e: WheelEvent) => {\n if (!props.zoomable) return\n const delta = e.deltaY > 0 ? -0.1 : 0.1\n const newZoom = Math.max(\n props.minZoom,\n Math.min(props.maxZoom, zoom.value + delta)\n )\n zoom.value = Math.round(newZoom * 100) / 100\n }\n\n const handlePanStart = (e: MouseEvent) => {\n if (!props.pannable) return\n isPanning.value = true\n panStartX.value = e.clientX - panX.value\n panStartY.value = e.clientY - panY.value\n }\n\n const handlePanMove = (e: MouseEvent) => {\n if (!isPanning.value) return\n panX.value = e.clientX - panStartX.value\n panY.value = e.clientY - panStartY.value\n }\n\n const handlePanEnd = () => {\n isPanning.value = false\n }\n\n const zoomIn = () => {\n zoom.value = Math.min(props.maxZoom, zoom.value + 0.1)\n }\n\n const zoomOut = () => {\n zoom.value = Math.max(props.minZoom, zoom.value - 0.1)\n }\n\n const resetView = () => {\n zoom.value = props.initialZoom\n panX.value = 0\n panY.value = 0\n }\n\n // ─── 事件桥接 ───\n const handleNodeClick = (node: OrgChartNode) => emit('node-click', node)\n const handleNodeExpand = (node: OrgChartNode) => emit('node-expand', node)\n const handleNodeCollapse = (node: OrgChartNode) => emit('node-collapse', node)\n\n defineExpose({\n zoomIn,\n zoomOut,\n resetView,\n zoom,\n })\n</script>\n\n<style lang=\"scss\">\n @use './index.scss';\n</style>\n"],"mappings":"kzBE6EE,IAAM,EAAQ,EAWR,EAAa,EAAI,CAAC,EAAM,KAAK,UAAU,CAEvC,EAAc,MACZ,EAAM,KAAK,UAAY,EAAM,KAAK,SAAS,OAAS,EAC3D,CAEK,EAAS,MAAe,CAAC,EAAY,MAAM,CAE3C,MAAqB,CACzB,EAAW,MAAQ,CAAC,EAAW,sDA1FjC,EA6DM,MA7DN,EA6DM,CA5DJ,EAAA,SAAa,CACb,EA0CM,MAAA,CAzCJ,MAAK,EAAA,CAAC,mBAAkB,CACfA,EAAAA,KAAK,UAAS,CAAA,yBAA8B,EAAA,MAAM,CAAA,CAAA,CAAA,CAC1D,QAAK,AAAA,EAAA,KAAA,EAAA,GAAOC,EAAAA,MAAK,aAAeD,EAAAA,KAAI,CAAA,CAAA,OAAA,CAAA,GAErC,EA2BO,EAAA,OAAA,OAAA,CAzBJ,KAAMA,EAAAA,KACN,OAAS,EAAA,MACT,WAAa,EAAA,WAuBT,CArBL,EAAA,WAAe,CACf,EAmBM,MAnBN,EAmBM,CAjBIA,EAAAA,KAAK,QAAA,GAAA,CADb,EAQM,MARN,EAQM,CAJJ,EAGE,MAAA,CAFC,IAAKA,EAAAA,KAAK,OACV,IAAKA,EAAAA,KAAK,iCAGf,EAQM,MARN,EAQM,CAPJ,EAAqD,MAArD,EAAqD,EAAnBA,EAAAA,KAAK,MAAK,CAAA,EAAA,CAEpCA,EAAAA,KAAK,UAAA,GAAA,CADb,EAKM,MALN,EAKM,EADDA,EAAAA,KAAK,SAAQ,CAAA,EAAA,EAAA,EAAA,OAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAMxB,EAAA,YAAgB,CAERE,EAAAA,aAAW,CAAK,EAAA,OAAA,GAAA,CADxB,EAMS,SAAA,OAJP,MAAM,qBACL,QAAK,EAAO,EAAY,CAAA,OAAA,CAAA,IAEtB,EAAA,MAAU,IAAA,IAAA,CAAA,EAAA,EAAA,EAAA,OAAA,GAAA,KAIjB,EAAA,UAAc,CAEN,EAAA,OAAe,EAAA,OAAA,GAAA,CADvB,EAaM,MAbN,EAaM,EAAA,EAAA,GAAA,CATJ,EAQE,EAAA,KAAA,EAPgBF,EAAAA,KAAK,SAAd,QADT,EAQE,EAAA,CANC,IAAK,EAAM,GACX,KAAM,EACN,YAAaE,EAAAA,YACb,YAAU,AAAA,EAAA,KAAA,GAAED,EAAAA,MAAK,aAAe,EAAM,CACtC,aAAW,AAAA,EAAA,KAAA,GAAEA,EAAAA,MAAK,cAAgB,EAAM,CACxC,eAAa,AAAA,EAAA,KAAA,GAAEA,EAAAA,MAAK,gBAAkB,EAAM,wmBGkBnD,IAAM,EAAQ,EAeR,EAAO,EAMP,EAAe,EAAwB,KAAI,CAG3C,EAAO,EAAI,EAAM,YAAW,CAC5B,EAAO,EAAI,EAAC,CACZ,EAAO,EAAI,EAAC,CACZ,EAAY,EAAI,GAAK,CACrB,EAAY,EAAI,EAAC,CACjB,EAAY,EAAI,EAAC,CAEjB,EAAc,MAAe,KAAK,MAAM,EAAK,MAAQ,IAAI,CAAA,CAEzD,EAAU,OAAgB,CAC9B,0BAA2B,EAAM,UACjC,0BAA2B,GAAG,EAAM,UAAU,IAC9C,4BAA6B,GAAG,EAAM,YAAY,IAClD,6BAA8B,GAAG,EAAM,aAAa,IACrD,EAAC,CAEI,EAAgB,OAAgB,CACpC,UAAW,aAAa,EAAK,MAAM,MAAM,EAAK,MAAM,YAAY,EAAK,MAAM,GAC3E,gBAAiB,aAClB,EAAC,CAKI,EAAe,GAAkB,CACrC,GAAI,CAAC,EAAM,SAAU,OACrB,IAAM,EAAQ,EAAE,OAAS,EAAI,IAAO,GAC9B,EAAU,KAAK,IACnB,EAAM,QACN,KAAK,IAAI,EAAM,QAAS,EAAK,MAAQ,EAAK,CAC5C,CACA,EAAK,MAAQ,KAAK,MAAM,EAAU,IAAI,CAAG,KAGrC,EAAkB,GAAkB,CACnC,EAAM,WACX,EAAU,MAAQ,GAClB,EAAU,MAAQ,EAAE,QAAU,EAAK,MACnC,EAAU,MAAQ,EAAE,QAAU,EAAK,QAG/B,EAAiB,GAAkB,CAClC,EAAU,QACf,EAAK,MAAQ,EAAE,QAAU,EAAU,MACnC,EAAK,MAAQ,EAAE,QAAU,EAAU,QAG/B,MAAqB,CACzB,EAAU,MAAQ,IAGd,MAAe,CACnB,EAAK,MAAQ,KAAK,IAAI,EAAM,QAAS,EAAK,MAAQ,GAAG,EAGjD,MAAgB,CACpB,EAAK,MAAQ,KAAK,IAAI,EAAM,QAAS,EAAK,MAAQ,GAAG,EAGjD,MAAkB,CACtB,EAAK,MAAQ,EAAM,YACnB,EAAK,MAAQ,EACb,EAAK,MAAQ,GAIT,EAAmB,GAAuB,EAAK,aAAc,EAAI,CACjE,EAAoB,GAAuB,EAAK,cAAe,EAAI,CACnE,EAAsB,GAAuB,EAAK,gBAAiB,EAAI,QAE7E,EAAa,CACX,SACA,UACA,YACA,OACD,CAAA,aA9KD,EAiEM,MAAA,SAhEA,eAAJ,IAAI,EACJ,MAAK,EAAA,CAAC,aAAY,CAAA,eACa,EAAM,YAAA,oBAAuC,EAAM,YAAA,CAAA,CAAA,CAIjF,MAAK,EAAE,EAAA,MAAO,CACd,QAAK,EAAU,EAAW,CAAA,UAAA,CAAA,CAC1B,YAAW,EACX,YAAW,EACX,UAAS,EACT,aAAY,IAEb,EAqBM,MAAA,CApBJ,MAAM,uBACL,MAAK,EAAE,EAAA,MAAa,GAErB,EAgBU,EAAA,CAfP,KAAM,EAAM,KACZ,YAAa,EAAM,YACnB,YAAY,EACZ,aAAa,EACb,eAAe,YAGRE,EAAAA,OAAO,KAAA,MACZ,YAAM,GAAS,CAEhB,EAGE,EAAA,OAAA,OAAA,EAAA,EADQ,EAAS,CAAA,CAAA,CAAA,CAAA,oDAMzB,EAAA,SAAa,CAEL,EAAM,UAAA,GAAA,CADd,EA0BM,MA1BN,EA0BM,CAtBJ,EAMS,SAAA,CALP,MAAM,0BACN,MAAM,KACL,QAAO,GACT,MAED,CACA,EAA8D,OAA9D,EAA8D,EAAtB,EAAA,MAAW,CAAG,IAAC,EAAA,CACvD,EAMS,SAAA,CALP,MAAM,0BACN,MAAM,KACL,QAAO,GACT,MAED,CACA,EAMS,SAAA,CALP,MAAM,0BACN,MAAM,KACL,QAAO,GACT,MAED"}
|
package/dist/C_Progress.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as _default } from "./
|
|
1
|
+
import { t as _default } from "./index21.vue.js";
|
|
2
2
|
export { _default as C_Progress };
|
package/dist/C_Progress.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as _default } from "./
|
|
1
|
+
import { t as _default } from "./index21.vue.js";
|
|
2
2
|
export { _default as C_Progress };
|