Merged PR 175: Implement drag drop
- [x] Implement drag drop to create an element at a specific index - Add Swap behavrior - Implement max contraints with simplex ~~- [ ] Implement drag drop to swap two container that flex~~ - Fixes tries number for simplex it can now go up to 2 * number of containers - Fixes flex calling another flex behavior when not needed (remember that flex behavior is the only behavior that needs to communicate with siblings) - Fix max width being ignored in input group
This commit is contained in:
parent
4d4ecd67d0
commit
353f461f4b
13 changed files with 220 additions and 59 deletions
|
@ -1,3 +1,4 @@
|
|||
import Swal from 'sweetalert2';
|
||||
import { IContainerModel } from '../../../Interfaces/IContainerModel';
|
||||
import { Simplex } from '../../../utils/simplex';
|
||||
import { ApplyWidthMargin, ApplyXMargin } from '../../../utils/svg';
|
||||
|
@ -49,16 +50,16 @@ function FlexGroup(flexibleGroup: IFlexibleGroup): void {
|
|||
|
||||
const checkSumMinWidthsIsFitting = minimumPossibleWidth > requiredMaxWidth;
|
||||
if (checkSumMinWidthsIsFitting) {
|
||||
// Swal.fire({
|
||||
// icon: 'error',
|
||||
// title: 'Cannot fit!',
|
||||
// text: 'Cannot fit at all even when squeezing all flex containers to the minimum.'
|
||||
// });
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Cannot fit!',
|
||||
text: 'Cannot fit at all even when squeezing all flex containers to the minimum.'
|
||||
});
|
||||
throw new Error('[FlexBehavior] Cannot fit at all even when squeezing all flex containers to the minimum.');
|
||||
}
|
||||
|
||||
const maxMinWidths = Math.max(...minWidths);
|
||||
if (maxMinWidths * minWidths.length < requiredMaxWidth) {
|
||||
if (maxMinWidths * minWidths.length <= requiredMaxWidth) {
|
||||
const wantedWidth = requiredMaxWidth / minWidths.length;
|
||||
// it fits, flex with maxMinWidths and fixed width
|
||||
let right = flexibleGroup.offset;
|
||||
|
@ -79,7 +80,9 @@ function FlexGroup(flexibleGroup: IFlexibleGroup): void {
|
|||
// does not fit
|
||||
|
||||
/// SIMPLEX ///
|
||||
const solutions: number[] = Simplex(minWidths, requiredMaxWidth);
|
||||
const maxWidths = flexibleContainers
|
||||
.map(sibling => sibling.properties.maxWidth);
|
||||
const solutions: number[] = Simplex(minWidths, maxWidths, requiredMaxWidth);
|
||||
|
||||
// apply the solutions
|
||||
for (let i = 0; i < flexibleContainers.length; i++) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue