@bigbinary/neeto-molecules 5.3.25 → 5.3.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/mail-Di35Ay-Z.js +20 -0
- package/dist/cjs/mail-Di35Ay-Z.js.map +1 -0
- package/dist/cjs/v2/DynamicVariables.js +17 -8
- package/dist/cjs/v2/DynamicVariables.js.map +1 -1
- package/dist/cjs/v2/EmailForm.js +94 -9
- package/dist/cjs/v2/EmailForm.js.map +1 -1
- package/dist/cjs/v2/SessionEnvironment.js +2 -15
- package/dist/cjs/v2/SessionEnvironment.js.map +1 -1
- package/dist/mail-CkquKByM.js +18 -0
- package/dist/mail-CkquKByM.js.map +1 -0
- package/dist/v2/DynamicVariables.js +18 -9
- package/dist/v2/DynamicVariables.js.map +1 -1
- package/dist/v2/EmailForm.js +97 -12
- package/dist/v2/EmailForm.js.map +1 -1
- package/dist/v2/SessionEnvironment.js +1 -14
- package/dist/v2/SessionEnvironment.js.map +1 -1
- package/package.json +1 -1
- package/src/translations/en.json +1 -0
- package/types/v2/EmailForm.d.ts +1 -0
- package/types/v2/EmailFormProvider.d.ts +3 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var createLucideIcon = require('./createLucideIcon-BbuuRL2u.js');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @license lucide-react v1.24.0 - ISC
|
|
7
|
+
*
|
|
8
|
+
* This source code is licensed under the ISC license.
|
|
9
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
const __iconNode = [
|
|
14
|
+
["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
|
|
15
|
+
["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
|
|
16
|
+
];
|
|
17
|
+
const Mail = createLucideIcon.createLucideIcon("mail", __iconNode);
|
|
18
|
+
|
|
19
|
+
exports.Mail = Mail;
|
|
20
|
+
//# sourceMappingURL=mail-Di35Ay-Z.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mail-Di35Ay-Z.js","sources":["../../node_modules/lucide-react/dist/esm/icons/mail.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.24.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7\", key: \"132q7q\" }],\n [\"rect\", { x: \"2\", y: \"4\", width: \"20\", height: \"16\", rx: \"2\", key: \"izxlao\" }]\n];\nconst Mail = createLucideIcon(\"mail\", __iconNode);\n\nexport { __iconNode, Mail as default };\n//# sourceMappingURL=mail.mjs.map\n"],"names":["createLucideIcon"],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAM,UAAU,GAAG;AACnB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,yCAAyC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC3E,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;AAChF,CAAC;AACI,MAAC,IAAI,GAAGA,iCAAgB,CAAC,MAAM,EAAE,UAAU;;;;","x_google_ignoreList":[0]}
|
|
@@ -33,6 +33,8 @@ const __iconNode = [
|
|
|
33
33
|
];
|
|
34
34
|
const Braces = createLucideIcon.createLucideIcon("braces", __iconNode);
|
|
35
35
|
|
|
36
|
+
var MAX_LABEL_LENGTH = 100;
|
|
37
|
+
|
|
36
38
|
var parseVariables = function parseVariables() {
|
|
37
39
|
var variableArr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
38
40
|
var uncategorized = [];
|
|
@@ -140,14 +142,21 @@ var DynamicVariables = function DynamicVariables(_ref) {
|
|
|
140
142
|
className: "flex flex-wrap items-center gap-2",
|
|
141
143
|
"data-testid": general.joinHyphenCase("dynamic-variables-list", label),
|
|
142
144
|
children: variables.map(function (item) {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
145
|
+
var _item$label;
|
|
146
|
+
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
147
|
+
className: "group relative max-w-full",
|
|
148
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.DropdownMenu.MenuItem, {
|
|
149
|
+
className: "border-border text-foreground hover:border-primary hover:text-primary focus-visible:border-primary focus-visible:text-primary max-w-full cursor-pointer rounded-md border px-1.5 py-1 text-start text-sm leading-tight transition-colors select-none focus:outline-none [&>span]:[overflow-wrap:anywhere] [&>span]:whitespace-normal",
|
|
150
|
+
"data-testid": general.joinHyphenCase("dynamic-variables-list-item", item.label),
|
|
151
|
+
onClick: function onClick() {
|
|
152
|
+
return onVariableClick(item);
|
|
153
|
+
},
|
|
154
|
+
children: neetoCist._truncate(item.label, MAX_LABEL_LENGTH)
|
|
155
|
+
}), ((_item$label = item.label) === null || _item$label === void 0 ? void 0 : _item$label.length) > MAX_LABEL_LENGTH && /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
156
|
+
className: "bg-popover text-popover-foreground border-border pointer-events-none absolute end-0 bottom-full z-50 mb-1 hidden w-80 rounded-md border p-2 text-xs shadow-md group-focus-within:block group-hover:block",
|
|
157
|
+
children: item.label
|
|
158
|
+
})]
|
|
159
|
+
}, item.key);
|
|
151
160
|
})
|
|
152
161
|
})]
|
|
153
162
|
}, label);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicVariables.js","sources":["../../../node_modules/lucide-react/dist/esm/icons/braces.mjs","../../../src/v2/components/DynamicVariables/utils.js","../../../src/v2/components/DynamicVariables/index.jsx"],"sourcesContent":["/**\n * @license lucide-react v1.24.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n { d: \"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1\", key: \"ezmyqa\" }\n ],\n [\n \"path\",\n {\n d: \"M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1\",\n key: \"e1hn23\"\n }\n ]\n];\nconst Braces = createLucideIcon(\"braces\", __iconNode);\n\nexport { __iconNode, Braces as default };\n//# sourceMappingURL=braces.mjs.map\n","import { findBy } from \"neetocist\";\nimport { prop, isEmpty, uniqBy, mergeLeft } from \"ramda\";\n\nexport const parseVariables = (variableArr = []) => {\n const uncategorized = [];\n const groupedVariables = [];\n const categorySet = new Set();\n\n variableArr.forEach(variable => {\n const { category, label, variables } = variable;\n if (category && variables) {\n const parsedVariables = variables.map(\n mergeLeft({ category, categoryLabel: label })\n );\n\n if (!categorySet.has(category)) {\n categorySet.add(category);\n groupedVariables.push({ label, variables: parsedVariables });\n } else {\n const existingGroup = findBy({ label }, groupedVariables);\n\n existingGroup.variables = uniqBy(\n prop(\"key\"),\n existingGroup.variables.concat(parsedVariables)\n );\n }\n } else {\n uncategorized.push(variable);\n }\n });\n\n if (!isEmpty(uncategorized)) {\n groupedVariables.push({\n label: !isEmpty(groupedVariables) ? \"Others\" : null,\n variables: uncategorized,\n });\n }\n\n return groupedVariables;\n};\n","import { Button, cn, DropdownMenu, Typography } from \"@bigbinary/neeto-atoms\";\nimport { Braces } from \"lucide-react\";\nimport { noop } from \"neetocist\";\nimport { joinHyphenCase } from \"neetocommons/v2/utils/general\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"ramda\";\n\nimport { parseVariables } from \"./utils\";\n\nconst DynamicVariables = ({\n onVariableClick = noop,\n variables = [],\n buttonProps,\n ...dropdownProps\n}) => {\n if (isEmpty(variables)) return null;\n\n const parsedVariables = parseVariables(variables);\n\n return (\n // End-aligned with collision padding: the trigger usually sits at the\n // content's right edge (e.g. the editor's variables button), so a\n // start-aligned panel would hang past the viewport and get clipped.\n <DropdownMenu\n position=\"bottom-end\"\n customTarget={\n // The inline-flex wrapper keeps the popper anchor button-sized;\n // otherwise the trigger element can stretch with its container and\n // end-align the panel far past the visible button.\n <div className=\"inline-flex\">\n <Button\n data-testid=\"dynamic-variables-button\"\n icon={Braces}\n size=\"icon\"\n variant=\"outline\"\n {...buttonProps}\n />\n </div>\n }\n {...dropdownProps}\n dropdownProps={{\n collisionPadding: 8,\n ...dropdownProps?.dropdownProps,\n // w-max frees the popup from the content wrapper's default\n // trigger-width lock (which clips the chip grid via its\n // overflow-x-hidden). Merge it last so a consumer's className\n // (e.g. SubjectField's overflow-y-auto) augments rather than\n // clobbers the width.\n className: cn(\"w-max\", dropdownProps?.dropdownProps?.className),\n }}\n >\n {/* Groups own their label-to-chips gap; the outer column spaces the\n groups themselves (the editor's old h6-based margin rule no longer\n matches now that the label is a caption span). */}\n <div\n className=\"flex max-w-[22.5rem] min-w-64 flex-col gap-3 p-3\"\n data-testid=\"dynamic-variables-list\"\n >\n {parsedVariables.map(({ label, variables }) => (\n <div className=\"flex flex-col gap-1.5\" key={label}>\n {label && (\n <div className=\"flex flex-row items-center gap-x-2\">\n {/* Group label, not a heading: caption keeps the v1 12px;\n medium weight so the uppercase run still reads muted. */}\n <Typography\n className=\"uppercase\"\n color=\"muted\"\n variant=\"caption\"\n weight=\"medium\"\n >\n {label}\n </Typography>\n <hr className=\"border-border flex flex-grow\" />\n </div>\n )}\n <div\n className=\"flex flex-wrap items-center gap-2\"\n data-testid={joinHyphenCase(\"dynamic-variables-list\", label)}\n >\n {variables.map(item => (\n <DropdownMenu.MenuItem\n className=\"border-border text-foreground hover:border-primary hover:text-primary focus-visible:border-primary focus-visible:text-primary cursor-pointer rounded-md border px-1.5 py-1 text-start text-sm leading-tight transition-colors select-none focus:outline-none\"\n key={item.label}\n data-testid={joinHyphenCase(\n \"dynamic-variables-list-item\",\n item.label\n )}\n onClick={() => onVariableClick(item)}\n >\n {item.label}\n </DropdownMenu.MenuItem>\n ))}\n </div>\n </div>\n ))}\n </div>\n </DropdownMenu>\n );\n};\n\nDynamicVariables.propTypes = {\n onVariableClick: PropTypes.func,\n variables: PropTypes.arrayOf(\n PropTypes.shape({ label: PropTypes.string, key: PropTypes.string })\n ),\n};\n\nexport default DynamicVariables;\n"],"names":["createLucideIcon","parseVariables","variableArr","arguments","length","undefined","uncategorized","groupedVariables","categorySet","Set","forEach","variable","category","label","variables","parsedVariables","map","mergeLeft","categoryLabel","has","add","push","existingGroup","findBy","uniqBy","prop","concat","isEmpty","DynamicVariables","_ref","_dropdownProps$dropdo","_ref$onVariableClick","onVariableClick","noop","_ref$variables","buttonProps","dropdownProps","_objectWithoutProperties","_excluded","_jsx","DropdownMenu","_objectSpread","position","customTarget","className","children","Button","icon","Braces","size","variant","collisionPadding","cn","_ref2","_jsxs","Typography","color","weight","joinHyphenCase","item","MenuItem","onClick"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"DynamicVariables.js","sources":["../../../node_modules/lucide-react/dist/esm/icons/braces.mjs","../../../src/v2/components/DynamicVariables/constants.js","../../../src/v2/components/DynamicVariables/utils.js","../../../src/v2/components/DynamicVariables/index.jsx"],"sourcesContent":["/**\n * @license lucide-react v1.24.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n { d: \"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1\", key: \"ezmyqa\" }\n ],\n [\n \"path\",\n {\n d: \"M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1\",\n key: \"e1hn23\"\n }\n ]\n];\nconst Braces = createLucideIcon(\"braces\", __iconNode);\n\nexport { __iconNode, Braces as default };\n//# sourceMappingURL=braces.mjs.map\n","export const MAX_LABEL_LENGTH = 100;\n","import { findBy } from \"neetocist\";\nimport { prop, isEmpty, uniqBy, mergeLeft } from \"ramda\";\n\nexport const parseVariables = (variableArr = []) => {\n const uncategorized = [];\n const groupedVariables = [];\n const categorySet = new Set();\n\n variableArr.forEach(variable => {\n const { category, label, variables } = variable;\n if (category && variables) {\n const parsedVariables = variables.map(\n mergeLeft({ category, categoryLabel: label })\n );\n\n if (!categorySet.has(category)) {\n categorySet.add(category);\n groupedVariables.push({ label, variables: parsedVariables });\n } else {\n const existingGroup = findBy({ label }, groupedVariables);\n\n existingGroup.variables = uniqBy(\n prop(\"key\"),\n existingGroup.variables.concat(parsedVariables)\n );\n }\n } else {\n uncategorized.push(variable);\n }\n });\n\n if (!isEmpty(uncategorized)) {\n groupedVariables.push({\n label: !isEmpty(groupedVariables) ? \"Others\" : null,\n variables: uncategorized,\n });\n }\n\n return groupedVariables;\n};\n","import { Button, cn, DropdownMenu, Typography } from \"@bigbinary/neeto-atoms\";\nimport { Braces } from \"lucide-react\";\nimport { noop, _truncate } from \"neetocist\";\nimport { joinHyphenCase } from \"neetocommons/v2/utils/general\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty } from \"ramda\";\n\nimport { MAX_LABEL_LENGTH } from \"./constants\";\nimport { parseVariables } from \"./utils\";\n\nconst DynamicVariables = ({\n onVariableClick = noop,\n variables = [],\n buttonProps,\n ...dropdownProps\n}) => {\n if (isEmpty(variables)) return null;\n\n const parsedVariables = parseVariables(variables);\n\n return (\n // End-aligned with collision padding: the trigger usually sits at the\n // content's right edge (e.g. the editor's variables button), so a\n // start-aligned panel would hang past the viewport and get clipped.\n <DropdownMenu\n position=\"bottom-end\"\n customTarget={\n // The inline-flex wrapper keeps the popper anchor button-sized;\n // otherwise the trigger element can stretch with its container and\n // end-align the panel far past the visible button.\n <div className=\"inline-flex\">\n <Button\n data-testid=\"dynamic-variables-button\"\n icon={Braces}\n size=\"icon\"\n variant=\"outline\"\n {...buttonProps}\n />\n </div>\n }\n {...dropdownProps}\n dropdownProps={{\n collisionPadding: 8,\n ...dropdownProps?.dropdownProps,\n // w-max frees the popup from the content wrapper's default\n // trigger-width lock (which clips the chip grid via its\n // overflow-x-hidden). Merge it last so a consumer's className\n // (e.g. SubjectField's overflow-y-auto) augments rather than\n // clobbers the width.\n className: cn(\"w-max\", dropdownProps?.dropdownProps?.className),\n }}\n >\n {/* Groups own their label-to-chips gap; the outer column spaces the\n groups themselves (the editor's old h6-based margin rule no longer\n matches now that the label is a caption span). */}\n <div\n className=\"flex max-w-[22.5rem] min-w-64 flex-col gap-3 p-3\"\n data-testid=\"dynamic-variables-list\"\n >\n {parsedVariables.map(({ label, variables }) => (\n <div className=\"flex flex-col gap-1.5\" key={label}>\n {label && (\n <div className=\"flex flex-row items-center gap-x-2\">\n {/* Group label, not a heading: caption keeps the v1 12px;\n medium weight so the uppercase run still reads muted. */}\n <Typography\n className=\"uppercase\"\n color=\"muted\"\n variant=\"caption\"\n weight=\"medium\"\n >\n {label}\n </Typography>\n <hr className=\"border-border flex flex-grow\" />\n </div>\n )}\n <div\n className=\"flex flex-wrap items-center gap-2\"\n data-testid={joinHyphenCase(\"dynamic-variables-list\", label)}\n >\n {variables.map(item => (\n <div className=\"group relative max-w-full\" key={item.key}>\n <DropdownMenu.MenuItem\n className=\"border-border text-foreground hover:border-primary hover:text-primary focus-visible:border-primary focus-visible:text-primary max-w-full cursor-pointer rounded-md border px-1.5 py-1 text-start text-sm leading-tight transition-colors select-none focus:outline-none [&>span]:[overflow-wrap:anywhere] [&>span]:whitespace-normal\"\n data-testid={joinHyphenCase(\n \"dynamic-variables-list-item\",\n item.label\n )}\n onClick={() => onVariableClick(item)}\n >\n {_truncate(item.label, MAX_LABEL_LENGTH)}\n </DropdownMenu.MenuItem>\n {item.label?.length > MAX_LABEL_LENGTH && (\n <span className=\"bg-popover text-popover-foreground border-border pointer-events-none absolute end-0 bottom-full z-50 mb-1 hidden w-80 rounded-md border p-2 text-xs shadow-md group-focus-within:block group-hover:block\">\n {item.label}\n </span>\n )}\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n </DropdownMenu>\n );\n};\n\nDynamicVariables.propTypes = {\n onVariableClick: PropTypes.func,\n variables: PropTypes.arrayOf(\n PropTypes.shape({ label: PropTypes.string, key: PropTypes.string })\n ),\n};\n\nexport default DynamicVariables;\n"],"names":["createLucideIcon","MAX_LABEL_LENGTH","parseVariables","variableArr","arguments","length","undefined","uncategorized","groupedVariables","categorySet","Set","forEach","variable","category","label","variables","parsedVariables","map","mergeLeft","categoryLabel","has","add","push","existingGroup","findBy","uniqBy","prop","concat","isEmpty","DynamicVariables","_ref","_dropdownProps$dropdo","_ref$onVariableClick","onVariableClick","noop","_ref$variables","buttonProps","dropdownProps","_objectWithoutProperties","_excluded","_jsx","DropdownMenu","_objectSpread","position","customTarget","className","children","Button","icon","Braces","size","variant","collisionPadding","cn","_ref2","_jsxs","Typography","color","weight","joinHyphenCase","item","_item$label","MenuItem","onClick","_truncate","key"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/cjs/v2/EmailForm.js
CHANGED
|
@@ -19,6 +19,8 @@ var _typeof = require('@babel/runtime/helpers/typeof');
|
|
|
19
19
|
var jsxRuntime = require('react/jsx-runtime');
|
|
20
20
|
var v2_SendToFields = require('./SendToFields.js');
|
|
21
21
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
22
|
+
var primitives = require('@bigbinary/neeto-atoms/primitives');
|
|
23
|
+
var mail = require('../mail-Di35Ay-Z.js');
|
|
22
24
|
var general = require('@bigbinary/neeto-commons-frontend/v2/utils/general');
|
|
23
25
|
var v2_DynamicVariables = require('./DynamicVariables.js');
|
|
24
26
|
var v2_Header = require('./Header.js');
|
|
@@ -35,7 +37,6 @@ require('../_commonjsHelpers-BJu3ubxk.js');
|
|
|
35
37
|
require('stream');
|
|
36
38
|
require('@babel/runtime/helpers/objectWithoutProperties');
|
|
37
39
|
require('./Breadcrumbs.js');
|
|
38
|
-
require('@bigbinary/neeto-atoms/primitives');
|
|
39
40
|
require('react-router-dom');
|
|
40
41
|
require('./HelpPopover.js');
|
|
41
42
|
require('../circle-question-mark-BijjM_4y.js');
|
|
@@ -120,22 +121,24 @@ var EDITOR_ADDONS = ["highlight", "emoji", "code-block", "block-quote", "image-u
|
|
|
120
121
|
var EmailFormContext = /*#__PURE__*/React.createContext({
|
|
121
122
|
showSendToField: false,
|
|
122
123
|
showSendToAsRadio: false,
|
|
124
|
+
showSendToAsSelect: false,
|
|
123
125
|
showReplyToField: false,
|
|
124
126
|
showCcField: false,
|
|
125
127
|
showBccField: false
|
|
126
128
|
});
|
|
127
129
|
|
|
128
|
-
function ownKeys$
|
|
129
|
-
function _objectSpread$
|
|
130
|
+
function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
131
|
+
function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
130
132
|
var getValidationSchema = function getValidationSchema(_ref) {
|
|
131
133
|
var showSendToField = _ref.showSendToField,
|
|
132
134
|
showReplyToField = _ref.showReplyToField,
|
|
133
135
|
showSendToAsRadio = _ref.showSendToAsRadio,
|
|
136
|
+
showSendToAsSelect = _ref.showSendToAsSelect,
|
|
134
137
|
customValidations = _ref.customValidations,
|
|
135
138
|
maxEmails = _ref.maxEmails;
|
|
136
139
|
var schema = EMAIL_FORM_VALIDATION_SCHEMA.clone();
|
|
137
140
|
if (showSendToField) {
|
|
138
|
-
schema = schema.concat(showSendToAsRadio ? SEND_TO_ID_FIELD_VALIDATION : sendToFieldValidation(maxEmails));
|
|
141
|
+
schema = schema.concat(showSendToAsRadio || showSendToAsSelect ? SEND_TO_ID_FIELD_VALIDATION : sendToFieldValidation(maxEmails));
|
|
139
142
|
}
|
|
140
143
|
if (showReplyToField) schema = schema.concat(REPLY_TO_FIELD_VALIDATION);
|
|
141
144
|
var isYupObject = customValidations.type === "object";
|
|
@@ -150,10 +153,10 @@ var getValidationSchema = function getValidationSchema(_ref) {
|
|
|
150
153
|
var getReplyToFieldLabelProps = function getReplyToFieldLabelProps(_ref2) {
|
|
151
154
|
var popoverProps = _ref2.popoverProps;
|
|
152
155
|
return {
|
|
153
|
-
helpIconProps: _objectSpread$
|
|
156
|
+
helpIconProps: _objectSpread$4({
|
|
154
157
|
className: "reply-to-help-icon"
|
|
155
158
|
}, neetoCist.isPresent(popoverProps) ? {
|
|
156
|
-
popoverProps: _objectSpread$
|
|
159
|
+
popoverProps: _objectSpread$4(_objectSpread$4({}, popoverProps), {}, {
|
|
157
160
|
description: popoverProps.description || i18next.t("neetoMolecules.emailForm.tooltips.replyTo")
|
|
158
161
|
})
|
|
159
162
|
} : {
|
|
@@ -251,6 +254,77 @@ var SendToField = function SendToField(_ref) {
|
|
|
251
254
|
});
|
|
252
255
|
};
|
|
253
256
|
|
|
257
|
+
function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
258
|
+
function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
259
|
+
var renderOptionLabel = function renderOptionLabel(_ref) {
|
|
260
|
+
var label = _ref.label;
|
|
261
|
+
return /*#__PURE__*/jsxRuntime.jsxs("span", {
|
|
262
|
+
className: "flex min-w-0 items-center gap-2",
|
|
263
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(mail.Mail, {
|
|
264
|
+
"aria-hidden": true,
|
|
265
|
+
className: "text-muted-foreground size-4 shrink-0"
|
|
266
|
+
}), /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
267
|
+
className: "truncate",
|
|
268
|
+
title: label,
|
|
269
|
+
children: label
|
|
270
|
+
})]
|
|
271
|
+
});
|
|
272
|
+
};
|
|
273
|
+
var SendToQuestionField = function SendToQuestionField(_ref2) {
|
|
274
|
+
var options = _ref2.options;
|
|
275
|
+
var _useTranslation = reactI18next.useTranslation(),
|
|
276
|
+
t = _useTranslation.t;
|
|
277
|
+
var _useField = formik.useField("sendToId"),
|
|
278
|
+
_useField2 = _slicedToArray(_useField, 3),
|
|
279
|
+
field = _useField2[0],
|
|
280
|
+
meta = _useField2[1],
|
|
281
|
+
setValue = _useField2[2].setValue;
|
|
282
|
+
var singleOptionValue = options.length === 1 ? options[0].value : undefined;
|
|
283
|
+
var selectedOption = neetoCist.findBy({
|
|
284
|
+
value: field.value
|
|
285
|
+
}, options);
|
|
286
|
+
React.useEffect(function () {
|
|
287
|
+
if (singleOptionValue !== undefined && field.value !== singleOptionValue) {
|
|
288
|
+
setValue(singleOptionValue);
|
|
289
|
+
}
|
|
290
|
+
}, [field.value, setValue, singleOptionValue]);
|
|
291
|
+
var fieldProps = {
|
|
292
|
+
required: true,
|
|
293
|
+
label: t("neetoMolecules.emailForm.labels.getEmailAddressFrom"),
|
|
294
|
+
labelProps: {
|
|
295
|
+
className: "text-muted-foreground font-normal [&>.text-destructive]:hidden"
|
|
296
|
+
},
|
|
297
|
+
className: "grid items-center gap-3 sm:grid-cols-[auto_minmax(0,1fr)]",
|
|
298
|
+
size: "large"
|
|
299
|
+
};
|
|
300
|
+
return /*#__PURE__*/jsxRuntime.jsxs(primitives.FieldSet, {
|
|
301
|
+
className: "w-full gap-3 p-0",
|
|
302
|
+
"data-testid": "send-to-id",
|
|
303
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs(primitives.FieldLegend, {
|
|
304
|
+
className: "flex items-center gap-2",
|
|
305
|
+
variant: "label",
|
|
306
|
+
children: [t("neetoMolecules.emailForm.labels.sendTo"), /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
307
|
+
"aria-hidden": true,
|
|
308
|
+
className: "text-destructive",
|
|
309
|
+
children: "*"
|
|
310
|
+
})]
|
|
311
|
+
}), options.length === 1 ? /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Input, _objectSpread$3(_objectSpread$3({}, fieldProps), {}, {
|
|
312
|
+
readOnly: true,
|
|
313
|
+
error: meta.touched ? meta.error : undefined,
|
|
314
|
+
prefix: /*#__PURE__*/jsxRuntime.jsx(mail.Mail, {
|
|
315
|
+
"aria-hidden": true
|
|
316
|
+
}),
|
|
317
|
+
value: (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) || ""
|
|
318
|
+
})) : /*#__PURE__*/jsxRuntime.jsx(formik$1.Select, _objectSpread$3(_objectSpread$3({}, _objectSpread$3(_objectSpread$3({}, fieldProps), {}, {
|
|
319
|
+
options: options
|
|
320
|
+
})), {}, {
|
|
321
|
+
formatOptionLabel: renderOptionLabel,
|
|
322
|
+
isSearchable: false,
|
|
323
|
+
name: "sendToId"
|
|
324
|
+
}))]
|
|
325
|
+
});
|
|
326
|
+
};
|
|
327
|
+
|
|
254
328
|
var SubjectField = function SubjectField(_ref) {
|
|
255
329
|
var name = _ref.name,
|
|
256
330
|
text = _ref.text,
|
|
@@ -340,6 +414,7 @@ var EmailForm = function EmailForm(_ref) {
|
|
|
340
414
|
var _useContext = React.useContext(EmailFormContext),
|
|
341
415
|
showSendToField = _useContext.showSendToField,
|
|
342
416
|
showSendToAsRadio = _useContext.showSendToAsRadio,
|
|
417
|
+
showSendToAsSelect = _useContext.showSendToAsSelect,
|
|
343
418
|
showReplyToField = _useContext.showReplyToField,
|
|
344
419
|
showCcField = _useContext.showCcField,
|
|
345
420
|
showBccField = _useContext.showBccField;
|
|
@@ -355,8 +430,9 @@ var EmailForm = function EmailForm(_ref) {
|
|
|
355
430
|
});
|
|
356
431
|
var disabled = ramda.equals(normalizedValues, normalizedDefaultValues);
|
|
357
432
|
var sendToFieldOptions = (sendToFieldProps === null || sendToFieldProps === void 0 ? void 0 : sendToFieldProps.options) || sendToOptions;
|
|
358
|
-
var
|
|
359
|
-
var
|
|
433
|
+
var showSendToSelectField = showSendToField && showSendToAsSelect;
|
|
434
|
+
var showSendToRadioField = showSendToField && showSendToAsRadio && !showSendToSelectField && neetoCist.isNotEmpty(sendToFieldOptions);
|
|
435
|
+
var showSendToTextField = showSendToField && !showSendToSelectField && !showSendToRadioField;
|
|
360
436
|
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
361
437
|
"data-testid": "email-form",
|
|
362
438
|
className: classnames("flex flex-1 flex-col items-start gap-2 !pb-0", _defineProperty({}, className, className)),
|
|
@@ -364,7 +440,9 @@ var EmailForm = function EmailForm(_ref) {
|
|
|
364
440
|
className: "w-full grow",
|
|
365
441
|
children: showFields && /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
366
442
|
className: "flex w-full flex-col items-start justify-start gap-5",
|
|
367
|
-
children: [
|
|
443
|
+
children: [showSendToSelectField && /*#__PURE__*/jsxRuntime.jsx(SendToQuestionField, {
|
|
444
|
+
options: sendToFieldOptions
|
|
445
|
+
}), showSendToRadioField && /*#__PURE__*/jsxRuntime.jsx(formik$1.RadioGroup, {
|
|
368
446
|
className: "pb-2",
|
|
369
447
|
"data-testid": "send-to-id",
|
|
370
448
|
label: t("neetoMolecules.emailForm.labels.sendTo"),
|
|
@@ -474,6 +552,8 @@ var EmailFormComponent = function EmailFormComponent(_ref) {
|
|
|
474
552
|
showReplyToField = _ref$showReplyToField === void 0 ? false : _ref$showReplyToField,
|
|
475
553
|
_ref$showSendToAsRadi = _ref.showSendToAsRadio,
|
|
476
554
|
showSendToAsRadio = _ref$showSendToAsRadi === void 0 ? false : _ref$showSendToAsRadi,
|
|
555
|
+
_ref$showSendToAsSele = _ref.showSendToAsSelect,
|
|
556
|
+
showSendToAsSelect = _ref$showSendToAsSele === void 0 ? false : _ref$showSendToAsSele,
|
|
477
557
|
_ref$blockNavigation = _ref.blockNavigation,
|
|
478
558
|
blockNavigation = _ref$blockNavigation === void 0 ? true : _ref$blockNavigation,
|
|
479
559
|
_ref$showCcField = _ref.showCcField,
|
|
@@ -512,6 +592,7 @@ var EmailFormComponent = function EmailFormComponent(_ref) {
|
|
|
512
592
|
showCcField: showCcField,
|
|
513
593
|
showReplyToField: showReplyToField,
|
|
514
594
|
showSendToAsRadio: showSendToAsRadio,
|
|
595
|
+
showSendToAsSelect: showSendToAsSelect,
|
|
515
596
|
showSendToField: showSendToField,
|
|
516
597
|
validationSchema: validationSchema,
|
|
517
598
|
children: function children(_ref2) {
|
|
@@ -577,6 +658,8 @@ var EmailFormProvider = function EmailFormProvider(_ref) {
|
|
|
577
658
|
showReplyToField = _ref$showReplyToField === void 0 ? false : _ref$showReplyToField,
|
|
578
659
|
_ref$showSendToAsRadi = _ref.showSendToAsRadio,
|
|
579
660
|
showSendToAsRadio = _ref$showSendToAsRadi === void 0 ? false : _ref$showSendToAsRadi,
|
|
661
|
+
_ref$showSendToAsSele = _ref.showSendToAsSelect,
|
|
662
|
+
showSendToAsSelect = _ref$showSendToAsSele === void 0 ? false : _ref$showSendToAsSele,
|
|
580
663
|
_ref$showCcField = _ref.showCcField,
|
|
581
664
|
showCcField = _ref$showCcField === void 0 ? false : _ref$showCcField,
|
|
582
665
|
_ref$showBccField = _ref.showBccField,
|
|
@@ -589,6 +672,7 @@ var EmailFormProvider = function EmailFormProvider(_ref) {
|
|
|
589
672
|
value: {
|
|
590
673
|
showSendToField: showSendToField,
|
|
591
674
|
showSendToAsRadio: showSendToAsRadio,
|
|
675
|
+
showSendToAsSelect: showSendToAsSelect,
|
|
592
676
|
showReplyToField: showReplyToField,
|
|
593
677
|
showCcField: showCcField,
|
|
594
678
|
showBccField: showBccField
|
|
@@ -600,6 +684,7 @@ var EmailFormProvider = function EmailFormProvider(_ref) {
|
|
|
600
684
|
showSendToField: showSendToField,
|
|
601
685
|
showReplyToField: showReplyToField,
|
|
602
686
|
showSendToAsRadio: showSendToAsRadio,
|
|
687
|
+
showSendToAsSelect: showSendToAsSelect,
|
|
603
688
|
customValidations: customValidations,
|
|
604
689
|
maxEmails: maxEmails
|
|
605
690
|
}),
|