@synerise/ds-filter 1.0.10 → 1.1.0
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/CHANGELOG.md +11 -0
- package/dist/Filter.js +93 -97
- package/dist/Filter.styles.d.ts +3 -1
- package/dist/Filter.styles.js +11 -10
- package/dist/Filter.types.d.ts +42 -39
- package/dist/components/ExpressionItem/DraggableExpressionItem.d.ts +5 -0
- package/dist/components/ExpressionItem/DraggableExpressionItem.js +34 -0
- package/dist/components/ExpressionItem/ExpressionItem.d.ts +3 -0
- package/dist/components/ExpressionItem/ExpressionItem.js +45 -0
- package/dist/components/ExpressionItem/ExpressionItem.types.d.ts +27 -0
- package/dist/components/ExpressionItem/ExpressionItem.types.js +1 -0
- package/dist/components/ExpressionItem/index.d.ts +3 -0
- package/dist/components/ExpressionItem/index.js +2 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.js +3 -0
- package/package.json +7 -8
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [1.1.0](https://github.com/Synerise/synerise-design/compare/@synerise/ds-filter@1.0.10...@synerise/ds-filter@1.1.0) (2025-06-05)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **filter:** change dnd lib and update ux ([f5a979e](https://github.com/Synerise/synerise-design/commit/f5a979e6c9e5d9c8251c3f57da8ce57c416dadab))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [1.0.10](https://github.com/Synerise/synerise-design/compare/@synerise/ds-filter@1.0.9...@synerise/ds-filter@1.0.10) (2025-06-03)
|
|
7
18
|
|
|
8
19
|
**Note:** Version bump only for package @synerise/ds-filter
|
package/dist/Filter.js
CHANGED
|
@@ -1,22 +1,16 @@
|
|
|
1
1
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
2
|
import React, { useCallback, useMemo, useEffect, useState, useRef } from 'react';
|
|
3
3
|
import { useIntl } from 'react-intl';
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import Placeholder from '@synerise/ds-logic/dist/Placeholder/Placeholder';
|
|
8
|
-
import StepCard from '@synerise/ds-step-card';
|
|
9
|
-
import { usePrevious } from '@synerise/ds-utils';
|
|
4
|
+
import Sortable from '@synerise/ds-sortable';
|
|
5
|
+
import { Matching, Placeholder } from '@synerise/ds-logic';
|
|
6
|
+
import { NOOP, usePrevious } from '@synerise/ds-utils';
|
|
10
7
|
import * as S from './Filter.styles';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
STEP: StepCard
|
|
14
|
-
};
|
|
8
|
+
import { ExpressionItem, DraggableExpressionItem } from './components/ExpressionItem';
|
|
9
|
+
import { isStepType } from './utils';
|
|
15
10
|
var TRANSITION_DURATION = 0.5;
|
|
16
11
|
var TRANSITION_DURATION_MAX = 1.5;
|
|
17
12
|
var TOP_TRANSITION_ZINDEX = 1003;
|
|
18
13
|
var BOTTOM_TRANSITION_ZINDEX = 1002;
|
|
19
|
-
var DRAGGING_TRANSITION_ZINDEX = 1004;
|
|
20
14
|
var rearrangeItems = function rearrangeItems(sourceArray, oldIndex, newIndex) {
|
|
21
15
|
sourceArray.splice(newIndex, 0, sourceArray.splice(oldIndex, 1)[0]);
|
|
22
16
|
return [].concat(sourceArray);
|
|
@@ -54,26 +48,6 @@ var Filter = function Filter(_ref) {
|
|
|
54
48
|
setActiveExpressionId = _useState[1];
|
|
55
49
|
var expressionRefs = useRef({});
|
|
56
50
|
var movedExpressionId = useRef(null);
|
|
57
|
-
var SORTABLE_CONFIG = useMemo(function () {
|
|
58
|
-
return {
|
|
59
|
-
ghostClass: 'ghost-element',
|
|
60
|
-
className: 'sortable-list',
|
|
61
|
-
handle: '.step-card-drag-handler',
|
|
62
|
-
animation: 200,
|
|
63
|
-
forceFallback: true,
|
|
64
|
-
filter: '.ds-matching-toggle, .step-card-right-side',
|
|
65
|
-
onStart: function onStart() {
|
|
66
|
-
movedExpressionId.current = null;
|
|
67
|
-
},
|
|
68
|
-
onChoose: function onChoose(evt) {
|
|
69
|
-
// eslint-disable-next-line no-param-reassign
|
|
70
|
-
evt.item.style.zIndex = DRAGGING_TRANSITION_ZINDEX;
|
|
71
|
-
},
|
|
72
|
-
onUnchoose: function onUnchoose(evt) {
|
|
73
|
-
evt.item.style.removeProperty('z-index');
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
}, []);
|
|
77
51
|
useEffect(function () {
|
|
78
52
|
if (movedExpressionId.current && previousExpressions != null && previousExpressions.length) {
|
|
79
53
|
var oldIndex = previousExpressions == null ? void 0 : previousExpressions.findIndex(function (expression) {
|
|
@@ -236,18 +210,18 @@ var Filter = function Filter(_ref) {
|
|
|
236
210
|
return expression.type === 'STEP';
|
|
237
211
|
}).length;
|
|
238
212
|
}, [expressions]);
|
|
239
|
-
var handleTransitionEnd = function
|
|
213
|
+
var handleTransitionEnd = useCallback(function (event) {
|
|
240
214
|
if (event.currentTarget && event.currentTarget instanceof HTMLElement) {
|
|
241
215
|
event.currentTarget.style.removeProperty('z-index');
|
|
242
216
|
}
|
|
243
|
-
};
|
|
217
|
+
}, []);
|
|
244
218
|
var handleMove = useCallback(function (index, offset) {
|
|
245
219
|
var newIndex = index + offset;
|
|
246
220
|
var newOrder = rearrangeItems([].concat(expressions), index, newIndex);
|
|
247
221
|
movedExpressionId.current = newOrder[newIndex].id;
|
|
248
222
|
onChangeOrder && onChangeOrder(newOrder);
|
|
249
223
|
}, [expressions, onChangeOrder]);
|
|
250
|
-
var
|
|
224
|
+
var getStepProps = useCallback(function (expression, index) {
|
|
251
225
|
var contextTypeTexts = getContextTypeTexts(expression);
|
|
252
226
|
var reorderProps = {
|
|
253
227
|
expressionIndex: index,
|
|
@@ -255,73 +229,95 @@ var Filter = function Filter(_ref) {
|
|
|
255
229
|
expressionCount: stepExpressionCount,
|
|
256
230
|
onMove: handleMove
|
|
257
231
|
};
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
},
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
232
|
+
return _extends({}, reorderProps, {
|
|
233
|
+
onChangeMatching: onChangeStepMatching ? function (value) {
|
|
234
|
+
return onChangeStepMatching(expression.id, value);
|
|
235
|
+
} : undefined,
|
|
236
|
+
onChangeName: onChangeStepName ? function (value) {
|
|
237
|
+
return onChangeStepName(expression.id, value);
|
|
238
|
+
} : undefined,
|
|
239
|
+
onDelete: onDeleteStep ? function () {
|
|
240
|
+
return onDeleteStep(expression.id);
|
|
241
|
+
} : undefined,
|
|
242
|
+
onDuplicate: onDuplicateStep && !isLimitExceeded ? function () {
|
|
243
|
+
return onDuplicateStep(expression.id);
|
|
244
|
+
} : undefined,
|
|
245
|
+
footer: renderStepFooter && renderStepFooter(expression),
|
|
246
|
+
children: renderStepContent && renderStepContent(expression, !!activeExpressionId && !isActive(expression)),
|
|
247
|
+
isHeaderVisible: visibilityConfig.isStepCardHeaderVisible,
|
|
248
|
+
renderHeaderRightSide: renderStepHeaderRightSide ? function (itemIndex, options) {
|
|
249
|
+
return renderStepHeaderRightSide(expression, itemIndex, options);
|
|
250
|
+
} : undefined,
|
|
251
|
+
isDraggable: Boolean(onChangeOrder),
|
|
252
|
+
singleStepCondition: Boolean(singleStepCondition),
|
|
253
|
+
additionalFields: expression.data.additionalFields,
|
|
254
|
+
getMoveByLabel: getMoveByLabel,
|
|
255
|
+
dropLabel: text.dropMeHere,
|
|
256
|
+
texts: _extends({}, text.step, contextTypeTexts)
|
|
257
|
+
});
|
|
258
|
+
}, [activeExpressionId, getContextTypeTexts, getMoveByLabel, handleMove, isActive, isLimitExceeded, onChangeStepMatching, onChangeStepName, onDeleteStep, onDuplicateStep, renderStepContent, renderStepFooter, renderStepHeaderRightSide, stepExpressionCount, text.step, text.dropMeHere, visibilityConfig.isStepCardHeaderVisible, singleStepCondition, onChangeOrder]);
|
|
259
|
+
var getLogicProps = useCallback(function (expression) {
|
|
260
|
+
return {
|
|
261
|
+
value: '',
|
|
262
|
+
onChange: onChangeLogic ? function (value) {
|
|
263
|
+
return onChangeLogic(expression.id, value);
|
|
264
|
+
} : NOOP,
|
|
265
|
+
options: logicOptions
|
|
288
266
|
};
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
267
|
+
}, [onChangeLogic, logicOptions]);
|
|
268
|
+
var expressionData = useMemo(function () {
|
|
269
|
+
var expressionsOrder = expressions.map(function (expression) {
|
|
270
|
+
return expression.id;
|
|
271
|
+
});
|
|
272
|
+
return expressions.map(function (expression, index) {
|
|
273
|
+
var logicProps = isStepType(expression) && expression.logic ? getLogicProps(expression.logic) : {
|
|
274
|
+
value: '',
|
|
275
|
+
onChange: NOOP
|
|
276
|
+
};
|
|
277
|
+
var stepProps = isStepType(expression) ? getStepProps(expression, index) : {};
|
|
278
|
+
return {
|
|
279
|
+
wrapperRef: function wrapperRef(element) {
|
|
280
|
+
return expressionRefs.current[expression.id] = element;
|
|
281
|
+
},
|
|
282
|
+
dropLabel: text.dropMeHere,
|
|
283
|
+
logicProps: logicProps,
|
|
284
|
+
stepProps: stepProps,
|
|
285
|
+
handleMouseDown: function handleMouseDown() {
|
|
286
|
+
return setActiveExpressionId(expression.id);
|
|
287
|
+
},
|
|
288
|
+
handleTransitionEnd: handleTransitionEnd,
|
|
289
|
+
expression: expression,
|
|
290
|
+
expressionsOrder: expressionsOrder,
|
|
291
|
+
id: expression.id,
|
|
292
|
+
expressionIndex: index,
|
|
293
|
+
readOnly: readOnly,
|
|
294
|
+
isLast: index === expressions.length - 1
|
|
295
|
+
};
|
|
296
|
+
});
|
|
297
|
+
}, [expressions, readOnly, handleTransitionEnd, setActiveExpressionId, getStepProps, getLogicProps, text.dropMeHere]);
|
|
298
|
+
var handleChangeOrder = useCallback(function (newOrder) {
|
|
299
|
+
if (onChangeOrder) {
|
|
300
|
+
var idOrder = newOrder.map(function (item) {
|
|
301
|
+
return item.id;
|
|
302
|
+
});
|
|
303
|
+
var updatedExpressions = [].concat(expressions).sort(function (a, b) {
|
|
304
|
+
return idOrder.indexOf(a.id) - idOrder.indexOf(b.id);
|
|
305
|
+
});
|
|
306
|
+
onChangeOrder(updatedExpressions);
|
|
307
|
+
}
|
|
308
|
+
}, [onChangeOrder, expressions]);
|
|
316
309
|
var renderExpressions = useCallback(function () {
|
|
317
310
|
if (onChangeOrder) {
|
|
318
|
-
return /*#__PURE__*/React.createElement(
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
311
|
+
return /*#__PURE__*/React.createElement(Sortable, {
|
|
312
|
+
placeholderCss: S.placeholderCss,
|
|
313
|
+
axis: "y",
|
|
314
|
+
items: expressionData,
|
|
315
|
+
ItemComponent: DraggableExpressionItem,
|
|
316
|
+
onOrderChange: handleChangeOrder
|
|
317
|
+
});
|
|
322
318
|
}
|
|
323
|
-
return
|
|
324
|
-
}, [
|
|
319
|
+
return expressionData.map(ExpressionItem);
|
|
320
|
+
}, [expressionData, handleChangeOrder, onChangeOrder]);
|
|
325
321
|
return /*#__PURE__*/React.createElement(S.FilterWrapper, null, /*#__PURE__*/React.createElement(S.FilterHeader, null, texts != null && (_texts$overwritten = texts.overwritten) != null && _texts$overwritten.filterTitle ? /*#__PURE__*/React.createElement(S.FilterTitle, null, texts.overwritten.filterTitle) : /*#__PURE__*/React.createElement(S.MatchingAndConditionsWrapper, null, /*#__PURE__*/React.createElement(S.MatchingWrapper, null, matching && /*#__PURE__*/React.createElement(Matching, _extends({}, matching, {
|
|
326
322
|
texts: text.matching,
|
|
327
323
|
readOnly: readOnly
|
package/dist/Filter.styles.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare const placeholderCss: import("styled-components").FlattenInterpolation<import("styled-components").ThemeProps<any>>;
|
|
1
2
|
export declare const FilterWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
2
3
|
export declare const FilterHeader: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
3
4
|
export declare const FilterHeaderRightSide: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
@@ -7,7 +8,8 @@ export declare const ConditionsLimit: import("styled-components").StyledComponen
|
|
|
7
8
|
export declare const ConditionsLimitResults: import("styled-components").StyledComponent<"span", any, {}, never>;
|
|
8
9
|
export declare const LogicWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
9
10
|
export declare const ExpressionWrapper: import("styled-components").StyledComponent<"div", any, {
|
|
10
|
-
index
|
|
11
|
+
index?: number | undefined;
|
|
12
|
+
isDragged?: boolean | undefined;
|
|
11
13
|
}, never>;
|
|
12
14
|
export declare const AddButtonWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
13
15
|
export declare const FilterTitle: import("styled-components").StyledComponent<"div", any, {}, never>;
|
package/dist/Filter.styles.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import styled from 'styled-components';
|
|
2
|
-
import {
|
|
1
|
+
import styled, { css } from 'styled-components';
|
|
2
|
+
import { SortableItemContent } from '@synerise/ds-sortable/dist/Sortable.styles';
|
|
3
|
+
export var placeholderCss = css(["height:calc(100% - 24px);background-color:", ";border:0;border-left:2px solid ", ";border-radius:3px;"], function (props) {
|
|
4
|
+
return props.theme.palette['blue-050'];
|
|
5
|
+
}, function (props) {
|
|
6
|
+
return props.theme.palette['blue-600'];
|
|
7
|
+
});
|
|
3
8
|
export var FilterWrapper = styled.div.withConfig({
|
|
4
9
|
displayName: "Filterstyles__FilterWrapper",
|
|
5
10
|
componentId: "sc-w5f27p-0"
|
|
6
|
-
})(["display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;width:100%;"]);
|
|
11
|
+
})(["display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;width:100%;", "{visibility:visible;opacity:1;}"], SortableItemContent);
|
|
7
12
|
export var FilterHeader = styled.div.withConfig({
|
|
8
13
|
displayName: "Filterstyles__FilterHeader",
|
|
9
14
|
componentId: "sc-w5f27p-1"
|
|
@@ -35,12 +40,8 @@ export var LogicWrapper = styled.div.withConfig({
|
|
|
35
40
|
export var ExpressionWrapper = styled.div.withConfig({
|
|
36
41
|
displayName: "Filterstyles__ExpressionWrapper",
|
|
37
42
|
componentId: "sc-w5f27p-8"
|
|
38
|
-
})(["width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative
|
|
39
|
-
return props.
|
|
40
|
-
}, function (props) {
|
|
41
|
-
return props.theme.palette['blue-600'];
|
|
42
|
-
}, function (props) {
|
|
43
|
-
return props.theme.palette['blue-600'];
|
|
43
|
+
})(["width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;", ""], function (props) {
|
|
44
|
+
return (props.isDragged || props.index === -1) && "\n " + LogicWrapper + " {\n display: none;\n }\n ";
|
|
44
45
|
});
|
|
45
46
|
export var AddButtonWrapper = styled.div.withConfig({
|
|
46
47
|
displayName: "Filterstyles__AddButtonWrapper",
|
|
@@ -49,6 +50,6 @@ export var AddButtonWrapper = styled.div.withConfig({
|
|
|
49
50
|
export var FilterTitle = styled.div.withConfig({
|
|
50
51
|
displayName: "Filterstyles__FilterTitle",
|
|
51
52
|
componentId: "sc-w5f27p-10"
|
|
52
|
-
})(["font-size:16px;font-weight:500;line-height:1.25;color:", ";text-align:left;user-select:none;
|
|
53
|
+
})(["font-size:16px;font-weight:500;line-height:1.25;color:", ";text-align:left;user-select:none;flex:0 0 auto;&:first-letter{text-transform:uppercase;}"], function (props) {
|
|
53
54
|
return props.theme.palette['grey-800'];
|
|
54
55
|
});
|
package/dist/Filter.types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { LogicOperator, LogicOperatorValue, LogicProps } from '@synerise/ds-logic
|
|
3
|
-
import { StepCardProps } from '@synerise/ds-step-card';
|
|
4
|
-
import {
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { LogicOperator, LogicOperatorValue, LogicProps, MatchingProps, MatchingTexts } from '@synerise/ds-logic';
|
|
3
|
+
import type { StepCardProps } from '@synerise/ds-step-card';
|
|
4
|
+
import type { DeepPartial } from '@synerise/ds-utils';
|
|
5
5
|
export type LogicType = {
|
|
6
6
|
type: 'LOGIC';
|
|
7
7
|
id: string;
|
|
@@ -18,6 +18,36 @@ export type Expression = LogicType | StepType;
|
|
|
18
18
|
export type addFilterComponentProps = {
|
|
19
19
|
isLimitExceeded: boolean;
|
|
20
20
|
};
|
|
21
|
+
export type FilterTexts = {
|
|
22
|
+
matching: MatchingTexts;
|
|
23
|
+
step: {
|
|
24
|
+
matching?: string;
|
|
25
|
+
notMatching?: string;
|
|
26
|
+
have?: string;
|
|
27
|
+
performed?: string;
|
|
28
|
+
notHave?: string;
|
|
29
|
+
notPerformed?: string;
|
|
30
|
+
attribute?: string;
|
|
31
|
+
event?: string;
|
|
32
|
+
notAttribute?: string;
|
|
33
|
+
notEvent?: string;
|
|
34
|
+
namePlaceholder?: string;
|
|
35
|
+
moveTooltip?: string;
|
|
36
|
+
moveUpTooltip?: string;
|
|
37
|
+
moveDownTooltip?: string;
|
|
38
|
+
deleteTooltip?: string;
|
|
39
|
+
duplicateTooltip?: string;
|
|
40
|
+
};
|
|
41
|
+
placeholder: {
|
|
42
|
+
chooseCondition?: string;
|
|
43
|
+
getPreview?: string;
|
|
44
|
+
};
|
|
45
|
+
addFilter: string;
|
|
46
|
+
dropMeHere: string;
|
|
47
|
+
overwritten: {
|
|
48
|
+
filterTitle?: string;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
21
51
|
export type FilterProps = {
|
|
22
52
|
maxConditionsLimit?: number;
|
|
23
53
|
expressions: Expression[];
|
|
@@ -28,45 +58,18 @@ export type FilterProps = {
|
|
|
28
58
|
onChangeStepName?: (id: string, name: string) => void;
|
|
29
59
|
onDeleteStep?: (id: string) => void;
|
|
30
60
|
onDuplicateStep?: (id: string) => void;
|
|
31
|
-
renderStepFooter?: (expression: Expression) =>
|
|
32
|
-
renderStepContent?: (expression: Expression, hoverDisabled?: boolean) =>
|
|
33
|
-
renderStepHeaderRightSide?: (expression: Expression, index: number
|
|
34
|
-
|
|
61
|
+
renderStepFooter?: (expression: Expression) => ReactNode;
|
|
62
|
+
renderStepContent?: (expression: Expression, hoverDisabled?: boolean) => ReactNode;
|
|
63
|
+
renderStepHeaderRightSide?: (expression: Expression, index: number, options?: {
|
|
64
|
+
placeholder?: boolean;
|
|
65
|
+
}) => ReactNode;
|
|
66
|
+
addFilterComponent?: ReactNode | ((arg: addFilterComponentProps) => ReactNode);
|
|
35
67
|
logicOptions?: LogicOperator[];
|
|
36
68
|
readOnly?: boolean;
|
|
37
69
|
singleStepCondition?: boolean;
|
|
38
|
-
renderHeaderRightSide?: (expressions: Expression[]) =>
|
|
70
|
+
renderHeaderRightSide?: (expressions: Expression[]) => ReactNode;
|
|
39
71
|
getMoveByLabel?: (moveByOffset: number) => string;
|
|
40
|
-
texts?:
|
|
41
|
-
matching?: MatchingTexts;
|
|
42
|
-
step?: {
|
|
43
|
-
matching?: string;
|
|
44
|
-
notMatching?: string;
|
|
45
|
-
have?: string;
|
|
46
|
-
performed?: string;
|
|
47
|
-
notHave?: string;
|
|
48
|
-
notPerformed?: string;
|
|
49
|
-
attribute?: string;
|
|
50
|
-
event?: string;
|
|
51
|
-
notAttribute?: string;
|
|
52
|
-
notEvent?: string;
|
|
53
|
-
namePlaceholder?: string;
|
|
54
|
-
moveTooltip?: string;
|
|
55
|
-
moveUpTooltip?: string;
|
|
56
|
-
moveDownTooltip?: string;
|
|
57
|
-
deleteTooltip?: string;
|
|
58
|
-
duplicateTooltip?: string;
|
|
59
|
-
};
|
|
60
|
-
placeholder?: {
|
|
61
|
-
chooseCondition?: string;
|
|
62
|
-
getPreview?: string;
|
|
63
|
-
};
|
|
64
|
-
addFilter?: string;
|
|
65
|
-
dropMeHere?: string;
|
|
66
|
-
overwritten?: {
|
|
67
|
-
filterTitle?: string;
|
|
68
|
-
};
|
|
69
|
-
};
|
|
72
|
+
texts?: DeepPartial<FilterTexts>;
|
|
70
73
|
visibilityConfig?: {
|
|
71
74
|
isStepCardHeaderVisible?: boolean;
|
|
72
75
|
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ExpressionItemProps } from './ExpressionItem.types';
|
|
3
|
+
export declare const DraggableExpressionItem: ({ expressionsOrder, expression, index: sortableIndex, ...rest }: ExpressionItemProps & {
|
|
4
|
+
index?: number;
|
|
5
|
+
}) => React.JSX.Element;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
var _excluded = ["expressionsOrder", "expression", "index"];
|
|
2
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
3
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
4
|
+
import React, { useEffect, useState } from 'react';
|
|
5
|
+
import { useDndMonitor, arrayMove } from '@synerise/ds-sortable';
|
|
6
|
+
import { ExpressionItem } from './ExpressionItem';
|
|
7
|
+
export var DraggableExpressionItem = function DraggableExpressionItem(_ref) {
|
|
8
|
+
var expressionsOrder = _ref.expressionsOrder,
|
|
9
|
+
expression = _ref.expression,
|
|
10
|
+
sortableIndex = _ref.index,
|
|
11
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
12
|
+
var _useState = useState(expressionsOrder.indexOf(expression.id)),
|
|
13
|
+
dragIndex = _useState[0],
|
|
14
|
+
setDragIndex = _useState[1];
|
|
15
|
+
useEffect(function () {
|
|
16
|
+
setDragIndex(expressionsOrder.indexOf(expression.id));
|
|
17
|
+
}, [expressionsOrder, expression.id]);
|
|
18
|
+
useDndMonitor({
|
|
19
|
+
onDragMove: function onDragMove(event) {
|
|
20
|
+
var _event$over;
|
|
21
|
+
if (((_event$over = event.over) == null || (_event$over = _event$over.data.current) == null || (_event$over = _event$over.sortable) == null ? void 0 : _event$over.index) !== undefined) {
|
|
22
|
+
var _event$active$data$cu, _event$over2;
|
|
23
|
+
var tempOrder = arrayMove(expressionsOrder, (_event$active$data$cu = event.active.data.current) == null || (_event$active$data$cu = _event$active$data$cu.sortable) == null ? void 0 : _event$active$data$cu.index, (_event$over2 = event.over) == null || (_event$over2 = _event$over2.data.current) == null || (_event$over2 = _event$over2.sortable) == null ? void 0 : _event$over2.index);
|
|
24
|
+
setDragIndex(tempOrder.indexOf(expression.id));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
return /*#__PURE__*/React.createElement(ExpressionItem, _extends({
|
|
29
|
+
isDragOverlay: sortableIndex === -1,
|
|
30
|
+
dragIndex: dragIndex,
|
|
31
|
+
expression: expression,
|
|
32
|
+
expressionsOrder: expressionsOrder
|
|
33
|
+
}, rest));
|
|
34
|
+
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ExpressionItemProps } from './ExpressionItem.types';
|
|
3
|
+
export declare const ExpressionItem: ({ handleTransitionEnd, dragHandleProps, isDragged, isDragOverlay, expression, readOnly, handleMouseDown, isLast, stepProps, logicProps, wrapperRef, expressionIndex, dragIndex, expressionsOrder, }: ExpressionItemProps) => React.JSX.Element;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import Logic from '@synerise/ds-logic';
|
|
4
|
+
import StepCard from '@synerise/ds-step-card';
|
|
5
|
+
import * as S from '../../Filter.styles';
|
|
6
|
+
import { isStepType } from '../../utils';
|
|
7
|
+
export var ExpressionItem = function ExpressionItem(_ref) {
|
|
8
|
+
var handleTransitionEnd = _ref.handleTransitionEnd,
|
|
9
|
+
dragHandleProps = _ref.dragHandleProps,
|
|
10
|
+
isDragged = _ref.isDragged,
|
|
11
|
+
isDragOverlay = _ref.isDragOverlay,
|
|
12
|
+
expression = _ref.expression,
|
|
13
|
+
readOnly = _ref.readOnly,
|
|
14
|
+
handleMouseDown = _ref.handleMouseDown,
|
|
15
|
+
isLast = _ref.isLast,
|
|
16
|
+
stepProps = _ref.stepProps,
|
|
17
|
+
logicProps = _ref.logicProps,
|
|
18
|
+
wrapperRef = _ref.wrapperRef,
|
|
19
|
+
expressionIndex = _ref.expressionIndex,
|
|
20
|
+
dragIndex = _ref.dragIndex,
|
|
21
|
+
expressionsOrder = _ref.expressionsOrder;
|
|
22
|
+
var data = expression.data,
|
|
23
|
+
id = expression.id;
|
|
24
|
+
var shouldRenderLogic = isStepType(expression) && expression.logic && !isLast && !isDragged && !isDragOverlay && expressionIndex !== -1;
|
|
25
|
+
return /*#__PURE__*/React.createElement(S.ExpressionWrapper, {
|
|
26
|
+
"data-testid": "condition-step",
|
|
27
|
+
onTransitionEnd: handleTransitionEnd,
|
|
28
|
+
ref: wrapperRef,
|
|
29
|
+
key: id,
|
|
30
|
+
onMouseDown: handleMouseDown
|
|
31
|
+
}, /*#__PURE__*/React.createElement(StepCard, _extends({
|
|
32
|
+
expressionIndex: expressionIndex,
|
|
33
|
+
expressionCount: expressionsOrder.length
|
|
34
|
+
}, data, stepProps, {
|
|
35
|
+
readOnly: readOnly,
|
|
36
|
+
dragHandleProps: dragHandleProps,
|
|
37
|
+
isDragged: isDragged,
|
|
38
|
+
isDragOverlay: isDragOverlay,
|
|
39
|
+
dragIndex: dragIndex
|
|
40
|
+
})), shouldRenderLogic && /*#__PURE__*/React.createElement(S.LogicWrapper, {
|
|
41
|
+
"data-testid": "condition-logic"
|
|
42
|
+
}, /*#__PURE__*/React.createElement(Logic, _extends({}, logicProps, expression.logic.data, {
|
|
43
|
+
readOnly: readOnly
|
|
44
|
+
}))));
|
|
45
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { MouseEventHandler, ReactNode, TransitionEventHandler } from 'react';
|
|
2
|
+
import type { LogicProps } from '@synerise/ds-logic';
|
|
3
|
+
import type { StepCardProps } from '@synerise/ds-step-card';
|
|
4
|
+
import type { DragHandlePropType } from '@synerise/ds-sortable';
|
|
5
|
+
import type { Expression } from '../../Filter.types';
|
|
6
|
+
export type ExpressionItemProps = {
|
|
7
|
+
handleTransitionEnd: TransitionEventHandler;
|
|
8
|
+
id: string | number;
|
|
9
|
+
expression: Expression;
|
|
10
|
+
isLast?: boolean;
|
|
11
|
+
dragIndex?: number;
|
|
12
|
+
expressionsOrder: (string | number)[];
|
|
13
|
+
readOnly?: boolean;
|
|
14
|
+
stepProps: Partial<StepCardProps>;
|
|
15
|
+
logicProps: Partial<LogicProps>;
|
|
16
|
+
expressionIndex: number;
|
|
17
|
+
dropLabel: string;
|
|
18
|
+
renderHeaderRightSide?: (index: number) => ReactNode;
|
|
19
|
+
handleMouseDown?: MouseEventHandler<HTMLDivElement>;
|
|
20
|
+
wrapperRef: (node: HTMLDivElement) => void;
|
|
21
|
+
} & SortableItemProps;
|
|
22
|
+
export type SortableItemProps = {
|
|
23
|
+
dragHandleProps?: DragHandlePropType;
|
|
24
|
+
isDragged?: boolean;
|
|
25
|
+
isDragOverlay?: boolean;
|
|
26
|
+
isGrabbed?: boolean;
|
|
27
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/utils.d.ts
ADDED
package/dist/utils.js
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synerise/ds-filter",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Filter UI Component for the Synerise Design System",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"repository": "Synerise/synerise-design",
|
|
@@ -34,12 +34,11 @@
|
|
|
34
34
|
],
|
|
35
35
|
"types": "dist/index.d.ts",
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@synerise/ds-button": "^1.3.
|
|
38
|
-
"@synerise/ds-logic": "^1.0
|
|
39
|
-
"@synerise/ds-
|
|
40
|
-
"@synerise/ds-
|
|
41
|
-
"
|
|
42
|
-
"sortablejs": "1.15.1"
|
|
37
|
+
"@synerise/ds-button": "^1.3.3",
|
|
38
|
+
"@synerise/ds-logic": "^1.1.0",
|
|
39
|
+
"@synerise/ds-sortable": "^1.2.0",
|
|
40
|
+
"@synerise/ds-step-card": "^1.1.0",
|
|
41
|
+
"@synerise/ds-utils": "^1.2.0"
|
|
43
42
|
},
|
|
44
43
|
"peerDependencies": {
|
|
45
44
|
"@synerise/ds-core": "*",
|
|
@@ -47,5 +46,5 @@
|
|
|
47
46
|
"react-intl": ">=3.12.0 <= 6.8",
|
|
48
47
|
"styled-components": "^5.3.3"
|
|
49
48
|
},
|
|
50
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "93bc81d59d20bc8f3bc80c5d56ae7f7c0838380d"
|
|
51
50
|
}
|