orgchart 4.0.1 → 5.0.0

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/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
  # [React Version](https://github.com/dabeng/react-orgchart)
10
10
 
11
11
  ## Foreword
12
- First of all, thanks a lot for [wesnolte](https://github.com/wesnolte)'s great work:blush: -- [jOrgChart](https://github.com/wesnolte/jOrgChart). The thought that using nested tables to build out the tree-like orgonization chart is amazing. This idea is more simple and direct than its counterparts based on svg
12
+ First of all, thanks a lot for [wesnolte](https://github.com/wesnolte)'s great work:blush: -- [jOrgChart](https://github.com/wesnolte/jOrgChart). The thought that using nested tables to build out the tree-like organization chart is amazing. This idea is more simple and direct than its counterparts based on svg
13
13
  Unfortunately, it's long time not to see the update of jOrgChart. on the other hand, I got some interesting ideas to add, so I choose to create a new repo.
14
14
  - Since version 3.0, we use nested ul to construct tree-like chart instead of nested table.
15
15
  - Since version 4.0, users build up the ajax datasoure by themselves.
@@ -23,7 +23,7 @@ Unfortunately, it's long time not to see the update of jOrgChart. on the other h
23
23
  - Supports exporting chart as a picture or pdf document.
24
24
  - Supports pan and zoom.
25
25
  - Allows user to customize the internal structure for every node.
26
- - Users can adopt multiple solutions to build up a huge organization chart(please refer to multiple-layers or hybrid layout sections).
26
+ - Users can adopt multiple solutions to build up a huge organization chart(please refer hybrid layout sections).
27
27
  - touch-enabled plugin for mobile device.
28
28
 
29
29
  ## CDN
@@ -47,7 +47,7 @@ $ npm install orgchart
47
47
  require('orgchart') will load orgchart plugin onto the jQuery object. The orgchart module itself does not export anything.
48
48
 
49
49
  ## [Demos on github pages](https://dabeng.github.io/OrgChart/)
50
- ## [Demos based on nested ul](https://codepen.io/collection/nWqvzY)
50
+ ## [Demos based on nested ul](https://codepen.io/collection/xKmPeK)
51
51
  ## [Demos based on nested table](https://codepen.io/collection/AWxGVb/) (obsolete)
52
52
 
53
53
  ### online demos
@@ -119,10 +119,6 @@ That's where getHierarchy() comes in.
119
119
 
120
120
  It's a so easy task, we just need to append id or className property to node data.
121
121
 
122
- - [I want a multiple-layers chart](https://dabeng.github.io/OrgChart/multiple-layers.html)
123
-
124
- In fact, this is a wonderful solution to display a orgchart which includes a huge number of node data.
125
-
126
122
  - [I want a hybrid(horizontal + vertical) chart](https://dabeng.github.io/OrgChart/vertical-level.html)
127
123
 
128
124
  This feature is inspired by the issues([Aligning Children Vertical](https://github.com/dabeng/OrgChart/issues/46), [Hybrid(horizontal + vertical) OrgChart](https://github.com/dabeng/OrgChart/issues/61)). Thank [mfahadi](https://github.com/mfahadi) and [Destructrix](https://github.com/Destructrix) for their constructive suggestions:blush: Special thanks to [tedliang](https://github.com/tedliang) for his wonderful hybrid mode solution.
@@ -169,6 +165,47 @@ You need the solution based on new datasource structure with **levelOffset data
169
165
 
170
166
  **compact data property** is designed for your use case. Once node data includes a "compact" prop with truthy value, itself and its descendant nodes will be arranged with compact mode.
171
167
 
168
+ - [ I want to visualize genealogy/pedigree/family tree information](https://dabeng.github.io/OrgChart/family-tree.html)
169
+
170
+ ![family-tree](http://dabeng.github.io/OrgChart/img/family-tree.png)
171
+
172
+ We use the following two-dimensional array datasource to build up the Family Tree.
173
+ ```
174
+ var datascource = [
175
+ [
176
+ { 'id': '8', 'name': 'Lao Ye', 'title': 'Grandfather', 'gender': 'male' },
177
+ {
178
+ 'id': '1', 'name': 'Lao Lao', 'title': 'Grandmother', 'gender': 'female', 'outsider': true,
179
+ 'children': [
180
+ [
181
+ { 'id': '2', 'name': 'Bo miao', 'title': 'Aunt', 'gender': 'female'}
182
+ ],
183
+ [
184
+ { 'id': '3', 'name': 'Su Miao', 'title': 'Mother', 'gender': 'female',
185
+ 'children': [
186
+ [
187
+
188
+ { 'id': '12', 'name': 'Pang Pang', 'title': 'Wife', 'gender': 'female', 'outsider': true,
189
+ 'children': [
190
+ [{ 'id': '7', 'name': 'Dan Dan', 'title': 'Daughter', 'gender': 'female' }],
191
+ [{ 'id': '6', 'name': 'Er Dan', 'title': 'Daughter', 'gender': 'female' }],
192
+ ]
193
+ },
194
+ { 'id': '5', 'name': 'Hei Hei', 'title': 'Me', 'gender': 'male' },
195
+ ]
196
+ ]
197
+ },
198
+ { 'id': '9', 'name': 'Tie Hua', 'title': 'Father', 'gender': 'male', 'outsider': true }
199
+ ],
200
+ [
201
+ { 'id': '10', 'name': 'Hong miao', 'title': 'Aunt', 'gender': 'female'}
202
+ ]
203
+ ]
204
+ }
205
+ ]
206
+ ];
207
+ ```
208
+
172
209
  ### how to start up demos locally
173
210
 
174
211
  - you have to install node.js v6+ because our unit tests are based on jsdom v11
package/README.zh-cn.md CHANGED
@@ -105,10 +105,6 @@ $ npm install orgchart
105
105
 
106
106
  我们只需要把css的样式与数据源中的id字段或css类字段关联起来就好。
107
107
 
108
- - [我想实现一个多层级(而非深度)的组织结构图](https://dabeng.github.io/OrgChart/multiple-layers.html)
109
-
110
- 如果你的组织层级很多,二每个层级下的节点也很多,那么上面的方案可以采纳尝试。
111
-
112
108
  - [我想构造一个混合布局的(水平方向 + 垂直方向)组织结构图](https://dabeng.github.io/OrgChart/vertical-level.html)
113
109
 
114
110
  这个特性的灵感来源于这两个话题的讨论--[Aligning Children Vertical](https://github.com/dabeng/OrgChart/issues/46), [Hybrid(horizontal + vertical) OrgChart](https://github.com/dabeng/OrgChart/issues/61)。感谢[mfahadi](https://github.com/mfahadi)和[Destructrix](https://github.com/Destructrix)建设性的讨论:blush:尤其感谢[tedliang](https://github.com/tedliang)提供了非常棒的混合布局的解决方案。
@@ -125,6 +121,74 @@ $ npm install orgchart
125
121
 
126
122
  没问题,我们推荐使用ES6的模版字符串。
127
123
 
124
+ - [我想将节点安置在特定的层级. 咋做 ?](https://dabeng.github.io/OrgChart/level-offset.html)
125
+
126
+ ![level-offset](http://dabeng.github.io/OrgChart/img/level-offset.png)
127
+
128
+ 你需要的是一个复合的解决方案: **levelOffset data prop** + callback createNode() + CSS custom properties(variables)
129
+
130
+ - [我想构造一个组织结构图,每个节点宽度都可以不同的](https://dabeng.github.io/OrgChart/nodes-of-different-widths.html)
131
+
132
+ ![nodes-of-different-widths](http://dabeng.github.io/OrgChart/img/nodes-of-different-widths.png)
133
+
134
+ - [我想在混合布局中实现拖/放功能](https://dabeng.github.io/OrgChart/drag-drop-hybrid-chart.html)
135
+
136
+ - [我想指定从某一分支开始,其下所有子节点都以垂直样式显示](https://dabeng.github.io/OrgChart/data-prop-hybrid.html)
137
+
138
+ ![data-prop-hybrid](http://dabeng.github.io/OrgChart/img/data-prop-hybrid.png)
139
+
140
+ **hybrid data property** 就派上用场了. 在数据源的某个节点中提供"hybrid"属性,那么它的所有后代节点都会垂直布局.
141
+
142
+ - [我想用Font Awesome图标代替内置的图标](https://dabeng.github.io/OrgChart/custom-icons.html)
143
+
144
+ - [子节点众多的时候,我想以一种压缩起来的展示方式尽可能节省空间](https://dabeng.github.io/OrgChart/data-prop-compact.html)
145
+
146
+ ![data-prop-compact](http://dabeng.github.io/OrgChart/img/data-prop-compact.png)
147
+
148
+ **compact data property** 就派上用场了. 在数据源的某个节点里提供了"compact"属性,并赋为真值,那么它和它的子节点就会展示为压缩模式。
149
+
150
+ - [我想构造族谱,家谱,宗谱的关系图](https://dabeng.github.io/OrgChart/family-tree.html)
151
+
152
+ ![family-tree](http://dabeng.github.io/OrgChart/img/family-tree.png)
153
+
154
+ 我们使用如下的二维数组数据源来构建家谱。“outsider”代表外姓人。
155
+
156
+ ```
157
+ var datascource = [
158
+ [
159
+ { 'id': '8', 'name': 'Lao Ye', 'title': 'Grandfather', 'gender': 'male' },
160
+ {
161
+ 'id': '1', 'name': 'Lao Lao', 'title': 'Grandmother', 'gender': 'female', 'outsider': true,
162
+ 'children': [
163
+ [
164
+ { 'id': '2', 'name': 'Bo miao', 'title': 'Aunt', 'gender': 'female'}
165
+ ],
166
+ [
167
+ { 'id': '3', 'name': 'Su Miao', 'title': 'Mother', 'gender': 'female',
168
+ 'children': [
169
+ [
170
+
171
+ { 'id': '12', 'name': 'Pang Pang', 'title': 'Wife', 'gender': 'female', 'outsider': true,
172
+ 'children': [
173
+ [{ 'id': '7', 'name': 'Dan Dan', 'title': 'Daughter', 'gender': 'female' }],
174
+ [{ 'id': '6', 'name': 'Er Dan', 'title': 'Daughter', 'gender': 'female' }],
175
+ ]
176
+ },
177
+ { 'id': '5', 'name': 'Hei Hei', 'title': 'Me', 'gender': 'male' },
178
+ ]
179
+ ]
180
+ },
181
+ { 'id': '9', 'name': 'Tie Hua', 'title': 'Father', 'gender': 'male', 'outsider': true }
182
+ ],
183
+ [
184
+ { 'id': '10', 'name': 'Hong miao', 'title': 'Aunt', 'gender': 'female'}
185
+ ]
186
+ ]
187
+ }
188
+ ]
189
+ ];
190
+ ```
191
+
128
192
  ### 本地运行orgchart
129
193
 
130
194
  - 必须安装node.js v6+,因为我们的单元测试是基于jsdom v11。
package/README.zh-tw.md CHANGED
@@ -105,10 +105,6 @@ $ npm install orgchart
105
105
 
106
106
  我們只需要把css的樣式與數據源中的id字段或css類字段關聯起來就好。
107
107
 
108
- - [我想實現一個多層級(而非深度)的組織結構圖](https://dabeng.github.io/OrgChart/multiple-layers.html)
109
-
110
- 如果你的組織層級很多,二每個層級下的節點也很多,那麽上面的方案可以采納嘗試。
111
-
112
108
  - [我想構造一個混合布局的(水平方向 + 垂直方向)組織結構圖](https://dabeng.github.io/OrgChart/vertical-level.html)
113
109
 
114
110
  這個特性的靈感來源于這兩個話題的討論--[Aligning Children Vertical](https://github.com/dabeng/OrgChart/issues/46), [Hybrid(horizontal + vertical) OrgChart](https://github.com/dabeng/OrgChart/issues/61)。感謝[mfahadi](https://github.com/mfahadi)和[Destructrix](https://github.com/Destructrix)建設性的討論:blush:尤其感謝[tedliang](https://github.com/tedliang)提供了非常棒的混合布局的解決方案。
@@ -125,6 +121,74 @@ $ npm install orgchart
125
121
 
126
122
  沒問題,我們推薦使用ES6的模版字符串。
127
123
 
124
+ - [我想將節點安置在特定的層級。 咋做 ?](https://dabeng.github.io/OrgChart/level-offset.html)
125
+
126
+ ![level-offset](http://dabeng.github.io/OrgChart/img/level-offset.png)
127
+
128
+ 你需要的是一個復合的解決方案: **levelOffset data prop** + callback createNode() + CSS custom properties(variables)
129
+
130
+ - [我想構造一個組織結構圖,每個節點寬度都可以不同的](https://dabeng.github.io/OrgChart/nodes-of-different-widths.html)
131
+
132
+ ![nodes-of-different-widths](http://dabeng.github.io/OrgChart/img/nodes-of-different-widths.png)
133
+
134
+ - [我想在混合布局中實現拖/放功能](https://dabeng.github.io/OrgChart/drag-drop-hybrid-chart.html)
135
+
136
+ - [我想指定從某一分支開始,其下所有子節點都以垂直樣式顯示](https://dabeng.github.io/OrgChart/data-prop-hybrid.html)
137
+
138
+ ![data-prop-hybrid](http://dabeng.github.io/OrgChart/img/data-prop-hybrid.png)
139
+
140
+ **hybrid data property** 就派上用場了。 在數據源的某個節點中提供"hybrid"屬性,那麽它的所有後代節點都會垂直布局。
141
+
142
+ - [我想用Font Awesome圖標代替內置的圖標](https://dabeng.github.io/OrgChart/custom-icons.html)
143
+
144
+ - [子節點眾多的時候,我想以一種壓縮起來的展示方式盡可能節省空間](https://dabeng.github.io/OrgChart/data-prop-compact.html)
145
+
146
+ ![data-prop-compact](http://dabeng.github.io/OrgChart/img/data-prop-compact.png)
147
+
148
+ **compact data property** 就派上用場了。在數據源的某個節點裏提供了"compact"屬性,並賦為真值,那麽它和它的子節點就會展示為壓縮模式。
149
+
150
+ - [我想構造族譜,家譜,宗譜的關系圖](https://dabeng.github.io/OrgChart/family-tree.html)
151
+
152
+ ![family-tree](http://dabeng.github.io/OrgChart/img/family-tree.png)
153
+
154
+ 我們使用如下的二維數組數據源來構建家譜。“outsider”代表外姓人。
155
+
156
+ ```
157
+ var datascource = [
158
+ [
159
+ { 'id': '8', 'name': 'Lao Ye', 'title': 'Grandfather', 'gender': 'male' },
160
+ {
161
+ 'id': '1', 'name': 'Lao Lao', 'title': 'Grandmother', 'gender': 'female', 'outsider': true,
162
+ 'children': [
163
+ [
164
+ { 'id': '2', 'name': 'Bo miao', 'title': 'Aunt', 'gender': 'female'}
165
+ ],
166
+ [
167
+ { 'id': '3', 'name': 'Su Miao', 'title': 'Mother', 'gender': 'female',
168
+ 'children': [
169
+ [
170
+
171
+ { 'id': '12', 'name': 'Pang Pang', 'title': 'Wife', 'gender': 'female', 'outsider': true,
172
+ 'children': [
173
+ [{ 'id': '7', 'name': 'Dan Dan', 'title': 'Daughter', 'gender': 'female' }],
174
+ [{ 'id': '6', 'name': 'Er Dan', 'title': 'Daughter', 'gender': 'female' }],
175
+ ]
176
+ },
177
+ { 'id': '5', 'name': 'Hei Hei', 'title': 'Me', 'gender': 'male' },
178
+ ]
179
+ ]
180
+ },
181
+ { 'id': '9', 'name': 'Tie Hua', 'title': 'Father', 'gender': 'male', 'outsider': true }
182
+ ],
183
+ [
184
+ { 'id': '10', 'name': 'Hong miao', 'title': 'Aunt', 'gender': 'female'}
185
+ ]
186
+ ]
187
+ }
188
+ ]
189
+ ];
190
+ ```
191
+
128
192
  ### 本地運行orgchart
129
193
 
130
194
  - 必須安裝node.js v6+,因爲我們的單元測試是基于jsdom v11。
@@ -0,0 +1,97 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>Organization Chart Plugin</title>
6
+ <link rel="icon" href="img/logo.png">
7
+ <link rel="stylesheet" href="css/jquery.orgchart.css">
8
+ <link rel="stylesheet" href="css/style.css">
9
+ <style type="text/css">
10
+ .orgchart { background: #fff; }
11
+ #chart-container {
12
+ height: 850px;
13
+ }
14
+ .orgchart .node {
15
+ padding: 3px 8px;
16
+ }
17
+ .orgchart .node .avatar {
18
+ border-radius: 60px;
19
+ box-shadow: rgba(99, 99, 99, 0.8) 0px 2px 8px 0px;
20
+ }
21
+ .orgchart .couple:has(> .nodes) > .node:first-child::after {
22
+ top: 148px;
23
+ }
24
+ .orgchart .couple::after {
25
+ top: 148px;
26
+ width: 30px;
27
+ left: calc(50% - 15px);
28
+ }
29
+ .orgchart .couple:first-child:not(:only-child)::before {
30
+ width: calc(100% - 74px);
31
+ left: 74px;
32
+ }
33
+ .orgchart .hierarchy.couple:only-child::before {
34
+ width: 152px;
35
+ left: calc(50% - 76px);
36
+ }
37
+ .orgchart .couple:last-child:not(:only-child)::before {
38
+ width: calc(50% + 76px);
39
+ }
40
+ </style>
41
+ </head>
42
+ <body>
43
+ <div id="chart-container"></div>
44
+
45
+ <script type="text/javascript" src="js/jquery.min.js"></script>
46
+ <script type="text/javascript" src="js/jquery.orgchart.js"></script>
47
+ <script type="text/javascript">
48
+ $(function() {
49
+
50
+ var datascource = [
51
+ [
52
+ { 'id': '8', 'name': 'Lao Ye', 'title': 'Grandfather', 'gender': 'male' },
53
+ {
54
+ 'id': '1', 'name': 'Lao Lao', 'title': 'Grandmother', 'gender': 'female', 'outsider': true,
55
+ 'children': [
56
+ [
57
+ { 'id': '2', 'name': 'Bo miao', 'title': 'Aunt', 'gender': 'female'}
58
+ ],
59
+ [
60
+ { 'id': '3', 'name': 'Su Miao', 'title': 'Mother', 'gender': 'female',
61
+ 'children': [
62
+ [
63
+
64
+ { 'id': '12', 'name': 'Pang Pang', 'title': 'Wife', 'gender': 'female', 'outsider': true,
65
+ 'children': [
66
+ [{ 'id': '7', 'name': 'Dan Dan', 'title': 'Daughter', 'gender': 'female' }],
67
+ [{ 'id': '6', 'name': 'Er Dan', 'title': 'Daughter', 'gender': 'female' }],
68
+ ]
69
+ },
70
+ { 'id': '5', 'name': 'Hei Hei', 'title': 'Me', 'gender': 'male' },
71
+ ]
72
+ ]
73
+ },
74
+ { 'id': '9', 'name': 'Tie Hua', 'title': 'Father', 'gender': 'male', 'outsider': true }
75
+ ],
76
+ [
77
+ { 'id': '10', 'name': 'Hong miao', 'title': 'Aunt', 'gender': 'female'}
78
+ ]
79
+ ]
80
+ }
81
+ ]
82
+ ];
83
+
84
+ var oc = $('#chart-container').orgchart({
85
+ 'data' : datascource,
86
+ 'nodeContent': 'title',
87
+ 'nodeID': 'id',
88
+ 'createNode': function($node, data) {
89
+ $node.prepend(`<img class="avatar" src="https://dabeng.github.io/OrgChart/img/avatar/${data.id}.jpg" crossorigin="anonymous" />`);
90
+ }
91
+ });
92
+
93
+
94
+ });
95
+ </script>
96
+ </body>
97
+ </html>
package/demo/index.html CHANGED
@@ -13,7 +13,7 @@
13
13
  background-color: #000;
14
14
  }
15
15
  section {
16
- width: 30rem;
16
+ width: 36rem;
17
17
  margin-top: 200px;
18
18
  margin-left: auto;
19
19
  margin-right: auto;
@@ -130,7 +130,6 @@
130
130
  <li><a href="get-hierarchy.html" target="_blank">getHierarchy() method</a></li>
131
131
  <li><a href="integrate-map.html" target="_blank">itegrate orgchart with map info</a></li>
132
132
  <li><a href="local-datasource.html" target="_blank">local datasource</a></li>
133
- <li><a href="multiple-layers.html" target="_blank">multiple-layers chart</a></li>
134
133
  <li><a href="ondemand-loading-data.html" target="_blank">load data on-demand</a></li>
135
134
  <li><a href="option-createNode.html" target="_blank">createNode callback</a></li>
136
135
  <li><a href="pan-zoom.html" target="_blank">pan and zoom the chart</a></li>
@@ -148,6 +147,7 @@
148
147
  <li><a href="data-prop-hybrid.html" target="_blank">create hybrid chart with data prop "hybrid"</a></li>
149
148
  <li><a href="custom-icons.html" target="_blank">use fontawesome icons instead of built-in icons</a></li>
150
149
  <li><a href="data-prop-compact.html" target="_blank">layout for children which is too many</a></li>
150
+ <li><a href="family-tree.html" target="_blank">visualize genealogy/pedigree/family tree information</a></li>
151
151
  </ol>
152
152
  </section>
153
153
  </body>
@@ -21,12 +21,12 @@
21
21
  .orgchart .node .second-menu {
22
22
  display: none;
23
23
  position: absolute;
24
- top: 0;
25
- right: -70px;
24
+ bottom: -35px;
25
+ right: 0;
26
26
  border-radius: 35px;
27
27
  box-shadow: 0 0 10px 1px #999;
28
28
  background-color: #fff;
29
- z-index: 1;
29
+ z-index: 3;
30
30
  }
31
31
  .orgchart .node .second-menu .avatar {
32
32
  width: 60px;
@@ -83,6 +83,7 @@
83
83
  list-style: none;
84
84
  padding-left: 0;
85
85
  margin: 0;
86
+ justify-content: center;
86
87
  }
87
88
 
88
89
  .orgchart .hierarchy {
@@ -100,6 +101,62 @@
100
101
  box-sizing: border-box;
101
102
  }
102
103
 
104
+ /* 本姓人与上一层父母的连线,借助伪元素::before实现 */
105
+ /* 处理同一层中特殊的首节点 */
106
+ .orgchart .couple:first-child:not(:only-child)::before {
107
+ width: calc(100% - 69px); /* half width of hierarchy - half width of node - node's padding - node's border width */
108
+ left: 69px;
109
+ }
110
+
111
+ /* 处理同一层中特殊的末节点 */
112
+ .orgchart .couple:last-child:not(:only-child)::before {
113
+ width: calc(50% + 71px);
114
+ left: 0px;
115
+ }
116
+
117
+ .orgchart .hierarchy.couple:only-child::before {
118
+ width: 142px; /* half of node's width + link's width */
119
+ left: calc(50% - 71px); /* half width of node - half of link width */
120
+ }
121
+
122
+ /* 在family tree中,一个夫妻组合里,本姓人只有一个,外姓人可能有多个 */
123
+ /* 我们通过水平的连线来表示他们存在婚姻关系,借助伪元素::after实现 */
124
+ .orgchart .hierarchy.spouse:not(.couple)::after {
125
+ content: "";
126
+ position: absolute;
127
+ border-top: 2px solid rgba(217, 83, 79, 0.8);
128
+ box-sizing: border-box;
129
+ z-index: 0;
130
+ top: 24px;
131
+ width: var(--ft-width);
132
+ left: var(--ft-left-offset);
133
+ }
134
+
135
+ /* 一夫一妻情况下的连线 */
136
+ .orgchart .couple {
137
+ white-space: nowrap;
138
+ }
139
+
140
+ .orgchart .couple:has(> .nodes) > .node:first-child::after {
141
+ content: "";
142
+ position: absolute;
143
+ top: 24px;
144
+ left: calc(100% + 1px);
145
+ width: 2px;
146
+ height: 33px;
147
+ background-color: rgba(217, 83, 79, 0.8);
148
+ }
149
+ .orgchart .couple::after {
150
+ content: "";
151
+ position: absolute;
152
+ border-top: 2px solid rgba(217, 83, 79, 0.8);
153
+ box-sizing: border-box;
154
+ z-index: 0;
155
+ top: 24px;
156
+ width: 20px;
157
+ left: calc(50% - 10px); /* half of hierarchy - node's padding width - node's border with */
158
+ }
159
+
103
160
  .orgchart .hierarchy:first-child::before,
104
161
  .orgchart .hierarchy.isSiblingsCollapsed.left-sibs::before {
105
162
  left: calc(50% - 1px);
@@ -111,7 +168,7 @@
111
168
  width: calc(50% + 1px);
112
169
  }
113
170
 
114
- .orgchart .hierarchy:not(.hidden):only-child::before {
171
+ .orgchart .hierarchy:not(.hidden):not(.spouse):only-child::before {
115
172
  width: 2px;
116
173
  }
117
174
 
@@ -122,17 +179,17 @@
122
179
  .orgchart .isSiblingsCollapsed.left-sibs:last-child:before,
123
180
  .orgchart .isCollapsedSibling::before,
124
181
  .orgchart .isCollapsedSibling .hierarchy::before,
125
- .orgchart .isChildrenCollapsed > .node:not(:only-child)::after,
182
+ .orgchart .hierarchy.isChildrenCollapsed:not(.couple) > .node:has(+ .nodes)::after,
126
183
  .orgchart .isCollapsedDescendant::before,
127
184
  .orgchart .isCollapsedDescendant > .node::before,
128
185
  .orgchart .isCollapsedDescendant > .node::after,
129
186
  .orgchart .isAncestorsCollapsed:only-child::before,
130
- .orgchart .isAncestorsCollapsed > .node::before {
187
+ .orgchart .isAncestorsCollapsed > .node:not(.outsider)::before {
131
188
  content: none;
132
189
  }
133
190
 
134
191
  /* excluding leaf node */
135
- .orgchart .node:not(:only-child)::after {
192
+ .orgchart .hierarchy:not(.couple) > .node:has(+ .nodes)::after {
136
193
  content: "";
137
194
  position: absolute;
138
195
  bottom: -12px; /* -(background square size + node's border width) */
@@ -155,7 +212,7 @@
155
212
  background-color: rgba(238, 217, 54, 0.5);
156
213
  }
157
214
  /* excluding root node */
158
- .orgchart > ul > li > ul li > .node::before {
215
+ .orgchart > ul > li > ul li > .node:not(.outsider)::before {
159
216
  content: "";
160
217
  position: absolute;
161
218
  top: var(--top, -12px); /* -(fallback value = background square size + border width of node) */
@@ -165,7 +222,17 @@
165
222
  background-color: rgba(217, 83, 79, 0.8);
166
223
  }
167
224
 
168
- .orgchart > ul > li > ul li.isSiblingsCollapsed > .node::before {
225
+ .orgchart > ul > li > ul li > .node.outsider::before {
226
+ content: "";
227
+ position: absolute;
228
+ top: var(--top, -12px);
229
+ left: calc(50% - 1px);
230
+ width: 0;
231
+ height: var(--height, 10px);
232
+ border-right: 2px dotted rgba(217, 83, 79, 0.8);
233
+ }
234
+
235
+ .orgchart > ul > li > ul .isSiblingsCollapsed > .node::before {
169
236
  top: var(--top-cross-point, -12px);
170
237
  height: var(--height-cross-point, 10px);
171
238
  }
@@ -179,6 +246,8 @@
179
246
  padding: 3px;
180
247
  border: 2px dashed transparent;
181
248
  text-align: center;
249
+ transition: transform 0.3s, opacity 0.3s;
250
+ z-index: 1;
182
251
  }
183
252
 
184
253
  .orgchart.l2r .node, .orgchart.r2l .node {
@@ -190,7 +259,7 @@
190
259
  background-color: rgba(238, 217, 54, 0.5);
191
260
  transition: .5s;
192
261
  cursor: default;
193
- z-index: 20;
262
+ z-index: 2;
194
263
  }
195
264
 
196
265
  .orgchart .node.focused {
@@ -420,10 +489,6 @@
420
489
  padding: 0.5rem 1rem;
421
490
  }
422
491
 
423
- .orgchart .node {
424
- transition: transform 0.3s, opacity 0.3s;
425
- }
426
-
427
492
  .orgchart .slide-down {
428
493
  opacity: 0;
429
494
  transform: translateY(40px);
@@ -479,8 +544,8 @@
479
544
  margin-bottom: 0;
480
545
  }
481
546
 
482
- .orgchart .nodes.vertical .node::before,
483
- .orgchart .nodes.vertical .node::after {
547
+ .orgchart .nodes.vertical .hierarchy .node::before,
548
+ .orgchart .nodes.vertical .hierarchy .node::after {
484
549
  content: none;
485
550
  }
486
551
 
@@ -500,6 +565,10 @@
500
565
  border-width: 0 0 2px 2px;
501
566
  }
502
567
 
568
+ .orgchart .nodes.vertical .hierarchy:only-child::before {
569
+ width: 11px;
570
+ }
571
+
503
572
  .orgchart .nodes.vertical .hierarchy::before {
504
573
  top: 0px;
505
574
  height: 26px; /* node top half's height(25px) + half width of line */
@@ -627,7 +696,7 @@
627
696
  margin-bottom: 0;
628
697
  }
629
698
 
630
- .orgchart .node.compact .node:not(:only-child)::after {
699
+ .orgchart .node.compact .node:has(+ .nodes)::after {
631
700
  content: unset;
632
701
  }
633
702
 
@@ -1 +1 @@
1
- .orgchart{box-sizing:border-box;display:inline-block;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:linear-gradient(to top,rgba(200,0,0,.15) 5%,rgba(0,0,0,0) 5%),linear-gradient(to right,rgba(200,0,0,.15) 5%,rgba(0,0,0,0) 5%),linear-gradient(to bottom,rgba(200,0,0,.15) 5%,rgba(0,0,0,0) 5%),linear-gradient(to left,rgba(200,0,0,.15) 5%,rgba(0,0,0,0) 5%);background-size:10px 10px;padding:20px 20px 0 20px}.orgchart .hidden,.orgchart~.hidden{display:none!important}.orgchart.b2t{transform:rotate(180deg)}.orgchart.l2r{position:absolute;transform:rotate(-90deg) rotateY(180deg);transform-origin:left top;text-align:center}.orgchart.r2l{position:absolute;transform:rotate(90deg);transform-origin:left top;text-align:center}.orgchart~.mask{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999;text-align:center;background-color:rgba(0,0,0,.3)}.orgchart~.mask .spinner{position:absolute;top:calc(50% - 50px);left:calc(50% - 50px)}.orgchart>.spinner::before,.orgchart~.mask .spinner::before{width:100px;height:100px;border-width:10px;border-radius:50px;border-top-color:rgba(68,157,68,.8);border-bottom-color:rgba(68,157,68,.8);border-left-color:rgba(68,157,68,.8)}.orgchart .nodes{display:flex;list-style:none;padding-left:0;margin:0}.orgchart .hierarchy{position:relative}.orgchart .hierarchy::before{content:"";position:absolute;top:-11px;left:0;width:100%;border-top:2px solid rgba(217,83,79,.8);box-sizing:border-box}.orgchart .hierarchy.isSiblingsCollapsed.left-sibs::before,.orgchart .hierarchy:first-child::before{left:calc(50% - 1px);width:calc(50% + 1px)}.orgchart .hierarchy.isSiblingsCollapsed.right-sibs::before,.orgchart .hierarchy:last-child::before{width:calc(50% + 1px)}.orgchart .hierarchy:not(.hidden):only-child::before{width:2px}.orgchart .isAncestorsCollapsed:only-child::before,.orgchart .isAncestorsCollapsed>.node::before,.orgchart .isChildrenCollapsed>.node:not(:only-child)::after,.orgchart .isCollapsedDescendant::before,.orgchart .isCollapsedDescendant>.node::after,.orgchart .isCollapsedDescendant>.node::before,.orgchart .isCollapsedSibling .hierarchy::before,.orgchart .isCollapsedSibling::before,.orgchart .isSiblingsCollapsed.left-sibs.right-sibs::before,.orgchart .isSiblingsCollapsed.left-sibs:last-child:before,.orgchart .isSiblingsCollapsed.right-sibs:first-child:before,.orgchart .isSiblingsCollapsed:not(.left-sibs):not(.right-sibs)::before,.orgchart>.nodes>.hierarchy::before{content:none}.orgchart .node:not(:only-child)::after{content:"";position:absolute;bottom:-12px;left:calc(50% - 1px);width:2px;height:10px;background-color:rgba(217,83,79,.8)}.orgchart ul li .node.allowedDrop{border-color:rgba(68,157,68,.9)}.orgchart ul li .node.currentDropTarget{background-color:rgba(68,157,68,.9)}.orgchart ul li .node.selected{background-color:rgba(238,217,54,.5)}.orgchart ul li .node:hover{background-color:rgba(238,217,54,.5)}.orgchart>ul>li>ul li>.node::before{content:"";position:absolute;top:var(--top,-12px);left:calc(50% - 1px);width:2px;height:var(--height,10px);background-color:rgba(217,83,79,.8)}.orgchart>ul>li>ul li.isSiblingsCollapsed>.node::before{top:var(--top-cross-point,-12px);height:var(--height-cross-point,10px)}.orgchart .node{box-sizing:border-box;display:inline-block;position:relative;margin:0 0 20px 0;padding:3px;border:2px dashed transparent;text-align:center}.orgchart.l2r .node,.orgchart.r2l .node{width:50px;height:140px}.orgchart .node:hover{background-color:rgba(238,217,54,.5);transition:.5s;cursor:default;z-index:20}.orgchart .node.focused{background-color:rgba(238,217,54,.5)}.orgchart .ghost-node{position:fixed;left:-10000px;top:-10000px}.orgchart .ghost-node rect{fill:#fff;stroke:#bf0000}.orgchart .node.allowedDrop{border-color:rgba(68,157,68,.9)}.orgchart .node>.spinner{position:absolute;top:calc(50% - 1rem);left:calc(50% - 1rem)}.orgchart .node>.spinner::before{width:2rem;height:2rem;border-width:.2rem;border-radius:1rem;border-top-color:rgba(68,157,68,.8);border-bottom-color:rgba(68,157,68,.8);border-left-color:rgba(68,157,68,.8)}.orgchart .node .title{box-sizing:border-box;width:130px;text-align:center;font-size:12px;font-weight:700;height:20px;line-height:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:rgba(217,83,79,.8);color:#fff;border-radius:4px 4px 0 0}.orgchart.b2t .node .title{transform:rotate(-180deg);transform-origin:center bottom}.orgchart.l2r .node .title{transform:rotate(-90deg) translate(-45px,-45px) rotateY(180deg);transform-origin:bottom center}.orgchart.r2l .node .title{transform:rotate(-90deg) translate(-45px,-45px);transform-origin:bottom center}.orgchart .node .title .parentNodeSymbol{float:left}.orgchart .node .title .parentNodeSymbol::before{color:#fff}.orgchart .node .title .parentNodeSymbol::after{background-color:#fff}.orgchart .node .content{box-sizing:border-box;width:130px;height:20px;line-height:20px;font-size:10px;border:1px solid rgba(217,83,79,.8);border-width:0 1px 1px 1px;border-radius:0 0 .25rem .25rem;text-align:center;background-color:#fff;color:#333;text-overflow:ellipsis;white-space:nowrap}.orgchart.b2t .node .content{transform:rotate(180deg);transform-origin:center top}.orgchart.l2r .node .content{transform:rotate(-90deg) translate(-45px,-45px) rotateY(180deg);transform-origin:top center;width:130px}.orgchart.r2l .node .content{transform:rotate(-90deg) translate(-45px,-45px);transform-origin:top center;width:130px}.orgchart .node .edge{position:absolute;cursor:default;transition:.2s}.orgchart .node .edge::before{border-color:rgba(68,157,68,.5)}.orgchart.noncollapsable .node .edge{display:none}.orgchart .node .edge:hover{cursor:pointer}.orgchart .edge:hover::before{border-color:#449d44}.orgchart .node .verticalEdge{width:calc(100% - 6px);height:10px;left:3px}.orgchart .node .verticalEdge::before{position:absolute;left:calc(50% - 5px)}.orgchart .node .topEdge{top:-2px}.orgchart .node .topEdge.oci-chevron-up::before{top:2px}.orgchart .node .topEdge.oci-chevron-down::before{bottom:3px}.orgchart .node .bottomEdge{bottom:-2px}.orgchart .node .bottomEdge.oci-chevron-up::before{bottom:-3px}.orgchart .node .bottomEdge.oci-chevron-down::before{bottom:1px}.orgchart .node .horizontalEdge{width:10px;height:calc(100% - 6px);top:3px}.orgchart .node .rightEdge{right:-2px}.orgchart .node .leftEdge{left:-2px}.orgchart .node .horizontalEdge::before{position:absolute;top:calc(50% - 5px)}.orgchart .node .leftEdge.oci-chevron-right::before{left:-3px}.orgchart .node .leftEdge.oci-chevron-left::before{left:1px}.orgchart .node .rightEdge.oci-chevron-left::before{right:-3px}.orgchart .node .rightEdge.oci-chevron-right::before{right:1px}.orgchart .node .toggleBtn{position:absolute;left:-2px;bottom:-2px;width:16px;height:16px}.orgchart .node .toggleBtn::before{background-color:rgba(68,157,68,.6);position:absolute;left:0;bottom:0}.orgchart .node .toggleBtn:hover::before{background-color:#449d44}.oc-export-btn{margin-left:.5rem;padding:.5rem 1rem}.orgchart .node{transition:transform .3s,opacity .3s}.orgchart .slide-down{opacity:0;transform:translateY(40px)}.orgchart.l2r .node.slide-down,.orgchart.r2l .node.slide-down{transform:translateY(130px)}.orgchart .slide-up{opacity:0;transform:translateY(-40px)}.orgchart.l2r .node.slide-up,.orgchart.r2l .node.slide-up{transform:translateY(-130px)}.orgchart .slide-right{opacity:0;transform:translateX(130px)}.orgchart.l2r .node.slide-right,.orgchart.r2l .node.slide-right{transform:translateX(40px)}.orgchart .slide-left{opacity:0;transform:translateX(-130px)}.orgchart.l2r .node.slide-left,.orgchart.r2l .node.slide-left{transform:translateX(-40px)}.orgchart .nodes.vertical{display:block;padding-left:10px}.orgchart .nodes.vertical .nodes{list-style:none;display:block;margin:0;padding-left:10px;text-align:left}.orgchart .nodes.vertical .node{margin-bottom:0}.orgchart .nodes.vertical .node::after,.orgchart .nodes.vertical .node::before{content:none}.orgchart .nodes.vertical .hierarchy{position:relative;text-align:left}.orgchart .nodes.vertical .hierarchy::after,.orgchart .nodes.vertical .hierarchy::before{box-sizing:border-box;content:'';position:absolute;left:-6px;border-color:rgba(217,83,79,.8);border-style:solid;border-width:0 0 2px 2px}.orgchart .nodes.vertical .hierarchy::before{top:0;height:26px;width:11px}.orgchart .nodes.vertical .hierarchy::after{bottom:0;height:calc(100% - 24px)}.orgchart .nodes.vertical .hierarchy:last-child::after{border-width:2px 0 0 0}.orgchart .nodes.vertical>.hierarchy:first-child::before{box-sizing:border-box;top:-11px;height:35px;width:calc(50% + 2px);border-width:2px 0 0 2px}.orgchart .nodes.vertical>.hierarchy:first-child::after{box-sizing:border-box;top:24px;width:11px;border-width:2px 0 0 2px}.orgchart .nodes.vertical>.hierarchy:first-child:last-child::after{border-width:2px 0 0 0}.orgchart .node.compact{position:static;display:grid;width:140px;height:50px;background-color:#eee}.orgchart .node.compact.looseMode{display:grid;width:unset;height:unset}.orgchart .node.compact>.node{display:none}.orgchart .node.compact.looseMode>.node{display:inline-block}.orgchart .node.compact>.node.compact{position:relative}.orgchart .node.compact>.node.compact.looseMode{display:grid}.orgchart .node.compact.even,.orgchart .node.compact.even:hover{background-color:#eee}.orgchart .node.compact.odd,.orgchart .node.compact.odd:hover{background-color:#fff}.orgchart .node.compact.even>.node.focused,.orgchart .node.compact.even>.node.selected,.orgchart .node.compact.even>.node:hover{background-color:#fff}.orgchart .node.compact.odd>.node.focused,.orgchart .node.compact.odd>.node.selected,.orgchart .node.compact.odd>.node:hover{background-color:#eee}.orgchart .node.compact::before{top:var(--top-cross-point,-10px)}.orgchart .node.compact>.content{position:absolute;top:25px;left:5px}.orgchart .node.compact.looseMode>.title{margin-top:5px;margin-left:5px}.orgchart .node.compact.looseMode>.content{top:30px;left:10px}.orgchart .node.compact>.node.compact.looseMode>.title{margin-top:5px;margin-left:5px}.orgchart .node.compact>.node.compact>.content{position:absolute;top:23px;left:3px}.orgchart .node.compact>.node.compact.looseMode>.content{top:28px;left:8px}.orgchart .node.compact .node{margin-bottom:0}.orgchart .node.compact .node:not(:only-child)::after{content:unset}.orgchart .backToCompactSymbol,.orgchart .backToLooseSymbol{cursor:pointer}.orgchart .node.compact>.backToCompactSymbol{position:absolute;top:5px;left:5px}.orgchart .node.compact.looseMode>.backToCompactSymbol{top:10px;left:10px}.orgchart .node.compact>.node.compact.looseMode>.backToCompactSymbol{top:8px;left:8px}.orgchart .node.compact>.node.compact>.backToCompactSymbol{position:absolute;top:3px;left:3px}.orgchart .node.compact>.backToLooseSymbol{position:absolute;top:25px;right:5px}.orgchart .node.compact>.node.compact>.backToLooseSymbol{position:absolute;top:23px;right:3px}.orgchart .node.compact .backToCompactSymbol::before{border-top-color:rgba(68,157,68,.6)}.orgchart .node.compact .backToLooseSymbol::before{border-bottom-color:rgba(68,157,68,.6)}.orgchart .node.compact .backToCompactSymbol:hover::before{border-top-color:#449d44}.orgchart .node.compact .backToLooseSymbol:hover::before{border-bottom-color:#449d44}.oci{display:inline-block;position:relative;font-style:normal;font-family:Arial}.oci-menu::before{content:"≡";display:inline-block;width:1rem;height:1rem;text-align:center;line-height:1rem;color:#000;font-size:1rem}.oci-chevron-up::before{content:"";box-sizing:border-box;width:10px;height:10px;display:inline-block;border:3px solid #000;transform:rotate(45deg);border-right:unset;border-bottom:unset}.oci-chevron-down::before{content:"";box-sizing:border-box;width:10px;height:10px;display:inline-block;border:3px solid #000;transform:rotate(45deg);border-top:unset;border-left:unset}.oci-chevron-left::before{content:"";box-sizing:border-box;width:10px;height:10px;display:inline-block;border:3px solid #000;transform:rotate(45deg);border-top:unset;border-right:unset}.oci-chevron-right::before{content:"";box-sizing:border-box;width:10px;height:10px;display:inline-block;border:3px solid #000;transform:rotate(45deg);border-left:unset;border-bottom:unset}.oci-corner-top-left::before{content:"";display:inline-block;border-top:20px solid #000;border-right:20px solid transparent}.oci-corner-top-right::before{content:"";display:inline-block;box-sizing:border-box;width:0;height:0;border-top:20px solid #000;border-left:20px solid transparent}.oci-corner-bottom-right::before{content:"";display:inline-block;box-sizing:border-box;width:0;height:0;border-bottom:20px solid #000;border-left:20px solid transparent}.oci-corner-bottom-left::before{content:"";display:inline-block;box-sizing:border-box;width:0;height:0;border-bottom:20px solid #000;border-right:20px solid transparent}.oci-plus-square::before{content:"﹢";display:inline-block;width:16px;height:16px;text-align:center;line-height:16px;background-color:#000;color:#fff;font-weight:700}.oci-minus-square::before{content:"﹣";display:inline-block;width:16px;height:16px;text-align:center;line-height:16px;background-color:#000;color:#fff;font-weight:700}.oci-arrow-square-up::before{content:"⬆";display:inline-block;width:1rem;height:1rem;text-align:center;line-height:1rem;background-color:#000;color:#fff;font-weight:700}.oci-arrow-square-down::before{content:"⬇";display:inline-block;width:1rem;height:1rem;text-align:center;line-height:1rem;background-color:#000;color:#fff;font-weight:700}.oci-info-circle::before{content:"i";display:inline-block;width:1rem;height:1rem;border-radius:.5rem;background-color:#000;color:#fff;text-align:center;font-weight:700}.oci-spinner::before{content:"";vertical-align:text-bottom;display:inline-block;box-sizing:border-box;width:1rem;height:1rem;border:.1rem solid #000;border-right-color:transparent;border-radius:.625rem;animation:oci-infinite-spinning .75s linear infinite}@keyframes oci-infinite-spinning{from{transform:rotate(0)}to{transform:rotate(360deg)}}
1
+ .orgchart{box-sizing:border-box;display:inline-block;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:linear-gradient(to top,rgba(200,0,0,.15) 5%,rgba(0,0,0,0) 5%),linear-gradient(to right,rgba(200,0,0,.15) 5%,rgba(0,0,0,0) 5%),linear-gradient(to bottom,rgba(200,0,0,.15) 5%,rgba(0,0,0,0) 5%),linear-gradient(to left,rgba(200,0,0,.15) 5%,rgba(0,0,0,0) 5%);background-size:10px 10px;padding:20px 20px 0 20px}.orgchart .hidden,.orgchart~.hidden{display:none!important}.orgchart.b2t{transform:rotate(180deg)}.orgchart.l2r{position:absolute;transform:rotate(-90deg) rotateY(180deg);transform-origin:left top;text-align:center}.orgchart.r2l{position:absolute;transform:rotate(90deg);transform-origin:left top;text-align:center}.orgchart~.mask{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999;text-align:center;background-color:rgba(0,0,0,.3)}.orgchart~.mask .spinner{position:absolute;top:calc(50% - 50px);left:calc(50% - 50px)}.orgchart>.spinner::before,.orgchart~.mask .spinner::before{width:100px;height:100px;border-width:10px;border-radius:50px;border-top-color:rgba(68,157,68,.8);border-bottom-color:rgba(68,157,68,.8);border-left-color:rgba(68,157,68,.8)}.orgchart .nodes{display:flex;list-style:none;padding-left:0;margin:0;justify-content:center}.orgchart .hierarchy{position:relative}.orgchart .hierarchy::before{content:"";position:absolute;top:-11px;left:0;width:100%;border-top:2px solid rgba(217,83,79,.8);box-sizing:border-box}.orgchart .couple:first-child:not(:only-child)::before{width:calc(100% - 69px);left:69px}.orgchart .couple:last-child:not(:only-child)::before{width:calc(50% + 71px);left:0}.orgchart .hierarchy.couple:only-child::before{width:142px;left:calc(50% - 71px)}.orgchart .hierarchy.spouse:not(.couple)::after{content:"";position:absolute;border-top:2px solid rgba(217,83,79,.8);box-sizing:border-box;z-index:0;top:24px;width:var(--ft-width);left:var(--ft-left-offset)}.orgchart .couple{white-space:nowrap}.orgchart .couple:has(>.nodes)>.node:first-child::after{content:"";position:absolute;top:24px;left:calc(100% + 1px);width:2px;height:33px;background-color:rgba(217,83,79,.8)}.orgchart .couple::after{content:"";position:absolute;border-top:2px solid rgba(217,83,79,.8);box-sizing:border-box;z-index:0;top:24px;width:20px;left:calc(50% - 10px)}.orgchart .hierarchy.isSiblingsCollapsed.left-sibs::before,.orgchart .hierarchy:first-child::before{left:calc(50% - 1px);width:calc(50% + 1px)}.orgchart .hierarchy.isSiblingsCollapsed.right-sibs::before,.orgchart .hierarchy:last-child::before{width:calc(50% + 1px)}.orgchart .hierarchy:not(.hidden):not(.spouse):only-child::before{width:2px}.orgchart .hierarchy.isChildrenCollapsed:not(.couple)>.node:has(+.nodes)::after,.orgchart .isAncestorsCollapsed:only-child::before,.orgchart .isAncestorsCollapsed>.node:not(.outsider)::before,.orgchart .isCollapsedDescendant::before,.orgchart .isCollapsedDescendant>.node::after,.orgchart .isCollapsedDescendant>.node::before,.orgchart .isCollapsedSibling .hierarchy::before,.orgchart .isCollapsedSibling::before,.orgchart .isSiblingsCollapsed.left-sibs.right-sibs::before,.orgchart .isSiblingsCollapsed.left-sibs:last-child:before,.orgchart .isSiblingsCollapsed.right-sibs:first-child:before,.orgchart .isSiblingsCollapsed:not(.left-sibs):not(.right-sibs)::before,.orgchart>.nodes>.hierarchy::before{content:none}.orgchart .hierarchy:not(.couple)>.node:has(+.nodes)::after{content:"";position:absolute;bottom:-12px;left:calc(50% - 1px);width:2px;height:10px;background-color:rgba(217,83,79,.8)}.orgchart ul li .node.allowedDrop{border-color:rgba(68,157,68,.9)}.orgchart ul li .node.currentDropTarget{background-color:rgba(68,157,68,.9)}.orgchart ul li .node.selected{background-color:rgba(238,217,54,.5)}.orgchart ul li .node:hover{background-color:rgba(238,217,54,.5)}.orgchart>ul>li>ul li>.node:not(.outsider)::before{content:"";position:absolute;top:var(--top,-12px);left:calc(50% - 1px);width:2px;height:var(--height,10px);background-color:rgba(217,83,79,.8)}.orgchart>ul>li>ul li>.node.outsider::before{content:"";position:absolute;top:var(--top,-12px);left:calc(50% - 1px);width:0;height:var(--height,10px);border-right:2px dotted rgba(217,83,79,.8)}.orgchart>ul>li>ul .isSiblingsCollapsed>.node::before{top:var(--top-cross-point,-12px);height:var(--height-cross-point,10px)}.orgchart .node{box-sizing:border-box;display:inline-block;position:relative;margin:0 0 20px 0;padding:3px;border:2px dashed transparent;text-align:center;transition:transform .3s,opacity .3s;z-index:1}.orgchart.l2r .node,.orgchart.r2l .node{width:50px;height:140px}.orgchart .node:hover{background-color:rgba(238,217,54,.5);transition:.5s;cursor:default;z-index:2}.orgchart .node.focused{background-color:rgba(238,217,54,.5)}.orgchart .ghost-node{position:fixed;left:-10000px;top:-10000px}.orgchart .ghost-node rect{fill:#fff;stroke:#bf0000}.orgchart .node.allowedDrop{border-color:rgba(68,157,68,.9)}.orgchart .node>.spinner{position:absolute;top:calc(50% - 1rem);left:calc(50% - 1rem)}.orgchart .node>.spinner::before{width:2rem;height:2rem;border-width:.2rem;border-radius:1rem;border-top-color:rgba(68,157,68,.8);border-bottom-color:rgba(68,157,68,.8);border-left-color:rgba(68,157,68,.8)}.orgchart .node .title{box-sizing:border-box;width:130px;text-align:center;font-size:12px;font-weight:700;height:20px;line-height:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:rgba(217,83,79,.8);color:#fff;border-radius:4px 4px 0 0}.orgchart.b2t .node .title{transform:rotate(-180deg);transform-origin:center bottom}.orgchart.l2r .node .title{transform:rotate(-90deg) translate(-45px,-45px) rotateY(180deg);transform-origin:bottom center}.orgchart.r2l .node .title{transform:rotate(-90deg) translate(-45px,-45px);transform-origin:bottom center}.orgchart .node .title .parentNodeSymbol{float:left}.orgchart .node .title .parentNodeSymbol::before{color:#fff}.orgchart .node .title .parentNodeSymbol::after{background-color:#fff}.orgchart .node .content{box-sizing:border-box;width:130px;height:20px;line-height:20px;font-size:10px;border:1px solid rgba(217,83,79,.8);border-width:0 1px 1px 1px;border-radius:0 0 .25rem .25rem;text-align:center;background-color:#fff;color:#333;text-overflow:ellipsis;white-space:nowrap}.orgchart.b2t .node .content{transform:rotate(180deg);transform-origin:center top}.orgchart.l2r .node .content{transform:rotate(-90deg) translate(-45px,-45px) rotateY(180deg);transform-origin:top center;width:130px}.orgchart.r2l .node .content{transform:rotate(-90deg) translate(-45px,-45px);transform-origin:top center;width:130px}.orgchart .node .edge{position:absolute;cursor:default;transition:.2s}.orgchart .node .edge::before{border-color:rgba(68,157,68,.5)}.orgchart.noncollapsable .node .edge{display:none}.orgchart .node .edge:hover{cursor:pointer}.orgchart .edge:hover::before{border-color:#449d44}.orgchart .node .verticalEdge{width:calc(100% - 6px);height:10px;left:3px}.orgchart .node .verticalEdge::before{position:absolute;left:calc(50% - 5px)}.orgchart .node .topEdge{top:-2px}.orgchart .node .topEdge.oci-chevron-up::before{top:2px}.orgchart .node .topEdge.oci-chevron-down::before{bottom:3px}.orgchart .node .bottomEdge{bottom:-2px}.orgchart .node .bottomEdge.oci-chevron-up::before{bottom:-3px}.orgchart .node .bottomEdge.oci-chevron-down::before{bottom:1px}.orgchart .node .horizontalEdge{width:10px;height:calc(100% - 6px);top:3px}.orgchart .node .rightEdge{right:-2px}.orgchart .node .leftEdge{left:-2px}.orgchart .node .horizontalEdge::before{position:absolute;top:calc(50% - 5px)}.orgchart .node .leftEdge.oci-chevron-right::before{left:-3px}.orgchart .node .leftEdge.oci-chevron-left::before{left:1px}.orgchart .node .rightEdge.oci-chevron-left::before{right:-3px}.orgchart .node .rightEdge.oci-chevron-right::before{right:1px}.orgchart .node .toggleBtn{position:absolute;left:-2px;bottom:-2px;width:16px;height:16px}.orgchart .node .toggleBtn::before{background-color:rgba(68,157,68,.6);position:absolute;left:0;bottom:0}.orgchart .node .toggleBtn:hover::before{background-color:#449d44}.oc-export-btn{margin-left:.5rem;padding:.5rem 1rem}.orgchart .slide-down{opacity:0;transform:translateY(40px)}.orgchart.l2r .node.slide-down,.orgchart.r2l .node.slide-down{transform:translateY(130px)}.orgchart .slide-up{opacity:0;transform:translateY(-40px)}.orgchart.l2r .node.slide-up,.orgchart.r2l .node.slide-up{transform:translateY(-130px)}.orgchart .slide-right{opacity:0;transform:translateX(130px)}.orgchart.l2r .node.slide-right,.orgchart.r2l .node.slide-right{transform:translateX(40px)}.orgchart .slide-left{opacity:0;transform:translateX(-130px)}.orgchart.l2r .node.slide-left,.orgchart.r2l .node.slide-left{transform:translateX(-40px)}.orgchart .nodes.vertical{display:block;padding-left:10px}.orgchart .nodes.vertical .nodes{list-style:none;display:block;margin:0;padding-left:10px;text-align:left}.orgchart .nodes.vertical .node{margin-bottom:0}.orgchart .nodes.vertical .hierarchy .node::after,.orgchart .nodes.vertical .hierarchy .node::before{content:none}.orgchart .nodes.vertical .hierarchy{position:relative;text-align:left}.orgchart .nodes.vertical .hierarchy::after,.orgchart .nodes.vertical .hierarchy::before{box-sizing:border-box;content:'';position:absolute;left:-6px;border-color:rgba(217,83,79,.8);border-style:solid;border-width:0 0 2px 2px}.orgchart .nodes.vertical .hierarchy:only-child::before{width:11px}.orgchart .nodes.vertical .hierarchy::before{top:0;height:26px;width:11px}.orgchart .nodes.vertical .hierarchy::after{bottom:0;height:calc(100% - 24px)}.orgchart .nodes.vertical .hierarchy:last-child::after{border-width:2px 0 0 0}.orgchart .nodes.vertical>.hierarchy:first-child::before{box-sizing:border-box;top:-11px;height:35px;width:calc(50% + 2px);border-width:2px 0 0 2px}.orgchart .nodes.vertical>.hierarchy:first-child::after{box-sizing:border-box;top:24px;width:11px;border-width:2px 0 0 2px}.orgchart .nodes.vertical>.hierarchy:first-child:last-child::after{border-width:2px 0 0 0}.orgchart .node.compact{position:static;display:grid;width:140px;height:50px;background-color:#eee}.orgchart .node.compact.looseMode{display:grid;width:unset;height:unset}.orgchart .node.compact>.node{display:none}.orgchart .node.compact.looseMode>.node{display:inline-block}.orgchart .node.compact>.node.compact{position:relative}.orgchart .node.compact>.node.compact.looseMode{display:grid}.orgchart .node.compact.even,.orgchart .node.compact.even:hover{background-color:#eee}.orgchart .node.compact.odd,.orgchart .node.compact.odd:hover{background-color:#fff}.orgchart .node.compact.even>.node.focused,.orgchart .node.compact.even>.node.selected,.orgchart .node.compact.even>.node:hover{background-color:#fff}.orgchart .node.compact.odd>.node.focused,.orgchart .node.compact.odd>.node.selected,.orgchart .node.compact.odd>.node:hover{background-color:#eee}.orgchart .node.compact::before{top:var(--top-cross-point,-10px)}.orgchart .node.compact>.content{position:absolute;top:25px;left:5px}.orgchart .node.compact.looseMode>.title{margin-top:5px;margin-left:5px}.orgchart .node.compact.looseMode>.content{top:30px;left:10px}.orgchart .node.compact>.node.compact.looseMode>.title{margin-top:5px;margin-left:5px}.orgchart .node.compact>.node.compact>.content{position:absolute;top:23px;left:3px}.orgchart .node.compact>.node.compact.looseMode>.content{top:28px;left:8px}.orgchart .node.compact .node{margin-bottom:0}.orgchart .node.compact .node:has(+.nodes)::after{content:unset}.orgchart .backToCompactSymbol,.orgchart .backToLooseSymbol{cursor:pointer}.orgchart .node.compact>.backToCompactSymbol{position:absolute;top:5px;left:5px}.orgchart .node.compact.looseMode>.backToCompactSymbol{top:10px;left:10px}.orgchart .node.compact>.node.compact.looseMode>.backToCompactSymbol{top:8px;left:8px}.orgchart .node.compact>.node.compact>.backToCompactSymbol{position:absolute;top:3px;left:3px}.orgchart .node.compact>.backToLooseSymbol{position:absolute;top:25px;right:5px}.orgchart .node.compact>.node.compact>.backToLooseSymbol{position:absolute;top:23px;right:3px}.orgchart .node.compact .backToCompactSymbol::before{border-top-color:rgba(68,157,68,.6)}.orgchart .node.compact .backToLooseSymbol::before{border-bottom-color:rgba(68,157,68,.6)}.orgchart .node.compact .backToCompactSymbol:hover::before{border-top-color:#449d44}.orgchart .node.compact .backToLooseSymbol:hover::before{border-bottom-color:#449d44}.oci{display:inline-block;position:relative;font-style:normal;font-family:Arial}.oci-menu::before{content:"≡";display:inline-block;width:1rem;height:1rem;text-align:center;line-height:1rem;color:#000;font-size:1rem}.oci-chevron-up::before{content:"";box-sizing:border-box;width:10px;height:10px;display:inline-block;border:3px solid #000;transform:rotate(45deg);border-right:unset;border-bottom:unset}.oci-chevron-down::before{content:"";box-sizing:border-box;width:10px;height:10px;display:inline-block;border:3px solid #000;transform:rotate(45deg);border-top:unset;border-left:unset}.oci-chevron-left::before{content:"";box-sizing:border-box;width:10px;height:10px;display:inline-block;border:3px solid #000;transform:rotate(45deg);border-top:unset;border-right:unset}.oci-chevron-right::before{content:"";box-sizing:border-box;width:10px;height:10px;display:inline-block;border:3px solid #000;transform:rotate(45deg);border-left:unset;border-bottom:unset}.oci-corner-top-left::before{content:"";display:inline-block;border-top:20px solid #000;border-right:20px solid transparent}.oci-corner-top-right::before{content:"";display:inline-block;box-sizing:border-box;width:0;height:0;border-top:20px solid #000;border-left:20px solid transparent}.oci-corner-bottom-right::before{content:"";display:inline-block;box-sizing:border-box;width:0;height:0;border-bottom:20px solid #000;border-left:20px solid transparent}.oci-corner-bottom-left::before{content:"";display:inline-block;box-sizing:border-box;width:0;height:0;border-bottom:20px solid #000;border-right:20px solid transparent}.oci-plus-square::before{content:"﹢";display:inline-block;width:16px;height:16px;text-align:center;line-height:16px;background-color:#000;color:#fff;font-weight:700}.oci-minus-square::before{content:"﹣";display:inline-block;width:16px;height:16px;text-align:center;line-height:16px;background-color:#000;color:#fff;font-weight:700}.oci-arrow-square-up::before{content:"⬆";display:inline-block;width:1rem;height:1rem;text-align:center;line-height:1rem;background-color:#000;color:#fff;font-weight:700}.oci-arrow-square-down::before{content:"⬇";display:inline-block;width:1rem;height:1rem;text-align:center;line-height:1rem;background-color:#000;color:#fff;font-weight:700}.oci-info-circle::before{content:"i";display:inline-block;width:1rem;height:1rem;border-radius:.5rem;background-color:#000;color:#fff;text-align:center;font-weight:700}.oci-spinner::before{content:"";vertical-align:text-bottom;display:inline-block;box-sizing:border-box;width:1rem;height:1rem;border:.1rem solid #000;border-right-color:transparent;border-radius:.625rem;animation:oci-infinite-spinning .75s linear infinite}@keyframes oci-infinite-spinning{from{transform:rotate(0)}to{transform:rotate(360deg)}}