@webiny/app-headless-cms-common 6.3.0 → 6.4.0-beta.1
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/Fields/ErrorBoundary.js +29 -34
- package/Fields/ErrorBoundary.js.map +1 -1
- package/Fields/FieldElement.js +38 -61
- package/Fields/FieldElement.js.map +1 -1
- package/Fields/FieldElementError.js +13 -22
- package/Fields/FieldElementError.js.map +1 -1
- package/Fields/FieldRulesProvider.js +11 -17
- package/Fields/FieldRulesProvider.js.map +1 -1
- package/Fields/Fields.js +76 -139
- package/Fields/Fields.js.map +1 -1
- package/Fields/Label.js +7 -7
- package/Fields/Label.js.map +1 -1
- package/Fields/LayoutDescriptorCell.js +33 -40
- package/Fields/LayoutDescriptorCell.js.map +1 -1
- package/Fields/evaluateExpression.js +54 -94
- package/Fields/evaluateExpression.js.map +1 -1
- package/Fields/fieldOptions.js +56 -104
- package/Fields/fieldOptions.js.map +1 -1
- package/Fields/index.js +0 -2
- package/Fields/layoutFieldRenderers/AlertFieldRenderer.js +7 -10
- package/Fields/layoutFieldRenderers/AlertFieldRenderer.js.map +1 -1
- package/Fields/layoutFieldRenderers/SeparatorFieldRenderer.js +12 -15
- package/Fields/layoutFieldRenderers/SeparatorFieldRenderer.js.map +1 -1
- package/Fields/layoutFieldRenderers/TabsFieldRenderer.js +52 -63
- package/Fields/layoutFieldRenderers/TabsFieldRenderer.js.map +1 -1
- package/Fields/operatorOptions.js +115 -87
- package/Fields/operatorOptions.js.map +1 -1
- package/Fields/useBind.js +101 -107
- package/Fields/useBind.js.map +1 -1
- package/Fields/useFieldRules.js +79 -133
- package/Fields/useFieldRules.js.map +1 -1
- package/Fields/useRenderPlugins.js +3 -2
- package/Fields/useRenderPlugins.js.map +1 -1
- package/ModelFieldProvider/CanEditField.js +6 -9
- package/ModelFieldProvider/CanEditField.js.map +1 -1
- package/ModelFieldProvider/ModelFieldContext.js +15 -22
- package/ModelFieldProvider/ModelFieldContext.js.map +1 -1
- package/ModelFieldProvider/index.js +0 -2
- package/ModelFieldProvider/useModelField.js +15 -21
- package/ModelFieldProvider/useModelField.js.map +1 -1
- package/ModelProvider/ModelContext.js +11 -15
- package/ModelProvider/ModelContext.js.map +1 -1
- package/ModelProvider/index.js +0 -2
- package/ModelProvider/useModel.js +7 -11
- package/ModelProvider/useModel.js.map +1 -1
- package/constants.js +2 -1
- package/constants.js.map +1 -1
- package/createFieldsList.js +27 -49
- package/createFieldsList.js.map +1 -1
- package/createValidationContainer.js +13 -20
- package/createValidationContainer.js.map +1 -1
- package/createValidators.js +42 -47
- package/createValidators.js.map +1 -1
- package/entries.graphql.d.ts +11 -0
- package/entries.graphql.js +74 -164
- package/entries.graphql.js.map +1 -1
- package/exports/admin/cms/model.js +0 -2
- package/exports/admin/cms.d.ts +1 -1
- package/exports/admin/cms.js +0 -3
- package/getModelTitleFieldId.js +4 -5
- package/getModelTitleFieldId.js.map +1 -1
- package/index.js +0 -2
- package/normalizeIcon.js +8 -7
- package/normalizeIcon.js.map +1 -1
- package/package.json +11 -13
- package/prepareFormData.js +39 -61
- package/prepareFormData.js.map +1 -1
- package/types/index.d.ts +2 -0
- package/types/index.js +1 -41
- package/types/model.js +4 -27
- package/types/model.js.map +1 -1
- package/types/shared.js +0 -3
- package/types/validation.js +0 -3
- package/Fields/index.js.map +0 -1
- package/ModelFieldProvider/index.js.map +0 -1
- package/ModelProvider/index.js.map +0 -1
- package/exports/admin/cms/model.js.map +0 -1
- package/exports/admin/cms.js.map +0 -1
- package/index.js.map +0 -1
- package/types/index.js.map +0 -1
- package/types/shared.js.map +0 -1
- package/types/validation.js.map +0 -1
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
import
|
|
1
|
+
import react from "react";
|
|
2
2
|
import { Grid, Separator, Text } from "@webiny/admin-ui";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
className: "text-neutral-strong mt-sm"
|
|
15
|
-
}, field.description));
|
|
16
|
-
};
|
|
3
|
+
const SeparatorFieldRenderer = ({ field })=>/*#__PURE__*/ react.createElement(Grid.Column, {
|
|
4
|
+
span: 12
|
|
5
|
+
}, /*#__PURE__*/ react.createElement(Separator, {
|
|
6
|
+
variant: "accent",
|
|
7
|
+
labelPosition: "start"
|
|
8
|
+
}, field.label), field.description && /*#__PURE__*/ react.createElement(Text, {
|
|
9
|
+
as: "div",
|
|
10
|
+
size: "sm",
|
|
11
|
+
className: "text-neutral-strong mt-sm"
|
|
12
|
+
}, field.description));
|
|
13
|
+
export { SeparatorFieldRenderer };
|
|
17
14
|
|
|
18
15
|
//# sourceMappingURL=SeparatorFieldRenderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Fields/layoutFieldRenderers/SeparatorFieldRenderer.js","sources":["../../../src/Fields/layoutFieldRenderers/SeparatorFieldRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { Grid, Separator, Text } from \"@webiny/admin-ui\";\nimport type { CmsSeparatorLayoutField } from \"~/types/model.js\";\n\ninterface SeparatorFieldRendererProps {\n field: CmsSeparatorLayoutField;\n}\n\nexport const SeparatorFieldRenderer = ({ field }: SeparatorFieldRendererProps) => {\n return (\n <Grid.Column span={12}>\n <Separator variant={\"accent\"} labelPosition={\"start\"}>\n {field.label}\n </Separator>\n {field.description && (\n <Text as={\"div\"} size={\"sm\"} className={\"text-neutral-strong mt-sm\"}>\n {field.description}\n </Text>\n )}\n </Grid.Column>\n );\n};\n"],"names":["SeparatorFieldRenderer","field","Grid","Separator","Text"],"mappings":";;AAQO,MAAMA,yBAAyB,CAAC,EAAEC,KAAK,EAA+B,GAClE,WAAP,GACI,oBAACC,KAAK,MAAM;QAAC,MAAM;qBACf,oBAACC,WAASA;QAAC,SAAS;QAAU,eAAe;OACxCF,MAAM,KAAK,GAEfA,MAAM,WAAW,IAAI,WAAJ,GACd,oBAACG,MAAIA;QAAC,IAAI;QAAO,MAAM;QAAM,WAAW;OACnCH,MAAM,WAAW"}
|
|
@@ -1,72 +1,61 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { FormComponentDescription, FormComponentLabel, Grid, Tabs } from "@webiny/admin-ui";
|
|
3
3
|
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
4
4
|
import { normalizeIcon } from "../../normalizeIcon.js";
|
|
5
5
|
import { Fields } from "../index.js";
|
|
6
6
|
import { FieldRulesProvider } from "../FieldRulesProvider.js";
|
|
7
7
|
import { useFieldEffectiveRules } from "../useFieldRules.js";
|
|
8
|
-
const TabPanel = ({
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
fields: fields,
|
|
31
|
-
layout: tab.layout,
|
|
32
|
-
contentModel: contentModel,
|
|
33
|
-
gridClassName: gridClassName
|
|
34
|
-
}))
|
|
35
|
-
});
|
|
8
|
+
const TabPanel = ({ tab, Bind, fields, contentModel, gridClassName })=>{
|
|
9
|
+
const rules = useFieldEffectiveRules(tab);
|
|
10
|
+
const icon = normalizeIcon(tab.icon);
|
|
11
|
+
return /*#__PURE__*/ react.createElement(Tabs.Tab, {
|
|
12
|
+
disabled: rules.disabled,
|
|
13
|
+
visible: rules.canView && !rules.hidden,
|
|
14
|
+
value: tab.id,
|
|
15
|
+
trigger: tab.label,
|
|
16
|
+
icon: icon ? /*#__PURE__*/ react.createElement(FontAwesomeIcon, {
|
|
17
|
+
icon: icon,
|
|
18
|
+
size: "sm"
|
|
19
|
+
}) : void 0,
|
|
20
|
+
content: /*#__PURE__*/ react.createElement(FieldRulesProvider, {
|
|
21
|
+
rules: rules
|
|
22
|
+
}, /*#__PURE__*/ react.createElement(Fields, {
|
|
23
|
+
Bind: Bind,
|
|
24
|
+
fields: fields,
|
|
25
|
+
layout: tab.layout,
|
|
26
|
+
contentModel: contentModel,
|
|
27
|
+
gridClassName: gridClassName
|
|
28
|
+
}))
|
|
29
|
+
});
|
|
36
30
|
};
|
|
37
|
-
const tabsWrapperClassName =
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
size: "md",
|
|
65
|
-
spacing: "md",
|
|
66
|
-
separator: true,
|
|
67
|
-
tabs: tabElements,
|
|
68
|
-
defaultValue: firstTab?.id
|
|
69
|
-
})));
|
|
31
|
+
const tabsWrapperClassName = "bg-white! opacity-100! border-neutral-muted text-neutral-strong fill-neutral-xstrong w-full border-sm rounded-md";
|
|
32
|
+
const TabsFieldRenderer = ({ field, Bind, fields, contentModel, gridClassName })=>{
|
|
33
|
+
const tabElements = field.tabs.map((tab)=>/*#__PURE__*/ react.createElement(TabPanel, {
|
|
34
|
+
key: tab.id,
|
|
35
|
+
tab: tab,
|
|
36
|
+
Bind: Bind,
|
|
37
|
+
fields: fields,
|
|
38
|
+
contentModel: contentModel,
|
|
39
|
+
gridClassName: gridClassName
|
|
40
|
+
}));
|
|
41
|
+
const firstTab = field.tabs[0];
|
|
42
|
+
return /*#__PURE__*/ react.createElement(Grid.Column, {
|
|
43
|
+
span: 12
|
|
44
|
+
}, field.label ? /*#__PURE__*/ react.createElement(FormComponentLabel, {
|
|
45
|
+
text: field.label,
|
|
46
|
+
hint: field.help
|
|
47
|
+
}) : null, field.description ? /*#__PURE__*/ react.createElement(FormComponentDescription, {
|
|
48
|
+
text: field.description
|
|
49
|
+
}) : null, /*#__PURE__*/ react.createElement("div", {
|
|
50
|
+
className: tabsWrapperClassName
|
|
51
|
+
}, /*#__PURE__*/ react.createElement(Tabs, {
|
|
52
|
+
size: "md",
|
|
53
|
+
spacing: "md",
|
|
54
|
+
separator: true,
|
|
55
|
+
tabs: tabElements,
|
|
56
|
+
defaultValue: firstTab?.id
|
|
57
|
+
})));
|
|
70
58
|
};
|
|
59
|
+
export { TabsFieldRenderer };
|
|
71
60
|
|
|
72
61
|
//# sourceMappingURL=TabsFieldRenderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Fields/layoutFieldRenderers/TabsFieldRenderer.js","sources":["../../../src/Fields/layoutFieldRenderers/TabsFieldRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { Grid, FormComponentLabel, FormComponentDescription, Tabs } from \"@webiny/admin-ui\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport type { CmsTabLayoutField, CmsTabLayoutTab } from \"~/types/model.js\";\nimport type { BindComponent, CmsEditorContentModel, CmsModelField } from \"~/types/index.js\";\nimport { normalizeIcon } from \"~/normalizeIcon.js\";\nimport { Fields } from \"~/Fields/index.js\";\nimport { FieldRulesProvider } from \"~/Fields/FieldRulesProvider.js\";\nimport { useFieldEffectiveRules } from \"~/Fields/useFieldRules.js\";\n\ninterface TabsFieldRendererProps {\n field: CmsTabLayoutField;\n Bind: BindComponent;\n fields: CmsModelField[];\n contentModel: CmsEditorContentModel;\n gridClassName?: string;\n}\n\ninterface TabPanelProps {\n tab: CmsTabLayoutTab;\n Bind: BindComponent;\n fields: CmsModelField[];\n contentModel: CmsEditorContentModel;\n gridClassName?: string;\n}\n\nconst TabPanel = ({ tab, Bind, fields, contentModel, gridClassName }: TabPanelProps) => {\n const rules = useFieldEffectiveRules(tab);\n\n const icon = normalizeIcon(tab.icon);\n\n return (\n <Tabs.Tab\n disabled={rules.disabled}\n visible={rules.canView && !rules.hidden}\n value={tab.id}\n trigger={tab.label}\n icon={icon ? <FontAwesomeIcon icon={icon} size={\"sm\"} /> : undefined}\n content={\n <FieldRulesProvider rules={rules}>\n <Fields\n Bind={Bind}\n fields={fields}\n layout={tab.layout}\n contentModel={contentModel}\n gridClassName={gridClassName}\n />\n </FieldRulesProvider>\n }\n />\n );\n};\n\nconst tabsWrapperClassName = [\n \"bg-white!\",\n \"opacity-100!\",\n \"border-neutral-muted\",\n \"text-neutral-strong\",\n \"fill-neutral-xstrong\",\n \"w-full\",\n \"border-sm\",\n \"rounded-md\"\n].join(\" \");\n\nexport const TabsFieldRenderer = ({\n field,\n Bind,\n fields,\n contentModel,\n gridClassName\n}: TabsFieldRendererProps) => {\n const tabElements = field.tabs.map(tab => (\n <TabPanel\n key={tab.id}\n tab={tab}\n Bind={Bind}\n fields={fields}\n contentModel={contentModel}\n gridClassName={gridClassName}\n />\n ));\n\n const firstTab = field.tabs[0];\n\n return (\n <Grid.Column span={12}>\n {field.label ? <FormComponentLabel text={field.label} hint={field.help} /> : null}\n {field.description ? <FormComponentDescription text={field.description} /> : null}\n <div className={tabsWrapperClassName}>\n <Tabs\n size=\"md\"\n spacing=\"md\"\n separator={true}\n tabs={tabElements}\n defaultValue={firstTab?.id}\n />\n </div>\n </Grid.Column>\n );\n};\n"],"names":["TabPanel","tab","Bind","fields","contentModel","gridClassName","rules","useFieldEffectiveRules","icon","normalizeIcon","Tabs","FontAwesomeIcon","undefined","FieldRulesProvider","Fields","tabsWrapperClassName","TabsFieldRenderer","field","tabElements","firstTab","Grid","FormComponentLabel","FormComponentDescription"],"mappings":";;;;;;;AA0BA,MAAMA,WAAW,CAAC,EAAEC,GAAG,EAAEC,IAAI,EAAEC,MAAM,EAAEC,YAAY,EAAEC,aAAa,EAAiB;IAC/E,MAAMC,QAAQC,uBAAuBN;IAErC,MAAMO,OAAOC,cAAcR,IAAI,IAAI;IAEnC,OAAO,WAAP,GACI,oBAACS,KAAK,GAAG;QACL,UAAUJ,MAAM,QAAQ;QACxB,SAASA,MAAM,OAAO,IAAI,CAACA,MAAM,MAAM;QACvC,OAAOL,IAAI,EAAE;QACb,SAASA,IAAI,KAAK;QAClB,MAAMO,OAAO,WAAPA,GAAO,oBAACG,iBAAeA;YAAC,MAAMH;YAAM,MAAM;aAAWI;QAC3D,uBACI,oBAACC,oBAAkBA;YAAC,OAAOP;yBACvB,oBAACQ,QAAMA;YACH,MAAMZ;YACN,QAAQC;YACR,QAAQF,IAAI,MAAM;YAClB,cAAcG;YACd,eAAeC;;;AAMvC;AAEA,MAAMU,uBAAuB;AAWtB,MAAMC,oBAAoB,CAAC,EAC9BC,KAAK,EACLf,IAAI,EACJC,MAAM,EACNC,YAAY,EACZC,aAAa,EACQ;IACrB,MAAMa,cAAcD,MAAM,IAAI,CAAC,GAAG,CAAChB,CAAAA,MAAAA,WAAAA,GAC/B,oBAACD,UAAQA;YACL,KAAKC,IAAI,EAAE;YACX,KAAKA;YACL,MAAMC;YACN,QAAQC;YACR,cAAcC;YACd,eAAeC;;IAIvB,MAAMc,WAAWF,MAAM,IAAI,CAAC,EAAE;IAE9B,OAAO,WAAP,GACI,oBAACG,KAAK,MAAM;QAAC,MAAM;OACdH,MAAM,KAAK,GAAG,WAAH,GAAG,oBAACI,oBAAkBA;QAAC,MAAMJ,MAAM,KAAK;QAAE,MAAMA,MAAM,IAAI;SAAO,MAC5EA,MAAM,WAAW,GAAG,WAAH,GAAG,oBAACK,0BAAwBA;QAAC,MAAML,MAAM,WAAW;SAAO,oBAC7E,oBAAC;QAAI,WAAWF;qBACZ,oBAACL,MAAIA;QACD,MAAK;QACL,SAAQ;QACR,WAAW;QACX,MAAMQ;QACN,cAAcC,UAAU;;AAK5C"}
|
|
@@ -1,92 +1,120 @@
|
|
|
1
|
-
const NUMERIC_OPERATORS = [
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
},
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
},
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
},
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
1
|
+
const NUMERIC_OPERATORS = [
|
|
2
|
+
{
|
|
3
|
+
value: "==",
|
|
4
|
+
label: "Equals"
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
value: "!=",
|
|
8
|
+
label: "Not equals"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
value: ">",
|
|
12
|
+
label: "Greater than"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
value: "<",
|
|
16
|
+
label: "Less than"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
value: ">=",
|
|
20
|
+
label: "Greater or equal"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
value: "<=",
|
|
24
|
+
label: "Less or equal"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
value: "isEmpty",
|
|
28
|
+
label: "Is empty"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
value: "isNotEmpty",
|
|
32
|
+
label: "Is not empty"
|
|
33
|
+
}
|
|
34
|
+
];
|
|
35
|
+
const TEXT_OPERATORS = [
|
|
36
|
+
{
|
|
37
|
+
value: "==",
|
|
38
|
+
label: "Equals"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
value: "!=",
|
|
42
|
+
label: "Not equals"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
value: "contains",
|
|
46
|
+
label: "Contains"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
value: "startsWith",
|
|
50
|
+
label: "Starts with"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
value: "endsWith",
|
|
54
|
+
label: "Ends with"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
value: "isEmpty",
|
|
58
|
+
label: "Is empty"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
value: "isNotEmpty",
|
|
62
|
+
label: "Is not empty"
|
|
63
|
+
}
|
|
64
|
+
];
|
|
65
|
+
const BOOLEAN_OPERATORS = [
|
|
66
|
+
{
|
|
67
|
+
value: "==",
|
|
68
|
+
label: "Equals"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
value: "!=",
|
|
72
|
+
label: "Not equals"
|
|
73
|
+
}
|
|
74
|
+
];
|
|
75
|
+
const FILE_OPERATORS = [
|
|
76
|
+
{
|
|
77
|
+
value: "isEmpty",
|
|
78
|
+
label: "Is empty"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
value: "isNotEmpty",
|
|
82
|
+
label: "Is not empty"
|
|
83
|
+
}
|
|
84
|
+
];
|
|
85
|
+
const DEFAULT_OPERATORS = [
|
|
86
|
+
{
|
|
87
|
+
value: "==",
|
|
88
|
+
label: "Equals"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
value: "!=",
|
|
92
|
+
label: "Not equals"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
value: "isEmpty",
|
|
96
|
+
label: "Is empty"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
value: "isNotEmpty",
|
|
100
|
+
label: "Is not empty"
|
|
101
|
+
}
|
|
102
|
+
];
|
|
75
103
|
const OPERATORS_BY_TYPE = {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
104
|
+
number: NUMERIC_OPERATORS,
|
|
105
|
+
datetime: NUMERIC_OPERATORS,
|
|
106
|
+
text: TEXT_OPERATORS,
|
|
107
|
+
"long-text": TEXT_OPERATORS,
|
|
108
|
+
boolean: BOOLEAN_OPERATORS,
|
|
109
|
+
file: FILE_OPERATORS
|
|
82
110
|
};
|
|
83
|
-
|
|
84
|
-
|
|
111
|
+
function getOperatorOptions(fieldType) {
|
|
112
|
+
return OPERATORS_BY_TYPE[fieldType] ?? DEFAULT_OPERATORS;
|
|
85
113
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
export
|
|
114
|
+
const VALUE_HIDDEN_OPERATORS = new Set([
|
|
115
|
+
"isEmpty",
|
|
116
|
+
"isNotEmpty"
|
|
117
|
+
]);
|
|
118
|
+
export { VALUE_HIDDEN_OPERATORS, getOperatorOptions };
|
|
91
119
|
|
|
92
120
|
//# sourceMappingURL=operatorOptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Fields/operatorOptions.js","sources":["../../src/Fields/operatorOptions.ts"],"sourcesContent":["import type { Operator } from \"./evaluateExpression.js\";\n\nexport interface OperatorOption {\n value: Operator;\n label: string;\n}\n\nconst NUMERIC_OPERATORS: OperatorOption[] = [\n { value: \"==\", label: \"Equals\" },\n { value: \"!=\", label: \"Not equals\" },\n { value: \">\", label: \"Greater than\" },\n { value: \"<\", label: \"Less than\" },\n { value: \">=\", label: \"Greater or equal\" },\n { value: \"<=\", label: \"Less or equal\" },\n { value: \"isEmpty\", label: \"Is empty\" },\n { value: \"isNotEmpty\", label: \"Is not empty\" }\n];\n\nconst TEXT_OPERATORS: OperatorOption[] = [\n { value: \"==\", label: \"Equals\" },\n { value: \"!=\", label: \"Not equals\" },\n { value: \"contains\", label: \"Contains\" },\n { value: \"startsWith\", label: \"Starts with\" },\n { value: \"endsWith\", label: \"Ends with\" },\n { value: \"isEmpty\", label: \"Is empty\" },\n { value: \"isNotEmpty\", label: \"Is not empty\" }\n];\n\nconst BOOLEAN_OPERATORS: OperatorOption[] = [\n { value: \"==\", label: \"Equals\" },\n { value: \"!=\", label: \"Not equals\" }\n];\n\nconst FILE_OPERATORS: OperatorOption[] = [\n { value: \"isEmpty\", label: \"Is empty\" },\n { value: \"isNotEmpty\", label: \"Is not empty\" }\n];\n\nconst DEFAULT_OPERATORS: OperatorOption[] = [\n { value: \"==\", label: \"Equals\" },\n { value: \"!=\", label: \"Not equals\" },\n { value: \"isEmpty\", label: \"Is empty\" },\n { value: \"isNotEmpty\", label: \"Is not empty\" }\n];\n\nconst OPERATORS_BY_TYPE: Record<string, OperatorOption[]> = {\n number: NUMERIC_OPERATORS,\n datetime: NUMERIC_OPERATORS,\n text: TEXT_OPERATORS,\n \"long-text\": TEXT_OPERATORS,\n boolean: BOOLEAN_OPERATORS,\n file: FILE_OPERATORS\n};\n\nexport function getOperatorOptions(fieldType: string): OperatorOption[] {\n return OPERATORS_BY_TYPE[fieldType] ?? DEFAULT_OPERATORS;\n}\n\n/**\n * Operators that don't need a value input (the value is implicit).\n */\nexport const VALUE_HIDDEN_OPERATORS: Set<Operator> = new Set([\"isEmpty\", \"isNotEmpty\"]);\n"],"names":["NUMERIC_OPERATORS","TEXT_OPERATORS","BOOLEAN_OPERATORS","FILE_OPERATORS","DEFAULT_OPERATORS","OPERATORS_BY_TYPE","getOperatorOptions","fieldType","VALUE_HIDDEN_OPERATORS","Set"],"mappings":"AAOA,MAAMA,oBAAsC;IACxC;QAAE,OAAO;QAAM,OAAO;IAAS;IAC/B;QAAE,OAAO;QAAM,OAAO;IAAa;IACnC;QAAE,OAAO;QAAK,OAAO;IAAe;IACpC;QAAE,OAAO;QAAK,OAAO;IAAY;IACjC;QAAE,OAAO;QAAM,OAAO;IAAmB;IACzC;QAAE,OAAO;QAAM,OAAO;IAAgB;IACtC;QAAE,OAAO;QAAW,OAAO;IAAW;IACtC;QAAE,OAAO;QAAc,OAAO;IAAe;CAChD;AAED,MAAMC,iBAAmC;IACrC;QAAE,OAAO;QAAM,OAAO;IAAS;IAC/B;QAAE,OAAO;QAAM,OAAO;IAAa;IACnC;QAAE,OAAO;QAAY,OAAO;IAAW;IACvC;QAAE,OAAO;QAAc,OAAO;IAAc;IAC5C;QAAE,OAAO;QAAY,OAAO;IAAY;IACxC;QAAE,OAAO;QAAW,OAAO;IAAW;IACtC;QAAE,OAAO;QAAc,OAAO;IAAe;CAChD;AAED,MAAMC,oBAAsC;IACxC;QAAE,OAAO;QAAM,OAAO;IAAS;IAC/B;QAAE,OAAO;QAAM,OAAO;IAAa;CACtC;AAED,MAAMC,iBAAmC;IACrC;QAAE,OAAO;QAAW,OAAO;IAAW;IACtC;QAAE,OAAO;QAAc,OAAO;IAAe;CAChD;AAED,MAAMC,oBAAsC;IACxC;QAAE,OAAO;QAAM,OAAO;IAAS;IAC/B;QAAE,OAAO;QAAM,OAAO;IAAa;IACnC;QAAE,OAAO;QAAW,OAAO;IAAW;IACtC;QAAE,OAAO;QAAc,OAAO;IAAe;CAChD;AAED,MAAMC,oBAAsD;IACxD,QAAQL;IACR,UAAUA;IACV,MAAMC;IACN,aAAaA;IACb,SAASC;IACT,MAAMC;AACV;AAEO,SAASG,mBAAmBC,SAAiB;IAChD,OAAOF,iBAAiB,CAACE,UAAU,IAAIH;AAC3C;AAKO,MAAMI,yBAAwC,IAAIC,IAAI;IAAC;IAAW;CAAa"}
|