wj-elements 0.1.70 → 0.1.72
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/wje-dialog.js +1 -2
- package/dist/wje-input.js +1 -1
- package/dist/wje-master.js +77 -64
- package/dist/wje-orgchart-group.js +64 -0
- package/dist/wje-orgchart-item.js +12 -2
- package/dist/wje-orgchart.js +4 -551
- package/package.json +1 -1
- package/dist/wje-orgchartItem.js +0 -4
package/dist/wje-dialog.js
CHANGED
|
@@ -97,9 +97,8 @@ class Dialog extends WJElement {
|
|
|
97
97
|
this.onClose();
|
|
98
98
|
}
|
|
99
99
|
afterDraw(context, store, params) {
|
|
100
|
-
this.button = document.querySelector(`[dialog=${params.trigger}]`);
|
|
101
100
|
if (params.trigger) {
|
|
102
|
-
event.addListener(
|
|
101
|
+
event.addListener(document, params.trigger, null, this.onOpen);
|
|
103
102
|
}
|
|
104
103
|
}
|
|
105
104
|
beforeOpen() {
|
package/dist/wje-input.js
CHANGED
|
@@ -5,7 +5,7 @@ var __publicField = (obj, key, value) => {
|
|
|
5
5
|
return value;
|
|
6
6
|
};
|
|
7
7
|
import WJElement, { event } from "./wje-element.js";
|
|
8
|
-
const styles = '/*\n[ WJ Input ]\n*/\n\n:host {\n --wje-input-font-family: var(--wje-font-family);\n --wje-input-background-color: var(--wje-background);\n --wje-input-color: var(--wje-color);\n --wje-input-color-invalid: var(--wje-color-danger);\n --wje-input-border-color: var(--wje-border-color);\n --wje-input-border-color-focus: var(--wje-color-primary);\n --wje-input-border-width: 1px;\n --wje-input-border-style: solid;\n --wje-input-border-radius: 4px;\n --wje-input-margin-bottom: .5rem;\n --wje-input-line-height: 20px;\n --wje-input-slot-padding-inline: .5rem;\n width: 100%;\n margin-bottom: var(--wje-input-margin-bottom);\n display: block;\n\n .wrapper {\n display: flex;\n width: 100%;\n }\n .native-input {\n .input-wrapper {\n width: 100%;\n position: relative;\n }\n &.default {\n background-color: var(--wje-input-background-color);\n font-family: var(--wje-input-font-family);\n position: relative;\n border-radius: var(--wje-input-border-radius);\n border-width: var(--wje-input-border-width);\n border-style: var(--wje-input-border-style);\n border-color: var(--wje-input-border-color);\n padding-inline: 0;\n padding-top: .25rem;\n padding-bottom: .25rem;\n transition: background-color 0.2s ease;\n cursor: text;\n .input-wrapper {\n margin-inline: .5rem;\n }\n &.focused {\n border-color: var(--wje-input-border-color-focus) !important;\n label {\n opacity: 0.67;\n font-size: 12px;\n letter-spacing: normal;\n }\n }\n input {\n border: none;\n height: 25px;\n min-height: 25px;\n padding: 0;\n margin-top: -4px;\n background: none;\n box-shadow: none;\n width: 100%;\n }\n label {\n margin: 0;\n display: block;\n opacity: 1;\n cursor: text;\n transition: opacity 0.2s ease;\n line-height: var(--wje-input-line-height);\n &.fade {\n opacity: 0.5;\n font-size: 12px;\n letter-spacing: normal;\n }\n }\n ::slotted([slot="start"]) {\n border-left: none;\n border-top: none;\n border-bottom: none;\n }\n\n ::slotted([slot="end"]) {\n border-right: none;\n border-top: none;\n border-bottom: none;\n }\n }\n &.standard {\n font-family: var(--wje-input-font-family);\n position: relative;\n border-radius: var(--wje-input-border-radius);\n padding-inline: 0;\n padding-top: 0;\n padding-bottom: 0;\n transition: background-color 0.2s ease;\n cursor: text;\n &.focused {\n input {\n border-color: var(--wje-input-border-color-focus) !important;\n }\n }\n input {\n background-color: var(--wje-input-background-color);\n display: block;\n min-height: 32px;\n padding-inline: .5rem;\n padding-top: 0;\n padding-bottom: 0;\n /*background: none;*/\n box-shadow: none;\n width: 100%;\n box-sizing: border-box;\n border-radius: var(--wje-input-border-radius);\n border-width: var(--wje-input-border-width);\n border-style: var(--wje-input-border-style);\n border-color: var(--wje-input-border-color);\n }\n label {\n margin: 0;\n display: inline-block;\n opacity: 1;\n cursor: text;\n transition: opacity 0.2s ease;\n line-height: var(--wje-input-line-height);\n }\n .input-wrapper {\n &:hover .clear {\n visibility: visible;\n }\n }\n ::slotted([slot="start"]) {\n border-right: none;\n border-radius: var(--wje-input-border-radius) 0 0 var(--wje-input-border-radius);\n }\n\n ::slotted([slot="end"]) {\n border-left: none;\n border-radius: 0 var(--wje-input-border-radius) var(--wje-input-border-radius) 0;\n }\n\n &.has-start input{\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n &.has-end input{\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .error-message {\n position: static;\n\n background: transparent;\n padding: 0.25rem 0;\n left: auto;\n transform: none;\n color: var(--wje-input-color-invalid);\n font-size: 12px;\n line-height: normal;\n }\n }\n }\n}\n\n.clear {\n visibility: hidden;\n position: absolute;\n right: 0;\n top: 3px;\n --wje-padding-top: .25rem;\n --wje-padding-start: .25rem;\n --wje-padding-end: .25rem;\n --wje-padding-bottom: .25rem;\n --wje-button-margin-inline: 0 .25rem;\n}\n\n:host([required]) .input-wrapper::after {\n color: var(--wje-input-color-invalid);\n content: "*";\n font-family: var(--wje-force-mac-font-family);\n font-size: 20px;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n:host([required]) .standard .input-wrapper::after {\n top: 0;\n}\n\n:host([invalid]) {\n .error-message {\n display: block;\n }\n .default {\n label {\n opacity: 1 !important;\n color: var(--wje-input-color-invalid) !important;\n animation-name: shake;\n animation-duration: 0.4s;\n animation-iteration-count: 1;\n }\n }\n}\n\n::slotted([slot="start"]), ::slotted([slot="end"]) {\n display: flex;\n align-items: center;\n border-width: var(--wje-input-border-width);\n border-style: var(--wje-input-border-style);\n border-color: var(--wje-input-border-color);\n padding-inline: var(--wje-input-slot-padding-inline);\n}\n\nslot[name="start"], slot[name="end"] {\n display: flex;\n}\n\nslot[name="error"] {\n display: none;\n margin-inline: .5rem;\n}\n\n:host([invalid]) slot[name="error"] {\n display: block;\n}\n\ninput {\n background-color: var(--wje-input-background-color);\n border-width: var(--wje-input-border-width);\n border-style: var(--wje-input-border-style);\n border-color: var(--wje-input-border-color);\n font-family: var(--
|
|
8
|
+
const styles = '/*\n[ WJ Input ]\n*/\n\n:host {\n --wje-input-font-family: var(--wje-font-family);\n --wje-input-background-color: var(--wje-background);\n --wje-input-color: var(--wje-color);\n --wje-input-color-invalid: var(--wje-color-danger);\n --wje-input-border-color: var(--wje-border-color);\n --wje-input-border-color-focus: var(--wje-color-primary);\n --wje-input-border-width: 1px;\n --wje-input-border-style: solid;\n --wje-input-border-radius: 4px;\n --wje-input-margin-bottom: .5rem;\n --wje-input-line-height: 20px;\n --wje-input-slot-padding-inline: .5rem;\n width: 100%;\n margin-bottom: var(--wje-input-margin-bottom);\n display: block;\n\n .wrapper {\n display: flex;\n width: 100%;\n }\n .native-input {\n .input-wrapper {\n width: 100%;\n position: relative;\n }\n &.default {\n background-color: var(--wje-input-background-color);\n font-family: var(--wje-input-font-family);\n position: relative;\n border-radius: var(--wje-input-border-radius);\n border-width: var(--wje-input-border-width);\n border-style: var(--wje-input-border-style);\n border-color: var(--wje-input-border-color);\n padding-inline: 0;\n padding-top: .25rem;\n padding-bottom: .25rem;\n transition: background-color 0.2s ease;\n cursor: text;\n .input-wrapper {\n margin-inline: .5rem;\n }\n &.focused {\n border-color: var(--wje-input-border-color-focus) !important;\n label {\n opacity: 0.67;\n font-size: 12px;\n letter-spacing: normal;\n }\n }\n input {\n border: none;\n height: 25px;\n min-height: 25px;\n padding: 0;\n margin-top: -4px;\n background: none;\n box-shadow: none;\n width: 100%;\n }\n label {\n margin: 0;\n display: block;\n opacity: 1;\n cursor: text;\n transition: opacity 0.2s ease;\n line-height: var(--wje-input-line-height);\n &.fade {\n opacity: 0.5;\n font-size: 12px;\n letter-spacing: normal;\n }\n }\n ::slotted([slot="start"]) {\n border-left: none;\n border-top: none;\n border-bottom: none;\n }\n\n ::slotted([slot="end"]) {\n border-right: none;\n border-top: none;\n border-bottom: none;\n }\n }\n &.standard {\n font-family: var(--wje-input-font-family);\n position: relative;\n border-radius: var(--wje-input-border-radius);\n padding-inline: 0;\n padding-top: 0;\n padding-bottom: 0;\n transition: background-color 0.2s ease;\n cursor: text;\n &.focused {\n input {\n border-color: var(--wje-input-border-color-focus) !important;\n }\n }\n input {\n background-color: var(--wje-input-background-color);\n display: block;\n min-height: 32px;\n padding-inline: .5rem;\n padding-top: 0;\n padding-bottom: 0;\n /*background: none;*/\n box-shadow: none;\n width: 100%;\n box-sizing: border-box;\n border-radius: var(--wje-input-border-radius);\n border-width: var(--wje-input-border-width);\n border-style: var(--wje-input-border-style);\n border-color: var(--wje-input-border-color);\n }\n label {\n margin: 0;\n display: inline-block;\n opacity: 1;\n cursor: text;\n transition: opacity 0.2s ease;\n line-height: var(--wje-input-line-height);\n }\n .input-wrapper {\n &:hover .clear {\n visibility: visible;\n }\n }\n ::slotted([slot="start"]) {\n border-right: none;\n border-radius: var(--wje-input-border-radius) 0 0 var(--wje-input-border-radius);\n }\n\n ::slotted([slot="end"]) {\n border-left: none;\n border-radius: 0 var(--wje-input-border-radius) var(--wje-input-border-radius) 0;\n }\n\n &.has-start input{\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n &.has-end input{\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .error-message {\n position: static;\n\n background: transparent;\n padding: 0.25rem 0;\n left: auto;\n transform: none;\n color: var(--wje-input-color-invalid);\n font-size: 12px;\n line-height: normal;\n }\n }\n }\n}\n\n.clear {\n visibility: hidden;\n position: absolute;\n right: 0;\n top: 3px;\n --wje-padding-top: .25rem;\n --wje-padding-start: .25rem;\n --wje-padding-end: .25rem;\n --wje-padding-bottom: .25rem;\n --wje-button-margin-inline: 0 .25rem;\n}\n\n:host([required]) .input-wrapper::after {\n color: var(--wje-input-color-invalid);\n content: "*";\n font-family: var(--wje-force-mac-font-family);\n font-size: 20px;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n:host([required]) .standard .input-wrapper::after {\n top: 0;\n}\n\n:host([invalid]) {\n .error-message {\n display: block;\n }\n .default {\n label {\n opacity: 1 !important;\n color: var(--wje-input-color-invalid) !important;\n animation-name: shake;\n animation-duration: 0.4s;\n animation-iteration-count: 1;\n }\n }\n}\n\n::slotted([slot="start"]), ::slotted([slot="end"]) {\n display: flex;\n align-items: center;\n border-width: var(--wje-input-border-width);\n border-style: var(--wje-input-border-style);\n border-color: var(--wje-input-border-color);\n padding-inline: var(--wje-input-slot-padding-inline);\n}\n\nslot[name="start"], slot[name="end"] {\n display: flex;\n}\n\nslot[name="error"] {\n display: none;\n margin-inline: .5rem;\n}\n\n:host([invalid]) slot[name="error"] {\n display: block;\n}\n\ninput {\n background-color: var(--wje-input-background-color);\n border-width: var(--wje-input-border-width);\n border-style: var(--wje-input-border-style);\n border-color: var(--wje-input-border-color);\n font-family: var(--wje-input-font-family);\n color: var(--wje-input-color);\n appearance: none;\n outline: 0;\n padding: .25rem .5rem;\n line-height: var(--wje-input-line-height);\n font-size: 14px;\n font-weight: normal;\n vertical-align: middle;\n min-height: 32px;\n}\n\n.error-message {\n display: none;\n position: absolute;\n width: auto;\n max-width: 100%;\n min-width: auto;\n border-radius: 50px;\n background: black;\n padding: .25rem .5rem;\n top: 0;\n left: 50%;\n transform: translate(-50%, -50%);\n color: white;\n font-size: 12px;\n line-height: normal;\n}\n\n@keyframes shake {\n 8%,\n 41% {\n transform: translateX(-4px);\n }\n 25%,\n 58% {\n transform: translateX(4px);\n }\n 75% {\n transform: translateX(-2px);\n }\n 92% {\n transform: translateX(2px);\n }\n 0%,\n 100% {\n transform: translateX(0);\n }\n}';
|
|
9
9
|
class Input extends WJElement {
|
|
10
10
|
/**
|
|
11
11
|
* Constructor for the Input class.
|
package/dist/wje-master.js
CHANGED
|
@@ -61,39 +61,40 @@ import { default as default50 } from "./wje-menu-label.js";
|
|
|
61
61
|
import { default as default51 } from "./wje-option.js";
|
|
62
62
|
import { default as default52 } from "./wje-options.js";
|
|
63
63
|
import { default as default53 } from "./wje-orgchart.js";
|
|
64
|
-
import { default as default54 } from "./wje-orgchart-
|
|
64
|
+
import { default as default54 } from "./wje-orgchart-group.js";
|
|
65
|
+
import { default as default55 } from "./wje-orgchart-item.js";
|
|
65
66
|
import "./wje-popup.js";
|
|
66
|
-
import { default as
|
|
67
|
-
import { default as
|
|
68
|
-
import { default as
|
|
69
|
-
import { default as
|
|
70
|
-
import { default as
|
|
71
|
-
import { default as
|
|
72
|
-
import { default as
|
|
73
|
-
import { default as
|
|
74
|
-
import { default as
|
|
75
|
-
import { default as
|
|
76
|
-
import { default as
|
|
77
|
-
import { default as
|
|
78
|
-
import { default as
|
|
79
|
-
import { default as
|
|
80
|
-
import { default as
|
|
81
|
-
import { default as
|
|
82
|
-
import { default as
|
|
83
|
-
import { default as
|
|
84
|
-
import { default as
|
|
85
|
-
import { default as
|
|
86
|
-
import { default as
|
|
87
|
-
import { default as
|
|
88
|
-
import { default as
|
|
89
|
-
import { default as
|
|
90
|
-
import { default as
|
|
91
|
-
import { default as
|
|
92
|
-
import { default as
|
|
93
|
-
import { default as
|
|
94
|
-
import { default as
|
|
95
|
-
import { default as
|
|
96
|
-
import { default as
|
|
67
|
+
import { default as default56 } from "./wje-progress-bar.js";
|
|
68
|
+
import { default as default57 } from "./wje-qr-code.js";
|
|
69
|
+
import { default as default58 } from "./wje-radio.js";
|
|
70
|
+
import { default as default59 } from "./wje-radio-group.js";
|
|
71
|
+
import { default as default60 } from "./wje-rate.js";
|
|
72
|
+
import { default as default61 } from "./wje-relative-time.js";
|
|
73
|
+
import { default as default62 } from "./wje-reorder.js";
|
|
74
|
+
import { default as default63 } from "./wje-reorder-dropzone.js";
|
|
75
|
+
import { default as default64 } from "./wje-reorder-handle.js";
|
|
76
|
+
import { default as default65 } from "./wje-reorder-item.js";
|
|
77
|
+
import { default as default66 } from "./wje-route.js";
|
|
78
|
+
import { default as default67 } from "./wje-routerx.js";
|
|
79
|
+
import { default as default68 } from "./wje-router-link.js";
|
|
80
|
+
import { default as default69 } from "./wje-router-outlet.js";
|
|
81
|
+
import { default as default70 } from "./wje-row.js";
|
|
82
|
+
import { default as default71 } from "./wje-select.js";
|
|
83
|
+
import { default as default72 } from "./wje-slider.js";
|
|
84
|
+
import { default as default73 } from "./wje-split-view.js";
|
|
85
|
+
import { default as default74 } from "./wje-status.js";
|
|
86
|
+
import { default as default75 } from "./wje-tab.js";
|
|
87
|
+
import { default as default76 } from "./wje-tab-group.js";
|
|
88
|
+
import { default as default77 } from "./wje-tab-panel.js";
|
|
89
|
+
import { default as default78 } from "./wje-textarea.js";
|
|
90
|
+
import { default as default79 } from "./wje-thumbnail.js";
|
|
91
|
+
import { default as default80 } from "./wje-toast.js";
|
|
92
|
+
import { default as default81 } from "./wje-toggle.js";
|
|
93
|
+
import { default as default82 } from "./wje-toolbar.js";
|
|
94
|
+
import { default as default83 } from "./wje-toolbar-action.js";
|
|
95
|
+
import { default as default84 } from "./wje-tooltip.js";
|
|
96
|
+
import { default as default85 } from "./wje-visually-hidden.js";
|
|
97
|
+
import { default as default86 } from "./wje-sliding-container.js";
|
|
97
98
|
import { P } from "./popup.element-DvPGL_NN.js";
|
|
98
99
|
function formatDate(input, format) {
|
|
99
100
|
let date;
|
|
@@ -5096,6 +5097,7 @@ class Stepper extends WJElement {
|
|
|
5096
5097
|
this.setStepDone(step, badge);
|
|
5097
5098
|
});
|
|
5098
5099
|
this.setStepActive(this.headerSteps[stepIndex], null, stepIndex);
|
|
5100
|
+
this.setContentActive(stepIndex);
|
|
5099
5101
|
this.currentStep = stepIndex;
|
|
5100
5102
|
this.prev.disabled = this.currentStep === 0;
|
|
5101
5103
|
this.next.disabled = this.currentStep === this.steps.length - 1;
|
|
@@ -5118,6 +5120,16 @@ class Stepper extends WJElement {
|
|
|
5118
5120
|
badge.innerHTML = stepIndex + 1;
|
|
5119
5121
|
badge.setAttribute("color", this.active);
|
|
5120
5122
|
}
|
|
5123
|
+
setContentActive(stepIndex) {
|
|
5124
|
+
var _a2;
|
|
5125
|
+
(_a2 = this.steps) == null ? void 0 : _a2.forEach((step, index) => {
|
|
5126
|
+
if (index === stepIndex) {
|
|
5127
|
+
step.style.display = "block";
|
|
5128
|
+
} else {
|
|
5129
|
+
step.style.display = "none";
|
|
5130
|
+
}
|
|
5131
|
+
});
|
|
5132
|
+
}
|
|
5121
5133
|
setStepDone(nav, badge = null) {
|
|
5122
5134
|
nav.setAttribute("done", "");
|
|
5123
5135
|
const checkIcon = document.createElement("wje-icon");
|
|
@@ -5309,43 +5321,44 @@ export {
|
|
|
5309
5321
|
default51 as Option,
|
|
5310
5322
|
default52 as Options,
|
|
5311
5323
|
default53 as Orgchart,
|
|
5312
|
-
default54 as
|
|
5324
|
+
default54 as OrgchartGroup,
|
|
5325
|
+
default55 as OrgchartItem,
|
|
5313
5326
|
P as Popup,
|
|
5314
|
-
|
|
5315
|
-
|
|
5316
|
-
|
|
5317
|
-
|
|
5318
|
-
|
|
5319
|
-
|
|
5320
|
-
|
|
5321
|
-
|
|
5322
|
-
|
|
5323
|
-
|
|
5324
|
-
|
|
5325
|
-
|
|
5326
|
-
|
|
5327
|
-
|
|
5328
|
-
|
|
5329
|
-
|
|
5330
|
-
|
|
5331
|
-
|
|
5332
|
-
|
|
5333
|
-
|
|
5327
|
+
default56 as ProgressBar,
|
|
5328
|
+
default57 as QrCode,
|
|
5329
|
+
default58 as Radio,
|
|
5330
|
+
default59 as RadioGroup,
|
|
5331
|
+
default60 as Rate,
|
|
5332
|
+
default61 as RelativeTime,
|
|
5333
|
+
default62 as Reorder,
|
|
5334
|
+
default63 as ReorderDropzone,
|
|
5335
|
+
default64 as ReorderHandle,
|
|
5336
|
+
default65 as ReorderItem,
|
|
5337
|
+
default66 as Route,
|
|
5338
|
+
default68 as RouterLink,
|
|
5339
|
+
default69 as RouterOutlet,
|
|
5340
|
+
default67 as Routerx,
|
|
5341
|
+
default70 as Row,
|
|
5342
|
+
default71 as Select,
|
|
5343
|
+
default72 as Slider,
|
|
5344
|
+
default86 as SlidingContainer,
|
|
5345
|
+
default73 as SplitView,
|
|
5346
|
+
default74 as Status,
|
|
5334
5347
|
Step,
|
|
5335
5348
|
Stepper,
|
|
5336
|
-
|
|
5337
|
-
|
|
5338
|
-
|
|
5339
|
-
|
|
5340
|
-
|
|
5349
|
+
default75 as Tab,
|
|
5350
|
+
default76 as TabGroup,
|
|
5351
|
+
default77 as TabPanel,
|
|
5352
|
+
default78 as Textarea,
|
|
5353
|
+
default79 as Thumbnail,
|
|
5341
5354
|
Timeline,
|
|
5342
5355
|
TimelineItem,
|
|
5343
|
-
|
|
5344
|
-
|
|
5345
|
-
|
|
5346
|
-
|
|
5347
|
-
|
|
5348
|
-
|
|
5356
|
+
default80 as Toast,
|
|
5357
|
+
default81 as Toggle,
|
|
5358
|
+
default82 as Toolbar,
|
|
5359
|
+
default83 as ToolbarAction,
|
|
5360
|
+
default84 as Tooltip,
|
|
5361
|
+
default85 as VisuallyHidden,
|
|
5349
5362
|
WJElement,
|
|
5350
5363
|
b as bindRouterLinks,
|
|
5351
5364
|
defaultStoreActions,
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
+
var __publicField = (obj, key, value) => {
|
|
4
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
|
+
return value;
|
|
6
|
+
};
|
|
7
|
+
import WJElement from "./wje-element.js";
|
|
8
|
+
const styles = ":host {\n --wje-orgchart-group-width: auto;\n --wje-orgchart-group-border-radius: var(--wje-border-radius-large);\n --wje-orgchart-group-height-line: 10px;\n text-align: center;\n list-style-type: none;\n position: relative;\n padding: var(--wje-orgchart-group-height-line) 0 0 0;\n transition: all 0.5s;\n\n &::before, &::after {\n content: '';\n position: absolute;\n top: 0;\n right: 50%;\n border-top: 1px solid var(--wje-border-color);\n width: 50%;\n height: var(--wje-orgchart-group-height-line);\n }\n\n &::after {\n right: auto;\n left: 50%;\n border-left: 1px solid var(--wje-border-color);\n }\n\n wje-card::part(native) {\n box-sizing: border-box;\n padding: .25rem 0;\n }\n\n wje-card h4 {\n margin: 0;\n }\n wje-card .items {\n display: flex;\n }\n\n .orgchart-group {\n display: flex;\n flex-direction: column;\n wje-card {\n margin: 0 auto;\n width: var(--wje-orgchart-group-width);\n }\n }\n}\n\n:host(:only-child)::after, :host(:only-child)::before {\n display: none;\n}\n\n:host(:only-child) {\n padding-top: 0;\n}\n\n:host(:first-child)::before,\n:host(:last-child)::after {\n border: 0 none;\n}\n\n:host(:last-child)::before {\n border-right: 1px solid var(--wje-border-color);\n border-radius: 0 var(--wje-orgchart-group-border-radius) 0 0;\n}\n\n:host(:first-child)::after {\n border-radius: var(--wje-orgchart-group-border-radius) 0 0 0;\n}";
|
|
9
|
+
class OrgchartGroup extends WJElement {
|
|
10
|
+
/**
|
|
11
|
+
* Creates an instance of OrgchartGroup.
|
|
12
|
+
*
|
|
13
|
+
* @constructor
|
|
14
|
+
*/
|
|
15
|
+
constructor() {
|
|
16
|
+
super();
|
|
17
|
+
__publicField(this, "className", "OrgchartGroup");
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Returns the CSS styles for the component.
|
|
21
|
+
*
|
|
22
|
+
* @static
|
|
23
|
+
* @returns {CSSStyleSheet}
|
|
24
|
+
*/
|
|
25
|
+
static get cssStyleSheet() {
|
|
26
|
+
return styles;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Sets up the attributes for the component.
|
|
30
|
+
*/
|
|
31
|
+
setupAttributes() {
|
|
32
|
+
this.isShadowRoot = "open";
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Draws the component.
|
|
36
|
+
*
|
|
37
|
+
* @param {Object} context - The context for drawing.
|
|
38
|
+
* @param {Object} store - The store for drawing.
|
|
39
|
+
* @param {Object} params - The parameters for drawing.
|
|
40
|
+
* @returns {DocumentFragment}
|
|
41
|
+
*/
|
|
42
|
+
draw(context, store, params) {
|
|
43
|
+
let fragment = document.createDocumentFragment();
|
|
44
|
+
let native = document.createElement("div");
|
|
45
|
+
native.setAttribute("part", "native");
|
|
46
|
+
native.classList.add("orgchart-group");
|
|
47
|
+
let card = document.createElement("wje-card");
|
|
48
|
+
let title = document.createElement("h4");
|
|
49
|
+
title.innerHTML = this.getAttribute("title") || "";
|
|
50
|
+
let items = document.createElement("div");
|
|
51
|
+
items.classList.add("items");
|
|
52
|
+
let slot = document.createElement("slot");
|
|
53
|
+
items.appendChild(slot);
|
|
54
|
+
card.appendChild(title);
|
|
55
|
+
card.appendChild(items);
|
|
56
|
+
native.appendChild(card);
|
|
57
|
+
fragment.appendChild(native);
|
|
58
|
+
return fragment;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
OrgchartGroup.define("wje-orgchart-group", OrgchartGroup);
|
|
62
|
+
export {
|
|
63
|
+
OrgchartGroup as default
|
|
64
|
+
};
|
|
@@ -5,7 +5,7 @@ var __publicField = (obj, key, value) => {
|
|
|
5
5
|
return value;
|
|
6
6
|
};
|
|
7
7
|
import WJElement from "./wje-element.js";
|
|
8
|
-
const styles = ".orgchart-item {\n
|
|
8
|
+
const styles = ":host {\n --wje-orgchart-item-width: 75px;\n --wje-orgchart-item-border-radius: var(--wje-border-radius-large);\n --wje-orgchart-item-height-line: 10px;\n width: var(--wje-orgchart-item-width);\n box-sizing: border-box;\n\n .orgchart-item {\n display: flex;\n flex-direction: column;\n\n wje-card {\n margin: 0 auto;\n padding-inline: .25rem;\n width: var(--wje-orgchart-item-width);\n box-sizing: border-box;\n &::part(native) {\n border-radius: var(--wje-orgchart-border-radius) !important;\n box-sizing: border-box;\n }\n }\n }\n}\n\n/* ak nie je parent-group */\n:host(:not(.parent-group)) {\n text-align: center;\n list-style-type: none;\n position: relative;\n padding: var(--wje-orgchart-item-height-line) 0 0 0;\n transition: all 0.5s;\n width: auto;\n\n &::before, &::after {\n content: '';\n position: absolute;\n top: 0;\n right: 50%;\n border-top: 1px solid var(--wje-border-color);\n width: 50%;\n height: var(--wje-orgchart-item-height-line);\n }\n\n &::after {\n right: auto;\n left: 50%;\n border-left: 1px solid var(--wje-border-color);\n }\n\n wje-card::part(native) {\n box-sizing: border-box;\n }\n}\n\n:host(:hover){\n wje-card::part(native) {\n background: var(--wje-color-contrast-3);\n /*color: #000;*/\n }\n}\n\n:host(.highlight){\n wje-card::part(native) {\n background: var(--wje-color-complete-2);\n /*color: #000;*/\n }\n}\n\n\n:host(:only-child)::after, :host(:only-child)::before {\n display: none;\n}\n\n:host(:only-child) {\n padding-top: 0;\n}\n\n:host(:first-child)::before,\n:host(:last-child)::after {\n border: 0 none;\n}\n\n:host(:last-child)::before {\n border-right: 1px solid var(--wje-border-color);\n border-radius: 0 var(--wje-orgchart-item-border-radius) 0 0;\n}\n\n:host(:first-child)::after {\n border-radius: var(--wje-orgchart-item-border-radius) 0 0 0;\n}";
|
|
9
9
|
class OrgchartItem extends WJElement {
|
|
10
10
|
/**
|
|
11
11
|
* Creates an instance of OrgchartItem.
|
|
@@ -31,6 +31,11 @@ class OrgchartItem extends WJElement {
|
|
|
31
31
|
setupAttributes() {
|
|
32
32
|
this.isShadowRoot = "open";
|
|
33
33
|
}
|
|
34
|
+
beforeDraw() {
|
|
35
|
+
if (this.parentElement && this.parentElement.tagName === "WJE-ORGCHART-GROUP") {
|
|
36
|
+
this.classList.add("parent-group");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
34
39
|
/**
|
|
35
40
|
* Draws the component.
|
|
36
41
|
*
|
|
@@ -44,8 +49,13 @@ class OrgchartItem extends WJElement {
|
|
|
44
49
|
let native = document.createElement("div");
|
|
45
50
|
native.setAttribute("part", "native");
|
|
46
51
|
native.classList.add("orgchart-item");
|
|
52
|
+
let card = document.createElement("wje-card");
|
|
47
53
|
let slot = document.createElement("slot");
|
|
48
|
-
|
|
54
|
+
let child = document.createElement("slot");
|
|
55
|
+
child.setAttribute("name", "child");
|
|
56
|
+
card.appendChild(slot);
|
|
57
|
+
native.appendChild(card);
|
|
58
|
+
native.appendChild(child);
|
|
49
59
|
fragment.appendChild(native);
|
|
50
60
|
return fragment;
|
|
51
61
|
}
|
package/dist/wje-orgchart.js
CHANGED
|
@@ -5,7 +5,7 @@ var __publicField = (obj, key, value) => {
|
|
|
5
5
|
return value;
|
|
6
6
|
};
|
|
7
7
|
import WJElement from "./wje-element.js";
|
|
8
|
-
const styles =
|
|
8
|
+
const styles = "\n\n* {margin: 0; padding: 0;}\n\n:host {\n --wje-orgchart-height-line: 10px;\n --wje-orgchart-border-radius: var(--wje-border-radius-large);\n\n position: relative;\n .native-orgchart {\n padding-top: var(--wje-orgchart-height-line);\n display: flex;\n /*column-gap: .5rem;*/\n }\n &::before {\n content: '';\n position: absolute;\n top: 0;\n left: 50%;\n border-left: 1px solid var(--wje-border-color);\n width: 0;\n height: var(--wje-orgchart-height-line);\n }\n}\n\n";
|
|
9
9
|
class Orgchart extends WJElement {
|
|
10
10
|
/**
|
|
11
11
|
* Creates an instance of Orgchart.
|
|
@@ -15,257 +15,6 @@ class Orgchart extends WJElement {
|
|
|
15
15
|
constructor() {
|
|
16
16
|
super();
|
|
17
17
|
__publicField(this, "className", "Orgchart");
|
|
18
|
-
__publicField(this, "getCookieValue", (name) => {
|
|
19
|
-
var _a;
|
|
20
|
-
return ((_a = document.cookie.match("(^|;)\\s*" + name + "\\s*=\\s*([^;]+)")) == null ? void 0 : _a.pop()) || "";
|
|
21
|
-
});
|
|
22
|
-
__publicField(this, "upTemplate", (person) => {
|
|
23
|
-
console.log("PERSON:", person);
|
|
24
|
-
return `<div class="manager">${person["Reports To Full Name"]}</div>`;
|
|
25
|
-
});
|
|
26
|
-
//
|
|
27
|
-
// hide() {
|
|
28
|
-
// document.getElementById('detailView').style.display = "none";
|
|
29
|
-
// }
|
|
30
|
-
//
|
|
31
|
-
// showDetails(person_id) {
|
|
32
|
-
// let oldMaxDepth = this.maxDepth;
|
|
33
|
-
// this.maxDepth = 1;
|
|
34
|
-
// document.getElementById('detailView').style.display = "block";
|
|
35
|
-
// document.getElementById('detailView').innerHTML = this.render(this.ORGCHART_DATA[person_id], personTemplate);
|
|
36
|
-
// this.maxDepth = oldMaxDepth;
|
|
37
|
-
// }
|
|
38
|
-
//
|
|
39
|
-
// search(sText, sType) {
|
|
40
|
-
// if (sText.length === 0) {
|
|
41
|
-
// return;
|
|
42
|
-
// }
|
|
43
|
-
// const people = this.ORGCHART_DATA;
|
|
44
|
-
// const searchString = new RegExp(sText, "i");
|
|
45
|
-
// const oMatches = {};
|
|
46
|
-
// switch (sType) {
|
|
47
|
-
// case "name" :
|
|
48
|
-
// searchName(searchString);
|
|
49
|
-
// break;
|
|
50
|
-
//
|
|
51
|
-
// case "team" :
|
|
52
|
-
// searchTeam(searchString);
|
|
53
|
-
// break;
|
|
54
|
-
//
|
|
55
|
-
// case "title" :
|
|
56
|
-
// searchJobTitle(searchString);
|
|
57
|
-
// break;
|
|
58
|
-
// }
|
|
59
|
-
// showResults();
|
|
60
|
-
//
|
|
61
|
-
// function showResults() {
|
|
62
|
-
// document.getElementById("searchResults").innerHTML = "";
|
|
63
|
-
// for (let person in oMatches) {
|
|
64
|
-
// document.getElementById("searchResults").innerHTML += this.render(oMatches [person], searchResultTemplate);
|
|
65
|
-
// }
|
|
66
|
-
// }
|
|
67
|
-
//
|
|
68
|
-
// function searchTeam(searchString) {
|
|
69
|
-
// let iMatches = 0;
|
|
70
|
-
//
|
|
71
|
-
// for (const person_id in people) {
|
|
72
|
-
// const person = people[person_id];
|
|
73
|
-
// if (searchString.test(person["Department"]) || searchString.test(person["Division"]) || searchString.test(person["Teams"])) {
|
|
74
|
-
// if (iMatches < 20) {
|
|
75
|
-
// iMatches++;
|
|
76
|
-
// oMatches[person_id] = person;
|
|
77
|
-
// } else {
|
|
78
|
-
// break;
|
|
79
|
-
// }
|
|
80
|
-
// }
|
|
81
|
-
// }
|
|
82
|
-
// return iMatches;
|
|
83
|
-
// }
|
|
84
|
-
//
|
|
85
|
-
// function searchJobTitle() {
|
|
86
|
-
// let iMatches = 0;
|
|
87
|
-
// for (const person_id in people) {
|
|
88
|
-
// const person = people[person_id];
|
|
89
|
-
// if (searchString.test(person["Job Title"])) {
|
|
90
|
-
// if (iMatches < 20) {
|
|
91
|
-
// iMatches++;
|
|
92
|
-
// oMatches[person_id] = person;
|
|
93
|
-
// } else {
|
|
94
|
-
// break;
|
|
95
|
-
// }
|
|
96
|
-
// }
|
|
97
|
-
// }
|
|
98
|
-
// return iMatches;
|
|
99
|
-
// }
|
|
100
|
-
//
|
|
101
|
-
// function isInList(aList) {
|
|
102
|
-
// let results = false;
|
|
103
|
-
// if (aList) {
|
|
104
|
-
// for (let i = 0; aList.length > i; i++) {
|
|
105
|
-
//
|
|
106
|
-
// const sListItem = aList[i];
|
|
107
|
-
// if (searchString.test(sListItem)) {
|
|
108
|
-
// results = true;
|
|
109
|
-
// break;
|
|
110
|
-
// }
|
|
111
|
-
// }
|
|
112
|
-
// }
|
|
113
|
-
// return results;
|
|
114
|
-
// }
|
|
115
|
-
//
|
|
116
|
-
// function searchName() {
|
|
117
|
-
// let iMatches = 0;
|
|
118
|
-
// for (const person_id in people) {
|
|
119
|
-
// const person = people[person_id];
|
|
120
|
-
// if (searchString.test(person["First name"]) ||
|
|
121
|
-
// searchString.test(person["Preferred first name"]) ||
|
|
122
|
-
// searchString.test(person["Last name"]) ||
|
|
123
|
-
// searchString.test(person["id"]) ||
|
|
124
|
-
// searchString.test((person["First name"] + " " + person["Last name"])) ||
|
|
125
|
-
// searchString.test((person["Preferred first name"] + " " + person["Last name"]))
|
|
126
|
-
// ) {
|
|
127
|
-
// if (iMatches < 20) {
|
|
128
|
-
// iMatches++;
|
|
129
|
-
// oMatches[person_id] = person;
|
|
130
|
-
// } else {
|
|
131
|
-
// break;
|
|
132
|
-
// }
|
|
133
|
-
// }
|
|
134
|
-
// }
|
|
135
|
-
// return iMatches;
|
|
136
|
-
// }
|
|
137
|
-
// }
|
|
138
|
-
//
|
|
139
|
-
// showSearchResults() {
|
|
140
|
-
// const oSearchResults = document.getElementById('searchResults');
|
|
141
|
-
// oSearchResults.style.display = 'block';
|
|
142
|
-
// if (event.keyCode === 13) {
|
|
143
|
-
// oSearchResults.children[0].onmouseover(null);
|
|
144
|
-
// this.hideSearchResults();
|
|
145
|
-
// }
|
|
146
|
-
// }
|
|
147
|
-
//
|
|
148
|
-
// previewPerson(person_id) {
|
|
149
|
-
// const person = this.ORGCHART_DATA[person_id];
|
|
150
|
-
// if (person) {
|
|
151
|
-
// this.initializeLevels(person);
|
|
152
|
-
// this.makeRoot(person.id, true);
|
|
153
|
-
// this.hide();
|
|
154
|
-
// }
|
|
155
|
-
// }
|
|
156
|
-
//
|
|
157
|
-
// showSearch() {
|
|
158
|
-
// this.native.getElementById('searchArea').style.display = 'block';
|
|
159
|
-
// }
|
|
160
|
-
//
|
|
161
|
-
// hideSearchResults() {
|
|
162
|
-
// document.getElementById('searchResults').style.display = 'none';
|
|
163
|
-
// const newHash = "person=" + this.lastUnsavedId;
|
|
164
|
-
// if (newHash && newHash !== "person=null" && ("#" + newHash) !== (document.location.hash)) {
|
|
165
|
-
// this.lastHash = "#" + newHash;
|
|
166
|
-
// document.location.hash = newHash;
|
|
167
|
-
// }
|
|
168
|
-
// setTimeout(function() {
|
|
169
|
-
// document.getElementById('searchResults').style.display = 'none';
|
|
170
|
-
// }, 10); // does this need to be async?
|
|
171
|
-
// }
|
|
172
|
-
//
|
|
173
|
-
__publicField(this, "personTemplate", (person) => {
|
|
174
|
-
this.htmlTemplate`
|
|
175
|
-
<!--suppress ALL -->
|
|
176
|
-
<li class="topPerson">
|
|
177
|
-
<div id="${this.initializeLevels(person)}"
|
|
178
|
-
class="topPersonDiv manager_${person.directs && person.directs.length > 0}
|
|
179
|
-
survived_${this.isCurrentEmployee(person.id)}
|
|
180
|
-
contractor_${this.isContractor(person.id)}
|
|
181
|
-
">
|
|
182
|
-
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
|
183
|
-
<thead>
|
|
184
|
-
<tr>
|
|
185
|
-
<th colspan="3" class="center">
|
|
186
|
-
${this.getFullName(person.id)}
|
|
187
|
-
</th>
|
|
188
|
-
</tr>
|
|
189
|
-
<tr>
|
|
190
|
-
<td colspan="3" class="center" class="center">
|
|
191
|
-
${person["Job Title"]}
|
|
192
|
-
</td>
|
|
193
|
-
</tr>
|
|
194
|
-
</thead>
|
|
195
|
-
<tbody>
|
|
196
|
-
|
|
197
|
-
<tr>
|
|
198
|
-
<td rowspan="3" width="1"><img src="${this.getPhotoUrl(person.id, "medium")}"
|
|
199
|
-
class="largePhoto"
|
|
200
|
-
height="200"
|
|
201
|
-
width="200"
|
|
202
|
-
alt="a photograph of ${this.getFullName(person.id)}" onerror="this.hideImage(this)"/>
|
|
203
|
-
</td>
|
|
204
|
-
<td rowspan="3" width="5%"> </td>
|
|
205
|
-
</tr>
|
|
206
|
-
|
|
207
|
-
<tr>
|
|
208
|
-
<td>
|
|
209
|
-
</td>
|
|
210
|
-
</tr>
|
|
211
|
-
<tr>
|
|
212
|
-
<td class="left">
|
|
213
|
-
|
|
214
|
-
<div title="${person["Start date"]}">
|
|
215
|
-
Higher Standards for
|
|
216
|
-
</div>
|
|
217
|
-
${this.getRelativeTime(person["Start date"])}
|
|
218
|
-
|
|
219
|
-
<div>Department:
|
|
220
|
-
${person["Department"]}
|
|
221
|
-
</div>
|
|
222
|
-
|
|
223
|
-
${person["Division"] ? `
|
|
224
|
-
<div>Division:
|
|
225
|
-
${person["Division"]}
|
|
226
|
-
</div>` : ``}
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
<div>Email:
|
|
231
|
-
<a href="mailto:${person.Email}" target="_blank" rel="noreferrer">${person.Email}</a>
|
|
232
|
-
</div>
|
|
233
|
-
${person["Mobile phone"] ? `
|
|
234
|
-
<div>Phone:
|
|
235
|
-
${person["Mobile phone"]}
|
|
236
|
-
</div>` : ``}
|
|
237
|
-
<div>Location:
|
|
238
|
-
${person["Office Locations"]}
|
|
239
|
-
</div>
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
<div> </div>
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
<!-- <div>Email</div>-->
|
|
247
|
-
<!-- <div>Phone</div>-->
|
|
248
|
-
<!-- <div>Employment Status</div>-->
|
|
249
|
-
<!-- <div>End Date</div>-->
|
|
250
|
-
<!-- <div>GitHub</div>-->
|
|
251
|
-
<!-- <div>Jira</div>-->
|
|
252
|
-
<!-- <div>OpsGenie</div>-->
|
|
253
|
-
<!-- <div>Blameless</div>-->
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
</td>
|
|
257
|
-
|
|
258
|
-
</tr>
|
|
259
|
-
</tbody>
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
</table>
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
</div>
|
|
266
|
-
${person.directs && person.level < this.maxDepth ? `<ol class="level_${person.level}"> ${this.orgchartRender(person.directs.map((person_id) => this.ORGCHART_DATA[person_id]), this.nestedPersonTemplate)} </ol>` : ""}
|
|
267
|
-
</li>`;
|
|
268
|
-
});
|
|
269
18
|
}
|
|
270
19
|
/**
|
|
271
20
|
* Returns the CSS styles for the component.
|
|
@@ -294,42 +43,9 @@ class Orgchart extends WJElement {
|
|
|
294
43
|
let fragment = document.createDocumentFragment();
|
|
295
44
|
let native = document.createElement("div");
|
|
296
45
|
native.setAttribute("part", "native");
|
|
297
|
-
native.classList.add("orgchart");
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
<label>
|
|
301
|
-
Search:
|
|
302
|
-
<input type="text" placeholder="Search" name="searchText" id="searchText"></label>
|
|
303
|
-
<label>For:
|
|
304
|
-
<select name="type">
|
|
305
|
-
<option value="name" selected="selected">Name</option>
|
|
306
|
-
<option value="team">Team</option>
|
|
307
|
-
<option value="title">Job Title</option>
|
|
308
|
-
</select>
|
|
309
|
-
</label>
|
|
310
|
-
<button >Search</button>
|
|
311
|
-
<div id="searchResults">
|
|
312
|
-
<div></div>
|
|
313
|
-
</div>
|
|
314
|
-
</form>
|
|
315
|
-
</div>
|
|
316
|
-
<div id="orgChartView">
|
|
317
|
-
<div class="orgChartViewContainer">
|
|
318
|
-
<div id="detailView"></div>
|
|
319
|
-
</div>
|
|
320
|
-
<ol class="organizational-chart">
|
|
321
|
-
<li>
|
|
322
|
-
<div id="UpToManager"></div>
|
|
323
|
-
<ol class="organizational-chart" id="root">
|
|
324
|
-
<li>
|
|
325
|
-
<div>
|
|
326
|
-
<h1>Org Chart</h1>
|
|
327
|
-
</div>
|
|
328
|
-
</li>
|
|
329
|
-
</ol>
|
|
330
|
-
</li>
|
|
331
|
-
</ol>
|
|
332
|
-
</div>`;
|
|
46
|
+
native.classList.add("native-orgchart");
|
|
47
|
+
let slot = document.createElement("slot");
|
|
48
|
+
native.appendChild(slot);
|
|
333
49
|
fragment.appendChild(native);
|
|
334
50
|
this.native = native;
|
|
335
51
|
return fragment;
|
|
@@ -343,270 +59,7 @@ class Orgchart extends WJElement {
|
|
|
343
59
|
* @returns {DocumentFragment}
|
|
344
60
|
*/
|
|
345
61
|
afterDraw(context, store, params) {
|
|
346
|
-
this.orgchartInit();
|
|
347
|
-
this.maxDepth = 3;
|
|
348
|
-
this.lastUnsavedId = null;
|
|
349
|
-
this.lastHash = document.location.hash;
|
|
350
62
|
}
|
|
351
|
-
// submitForm(logData) {
|
|
352
|
-
// const sLogData = this.encode(logData);
|
|
353
|
-
// const sRemoteUrl = "https://acklenx.com/orgchart.png?" + sLogData;
|
|
354
|
-
// document.getElementById("visitor").src = sRemoteUrl;
|
|
355
|
-
// }
|
|
356
|
-
//
|
|
357
|
-
// encode(data) {
|
|
358
|
-
// return Object.keys(data).map((key) => encodeURIComponent(key) + "=" + encodeURIComponent(data[key])).join("&");
|
|
359
|
-
// }
|
|
360
|
-
orgchartInit() {
|
|
361
|
-
this.loadExternalDataset();
|
|
362
|
-
this.loadPerson();
|
|
363
|
-
this.native.querySelector("#searchText").focus();
|
|
364
|
-
}
|
|
365
|
-
loadExternalDataset() {
|
|
366
|
-
new URLSearchParams(window.location.search);
|
|
367
|
-
let sExternalDataUrl = "/demo/assets/data/orgchart.json";
|
|
368
|
-
{
|
|
369
|
-
var data = this.getData(sExternalDataUrl);
|
|
370
|
-
this.ORGCHART_DATA = JSON.parse(data);
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
getData(sUrl = "demo/assets/data/orgchart.json", fCallback) {
|
|
374
|
-
let responseBody = "";
|
|
375
|
-
const xhttp = new XMLHttpRequest();
|
|
376
|
-
xhttp.onreadystatechange = function() {
|
|
377
|
-
if (this.readyState == 4 && this.status == 200) {
|
|
378
|
-
responseBody = xhttp.responseText;
|
|
379
|
-
}
|
|
380
|
-
};
|
|
381
|
-
xhttp.open("GET", sUrl, false);
|
|
382
|
-
xhttp.send();
|
|
383
|
-
return responseBody;
|
|
384
|
-
}
|
|
385
|
-
getVisitorId() {
|
|
386
|
-
let visitorId = this.getCookieValue("visitor");
|
|
387
|
-
if (!visitorId) {
|
|
388
|
-
visitorId = "visitor_" + Math.floor(Math.random() * 1e7);
|
|
389
|
-
document.cookie = "visitor=" + visitorId + "; expires=Fri, 31 Dec 9999 23:59:59 GMT; SameSite=Strict; Secure";
|
|
390
|
-
}
|
|
391
|
-
return visitorId;
|
|
392
|
-
}
|
|
393
|
-
htmlTemplate(literals, ...vars) {
|
|
394
|
-
let raw = literals.raw, result = "", i = 1, len = arguments.length, str, variable;
|
|
395
|
-
while (i < len) {
|
|
396
|
-
str = raw[i - 1];
|
|
397
|
-
variable = vars[i - 1];
|
|
398
|
-
result += str + variable;
|
|
399
|
-
i++;
|
|
400
|
-
}
|
|
401
|
-
result += raw[raw.length - 1];
|
|
402
|
-
return result;
|
|
403
|
-
}
|
|
404
|
-
orgchartRender(data, template) {
|
|
405
|
-
if (!template) {
|
|
406
|
-
return;
|
|
407
|
-
}
|
|
408
|
-
if (typeof data === "string") {
|
|
409
|
-
return template(data);
|
|
410
|
-
} else if (typeof data === "object" && !Array.isArray(data)) {
|
|
411
|
-
console.log("DATA:", data, template(data));
|
|
412
|
-
return template(data);
|
|
413
|
-
} else if (Array.isArray(data)) {
|
|
414
|
-
return data.map((item) => template(item)).join("");
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
loadPerson(person_id, removeFromHistory) {
|
|
418
|
-
this.native.querySelector("#orgChartView").style.display = "block";
|
|
419
|
-
if (!person_id || !this.ORGCHART_DATA[person_id]) {
|
|
420
|
-
person_id = this.getStartingPersonFromUrl();
|
|
421
|
-
if (!person_id) {
|
|
422
|
-
person_id = Object.keys(this.ORGCHART_DATA)[0];
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
if (!removeFromHistory) {
|
|
426
|
-
document.location.hash = "person=" + person_id;
|
|
427
|
-
this.lastUnsavedId = null;
|
|
428
|
-
} else {
|
|
429
|
-
this.lastUnsavedId = person_id;
|
|
430
|
-
}
|
|
431
|
-
document.title = "OrgChart:" + this.getFullName(person_id);
|
|
432
|
-
this.native.querySelector("#root").innerHTML = this.personTemplate(this.ORGCHART_DATA[person_id]);
|
|
433
|
-
this.native.querySelector("#UpToManager").innerHTML = this.orgchartRender(this.ORGCHART_DATA[person_id], this.upTemplate);
|
|
434
|
-
this.setUpToManagerColor(this.ORGCHART_DATA[person_id]);
|
|
435
|
-
this.lastHash = document.location.hash;
|
|
436
|
-
this.context.querySelector(".manager").addEventListener("click", () => {
|
|
437
|
-
this.makeRoot(person_id);
|
|
438
|
-
});
|
|
439
|
-
}
|
|
440
|
-
setUpToManagerColor(person) {
|
|
441
|
-
const bIsCurrentEmployee = this.isCurrentEmployee(person["Reports To ID"]);
|
|
442
|
-
this.native.querySelector("#UpToManager").classList.remove("survived_true");
|
|
443
|
-
this.native.querySelector("#UpToManager").classList.remove("survived_false");
|
|
444
|
-
this.native.querySelector("#UpToManager").classList.add("survived_" + bIsCurrentEmployee);
|
|
445
|
-
}
|
|
446
|
-
getStartingPersonFromUrl() {
|
|
447
|
-
let startingPerson = null;
|
|
448
|
-
let sUrl = document.location.hash;
|
|
449
|
-
let person_id = sUrl.match(/person=([^&]*)/gi);
|
|
450
|
-
if (person_id && person_id[0]) {
|
|
451
|
-
person_id = person_id[0].replace("person=", "");
|
|
452
|
-
if (this.ORGCHART_DATA[person_id]) {
|
|
453
|
-
startingPerson = person_id;
|
|
454
|
-
}
|
|
455
|
-
}
|
|
456
|
-
return startingPerson;
|
|
457
|
-
}
|
|
458
|
-
//
|
|
459
|
-
// hideImage(oImage) {
|
|
460
|
-
// oImage.style.display = 'none';
|
|
461
|
-
// }
|
|
462
|
-
initializeLevels(person) {
|
|
463
|
-
if (!person.level) {
|
|
464
|
-
person.level = 1;
|
|
465
|
-
}
|
|
466
|
-
if (person.directs) {
|
|
467
|
-
for (let i = 0; person.directs.length > i; i++) {
|
|
468
|
-
const directReport = this.ORGCHART_DATA[person.directs[i]];
|
|
469
|
-
directReport.level = person.level + 1;
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
return "";
|
|
473
|
-
}
|
|
474
|
-
makeRoot(person_id, removeFromHistory) {
|
|
475
|
-
if (person_id) {
|
|
476
|
-
let root = this.ORGCHART_DATA[person_id];
|
|
477
|
-
if (root.level === 1) {
|
|
478
|
-
root = this.ORGCHART_DATA[this.ORGCHART_DATA[person_id].id];
|
|
479
|
-
if (!root) {
|
|
480
|
-
root = this.ORGCHART_DATA[person_id];
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
root.level = null;
|
|
484
|
-
this.loadPerson(person_id, removeFromHistory);
|
|
485
|
-
document.body.scrollTop = 0;
|
|
486
|
-
document.documentElement.scrollTop = 0;
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
getFullName(person_id) {
|
|
490
|
-
const person = this.ORGCHART_DATA[person_id];
|
|
491
|
-
return (person["Preferred first name"] || person["First name"] || person.name) + " " + person["Last name"];
|
|
492
|
-
}
|
|
493
|
-
getPhotoUrl(person_id, sSizePath) {
|
|
494
|
-
sSizePath = "";
|
|
495
|
-
return "./photos/" + sSizePath + person_id + ".jpg";
|
|
496
|
-
}
|
|
497
|
-
isCurrentEmployee(person_id) {
|
|
498
|
-
let isCurrentEmployee = true;
|
|
499
|
-
const person = this.ORGCHART_DATA[person_id];
|
|
500
|
-
if (person) {
|
|
501
|
-
const endDate = person["End date"];
|
|
502
|
-
if (endDate) {
|
|
503
|
-
isCurrentEmployee = false;
|
|
504
|
-
}
|
|
505
|
-
}
|
|
506
|
-
return isCurrentEmployee;
|
|
507
|
-
}
|
|
508
|
-
isContractor(person_id) {
|
|
509
|
-
let isCurrentEmployee = false;
|
|
510
|
-
const person = this.ORGCHART_DATA[person_id];
|
|
511
|
-
const type = person["Employee type"];
|
|
512
|
-
if (type === "Contractor") {
|
|
513
|
-
isCurrentEmployee = true;
|
|
514
|
-
}
|
|
515
|
-
return isCurrentEmployee;
|
|
516
|
-
}
|
|
517
|
-
// getRole(person) {
|
|
518
|
-
// let sRole = "";
|
|
519
|
-
// let sTeam = person["Teams"];
|
|
520
|
-
// if (person.directs && person.directs.length > 0 && sTeam && sTeam !== "") {
|
|
521
|
-
// if (sTeam === "CTO Team") {
|
|
522
|
-
// sRole = person["Job Title"].replace(/^VP,? /, "");
|
|
523
|
-
// } else {
|
|
524
|
-
// sRole = sTeam;
|
|
525
|
-
// }
|
|
526
|
-
// } else {
|
|
527
|
-
// sRole += person["Job Title"];
|
|
528
|
-
// }
|
|
529
|
-
// return sRole;
|
|
530
|
-
// }
|
|
531
|
-
getRelativeTime(date) {
|
|
532
|
-
const startDate = new Date(date);
|
|
533
|
-
const ago = (/* @__PURE__ */ new Date() - startDate) / 26298e5;
|
|
534
|
-
let yearsAgo = ago / 12;
|
|
535
|
-
let sYearsAgo = "";
|
|
536
|
-
if (yearsAgo >= 1) {
|
|
537
|
-
sYearsAgo = Math.floor(yearsAgo) + " Year";
|
|
538
|
-
if (sYearsAgo !== "1 Year") {
|
|
539
|
-
sYearsAgo += "s";
|
|
540
|
-
}
|
|
541
|
-
let monthsAgo = Math.floor(ago % 12) + " month";
|
|
542
|
-
if (monthsAgo !== "1 month") {
|
|
543
|
-
monthsAgo += "s";
|
|
544
|
-
}
|
|
545
|
-
sYearsAgo += " " + monthsAgo;
|
|
546
|
-
} else {
|
|
547
|
-
let monthsAgo = ago % 12;
|
|
548
|
-
let sMonthsAgo = Math.floor(monthsAgo) + " month";
|
|
549
|
-
if (monthsAgo >= 1) {
|
|
550
|
-
if (sMonthsAgo !== "1 month") {
|
|
551
|
-
sMonthsAgo += "s";
|
|
552
|
-
}
|
|
553
|
-
sYearsAgo += sMonthsAgo;
|
|
554
|
-
} else {
|
|
555
|
-
let daysAgo = (/* @__PURE__ */ new Date() - startDate) / 864e5;
|
|
556
|
-
let sDaysAgo = Math.ceil(daysAgo) + " day";
|
|
557
|
-
if (sDaysAgo !== "1 day") {
|
|
558
|
-
sDaysAgo += "s";
|
|
559
|
-
}
|
|
560
|
-
sYearsAgo += sDaysAgo;
|
|
561
|
-
}
|
|
562
|
-
}
|
|
563
|
-
return sYearsAgo;
|
|
564
|
-
}
|
|
565
|
-
// nestedPersonTemplate = ( person ) => {
|
|
566
|
-
// htmlTemplate`
|
|
567
|
-
// <!--suppress ALL -->
|
|
568
|
-
// <li class="nestedPerson">
|
|
569
|
-
// <div onclick="${this.initializeLevels( person ) };this.makeRoot( '${ person.id }' ); this.hide();"
|
|
570
|
-
// onmouseover="this.showDetails( '${ person.id }' ); this.hideSearchResults();"
|
|
571
|
-
// onmouseout="this.hide()"
|
|
572
|
-
// class="manager_${ person.directs && person.directs.length > 0 }
|
|
573
|
-
// survived_${this.isCurrentEmployee( person.id ) }
|
|
574
|
-
// contractor_${this.isContractor( person.id ) }
|
|
575
|
-
// suppressPointerEvents nestedPersonDiv">
|
|
576
|
-
//
|
|
577
|
-
// <img src="${this.getPhotoUrl( person.id, '50x50' ) }"
|
|
578
|
-
// alt="Small photograph of ${this.getFullName( person.id ) }"
|
|
579
|
-
// class="smallPhoto"
|
|
580
|
-
// height="50" width="50"
|
|
581
|
-
// onerror="this.hideImage(this)"/>
|
|
582
|
-
//
|
|
583
|
-
// <strong>${this.getFullName( person.id ) }</strong>
|
|
584
|
-
// <br/>
|
|
585
|
-
// <span class="jobTitle" title="${ person[ 'Job Title' ] }">${this.getRole( person ) }</span>
|
|
586
|
-
//
|
|
587
|
-
// </div>
|
|
588
|
-
// ${ person.directs && person.level < this.maxDepth ? `<ol class="level_${ person.level }"> ${this.render( person.directs.map( person_id => this.ORGCHART_DATA[ person_id ] ), this.nestedPersonTemplate ) } </ol>` : "" }
|
|
589
|
-
// </li>`;
|
|
590
|
-
// }
|
|
591
|
-
//
|
|
592
|
-
// searchResultTemplate = ( person ) => {
|
|
593
|
-
// htmlTemplate`
|
|
594
|
-
// <!--suppress HtmlDeprecatedAttribute -->
|
|
595
|
-
// <div onmouseover="this.previewPerson( '${ person.id }' )"
|
|
596
|
-
// class="nestedSearchDiv manager_${ person.directs && person.directs.length > 0 } suppressPointerEvents"
|
|
597
|
-
// onclick="this.hideSearchResults();">
|
|
598
|
-
//
|
|
599
|
-
// <img src="${this.getPhotoUrl( person.id, 'thumbnail' ) }"
|
|
600
|
-
// alt="Small photograph of ${this.getFullName( person.id ) }"
|
|
601
|
-
// class="smallPhoto"
|
|
602
|
-
// height="50" width="50" onerror="this.hideImage(this)" />
|
|
603
|
-
//
|
|
604
|
-
// <strong>${this.getFullName( person.id ) }</strong>
|
|
605
|
-
// <br/>
|
|
606
|
-
// <span class="jobTitle" >${ person[ "Job Title" ] }</span>
|
|
607
|
-
// </div>
|
|
608
|
-
// `;
|
|
609
|
-
// }
|
|
610
63
|
}
|
|
611
64
|
Orgchart.define("wje-orgchart", Orgchart);
|
|
612
65
|
export {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wj-elements",
|
|
3
3
|
"description": "WebJET Elements is a modern set of user interface tools harnessing the power of web components designed to simplify web application development.",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.72",
|
|
5
5
|
"homepage": "https://github.com/lencys/wj-elements",
|
|
6
6
|
"author": "Lukáš Ondrejček <lukas.ondrejcek@gmail.com>",
|
|
7
7
|
"license": "MIT",
|
package/dist/wje-orgchartItem.js
DELETED