@synerise/ds-filter 0.12.1 → 0.13.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 +20 -0
- package/dist/Filter.js +16 -7
- package/dist/Filter.styles.d.ts +2 -0
- package/dist/Filter.styles.js +12 -4
- package/dist/Filter.types.d.ts +5 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,26 @@
|
|
|
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
|
+
# [0.13.0](https://github.com/Synerise/synerise-design/compare/@synerise/ds-filter@0.12.2...@synerise/ds-filter@0.13.0) (2022-09-26)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **filter:** changes after review ([d2c30a7](https://github.com/Synerise/synerise-design/commit/d2c30a75e1bed46ca4da78c3f390d0f51614c659))
|
|
12
|
+
* **filter:** limiting the number of conditions ([6f0d114](https://github.com/Synerise/synerise-design/commit/6f0d114735abc97362b461adc138f7fcadc39456))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## [0.12.2](https://github.com/Synerise/synerise-design/compare/@synerise/ds-filter@0.12.1...@synerise/ds-filter@0.12.2) (2022-08-31)
|
|
19
|
+
|
|
20
|
+
**Note:** Version bump only for package @synerise/ds-filter
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
6
26
|
## [0.12.1](https://github.com/Synerise/synerise-design/compare/@synerise/ds-filter@0.12.0...@synerise/ds-filter@0.12.1) (2022-08-25)
|
|
7
27
|
|
|
8
28
|
**Note:** Version bump only for package @synerise/ds-filter
|
package/dist/Filter.js
CHANGED
|
@@ -30,7 +30,8 @@ var component = {
|
|
|
30
30
|
};
|
|
31
31
|
|
|
32
32
|
var Filter = function Filter(_ref) {
|
|
33
|
-
var
|
|
33
|
+
var maxConditionsLimit = _ref.maxConditionsLimit,
|
|
34
|
+
expressions = _ref.expressions,
|
|
34
35
|
matching = _ref.matching,
|
|
35
36
|
onChangeOrder = _ref.onChangeOrder,
|
|
36
37
|
onChangeLogic = _ref.onChangeLogic,
|
|
@@ -65,6 +66,9 @@ var Filter = function Filter(_ref) {
|
|
|
65
66
|
}),
|
|
66
67
|
dropMeHere: formatMessage({
|
|
67
68
|
id: 'DS.FILTER.DROP-ME-HERE'
|
|
69
|
+
}),
|
|
70
|
+
conditionsLimit: formatMessage({
|
|
71
|
+
id: 'DS.FILTER.CONDITIONS-LIMIT'
|
|
68
72
|
})
|
|
69
73
|
}, texts, {
|
|
70
74
|
matching: _objectSpread({
|
|
@@ -149,6 +153,9 @@ var Filter = function Filter(_ref) {
|
|
|
149
153
|
var isActive = React.useCallback(function (expression) {
|
|
150
154
|
return expression.id === activeExpressionId;
|
|
151
155
|
}, [activeExpressionId]);
|
|
156
|
+
var isLimitExceeded = React.useMemo(function () {
|
|
157
|
+
return maxConditionsLimit ? expressions.length >= maxConditionsLimit : false;
|
|
158
|
+
}, [expressions, maxConditionsLimit]);
|
|
152
159
|
var componentProps = React.useCallback(function (expression) {
|
|
153
160
|
var contextTypeTexts = getContextTypeTexts(expression);
|
|
154
161
|
var props = {
|
|
@@ -168,16 +175,16 @@ var Filter = function Filter(_ref) {
|
|
|
168
175
|
onDelete: function onDelete() {
|
|
169
176
|
return onDeleteStep(expression.id);
|
|
170
177
|
},
|
|
171
|
-
onDuplicate: function
|
|
178
|
+
onDuplicate: !isLimitExceeded ? function () {
|
|
172
179
|
return onDuplicateStep(expression.id);
|
|
173
|
-
},
|
|
180
|
+
} : undefined,
|
|
174
181
|
footer: renderStepFooter && renderStepFooter(expression),
|
|
175
182
|
children: renderStepContent && renderStepContent(expression, !!activeExpressionId && !isActive(expression)),
|
|
176
183
|
texts: _objectSpread({}, text.step, {}, contextTypeTexts)
|
|
177
184
|
}
|
|
178
185
|
};
|
|
179
186
|
return props[expression.type];
|
|
180
|
-
}, [activeExpressionId, getContextTypeTexts, isActive, logicOptions, onChangeLogic, onChangeStepMatching, onChangeStepName, onDeleteStep, onDuplicateStep, renderStepContent, renderStepFooter, text.step]);
|
|
187
|
+
}, [activeExpressionId, getContextTypeTexts, isActive, isLimitExceeded, logicOptions, onChangeLogic, onChangeStepMatching, onChangeStepName, onDeleteStep, onDuplicateStep, renderStepContent, renderStepFooter, text.step]);
|
|
181
188
|
var renderExpression = React.useCallback(function (expression, index) {
|
|
182
189
|
var Component = component[expression.type];
|
|
183
190
|
var LogicComponent = expression.logic && component[expression.logic.type];
|
|
@@ -193,14 +200,16 @@ var Filter = function Filter(_ref) {
|
|
|
193
200
|
}
|
|
194
201
|
}, /*#__PURE__*/React.createElement(Component, _extends({}, expression.data, componentProps(expression))), expression.logic && index + 1 < expressions.length && /*#__PURE__*/React.createElement(S.LogicWrapper, null, /*#__PURE__*/React.createElement(LogicComponent, _extends({}, expression.logic.data, componentProps(expression.logic)))));
|
|
195
202
|
}, [text.dropMeHere, isActive, componentProps, expressions.length]);
|
|
196
|
-
return /*#__PURE__*/React.createElement(S.FilterWrapper, null,
|
|
203
|
+
return /*#__PURE__*/React.createElement(S.FilterWrapper, null, /*#__PURE__*/React.createElement(MatchingWrapper, null, /*#__PURE__*/React.createElement("div", null, matching && /*#__PURE__*/React.createElement(Matching, _extends({}, matching, {
|
|
197
204
|
texts: text.matching
|
|
198
|
-
}))), /*#__PURE__*/React.createElement(React.Fragment, null, expressions.length > 0 ? /*#__PURE__*/React.createElement(ReactSortable, _extends({}, SORTABLE_CONFIG, {
|
|
205
|
+
}))), !!maxConditionsLimit && /*#__PURE__*/React.createElement(S.ConditionsLimit, null, text.conditionsLimit, ":", ' ', /*#__PURE__*/React.createElement(S.ConditionsLimitResults, null, expressions.length, "/", maxConditionsLimit))), /*#__PURE__*/React.createElement(React.Fragment, null, expressions.length > 0 ? /*#__PURE__*/React.createElement(ReactSortable, _extends({}, SORTABLE_CONFIG, {
|
|
199
206
|
list: expressions,
|
|
200
207
|
setList: onChangeOrder
|
|
201
208
|
}), expressions.map(renderExpression)) : /*#__PURE__*/React.createElement(Placeholder, {
|
|
202
209
|
text: text.placeholder.chooseCondition
|
|
203
|
-
})), addFilterComponent && /*#__PURE__*/React.createElement(S.AddButtonWrapper, null, addFilterComponent
|
|
210
|
+
})), addFilterComponent && /*#__PURE__*/React.createElement(S.AddButtonWrapper, null, typeof addFilterComponent === 'function' ? addFilterComponent({
|
|
211
|
+
isLimitExceeded: isLimitExceeded
|
|
212
|
+
}) : addFilterComponent));
|
|
204
213
|
};
|
|
205
214
|
|
|
206
215
|
export default Filter;
|
package/dist/Filter.styles.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export declare const FilterWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
2
2
|
export declare const MatchingWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
3
|
+
export declare const ConditionsLimit: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
4
|
+
export declare const ConditionsLimitResults: import("styled-components").StyledComponent<"span", any, {}, never>;
|
|
3
5
|
export declare const LogicWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
4
6
|
export declare const ExpressionWrapper: import("styled-components").StyledComponent<"div", any, {
|
|
5
7
|
index: number;
|
package/dist/Filter.styles.js
CHANGED
|
@@ -7,14 +7,22 @@ export var FilterWrapper = styled.div.withConfig({
|
|
|
7
7
|
export var MatchingWrapper = styled.div.withConfig({
|
|
8
8
|
displayName: "Filterstyles__MatchingWrapper",
|
|
9
9
|
componentId: "w5f27p-1"
|
|
10
|
-
})(["margin-bottom:24px;"]);
|
|
10
|
+
})(["display:flex;align-items:center;justify-content:space-between;align-content:flex-end;margin-bottom:24px;"]);
|
|
11
|
+
export var ConditionsLimit = styled.div.withConfig({
|
|
12
|
+
displayName: "Filterstyles__ConditionsLimit",
|
|
13
|
+
componentId: "w5f27p-2"
|
|
14
|
+
})(["margin-left:16px;"]);
|
|
15
|
+
export var ConditionsLimitResults = styled.span.withConfig({
|
|
16
|
+
displayName: "Filterstyles__ConditionsLimitResults",
|
|
17
|
+
componentId: "w5f27p-3"
|
|
18
|
+
})(["font-weight:500;"]);
|
|
11
19
|
export var LogicWrapper = styled.div.withConfig({
|
|
12
20
|
displayName: "Filterstyles__LogicWrapper",
|
|
13
|
-
componentId: "w5f27p-
|
|
21
|
+
componentId: "w5f27p-4"
|
|
14
22
|
})(["margin:22px 0;"]);
|
|
15
23
|
export var ExpressionWrapper = styled.div.withConfig({
|
|
16
24
|
displayName: "Filterstyles__ExpressionWrapper",
|
|
17
|
-
componentId: "w5f27p-
|
|
25
|
+
componentId: "w5f27p-5"
|
|
18
26
|
})(["width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;z-index:", ";&.sortable-chosen{cursor:grabbing;width:100%;opacity:1 !important;height:50px;display:flex;align-items:center;justify-content:center;padding:0;box-shadow:0 16px 32px 0 #23293619;", "{visibility:visible;opacity:1;}", "{display:none;}", "{display:none;}", "{display:none;}}&.ghost-element{cursor:grabbing;width:100%;background-color:", ";border-left:2px solid ", ";border-radius:3px;display:flex;align-items:center;justify-content:center;padding:0;margin-bottom:24px;height:68px;box-shadow:none;position:relative;&:before{content:attr(data-dropLabel);text-align:center;position:relative;color:", ";}*{display:none;}}"], function (props) {
|
|
19
27
|
return 1000 - props.index;
|
|
20
28
|
}, DragIcon, Body, Footer, LogicWrapper, function (props) {
|
|
@@ -26,5 +34,5 @@ export var ExpressionWrapper = styled.div.withConfig({
|
|
|
26
34
|
});
|
|
27
35
|
export var AddButtonWrapper = styled.div.withConfig({
|
|
28
36
|
displayName: "Filterstyles__AddButtonWrapper",
|
|
29
|
-
componentId: "w5f27p-
|
|
37
|
+
componentId: "w5f27p-6"
|
|
30
38
|
})(["display:flex;align-items:flex-start;justify-content:flex-start;margin:24px 0 0;width:100%;"]);
|
package/dist/Filter.types.d.ts
CHANGED
|
@@ -15,7 +15,11 @@ export declare type StepType = {
|
|
|
15
15
|
expressionType?: 'attribute' | 'event';
|
|
16
16
|
};
|
|
17
17
|
export declare type Expression = LogicType | StepType;
|
|
18
|
+
export declare type addFilterComponentProps = {
|
|
19
|
+
isLimitExceeded: boolean;
|
|
20
|
+
};
|
|
18
21
|
export declare type FilterProps = {
|
|
22
|
+
maxConditionsLimit?: number;
|
|
19
23
|
expressions: Expression[];
|
|
20
24
|
matching?: MatchingProps;
|
|
21
25
|
onChangeOrder: (newOrder: Expression[]) => void;
|
|
@@ -26,7 +30,7 @@ export declare type FilterProps = {
|
|
|
26
30
|
onDuplicateStep: (id: string) => void;
|
|
27
31
|
renderStepFooter?: (expression: Expression) => React.ReactNode;
|
|
28
32
|
renderStepContent?: (expression: Expression, hoverDisabled?: boolean) => React.ReactNode;
|
|
29
|
-
addFilterComponent?: React.ReactNode;
|
|
33
|
+
addFilterComponent?: React.ReactNode | ((arg: addFilterComponentProps) => React.ReactNode);
|
|
30
34
|
logicOptions?: LogicOperator[];
|
|
31
35
|
texts?: {
|
|
32
36
|
matching?: MatchingTexts;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synerise/ds-filter",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"description": "Filter UI Component for the Synerise Design System",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"repository": "Synerise/synerise-design",
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
],
|
|
33
33
|
"types": "dist/index.d.ts",
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@synerise/ds-button": "^0.17.
|
|
36
|
-
"@synerise/ds-icon": "^0.
|
|
37
|
-
"@synerise/ds-logic": "^0.7.
|
|
35
|
+
"@synerise/ds-button": "^0.17.9",
|
|
36
|
+
"@synerise/ds-icon": "^0.51.0",
|
|
37
|
+
"@synerise/ds-logic": "^0.7.8",
|
|
38
38
|
"@synerise/ds-step-card": "^0.6.3",
|
|
39
39
|
"react-sortablejs": "^6.0.0"
|
|
40
40
|
},
|
|
@@ -43,5 +43,5 @@
|
|
|
43
43
|
"@synerise/ds-step-card": "*",
|
|
44
44
|
"react": ">=16.9.0 < 17.0.0"
|
|
45
45
|
},
|
|
46
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "c952524bf8a0690fff0bb6b1ef6d13bc3c2ce820"
|
|
47
47
|
}
|