@sparrowengg/integrations-templates-frontend 6.0.2 → 6.0.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.
@@ -44,6 +44,7 @@ const TabsContentComponent = ({
44
44
  () => mapping_helpers.filterFieldsBySearch(fields || [], searchInput),
45
45
  [fields, searchInput]
46
46
  );
47
+ console.log("filteredFields", filteredFields);
47
48
  const hasResults = React.useMemo(() => (filteredFields == null ? void 0 : filteredFields.length) > 0, [filteredFields]);
48
49
  return /* @__PURE__ */ React.createElement(tabs.TabsContent, { value, css: { padding: 0, position: "relative" }, key: value }, /* @__PURE__ */ React.createElement(
49
50
  input.Input,
@@ -1 +1 @@
1
- {"version":3,"file":"tabs-content-component.js","sources":["../../../../src/dynamic-mapping/components/tabs-content-component.tsx"],"sourcesContent":["/* ----- Imports ----- */\n\nimport React, { useMemo } from 'react';\nimport { Box, Flex, Input, Text, Checkbox, Tooltip, TabsContent } from '@sparrowengg/twigs-react';\nimport { SearchIcon } from '@sparrowengg/twigs-react-icons';\nimport { filterFieldsBySearch } from '../helpers';\n\n/* ----- Types / Interfaces ----- */\n\ninterface TabsContentComponentProps {\n value: string;\n searchInput: string;\n setSearchInput: React.Dispatch<React.SetStateAction<string>>;\n fields: any[];\n handleFieldValues: (field: any, value: boolean) => void;\n placeholder: string;\n /** Whether the data is from API (enables hierarchical display for questions) */\n isApiData?: boolean;\n}\n\n/* ----- Main Component ----- */\n\n/**\n * Tabs content component for mapping fields\n * \n * @param {TabsContentComponentProps} props - Component props\n * @returns {JSX.Element} Tabs content component\n * \n * @example\n * <TabsContentComponent\n * value=\"QUESTIONS\"\n * searchInput={search}\n * fields={questions}\n * handleFieldValues={handleChange}\n * placeholder=\"Questions\"\n * />\n */\nexport const TabsContentComponent = ({\n value,\n searchInput,\n setSearchInput,\n fields,\n handleFieldValues,\n placeholder,\n isApiData = false,\n}: TabsContentComponentProps): JSX.Element => {\n const filteredFields = useMemo(\n () => filterFieldsBySearch(fields || [], searchInput),\n [fields, searchInput]\n );\n\n\n const hasResults = useMemo(() => filteredFields?.length > 0, [filteredFields]);\n\n return (\n <TabsContent value={value} css={{ padding: 0, position: 'relative' }} key={value}>\n <Input\n leftIcon={<SearchIcon color=\"#848484\" />}\n variant=\"filled\"\n placeholder={`Search ${placeholder}`}\n size=\"lg\"\n css={{ marginTop: '$8' }}\n value={searchInput}\n onChange={(event) => setSearchInput(event.currentTarget.value)}\n />\n \n <Flex\n css={{\n padding: '$8 $4 $32 $4',\n marginTop: '$8',\n height: 'calc(100vh - 408px)',\n overflow: 'auto',\n scrollbarWidth: 'thin',\n '&::-webkit-scrollbar': {\n width: '4px',\n },\n '& label': {\n lineHeight: '$sm',\n },\n }}\n flexDirection=\"column\"\n gap=\"$8\"\n >\n {hasResults ? (\n <>\n {filteredFields.map((field: any) => (\n <Box\n key={field.id}\n css={{\n // Add left padding for child questions when isApiData is true\n ...(isApiData && field.isChild && { paddingLeft: '24px' }),\n label: {\n color: '$neutral900',\n fontSize: '$sm',\n maxWidth: '520px',\n display: 'block',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n cursor: 'pointer',\n },\n }}\n >\n <Tooltip\n content={field.tooltip || ''}\n css={{\n fontFamily: 'DM Sans !important',\n zIndex: '9999999 !important',\n }}\n >\n <Flex css={{ width: 'fit-content !important' }}>\n <Checkbox\n size=\"sm\"\n checked={field.isEnabled}\n disabled={field.disabled}\n onChange={(value) => handleFieldValues(field, value as boolean)}\n >\n {isApiData && field.isChild ? `-- ${field.name}` : field.name}\n </Checkbox>\n </Flex>\n </Tooltip>\n </Box>\n ))}\n </>\n ) : (\n <Flex alignItems=\"center\" justifyContent=\"center\" css={{ marginTop: '$40' }}>\n <Text size=\"sm\">No Results Found</Text>\n </Flex>\n )}\n </Flex>\n \n <Box\n css={{\n position: 'absolute',\n pointerEvents: 'none',\n top: '88%',\n height: '$25',\n width: '100%',\n background:\n 'linear-gradient(to top, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0))',\n }}\n />\n </TabsContent>\n );\n};\n"],"names":["useMemo","filterFieldsBySearch","TabsContent","Input","SearchIcon","Flex","Box","Tooltip","Checkbox","value","Text"],"mappings":"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"}
1
+ {"version":3,"file":"tabs-content-component.js","sources":["../../../../src/dynamic-mapping/components/tabs-content-component.tsx"],"sourcesContent":["/* ----- Imports ----- */\n\nimport React, { useMemo } from 'react';\nimport { Box, Flex, Input, Text, Checkbox, Tooltip, TabsContent } from '@sparrowengg/twigs-react';\nimport { SearchIcon } from '@sparrowengg/twigs-react-icons';\nimport { filterFieldsBySearch } from '../helpers';\n\n/* ----- Types / Interfaces ----- */\n\ninterface TabsContentComponentProps {\n value: string;\n searchInput: string;\n setSearchInput: React.Dispatch<React.SetStateAction<string>>;\n fields: any[];\n handleFieldValues: (field: any, value: boolean) => void;\n placeholder: string;\n /** Whether the data is from API (enables hierarchical display for questions) */\n isApiData?: boolean;\n}\n\n/* ----- Main Component ----- */\n\n/**\n * Tabs content component for mapping fields\n * \n * @param {TabsContentComponentProps} props - Component props\n * @returns {JSX.Element} Tabs content component\n * \n * @example\n * <TabsContentComponent\n * value=\"QUESTIONS\"\n * searchInput={search}\n * fields={questions}\n * handleFieldValues={handleChange}\n * placeholder=\"Questions\"\n * />\n */\nexport const TabsContentComponent = ({\n value,\n searchInput,\n setSearchInput,\n fields,\n handleFieldValues,\n placeholder,\n isApiData = false,\n}: TabsContentComponentProps): JSX.Element => {\n const filteredFields = useMemo(\n () => filterFieldsBySearch(fields || [], searchInput),\n [fields, searchInput]\n );\n console.log('filteredFields', filteredFields);\n\n\n const hasResults = useMemo(() => filteredFields?.length > 0, [filteredFields]);\n\n return (\n <TabsContent value={value} css={{ padding: 0, position: 'relative' }} key={value}>\n <Input\n leftIcon={<SearchIcon color=\"#848484\" />}\n variant=\"filled\"\n placeholder={`Search ${placeholder}`}\n size=\"lg\"\n css={{ marginTop: '$8' }}\n value={searchInput}\n onChange={(event) => setSearchInput(event.currentTarget.value)}\n />\n \n <Flex\n css={{\n padding: '$8 $4 $32 $4',\n marginTop: '$8',\n height: 'calc(100vh - 408px)',\n overflow: 'auto',\n scrollbarWidth: 'thin',\n '&::-webkit-scrollbar': {\n width: '4px',\n },\n '& label': {\n lineHeight: '$sm',\n },\n }}\n flexDirection=\"column\"\n gap=\"$8\"\n >\n {hasResults ? (\n <>\n {filteredFields.map((field: any) => (\n <Box\n key={field.id}\n css={{\n // Add left padding for child questions when isApiData is true\n ...(isApiData && field.isChild && { paddingLeft: '24px' }),\n label: {\n color: '$neutral900',\n fontSize: '$sm',\n maxWidth: '520px',\n display: 'block',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n cursor: 'pointer',\n },\n }}\n >\n <Tooltip\n content={field.tooltip || ''}\n css={{\n fontFamily: 'DM Sans !important',\n zIndex: '9999999 !important',\n }}\n >\n <Flex css={{ width: 'fit-content !important' }}>\n <Checkbox\n size=\"sm\"\n checked={field.isEnabled}\n disabled={field.disabled}\n onChange={(value) => handleFieldValues(field, value as boolean)}\n >\n {isApiData && field.isChild ? `-- ${field.name}` : field.name}\n </Checkbox>\n </Flex>\n </Tooltip>\n </Box>\n ))}\n </>\n ) : (\n <Flex alignItems=\"center\" justifyContent=\"center\" css={{ marginTop: '$40' }}>\n <Text size=\"sm\">No Results Found</Text>\n </Flex>\n )}\n </Flex>\n \n <Box\n css={{\n position: 'absolute',\n pointerEvents: 'none',\n top: '88%',\n height: '$25',\n width: '100%',\n background:\n 'linear-gradient(to top, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0))',\n }}\n />\n </TabsContent>\n );\n};\n"],"names":["useMemo","filterFieldsBySearch","TabsContent","Input","SearchIcon","Flex","Box","Tooltip","Checkbox","value","Text"],"mappings":"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"}
@@ -7,67 +7,155 @@ var flex = require('../../../node_modules/@sparrowengg/twigs-react/dist/es/flex/
7
7
  var text = require('../../../node_modules/@sparrowengg/twigs-react/dist/es/text/text.js');
8
8
  var box = require('../../../node_modules/@sparrowengg/twigs-react/dist/es/box/box.js');
9
9
 
10
- const SingleMappingEventWrapper = ({
11
- field,
12
- isTrigger
13
- }) => {
14
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R;
15
- const hasEventSection = !!((_c = (_b = (_a = field == null ? void 0 : field.configurationFields) == null ? void 0 : _a.account) == null ? void 0 : _b.value) == null ? void 0 : _c.label) || !!field.action || !!field.exisitingSheet || !!(field == null ? void 0 : field.configurationFields) || !!field.object && isTrigger;
16
- console.log("field", field);
17
- return /* @__PURE__ */ React.createElement(React.Fragment, null, hasEventSection ? /* @__PURE__ */ React.createElement(flex.Flex, { flexDirection: "column", gap: "$6" }, /* @__PURE__ */ React.createElement(text.Text, { size: "sm", weight: "bold", css: { textTransform: "uppercase" } }, dashboardConstants.DASHBOARD_UI_STRINGS.EVENT), /* @__PURE__ */ React.createElement(flex.Flex, { alignItems: "center" }, /* @__PURE__ */ React.createElement(flex.Flex, { alignItems: "center", gap: "$20" }, !!(field == null ? void 0 : field.object) ? /* @__PURE__ */ React.createElement(
18
- EventComponent.EventComponent,
19
- {
20
- heading: dashboardConstants.DASHBOARD_UI_STRINGS.OBJECT,
21
- description: (_f = (_e = (_d = field == null ? void 0 : field.configuration) == null ? void 0 : _d.object) == null ? void 0 : _e.label) != null ? _f : field == null ? void 0 : field.object
10
+ const MAPPING_CONFIGURATION_KEYS_HIDDEN_FROM_DASHBOARD = /* @__PURE__ */ new Set([
11
+ "responseImportSettings",
12
+ "responseImportType"
13
+ ]);
14
+ function getMappingPayloadConfigurationEntries(configuration) {
15
+ if (!configuration || typeof configuration !== "object" || Array.isArray(configuration)) {
16
+ return [];
17
+ }
18
+ const rows = [];
19
+ for (const [key, entry] of Object.entries(configuration)) {
20
+ if (MAPPING_CONFIGURATION_KEYS_HIDDEN_FROM_DASHBOARD.has(key)) {
21
+ continue;
22
22
  }
23
- ) : null, !!(field == null ? void 0 : field.action) ? /* @__PURE__ */ React.createElement(
24
- EventComponent.EventComponent,
25
- {
26
- heading: dashboardConstants.DASHBOARD_UI_STRINGS.ACTION,
27
- description: Array.isArray(field == null ? void 0 : field.action) ? (_h = (_g = field.action) == null ? void 0 : _g.map((a) => {
28
- var _a2;
29
- return typeof a === "object" && a !== null ? (_a2 = a == null ? void 0 : a.label) != null ? _a2 : "" : a != null ? a : "";
30
- })) == null ? void 0 : _h.join(", ") : (_j = (_i = field == null ? void 0 : field.action) == null ? void 0 : _i.toLowerCase()) != null ? _j : ""
23
+ if (entry && typeof entry === "object" && !Array.isArray(entry) && "value" in entry && typeof entry.value !== "undefined") {
24
+ rows.push({ key, value: entry.value });
31
25
  }
32
- ) : null), !!((_m = (_l = (_k = field == null ? void 0 : field.configurationFields) == null ? void 0 : _k.account) == null ? void 0 : _l.value) == null ? void 0 : _m.label) ? /* @__PURE__ */ React.createElement(
33
- EventComponent.EventComponent,
34
- {
35
- heading: dashboardConstants.DASHBOARD_UI_STRINGS.ACCOUNT,
36
- description: (_p = (_o = (_n = field == null ? void 0 : field.configurationFields) == null ? void 0 : _n.account) == null ? void 0 : _o.value) == null ? void 0 : _p.label
26
+ }
27
+ return rows;
28
+ }
29
+ function humanizeMappingConfigKey(key) {
30
+ const spaced = key.replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/_/g, " ");
31
+ return spaced.replace(/\b\w/g, (c) => c.toUpperCase()).trim();
32
+ }
33
+ function formatMappingConfigValue(value) {
34
+ if (value === null || value === void 0) {
35
+ return { text: "\u2014" };
36
+ }
37
+ if (typeof value === "boolean") {
38
+ return { text: value ? "Yes" : "No" };
39
+ }
40
+ if (typeof value === "number" || typeof value === "string") {
41
+ return { text: String(value) };
42
+ }
43
+ if (Array.isArray(value)) {
44
+ return {
45
+ text: value.map((item) => formatMappingConfigValue(item).text).join(", ")
46
+ };
47
+ }
48
+ if (typeof value === "object") {
49
+ const o = value;
50
+ const label = typeof o.label === "string" ? o.label : typeof o.title === "string" ? o.title : void 0;
51
+ const webUrl = typeof o.webUrl === "string" ? o.webUrl : void 0;
52
+ if (label) {
53
+ return { text: label, link: webUrl };
37
54
  }
38
- ) : null, !!((_s = (_r = (_q = field == null ? void 0 : field.configurationFields) == null ? void 0 : _q.object) == null ? void 0 : _r.value) == null ? void 0 : _s.label) ? /* @__PURE__ */ React.createElement(
39
- EventComponent.EventComponent,
40
- {
41
- heading: dashboardConstants.DASHBOARD_UI_STRINGS.OBJECT,
42
- description: (_w = (_v = (_u = (_t = field == null ? void 0 : field.configurationFields) == null ? void 0 : _t.object) == null ? void 0 : _u.value) == null ? void 0 : _v.label) == null ? void 0 : _w.replace(
43
- /^./,
44
- (char) => char == null ? void 0 : char.toUpperCase()
45
- )
46
- }
47
- ) : null, !!((_y = (_x = field == null ? void 0 : field.configurationFields) == null ? void 0 : _x.action) == null ? void 0 : _y.hasAction) ? /* @__PURE__ */ React.createElement(
48
- EventComponent.EventComponent,
49
- {
50
- hasBorder: true,
51
- heading: dashboardConstants.DASHBOARD_UI_STRINGS.ACTION,
52
- description: (_B = (_A = (_z = field == null ? void 0 : field.configurationFields) == null ? void 0 : _z.action) == null ? void 0 : _A.value) == null ? void 0 : _B.label
55
+ if (webUrl) {
56
+ return { text: webUrl, link: webUrl };
53
57
  }
54
- ) : null, !!((_D = (_C = field == null ? void 0 : field.configurationFields) == null ? void 0 : _C.spreadsheet) == null ? void 0 : _D.value) ? /* @__PURE__ */ React.createElement(
55
- EventComponent.EventComponent,
56
- {
57
- hasLink: (_E = field == null ? void 0 : field.configurationFields) == null ? void 0 : _E.sheetURL,
58
- hasBorder: true,
59
- heading: dashboardConstants.DASHBOARD_UI_STRINGS.SHEET,
60
- description: typeof ((_F = field == null ? void 0 : field.configurationFields) == null ? void 0 : _F.spreadsheet) === "object" ? (_I = (_H = (_G = field == null ? void 0 : field.configurationFields) == null ? void 0 : _G.spreadsheet) == null ? void 0 : _H.value) == null ? void 0 : _I.label : (_K = (_J = field == null ? void 0 : field.configurationFields) == null ? void 0 : _J.spreadsheet) == null ? void 0 : _K.value
58
+ try {
59
+ return { text: JSON.stringify(value) };
60
+ } catch (e) {
61
+ return { text: String(value) };
61
62
  }
62
- ) : null, !!((_L = field == null ? void 0 : field.configurationFields) == null ? void 0 : _L.reference) ? /* @__PURE__ */ React.createElement(
63
- EventComponent.EventComponent,
63
+ }
64
+ return { text: String(value) };
65
+ }
66
+ const SingleMappingEventWrapper = ({
67
+ field,
68
+ isTrigger
69
+ }) => {
70
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W, _X, _Y, _Z, __, _$, _aa;
71
+ const mappingPayloadConfigurationEntries = getMappingPayloadConfigurationEntries(
72
+ field == null ? void 0 : field.configuration
73
+ );
74
+ const hasEventSection = !!((_c = (_b = (_a = field == null ? void 0 : field.configurationFields) == null ? void 0 : _a.account) == null ? void 0 : _b.value) == null ? void 0 : _c.label) || !!field.action || !!field.exisitingSheet || !!(field == null ? void 0 : field.configurationFields) || !!field.object && isTrigger || mappingPayloadConfigurationEntries.length > 0;
75
+ const hasLegacyMappingEventPieces = !!(field == null ? void 0 : field.object) || !!(field == null ? void 0 : field.action) || !!((_f = (_e = (_d = field == null ? void 0 : field.configurationFields) == null ? void 0 : _d.account) == null ? void 0 : _e.value) == null ? void 0 : _f.label) || !!((_i = (_h = (_g = field == null ? void 0 : field.configurationFields) == null ? void 0 : _g.object) == null ? void 0 : _h.value) == null ? void 0 : _i.label) || !!((_k = (_j = field == null ? void 0 : field.configurationFields) == null ? void 0 : _j.action) == null ? void 0 : _k.hasAction) || !!((_m = (_l = field == null ? void 0 : field.configurationFields) == null ? void 0 : _l.spreadsheet) == null ? void 0 : _m.value) || !!((_n = field == null ? void 0 : field.configurationFields) == null ? void 0 : _n.reference);
76
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, hasEventSection ? /* @__PURE__ */ React.createElement(flex.Flex, { flexDirection: "column", gap: "$6" }, /* @__PURE__ */ React.createElement(text.Text, { size: "sm", weight: "bold", css: { textTransform: "uppercase" } }, dashboardConstants.DASHBOARD_UI_STRINGS.EVENT), /* @__PURE__ */ React.createElement(
77
+ flex.Flex,
64
78
  {
65
- hasLink: (_N = (_M = field == null ? void 0 : field.configurationFields) == null ? void 0 : _M.reference) == null ? void 0 : _N.referenceURL,
66
- hasBorder: false,
67
- heading: (_P = (_O = field == null ? void 0 : field.configurationFields) == null ? void 0 : _O.reference) == null ? void 0 : _P.title,
68
- description: (_R = (_Q = field == null ? void 0 : field.configurationFields) == null ? void 0 : _Q.reference) == null ? void 0 : _R.description
69
- }
70
- ) : null), /* @__PURE__ */ React.createElement(
79
+ alignItems: "center",
80
+ css: {
81
+ flexWrap: "wrap",
82
+ rowGap: "$6"
83
+ }
84
+ },
85
+ /* @__PURE__ */ React.createElement(flex.Flex, { alignItems: "center", gap: "$20" }, !!(field == null ? void 0 : field.object) ? /* @__PURE__ */ React.createElement(
86
+ EventComponent.EventComponent,
87
+ {
88
+ heading: dashboardConstants.DASHBOARD_UI_STRINGS.OBJECT,
89
+ description: (_q = (_p = (_o = field == null ? void 0 : field.configuration) == null ? void 0 : _o.object) == null ? void 0 : _p.label) != null ? _q : field == null ? void 0 : field.object
90
+ }
91
+ ) : null, !!(field == null ? void 0 : field.action) ? /* @__PURE__ */ React.createElement(
92
+ EventComponent.EventComponent,
93
+ {
94
+ heading: dashboardConstants.DASHBOARD_UI_STRINGS.ACTION,
95
+ description: Array.isArray(field == null ? void 0 : field.action) ? (_s = (_r = field.action) == null ? void 0 : _r.map((a) => {
96
+ var _a2;
97
+ return typeof a === "object" && a !== null ? (_a2 = a == null ? void 0 : a.label) != null ? _a2 : "" : a != null ? a : "";
98
+ })) == null ? void 0 : _s.join(", ") : (_u = (_t = field == null ? void 0 : field.action) == null ? void 0 : _t.toLowerCase()) != null ? _u : ""
99
+ }
100
+ ) : null),
101
+ !!((_x = (_w = (_v = field == null ? void 0 : field.configurationFields) == null ? void 0 : _v.account) == null ? void 0 : _w.value) == null ? void 0 : _x.label) ? /* @__PURE__ */ React.createElement(
102
+ EventComponent.EventComponent,
103
+ {
104
+ heading: dashboardConstants.DASHBOARD_UI_STRINGS.ACCOUNT,
105
+ description: (_A = (_z = (_y = field == null ? void 0 : field.configurationFields) == null ? void 0 : _y.account) == null ? void 0 : _z.value) == null ? void 0 : _A.label
106
+ }
107
+ ) : null,
108
+ !!((_D = (_C = (_B = field == null ? void 0 : field.configurationFields) == null ? void 0 : _B.object) == null ? void 0 : _C.value) == null ? void 0 : _D.label) ? /* @__PURE__ */ React.createElement(
109
+ EventComponent.EventComponent,
110
+ {
111
+ heading: dashboardConstants.DASHBOARD_UI_STRINGS.OBJECT,
112
+ description: (_H = (_G = (_F = (_E = field == null ? void 0 : field.configurationFields) == null ? void 0 : _E.object) == null ? void 0 : _F.value) == null ? void 0 : _G.label) == null ? void 0 : _H.replace(
113
+ /^./,
114
+ (char) => char == null ? void 0 : char.toUpperCase()
115
+ )
116
+ }
117
+ ) : null,
118
+ !!((_J = (_I = field == null ? void 0 : field.configurationFields) == null ? void 0 : _I.action) == null ? void 0 : _J.hasAction) ? /* @__PURE__ */ React.createElement(
119
+ EventComponent.EventComponent,
120
+ {
121
+ hasBorder: true,
122
+ heading: dashboardConstants.DASHBOARD_UI_STRINGS.ACTION,
123
+ description: (_M = (_L = (_K = field == null ? void 0 : field.configurationFields) == null ? void 0 : _K.action) == null ? void 0 : _L.value) == null ? void 0 : _M.label
124
+ }
125
+ ) : null,
126
+ !!((_O = (_N = field == null ? void 0 : field.configurationFields) == null ? void 0 : _N.spreadsheet) == null ? void 0 : _O.value) ? /* @__PURE__ */ React.createElement(
127
+ EventComponent.EventComponent,
128
+ {
129
+ hasLink: (_P = field == null ? void 0 : field.configurationFields) == null ? void 0 : _P.sheetURL,
130
+ hasBorder: true,
131
+ heading: dashboardConstants.DASHBOARD_UI_STRINGS.SHEET,
132
+ description: typeof ((_Q = field == null ? void 0 : field.configurationFields) == null ? void 0 : _Q.spreadsheet) === "object" ? (_T = (_S = (_R = field == null ? void 0 : field.configurationFields) == null ? void 0 : _R.spreadsheet) == null ? void 0 : _S.value) == null ? void 0 : _T.label : (_V = (_U = field == null ? void 0 : field.configurationFields) == null ? void 0 : _U.spreadsheet) == null ? void 0 : _V.value
133
+ }
134
+ ) : null,
135
+ !!((_W = field == null ? void 0 : field.configurationFields) == null ? void 0 : _W.reference) ? /* @__PURE__ */ React.createElement(
136
+ EventComponent.EventComponent,
137
+ {
138
+ hasLink: (_Y = (_X = field == null ? void 0 : field.configurationFields) == null ? void 0 : _X.reference) == null ? void 0 : _Y.referenceURL,
139
+ hasBorder: true,
140
+ heading: (__ = (_Z = field == null ? void 0 : field.configurationFields) == null ? void 0 : _Z.reference) == null ? void 0 : __.title,
141
+ description: (_aa = (_$ = field == null ? void 0 : field.configurationFields) == null ? void 0 : _$.reference) == null ? void 0 : _aa.description
142
+ }
143
+ ) : null,
144
+ mappingPayloadConfigurationEntries.map(({ key, value }, index) => {
145
+ var _a2;
146
+ const formatted = formatMappingConfigValue(value);
147
+ return /* @__PURE__ */ React.createElement(
148
+ EventComponent.EventComponent,
149
+ {
150
+ key: `mapping-config-${key}`,
151
+ hasBorder: hasLegacyMappingEventPieces || index > 0 || (mappingPayloadConfigurationEntries == null ? void 0 : mappingPayloadConfigurationEntries.length) === index - 1,
152
+ heading: `${humanizeMappingConfigKey(key)}:`,
153
+ description: formatted.text,
154
+ hasLink: (_a2 = formatted.link) != null ? _a2 : false
155
+ }
156
+ );
157
+ })
158
+ ), /* @__PURE__ */ React.createElement(
71
159
  box.Box,
72
160
  {
73
161
  css: {
@@ -1 +1 @@
1
- {"version":3,"file":"SingleMappingEventWrapper.js","sources":["../../../../../src/integration-template/components/dashboard/SingleMappingEventWrapper.tsx"],"sourcesContent":["import { Box, Flex, Text } from \"@sparrowengg/twigs-react\";\nimport React from \"react\";\nimport { DashboardField } from \"../../../commons/types/enhanced\";\nimport { DASHBOARD_UI_STRINGS } from \"../dashboard-constants\";\nimport { EventComponent } from \"./EventComponent\";\n\ntype SingleMappingEventWrapperProps = {\n field: DashboardField;\n isTrigger?: boolean;\n};\n\nexport const SingleMappingEventWrapper: React.FC<SingleMappingEventWrapperProps> = ({\n field,\n isTrigger,\n}) => {\n const hasEventSection =\n !!(field as any)?.configurationFields?.account?.value?.label ||\n !!(field as any).action ||\n !!(field as any).exisitingSheet ||\n !!(field as any)?.configurationFields ||\n (!!(field as any).object && isTrigger);\n\n console.log(\"field\", field);\n return (\n <>\n {hasEventSection ? (\n <Flex flexDirection=\"column\" gap=\"$6\">\n <Text size=\"sm\" weight=\"bold\" css={{ textTransform: \"uppercase\" }}>\n {DASHBOARD_UI_STRINGS.EVENT}\n </Text>\n <Flex alignItems=\"center\">\n <Flex alignItems=\"center\" gap=\"$20\">\n {!!(field as any)?.object ? (\n <EventComponent\n heading={DASHBOARD_UI_STRINGS.OBJECT}\n description={(field as any)?.configuration?.object?.label ?? field?.object}\n />\n ) : null}\n {!!(field as any)?.action ? (\n <EventComponent\n heading={DASHBOARD_UI_STRINGS.ACTION}\n description={Array.isArray(field?.action)\n ? field.action?.map((a: any) => typeof a === 'object' && a !== null ? a?.label ?? \"\" : a ?? \"\")?.join(\", \")\n : field?.action?.toLowerCase() ?? \"\"}\n />\n ) : null}\n </Flex>\n {!!(field as any)?.configurationFields?.account?.value?.label ? (\n <EventComponent\n heading={DASHBOARD_UI_STRINGS.ACCOUNT}\n description={(field as any)?.configurationFields?.account?.value?.label}\n />\n ) : null}\n {!!(field as any)?.configurationFields?.object?.value?.label ? (\n <EventComponent\n heading={DASHBOARD_UI_STRINGS.OBJECT}\n description={((field as any)?.configurationFields?.object?.value?.label as string)?.replace(\n /^./,\n (char: string) => char?.toUpperCase()\n )}\n />\n ) : null}\n {!!(field as any)?.configurationFields?.action?.hasAction ? (\n <EventComponent\n hasBorder\n heading={DASHBOARD_UI_STRINGS.ACTION}\n description={(field as any)?.configurationFields?.action?.value?.label}\n />\n ) : null}\n {!!(field as any)?.configurationFields?.spreadsheet?.value ? (\n <EventComponent\n hasLink={(field as any)?.configurationFields?.sheetURL as boolean}\n hasBorder\n heading={DASHBOARD_UI_STRINGS.SHEET}\n description={\n typeof (field as any)?.configurationFields?.spreadsheet === \"object\"\n ? (field as any)?.configurationFields?.spreadsheet?.value?.label\n : (field as any)?.configurationFields?.spreadsheet?.value\n }\n />\n ) : null}\n {!!(field as any)?.configurationFields?.reference ? (\n <EventComponent\n hasLink={(field as any)?.configurationFields?.reference?.referenceURL as boolean}\n hasBorder={false}\n heading={(field as any)?.configurationFields?.reference?.title}\n description={(field as any)?.configurationFields?.reference?.description}\n />\n ) : null}\n </Flex>\n <Box\n css={{\n marginBlock: \"$4\",\n height: \"1px\",\n background: \"$neutral100\",\n }}\n />\n </Flex>\n ) : null}\n </>\n );\n};\n\n"],"names":["Flex","Text","DASHBOARD_UI_STRINGS","EventComponent","_a","Box"],"mappings":"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"}
1
+ {"version":3,"file":"SingleMappingEventWrapper.js","sources":["../../../../../src/integration-template/components/dashboard/SingleMappingEventWrapper.tsx"],"sourcesContent":["import { Box, Flex, Text } from \"@sparrowengg/twigs-react\";\nimport React from \"react\";\nimport { DashboardField } from \"../../../commons/types/enhanced\";\nimport { DASHBOARD_UI_STRINGS } from \"../dashboard-constants\";\nimport { EventComponent } from \"./EventComponent\";\n\ntype SingleMappingEventWrapperProps = {\n field: DashboardField;\n isTrigger?: boolean;\n};\n\nconst MAPPING_CONFIGURATION_KEYS_HIDDEN_FROM_DASHBOARD = new Set([\n \"responseImportSettings\",\n \"responseImportType\",\n]);\n\n/** API mapping payloads expose `configuration` as `{ [key]: { id, value } }`. Trigger-style payloads use other shapes — only list entries that match this pattern. */\nfunction getMappingPayloadConfigurationEntries(\n configuration: unknown\n): { key: string; value: unknown }[] {\n if (!configuration || typeof configuration !== \"object\" || Array.isArray(configuration)) {\n return [];\n }\n const rows: { key: string; value: unknown }[] = [];\n for (const [key, entry] of Object.entries(configuration as Record<string, unknown>)) {\n if (MAPPING_CONFIGURATION_KEYS_HIDDEN_FROM_DASHBOARD.has(key)) {\n continue;\n }\n if (\n entry &&\n typeof entry === \"object\" &&\n !Array.isArray(entry) &&\n \"value\" in entry &&\n typeof (entry as { value?: unknown }).value !== \"undefined\"\n ) {\n rows.push({ key, value: (entry as { value: unknown }).value });\n }\n }\n return rows;\n}\n\nfunction humanizeMappingConfigKey(key: string): string {\n const spaced = key\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/_/g, \" \");\n return spaced.replace(/\\b\\w/g, (c) => c.toUpperCase()).trim();\n}\n\nfunction formatMappingConfigValue(value: unknown): { text: string; link?: string } {\n if (value === null || value === undefined) {\n return { text: \"—\" };\n }\n if (typeof value === \"boolean\") {\n return { text: value ? \"Yes\" : \"No\" };\n }\n if (typeof value === \"number\" || typeof value === \"string\") {\n return { text: String(value) };\n }\n if (Array.isArray(value)) {\n return {\n text: value.map((item) => formatMappingConfigValue(item).text).join(\", \"),\n };\n }\n if (typeof value === \"object\") {\n const o = value as Record<string, unknown>;\n const label =\n typeof o.label === \"string\"\n ? o.label\n : typeof o.title === \"string\"\n ? o.title\n : undefined;\n const webUrl = typeof o.webUrl === \"string\" ? o.webUrl : undefined;\n if (label) {\n return { text: label, link: webUrl };\n }\n if (webUrl) {\n return { text: webUrl, link: webUrl };\n }\n try {\n return { text: JSON.stringify(value) };\n } catch {\n return { text: String(value) };\n }\n }\n return { text: String(value) };\n}\n\nexport const SingleMappingEventWrapper: React.FC<SingleMappingEventWrapperProps> = ({\n field,\n isTrigger,\n}) => {\n const mappingPayloadConfigurationEntries = getMappingPayloadConfigurationEntries(\n (field as Record<string, unknown>)?.configuration\n );\n\n const hasEventSection =\n !!(field as any)?.configurationFields?.account?.value?.label ||\n !!(field as any).action ||\n !!(field as any).exisitingSheet ||\n !!(field as any)?.configurationFields ||\n (!!(field as any).object && isTrigger) ||\n mappingPayloadConfigurationEntries.length > 0;\n\n const hasLegacyMappingEventPieces =\n !!(field as any)?.object ||\n !!(field as any)?.action ||\n !!(field as any)?.configurationFields?.account?.value?.label ||\n !!(field as any)?.configurationFields?.object?.value?.label ||\n !!(field as any)?.configurationFields?.action?.hasAction ||\n !!(field as any)?.configurationFields?.spreadsheet?.value ||\n !!(field as any)?.configurationFields?.reference;\n\n return (\n <>\n {hasEventSection ? (\n <Flex flexDirection=\"column\" gap=\"$6\">\n <Text size=\"sm\" weight=\"bold\" css={{ textTransform: \"uppercase\" }}>\n {DASHBOARD_UI_STRINGS.EVENT}\n </Text>\n <Flex\n alignItems=\"center\"\n css={{\n flexWrap: \"wrap\",\n rowGap: \"$6\",\n }}\n >\n <Flex alignItems=\"center\" gap=\"$20\">\n {!!(field as any)?.object ? (\n <EventComponent\n heading={DASHBOARD_UI_STRINGS.OBJECT}\n description={(field as any)?.configuration?.object?.label ?? field?.object}\n />\n ) : null}\n {!!(field as any)?.action ? (\n <EventComponent\n heading={DASHBOARD_UI_STRINGS.ACTION}\n description={Array.isArray(field?.action)\n ? field.action?.map((a: any) => typeof a === 'object' && a !== null ? a?.label ?? \"\" : a ?? \"\")?.join(\", \")\n : field?.action?.toLowerCase() ?? \"\"}\n />\n ) : null}\n </Flex>\n {!!(field as any)?.configurationFields?.account?.value?.label ? (\n <EventComponent\n heading={DASHBOARD_UI_STRINGS.ACCOUNT}\n description={(field as any)?.configurationFields?.account?.value?.label}\n />\n ) : null}\n {!!(field as any)?.configurationFields?.object?.value?.label ? (\n <EventComponent\n heading={DASHBOARD_UI_STRINGS.OBJECT}\n description={((field as any)?.configurationFields?.object?.value?.label as string)?.replace(\n /^./,\n (char: string) => char?.toUpperCase()\n )}\n />\n ) : null}\n {!!(field as any)?.configurationFields?.action?.hasAction ? (\n <EventComponent\n hasBorder\n heading={DASHBOARD_UI_STRINGS.ACTION}\n description={(field as any)?.configurationFields?.action?.value?.label}\n />\n ) : null}\n {!!(field as any)?.configurationFields?.spreadsheet?.value ? (\n <EventComponent\n hasLink={(field as any)?.configurationFields?.sheetURL as boolean}\n hasBorder\n heading={DASHBOARD_UI_STRINGS.SHEET}\n description={\n typeof (field as any)?.configurationFields?.spreadsheet === \"object\"\n ? (field as any)?.configurationFields?.spreadsheet?.value?.label\n : (field as any)?.configurationFields?.spreadsheet?.value\n }\n />\n ) : null}\n {!!(field as any)?.configurationFields?.reference ? (\n <EventComponent\n hasLink={(field as any)?.configurationFields?.reference?.referenceURL as boolean}\n hasBorder={true}\n heading={(field as any)?.configurationFields?.reference?.title}\n description={(field as any)?.configurationFields?.reference?.description}\n />\n ) : null}\n {mappingPayloadConfigurationEntries.map(({ key, value }, index) => {\n const formatted = formatMappingConfigValue(value);\n return (\n <EventComponent\n key={`mapping-config-${key}`}\n hasBorder={hasLegacyMappingEventPieces || index > 0 || mappingPayloadConfigurationEntries?.length === index - 1}\n heading={`${humanizeMappingConfigKey(key)}:`}\n description={formatted.text}\n hasLink={formatted.link ?? false}\n />\n );\n })}\n </Flex>\n <Box\n css={{\n marginBlock: \"$4\",\n height: \"1px\",\n background: \"$neutral100\",\n }}\n />\n </Flex>\n ) : null}\n </>\n );\n};\n\n"],"names":["Flex","Text","DASHBOARD_UI_STRINGS","EventComponent","_a","Box"],"mappings":"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"}
@@ -10,22 +10,55 @@ var input = require('../../node_modules/@sparrowengg/twigs-react/dist/es/input/i
10
10
  var calendar = require('../../node_modules/@sparrowengg/twigs-react-icons/dist/es/icons/calendar.js');
11
11
  var calendar$1 = require('../../node_modules/@sparrowengg/twigs-react/dist/es/calendar/calendar.js');
12
12
 
13
+ function parseStringToDateValue(v) {
14
+ if (v == null || String(v).trim() === "") {
15
+ return string.parseDate(dayjs_min.default().format("YYYY-MM-DD"));
16
+ }
17
+ const trimmed = String(v).trim();
18
+ try {
19
+ if (/^\d{4}-\d{2}-\d{2}/.test(trimmed)) {
20
+ return string.parseDate(trimmed.slice(0, 10));
21
+ }
22
+ const parsed = dayjs_min.default(trimmed);
23
+ if (parsed.isValid()) {
24
+ return string.parseDate(parsed.format("YYYY-MM-DD"));
25
+ }
26
+ } catch (e) {
27
+ }
28
+ return string.parseDate(dayjs_min.default().format("YYYY-MM-DD"));
29
+ }
30
+ function formatCalendarDateParts(d) {
31
+ return `${d.year}-${String(d.month).padStart(2, "0")}-${String(d.day).padStart(2, "0")}`;
32
+ }
13
33
  const CustomDateMenu = ({
14
34
  onChangeHandler,
15
- value
35
+ value,
36
+ variant = "datetime"
16
37
  }) => {
17
38
  const [popoverOpen, setPopoverOpen] = React.useState(false);
18
- const [date, setDate] = React.useState(() => {
19
- try {
20
- return value ? string.parseDate(value) : string.parseDate(dayjs_min.default().format("YYYY-MM-DD"));
21
- } catch (e) {
22
- return string.parseDate(dayjs_min.default().format("YYYY-MM-DD"));
39
+ const [date, setDate] = React.useState(() => parseStringToDateValue(value));
40
+ React.useEffect(() => {
41
+ setDate(parseStringToDateValue(value));
42
+ }, [value]);
43
+ const inputDisplay = React.useMemo(() => {
44
+ if (value == null || String(value).trim() === "") {
45
+ return "";
46
+ }
47
+ const s = String(value);
48
+ if (variant === "datetime" && s.includes("\u2022")) {
49
+ return s;
50
+ }
51
+ const parsed = dayjs_min.default(s);
52
+ if (parsed.isValid()) {
53
+ return variant === "date" ? parsed.format("MM/DD/YYYY") : parsed.format("MM/DD/YYYY \u2022 HH:mm");
23
54
  }
24
- });
55
+ return s;
56
+ }, [value, variant]);
57
+ const datetimePlaceholder = dayjs_min.default(/* @__PURE__ */ new Date()).format("MM/DD/YYYY \u2022 HH:mm");
25
58
  return /* @__PURE__ */ React.createElement(popover.Popover, { open: popoverOpen, onOpenChange: (open) => setPopoverOpen(open) }, /* @__PURE__ */ React.createElement(popover.PopoverTrigger, { asChild: true }, /* @__PURE__ */ React.createElement(
26
59
  input.Input,
27
60
  {
28
- value: value || dayjs_min.default(/* @__PURE__ */ new Date()).format("MM/DD/YYYY \u2022 HH:mm"),
61
+ value: inputDisplay || (variant === "datetime" ? datetimePlaceholder : ""),
29
62
  size: "lg",
30
63
  readOnly: true,
31
64
  rightIcon: /* @__PURE__ */ React.createElement(calendar.CalendarIcon, null)
@@ -43,10 +76,14 @@ const CustomDateMenu = ({
43
76
  footerActionText: "Apply",
44
77
  value: date,
45
78
  onChange: setDate,
46
- showTimePicker: true,
79
+ showTimePicker: variant === "datetime",
47
80
  footerAction: () => {
48
- const jsDate = new Date(date.year, date.month - 1, date.day);
49
- onChangeHandler(dayjs_min.default(jsDate).format("MM/DD/YYYY \u2022 HH:mm"));
81
+ if (variant === "date") {
82
+ onChangeHandler(formatCalendarDateParts(date));
83
+ } else {
84
+ const jsDate = new Date(date.year, date.month - 1, date.day);
85
+ onChangeHandler(dayjs_min.default(jsDate).format("MM/DD/YYYY \u2022 HH:mm"));
86
+ }
50
87
  setPopoverOpen(false);
51
88
  }
52
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"custom-date-menu.js","sources":["../../../../src/mapping/components/custom-date-menu.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport {\n Calendar,\n Input,\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@sparrowengg/twigs-react\";\nimport { CalendarIcon } from \"@sparrowengg/twigs-react-icons\";\nimport { parseDate, DateValue, CalendarDate } from \"@internationalized/date\";\nimport dayjs from \"dayjs\";\n\ntype CustomDateMenuProps = {\n onChangeHandler: (value: string) => void;\n value: string;\n};\n\nconst CustomDateMenu: React.FC<CustomDateMenuProps> = ({\n onChangeHandler,\n value,\n}) => {\n const [popoverOpen, setPopoverOpen] = useState(false);\n const [date, setDate] = useState<DateValue>(() => {\n try {\n return value ? parseDate(value) : parseDate(dayjs().format(\"YYYY-MM-DD\"));\n } catch (e) {\n return parseDate(dayjs().format(\"YYYY-MM-DD\"));\n }\n });\n\n return (\n <Popover open={popoverOpen} onOpenChange={(open) => setPopoverOpen(open)}>\n <PopoverTrigger asChild>\n <Input\n value={value || dayjs(new Date()).format(\"MM/DD/YYYY HH:mm\")}\n size=\"lg\"\n readOnly\n rightIcon={<CalendarIcon />}\n />\n </PopoverTrigger>\n <PopoverContent\n sideOffset={3}\n css={{ width: 260, padding: 0, borderRadius: \"$xl\" }}\n >\n <Calendar\n size=\"md\"\n footerActionText=\"Apply\"\n value={date}\n onChange={setDate}\n showTimePicker\n footerAction={() => {\n // Convert DateValue to JavaScript Date for dayjs\n const jsDate = new Date(date.year, date.month - 1, date.day);\n onChangeHandler(dayjs(jsDate).format(\"MM/DD/YYYY • HH:mm\"));\n setPopoverOpen(false);\n }}\n />\n </PopoverContent>\n </Popover>\n );\n};\n\nexport default CustomDateMenu;\n"],"names":["useState","parseDate","dayjs","Popover","PopoverTrigger","Input","CalendarIcon","PopoverContent","Calendar"],"mappings":";;;;;;;;;;;;AAiBA,MAAM,iBAAgD,CAAC;AAAA,EACrD,eAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,eAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,eAAoB,MAAM;AAChD,IAAA,IAAI;AACF,MAAA,OAAO,KAAA,GAAQC,iBAAU,KAAK,CAAA,GAAIA,iBAAUC,iBAAA,EAAM,CAAE,MAAA,CAAO,YAAY,CAAC,CAAA;AAAA,IAC1E,SAAS,CAAA,EAAG;AACV,MAAA,OAAOD,gBAAA,CAAUC,iBAAA,EAAM,CAAE,MAAA,CAAO,YAAY,CAAC,CAAA;AAAA,IAC/C;AAAA,EACF,CAAC,CAAA;AAED,EAAA,uBACE,KAAA,CAAA,aAAA,CAACC,eAAA,EAAA,EAAQ,IAAA,EAAM,WAAA,EAAa,YAAA,EAAc,CAAC,IAAA,KAAS,cAAA,CAAe,IAAI,CAAA,EAAA,kBACrE,KAAA,CAAA,aAAA,CAACC,sBAAA,EAAA,EAAe,SAAO,IAAA,EAAA,kBACrB,KAAA,CAAA,aAAA;AAAA,IAACC,WAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,SAASH,iBAAA,iBAAM,IAAI,MAAM,CAAA,CAAE,OAAO,yBAAoB,CAAA;AAAA,MAC7D,IAAA,EAAK,IAAA;AAAA,MACL,QAAA,EAAQ,IAAA;AAAA,MACR,SAAA,sCAAYI,qBAAA,EAAA,IAAa;AAAA;AAAA,GAE7B,CAAA,kBACA,KAAA,CAAA,aAAA;AAAA,IAACC,sBAAA;AAAA,IAAA;AAAA,MACC,UAAA,EAAY,CAAA;AAAA,MACZ,KAAK,EAAE,KAAA,EAAO,KAAK,OAAA,EAAS,CAAA,EAAG,cAAc,KAAA;AAAM,KAAA;AAAA,oBAEnD,KAAA,CAAA,aAAA;AAAA,MAACC,mBAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,IAAA;AAAA,QACL,gBAAA,EAAiB,OAAA;AAAA,QACjB,KAAA,EAAO,IAAA;AAAA,QACP,QAAA,EAAU,OAAA;AAAA,QACV,cAAA,EAAc,IAAA;AAAA,QACd,cAAc,MAAM;AAElB,UAAA,MAAM,MAAA,GAAS,IAAI,IAAA,CAAK,IAAA,CAAK,MAAM,IAAA,CAAK,KAAA,GAAQ,CAAA,EAAG,IAAA,CAAK,GAAG,CAAA;AAC3D,UAAA,eAAA,CAAgBN,iBAAA,CAAM,MAAM,CAAA,CAAE,MAAA,CAAO,yBAAoB,CAAC,CAAA;AAC1D,UAAA,cAAA,CAAe,KAAK,CAAA;AAAA,QACtB;AAAA;AAAA;AACF,GAEJ,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"custom-date-menu.js","sources":["../../../../src/mapping/components/custom-date-menu.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from \"react\";\nimport {\n Calendar,\n Input,\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@sparrowengg/twigs-react\";\nimport { CalendarIcon } from \"@sparrowengg/twigs-react-icons\";\nimport { parseDate, DateValue } from \"@internationalized/date\";\nimport dayjs from \"dayjs\";\n\nexport type CustomDateMenuVariant = \"datetime\" | \"date\";\n\ntype CustomDateMenuProps = {\n onChangeHandler: (value: string) => void;\n value: string | null | undefined;\n /** `datetime` matches legacy mapping default (time + \"•\" format). `date` is calendar-only, ISO `YYYY-MM-DD` on apply. */\n variant?: CustomDateMenuVariant;\n};\n\nfunction parseStringToDateValue(v: string | null | undefined): DateValue {\n if (v == null || String(v).trim() === \"\") {\n return parseDate(dayjs().format(\"YYYY-MM-DD\"));\n }\n const trimmed = String(v).trim();\n try {\n if (/^\\d{4}-\\d{2}-\\d{2}/.test(trimmed)) {\n return parseDate(trimmed.slice(0, 10));\n }\n const parsed = dayjs(trimmed);\n if (parsed.isValid()) {\n return parseDate(parsed.format(\"YYYY-MM-DD\"));\n }\n } catch {\n // fall through\n }\n return parseDate(dayjs().format(\"YYYY-MM-DD\"));\n}\n\nfunction formatCalendarDateParts(d: DateValue): string {\n return `${d.year}-${String(d.month).padStart(2, \"0\")}-${String(d.day).padStart(2, \"0\")}`;\n}\n\nconst CustomDateMenu: React.FC<CustomDateMenuProps> = ({\n onChangeHandler,\n value,\n variant = \"datetime\",\n}) => {\n const [popoverOpen, setPopoverOpen] = useState(false);\n const [date, setDate] = useState<DateValue>(() => parseStringToDateValue(value));\n\n useEffect(() => {\n setDate(parseStringToDateValue(value));\n }, [value]);\n\n const inputDisplay = useMemo(() => {\n if (value == null || String(value).trim() === \"\") {\n return \"\";\n }\n const s = String(value);\n if (variant === \"datetime\" && s.includes(\"•\")) {\n return s;\n }\n const parsed = dayjs(s);\n if (parsed.isValid()) {\n return variant === \"date\"\n ? parsed.format(\"MM/DD/YYYY\")\n : parsed.format(\"MM/DD/YYYY • HH:mm\");\n }\n return s;\n }, [value, variant]);\n\n const datetimePlaceholder = dayjs(new Date()).format(\"MM/DD/YYYY • HH:mm\");\n\n return (\n <Popover open={popoverOpen} onOpenChange={(open) => setPopoverOpen(open)}>\n <PopoverTrigger asChild>\n <Input\n value={\n inputDisplay ||\n (variant === \"datetime\" ? datetimePlaceholder : \"\")\n }\n size=\"lg\"\n readOnly\n rightIcon={<CalendarIcon />}\n />\n </PopoverTrigger>\n <PopoverContent\n sideOffset={3}\n css={{ width: 260, padding: 0, borderRadius: \"$xl\" }}\n >\n <Calendar\n size=\"md\"\n footerActionText=\"Apply\"\n value={date}\n onChange={setDate}\n showTimePicker={variant === \"datetime\"}\n footerAction={() => {\n if (variant === \"date\") {\n onChangeHandler(formatCalendarDateParts(date));\n } else {\n const jsDate = new Date(date.year, date.month - 1, date.day);\n onChangeHandler(dayjs(jsDate).format(\"MM/DD/YYYY • HH:mm\"));\n }\n setPopoverOpen(false);\n }}\n />\n </PopoverContent>\n </Popover>\n );\n};\n\nexport default CustomDateMenu;\n"],"names":["parseDate","dayjs","useState","useEffect","useMemo","Popover","PopoverTrigger","Input","CalendarIcon","PopoverContent","Calendar"],"mappings":"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"}
@@ -68,7 +68,7 @@ const Field = ({
68
68
  removeField,
69
69
  showCustomPropertyModal
70
70
  }) => {
71
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;
71
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p;
72
72
  React.useEffect(() => {
73
73
  if (!field.integrationField) {
74
74
  const foundField = integrationFields.find(
@@ -231,7 +231,7 @@ const Field = ({
231
231
  integrationFieldType: (_p = (_o = (_m = (_k = field == null ? void 0 : field.integrationFieldType) == null ? void 0 : _k.value) != null ? _m : (_l = integrationFields.find(
232
232
  (integrationField) => integrationField.label === (field == null ? void 0 : field.essentialFieldLabel)
233
233
  )) == null ? void 0 : _l.type) != null ? _o : (_n = field.integrationField) == null ? void 0 : _n.type) != null ? _p : "STRING",
234
- value: (_r = (_q = field == null ? void 0 : field.defaultValue) == null ? void 0 : _q.value) != null ? _r : field == null ? void 0 : field.defaultValue
234
+ defaultValue: field == null ? void 0 : field.defaultValue
235
235
  }
236
236
  )
237
237
  )),
@@ -253,8 +253,19 @@ const Field = ({
253
253
  )
254
254
  ));
255
255
  };
256
- const DefaultField = ({ integrationFieldType, handleFieldValue, value }) => {
257
- switch (`${integrationFieldType}`) {
256
+ function resolveDefaultValueForControl(defaultValue) {
257
+ if (defaultValue == null) {
258
+ return void 0;
259
+ }
260
+ if (typeof defaultValue === "object" && defaultValue !== null && "value" in defaultValue) {
261
+ return defaultValue.value;
262
+ }
263
+ return defaultValue;
264
+ }
265
+ const DefaultField = ({ integrationFieldType, handleFieldValue, defaultValue }) => {
266
+ const value = resolveDefaultValueForControl(defaultValue);
267
+ const normalizedType = `${integrationFieldType != null ? integrationFieldType : "STRING"}`.toUpperCase();
268
+ switch (normalizedType) {
258
269
  case "BOOLEAN":
259
270
  return /* @__PURE__ */ React.createElement(
260
271
  select.Select,
@@ -279,10 +290,12 @@ const DefaultField = ({ integrationFieldType, handleFieldValue, value }) => {
279
290
  }
280
291
  );
281
292
  case "DATE_TIME":
293
+ case "DATETIME":
282
294
  return /* @__PURE__ */ React.createElement(
283
295
  customDateMenu.default,
284
296
  {
285
- value,
297
+ variant: "datetime",
298
+ value: value != null && value !== "" ? String(value) : "",
286
299
  onChangeHandler: (dateValue) => {
287
300
  handleFieldValue({
288
301
  type: "DATE_TIME",
@@ -291,6 +304,20 @@ const DefaultField = ({ integrationFieldType, handleFieldValue, value }) => {
291
304
  }
292
305
  }
293
306
  );
307
+ case "DATE":
308
+ return /* @__PURE__ */ React.createElement(
309
+ customDateMenu.default,
310
+ {
311
+ variant: "date",
312
+ value: value != null && value !== "" ? String(value) : "",
313
+ onChangeHandler: (dateValue) => {
314
+ handleFieldValue({
315
+ type: "DATE",
316
+ value: dateValue
317
+ });
318
+ }
319
+ }
320
+ );
294
321
  case "NUMBER":
295
322
  return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
296
323
  input.Input,
@@ -298,11 +325,11 @@ const DefaultField = ({ integrationFieldType, handleFieldValue, value }) => {
298
325
  size: "lg",
299
326
  type: "number",
300
327
  placeholder: "",
301
- value,
328
+ value: value === null || value === void 0 ? "" : value,
302
329
  min: 0,
303
330
  onChange: (e) => handleFieldValue({
304
331
  type: "NUMBER",
305
- value: parseInt(e.currentTarget.value)
332
+ value: parseInt(e.currentTarget.value, 10)
306
333
  })
307
334
  }
308
335
  ));
@@ -312,7 +339,7 @@ const DefaultField = ({ integrationFieldType, handleFieldValue, value }) => {
312
339
  {
313
340
  size: "lg",
314
341
  placeholder: "",
315
- value,
342
+ value: value === null || value === void 0 ? "" : String(value),
316
343
  onChange: (e) => handleFieldValue({
317
344
  type: "STRING",
318
345
  value: e.currentTarget.value