@burdenoff/microfe-bigconsole 2026.1004.3 → 2026.1004.4
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/bigconsole/BigConsoleRoutes.d.ts +1 -1
- package/dist/bigconsole/BigConsoleRoutes.d.ts.map +1 -1
- package/dist/bigconsole/BigConsoleRoutes.js +15 -1
- package/dist/bigconsole/BigConsoleRoutes.js.map +1 -1
- package/dist/bigconsole/components/DrilldownModal.d.ts.map +1 -1
- package/dist/bigconsole/components/DrilldownModal.js +54 -53
- package/dist/bigconsole/components/DrilldownModal.js.map +1 -1
- package/dist/bigconsole/components/builder/inspector/DataBindingSection.d.ts +3 -1
- package/dist/bigconsole/components/builder/inspector/DataBindingSection.d.ts.map +1 -1
- package/dist/bigconsole/components/builder/inspector/DataBindingSection.js +40 -39
- package/dist/bigconsole/components/builder/inspector/DataBindingSection.js.map +1 -1
- package/dist/bigconsole/components/dashboard/DashboardCanvas.d.ts.map +1 -1
- package/dist/bigconsole/components/dashboard/DashboardCanvas.js +184 -177
- package/dist/bigconsole/components/dashboard/DashboardCanvas.js.map +1 -1
- package/dist/bigconsole/components/dashboard/DashboardGrid.d.ts.map +1 -1
- package/dist/bigconsole/components/dashboard/DashboardGrid.js +40 -22
- package/dist/bigconsole/components/dashboard/DashboardGrid.js.map +1 -1
- package/dist/bigconsole/components/dashboard/ExportDashboardDialog.d.ts.map +1 -1
- package/dist/bigconsole/components/dashboard/ExportDashboardDialog.js +31 -25
- package/dist/bigconsole/components/dashboard/ExportDashboardDialog.js.map +1 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.d.ts +1 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.d.ts.map +1 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js +115 -80
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js.map +1 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.d.ts.map +1 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js +177 -146
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js.map +1 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.d.ts +1 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.d.ts.map +1 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js +375 -325
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js.map +1 -1
- package/dist/bigconsole/components/datasink/CacheTTLSelector.d.ts.map +1 -1
- package/dist/bigconsole/components/datasink/CacheTTLSelector.js +7 -1
- package/dist/bigconsole/components/datasink/CacheTTLSelector.js.map +1 -1
- package/dist/bigconsole/components/parser/ParserSelector.d.ts +3 -1
- package/dist/bigconsole/components/parser/ParserSelector.d.ts.map +1 -1
- package/dist/bigconsole/components/parser/ParserSelector.js +94 -94
- package/dist/bigconsole/components/parser/ParserSelector.js.map +1 -1
- package/dist/bigconsole/components/pipeline/PipelineCard.d.ts.map +1 -1
- package/dist/bigconsole/components/pipeline/PipelineCard.js +111 -89
- package/dist/bigconsole/components/pipeline/PipelineCard.js.map +1 -1
- package/dist/bigconsole/components/pipeline/PipelineScopePicker.d.ts +8 -0
- package/dist/bigconsole/components/pipeline/PipelineScopePicker.d.ts.map +1 -0
- package/dist/bigconsole/components/pipeline/PipelineScopePicker.js +52 -0
- package/dist/bigconsole/components/pipeline/PipelineScopePicker.js.map +1 -0
- package/dist/bigconsole/components/widgets/PropertiesPanel.d.ts.map +1 -1
- package/dist/bigconsole/components/widgets/PropertiesPanel.js +257 -221
- package/dist/bigconsole/components/widgets/PropertiesPanel.js.map +1 -1
- package/dist/bigconsole/components/widgets/WidgetHeader.d.ts +1 -0
- package/dist/bigconsole/components/widgets/WidgetHeader.d.ts.map +1 -1
- package/dist/bigconsole/components/widgets/WidgetHeader.js +29 -29
- package/dist/bigconsole/components/widgets/WidgetHeader.js.map +1 -1
- package/dist/bigconsole/components/widgets/WidgetWrapper.d.ts +2 -0
- package/dist/bigconsole/components/widgets/WidgetWrapper.d.ts.map +1 -1
- package/dist/bigconsole/components/widgets/WidgetWrapper.js +247 -239
- package/dist/bigconsole/components/widgets/WidgetWrapper.js.map +1 -1
- package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.d.ts.map +1 -1
- package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.js +6 -4
- package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.js.map +1 -1
- package/dist/bigconsole/components/widgets/states/EmptyState.d.ts +1 -0
- package/dist/bigconsole/components/widgets/states/EmptyState.d.ts.map +1 -1
- package/dist/bigconsole/components/widgets/states/EmptyState.js +4 -4
- package/dist/bigconsole/components/widgets/states/EmptyState.js.map +1 -1
- package/dist/bigconsole/components/workflow/WorkflowDesignPreview.d.ts +7 -0
- package/dist/bigconsole/components/workflow/WorkflowDesignPreview.d.ts.map +1 -0
- package/dist/bigconsole/components/workflow/WorkflowDesignPreview.js +94 -0
- package/dist/bigconsole/components/workflow/WorkflowDesignPreview.js.map +1 -0
- package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.d.ts +7 -0
- package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.d.ts.map +1 -0
- package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.js +101 -0
- package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.js.map +1 -0
- package/dist/bigconsole/hooks/useBigConsoleSettings.d.ts +16 -0
- package/dist/bigconsole/hooks/useBigConsoleSettings.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useBigConsoleSettings.js +57 -0
- package/dist/bigconsole/hooks/useBigConsoleSettings.js.map +1 -0
- package/dist/bigconsole/hooks/useDashboardOperations.d.ts.map +1 -1
- package/dist/bigconsole/hooks/useDashboardOperations.js +102 -79
- package/dist/bigconsole/hooks/useDashboardOperations.js.map +1 -1
- package/dist/bigconsole/hooks/useExportDashboard.d.ts +3 -1
- package/dist/bigconsole/hooks/useExportDashboard.d.ts.map +1 -1
- package/dist/bigconsole/hooks/useExportDashboard.js +23 -13
- package/dist/bigconsole/hooks/useExportDashboard.js.map +1 -1
- package/dist/bigconsole/hooks/useFilterUrlSync.d.ts +18 -0
- package/dist/bigconsole/hooks/useFilterUrlSync.d.ts.map +1 -1
- package/dist/bigconsole/hooks/useFilterUrlSync.js +87 -57
- package/dist/bigconsole/hooks/useFilterUrlSync.js.map +1 -1
- package/dist/bigconsole/hooks/useGlobalFilters.d.ts.map +1 -1
- package/dist/bigconsole/hooks/useGlobalFilters.js +39 -29
- package/dist/bigconsole/hooks/useGlobalFilters.js.map +1 -1
- package/dist/bigconsole/hooks/usePageOperations.d.ts.map +1 -1
- package/dist/bigconsole/hooks/usePageOperations.js +1 -0
- package/dist/bigconsole/hooks/usePageOperations.js.map +1 -1
- package/dist/bigconsole/hooks/usePipelineOperations.d.ts.map +1 -1
- package/dist/bigconsole/hooks/usePipelineOperations.js +114 -112
- package/dist/bigconsole/hooks/usePipelineOperations.js.map +1 -1
- package/dist/bigconsole/hooks/useShareRecipients.d.ts +22 -0
- package/dist/bigconsole/hooks/useShareRecipients.d.ts.map +1 -0
- package/dist/bigconsole/hooks/useShareRecipients.js +198 -0
- package/dist/bigconsole/hooks/useShareRecipients.js.map +1 -0
- package/dist/bigconsole/pages/DashboardBuilderPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/DashboardBuilderPage.js +198 -193
- package/dist/bigconsole/pages/DashboardBuilderPage.js.map +1 -1
- package/dist/bigconsole/pages/DashboardViewPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/DashboardViewPage.js +171 -167
- package/dist/bigconsole/pages/DashboardViewPage.js.map +1 -1
- package/dist/bigconsole/pages/DashboardsPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/DashboardsPage.js +313 -266
- package/dist/bigconsole/pages/DashboardsPage.js.map +1 -1
- package/dist/bigconsole/pages/DataSinkBuilderPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/DataSinkBuilderPage.js +84 -79
- package/dist/bigconsole/pages/DataSinkBuilderPage.js.map +1 -1
- package/dist/bigconsole/pages/DataSinkViewPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/DataSinkViewPage.js +267 -257
- package/dist/bigconsole/pages/DataSinkViewPage.js.map +1 -1
- package/dist/bigconsole/pages/InsightsPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/InsightsPage.js +465 -402
- package/dist/bigconsole/pages/InsightsPage.js.map +1 -1
- package/dist/bigconsole/pages/PipelineBuilderPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/PipelineBuilderPage.js +169 -157
- package/dist/bigconsole/pages/PipelineBuilderPage.js.map +1 -1
- package/dist/bigconsole/pages/PipelineViewPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/PipelineViewPage.js +370 -230
- package/dist/bigconsole/pages/PipelineViewPage.js.map +1 -1
- package/dist/bigconsole/pages/PipelinesPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/PipelinesPage.js +181 -151
- package/dist/bigconsole/pages/PipelinesPage.js.map +1 -1
- package/dist/bigconsole/pages/SettingsPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/SettingsPage.js +188 -208
- package/dist/bigconsole/pages/SettingsPage.js.map +1 -1
- package/dist/bigconsole/pages/WidgetDemoPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/WidgetDemoPage.js +134 -117
- package/dist/bigconsole/pages/WidgetDemoPage.js.map +1 -1
- package/dist/bigconsole/pages/WorkflowViewPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/WorkflowViewPage.js +315 -267
- package/dist/bigconsole/pages/WorkflowViewPage.js.map +1 -1
- package/dist/bigconsole/pages/WorkflowsPage.d.ts.map +1 -1
- package/dist/bigconsole/pages/WorkflowsPage.js +4 -3
- package/dist/bigconsole/pages/WorkflowsPage.js.map +1 -1
- package/dist/bigconsole/types/index.d.ts +4 -0
- package/dist/bigconsole/types/index.d.ts.map +1 -1
- package/dist/generated/wspace-operations.d.ts +148 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -1
- package/dist/generated/wspace-operations.js +172 -133
- package/dist/generated/wspace-operations.js.map +1 -1
- package/dist/generated/wspace-types.d.ts +21 -0
- package/dist/generated/wspace-types.d.ts.map +1 -1
- package/dist/generated/wspace-types.js.map +1 -1
- package/dist/microfe-bigconsole.css +1 -1
- package/dist/translations/en.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -17,13 +17,13 @@ var o = (e) => ({
|
|
|
17
17
|
backdropBg: "rgba(0, 0, 0, 0.5)"
|
|
18
18
|
});
|
|
19
19
|
function s({ filter: s, onSave: c, onClose: l }) {
|
|
20
|
-
let { t: u } = a(), [d, f] = n(s?.name || ""), [
|
|
20
|
+
let { t: u } = a(), [d, f] = n(!1), [p, m] = n(!1), [h, g] = n(s?.name || ""), [_, v] = n(s?.type || "CATEGORY"), [y, b] = n(s?.isRequired || !1), [x, S] = n(s?.config?.options || [{
|
|
21
21
|
value: "",
|
|
22
22
|
label: ""
|
|
23
|
-
}]), [
|
|
23
|
+
}]), [C, w] = n(typeof s?.config?.field == "string" ? s.config.field : ""), [T, E] = n(s?.config?.placeholder || ""), [D, O] = n(!1);
|
|
24
24
|
e(() => {
|
|
25
25
|
let e = () => {
|
|
26
|
-
|
|
26
|
+
O(document.documentElement.classList.contains("dark"));
|
|
27
27
|
};
|
|
28
28
|
e();
|
|
29
29
|
let t = new MutationObserver(e);
|
|
@@ -32,7 +32,7 @@ function s({ filter: s, onSave: c, onClose: l }) {
|
|
|
32
32
|
attributeFilter: ["class"]
|
|
33
33
|
}), () => t.disconnect();
|
|
34
34
|
}, []);
|
|
35
|
-
let
|
|
35
|
+
let k = o(D), A = !!s, j = t(() => [
|
|
36
36
|
{
|
|
37
37
|
value: "CATEGORY",
|
|
38
38
|
label: u("bigconsole.filters.editor.type.category.label", "Category"),
|
|
@@ -58,27 +58,36 @@ function s({ filter: s, onSave: c, onClose: l }) {
|
|
|
58
58
|
label: u("bigconsole.filters.editor.type.custom.label", "Custom"),
|
|
59
59
|
description: u("bigconsole.filters.editor.type.custom.description", "Custom filter configuration")
|
|
60
60
|
}
|
|
61
|
-
], [u]),
|
|
62
|
-
|
|
61
|
+
], [u]), M = () => {
|
|
62
|
+
S([...x, {
|
|
63
63
|
value: "",
|
|
64
64
|
label: ""
|
|
65
65
|
}]);
|
|
66
|
-
},
|
|
67
|
-
|
|
68
|
-
},
|
|
69
|
-
|
|
66
|
+
}, N = (e) => {
|
|
67
|
+
S(x.filter((t, n) => n !== e));
|
|
68
|
+
}, P = (e, t, n) => {
|
|
69
|
+
S(x.map((r, i) => i === e ? {
|
|
70
70
|
...r,
|
|
71
71
|
[t]: n
|
|
72
72
|
} : r));
|
|
73
|
-
},
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
73
|
+
}, F = async () => {
|
|
74
|
+
if (d) return;
|
|
75
|
+
f(!0), m(!1);
|
|
76
|
+
let e = { ...s?.config };
|
|
77
|
+
_ === "CATEGORY" && (e.options = x.filter((e) => e.value && e.label)), T ? e.placeholder = T : delete e.placeholder, C.trim() ? e.field = C.trim() : delete e.field;
|
|
78
|
+
try {
|
|
79
|
+
await c({
|
|
80
|
+
name: h,
|
|
81
|
+
type: _,
|
|
82
|
+
config: e,
|
|
83
|
+
isRequired: y
|
|
84
|
+
});
|
|
85
|
+
} catch {
|
|
86
|
+
m(!0);
|
|
87
|
+
} finally {
|
|
88
|
+
f(!1);
|
|
89
|
+
}
|
|
90
|
+
}, I = h.trim() !== "" && (_ !== "CATEGORY" || x.some((e) => e.value && e.label));
|
|
82
91
|
return /* @__PURE__ */ r("div", {
|
|
83
92
|
style: {
|
|
84
93
|
position: "fixed",
|
|
@@ -88,7 +97,7 @@ function s({ filter: s, onSave: c, onClose: l }) {
|
|
|
88
97
|
bottom: 0,
|
|
89
98
|
width: "100vw",
|
|
90
99
|
height: "100vh",
|
|
91
|
-
backgroundColor:
|
|
100
|
+
backgroundColor: k.backdropBg,
|
|
92
101
|
display: "flex",
|
|
93
102
|
alignItems: "center",
|
|
94
103
|
justifyContent: "center",
|
|
@@ -101,7 +110,7 @@ function s({ filter: s, onSave: c, onClose: l }) {
|
|
|
101
110
|
width: "100%",
|
|
102
111
|
maxWidth: "min(480px, calc(100vw - 2rem))",
|
|
103
112
|
maxHeight: "80vh",
|
|
104
|
-
backgroundColor:
|
|
113
|
+
backgroundColor: k.bgPrimary,
|
|
105
114
|
borderRadius: "8px",
|
|
106
115
|
boxShadow: "var(--shadow-elevation-3)",
|
|
107
116
|
overflow: "hidden",
|
|
@@ -112,20 +121,20 @@ function s({ filter: s, onSave: c, onClose: l }) {
|
|
|
112
121
|
/* @__PURE__ */ i("div", {
|
|
113
122
|
style: {
|
|
114
123
|
padding: "16px 20px",
|
|
115
|
-
borderBottom: `1px solid ${
|
|
124
|
+
borderBottom: `1px solid ${k.borderDefault}`,
|
|
116
125
|
display: "flex",
|
|
117
126
|
alignItems: "center",
|
|
118
127
|
justifyContent: "space-between",
|
|
119
|
-
backgroundColor:
|
|
128
|
+
backgroundColor: k.bgPrimary
|
|
120
129
|
},
|
|
121
130
|
children: [/* @__PURE__ */ r("h3", {
|
|
122
131
|
style: {
|
|
123
132
|
margin: 0,
|
|
124
133
|
fontSize: "16px",
|
|
125
134
|
fontWeight: 600,
|
|
126
|
-
color:
|
|
135
|
+
color: k.textPrimary
|
|
127
136
|
},
|
|
128
|
-
children:
|
|
137
|
+
children: A ? u("bigconsole.filters.editor.title.edit", "Edit Filter") : u("bigconsole.filters.editor.title.add", "Add Filter")
|
|
129
138
|
}), /* @__PURE__ */ r("button", {
|
|
130
139
|
onClick: l,
|
|
131
140
|
style: {
|
|
@@ -133,7 +142,7 @@ function s({ filter: s, onSave: c, onClose: l }) {
|
|
|
133
142
|
border: "none",
|
|
134
143
|
fontSize: "20px",
|
|
135
144
|
cursor: "pointer",
|
|
136
|
-
color:
|
|
145
|
+
color: k.textSecondary,
|
|
137
146
|
lineHeight: 1
|
|
138
147
|
},
|
|
139
148
|
children: "×"
|
|
@@ -144,7 +153,7 @@ function s({ filter: s, onSave: c, onClose: l }) {
|
|
|
144
153
|
padding: "20px",
|
|
145
154
|
overflowY: "auto",
|
|
146
155
|
maxHeight: "calc(80vh - 130px)",
|
|
147
|
-
backgroundColor:
|
|
156
|
+
backgroundColor: k.bgPrimary
|
|
148
157
|
},
|
|
149
158
|
children: [
|
|
150
159
|
/* @__PURE__ */ i("div", {
|
|
@@ -155,27 +164,53 @@ function s({ filter: s, onSave: c, onClose: l }) {
|
|
|
155
164
|
marginBottom: "6px",
|
|
156
165
|
fontSize: "13px",
|
|
157
166
|
fontWeight: 500,
|
|
158
|
-
color:
|
|
167
|
+
color: k.textPrimary
|
|
159
168
|
},
|
|
160
169
|
children: u("bigconsole.filters.editor.field.name.label", "Filter Name *")
|
|
161
170
|
}), /* @__PURE__ */ r("input", {
|
|
162
171
|
type: "text",
|
|
163
|
-
value:
|
|
164
|
-
onChange: (e) =>
|
|
172
|
+
value: h,
|
|
173
|
+
onChange: (e) => g(e.target.value),
|
|
165
174
|
placeholder: u("bigconsole.filters.editor.field.name.placeholder", "e.g., Status, Date Range, Category"),
|
|
166
175
|
style: {
|
|
167
176
|
width: "100%",
|
|
168
177
|
padding: "10px 12px",
|
|
169
|
-
border: `1px solid ${
|
|
178
|
+
border: `1px solid ${k.borderDefault}`,
|
|
170
179
|
borderRadius: "6px",
|
|
171
180
|
fontSize: "14px",
|
|
172
181
|
boxSizing: "border-box",
|
|
173
|
-
backgroundColor:
|
|
174
|
-
color:
|
|
182
|
+
backgroundColor: k.bgPrimary,
|
|
183
|
+
color: k.textPrimary
|
|
175
184
|
}
|
|
176
185
|
})]
|
|
177
186
|
}),
|
|
178
|
-
|
|
187
|
+
/* @__PURE__ */ i("div", {
|
|
188
|
+
style: { marginBottom: "16px" },
|
|
189
|
+
children: [
|
|
190
|
+
/* @__PURE__ */ r("label", {
|
|
191
|
+
htmlFor: "global-filter-data-field",
|
|
192
|
+
className: "mb-2 block text-sm font-medium text-text-primary",
|
|
193
|
+
children: u("bigconsole.filters.editor.dataField", "Data field (optional)")
|
|
194
|
+
}),
|
|
195
|
+
/* @__PURE__ */ r("input", {
|
|
196
|
+
id: "global-filter-data-field",
|
|
197
|
+
value: C,
|
|
198
|
+
onChange: (e) => w(e.target.value),
|
|
199
|
+
className: "w-full rounded-button border border-border-subtle bg-bg-surface px-3 py-2 text-text-primary",
|
|
200
|
+
placeholder: u("bigconsole.filters.editor.dataFieldPlaceholder", "e.g., region, country, cohort")
|
|
201
|
+
}),
|
|
202
|
+
/* @__PURE__ */ r("p", {
|
|
203
|
+
className: "mt-1 text-xs text-text-secondary",
|
|
204
|
+
children: u("bigconsole.filters.editor.dataFieldHelp", "Match a field in the parser output. Leave blank to use automatic matching.")
|
|
205
|
+
})
|
|
206
|
+
]
|
|
207
|
+
}),
|
|
208
|
+
p && /* @__PURE__ */ r("p", {
|
|
209
|
+
role: "alert",
|
|
210
|
+
className: "mb-3 text-sm text-status-error-text",
|
|
211
|
+
children: u("bigconsole.filters.editor.saveError", "The filter could not be saved. Your changes are still here; try again.")
|
|
212
|
+
}),
|
|
213
|
+
!A && /* @__PURE__ */ i("div", {
|
|
179
214
|
style: { marginBottom: "16px" },
|
|
180
215
|
children: [/* @__PURE__ */ r("label", {
|
|
181
216
|
style: {
|
|
@@ -183,7 +218,7 @@ function s({ filter: s, onSave: c, onClose: l }) {
|
|
|
183
218
|
marginBottom: "8px",
|
|
184
219
|
fontSize: "13px",
|
|
185
220
|
fontWeight: 500,
|
|
186
|
-
color:
|
|
221
|
+
color: k.textPrimary
|
|
187
222
|
},
|
|
188
223
|
children: u("bigconsole.filters.editor.field.type.label", "Filter Type *")
|
|
189
224
|
}), /* @__PURE__ */ r("div", {
|
|
@@ -192,14 +227,14 @@ function s({ filter: s, onSave: c, onClose: l }) {
|
|
|
192
227
|
gridTemplateColumns: "repeat(2, 1fr)",
|
|
193
228
|
gap: "10px"
|
|
194
229
|
},
|
|
195
|
-
children:
|
|
196
|
-
onClick: () =>
|
|
230
|
+
children: j.map((e) => /* @__PURE__ */ i("button", {
|
|
231
|
+
onClick: () => v(e.value),
|
|
197
232
|
type: "button",
|
|
198
233
|
style: {
|
|
199
234
|
padding: "12px",
|
|
200
235
|
textAlign: "left",
|
|
201
|
-
backgroundColor:
|
|
202
|
-
border: `2px solid ${
|
|
236
|
+
backgroundColor: _ === e.value ? k.actionPrimaryBgSubtle : k.bgSecondary,
|
|
237
|
+
border: `2px solid ${_ === e.value ? k.actionPrimaryBg : k.borderDefault}`,
|
|
203
238
|
borderRadius: "6px",
|
|
204
239
|
cursor: "pointer",
|
|
205
240
|
transition: "all 0.2s ease",
|
|
@@ -209,13 +244,13 @@ function s({ filter: s, onSave: c, onClose: l }) {
|
|
|
209
244
|
style: {
|
|
210
245
|
fontWeight: 500,
|
|
211
246
|
fontSize: "13px",
|
|
212
|
-
color:
|
|
247
|
+
color: k.textPrimary
|
|
213
248
|
},
|
|
214
249
|
children: e.label
|
|
215
250
|
}), /* @__PURE__ */ r("div", {
|
|
216
251
|
style: {
|
|
217
252
|
fontSize: "11px",
|
|
218
|
-
color:
|
|
253
|
+
color: k.textSecondary,
|
|
219
254
|
marginTop: "4px",
|
|
220
255
|
lineHeight: "1.3"
|
|
221
256
|
},
|
|
@@ -224,7 +259,7 @@ function s({ filter: s, onSave: c, onClose: l }) {
|
|
|
224
259
|
}, e.value))
|
|
225
260
|
})]
|
|
226
261
|
}),
|
|
227
|
-
|
|
262
|
+
_ === "CATEGORY" && /* @__PURE__ */ i("div", {
|
|
228
263
|
style: { marginBottom: "16px" },
|
|
229
264
|
children: [/* @__PURE__ */ r("label", {
|
|
230
265
|
style: {
|
|
@@ -232,7 +267,7 @@ function s({ filter: s, onSave: c, onClose: l }) {
|
|
|
232
267
|
marginBottom: "8px",
|
|
233
268
|
fontSize: "13px",
|
|
234
269
|
fontWeight: 500,
|
|
235
|
-
color:
|
|
270
|
+
color: k.textPrimary
|
|
236
271
|
},
|
|
237
272
|
children: u("bigconsole.filters.editor.field.options.label", "Options")
|
|
238
273
|
}), /* @__PURE__ */ i("div", {
|
|
@@ -241,7 +276,7 @@ function s({ filter: s, onSave: c, onClose: l }) {
|
|
|
241
276
|
flexDirection: "column",
|
|
242
277
|
gap: "8px"
|
|
243
278
|
},
|
|
244
|
-
children: [
|
|
279
|
+
children: [x.map((e, t) => /* @__PURE__ */ i("div", {
|
|
245
280
|
style: {
|
|
246
281
|
display: "flex",
|
|
247
282
|
gap: "8px",
|
|
@@ -251,45 +286,45 @@ function s({ filter: s, onSave: c, onClose: l }) {
|
|
|
251
286
|
/* @__PURE__ */ r("input", {
|
|
252
287
|
type: "text",
|
|
253
288
|
value: e.value,
|
|
254
|
-
onChange: (e) =>
|
|
289
|
+
onChange: (e) => P(t, "value", e.target.value),
|
|
255
290
|
placeholder: u("bigconsole.filters.editor.field.options.valuePlaceholder", "Value"),
|
|
256
291
|
style: {
|
|
257
292
|
flex: 1,
|
|
258
293
|
padding: "8px 10px",
|
|
259
|
-
border: `1px solid ${
|
|
294
|
+
border: `1px solid ${k.borderDefault}`,
|
|
260
295
|
borderRadius: "4px",
|
|
261
296
|
fontSize: "13px",
|
|
262
297
|
boxSizing: "border-box",
|
|
263
|
-
backgroundColor:
|
|
264
|
-
color:
|
|
298
|
+
backgroundColor: k.bgPrimary,
|
|
299
|
+
color: k.textPrimary
|
|
265
300
|
}
|
|
266
301
|
}),
|
|
267
302
|
/* @__PURE__ */ r("input", {
|
|
268
303
|
type: "text",
|
|
269
304
|
value: e.label,
|
|
270
|
-
onChange: (e) =>
|
|
305
|
+
onChange: (e) => P(t, "label", e.target.value),
|
|
271
306
|
placeholder: u("bigconsole.filters.editor.field.options.labelPlaceholder", "Label"),
|
|
272
307
|
style: {
|
|
273
308
|
flex: 1,
|
|
274
309
|
padding: "8px 10px",
|
|
275
|
-
border: `1px solid ${
|
|
310
|
+
border: `1px solid ${k.borderDefault}`,
|
|
276
311
|
borderRadius: "4px",
|
|
277
312
|
fontSize: "13px",
|
|
278
313
|
boxSizing: "border-box",
|
|
279
|
-
backgroundColor:
|
|
280
|
-
color:
|
|
314
|
+
backgroundColor: k.bgPrimary,
|
|
315
|
+
color: k.textPrimary
|
|
281
316
|
}
|
|
282
317
|
}),
|
|
283
|
-
|
|
318
|
+
x.length > 1 && /* @__PURE__ */ r("button", {
|
|
284
319
|
type: "button",
|
|
285
|
-
onClick: () =>
|
|
320
|
+
onClick: () => N(t),
|
|
286
321
|
style: {
|
|
287
322
|
padding: "6px 10px",
|
|
288
323
|
backgroundColor: "transparent",
|
|
289
|
-
border: `1px solid ${
|
|
324
|
+
border: `1px solid ${k.statusErrorText}`,
|
|
290
325
|
borderRadius: "4px",
|
|
291
326
|
cursor: "pointer",
|
|
292
|
-
color:
|
|
327
|
+
color: k.statusErrorText,
|
|
293
328
|
fontSize: "12px"
|
|
294
329
|
},
|
|
295
330
|
children: u("bigconsole.filters.editor.field.options.remove", "Remove")
|
|
@@ -297,21 +332,21 @@ function s({ filter: s, onSave: c, onClose: l }) {
|
|
|
297
332
|
]
|
|
298
333
|
}, t)), /* @__PURE__ */ r("button", {
|
|
299
334
|
type: "button",
|
|
300
|
-
onClick:
|
|
335
|
+
onClick: M,
|
|
301
336
|
style: {
|
|
302
337
|
padding: "8px",
|
|
303
338
|
backgroundColor: "transparent",
|
|
304
|
-
border: `1px dashed ${
|
|
339
|
+
border: `1px dashed ${k.borderDefault}`,
|
|
305
340
|
borderRadius: "4px",
|
|
306
341
|
cursor: "pointer",
|
|
307
|
-
color:
|
|
342
|
+
color: k.textSecondary,
|
|
308
343
|
fontSize: "12px"
|
|
309
344
|
},
|
|
310
345
|
children: u("bigconsole.filters.editor.field.options.add", "+ Add Option")
|
|
311
346
|
})]
|
|
312
347
|
})]
|
|
313
348
|
}),
|
|
314
|
-
(
|
|
349
|
+
(_ === "TEXT_SEARCH" || _ === "CATEGORY") && /* @__PURE__ */ i("div", {
|
|
315
350
|
style: { marginBottom: "16px" },
|
|
316
351
|
children: [/* @__PURE__ */ r("label", {
|
|
317
352
|
style: {
|
|
@@ -319,23 +354,23 @@ function s({ filter: s, onSave: c, onClose: l }) {
|
|
|
319
354
|
marginBottom: "8px",
|
|
320
355
|
fontSize: "13px",
|
|
321
356
|
fontWeight: 500,
|
|
322
|
-
color:
|
|
357
|
+
color: k.textPrimary
|
|
323
358
|
},
|
|
324
359
|
children: u("bigconsole.filters.editor.field.placeholder.label", "Placeholder Text")
|
|
325
360
|
}), /* @__PURE__ */ r("input", {
|
|
326
361
|
type: "text",
|
|
327
|
-
value:
|
|
328
|
-
onChange: (e) =>
|
|
362
|
+
value: T,
|
|
363
|
+
onChange: (e) => E(e.target.value),
|
|
329
364
|
placeholder: u("bigconsole.filters.editor.field.placeholder.placeholder", "e.g., Select an option..."),
|
|
330
365
|
style: {
|
|
331
366
|
width: "100%",
|
|
332
367
|
padding: "10px 12px",
|
|
333
|
-
border: `1px solid ${
|
|
368
|
+
border: `1px solid ${k.borderDefault}`,
|
|
334
369
|
borderRadius: "6px",
|
|
335
370
|
fontSize: "14px",
|
|
336
371
|
boxSizing: "border-box",
|
|
337
|
-
backgroundColor:
|
|
338
|
-
color:
|
|
372
|
+
backgroundColor: k.bgPrimary,
|
|
373
|
+
color: k.textPrimary
|
|
339
374
|
}
|
|
340
375
|
})]
|
|
341
376
|
}),
|
|
@@ -350,8 +385,8 @@ function s({ filter: s, onSave: c, onClose: l }) {
|
|
|
350
385
|
},
|
|
351
386
|
children: [/* @__PURE__ */ r("input", {
|
|
352
387
|
type: "checkbox",
|
|
353
|
-
checked:
|
|
354
|
-
onChange: (e) =>
|
|
388
|
+
checked: y,
|
|
389
|
+
onChange: (e) => b(e.target.checked),
|
|
355
390
|
style: {
|
|
356
391
|
width: "16px",
|
|
357
392
|
height: "16px"
|
|
@@ -359,7 +394,7 @@ function s({ filter: s, onSave: c, onClose: l }) {
|
|
|
359
394
|
}), /* @__PURE__ */ r("span", {
|
|
360
395
|
style: {
|
|
361
396
|
fontSize: "13px",
|
|
362
|
-
color:
|
|
397
|
+
color: k.textPrimary
|
|
363
398
|
},
|
|
364
399
|
children: u("bigconsole.filters.editor.field.required.label", "Required filter (must have a value)")
|
|
365
400
|
})]
|
|
@@ -370,40 +405,40 @@ function s({ filter: s, onSave: c, onClose: l }) {
|
|
|
370
405
|
/* @__PURE__ */ i("div", {
|
|
371
406
|
style: {
|
|
372
407
|
padding: "16px 20px",
|
|
373
|
-
borderTop: `1px solid ${
|
|
408
|
+
borderTop: `1px solid ${k.borderDefault}`,
|
|
374
409
|
display: "flex",
|
|
375
410
|
justifyContent: "flex-end",
|
|
376
411
|
gap: "12px",
|
|
377
|
-
backgroundColor:
|
|
412
|
+
backgroundColor: k.bgPrimary
|
|
378
413
|
},
|
|
379
414
|
children: [/* @__PURE__ */ r("button", {
|
|
380
415
|
type: "button",
|
|
381
416
|
onClick: l,
|
|
382
417
|
style: {
|
|
383
418
|
padding: "10px 20px",
|
|
384
|
-
backgroundColor:
|
|
385
|
-
border: `1px solid ${
|
|
419
|
+
backgroundColor: k.bgPrimary,
|
|
420
|
+
border: `1px solid ${k.borderDefault}`,
|
|
386
421
|
borderRadius: "6px",
|
|
387
422
|
cursor: "pointer",
|
|
388
423
|
fontSize: "14px",
|
|
389
|
-
color:
|
|
424
|
+
color: k.textSecondary
|
|
390
425
|
},
|
|
391
426
|
children: u("bigconsole.filters.editor.action.cancel", "Cancel")
|
|
392
427
|
}), /* @__PURE__ */ r("button", {
|
|
393
428
|
type: "button",
|
|
394
|
-
onClick:
|
|
395
|
-
disabled: !
|
|
429
|
+
onClick: F,
|
|
430
|
+
disabled: !I || d,
|
|
396
431
|
style: {
|
|
397
432
|
padding: "10px 20px",
|
|
398
|
-
backgroundColor:
|
|
399
|
-
color:
|
|
433
|
+
backgroundColor: I ? k.actionPrimaryBg : k.bgTertiary,
|
|
434
|
+
color: I ? k.actionPrimaryFg : k.textTertiary,
|
|
400
435
|
border: "none",
|
|
401
436
|
borderRadius: "6px",
|
|
402
|
-
cursor:
|
|
437
|
+
cursor: I ? "pointer" : "not-allowed",
|
|
403
438
|
fontSize: "14px",
|
|
404
439
|
fontWeight: 500
|
|
405
440
|
},
|
|
406
|
-
children:
|
|
441
|
+
children: A ? u("bigconsole.filters.editor.action.saveChanges", "Save Changes") : u("bigconsole.filters.editor.action.add", "Add Filter")
|
|
407
442
|
})]
|
|
408
443
|
})
|
|
409
444
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterEditor.js","names":[],"sources":["../../../../../src/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.tsx"],"sourcesContent":["/**\n * FilterEditor Component\n *\n * Modal for creating/editing global filters.\n */\n\nimport React, { useState, useEffect, useMemo } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport type { GlobalFilter, FilterType } from '../../../hooks';\n\n// Dynamic colors that respect dark mode\nconst getColors = (isDark: boolean) => ({\n bgPrimary: isDark ? '#1f2937' : '#ffffff',\n bgSecondary: isDark ? '#374151' : '#f9fafb',\n textPrimary: isDark ? '#f9fafb' : '#111827',\n textSecondary: isDark ? '#9ca3af' : '#6b7280',\n borderDefault: isDark ? '#4b5563' : '#e5e7eb',\n actionPrimaryBg: '#6366f1',\n actionPrimaryBgSubtle: isDark ? '#312e81' : '#eef2ff',\n actionPrimaryFg: '#ffffff',\n bgTertiary: isDark ? '#4b5563' : '#f3f4f6',\n textTertiary: isDark ? '#6b7280' : '#9ca3af',\n statusErrorText: '#dc2626',\n backdropBg: 'rgba(0, 0, 0, 0.5)',\n});\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface FilterEditorProps {\n filter: GlobalFilter | null;\n onSave: (data: {\n name: string;\n type: FilterType;\n config: Record<string, unknown>;\n defaultValue?: unknown;\n isRequired?: boolean;\n }) => void;\n onClose: () => void;\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport function FilterEditor({ filter, onSave, onClose }: FilterEditorProps) {\n const { t } = useI18n();\n const [name, setName] = useState(filter?.name || '');\n const [type, setType] = useState<FilterType>(filter?.type || 'CATEGORY');\n const [isRequired, setIsRequired] = useState(filter?.isRequired || false);\n const [options, setOptions] = useState<{ value: string; label: string }[]>(\n (filter?.config?.options as { value: string; label: string }[] | undefined) || [{ value: '', label: '' }]\n );\n const [placeholder, setPlaceholder] = useState((filter?.config?.placeholder as string) || '');\n const [isDarkMode, setIsDarkMode] = useState(false);\n\n // Detect dark mode\n useEffect(() => {\n const checkDarkMode = () => {\n setIsDarkMode(document.documentElement.classList.contains('dark'));\n };\n checkDarkMode();\n\n // Watch for theme changes\n const observer = new MutationObserver(checkDarkMode);\n observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });\n return () => observer.disconnect();\n }, []);\n\n const COLORS = getColors(isDarkMode);\n const isEditing = !!filter;\n\n /**\n * Filter types as per spec (03-graphql-contract.md)\n * Spec values: date_range, category, custom, numeric_range, text_search\n */\n const FILTER_TYPES = useMemo<{ value: FilterType; label: string; description: string }[]>(\n () => [\n {\n value: 'CATEGORY',\n label: t('bigconsole.filters.editor.type.category.label', 'Category'),\n description: t('bigconsole.filters.editor.type.category.description', 'Selection from predefined categories'),\n },\n {\n value: 'DATE_RANGE',\n label: t('bigconsole.filters.editor.type.dateRange.label', 'Date Range'),\n description: t('bigconsole.filters.editor.type.dateRange.description', 'Start and end date selection'),\n },\n {\n value: 'NUMERIC_RANGE',\n label: t('bigconsole.filters.editor.type.numericRange.label', 'Numeric Range'),\n description: t('bigconsole.filters.editor.type.numericRange.description', 'Min and max number values'),\n },\n {\n value: 'TEXT_SEARCH',\n label: t('bigconsole.filters.editor.type.textSearch.label', 'Text Search'),\n description: t('bigconsole.filters.editor.type.textSearch.description', 'Free text search input'),\n },\n {\n value: 'CUSTOM',\n label: t('bigconsole.filters.editor.type.custom.label', 'Custom'),\n description: t('bigconsole.filters.editor.type.custom.description', 'Custom filter configuration'),\n },\n ],\n [t]\n );\n\n const handleAddOption = () => {\n setOptions([...options, { value: '', label: '' }]);\n };\n\n const handleRemoveOption = (index: number) => {\n setOptions(options.filter((_, i) => i !== index));\n };\n\n const handleOptionChange = (index: number, field: 'value' | 'label', value: string) => {\n setOptions(options.map((opt, i) => (i === index ? { ...opt, [field]: value } : opt)));\n };\n\n const handleSave = () => {\n const config: Record<string, unknown> = {};\n\n // CATEGORY type uses options for selection\n if (type === 'CATEGORY') {\n config.options = options.filter((opt) => opt.value && opt.label);\n }\n\n if (placeholder) {\n config.placeholder = placeholder;\n }\n\n onSave({\n name,\n type,\n config,\n isRequired,\n });\n };\n\n const isValid = name.trim() !== '' && (type !== 'CATEGORY' || options.some((opt) => opt.value && opt.label));\n\n return (\n <div\n style={{\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n width: '100vw',\n height: '100vh',\n backgroundColor: COLORS.backdropBg,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 10000,\n isolation: 'isolate',\n }}\n onClick={onClose}\n >\n <div\n style={{\n width: '100%',\n maxWidth: 'min(480px, calc(100vw - 2rem))',\n maxHeight: '80vh',\n backgroundColor: COLORS.bgPrimary,\n borderRadius: '8px',\n boxShadow: 'var(--shadow-elevation-3)',\n overflow: 'hidden',\n position: 'relative',\n }}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Header */}\n <div\n style={{\n padding: '16px 20px',\n borderBottom: `1px solid ${COLORS.borderDefault}`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n backgroundColor: COLORS.bgPrimary,\n }}\n >\n <h3 style={{ margin: 0, fontSize: '16px', fontWeight: 600, color: COLORS.textPrimary }}>\n {isEditing\n ? t('bigconsole.filters.editor.title.edit', 'Edit Filter')\n : t('bigconsole.filters.editor.title.add', 'Add Filter')}\n </h3>\n <button\n onClick={onClose}\n style={{\n background: 'none',\n border: 'none',\n fontSize: '20px',\n cursor: 'pointer',\n color: COLORS.textSecondary,\n lineHeight: 1,\n }}\n >\n ×\n </button>\n </div>\n\n {/* Content */}\n <div\n style={{\n padding: '20px',\n overflowY: 'auto',\n maxHeight: 'calc(80vh - 130px)',\n backgroundColor: COLORS.bgPrimary,\n }}\n >\n {/* Filter Name */}\n <div style={{ marginBottom: '16px' }}>\n <label\n style={{\n display: 'block',\n marginBottom: '6px',\n fontSize: '13px',\n fontWeight: 500,\n color: COLORS.textPrimary,\n }}\n >\n {t('bigconsole.filters.editor.field.name.label', 'Filter Name *')}\n </label>\n <input\n type=\"text\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder={t('bigconsole.filters.editor.field.name.placeholder', 'e.g., Status, Date Range, Category')}\n style={{\n width: '100%',\n padding: '10px 12px',\n border: `1px solid ${COLORS.borderDefault}`,\n borderRadius: '6px',\n fontSize: '14px',\n boxSizing: 'border-box',\n backgroundColor: COLORS.bgPrimary,\n color: COLORS.textPrimary,\n }}\n />\n </div>\n\n {/* Filter Type */}\n {!isEditing && (\n <div style={{ marginBottom: '16px' }}>\n <label\n style={{\n display: 'block',\n marginBottom: '8px',\n fontSize: '13px',\n fontWeight: 500,\n color: COLORS.textPrimary,\n }}\n >\n {t('bigconsole.filters.editor.field.type.label', 'Filter Type *')}\n </label>\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: '10px' }}>\n {FILTER_TYPES.map((ft) => (\n <button\n key={ft.value}\n onClick={() => setType(ft.value)}\n type=\"button\"\n style={{\n padding: '12px',\n textAlign: 'left',\n backgroundColor: type === ft.value ? COLORS.actionPrimaryBgSubtle : COLORS.bgSecondary,\n border: `2px solid ${type === ft.value ? COLORS.actionPrimaryBg : COLORS.borderDefault}`,\n borderRadius: '6px',\n cursor: 'pointer',\n transition: 'all 0.2s ease',\n minHeight: '60px',\n }}\n >\n <div style={{ fontWeight: 500, fontSize: '13px', color: COLORS.textPrimary }}>{ft.label}</div>\n <div\n style={{\n fontSize: '11px',\n color: COLORS.textSecondary,\n marginTop: '4px',\n lineHeight: '1.3',\n }}\n >\n {ft.description}\n </div>\n </button>\n ))}\n </div>\n </div>\n )}\n\n {/* Options (for CATEGORY type) */}\n {type === 'CATEGORY' && (\n <div style={{ marginBottom: '16px' }}>\n <label\n style={{\n display: 'block',\n marginBottom: '8px',\n fontSize: '13px',\n fontWeight: 500,\n color: COLORS.textPrimary,\n }}\n >\n {t('bigconsole.filters.editor.field.options.label', 'Options')}\n </label>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>\n {options.map((opt, index) => (\n <div key={index} style={{ display: 'flex', gap: '8px', alignItems: 'center' }}>\n <input\n type=\"text\"\n value={opt.value}\n onChange={(e) => handleOptionChange(index, 'value', e.target.value)}\n placeholder={t('bigconsole.filters.editor.field.options.valuePlaceholder', 'Value')}\n style={{\n flex: 1,\n padding: '8px 10px',\n border: `1px solid ${COLORS.borderDefault}`,\n borderRadius: '4px',\n fontSize: '13px',\n boxSizing: 'border-box',\n backgroundColor: COLORS.bgPrimary,\n color: COLORS.textPrimary,\n }}\n />\n <input\n type=\"text\"\n value={opt.label}\n onChange={(e) => handleOptionChange(index, 'label', e.target.value)}\n placeholder={t('bigconsole.filters.editor.field.options.labelPlaceholder', 'Label')}\n style={{\n flex: 1,\n padding: '8px 10px',\n border: `1px solid ${COLORS.borderDefault}`,\n borderRadius: '4px',\n fontSize: '13px',\n boxSizing: 'border-box',\n backgroundColor: COLORS.bgPrimary,\n color: COLORS.textPrimary,\n }}\n />\n {options.length > 1 && (\n <button\n type=\"button\"\n onClick={() => handleRemoveOption(index)}\n style={{\n padding: '6px 10px',\n backgroundColor: 'transparent',\n border: `1px solid ${COLORS.statusErrorText}`,\n borderRadius: '4px',\n cursor: 'pointer',\n color: COLORS.statusErrorText,\n fontSize: '12px',\n }}\n >\n {t('bigconsole.filters.editor.field.options.remove', 'Remove')}\n </button>\n )}\n </div>\n ))}\n <button\n type=\"button\"\n onClick={handleAddOption}\n style={{\n padding: '8px',\n backgroundColor: 'transparent',\n border: `1px dashed ${COLORS.borderDefault}`,\n borderRadius: '4px',\n cursor: 'pointer',\n color: COLORS.textSecondary,\n fontSize: '12px',\n }}\n >\n {t('bigconsole.filters.editor.field.options.add', '+ Add Option')}\n </button>\n </div>\n </div>\n )}\n\n {/* Placeholder */}\n {(type === 'TEXT_SEARCH' || type === 'CATEGORY') && (\n <div style={{ marginBottom: '16px' }}>\n <label\n style={{\n display: 'block',\n marginBottom: '8px',\n fontSize: '13px',\n fontWeight: 500,\n color: COLORS.textPrimary,\n }}\n >\n {t('bigconsole.filters.editor.field.placeholder.label', 'Placeholder Text')}\n </label>\n <input\n type=\"text\"\n value={placeholder}\n onChange={(e) => setPlaceholder(e.target.value)}\n placeholder={t('bigconsole.filters.editor.field.placeholder.placeholder', 'e.g., Select an option...')}\n style={{\n width: '100%',\n padding: '10px 12px',\n border: `1px solid ${COLORS.borderDefault}`,\n borderRadius: '6px',\n fontSize: '14px',\n boxSizing: 'border-box',\n backgroundColor: COLORS.bgPrimary,\n color: COLORS.textPrimary,\n }}\n />\n </div>\n )}\n\n {/* Required Toggle */}\n <div style={{ marginBottom: '16px' }}>\n <label\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n cursor: 'pointer',\n }}\n >\n <input\n type=\"checkbox\"\n checked={isRequired}\n onChange={(e) => setIsRequired(e.target.checked)}\n style={{ width: '16px', height: '16px' }}\n />\n <span style={{ fontSize: '13px', color: COLORS.textPrimary }}>\n {t('bigconsole.filters.editor.field.required.label', 'Required filter (must have a value)')}\n </span>\n </label>\n </div>\n </div>\n\n {/* Footer */}\n <div\n style={{\n padding: '16px 20px',\n borderTop: `1px solid ${COLORS.borderDefault}`,\n display: 'flex',\n justifyContent: 'flex-end',\n gap: '12px',\n backgroundColor: COLORS.bgPrimary,\n }}\n >\n <button\n type=\"button\"\n onClick={onClose}\n style={{\n padding: '10px 20px',\n backgroundColor: COLORS.bgPrimary,\n border: `1px solid ${COLORS.borderDefault}`,\n borderRadius: '6px',\n cursor: 'pointer',\n fontSize: '14px',\n color: COLORS.textSecondary,\n }}\n >\n {t('bigconsole.filters.editor.action.cancel', 'Cancel')}\n </button>\n <button\n type=\"button\"\n onClick={handleSave}\n disabled={!isValid}\n style={{\n padding: '10px 20px',\n backgroundColor: isValid ? COLORS.actionPrimaryBg : COLORS.bgTertiary,\n color: isValid ? COLORS.actionPrimaryFg : COLORS.textTertiary,\n border: 'none',\n borderRadius: '6px',\n cursor: isValid ? 'pointer' : 'not-allowed',\n fontSize: '14px',\n fontWeight: 500,\n }}\n >\n {isEditing\n ? t('bigconsole.filters.editor.action.saveChanges', 'Save Changes')\n : t('bigconsole.filters.editor.action.add', 'Add Filter')}\n </button>\n </div>\n </div>\n </div>\n );\n}\n\nexport default FilterEditor;\n"],"mappings":";;;;AAWA,IAAM,KAAa,OAAqB;CACtC,WAAW,IAAS,YAAY;CAChC,aAAa,IAAS,YAAY;CAClC,aAAa,IAAS,YAAY;CAClC,eAAe,IAAS,YAAY;CACpC,eAAe,IAAS,YAAY;CACpC,iBAAiB;CACjB,uBAAuB,IAAS,YAAY;CAC5C,iBAAiB;CACjB,YAAY,IAAS,YAAY;CACjC,cAAc,IAAS,YAAY;CACnC,iBAAiB;CACjB,YAAY;CACb;AAsBD,SAAgB,EAAa,EAAE,WAAQ,WAAQ,cAA8B;CAC3E,IAAM,EAAE,SAAM,GAAS,EACjB,CAAC,GAAM,KAAW,EAAS,GAAQ,QAAQ,GAAG,EAC9C,CAAC,GAAM,KAAW,EAAqB,GAAQ,QAAQ,WAAW,EAClE,CAAC,GAAY,KAAiB,EAAS,GAAQ,cAAc,GAAM,EACnE,CAAC,GAAS,KAAc,EAC3B,GAAQ,QAAQ,WAA8D,CAAC;EAAE,OAAO;EAAI,OAAO;EAAI,CAAC,CAC1G,EACK,CAAC,GAAa,KAAkB,EAAU,GAAQ,QAAQ,eAA0B,GAAG,EACvF,CAAC,GAAY,KAAiB,EAAS,GAAM;AAGnD,SAAgB;EACd,IAAM,UAAsB;AAC1B,KAAc,SAAS,gBAAgB,UAAU,SAAS,OAAO,CAAC;;AAEpE,KAAe;EAGf,IAAM,IAAW,IAAI,iBAAiB,EAAc;AAEpD,SADA,EAAS,QAAQ,SAAS,iBAAiB;GAAE,YAAY;GAAM,iBAAiB,CAAC,QAAQ;GAAE,CAAC,QAC/E,EAAS,YAAY;IACjC,EAAE,CAAC;CAEN,IAAM,IAAS,EAAU,EAAW,EAC9B,IAAY,CAAC,CAAC,GAMd,IAAe,QACb;EACJ;GACE,OAAO;GACP,OAAO,EAAE,iDAAiD,WAAW;GACrE,aAAa,EAAE,uDAAuD,uCAAuC;GAC9G;EACD;GACE,OAAO;GACP,OAAO,EAAE,kDAAkD,aAAa;GACxE,aAAa,EAAE,wDAAwD,+BAA+B;GACvG;EACD;GACE,OAAO;GACP,OAAO,EAAE,qDAAqD,gBAAgB;GAC9E,aAAa,EAAE,2DAA2D,4BAA4B;GACvG;EACD;GACE,OAAO;GACP,OAAO,EAAE,mDAAmD,cAAc;GAC1E,aAAa,EAAE,yDAAyD,yBAAyB;GAClG;EACD;GACE,OAAO;GACP,OAAO,EAAE,+CAA+C,SAAS;GACjE,aAAa,EAAE,qDAAqD,8BAA8B;GACnG;EACF,EACD,CAAC,EAAE,CACJ,EAEK,UAAwB;AAC5B,IAAW,CAAC,GAAG,GAAS;GAAE,OAAO;GAAI,OAAO;GAAI,CAAC,CAAC;IAG9C,KAAsB,MAAkB;AAC5C,IAAW,EAAQ,QAAQ,GAAG,MAAM,MAAM,EAAM,CAAC;IAG7C,KAAsB,GAAe,GAA0B,MAAkB;AACrF,IAAW,EAAQ,KAAK,GAAK,MAAO,MAAM,IAAQ;GAAE,GAAG;IAAM,IAAQ;GAAO,GAAG,EAAK,CAAC;IAGjF,UAAmB;EACvB,IAAM,IAAkC,EAAE;AAW1C,EARI,MAAS,eACX,EAAO,UAAU,EAAQ,QAAQ,MAAQ,EAAI,SAAS,EAAI,MAAM,GAG9D,MACF,EAAO,cAAc,IAGvB,EAAO;GACL;GACA;GACA;GACA;GACD,CAAC;IAGE,IAAU,EAAK,MAAM,KAAK,OAAO,MAAS,cAAc,EAAQ,MAAM,MAAQ,EAAI,SAAS,EAAI,MAAM;AAE3G,QACE,kBAAC,OAAD;EACE,OAAO;GACL,UAAU;GACV,KAAK;GACL,MAAM;GACN,OAAO;GACP,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,iBAAiB,EAAO;GACxB,SAAS;GACT,YAAY;GACZ,gBAAgB;GAChB,QAAQ;GACR,WAAW;GACZ;EACD,SAAS;YAET,kBAAC,OAAD;GACE,OAAO;IACL,OAAO;IACP,UAAU;IACV,WAAW;IACX,iBAAiB,EAAO;IACxB,cAAc;IACd,WAAW;IACX,UAAU;IACV,UAAU;IACX;GACD,UAAU,MAAM,EAAE,iBAAiB;aAXrC;IAcE,kBAAC,OAAD;KACE,OAAO;MACL,SAAS;MACT,cAAc,aAAa,EAAO;MAClC,SAAS;MACT,YAAY;MACZ,gBAAgB;MAChB,iBAAiB,EAAO;MACzB;eARH,CAUE,kBAAC,MAAD;MAAI,OAAO;OAAE,QAAQ;OAAG,UAAU;OAAQ,YAAY;OAAK,OAAO,EAAO;OAAa;gBACnF,IACG,EAAE,wCAAwC,cAAc,GACxD,EAAE,uCAAuC,aAAa;MACvD,CAAA,EACL,kBAAC,UAAD;MACE,SAAS;MACT,OAAO;OACL,YAAY;OACZ,QAAQ;OACR,UAAU;OACV,QAAQ;OACR,OAAO,EAAO;OACd,YAAY;OACb;gBACF;MAEQ,CAAA,CACL;;IAGN,kBAAC,OAAD;KACE,OAAO;MACL,SAAS;MACT,WAAW;MACX,WAAW;MACX,iBAAiB,EAAO;MACzB;eANH;MASE,kBAAC,OAAD;OAAK,OAAO,EAAE,cAAc,QAAQ;iBAApC,CACE,kBAAC,SAAD;QACE,OAAO;SACL,SAAS;SACT,cAAc;SACd,UAAU;SACV,YAAY;SACZ,OAAO,EAAO;SACf;kBAEA,EAAE,8CAA8C,gBAAgB;QAC3D,CAAA,EACR,kBAAC,SAAD;QACE,MAAK;QACL,OAAO;QACP,WAAW,MAAM,EAAQ,EAAE,OAAO,MAAM;QACxC,aAAa,EAAE,oDAAoD,qCAAqC;QACxG,OAAO;SACL,OAAO;SACP,SAAS;SACT,QAAQ,aAAa,EAAO;SAC5B,cAAc;SACd,UAAU;SACV,WAAW;SACX,iBAAiB,EAAO;SACxB,OAAO,EAAO;SACf;QACD,CAAA,CACE;;MAGL,CAAC,KACA,kBAAC,OAAD;OAAK,OAAO,EAAE,cAAc,QAAQ;iBAApC,CACE,kBAAC,SAAD;QACE,OAAO;SACL,SAAS;SACT,cAAc;SACd,UAAU;SACV,YAAY;SACZ,OAAO,EAAO;SACf;kBAEA,EAAE,8CAA8C,gBAAgB;QAC3D,CAAA,EACR,kBAAC,OAAD;QAAK,OAAO;SAAE,SAAS;SAAQ,qBAAqB;SAAkB,KAAK;SAAQ;kBAChF,EAAa,KAAK,MACjB,kBAAC,UAAD;SAEE,eAAe,EAAQ,EAAG,MAAM;SAChC,MAAK;SACL,OAAO;UACL,SAAS;UACT,WAAW;UACX,iBAAiB,MAAS,EAAG,QAAQ,EAAO,wBAAwB,EAAO;UAC3E,QAAQ,aAAa,MAAS,EAAG,QAAQ,EAAO,kBAAkB,EAAO;UACzE,cAAc;UACd,QAAQ;UACR,YAAY;UACZ,WAAW;UACZ;mBAbH,CAeE,kBAAC,OAAD;UAAK,OAAO;WAAE,YAAY;WAAK,UAAU;WAAQ,OAAO,EAAO;WAAa;oBAAG,EAAG;UAAY,CAAA,EAC9F,kBAAC,OAAD;UACE,OAAO;WACL,UAAU;WACV,OAAO,EAAO;WACd,WAAW;WACX,YAAY;WACb;oBAEA,EAAG;UACA,CAAA,CACC;WAzBF,EAAG,MAyBD,CACT;QACE,CAAA,CACF;;MAIP,MAAS,cACR,kBAAC,OAAD;OAAK,OAAO,EAAE,cAAc,QAAQ;iBAApC,CACE,kBAAC,SAAD;QACE,OAAO;SACL,SAAS;SACT,cAAc;SACd,UAAU;SACV,YAAY;SACZ,OAAO,EAAO;SACf;kBAEA,EAAE,iDAAiD,UAAU;QACxD,CAAA,EACR,kBAAC,OAAD;QAAK,OAAO;SAAE,SAAS;SAAQ,eAAe;SAAU,KAAK;SAAO;kBAApE,CACG,EAAQ,KAAK,GAAK,MACjB,kBAAC,OAAD;SAAiB,OAAO;UAAE,SAAS;UAAQ,KAAK;UAAO,YAAY;UAAU;mBAA7E;UACE,kBAAC,SAAD;WACE,MAAK;WACL,OAAO,EAAI;WACX,WAAW,MAAM,EAAmB,GAAO,SAAS,EAAE,OAAO,MAAM;WACnE,aAAa,EAAE,4DAA4D,QAAQ;WACnF,OAAO;YACL,MAAM;YACN,SAAS;YACT,QAAQ,aAAa,EAAO;YAC5B,cAAc;YACd,UAAU;YACV,WAAW;YACX,iBAAiB,EAAO;YACxB,OAAO,EAAO;YACf;WACD,CAAA;UACF,kBAAC,SAAD;WACE,MAAK;WACL,OAAO,EAAI;WACX,WAAW,MAAM,EAAmB,GAAO,SAAS,EAAE,OAAO,MAAM;WACnE,aAAa,EAAE,4DAA4D,QAAQ;WACnF,OAAO;YACL,MAAM;YACN,SAAS;YACT,QAAQ,aAAa,EAAO;YAC5B,cAAc;YACd,UAAU;YACV,WAAW;YACX,iBAAiB,EAAO;YACxB,OAAO,EAAO;YACf;WACD,CAAA;UACD,EAAQ,SAAS,KAChB,kBAAC,UAAD;WACE,MAAK;WACL,eAAe,EAAmB,EAAM;WACxC,OAAO;YACL,SAAS;YACT,iBAAiB;YACjB,QAAQ,aAAa,EAAO;YAC5B,cAAc;YACd,QAAQ;YACR,OAAO,EAAO;YACd,UAAU;YACX;qBAEA,EAAE,kDAAkD,SAAS;WACvD,CAAA;UAEP;WAlDI,EAkDJ,CACN,EACF,kBAAC,UAAD;SACE,MAAK;SACL,SAAS;SACT,OAAO;UACL,SAAS;UACT,iBAAiB;UACjB,QAAQ,cAAc,EAAO;UAC7B,cAAc;UACd,QAAQ;UACR,OAAO,EAAO;UACd,UAAU;UACX;mBAEA,EAAE,+CAA+C,eAAe;SAC1D,CAAA,CACL;UACF;;OAIN,MAAS,iBAAiB,MAAS,eACnC,kBAAC,OAAD;OAAK,OAAO,EAAE,cAAc,QAAQ;iBAApC,CACE,kBAAC,SAAD;QACE,OAAO;SACL,SAAS;SACT,cAAc;SACd,UAAU;SACV,YAAY;SACZ,OAAO,EAAO;SACf;kBAEA,EAAE,qDAAqD,mBAAmB;QACrE,CAAA,EACR,kBAAC,SAAD;QACE,MAAK;QACL,OAAO;QACP,WAAW,MAAM,EAAe,EAAE,OAAO,MAAM;QAC/C,aAAa,EAAE,2DAA2D,4BAA4B;QACtG,OAAO;SACL,OAAO;SACP,SAAS;SACT,QAAQ,aAAa,EAAO;SAC5B,cAAc;SACd,UAAU;SACV,WAAW;SACX,iBAAiB,EAAO;SACxB,OAAO,EAAO;SACf;QACD,CAAA,CACE;;MAIR,kBAAC,OAAD;OAAK,OAAO,EAAE,cAAc,QAAQ;iBAClC,kBAAC,SAAD;QACE,OAAO;SACL,SAAS;SACT,YAAY;SACZ,KAAK;SACL,QAAQ;SACT;kBANH,CAQE,kBAAC,SAAD;SACE,MAAK;SACL,SAAS;SACT,WAAW,MAAM,EAAc,EAAE,OAAO,QAAQ;SAChD,OAAO;UAAE,OAAO;UAAQ,QAAQ;UAAQ;SACxC,CAAA,EACF,kBAAC,QAAD;SAAM,OAAO;UAAE,UAAU;UAAQ,OAAO,EAAO;UAAa;mBACzD,EAAE,kDAAkD,sCAAsC;SACtF,CAAA,CACD;;OACJ,CAAA;MACF;;IAGN,kBAAC,OAAD;KACE,OAAO;MACL,SAAS;MACT,WAAW,aAAa,EAAO;MAC/B,SAAS;MACT,gBAAgB;MAChB,KAAK;MACL,iBAAiB,EAAO;MACzB;eARH,CAUE,kBAAC,UAAD;MACE,MAAK;MACL,SAAS;MACT,OAAO;OACL,SAAS;OACT,iBAAiB,EAAO;OACxB,QAAQ,aAAa,EAAO;OAC5B,cAAc;OACd,QAAQ;OACR,UAAU;OACV,OAAO,EAAO;OACf;gBAEA,EAAE,2CAA2C,SAAS;MAChD,CAAA,EACT,kBAAC,UAAD;MACE,MAAK;MACL,SAAS;MACT,UAAU,CAAC;MACX,OAAO;OACL,SAAS;OACT,iBAAiB,IAAU,EAAO,kBAAkB,EAAO;OAC3D,OAAO,IAAU,EAAO,kBAAkB,EAAO;OACjD,QAAQ;OACR,cAAc;OACd,QAAQ,IAAU,YAAY;OAC9B,UAAU;OACV,YAAY;OACb;gBAEA,IACG,EAAE,gDAAgD,eAAe,GACjE,EAAE,wCAAwC,aAAa;MACpD,CAAA,CACL;;IACF;;EACF,CAAA"}
|
|
1
|
+
{"version":3,"file":"FilterEditor.js","names":[],"sources":["../../../../../src/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.tsx"],"sourcesContent":["/**\n * FilterEditor Component\n *\n * Modal for creating/editing global filters.\n */\n\nimport React, { useState, useEffect, useMemo } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport type { GlobalFilter, FilterType } from '../../../hooks';\n\n// Dynamic colors that respect dark mode\nconst getColors = (isDark: boolean) => ({\n bgPrimary: isDark ? '#1f2937' : '#ffffff',\n bgSecondary: isDark ? '#374151' : '#f9fafb',\n textPrimary: isDark ? '#f9fafb' : '#111827',\n textSecondary: isDark ? '#9ca3af' : '#6b7280',\n borderDefault: isDark ? '#4b5563' : '#e5e7eb',\n actionPrimaryBg: '#6366f1',\n actionPrimaryBgSubtle: isDark ? '#312e81' : '#eef2ff',\n actionPrimaryFg: '#ffffff',\n bgTertiary: isDark ? '#4b5563' : '#f3f4f6',\n textTertiary: isDark ? '#6b7280' : '#9ca3af',\n statusErrorText: '#dc2626',\n backdropBg: 'rgba(0, 0, 0, 0.5)',\n});\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface FilterEditorProps {\n filter: GlobalFilter | null;\n onSave: (data: {\n name: string;\n type: FilterType;\n config: Record<string, unknown>;\n defaultValue?: unknown;\n isRequired?: boolean;\n }) => void | Promise<void>;\n onClose: () => void;\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport function FilterEditor({ filter, onSave, onClose }: FilterEditorProps) {\n const { t } = useI18n();\n const [isSaving, setIsSaving] = useState(false);\n const [saveError, setSaveError] = useState(false);\n const [name, setName] = useState(filter?.name || '');\n const [type, setType] = useState<FilterType>(filter?.type || 'CATEGORY');\n const [isRequired, setIsRequired] = useState(filter?.isRequired || false);\n const [options, setOptions] = useState<{ value: string; label: string }[]>(\n (filter?.config?.options as { value: string; label: string }[] | undefined) || [{ value: '', label: '' }]\n );\n const [dataField, setDataField] = useState(typeof filter?.config?.field === 'string' ? filter.config.field : '');\n const [placeholder, setPlaceholder] = useState((filter?.config?.placeholder as string) || '');\n const [isDarkMode, setIsDarkMode] = useState(false);\n\n // Detect dark mode\n useEffect(() => {\n const checkDarkMode = () => {\n setIsDarkMode(document.documentElement.classList.contains('dark'));\n };\n checkDarkMode();\n\n // Watch for theme changes\n const observer = new MutationObserver(checkDarkMode);\n observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });\n return () => observer.disconnect();\n }, []);\n\n const COLORS = getColors(isDarkMode);\n const isEditing = !!filter;\n\n /**\n * Filter types as per spec (03-graphql-contract.md)\n * Spec values: date_range, category, custom, numeric_range, text_search\n */\n const FILTER_TYPES = useMemo<{ value: FilterType; label: string; description: string }[]>(\n () => [\n {\n value: 'CATEGORY',\n label: t('bigconsole.filters.editor.type.category.label', 'Category'),\n description: t('bigconsole.filters.editor.type.category.description', 'Selection from predefined categories'),\n },\n {\n value: 'DATE_RANGE',\n label: t('bigconsole.filters.editor.type.dateRange.label', 'Date Range'),\n description: t('bigconsole.filters.editor.type.dateRange.description', 'Start and end date selection'),\n },\n {\n value: 'NUMERIC_RANGE',\n label: t('bigconsole.filters.editor.type.numericRange.label', 'Numeric Range'),\n description: t('bigconsole.filters.editor.type.numericRange.description', 'Min and max number values'),\n },\n {\n value: 'TEXT_SEARCH',\n label: t('bigconsole.filters.editor.type.textSearch.label', 'Text Search'),\n description: t('bigconsole.filters.editor.type.textSearch.description', 'Free text search input'),\n },\n {\n value: 'CUSTOM',\n label: t('bigconsole.filters.editor.type.custom.label', 'Custom'),\n description: t('bigconsole.filters.editor.type.custom.description', 'Custom filter configuration'),\n },\n ],\n [t]\n );\n\n const handleAddOption = () => {\n setOptions([...options, { value: '', label: '' }]);\n };\n\n const handleRemoveOption = (index: number) => {\n setOptions(options.filter((_, i) => i !== index));\n };\n\n const handleOptionChange = (index: number, field: 'value' | 'label', value: string) => {\n setOptions(options.map((opt, i) => (i === index ? { ...opt, [field]: value } : opt)));\n };\n\n const handleSave = async () => {\n if (isSaving) return;\n setIsSaving(true);\n setSaveError(false);\n const config: Record<string, unknown> = { ...filter?.config };\n\n // CATEGORY type uses options for selection\n if (type === 'CATEGORY') {\n config.options = options.filter((opt) => opt.value && opt.label);\n }\n\n if (placeholder) config.placeholder = placeholder;\n else delete config.placeholder;\n if (dataField.trim()) config.field = dataField.trim();\n else delete config.field;\n\n try {\n await onSave({ name, type, config, isRequired });\n } catch {\n setSaveError(true);\n } finally {\n setIsSaving(false);\n }\n };\n\n const isValid = name.trim() !== '' && (type !== 'CATEGORY' || options.some((opt) => opt.value && opt.label));\n\n return (\n <div\n style={{\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n width: '100vw',\n height: '100vh',\n backgroundColor: COLORS.backdropBg,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 10000,\n isolation: 'isolate',\n }}\n onClick={onClose}\n >\n <div\n style={{\n width: '100%',\n maxWidth: 'min(480px, calc(100vw - 2rem))',\n maxHeight: '80vh',\n backgroundColor: COLORS.bgPrimary,\n borderRadius: '8px',\n boxShadow: 'var(--shadow-elevation-3)',\n overflow: 'hidden',\n position: 'relative',\n }}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Header */}\n <div\n style={{\n padding: '16px 20px',\n borderBottom: `1px solid ${COLORS.borderDefault}`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n backgroundColor: COLORS.bgPrimary,\n }}\n >\n <h3 style={{ margin: 0, fontSize: '16px', fontWeight: 600, color: COLORS.textPrimary }}>\n {isEditing\n ? t('bigconsole.filters.editor.title.edit', 'Edit Filter')\n : t('bigconsole.filters.editor.title.add', 'Add Filter')}\n </h3>\n <button\n onClick={onClose}\n style={{\n background: 'none',\n border: 'none',\n fontSize: '20px',\n cursor: 'pointer',\n color: COLORS.textSecondary,\n lineHeight: 1,\n }}\n >\n ×\n </button>\n </div>\n\n {/* Content */}\n <div\n style={{\n padding: '20px',\n overflowY: 'auto',\n maxHeight: 'calc(80vh - 130px)',\n backgroundColor: COLORS.bgPrimary,\n }}\n >\n {/* Filter Name */}\n <div style={{ marginBottom: '16px' }}>\n <label\n style={{\n display: 'block',\n marginBottom: '6px',\n fontSize: '13px',\n fontWeight: 500,\n color: COLORS.textPrimary,\n }}\n >\n {t('bigconsole.filters.editor.field.name.label', 'Filter Name *')}\n </label>\n <input\n type=\"text\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder={t('bigconsole.filters.editor.field.name.placeholder', 'e.g., Status, Date Range, Category')}\n style={{\n width: '100%',\n padding: '10px 12px',\n border: `1px solid ${COLORS.borderDefault}`,\n borderRadius: '6px',\n fontSize: '14px',\n boxSizing: 'border-box',\n backgroundColor: COLORS.bgPrimary,\n color: COLORS.textPrimary,\n }}\n />\n </div>\n\n <div style={{ marginBottom: '16px' }}>\n <label htmlFor=\"global-filter-data-field\" className=\"mb-2 block text-sm font-medium text-text-primary\">\n {t('bigconsole.filters.editor.dataField', 'Data field (optional)')}\n </label>\n <input\n id=\"global-filter-data-field\"\n value={dataField}\n onChange={(event) => setDataField(event.target.value)}\n className=\"w-full rounded-button border border-border-subtle bg-bg-surface px-3 py-2 text-text-primary\"\n placeholder={t('bigconsole.filters.editor.dataFieldPlaceholder', 'e.g., region, country, cohort')}\n />\n <p className=\"mt-1 text-xs text-text-secondary\">\n {t(\n 'bigconsole.filters.editor.dataFieldHelp',\n 'Match a field in the parser output. Leave blank to use automatic matching.'\n )}\n </p>\n </div>\n\n {saveError && (\n <p role=\"alert\" className=\"mb-3 text-sm text-status-error-text\">\n {t(\n 'bigconsole.filters.editor.saveError',\n 'The filter could not be saved. Your changes are still here; try again.'\n )}\n </p>\n )}\n {/* Filter Type */}\n {!isEditing && (\n <div style={{ marginBottom: '16px' }}>\n <label\n style={{\n display: 'block',\n marginBottom: '8px',\n fontSize: '13px',\n fontWeight: 500,\n color: COLORS.textPrimary,\n }}\n >\n {t('bigconsole.filters.editor.field.type.label', 'Filter Type *')}\n </label>\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: '10px' }}>\n {FILTER_TYPES.map((ft) => (\n <button\n key={ft.value}\n onClick={() => setType(ft.value)}\n type=\"button\"\n style={{\n padding: '12px',\n textAlign: 'left',\n backgroundColor: type === ft.value ? COLORS.actionPrimaryBgSubtle : COLORS.bgSecondary,\n border: `2px solid ${type === ft.value ? COLORS.actionPrimaryBg : COLORS.borderDefault}`,\n borderRadius: '6px',\n cursor: 'pointer',\n transition: 'all 0.2s ease',\n minHeight: '60px',\n }}\n >\n <div style={{ fontWeight: 500, fontSize: '13px', color: COLORS.textPrimary }}>{ft.label}</div>\n <div\n style={{\n fontSize: '11px',\n color: COLORS.textSecondary,\n marginTop: '4px',\n lineHeight: '1.3',\n }}\n >\n {ft.description}\n </div>\n </button>\n ))}\n </div>\n </div>\n )}\n\n {/* Options (for CATEGORY type) */}\n {type === 'CATEGORY' && (\n <div style={{ marginBottom: '16px' }}>\n <label\n style={{\n display: 'block',\n marginBottom: '8px',\n fontSize: '13px',\n fontWeight: 500,\n color: COLORS.textPrimary,\n }}\n >\n {t('bigconsole.filters.editor.field.options.label', 'Options')}\n </label>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>\n {options.map((opt, index) => (\n <div key={index} style={{ display: 'flex', gap: '8px', alignItems: 'center' }}>\n <input\n type=\"text\"\n value={opt.value}\n onChange={(e) => handleOptionChange(index, 'value', e.target.value)}\n placeholder={t('bigconsole.filters.editor.field.options.valuePlaceholder', 'Value')}\n style={{\n flex: 1,\n padding: '8px 10px',\n border: `1px solid ${COLORS.borderDefault}`,\n borderRadius: '4px',\n fontSize: '13px',\n boxSizing: 'border-box',\n backgroundColor: COLORS.bgPrimary,\n color: COLORS.textPrimary,\n }}\n />\n <input\n type=\"text\"\n value={opt.label}\n onChange={(e) => handleOptionChange(index, 'label', e.target.value)}\n placeholder={t('bigconsole.filters.editor.field.options.labelPlaceholder', 'Label')}\n style={{\n flex: 1,\n padding: '8px 10px',\n border: `1px solid ${COLORS.borderDefault}`,\n borderRadius: '4px',\n fontSize: '13px',\n boxSizing: 'border-box',\n backgroundColor: COLORS.bgPrimary,\n color: COLORS.textPrimary,\n }}\n />\n {options.length > 1 && (\n <button\n type=\"button\"\n onClick={() => handleRemoveOption(index)}\n style={{\n padding: '6px 10px',\n backgroundColor: 'transparent',\n border: `1px solid ${COLORS.statusErrorText}`,\n borderRadius: '4px',\n cursor: 'pointer',\n color: COLORS.statusErrorText,\n fontSize: '12px',\n }}\n >\n {t('bigconsole.filters.editor.field.options.remove', 'Remove')}\n </button>\n )}\n </div>\n ))}\n <button\n type=\"button\"\n onClick={handleAddOption}\n style={{\n padding: '8px',\n backgroundColor: 'transparent',\n border: `1px dashed ${COLORS.borderDefault}`,\n borderRadius: '4px',\n cursor: 'pointer',\n color: COLORS.textSecondary,\n fontSize: '12px',\n }}\n >\n {t('bigconsole.filters.editor.field.options.add', '+ Add Option')}\n </button>\n </div>\n </div>\n )}\n\n {/* Placeholder */}\n {(type === 'TEXT_SEARCH' || type === 'CATEGORY') && (\n <div style={{ marginBottom: '16px' }}>\n <label\n style={{\n display: 'block',\n marginBottom: '8px',\n fontSize: '13px',\n fontWeight: 500,\n color: COLORS.textPrimary,\n }}\n >\n {t('bigconsole.filters.editor.field.placeholder.label', 'Placeholder Text')}\n </label>\n <input\n type=\"text\"\n value={placeholder}\n onChange={(e) => setPlaceholder(e.target.value)}\n placeholder={t('bigconsole.filters.editor.field.placeholder.placeholder', 'e.g., Select an option...')}\n style={{\n width: '100%',\n padding: '10px 12px',\n border: `1px solid ${COLORS.borderDefault}`,\n borderRadius: '6px',\n fontSize: '14px',\n boxSizing: 'border-box',\n backgroundColor: COLORS.bgPrimary,\n color: COLORS.textPrimary,\n }}\n />\n </div>\n )}\n\n {/* Required Toggle */}\n <div style={{ marginBottom: '16px' }}>\n <label\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n cursor: 'pointer',\n }}\n >\n <input\n type=\"checkbox\"\n checked={isRequired}\n onChange={(e) => setIsRequired(e.target.checked)}\n style={{ width: '16px', height: '16px' }}\n />\n <span style={{ fontSize: '13px', color: COLORS.textPrimary }}>\n {t('bigconsole.filters.editor.field.required.label', 'Required filter (must have a value)')}\n </span>\n </label>\n </div>\n </div>\n\n {/* Footer */}\n <div\n style={{\n padding: '16px 20px',\n borderTop: `1px solid ${COLORS.borderDefault}`,\n display: 'flex',\n justifyContent: 'flex-end',\n gap: '12px',\n backgroundColor: COLORS.bgPrimary,\n }}\n >\n <button\n type=\"button\"\n onClick={onClose}\n style={{\n padding: '10px 20px',\n backgroundColor: COLORS.bgPrimary,\n border: `1px solid ${COLORS.borderDefault}`,\n borderRadius: '6px',\n cursor: 'pointer',\n fontSize: '14px',\n color: COLORS.textSecondary,\n }}\n >\n {t('bigconsole.filters.editor.action.cancel', 'Cancel')}\n </button>\n <button\n type=\"button\"\n onClick={handleSave}\n disabled={!isValid || isSaving}\n style={{\n padding: '10px 20px',\n backgroundColor: isValid ? COLORS.actionPrimaryBg : COLORS.bgTertiary,\n color: isValid ? COLORS.actionPrimaryFg : COLORS.textTertiary,\n border: 'none',\n borderRadius: '6px',\n cursor: isValid ? 'pointer' : 'not-allowed',\n fontSize: '14px',\n fontWeight: 500,\n }}\n >\n {isEditing\n ? t('bigconsole.filters.editor.action.saveChanges', 'Save Changes')\n : t('bigconsole.filters.editor.action.add', 'Add Filter')}\n </button>\n </div>\n </div>\n </div>\n );\n}\n\nexport default FilterEditor;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GlobalFiltersBar.d.ts","sourceRoot":"","sources":["../../../../../src/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAA2C,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"GlobalFiltersBar.d.ts","sourceRoot":"","sources":["../../../../../src/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAA2C,MAAM,OAAO,CAAC;AAmChE,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC3D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,4BAA4B;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAMD,wBAAgB,gBAAgB,CAAC,EAC/B,WAAW,EACX,cAAc,EACd,WAAkB,EAClB,SAAc,EACd,aAAoB,EACpB,aAAoB,GACrB,EAAE,qBAAqB,qBAmZvB;AAED,eAAe,gBAAgB,CAAC"}
|