@fayz-ai/admin 0.61.0 → 0.63.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{CommandPalette-B5PMQFDG.js → CommandPalette-XDJJ5E3O.js} +3 -3
- package/dist/{CommandPalette-B5PMQFDG.js.map → CommandPalette-XDJJ5E3O.js.map} +1 -1
- package/dist/ConnectedBrandingSettings-43ZM3HCI.js +680 -0
- package/dist/ConnectedBrandingSettings-43ZM3HCI.js.map +1 -0
- package/dist/ConnectedCompanySettings-I4MALI2Q.js +197 -0
- package/dist/ConnectedCompanySettings-I4MALI2Q.js.map +1 -0
- package/dist/ConnectedModulesSettings-A2VJ5BMJ.js +563 -0
- package/dist/ConnectedModulesSettings-A2VJ5BMJ.js.map +1 -0
- package/dist/ConnectedSecuritySettings-25AHA4HJ.js +189 -0
- package/dist/ConnectedSecuritySettings-25AHA4HJ.js.map +1 -0
- package/dist/ConnectedUserProfile-E7USJRUE.js +424 -0
- package/dist/ConnectedUserProfile-E7USJRUE.js.map +1 -0
- package/dist/FieldRulesEditor-YGIPKI5T.js +129 -0
- package/dist/FieldRulesEditor-YGIPKI5T.js.map +1 -0
- package/dist/GettingStartedWidget-HMIJ3Y24.js +12 -0
- package/dist/GettingStartedWidget-HMIJ3Y24.js.map +1 -0
- package/dist/PermissionProfilesTab-3ZPRCHMZ.js +548 -0
- package/dist/PermissionProfilesTab-3ZPRCHMZ.js.map +1 -0
- package/dist/PersonTimeline-HQZT527S.js +3 -0
- package/dist/{PersonTimeline-X7JTPUWJ.js.map → PersonTimeline-HQZT527S.js.map} +1 -1
- package/dist/ProjectsSettings-7O2F27MD.js +5 -0
- package/dist/ProjectsSettings-7O2F27MD.js.map +1 -0
- package/dist/ScheduleEditor-54ELWR45.js +8 -0
- package/dist/{ScheduleEditor-L2UJXKMY.js.map → ScheduleEditor-54ELWR45.js.map} +1 -1
- package/dist/SeuSiteWidget-QLSUVC63.js +6 -0
- package/dist/SeuSiteWidget-QLSUVC63.js.map +1 -0
- package/dist/SubscriptionPage-5GE5HFJK.js +17 -0
- package/dist/{SubscriptionPage-IDVEFLZ5.js.map → SubscriptionPage-5GE5HFJK.js.map} +1 -1
- package/dist/TeamTab-6RAULFLW.js +502 -0
- package/dist/TeamTab-6RAULFLW.js.map +1 -0
- package/dist/TrialWidget-Z6CLUCU3.js +7 -0
- package/dist/TrialWidget-Z6CLUCU3.js.map +1 -0
- package/dist/app/AdminShell.d.ts.map +1 -1
- package/dist/app/admin-app.d.ts.map +1 -1
- package/dist/app/config.d.ts +14 -0
- package/dist/app/config.d.ts.map +1 -1
- package/dist/app/routing.d.ts +6 -0
- package/dist/app/routing.d.ts.map +1 -1
- package/dist/app/scaffold.d.ts.map +1 -1
- package/dist/billing/index.js +9 -4
- package/dist/chunk-2H46WDG5.js +53 -0
- package/dist/chunk-2H46WDG5.js.map +1 -0
- package/dist/chunk-3HLX7YB2.js +94 -0
- package/dist/chunk-3HLX7YB2.js.map +1 -0
- package/dist/chunk-3OUD4XBK.js +3 -0
- package/dist/chunk-3OUD4XBK.js.map +1 -0
- package/dist/{chunk-IXSY4GPK.js → chunk-5D5QLMOQ.js} +5 -3
- package/dist/chunk-5D5QLMOQ.js.map +1 -0
- package/dist/chunk-5WR62X2R.js +1081 -0
- package/dist/chunk-5WR62X2R.js.map +1 -0
- package/dist/{chunk-KPYRTOCK.js → chunk-6CQFGMEO.js} +4 -140
- package/dist/chunk-6CQFGMEO.js.map +1 -0
- package/dist/chunk-6MMSYC2I.js +116 -0
- package/dist/chunk-6MMSYC2I.js.map +1 -0
- package/dist/chunk-6QFOE3UD.js +1466 -0
- package/dist/chunk-6QFOE3UD.js.map +1 -0
- package/dist/chunk-6UUFVQ2E.js +283 -0
- package/dist/chunk-6UUFVQ2E.js.map +1 -0
- package/dist/chunk-7WNLL3F6.js +7889 -0
- package/dist/chunk-7WNLL3F6.js.map +1 -0
- package/dist/chunk-A74IHAQE.js +439 -0
- package/dist/chunk-A74IHAQE.js.map +1 -0
- package/dist/{chunk-JOBRLBIQ.js → chunk-AFA6IO23.js} +4 -3
- package/dist/chunk-AFA6IO23.js.map +1 -0
- package/dist/{chunk-P5UIGQFY.js → chunk-ALCSIN3Z.js} +5 -5
- package/dist/chunk-ALCSIN3Z.js.map +1 -0
- package/dist/chunk-AWM4AMBS.js +39 -0
- package/dist/chunk-AWM4AMBS.js.map +1 -0
- package/dist/{chunk-OQARLKZN.js → chunk-BG5Z6KLN.js} +6 -18
- package/dist/chunk-BG5Z6KLN.js.map +1 -0
- package/dist/chunk-DPNFZONC.js +19 -0
- package/dist/chunk-DPNFZONC.js.map +1 -0
- package/dist/chunk-DRCV643L.js +193 -0
- package/dist/chunk-DRCV643L.js.map +1 -0
- package/dist/chunk-E6DF3VR6.js +206 -0
- package/dist/chunk-E6DF3VR6.js.map +1 -0
- package/dist/chunk-ENHCVGXZ.js +120 -0
- package/dist/chunk-ENHCVGXZ.js.map +1 -0
- package/dist/chunk-FK6RHGI7.js +56 -0
- package/dist/chunk-FK6RHGI7.js.map +1 -0
- package/dist/chunk-G5HNA5QK.js +233 -0
- package/dist/chunk-G5HNA5QK.js.map +1 -0
- package/dist/chunk-HCFO4Z6A.js +53 -0
- package/dist/chunk-HCFO4Z6A.js.map +1 -0
- package/dist/chunk-JFIU6NQP.js +51 -0
- package/dist/chunk-JFIU6NQP.js.map +1 -0
- package/dist/chunk-JRZJBMOY.js +3 -0
- package/dist/chunk-JRZJBMOY.js.map +1 -0
- package/dist/{chunk-3YP7KW47.js → chunk-JVVOL4BB.js} +41 -512
- package/dist/chunk-JVVOL4BB.js.map +1 -0
- package/dist/chunk-KAQ3UIAA.js +415 -0
- package/dist/chunk-KAQ3UIAA.js.map +1 -0
- package/dist/{chunk-P6XUDT2P.js → chunk-KJELMULA.js} +4 -51
- package/dist/chunk-KJELMULA.js.map +1 -0
- package/dist/chunk-KLO7DKXX.js +1651 -0
- package/dist/chunk-KLO7DKXX.js.map +1 -0
- package/dist/chunk-M2CMDWUI.js +75 -0
- package/dist/chunk-M2CMDWUI.js.map +1 -0
- package/dist/chunk-PQ47MLTH.js +255 -0
- package/dist/chunk-PQ47MLTH.js.map +1 -0
- package/dist/{chunk-VX3WJLKK.js → chunk-QD7BMUDF.js} +17 -8
- package/dist/chunk-QD7BMUDF.js.map +1 -0
- package/dist/{chunk-E4MESMNR.js → chunk-QTSKCPSW.js} +7 -10
- package/dist/chunk-QTSKCPSW.js.map +1 -0
- package/dist/chunk-S56FQKPL.js +186 -0
- package/dist/chunk-S56FQKPL.js.map +1 -0
- package/dist/chunk-SGAFPNMA.js +75 -0
- package/dist/chunk-SGAFPNMA.js.map +1 -0
- package/dist/{chunk-OD7P4L3D.js → chunk-SOKCLVM4.js} +3 -3
- package/dist/{chunk-OD7P4L3D.js.map → chunk-SOKCLVM4.js.map} +1 -1
- package/dist/chunk-TL42NKTH.js +3 -0
- package/dist/chunk-TL42NKTH.js.map +1 -0
- package/dist/chunk-U6ZCO2PS.js +2964 -0
- package/dist/chunk-U6ZCO2PS.js.map +1 -0
- package/dist/chunk-VSXNROYH.js +16 -0
- package/dist/chunk-VSXNROYH.js.map +1 -0
- package/dist/chunk-WPFZCYZL.js +619 -0
- package/dist/chunk-WPFZCYZL.js.map +1 -0
- package/dist/chunk-XFTNIBDW.js +23 -0
- package/dist/chunk-XFTNIBDW.js.map +1 -0
- package/dist/chunk-Y66JDL6I.js +1020 -0
- package/dist/chunk-Y66JDL6I.js.map +1 -0
- package/dist/chunk-YEHIBPIX.js +137 -0
- package/dist/chunk-YEHIBPIX.js.map +1 -0
- package/dist/chunk-YKPPCV2Z.js +53 -0
- package/dist/chunk-YKPPCV2Z.js.map +1 -0
- package/dist/components/chat/markdown.d.ts.map +1 -1
- package/dist/components/plugins/PluginSettingsPanel.d.ts.map +1 -1
- package/dist/components/settings/SettingsPage.d.ts.map +1 -1
- package/dist/components/shared/ConnectionIndicator.d.ts.map +1 -1
- package/dist/connect-XKQJOWR7.js +18 -0
- package/dist/connect-XKQJOWR7.js.map +1 -0
- package/dist/crud/CrudDetailPage.d.ts.map +1 -1
- package/dist/crud/CrudListView.d.ts.map +1 -1
- package/dist/crud/CrudPage.d.ts.map +1 -1
- package/dist/crud/RelatedListTab.d.ts.map +1 -1
- package/dist/crud/archetypes/EntityLink.d.ts +1 -1
- package/dist/crud/archetypes/EntityLink.d.ts.map +1 -1
- package/dist/crud/record-chrome.d.ts.map +1 -1
- package/dist/entity-routes-PGU7EHAD.js +4 -0
- package/dist/{entity-routes-LXOBW5IB.js.map → entity-routes-PGU7EHAD.js.map} +1 -1
- package/dist/hooks/useModuleNavigation.d.ts.map +1 -1
- package/dist/impersonation/ImpersonateDialog.d.ts.map +1 -1
- package/dist/impersonation/session.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11922 -33564
- package/dist/index.js.map +1 -1
- package/dist/lib/connection.d.ts +14 -0
- package/dist/lib/connection.d.ts.map +1 -1
- package/dist/lib/entity-routes.d.ts.map +1 -1
- package/dist/org/index.js +4 -2
- package/dist/plugins/PluginRegistryManager.d.ts.map +1 -1
- package/dist/settings/MessageTemplateRow.d.ts.map +1 -1
- package/dist/timeline/PersonTimeline.d.ts.map +1 -1
- package/dist/timeline/TimelineList.d.ts.map +1 -1
- package/dist/units/UnitRailPage.d.ts.map +1 -1
- package/dist/units/useUnitFilter.d.ts.map +1 -1
- package/package.json +5 -5
- package/dist/PersonTimeline-X7JTPUWJ.js +0 -3
- package/dist/ScheduleEditor-L2UJXKMY.js +0 -6
- package/dist/SubscriptionPage-IDVEFLZ5.js +0 -8
- package/dist/chunk-3YP7KW47.js.map +0 -1
- package/dist/chunk-E4MESMNR.js.map +0 -1
- package/dist/chunk-IXSY4GPK.js.map +0 -1
- package/dist/chunk-JOBRLBIQ.js.map +0 -1
- package/dist/chunk-KPYRTOCK.js.map +0 -1
- package/dist/chunk-OQARLKZN.js.map +0 -1
- package/dist/chunk-P5UIGQFY.js.map +0 -1
- package/dist/chunk-P6XUDT2P.js.map +0 -1
- package/dist/chunk-VX3WJLKK.js.map +0 -1
- package/dist/entity-routes-LXOBW5IB.js +0 -4
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { useSettingsUnitScope, UnitScopePicker } from './chunk-2H46WDG5.js';
|
|
2
|
+
import { listFieldRules, fieldRuleReference, setFieldRule } from './chunk-FK6RHGI7.js';
|
|
3
|
+
import { toast } from './chunk-3OUD4XBK.js';
|
|
4
|
+
import './chunk-TL42NKTH.js';
|
|
5
|
+
import './chunk-5D5QLMOQ.js';
|
|
6
|
+
import { usePermissionsStore } from './chunk-UQ2NTFQC.js';
|
|
7
|
+
import './chunk-KJELMULA.js';
|
|
8
|
+
import './chunk-JRZJBMOY.js';
|
|
9
|
+
import { useOrganizationStore } from './chunk-YKPPCV2Z.js';
|
|
10
|
+
import * as React from 'react';
|
|
11
|
+
import { getAllEntities, tl } from '@fayz-ai/core';
|
|
12
|
+
import { usePublishPageInfo, Skeleton, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, Card, Checkbox, SegmentedControl } from '@fayz-ai/ui';
|
|
13
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
14
|
+
|
|
15
|
+
var MASKABLE_PERSON_FIELDS = [
|
|
16
|
+
["email", "E-mail", "E-mail"],
|
|
17
|
+
["phone", "Phone", "Telefone"],
|
|
18
|
+
["document_number", "Document (CPF)", "Documento (CPF)"]
|
|
19
|
+
];
|
|
20
|
+
function FieldRulesEditor({ mode, entityKey: fixedEntity }) {
|
|
21
|
+
const tenantId = useOrganizationStore((s) => s.currentOrg?.id);
|
|
22
|
+
const profiles = usePermissionsStore((s) => s.profiles);
|
|
23
|
+
const [rows, setRows] = React.useState(null);
|
|
24
|
+
const [context, setContext] = React.useState("main_form");
|
|
25
|
+
const roles = profiles.filter((p) => p.id !== "owner");
|
|
26
|
+
const [role, setRole] = React.useState("");
|
|
27
|
+
const activeRole = role || roles[0]?.id || "";
|
|
28
|
+
const entities = React.useMemo(
|
|
29
|
+
() => getAllEntities().filter((e) => e.fields?.length).sort((a, b) => Number(!a.entityKey.startsWith("person:")) - Number(!b.entityKey.startsWith("person:")) || a.labelPlural.localeCompare(b.labelPlural, "pt-BR")),
|
|
30
|
+
[]
|
|
31
|
+
);
|
|
32
|
+
const [entityKey, setEntityKey] = React.useState(fixedEntity ?? "");
|
|
33
|
+
const entity = entities.find((e) => e.entityKey === entityKey) ?? entities.find((e) => e.entityKey === "person:customer") ?? entities[0];
|
|
34
|
+
const { unitId } = useSettingsUnitScope();
|
|
35
|
+
const reload = React.useCallback(() => {
|
|
36
|
+
if (!tenantId) return;
|
|
37
|
+
listFieldRules(tenantId, unitId).then(setRows).catch((e) => {
|
|
38
|
+
setRows([]);
|
|
39
|
+
toast.error(String(e?.message ?? e));
|
|
40
|
+
});
|
|
41
|
+
}, [tenantId, unitId]);
|
|
42
|
+
React.useEffect(reload, [reload]);
|
|
43
|
+
usePublishPageInfo(mode === "hidden" ? tl(
|
|
44
|
+
"Fields hidden here come back blank for this profile everywhere, including exports and the assistant.",
|
|
45
|
+
"O campo oculto aqui chega em branco para este perfil em todo lugar, inclusive exporta\xE7\xE3o e assistente."
|
|
46
|
+
) : tl(
|
|
47
|
+
"Which fields each form hides, shows or requires, for everyone.",
|
|
48
|
+
"Quais campos cada formul\xE1rio oculta, exibe ou exige, para todo mundo."
|
|
49
|
+
));
|
|
50
|
+
if (!tenantId || rows === null) return /* @__PURE__ */ jsx(Skeleton, { className: "h-64 w-full rounded-card" });
|
|
51
|
+
const write = async (rule, state) => {
|
|
52
|
+
try {
|
|
53
|
+
await setFieldRule(tenantId, rule, state, unitId);
|
|
54
|
+
reload();
|
|
55
|
+
} catch (e) {
|
|
56
|
+
toast.error(tl("Not saved", "N\xE3o salvou"), { description: e?.message });
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
if (mode === "hidden") {
|
|
60
|
+
const hidden = new Set(rows.filter((r) => r.context === "person" && r.reference === "person" && r.role_key === activeRole && r.state === "hidden").map((r) => r.field_key));
|
|
61
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
62
|
+
/* @__PURE__ */ jsx(UnitScopePicker, {}),
|
|
63
|
+
/* @__PURE__ */ jsxs(Select, { value: activeRole, onValueChange: setRole, children: [
|
|
64
|
+
/* @__PURE__ */ jsx(SelectTrigger, { className: "h-9 w-auto min-w-48", "aria-label": tl("Profile", "Perfil"), children: /* @__PURE__ */ jsx(SelectValue, {}) }),
|
|
65
|
+
/* @__PURE__ */ jsx(SelectContent, { children: roles.map((p) => /* @__PURE__ */ jsx(SelectItem, { value: p.id, children: p.name }, p.id)) })
|
|
66
|
+
] }),
|
|
67
|
+
/* @__PURE__ */ jsx(Card, { className: "divide-y", children: MASKABLE_PERSON_FIELDS.map(([key, en, pt]) => /* @__PURE__ */ jsxs("label", { className: "flex items-center justify-between gap-4 px-4 py-3 text-sm", children: [
|
|
68
|
+
/* @__PURE__ */ jsx("span", { children: tl(en, pt) }),
|
|
69
|
+
/* @__PURE__ */ jsx(
|
|
70
|
+
Checkbox,
|
|
71
|
+
{
|
|
72
|
+
checked: hidden.has(key),
|
|
73
|
+
onChange: (checked) => write({ context: "person", reference: "person", field_key: key, role_key: activeRole }, checked ? "hidden" : null)
|
|
74
|
+
}
|
|
75
|
+
)
|
|
76
|
+
] }, key)) })
|
|
77
|
+
] });
|
|
78
|
+
}
|
|
79
|
+
if (!entity) return /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: tl("No registry to configure yet.", "Nenhum cadastro para configurar ainda.") });
|
|
80
|
+
const reference = fieldRuleReference(entity.entityKey);
|
|
81
|
+
const stateOf = (fieldKey) => {
|
|
82
|
+
const row = rows.find((r) => r.context === context && r.reference === reference && r.role_key === null && r.field_key === fieldKey);
|
|
83
|
+
return row?.state ?? "default";
|
|
84
|
+
};
|
|
85
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
86
|
+
/* @__PURE__ */ jsx(UnitScopePicker, {}),
|
|
87
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-3", children: [
|
|
88
|
+
!fixedEntity && /* @__PURE__ */ jsxs(Select, { value: entity.entityKey, onValueChange: setEntityKey, children: [
|
|
89
|
+
/* @__PURE__ */ jsx(SelectTrigger, { className: "h-9 w-auto min-w-48", "aria-label": tl("Registry", "Cadastro"), children: /* @__PURE__ */ jsx(SelectValue, {}) }),
|
|
90
|
+
/* @__PURE__ */ jsx(SelectContent, { children: entities.map((e) => /* @__PURE__ */ jsx(SelectItem, { value: e.entityKey, children: e.labelPlural }, e.entityKey)) })
|
|
91
|
+
] }),
|
|
92
|
+
/* @__PURE__ */ jsx(
|
|
93
|
+
SegmentedControl,
|
|
94
|
+
{
|
|
95
|
+
value: context,
|
|
96
|
+
onChange: (v) => setContext(v),
|
|
97
|
+
options: [
|
|
98
|
+
{ value: "main_form", label: tl("Main form", "Cadastro principal") },
|
|
99
|
+
{ value: "quick_search", label: tl("Quick add", "Busca r\xE1pida") }
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
)
|
|
103
|
+
] }),
|
|
104
|
+
/* @__PURE__ */ jsx(Card, { className: "divide-y", children: entity.fields.filter((f) => f.showInForm !== false && f.key !== "id").map((field) => /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-4 px-4 py-2.5", children: [
|
|
105
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 truncate text-sm", children: field.label }),
|
|
106
|
+
/* @__PURE__ */ jsx(
|
|
107
|
+
SegmentedControl,
|
|
108
|
+
{
|
|
109
|
+
size: "sm",
|
|
110
|
+
value: stateOf(field.key),
|
|
111
|
+
onChange: (v) => write(
|
|
112
|
+
{ context, reference, field_key: field.key, role_key: null },
|
|
113
|
+
v === "default" ? null : v
|
|
114
|
+
),
|
|
115
|
+
options: [
|
|
116
|
+
{ value: "default", label: unitId ? tl("Network", "Da rede") : tl("Default", "Padr\xE3o") },
|
|
117
|
+
{ value: "hidden", label: tl("Hide", "Ocultar") },
|
|
118
|
+
{ value: "visible", label: tl("Show", "Exibir") },
|
|
119
|
+
{ value: "required", label: tl("Required", "Obrigat\xF3rio") }
|
|
120
|
+
]
|
|
121
|
+
}
|
|
122
|
+
)
|
|
123
|
+
] }, field.key)) })
|
|
124
|
+
] });
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export { FieldRulesEditor };
|
|
128
|
+
//# sourceMappingURL=FieldRulesEditor-YGIPKI5T.js.map
|
|
129
|
+
//# sourceMappingURL=FieldRulesEditor-YGIPKI5T.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/settings/FieldRulesEditor.tsx"],"names":[],"mappings":"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","file":"FieldRulesEditor-YGIPKI5T.js","sourcesContent":["import * as React from 'react'\nimport { tl, getAllEntities } from '@fayz-ai/core'\nimport { Card, SegmentedControl, Skeleton, usePublishPageInfo, Checkbox, Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@fayz-ai/ui'\nimport { useOrganizationStore } from '../../stores/organization.store'\nimport { usePermissionsStore } from '../../permissions/store'\nimport {\n fieldRuleReference, listFieldRules, setFieldRule,\n type FieldRuleContext, type FieldRuleRow, type FieldRuleState,\n} from '../../lib/field-rules-db'\nimport { toast } from '../notifications/ToastProvider'\nimport { UnitScopePicker, useSettingsUnitScope } from '../../settings/UnitScopePicker'\n\n// Fields the database masks for people (v_people); \"Ocultação de dados\" writes\n// these, by column name, so the hiding holds on the server and not only on screen.\nconst MASKABLE_PERSON_FIELDS: Array<[string, string, string]> = [\n ['email', 'E-mail', 'E-mail'],\n ['phone', 'Phone', 'Telefone'],\n ['document_number', 'Document (CPF)', 'Documento (CPF)'],\n]\n\ntype Choice = 'default' | FieldRuleState\n\n/**\n * The account's field rules in one store (`public.field_rules`), as V1 splits\n * them: \"Campos obrigatórios\" (per form, everyone) and \"Ocultação de dados\"\n * (per access profile).\n */\nexport function FieldRulesEditor({ mode, entityKey: fixedEntity }: {\n mode: 'required' | 'hidden'\n /** Opened from a registry's own settings line: that registry, no picker. */\n entityKey?: string\n}) {\n const tenantId = useOrganizationStore((s) => s.currentOrg?.id)\n const profiles = usePermissionsStore((s) => s.profiles)\n const [rows, setRows] = React.useState<FieldRuleRow[] | null>(null)\n const [context, setContext] = React.useState<FieldRuleContext>('main_form')\n const roles = profiles.filter((p) => p.id !== 'owner')\n const [role, setRole] = React.useState<string>('')\n const activeRole = role || roles[0]?.id || ''\n\n // Every CRUD entity the app registered (createCrudPage), people first.\n const entities = React.useMemo(\n () => getAllEntities()\n .filter((e) => e.fields?.length)\n .sort((a, b) => Number(!a.entityKey.startsWith('person:')) - Number(!b.entityKey.startsWith('person:'))\n || a.labelPlural.localeCompare(b.labelPlural, 'pt-BR')),\n [],\n )\n const [entityKey, setEntityKey] = React.useState<string>(fixedEntity ?? '')\n const entity = entities.find((e) => e.entityKey === entityKey) ?? entities.find((e) => e.entityKey === 'person:customer') ?? entities[0]\n\n const { unitId } = useSettingsUnitScope()\n const reload = React.useCallback(() => {\n if (!tenantId) return\n listFieldRules(tenantId, unitId).then(setRows).catch((e) => { setRows([]); toast.error(String(e?.message ?? e)) })\n }, [tenantId, unitId])\n React.useEffect(reload, [reload])\n\n usePublishPageInfo(mode === 'hidden'\n ? tl('Fields hidden here come back blank for this profile everywhere, including exports and the assistant.',\n 'O campo oculto aqui chega em branco para este perfil em todo lugar, inclusive exportação e assistente.')\n : tl('Which fields each form hides, shows or requires, for everyone.',\n 'Quais campos cada formulário oculta, exibe ou exige, para todo mundo.'))\n\n if (!tenantId || rows === null) return <Skeleton className=\"h-64 w-full rounded-card\" />\n\n const write = async (rule: Parameters<typeof setFieldRule>[1], state: FieldRuleState | null) => {\n try {\n await setFieldRule(tenantId, rule, state, unitId)\n reload()\n } catch (e: any) {\n toast.error(tl('Not saved', 'Não salvou'), { description: e?.message })\n }\n }\n\n if (mode === 'hidden') {\n const hidden = new Set(rows.filter((r) => r.context === 'person' && r.reference === 'person' && r.role_key === activeRole && r.state === 'hidden').map((r) => r.field_key))\n return (\n <div className=\"space-y-4\">\n <UnitScopePicker />\n <Select value={activeRole} onValueChange={setRole}>\n <SelectTrigger className=\"h-9 w-auto min-w-48\" aria-label={tl('Profile', 'Perfil')}><SelectValue /></SelectTrigger>\n <SelectContent>\n {roles.map((p) => <SelectItem key={p.id} value={p.id}>{p.name}</SelectItem>)}\n </SelectContent>\n </Select>\n <Card className=\"divide-y\">\n {MASKABLE_PERSON_FIELDS.map(([key, en, pt]) => (\n <label key={key} className=\"flex items-center justify-between gap-4 px-4 py-3 text-sm\">\n <span>{tl(en, pt)}</span>\n <Checkbox checked={hidden.has(key)}\n onChange={(checked) => write({ context: 'person', reference: 'person', field_key: key, role_key: activeRole }, checked ? 'hidden' : null)} />\n </label>\n ))}\n </Card>\n </div>\n )\n }\n\n if (!entity) return <p className=\"text-sm text-muted-foreground\">{tl('No registry to configure yet.', 'Nenhum cadastro para configurar ainda.')}</p>\n const reference = fieldRuleReference(entity.entityKey)\n const stateOf = (fieldKey: string): Choice => {\n const row = rows.find((r) => r.context === context && r.reference === reference && r.role_key === null && r.field_key === fieldKey)\n return row?.state ?? 'default'\n }\n\n return (\n <div className=\"space-y-4\">\n <UnitScopePicker />\n <div className=\"flex flex-wrap items-center gap-3\">\n {!fixedEntity && (\n <Select value={entity.entityKey} onValueChange={setEntityKey}>\n <SelectTrigger className=\"h-9 w-auto min-w-48\" aria-label={tl('Registry', 'Cadastro')}><SelectValue /></SelectTrigger>\n <SelectContent>\n {entities.map((e) => <SelectItem key={e.entityKey} value={e.entityKey}>{e.labelPlural}</SelectItem>)}\n </SelectContent>\n </Select>\n )}\n <SegmentedControl\n value={context}\n onChange={(v) => setContext(v as FieldRuleContext)}\n options={[\n { value: 'main_form', label: tl('Main form', 'Cadastro principal') },\n { value: 'quick_search', label: tl('Quick add', 'Busca rápida') },\n ]}\n />\n </div>\n <Card className=\"divide-y\">\n {entity.fields.filter((f) => f.showInForm !== false && f.key !== 'id').map((field) => (\n <div key={field.key} className=\"flex items-center justify-between gap-4 px-4 py-2.5\">\n <span className=\"min-w-0 truncate text-sm\">{field.label}</span>\n <SegmentedControl\n size=\"sm\"\n value={stateOf(field.key)}\n onChange={(v) => write(\n { context, reference, field_key: field.key, role_key: null },\n v === 'default' ? null : (v as FieldRuleState),\n )}\n options={[\n { value: 'default', label: unitId ? tl('Network', 'Da rede') : tl('Default', 'Padrão') },\n { value: 'hidden', label: tl('Hide', 'Ocultar') },\n { value: 'visible', label: tl('Show', 'Exibir') },\n { value: 'required', label: tl('Required', 'Obrigatório') },\n ]}\n />\n </div>\n ))}\n </Card>\n </div>\n )\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { GettingStartedWidget } from './chunk-Y66JDL6I.js';
|
|
2
|
+
import './chunk-WPFZCYZL.js';
|
|
3
|
+
import './chunk-KLO7DKXX.js';
|
|
4
|
+
import './chunk-TL42NKTH.js';
|
|
5
|
+
import './chunk-5D5QLMOQ.js';
|
|
6
|
+
import './chunk-UQ2NTFQC.js';
|
|
7
|
+
import './chunk-KJELMULA.js';
|
|
8
|
+
import './chunk-JRZJBMOY.js';
|
|
9
|
+
import './chunk-YKPPCV2Z.js';
|
|
10
|
+
import './chunk-QD7BMUDF.js';
|
|
11
|
+
//# sourceMappingURL=GettingStartedWidget-HMIJ3Y24.js.map
|
|
12
|
+
//# sourceMappingURL=GettingStartedWidget-HMIJ3Y24.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"GettingStartedWidget-HMIJ3Y24.js"}
|