Add coexistence checks to all enqueue methods to prevent loading both React and Grid.js assets simultaneously. Changes: - ReactAdmin.php: Only enqueue React assets when ?react=1 - Init.php: Skip Grid.js when React active on admin pages - Form.php, Coupon.php, Access.php: Restore classic assets when ?react=0 - Customer.php, Product.php, License.php: Add coexistence checks Now the toggle between Classic and React versions works correctly. Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
110 lines
4.0 KiB
JavaScript
110 lines
4.0 KiB
JavaScript
import { createElement, Fragment } from "react";
|
|
/**
|
|
* WordPress dependencies
|
|
*/
|
|
import { useInstanceId } from '@wordpress/compose';
|
|
/**
|
|
* Internal dependencies
|
|
*/
|
|
import { parseQuantityAndUnitFromRawValue } from '../unit-control/utils';
|
|
import Tooltip from '../tooltip';
|
|
import { CUSTOM_VALUE_SETTINGS, LABELS } from './utils';
|
|
import { FlexedBoxControlIcon, FlexedRangeControl, InputWrapper, StyledUnitControl } from './styles/box-control-styles';
|
|
const groupedSides = ['vertical', 'horizontal'];
|
|
export default function AxialInputControls({
|
|
__next40pxDefaultSize,
|
|
onChange,
|
|
onFocus,
|
|
values,
|
|
selectedUnits,
|
|
setSelectedUnits,
|
|
sides,
|
|
...props
|
|
}) {
|
|
const generatedId = useInstanceId(AxialInputControls, `box-control-input`);
|
|
const createHandleOnFocus = side => event => {
|
|
if (!onFocus) {
|
|
return;
|
|
}
|
|
onFocus(event, {
|
|
side
|
|
});
|
|
};
|
|
const handleOnValueChange = (side, next) => {
|
|
if (!onChange) {
|
|
return;
|
|
}
|
|
const nextValues = {
|
|
...values
|
|
};
|
|
const isNumeric = next !== undefined && !isNaN(parseFloat(next));
|
|
const nextValue = isNumeric ? next : undefined;
|
|
if (side === 'vertical') {
|
|
nextValues.top = nextValue;
|
|
nextValues.bottom = nextValue;
|
|
}
|
|
if (side === 'horizontal') {
|
|
nextValues.left = nextValue;
|
|
nextValues.right = nextValue;
|
|
}
|
|
onChange(nextValues);
|
|
};
|
|
const createHandleOnUnitChange = side => next => {
|
|
const newUnits = {
|
|
...selectedUnits
|
|
};
|
|
if (side === 'vertical') {
|
|
newUnits.top = next;
|
|
newUnits.bottom = next;
|
|
}
|
|
if (side === 'horizontal') {
|
|
newUnits.left = next;
|
|
newUnits.right = next;
|
|
}
|
|
setSelectedUnits(newUnits);
|
|
};
|
|
|
|
// Filter sides if custom configuration provided, maintaining default order.
|
|
const filteredSides = sides?.length ? groupedSides.filter(side => sides.includes(side)) : groupedSides;
|
|
return createElement(Fragment, null, filteredSides.map(side => {
|
|
var _CUSTOM_VALUE_SETTING, _CUSTOM_VALUE_SETTING2;
|
|
const [parsedQuantity, parsedUnit] = parseQuantityAndUnitFromRawValue(side === 'vertical' ? values.top : values.left);
|
|
const selectedUnit = side === 'vertical' ? selectedUnits.top : selectedUnits.left;
|
|
const inputId = [generatedId, side].join('-');
|
|
return createElement(InputWrapper, {
|
|
key: side
|
|
}, createElement(FlexedBoxControlIcon, {
|
|
side: side,
|
|
sides: sides
|
|
}), createElement(Tooltip, {
|
|
placement: "top-end",
|
|
text: LABELS[side]
|
|
}, createElement(StyledUnitControl, {
|
|
...props,
|
|
__next40pxDefaultSize: __next40pxDefaultSize,
|
|
className: "component-box-control__unit-control",
|
|
id: inputId,
|
|
isPressEnterToChange: true,
|
|
value: [parsedQuantity, selectedUnit !== null && selectedUnit !== void 0 ? selectedUnit : parsedUnit].join(''),
|
|
onChange: newValue => handleOnValueChange(side, newValue),
|
|
onUnitChange: createHandleOnUnitChange(side),
|
|
onFocus: createHandleOnFocus(side),
|
|
label: LABELS[side],
|
|
hideLabelFromVision: true,
|
|
key: side
|
|
})), createElement(FlexedRangeControl, {
|
|
__nextHasNoMarginBottom: true,
|
|
__next40pxDefaultSize: __next40pxDefaultSize,
|
|
"aria-controls": inputId,
|
|
label: LABELS[side],
|
|
hideLabelFromVision: true,
|
|
onChange: newValue => handleOnValueChange(side, newValue !== undefined ? [newValue, selectedUnit !== null && selectedUnit !== void 0 ? selectedUnit : parsedUnit].join('') : undefined),
|
|
min: 0,
|
|
max: (_CUSTOM_VALUE_SETTING = CUSTOM_VALUE_SETTINGS[selectedUnit !== null && selectedUnit !== void 0 ? selectedUnit : 'px']?.max) !== null && _CUSTOM_VALUE_SETTING !== void 0 ? _CUSTOM_VALUE_SETTING : 10,
|
|
step: (_CUSTOM_VALUE_SETTING2 = CUSTOM_VALUE_SETTINGS[selectedUnit !== null && selectedUnit !== void 0 ? selectedUnit : 'px']?.step) !== null && _CUSTOM_VALUE_SETTING2 !== void 0 ? _CUSTOM_VALUE_SETTING2 : 0.1,
|
|
value: parsedQuantity !== null && parsedQuantity !== void 0 ? parsedQuantity : 0,
|
|
withInputField: false
|
|
}));
|
|
}));
|
|
}
|
|
//# sourceMappingURL=axial-input-controls.js.map
|