@webiny/app-headless-cms-common 6.3.0-beta.4 → 6.4.0-beta.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.
Files changed (82) hide show
  1. package/Fields/ErrorBoundary.js +29 -34
  2. package/Fields/ErrorBoundary.js.map +1 -1
  3. package/Fields/FieldElement.js +38 -61
  4. package/Fields/FieldElement.js.map +1 -1
  5. package/Fields/FieldElementError.js +13 -22
  6. package/Fields/FieldElementError.js.map +1 -1
  7. package/Fields/FieldRulesProvider.js +11 -17
  8. package/Fields/FieldRulesProvider.js.map +1 -1
  9. package/Fields/Fields.js +76 -139
  10. package/Fields/Fields.js.map +1 -1
  11. package/Fields/Label.js +7 -7
  12. package/Fields/Label.js.map +1 -1
  13. package/Fields/LayoutDescriptorCell.js +33 -40
  14. package/Fields/LayoutDescriptorCell.js.map +1 -1
  15. package/Fields/evaluateExpression.js +54 -94
  16. package/Fields/evaluateExpression.js.map +1 -1
  17. package/Fields/fieldOptions.js +56 -104
  18. package/Fields/fieldOptions.js.map +1 -1
  19. package/Fields/index.js +0 -2
  20. package/Fields/layoutFieldRenderers/AlertFieldRenderer.js +7 -10
  21. package/Fields/layoutFieldRenderers/AlertFieldRenderer.js.map +1 -1
  22. package/Fields/layoutFieldRenderers/SeparatorFieldRenderer.js +12 -15
  23. package/Fields/layoutFieldRenderers/SeparatorFieldRenderer.js.map +1 -1
  24. package/Fields/layoutFieldRenderers/TabsFieldRenderer.js +52 -63
  25. package/Fields/layoutFieldRenderers/TabsFieldRenderer.js.map +1 -1
  26. package/Fields/operatorOptions.js +115 -87
  27. package/Fields/operatorOptions.js.map +1 -1
  28. package/Fields/useBind.js +101 -107
  29. package/Fields/useBind.js.map +1 -1
  30. package/Fields/useFieldRules.js +79 -133
  31. package/Fields/useFieldRules.js.map +1 -1
  32. package/Fields/useRenderPlugins.js +3 -2
  33. package/Fields/useRenderPlugins.js.map +1 -1
  34. package/ModelFieldProvider/CanEditField.js +6 -9
  35. package/ModelFieldProvider/CanEditField.js.map +1 -1
  36. package/ModelFieldProvider/ModelFieldContext.js +15 -22
  37. package/ModelFieldProvider/ModelFieldContext.js.map +1 -1
  38. package/ModelFieldProvider/index.js +0 -2
  39. package/ModelFieldProvider/useModelField.js +15 -21
  40. package/ModelFieldProvider/useModelField.js.map +1 -1
  41. package/ModelProvider/ModelContext.js +11 -15
  42. package/ModelProvider/ModelContext.js.map +1 -1
  43. package/ModelProvider/index.js +0 -2
  44. package/ModelProvider/useModel.js +7 -11
  45. package/ModelProvider/useModel.js.map +1 -1
  46. package/constants.js +2 -1
  47. package/constants.js.map +1 -1
  48. package/createFieldsList.js +27 -49
  49. package/createFieldsList.js.map +1 -1
  50. package/createValidationContainer.js +13 -20
  51. package/createValidationContainer.js.map +1 -1
  52. package/createValidators.js +42 -47
  53. package/createValidators.js.map +1 -1
  54. package/entries.graphql.d.ts +11 -0
  55. package/entries.graphql.js +74 -164
  56. package/entries.graphql.js.map +1 -1
  57. package/exports/admin/cms/model.js +0 -2
  58. package/exports/admin/cms.d.ts +1 -1
  59. package/exports/admin/cms.js +0 -3
  60. package/getModelTitleFieldId.js +4 -5
  61. package/getModelTitleFieldId.js.map +1 -1
  62. package/index.js +0 -2
  63. package/normalizeIcon.js +8 -7
  64. package/normalizeIcon.js.map +1 -1
  65. package/package.json +11 -13
  66. package/prepareFormData.js +39 -61
  67. package/prepareFormData.js.map +1 -1
  68. package/types/index.d.ts +2 -0
  69. package/types/index.js +1 -41
  70. package/types/model.js +4 -27
  71. package/types/model.js.map +1 -1
  72. package/types/shared.js +0 -3
  73. package/types/validation.js +0 -3
  74. package/Fields/index.js.map +0 -1
  75. package/ModelFieldProvider/index.js.map +0 -1
  76. package/ModelProvider/index.js.map +0 -1
  77. package/exports/admin/cms/model.js.map +0 -1
  78. package/exports/admin/cms.js.map +0 -1
  79. package/index.js.map +0 -1
  80. package/types/index.js.map +0 -1
  81. package/types/shared.js.map +0 -1
  82. package/types/validation.js.map +0 -1
@@ -1,18 +1,15 @@
1
- import React from "react";
1
+ import react from "react";
2
2
  import { Grid, Separator, Text } from "@webiny/admin-ui";
3
- export const SeparatorFieldRenderer = ({
4
- field
5
- }) => {
6
- return /*#__PURE__*/React.createElement(Grid.Column, {
7
- span: 12
8
- }, /*#__PURE__*/React.createElement(Separator, {
9
- variant: "accent",
10
- labelPosition: "start"
11
- }, field.label), field.description && /*#__PURE__*/React.createElement(Text, {
12
- as: "div",
13
- size: "sm",
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,"names":["React","Grid","Separator","Text","SeparatorFieldRenderer","field","createElement","Column","span","variant","labelPosition","label","description","as","size","className"],"sources":["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"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,SAAS,EAAEC,IAAI,QAAQ,kBAAkB;AAOxD,OAAO,MAAMC,sBAAsB,GAAGA,CAAC;EAAEC;AAAmC,CAAC,KAAK;EAC9E,oBACIL,KAAA,CAAAM,aAAA,CAACL,IAAI,CAACM,MAAM;IAACC,IAAI,EAAE;EAAG,gBAClBR,KAAA,CAAAM,aAAA,CAACJ,SAAS;IAACO,OAAO,EAAE,QAAS;IAACC,aAAa,EAAE;EAAQ,GAChDL,KAAK,CAACM,KACA,CAAC,EACXN,KAAK,CAACO,WAAW,iBACdZ,KAAA,CAAAM,aAAA,CAACH,IAAI;IAACU,EAAE,EAAE,KAAM;IAACC,IAAI,EAAE,IAAK;IAACC,SAAS,EAAE;EAA4B,GAC/DV,KAAK,CAACO,WACL,CAED,CAAC;AAEtB,CAAC","ignoreList":[]}
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 React from "react";
2
- import { Grid, FormComponentLabel, FormComponentDescription, Tabs } from "@webiny/admin-ui";
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
- tab,
10
- Bind,
11
- fields,
12
- contentModel,
13
- gridClassName
14
- }) => {
15
- const rules = useFieldEffectiveRules(tab);
16
- const icon = normalizeIcon(tab.icon);
17
- return /*#__PURE__*/React.createElement(Tabs.Tab, {
18
- disabled: rules.disabled,
19
- visible: rules.canView && !rules.hidden,
20
- value: tab.id,
21
- trigger: tab.label,
22
- icon: icon ? /*#__PURE__*/React.createElement(FontAwesomeIcon, {
23
- icon: icon,
24
- size: "sm"
25
- }) : undefined,
26
- content: /*#__PURE__*/React.createElement(FieldRulesProvider, {
27
- rules: rules
28
- }, /*#__PURE__*/React.createElement(Fields, {
29
- Bind: Bind,
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 = ["bg-white!", "opacity-100!", "border-neutral-muted", "text-neutral-strong", "fill-neutral-xstrong", "w-full", "border-sm", "rounded-md"].join(" ");
38
- export const TabsFieldRenderer = ({
39
- field,
40
- Bind,
41
- fields,
42
- contentModel,
43
- gridClassName
44
- }) => {
45
- const tabElements = field.tabs.map(tab => /*#__PURE__*/React.createElement(TabPanel, {
46
- key: tab.id,
47
- tab: tab,
48
- Bind: Bind,
49
- fields: fields,
50
- contentModel: contentModel,
51
- gridClassName: gridClassName
52
- }));
53
- const firstTab = field.tabs[0];
54
- return /*#__PURE__*/React.createElement(Grid.Column, {
55
- span: 12
56
- }, field.label ? /*#__PURE__*/React.createElement(FormComponentLabel, {
57
- text: field.label,
58
- hint: field.help
59
- }) : null, field.description ? /*#__PURE__*/React.createElement(FormComponentDescription, {
60
- text: field.description
61
- }) : null, /*#__PURE__*/React.createElement("div", {
62
- className: tabsWrapperClassName
63
- }, /*#__PURE__*/React.createElement(Tabs, {
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,"names":["React","Grid","FormComponentLabel","FormComponentDescription","Tabs","FontAwesomeIcon","normalizeIcon","Fields","FieldRulesProvider","useFieldEffectiveRules","TabPanel","tab","Bind","fields","contentModel","gridClassName","rules","icon","createElement","Tab","disabled","visible","canView","hidden","value","id","trigger","label","size","undefined","content","layout","tabsWrapperClassName","join","TabsFieldRenderer","field","tabElements","tabs","map","key","firstTab","Column","span","text","hint","help","description","className","spacing","separator","defaultValue"],"sources":["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"],"mappings":"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","ignoreList":[]}
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
- value: "==",
3
- label: "Equals"
4
- }, {
5
- value: "!=",
6
- label: "Not equals"
7
- }, {
8
- value: ">",
9
- label: "Greater than"
10
- }, {
11
- value: "<",
12
- label: "Less than"
13
- }, {
14
- value: ">=",
15
- label: "Greater or equal"
16
- }, {
17
- value: "<=",
18
- label: "Less or equal"
19
- }, {
20
- value: "isEmpty",
21
- label: "Is empty"
22
- }, {
23
- value: "isNotEmpty",
24
- label: "Is not empty"
25
- }];
26
- const TEXT_OPERATORS = [{
27
- value: "==",
28
- label: "Equals"
29
- }, {
30
- value: "!=",
31
- label: "Not equals"
32
- }, {
33
- value: "contains",
34
- label: "Contains"
35
- }, {
36
- value: "startsWith",
37
- label: "Starts with"
38
- }, {
39
- value: "endsWith",
40
- label: "Ends with"
41
- }, {
42
- value: "isEmpty",
43
- label: "Is empty"
44
- }, {
45
- value: "isNotEmpty",
46
- label: "Is not empty"
47
- }];
48
- const BOOLEAN_OPERATORS = [{
49
- value: "==",
50
- label: "Equals"
51
- }, {
52
- value: "!=",
53
- label: "Not equals"
54
- }];
55
- const FILE_OPERATORS = [{
56
- value: "isEmpty",
57
- label: "Is empty"
58
- }, {
59
- value: "isNotEmpty",
60
- label: "Is not empty"
61
- }];
62
- const DEFAULT_OPERATORS = [{
63
- value: "==",
64
- label: "Equals"
65
- }, {
66
- value: "!=",
67
- label: "Not equals"
68
- }, {
69
- value: "isEmpty",
70
- label: "Is empty"
71
- }, {
72
- value: "isNotEmpty",
73
- label: "Is not empty"
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
- number: NUMERIC_OPERATORS,
77
- datetime: NUMERIC_OPERATORS,
78
- text: TEXT_OPERATORS,
79
- "long-text": TEXT_OPERATORS,
80
- boolean: BOOLEAN_OPERATORS,
81
- file: FILE_OPERATORS
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
- export function getOperatorOptions(fieldType) {
84
- return OPERATORS_BY_TYPE[fieldType] ?? DEFAULT_OPERATORS;
111
+ function getOperatorOptions(fieldType) {
112
+ return OPERATORS_BY_TYPE[fieldType] ?? DEFAULT_OPERATORS;
85
113
  }
86
-
87
- /**
88
- * Operators that don't need a value input (the value is implicit).
89
- */
90
- export const VALUE_HIDDEN_OPERATORS = new Set(["isEmpty", "isNotEmpty"]);
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,"names":["NUMERIC_OPERATORS","value","label","TEXT_OPERATORS","BOOLEAN_OPERATORS","FILE_OPERATORS","DEFAULT_OPERATORS","OPERATORS_BY_TYPE","number","datetime","text","boolean","file","getOperatorOptions","fieldType","VALUE_HIDDEN_OPERATORS","Set"],"sources":["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"],"mappings":"AAOA,MAAMA,iBAAmC,GAAG,CACxC;EAAEC,KAAK,EAAE,IAAI;EAAEC,KAAK,EAAE;AAAS,CAAC,EAChC;EAAED,KAAK,EAAE,IAAI;EAAEC,KAAK,EAAE;AAAa,CAAC,EACpC;EAAED,KAAK,EAAE,GAAG;EAAEC,KAAK,EAAE;AAAe,CAAC,EACrC;EAAED,KAAK,EAAE,GAAG;EAAEC,KAAK,EAAE;AAAY,CAAC,EAClC;EAAED,KAAK,EAAE,IAAI;EAAEC,KAAK,EAAE;AAAmB,CAAC,EAC1C;EAAED,KAAK,EAAE,IAAI;EAAEC,KAAK,EAAE;AAAgB,CAAC,EACvC;EAAED,KAAK,EAAE,SAAS;EAAEC,KAAK,EAAE;AAAW,CAAC,EACvC;EAAED,KAAK,EAAE,YAAY;EAAEC,KAAK,EAAE;AAAe,CAAC,CACjD;AAED,MAAMC,cAAgC,GAAG,CACrC;EAAEF,KAAK,EAAE,IAAI;EAAEC,KAAK,EAAE;AAAS,CAAC,EAChC;EAAED,KAAK,EAAE,IAAI;EAAEC,KAAK,EAAE;AAAa,CAAC,EACpC;EAAED,KAAK,EAAE,UAAU;EAAEC,KAAK,EAAE;AAAW,CAAC,EACxC;EAAED,KAAK,EAAE,YAAY;EAAEC,KAAK,EAAE;AAAc,CAAC,EAC7C;EAAED,KAAK,EAAE,UAAU;EAAEC,KAAK,EAAE;AAAY,CAAC,EACzC;EAAED,KAAK,EAAE,SAAS;EAAEC,KAAK,EAAE;AAAW,CAAC,EACvC;EAAED,KAAK,EAAE,YAAY;EAAEC,KAAK,EAAE;AAAe,CAAC,CACjD;AAED,MAAME,iBAAmC,GAAG,CACxC;EAAEH,KAAK,EAAE,IAAI;EAAEC,KAAK,EAAE;AAAS,CAAC,EAChC;EAAED,KAAK,EAAE,IAAI;EAAEC,KAAK,EAAE;AAAa,CAAC,CACvC;AAED,MAAMG,cAAgC,GAAG,CACrC;EAAEJ,KAAK,EAAE,SAAS;EAAEC,KAAK,EAAE;AAAW,CAAC,EACvC;EAAED,KAAK,EAAE,YAAY;EAAEC,KAAK,EAAE;AAAe,CAAC,CACjD;AAED,MAAMI,iBAAmC,GAAG,CACxC;EAAEL,KAAK,EAAE,IAAI;EAAEC,KAAK,EAAE;AAAS,CAAC,EAChC;EAAED,KAAK,EAAE,IAAI;EAAEC,KAAK,EAAE;AAAa,CAAC,EACpC;EAAED,KAAK,EAAE,SAAS;EAAEC,KAAK,EAAE;AAAW,CAAC,EACvC;EAAED,KAAK,EAAE,YAAY;EAAEC,KAAK,EAAE;AAAe,CAAC,CACjD;AAED,MAAMK,iBAAmD,GAAG;EACxDC,MAAM,EAAER,iBAAiB;EACzBS,QAAQ,EAAET,iBAAiB;EAC3BU,IAAI,EAAEP,cAAc;EACpB,WAAW,EAAEA,cAAc;EAC3BQ,OAAO,EAAEP,iBAAiB;EAC1BQ,IAAI,EAAEP;AACV,CAAC;AAED,OAAO,SAASQ,kBAAkBA,CAACC,SAAiB,EAAoB;EACpE,OAAOP,iBAAiB,CAACO,SAAS,CAAC,IAAIR,iBAAiB;AAC5D;;AAEA;AACA;AACA;AACA,OAAO,MAAMS,sBAAqC,GAAG,IAAIC,GAAG,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC","ignoreList":[]}
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"}