@elementor/editor-controls 4.3.0-1009 → 4.3.0-1010
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.d.mts +7 -2
- package/dist/index.d.ts +7 -2
- package/dist/index.js +30 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +31 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +16 -16
- package/src/controls/select-control.tsx +47 -10
package/dist/index.mjs
CHANGED
|
@@ -452,7 +452,7 @@ var ImageMediaControl = createControl(({ mediaTypes = ["image"] }) => {
|
|
|
452
452
|
import * as React12 from "react";
|
|
453
453
|
import { stringPropTypeUtil as stringPropTypeUtil2 } from "@elementor/editor-props";
|
|
454
454
|
import { MenuListItem } from "@elementor/editor-ui";
|
|
455
|
-
import { Select, Typography } from "@elementor/ui";
|
|
455
|
+
import { MenuSubheader, Select, Typography } from "@elementor/ui";
|
|
456
456
|
var DEFAULT_MENU_PROPS = {
|
|
457
457
|
MenuListProps: {
|
|
458
458
|
sx: {
|
|
@@ -461,14 +461,15 @@ var DEFAULT_MENU_PROPS = {
|
|
|
461
461
|
}
|
|
462
462
|
};
|
|
463
463
|
var SelectControl = createControl(
|
|
464
|
-
({ options, onChange, MenuProps = DEFAULT_MENU_PROPS, ariaLabel }) => {
|
|
464
|
+
({ options = [], groups = [], onChange, MenuProps = DEFAULT_MENU_PROPS, ariaLabel }) => {
|
|
465
465
|
const { value, setValue, disabled, placeholder } = useBoundProp(stringPropTypeUtil2);
|
|
466
466
|
const handleChange = (event) => {
|
|
467
467
|
const newValue = event.target.value || null;
|
|
468
468
|
onChange?.(newValue, value);
|
|
469
469
|
setValue(newValue);
|
|
470
470
|
};
|
|
471
|
-
const
|
|
471
|
+
const flatOptions = flattenGroupedOptions(options, groups);
|
|
472
|
+
const isDisabled = disabled || flatOptions.length === 0;
|
|
472
473
|
return /* @__PURE__ */ React12.createElement(ControlActions, null, /* @__PURE__ */ React12.createElement(
|
|
473
474
|
Select,
|
|
474
475
|
{
|
|
@@ -477,16 +478,41 @@ var SelectControl = createControl(
|
|
|
477
478
|
size: "tiny",
|
|
478
479
|
MenuProps,
|
|
479
480
|
"aria-label": ariaLabel || placeholder,
|
|
480
|
-
renderValue: (selectedValue) => getSelectRenderValue(
|
|
481
|
+
renderValue: (selectedValue) => getSelectRenderValue(flatOptions, placeholder, selectedValue),
|
|
481
482
|
value: value ?? "",
|
|
482
483
|
onChange: handleChange,
|
|
483
484
|
disabled: isDisabled,
|
|
484
485
|
fullWidth: true
|
|
485
486
|
},
|
|
486
|
-
|
|
487
|
+
groups.length ? groups.flatMap((group) => renderGroup(group)) : options.map((option) => renderOption(option))
|
|
487
488
|
));
|
|
488
489
|
}
|
|
489
490
|
);
|
|
491
|
+
var GROUPED_OPTION_INDENT = 3.5;
|
|
492
|
+
function renderGroup(group) {
|
|
493
|
+
return [
|
|
494
|
+
/* @__PURE__ */ React12.createElement(MenuSubheader, { key: `group-${group.label}`, sx: { fontWeight: 400, color: "text.tertiary" } }, group.label),
|
|
495
|
+
...group.options.map((option) => renderOption(option, true))
|
|
496
|
+
];
|
|
497
|
+
}
|
|
498
|
+
function renderOption({ label, ...props }, isGrouped = false) {
|
|
499
|
+
return /* @__PURE__ */ React12.createElement(
|
|
500
|
+
MenuListItem,
|
|
501
|
+
{
|
|
502
|
+
key: props.value,
|
|
503
|
+
...props,
|
|
504
|
+
value: props.value ?? "",
|
|
505
|
+
sx: isGrouped ? { pl: GROUPED_OPTION_INDENT } : void 0
|
|
506
|
+
},
|
|
507
|
+
label
|
|
508
|
+
);
|
|
509
|
+
}
|
|
510
|
+
function flattenGroupedOptions(options, groups) {
|
|
511
|
+
if (!groups.length) {
|
|
512
|
+
return options;
|
|
513
|
+
}
|
|
514
|
+
return groups.flatMap((group) => group.options);
|
|
515
|
+
}
|
|
490
516
|
function getSelectRenderValue(options, placeholder, selectedValue) {
|
|
491
517
|
const optionWithValue = (v) => options.find(({ value }) => value === v);
|
|
492
518
|
if (!isUnsetSelectValue(selectedValue)) {
|