@elementor/editor-controls 4.3.0-1008 → 4.3.0-1009
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/index.js +47 -10
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +52 -15
- package/dist/index.mjs.map +1 -1
- package/package.json +16 -16
- package/src/controls/email-form-action-control/email-chips-field.tsx +37 -10
- package/src/controls/email-form-action-control/fields.tsx +38 -15
- package/src/controls/email-form-action-control/utils.ts +6 -0
- package/src/controls/mention-text-area-control.tsx +2 -2
package/dist/index.js
CHANGED
|
@@ -8299,6 +8299,10 @@ var CHIP_TRIGGER_KEYS = /* @__PURE__ */ new Set([" ", ","]);
|
|
|
8299
8299
|
function isValidEmail(email) {
|
|
8300
8300
|
return import_schema.z.string().email().safeParse(email).success;
|
|
8301
8301
|
}
|
|
8302
|
+
var FORM_FIELD_SHORTCODE_PATTERN = /^\[[^[\]]+]$/;
|
|
8303
|
+
function isFormFieldShortcode(value) {
|
|
8304
|
+
return FORM_FIELD_SHORTCODE_PATTERN.test(value);
|
|
8305
|
+
}
|
|
8302
8306
|
var shouldShowMentionsInfo = () => {
|
|
8303
8307
|
if (!(0, import_utils9.hasProInstalled)()) {
|
|
8304
8308
|
return true;
|
|
@@ -8311,14 +8315,26 @@ var shouldShowMentionsInfo = () => {
|
|
|
8311
8315
|
};
|
|
8312
8316
|
|
|
8313
8317
|
// src/controls/email-form-action-control/email-chips-field.tsx
|
|
8314
|
-
var
|
|
8318
|
+
var isValidRecipient = (address) => isValidEmail(address) || isFormFieldShortcode(address);
|
|
8319
|
+
function resolveMention(raw, suggestions) {
|
|
8320
|
+
if (!raw.startsWith("@")) {
|
|
8321
|
+
return raw;
|
|
8322
|
+
}
|
|
8323
|
+
const match = suggestions.find((suggestion) => createMentionPattern(suggestion.value, "start").test(raw));
|
|
8324
|
+
return match ? `[${match.value}]` : raw;
|
|
8325
|
+
}
|
|
8326
|
+
var EmailChipsControl = createControl(({ placeholder, suggestions = [] }) => {
|
|
8315
8327
|
const { value, setValue, disabled } = useBoundProp(import_editor_props65.stringArrayPropTypeUtil);
|
|
8316
8328
|
const [inputValue, setInputValue] = (0, import_react69.useState)("");
|
|
8317
8329
|
const items2 = value || [];
|
|
8318
8330
|
const selectedValues = items2.map((item) => import_editor_props65.stringPropTypeUtil.extract(item)).filter((val) => val !== null);
|
|
8331
|
+
const suggestionOptions = (0, import_react69.useMemo)(
|
|
8332
|
+
() => suggestions.map((suggestion) => `[${suggestion.value}]`),
|
|
8333
|
+
[suggestions]
|
|
8334
|
+
);
|
|
8319
8335
|
const tryAddChip = (raw) => {
|
|
8320
|
-
const address = raw.trim();
|
|
8321
|
-
if (!address || selectedValues.includes(address) || !
|
|
8336
|
+
const address = resolveMention(raw.trim(), suggestions);
|
|
8337
|
+
if (!address || selectedValues.includes(address) || !isValidRecipient(address)) {
|
|
8322
8338
|
return;
|
|
8323
8339
|
}
|
|
8324
8340
|
setValue([...items2, import_editor_props65.stringPropTypeUtil.create(address)]);
|
|
@@ -8327,8 +8343,8 @@ var EmailChipsControl = createControl(({ placeholder }) => {
|
|
|
8327
8343
|
const handleChange = (_, newValue) => {
|
|
8328
8344
|
const updated = [];
|
|
8329
8345
|
for (const entry of newValue) {
|
|
8330
|
-
const address = entry.trim();
|
|
8331
|
-
if (!address || !
|
|
8346
|
+
const address = resolveMention(entry.trim(), suggestions);
|
|
8347
|
+
if (!address || !isValidRecipient(address)) {
|
|
8332
8348
|
continue;
|
|
8333
8349
|
}
|
|
8334
8350
|
updated.push(import_editor_props65.stringPropTypeUtil.create(address));
|
|
@@ -8363,7 +8379,12 @@ var EmailChipsControl = createControl(({ placeholder }) => {
|
|
|
8363
8379
|
},
|
|
8364
8380
|
value: selectedValues,
|
|
8365
8381
|
onChange: handleChange,
|
|
8366
|
-
options:
|
|
8382
|
+
options: suggestionOptions,
|
|
8383
|
+
filterOptions: (options, state) => {
|
|
8384
|
+
const query = state.inputValue.trim().replace(/^@/, "").toLowerCase();
|
|
8385
|
+
return query ? options.filter((option) => option.toLowerCase().includes(query)) : options;
|
|
8386
|
+
},
|
|
8387
|
+
filterSelectedOptions: true,
|
|
8367
8388
|
onBlur: handleBlur,
|
|
8368
8389
|
getOptionLabel: (option) => option,
|
|
8369
8390
|
isOptionEqualToValue: (option, val) => option === val,
|
|
@@ -8372,7 +8393,7 @@ var EmailChipsControl = createControl(({ placeholder }) => {
|
|
|
8372
8393
|
}
|
|
8373
8394
|
));
|
|
8374
8395
|
});
|
|
8375
|
-
var EmailChipsField = ({ fieldLabel, placeholder }) => /* @__PURE__ */ React116.createElement(import_ui100.Grid, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React116.createElement(import_ui100.Grid, { item: true }, /* @__PURE__ */ React116.createElement(ControlFormLabel, null, fieldLabel)), /* @__PURE__ */ React116.createElement(import_ui100.Grid, { item: true }, /* @__PURE__ */ React116.createElement(EmailChipsControl, { placeholder })));
|
|
8396
|
+
var EmailChipsField = ({ fieldLabel, placeholder, suggestions }) => /* @__PURE__ */ React116.createElement(import_ui100.Grid, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React116.createElement(import_ui100.Grid, { item: true }, /* @__PURE__ */ React116.createElement(ControlFormLabel, null, fieldLabel)), /* @__PURE__ */ React116.createElement(import_ui100.Grid, { item: true }, /* @__PURE__ */ React116.createElement(EmailChipsControl, { placeholder, suggestions })));
|
|
8376
8397
|
|
|
8377
8398
|
// src/controls/email-form-action-control/email-field.tsx
|
|
8378
8399
|
var React117 = __toESM(require("react"));
|
|
@@ -8380,7 +8401,17 @@ var import_ui101 = require("@elementor/ui");
|
|
|
8380
8401
|
var EmailField = ({ bind, label, placeholder }) => /* @__PURE__ */ React117.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React117.createElement(import_ui101.Grid, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React117.createElement(import_ui101.Grid, { item: true }, /* @__PURE__ */ React117.createElement(ControlFormLabel, null, label)), /* @__PURE__ */ React117.createElement(import_ui101.Grid, { item: true }, /* @__PURE__ */ React117.createElement(TextControl, { placeholder }))));
|
|
8381
8402
|
|
|
8382
8403
|
// src/controls/email-form-action-control/fields.tsx
|
|
8383
|
-
var SendToField = ({ placeholder }) =>
|
|
8404
|
+
var SendToField = ({ placeholder }) => {
|
|
8405
|
+
const suggestions = useFormFieldSuggestions({ inputType: "email" });
|
|
8406
|
+
return /* @__PURE__ */ React118.createElement(PropKeyProvider, { bind: "to" }, /* @__PURE__ */ React118.createElement(import_ui102.Stack, { gap: 0.5 }, /* @__PURE__ */ React118.createElement(
|
|
8407
|
+
EmailChipsField,
|
|
8408
|
+
{
|
|
8409
|
+
fieldLabel: (0, import_i18n57.__)("Send to", "elementor"),
|
|
8410
|
+
placeholder,
|
|
8411
|
+
suggestions
|
|
8412
|
+
}
|
|
8413
|
+
), shouldShowMentionsInfo() && /* @__PURE__ */ React118.createElement(import_editor_ui15.InfoAlert, null, (0, import_i18n57.__)("Type @ or an email field name to insert its submitted value.", "elementor"))));
|
|
8414
|
+
};
|
|
8384
8415
|
var SubjectField = () => /* @__PURE__ */ React118.createElement(
|
|
8385
8416
|
EmailField,
|
|
8386
8417
|
{
|
|
@@ -8424,8 +8455,14 @@ var ReplyToField = () => {
|
|
|
8424
8455
|
}
|
|
8425
8456
|
))));
|
|
8426
8457
|
};
|
|
8427
|
-
var CcField = () =>
|
|
8428
|
-
|
|
8458
|
+
var CcField = () => {
|
|
8459
|
+
const suggestions = useFormFieldSuggestions({ inputType: "email" });
|
|
8460
|
+
return /* @__PURE__ */ React118.createElement(PropKeyProvider, { bind: "cc" }, /* @__PURE__ */ React118.createElement(EmailChipsField, { fieldLabel: (0, import_i18n57.__)("Cc", "elementor"), suggestions }));
|
|
8461
|
+
};
|
|
8462
|
+
var BccField = () => {
|
|
8463
|
+
const suggestions = useFormFieldSuggestions({ inputType: "email" });
|
|
8464
|
+
return /* @__PURE__ */ React118.createElement(PropKeyProvider, { bind: "bcc" }, /* @__PURE__ */ React118.createElement(EmailChipsField, { fieldLabel: (0, import_i18n57.__)("Bcc", "elementor"), suggestions }));
|
|
8465
|
+
};
|
|
8429
8466
|
var MetaDataField = () => /* @__PURE__ */ React118.createElement(PropKeyProvider, { bind: "meta-data" }, /* @__PURE__ */ React118.createElement(import_ui102.Stack, { gap: 0.5 }, /* @__PURE__ */ React118.createElement(ControlFormLabel, null, (0, import_i18n57.__)("Metadata", "elementor")), /* @__PURE__ */ React118.createElement(
|
|
8430
8467
|
ChipsControl,
|
|
8431
8468
|
{
|