@lv-x-software-house/x_view 1.2.6-dev.52 → 1.2.6-dev.54
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/index.js +107 -46
- package/dist/index.mjs +107 -46
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3869,6 +3869,49 @@ function ContextMenu({
|
|
|
3869
3869
|
// src/components/XViewSidebar.jsx
|
|
3870
3870
|
var import_react3 = __toESM(require("react"));
|
|
3871
3871
|
var import_fi2 = require("react-icons/fi");
|
|
3872
|
+
var CustomSelect = ({ value, onChange, options, placeholder }) => {
|
|
3873
|
+
const [isOpen, setIsOpen] = (0, import_react3.useState)(false);
|
|
3874
|
+
const selectRef = (0, import_react3.useRef)(null);
|
|
3875
|
+
(0, import_react3.useEffect)(() => {
|
|
3876
|
+
const handleClickOutside = (e) => {
|
|
3877
|
+
if (selectRef.current && !selectRef.current.contains(e.target)) {
|
|
3878
|
+
setIsOpen(false);
|
|
3879
|
+
}
|
|
3880
|
+
};
|
|
3881
|
+
if (isOpen) {
|
|
3882
|
+
document.addEventListener("mousedown", handleClickOutside);
|
|
3883
|
+
}
|
|
3884
|
+
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
3885
|
+
}, [isOpen]);
|
|
3886
|
+
const selectedOption = options.find((o) => String(o.value) === String(value));
|
|
3887
|
+
return /* @__PURE__ */ import_react3.default.createElement("div", { ref: selectRef, className: "relative w-full text-slate-200 text-sm" }, /* @__PURE__ */ import_react3.default.createElement(
|
|
3888
|
+
"button",
|
|
3889
|
+
{
|
|
3890
|
+
type: "button",
|
|
3891
|
+
onClick: () => setIsOpen(!isOpen),
|
|
3892
|
+
className: `w-full bg-slate-900/80 px-3 py-2.5 rounded-md border text-left transition-all flex items-center justify-between
|
|
3893
|
+
${isOpen ? "border-indigo-500/50 bg-slate-800" : "border-white/10 hover:bg-slate-800"}`
|
|
3894
|
+
},
|
|
3895
|
+
/* @__PURE__ */ import_react3.default.createElement("span", { className: "truncate" }, selectedOption ? selectedOption.label : placeholder),
|
|
3896
|
+
/* @__PURE__ */ import_react3.default.createElement("svg", { className: `w-4 h-4 text-slate-500 transition-transform flex-shrink-0 ${isOpen ? "rotate-180" : ""}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor" }, /* @__PURE__ */ import_react3.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }))
|
|
3897
|
+
), isOpen && /* @__PURE__ */ import_react3.default.createElement("div", { className: "absolute z-50 w-full mt-2 bg-slate-800 border border-white/10 rounded-lg shadow-2xl max-h-56 overflow-y-auto custom-scrollbar animate-in fade-in zoom-in-95 duration-100 py-1" }, options.map((opt, idx) => {
|
|
3898
|
+
const isSelected = String(value) === String(opt.value);
|
|
3899
|
+
return /* @__PURE__ */ import_react3.default.createElement(
|
|
3900
|
+
"button",
|
|
3901
|
+
{
|
|
3902
|
+
key: idx,
|
|
3903
|
+
type: "button",
|
|
3904
|
+
onClick: () => {
|
|
3905
|
+
onChange(opt.value);
|
|
3906
|
+
setIsOpen(false);
|
|
3907
|
+
},
|
|
3908
|
+
className: `w-full text-left px-3 py-2.5 text-sm transition-colors
|
|
3909
|
+
${isSelected ? "bg-indigo-600/30 text-indigo-200 font-medium" : "text-slate-300 hover:bg-white/10"}`
|
|
3910
|
+
},
|
|
3911
|
+
opt.label
|
|
3912
|
+
);
|
|
3913
|
+
})));
|
|
3914
|
+
};
|
|
3872
3915
|
function XViewSidebar({
|
|
3873
3916
|
dbNodes = [],
|
|
3874
3917
|
isNodeInView = () => false,
|
|
@@ -4161,37 +4204,46 @@ function XViewSidebar({
|
|
|
4161
4204
|
},
|
|
4162
4205
|
/* @__PURE__ */ import_react3.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-4 w-4", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react3.default.createElement("path", { fillRule: "evenodd", d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z", clipRule: "evenodd" }))
|
|
4163
4206
|
)),
|
|
4164
|
-
/* @__PURE__ */ import_react3.default.createElement("div", { className: "flex-1 overflow-y-auto p-4 space-y-6" }, activeSubMenu === "quest" && /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-6 animate-in fade-in slide-in-from-bottom-2 duration-500" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ import_react3.default.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "Respons\xE1vel"), /* @__PURE__ */ import_react3.default.createElement(
|
|
4165
|
-
|
|
4207
|
+
/* @__PURE__ */ import_react3.default.createElement("div", { className: "flex-1 overflow-y-auto p-4 space-y-6" }, activeSubMenu === "quest" && /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-6 animate-in fade-in slide-in-from-bottom-2 duration-500" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ import_react3.default.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "Respons\xE1vel"), /* @__PURE__ */ import_react3.default.createElement(
|
|
4208
|
+
CustomSelect,
|
|
4166
4209
|
{
|
|
4167
4210
|
value: questFilterAssignee,
|
|
4168
|
-
onChange: (
|
|
4169
|
-
|
|
4170
|
-
|
|
4171
|
-
|
|
4172
|
-
|
|
4173
|
-
|
|
4174
|
-
|
|
4211
|
+
onChange: (val) => setQuestFilterAssignee(val),
|
|
4212
|
+
options: [
|
|
4213
|
+
{ value: "", label: "Todos os Respons\xE1veis" },
|
|
4214
|
+
...viewMembers.map((m) => ({ value: m.id, label: m.name || m.email }))
|
|
4215
|
+
],
|
|
4216
|
+
placeholder: "Selecione um Respons\xE1vel"
|
|
4217
|
+
}
|
|
4218
|
+
)), /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ import_react3.default.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "Status"), /* @__PURE__ */ import_react3.default.createElement(
|
|
4219
|
+
CustomSelect,
|
|
4175
4220
|
{
|
|
4176
4221
|
value: questFilterStatus,
|
|
4177
|
-
onChange: (
|
|
4178
|
-
|
|
4179
|
-
|
|
4180
|
-
|
|
4181
|
-
|
|
4182
|
-
|
|
4183
|
-
|
|
4184
|
-
|
|
4185
|
-
|
|
4186
|
-
|
|
4222
|
+
onChange: (val) => setQuestFilterStatus(val),
|
|
4223
|
+
options: [
|
|
4224
|
+
{ value: "", label: "Todos (Exclui Done)" },
|
|
4225
|
+
{ value: "Backlog", label: "Backlog" },
|
|
4226
|
+
{ value: "In Progress", label: "In Progress" },
|
|
4227
|
+
{ value: "Review", label: "Review" },
|
|
4228
|
+
{ value: "Done", label: "Done" }
|
|
4229
|
+
],
|
|
4230
|
+
placeholder: "Selecione um Status"
|
|
4231
|
+
}
|
|
4232
|
+
)), /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ import_react3.default.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "Milestone"), /* @__PURE__ */ import_react3.default.createElement(
|
|
4233
|
+
CustomSelect,
|
|
4187
4234
|
{
|
|
4188
4235
|
value: questFilterMilestone,
|
|
4189
|
-
onChange: (
|
|
4190
|
-
|
|
4191
|
-
|
|
4192
|
-
|
|
4193
|
-
|
|
4194
|
-
|
|
4236
|
+
onChange: (val) => setQuestFilterMilestone(val),
|
|
4237
|
+
options: [
|
|
4238
|
+
{ value: "", label: "Todos os Milestones" },
|
|
4239
|
+
...milestones.map((ms) => ({
|
|
4240
|
+
value: ms.id,
|
|
4241
|
+
label: `${ms.name} ${ms.status === "inactive" ? "(Inativo)" : ""}`
|
|
4242
|
+
}))
|
|
4243
|
+
],
|
|
4244
|
+
placeholder: "Todos os Milestones"
|
|
4245
|
+
}
|
|
4246
|
+
)), /* @__PURE__ */ import_react3.default.createElement("div", { className: "flex gap-3 pt-4" }, /* @__PURE__ */ import_react3.default.createElement(
|
|
4195
4247
|
"button",
|
|
4196
4248
|
{
|
|
4197
4249
|
onClick: () => {
|
|
@@ -4216,17 +4268,19 @@ function XViewSidebar({
|
|
|
4216
4268
|
className: "flex-[2] py-3 bg-indigo-600 hover:bg-indigo-500 text-white text-[10px] font-black uppercase tracking-widest rounded-xl shadow-lg shadow-indigo-500/20 transition-all hover:scale-[1.02] active:scale-95"
|
|
4217
4269
|
},
|
|
4218
4270
|
"Aplicar Lente"
|
|
4219
|
-
))), activeSubMenu === "reshape" && /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-6 animate-in fade-in slide-in-from-bottom-2 duration-500" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ import_react3.default.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "Layout Type"), /* @__PURE__ */ import_react3.default.createElement(
|
|
4220
|
-
|
|
4271
|
+
))), activeSubMenu === "reshape" && /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-6 animate-in fade-in slide-in-from-bottom-2 duration-500" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ import_react3.default.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "Layout Type"), /* @__PURE__ */ import_react3.default.createElement(
|
|
4272
|
+
CustomSelect,
|
|
4221
4273
|
{
|
|
4222
4274
|
value: reshapeLayoutType,
|
|
4223
|
-
onChange: (
|
|
4224
|
-
|
|
4225
|
-
|
|
4226
|
-
|
|
4227
|
-
|
|
4228
|
-
|
|
4229
|
-
|
|
4275
|
+
onChange: (val) => setReshapeLayoutType(val),
|
|
4276
|
+
options: [
|
|
4277
|
+
{ value: "Star", label: "Star" },
|
|
4278
|
+
{ value: "Circle", label: "Circle" },
|
|
4279
|
+
{ value: "Column", label: "Column" }
|
|
4280
|
+
],
|
|
4281
|
+
placeholder: "Selecione um Formato"
|
|
4282
|
+
}
|
|
4283
|
+
)), reshapeLayoutType === "Column" && /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ import_react3.default.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "Colunas"), /* @__PURE__ */ import_react3.default.createElement(
|
|
4230
4284
|
"input",
|
|
4231
4285
|
{
|
|
4232
4286
|
type: "number",
|
|
@@ -4236,16 +4290,21 @@ function XViewSidebar({
|
|
|
4236
4290
|
onChange: (e) => setReshapeColumnCount(parseInt(e.target.value) || 4),
|
|
4237
4291
|
className: "w-full bg-slate-900/80 px-3 py-2.5 text-sm rounded-md border border-white/10 focus:outline-none focus:border-indigo-500/50 text-white hover:bg-slate-800/50 transition-all"
|
|
4238
4292
|
}
|
|
4239
|
-
)), reshapeLayoutType === "Star" && /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ import_react3.default.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "N\xF3 Central"), /* @__PURE__ */ import_react3.default.createElement(
|
|
4240
|
-
|
|
4293
|
+
)), reshapeLayoutType === "Star" && /* @__PURE__ */ import_react3.default.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ import_react3.default.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "N\xF3 Central"), /* @__PURE__ */ import_react3.default.createElement(
|
|
4294
|
+
CustomSelect,
|
|
4241
4295
|
{
|
|
4242
4296
|
value: reshapeCenterNodeId,
|
|
4243
|
-
onChange: (
|
|
4244
|
-
|
|
4245
|
-
|
|
4246
|
-
|
|
4247
|
-
|
|
4248
|
-
|
|
4297
|
+
onChange: (val) => setReshapeCenterNodeId(val),
|
|
4298
|
+
options: [
|
|
4299
|
+
{ value: "", label: "Selecione um n\xF3..." },
|
|
4300
|
+
...(Array.isArray(dbNodes) ? dbNodes.filter((n) => isNodeInView(n.id)) : []).map((n) => ({
|
|
4301
|
+
value: n.id,
|
|
4302
|
+
label: n.name
|
|
4303
|
+
}))
|
|
4304
|
+
],
|
|
4305
|
+
placeholder: "Selecione um n\xF3..."
|
|
4306
|
+
}
|
|
4307
|
+
)), /* @__PURE__ */ import_react3.default.createElement("div", { className: "flex gap-3 pt-4" }, /* @__PURE__ */ import_react3.default.createElement(
|
|
4249
4308
|
"button",
|
|
4250
4309
|
{
|
|
4251
4310
|
onClick: () => {
|
|
@@ -14369,8 +14428,10 @@ function XViewScene({
|
|
|
14369
14428
|
stateRef.current.nodeIdToParentFileMap = map;
|
|
14370
14429
|
}, [isInitialized, sceneVersion]);
|
|
14371
14430
|
const handleNavigateBack = (0, import_react31.useCallback)(() => {
|
|
14372
|
-
|
|
14373
|
-
|
|
14431
|
+
const type = viewParams == null ? void 0 : viewParams.type;
|
|
14432
|
+
const tab = type === "database" ? "datasets" : "views";
|
|
14433
|
+
router.push(`/dashboard/xview?tab=${tab}`);
|
|
14434
|
+
}, [router, viewParams]);
|
|
14374
14435
|
const handleConfirmImport = (0, import_react31.useCallback)(
|
|
14375
14436
|
async (importPayload) => {
|
|
14376
14437
|
var _a2, _b2;
|
|
@@ -18701,7 +18762,7 @@ function XViewScene({
|
|
|
18701
18762
|
)), /* @__PURE__ */ import_react31.default.createElement("h2", { className: "text-2xl font-bold mb-2" }, "Acesso Negado"), /* @__PURE__ */ import_react31.default.createElement("p", { className: "text-slate-400 mb-6" }, "Voc\xEA n\xE3o tem permiss\xE3o para acessar este conte\xFAdo. Solicite acesso ao propriet\xE1rio ou verifique se est\xE1 na conta correta."), /* @__PURE__ */ import_react31.default.createElement(
|
|
18702
18763
|
"button",
|
|
18703
18764
|
{
|
|
18704
|
-
onClick:
|
|
18765
|
+
onClick: handleNavigateBack,
|
|
18705
18766
|
className: "flex items-center justify-center gap-2 w-full py-3 px-4 bg-blue-600 hover:bg-blue-700 text-white rounded-lg transition-colors font-medium"
|
|
18706
18767
|
},
|
|
18707
18768
|
/* @__PURE__ */ import_react31.default.createElement(
|
|
@@ -18723,7 +18784,7 @@ function XViewScene({
|
|
|
18723
18784
|
}
|
|
18724
18785
|
)
|
|
18725
18786
|
),
|
|
18726
|
-
"Voltar para
|
|
18787
|
+
"Voltar para o X.View"
|
|
18727
18788
|
)));
|
|
18728
18789
|
}
|
|
18729
18790
|
return /* @__PURE__ */ import_react31.default.createElement(
|
package/dist/index.mjs
CHANGED
|
@@ -3830,6 +3830,49 @@ function ContextMenu({
|
|
|
3830
3830
|
// src/components/XViewSidebar.jsx
|
|
3831
3831
|
import React2, { useMemo as useMemo2, useState as useState3, useEffect as useEffect2, useRef as useRef2 } from "react";
|
|
3832
3832
|
import { FiLayers } from "react-icons/fi";
|
|
3833
|
+
var CustomSelect = ({ value, onChange, options, placeholder }) => {
|
|
3834
|
+
const [isOpen, setIsOpen] = useState3(false);
|
|
3835
|
+
const selectRef = useRef2(null);
|
|
3836
|
+
useEffect2(() => {
|
|
3837
|
+
const handleClickOutside = (e) => {
|
|
3838
|
+
if (selectRef.current && !selectRef.current.contains(e.target)) {
|
|
3839
|
+
setIsOpen(false);
|
|
3840
|
+
}
|
|
3841
|
+
};
|
|
3842
|
+
if (isOpen) {
|
|
3843
|
+
document.addEventListener("mousedown", handleClickOutside);
|
|
3844
|
+
}
|
|
3845
|
+
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
3846
|
+
}, [isOpen]);
|
|
3847
|
+
const selectedOption = options.find((o) => String(o.value) === String(value));
|
|
3848
|
+
return /* @__PURE__ */ React2.createElement("div", { ref: selectRef, className: "relative w-full text-slate-200 text-sm" }, /* @__PURE__ */ React2.createElement(
|
|
3849
|
+
"button",
|
|
3850
|
+
{
|
|
3851
|
+
type: "button",
|
|
3852
|
+
onClick: () => setIsOpen(!isOpen),
|
|
3853
|
+
className: `w-full bg-slate-900/80 px-3 py-2.5 rounded-md border text-left transition-all flex items-center justify-between
|
|
3854
|
+
${isOpen ? "border-indigo-500/50 bg-slate-800" : "border-white/10 hover:bg-slate-800"}`
|
|
3855
|
+
},
|
|
3856
|
+
/* @__PURE__ */ React2.createElement("span", { className: "truncate" }, selectedOption ? selectedOption.label : placeholder),
|
|
3857
|
+
/* @__PURE__ */ React2.createElement("svg", { className: `w-4 h-4 text-slate-500 transition-transform flex-shrink-0 ${isOpen ? "rotate-180" : ""}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor" }, /* @__PURE__ */ React2.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }))
|
|
3858
|
+
), isOpen && /* @__PURE__ */ React2.createElement("div", { className: "absolute z-50 w-full mt-2 bg-slate-800 border border-white/10 rounded-lg shadow-2xl max-h-56 overflow-y-auto custom-scrollbar animate-in fade-in zoom-in-95 duration-100 py-1" }, options.map((opt, idx) => {
|
|
3859
|
+
const isSelected = String(value) === String(opt.value);
|
|
3860
|
+
return /* @__PURE__ */ React2.createElement(
|
|
3861
|
+
"button",
|
|
3862
|
+
{
|
|
3863
|
+
key: idx,
|
|
3864
|
+
type: "button",
|
|
3865
|
+
onClick: () => {
|
|
3866
|
+
onChange(opt.value);
|
|
3867
|
+
setIsOpen(false);
|
|
3868
|
+
},
|
|
3869
|
+
className: `w-full text-left px-3 py-2.5 text-sm transition-colors
|
|
3870
|
+
${isSelected ? "bg-indigo-600/30 text-indigo-200 font-medium" : "text-slate-300 hover:bg-white/10"}`
|
|
3871
|
+
},
|
|
3872
|
+
opt.label
|
|
3873
|
+
);
|
|
3874
|
+
})));
|
|
3875
|
+
};
|
|
3833
3876
|
function XViewSidebar({
|
|
3834
3877
|
dbNodes = [],
|
|
3835
3878
|
isNodeInView = () => false,
|
|
@@ -4122,37 +4165,46 @@ function XViewSidebar({
|
|
|
4122
4165
|
},
|
|
4123
4166
|
/* @__PURE__ */ React2.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "h-4 w-4", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React2.createElement("path", { fillRule: "evenodd", d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z", clipRule: "evenodd" }))
|
|
4124
4167
|
)),
|
|
4125
|
-
/* @__PURE__ */ React2.createElement("div", { className: "flex-1 overflow-y-auto p-4 space-y-6" }, activeSubMenu === "quest" && /* @__PURE__ */ React2.createElement("div", { className: "space-y-6 animate-in fade-in slide-in-from-bottom-2 duration-500" }, /* @__PURE__ */ React2.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ React2.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "Respons\xE1vel"), /* @__PURE__ */ React2.createElement(
|
|
4126
|
-
|
|
4168
|
+
/* @__PURE__ */ React2.createElement("div", { className: "flex-1 overflow-y-auto p-4 space-y-6" }, activeSubMenu === "quest" && /* @__PURE__ */ React2.createElement("div", { className: "space-y-6 animate-in fade-in slide-in-from-bottom-2 duration-500" }, /* @__PURE__ */ React2.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ React2.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "Respons\xE1vel"), /* @__PURE__ */ React2.createElement(
|
|
4169
|
+
CustomSelect,
|
|
4127
4170
|
{
|
|
4128
4171
|
value: questFilterAssignee,
|
|
4129
|
-
onChange: (
|
|
4130
|
-
|
|
4131
|
-
|
|
4132
|
-
|
|
4133
|
-
|
|
4134
|
-
|
|
4135
|
-
|
|
4172
|
+
onChange: (val) => setQuestFilterAssignee(val),
|
|
4173
|
+
options: [
|
|
4174
|
+
{ value: "", label: "Todos os Respons\xE1veis" },
|
|
4175
|
+
...viewMembers.map((m) => ({ value: m.id, label: m.name || m.email }))
|
|
4176
|
+
],
|
|
4177
|
+
placeholder: "Selecione um Respons\xE1vel"
|
|
4178
|
+
}
|
|
4179
|
+
)), /* @__PURE__ */ React2.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ React2.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "Status"), /* @__PURE__ */ React2.createElement(
|
|
4180
|
+
CustomSelect,
|
|
4136
4181
|
{
|
|
4137
4182
|
value: questFilterStatus,
|
|
4138
|
-
onChange: (
|
|
4139
|
-
|
|
4140
|
-
|
|
4141
|
-
|
|
4142
|
-
|
|
4143
|
-
|
|
4144
|
-
|
|
4145
|
-
|
|
4146
|
-
|
|
4147
|
-
|
|
4183
|
+
onChange: (val) => setQuestFilterStatus(val),
|
|
4184
|
+
options: [
|
|
4185
|
+
{ value: "", label: "Todos (Exclui Done)" },
|
|
4186
|
+
{ value: "Backlog", label: "Backlog" },
|
|
4187
|
+
{ value: "In Progress", label: "In Progress" },
|
|
4188
|
+
{ value: "Review", label: "Review" },
|
|
4189
|
+
{ value: "Done", label: "Done" }
|
|
4190
|
+
],
|
|
4191
|
+
placeholder: "Selecione um Status"
|
|
4192
|
+
}
|
|
4193
|
+
)), /* @__PURE__ */ React2.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ React2.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "Milestone"), /* @__PURE__ */ React2.createElement(
|
|
4194
|
+
CustomSelect,
|
|
4148
4195
|
{
|
|
4149
4196
|
value: questFilterMilestone,
|
|
4150
|
-
onChange: (
|
|
4151
|
-
|
|
4152
|
-
|
|
4153
|
-
|
|
4154
|
-
|
|
4155
|
-
|
|
4197
|
+
onChange: (val) => setQuestFilterMilestone(val),
|
|
4198
|
+
options: [
|
|
4199
|
+
{ value: "", label: "Todos os Milestones" },
|
|
4200
|
+
...milestones.map((ms) => ({
|
|
4201
|
+
value: ms.id,
|
|
4202
|
+
label: `${ms.name} ${ms.status === "inactive" ? "(Inativo)" : ""}`
|
|
4203
|
+
}))
|
|
4204
|
+
],
|
|
4205
|
+
placeholder: "Todos os Milestones"
|
|
4206
|
+
}
|
|
4207
|
+
)), /* @__PURE__ */ React2.createElement("div", { className: "flex gap-3 pt-4" }, /* @__PURE__ */ React2.createElement(
|
|
4156
4208
|
"button",
|
|
4157
4209
|
{
|
|
4158
4210
|
onClick: () => {
|
|
@@ -4177,17 +4229,19 @@ function XViewSidebar({
|
|
|
4177
4229
|
className: "flex-[2] py-3 bg-indigo-600 hover:bg-indigo-500 text-white text-[10px] font-black uppercase tracking-widest rounded-xl shadow-lg shadow-indigo-500/20 transition-all hover:scale-[1.02] active:scale-95"
|
|
4178
4230
|
},
|
|
4179
4231
|
"Aplicar Lente"
|
|
4180
|
-
))), activeSubMenu === "reshape" && /* @__PURE__ */ React2.createElement("div", { className: "space-y-6 animate-in fade-in slide-in-from-bottom-2 duration-500" }, /* @__PURE__ */ React2.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ React2.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "Layout Type"), /* @__PURE__ */ React2.createElement(
|
|
4181
|
-
|
|
4232
|
+
))), activeSubMenu === "reshape" && /* @__PURE__ */ React2.createElement("div", { className: "space-y-6 animate-in fade-in slide-in-from-bottom-2 duration-500" }, /* @__PURE__ */ React2.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ React2.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "Layout Type"), /* @__PURE__ */ React2.createElement(
|
|
4233
|
+
CustomSelect,
|
|
4182
4234
|
{
|
|
4183
4235
|
value: reshapeLayoutType,
|
|
4184
|
-
onChange: (
|
|
4185
|
-
|
|
4186
|
-
|
|
4187
|
-
|
|
4188
|
-
|
|
4189
|
-
|
|
4190
|
-
|
|
4236
|
+
onChange: (val) => setReshapeLayoutType(val),
|
|
4237
|
+
options: [
|
|
4238
|
+
{ value: "Star", label: "Star" },
|
|
4239
|
+
{ value: "Circle", label: "Circle" },
|
|
4240
|
+
{ value: "Column", label: "Column" }
|
|
4241
|
+
],
|
|
4242
|
+
placeholder: "Selecione um Formato"
|
|
4243
|
+
}
|
|
4244
|
+
)), reshapeLayoutType === "Column" && /* @__PURE__ */ React2.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ React2.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "Colunas"), /* @__PURE__ */ React2.createElement(
|
|
4191
4245
|
"input",
|
|
4192
4246
|
{
|
|
4193
4247
|
type: "number",
|
|
@@ -4197,16 +4251,21 @@ function XViewSidebar({
|
|
|
4197
4251
|
onChange: (e) => setReshapeColumnCount(parseInt(e.target.value) || 4),
|
|
4198
4252
|
className: "w-full bg-slate-900/80 px-3 py-2.5 text-sm rounded-md border border-white/10 focus:outline-none focus:border-indigo-500/50 text-white hover:bg-slate-800/50 transition-all"
|
|
4199
4253
|
}
|
|
4200
|
-
)), reshapeLayoutType === "Star" && /* @__PURE__ */ React2.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ React2.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "N\xF3 Central"), /* @__PURE__ */ React2.createElement(
|
|
4201
|
-
|
|
4254
|
+
)), reshapeLayoutType === "Star" && /* @__PURE__ */ React2.createElement("div", { className: "space-y-2.5" }, /* @__PURE__ */ React2.createElement("label", { className: "text-[11px] uppercase text-slate-400 font-semibold tracking-wider ml-1 mb-1 block" }, "N\xF3 Central"), /* @__PURE__ */ React2.createElement(
|
|
4255
|
+
CustomSelect,
|
|
4202
4256
|
{
|
|
4203
4257
|
value: reshapeCenterNodeId,
|
|
4204
|
-
onChange: (
|
|
4205
|
-
|
|
4206
|
-
|
|
4207
|
-
|
|
4208
|
-
|
|
4209
|
-
|
|
4258
|
+
onChange: (val) => setReshapeCenterNodeId(val),
|
|
4259
|
+
options: [
|
|
4260
|
+
{ value: "", label: "Selecione um n\xF3..." },
|
|
4261
|
+
...(Array.isArray(dbNodes) ? dbNodes.filter((n) => isNodeInView(n.id)) : []).map((n) => ({
|
|
4262
|
+
value: n.id,
|
|
4263
|
+
label: n.name
|
|
4264
|
+
}))
|
|
4265
|
+
],
|
|
4266
|
+
placeholder: "Selecione um n\xF3..."
|
|
4267
|
+
}
|
|
4268
|
+
)), /* @__PURE__ */ React2.createElement("div", { className: "flex gap-3 pt-4" }, /* @__PURE__ */ React2.createElement(
|
|
4210
4269
|
"button",
|
|
4211
4270
|
{
|
|
4212
4271
|
onClick: () => {
|
|
@@ -14425,8 +14484,10 @@ function XViewScene({
|
|
|
14425
14484
|
stateRef.current.nodeIdToParentFileMap = map;
|
|
14426
14485
|
}, [isInitialized, sceneVersion]);
|
|
14427
14486
|
const handleNavigateBack = useCallback6(() => {
|
|
14428
|
-
|
|
14429
|
-
|
|
14487
|
+
const type = viewParams == null ? void 0 : viewParams.type;
|
|
14488
|
+
const tab = type === "database" ? "datasets" : "views";
|
|
14489
|
+
router.push(`/dashboard/xview?tab=${tab}`);
|
|
14490
|
+
}, [router, viewParams]);
|
|
14430
14491
|
const handleConfirmImport = useCallback6(
|
|
14431
14492
|
async (importPayload) => {
|
|
14432
14493
|
var _a2, _b2;
|
|
@@ -18757,7 +18818,7 @@ function XViewScene({
|
|
|
18757
18818
|
)), /* @__PURE__ */ React30.createElement("h2", { className: "text-2xl font-bold mb-2" }, "Acesso Negado"), /* @__PURE__ */ React30.createElement("p", { className: "text-slate-400 mb-6" }, "Voc\xEA n\xE3o tem permiss\xE3o para acessar este conte\xFAdo. Solicite acesso ao propriet\xE1rio ou verifique se est\xE1 na conta correta."), /* @__PURE__ */ React30.createElement(
|
|
18758
18819
|
"button",
|
|
18759
18820
|
{
|
|
18760
|
-
onClick:
|
|
18821
|
+
onClick: handleNavigateBack,
|
|
18761
18822
|
className: "flex items-center justify-center gap-2 w-full py-3 px-4 bg-blue-600 hover:bg-blue-700 text-white rounded-lg transition-colors font-medium"
|
|
18762
18823
|
},
|
|
18763
18824
|
/* @__PURE__ */ React30.createElement(
|
|
@@ -18779,7 +18840,7 @@ function XViewScene({
|
|
|
18779
18840
|
}
|
|
18780
18841
|
)
|
|
18781
18842
|
),
|
|
18782
|
-
"Voltar para
|
|
18843
|
+
"Voltar para o X.View"
|
|
18783
18844
|
)));
|
|
18784
18845
|
}
|
|
18785
18846
|
return /* @__PURE__ */ React30.createElement(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lv-x-software-house/x_view",
|
|
3
|
-
"version": "1.2.6-dev.
|
|
3
|
+
"version": "1.2.6-dev.54",
|
|
4
4
|
"description": "Pacote privado contendo os componentes e lógica de renderização 3D do X View.",
|
|
5
5
|
"author": "iv.x - Engenharia de Software - ivxsoftwarehouse@gmail.com",
|
|
6
6
|
"license": "UNLICENSED",
|