@synerise/ds-filter 0.12.2 → 0.13.1
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 +25 -0
- package/dist/Filter.js +24 -8
- package/dist/Filter.styles.d.ts +3 -0
- package/dist/Filter.styles.js +19 -5
- package/dist/Filter.types.d.ts +11 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,31 @@
|
|
|
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.1](https://github.com/Synerise/synerise-design/compare/@synerise/ds-filter@0.13.0...@synerise/ds-filter@0.13.1) (2022-11-23)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **filter:** add props to dependency array ([3ba9f26](https://github.com/Synerise/synerise-design/commit/3ba9f26547805967bbe74b66df6112fde8c581e3))
|
|
12
|
+
* **filter:** add props to overwrite filter title ([889753a](https://github.com/Synerise/synerise-design/commit/889753a305d6aba7ccf817bc11d6b44b5a06447f))
|
|
13
|
+
* **filter:** filter props to hide step card header ([b117415](https://github.com/Synerise/synerise-design/commit/b11741522b60065e905bfac76e926b93f9d26568))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
# [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)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### Features
|
|
23
|
+
|
|
24
|
+
* **filter:** changes after review ([d2c30a7](https://github.com/Synerise/synerise-design/commit/d2c30a75e1bed46ca4da78c3f390d0f51614c659))
|
|
25
|
+
* **filter:** limiting the number of conditions ([6f0d114](https://github.com/Synerise/synerise-design/commit/6f0d114735abc97362b461adc138f7fcadc39456))
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
6
31
|
## [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)
|
|
7
32
|
|
|
8
33
|
**Note:** Version bump only for package @synerise/ds-filter
|
package/dist/Filter.js
CHANGED
|
@@ -30,7 +30,10 @@ var component = {
|
|
|
30
30
|
};
|
|
31
31
|
|
|
32
32
|
var Filter = function Filter(_ref) {
|
|
33
|
-
var
|
|
33
|
+
var _texts$overwritten;
|
|
34
|
+
|
|
35
|
+
var maxConditionsLimit = _ref.maxConditionsLimit,
|
|
36
|
+
expressions = _ref.expressions,
|
|
34
37
|
matching = _ref.matching,
|
|
35
38
|
onChangeOrder = _ref.onChangeOrder,
|
|
36
39
|
onChangeLogic = _ref.onChangeLogic,
|
|
@@ -42,7 +45,11 @@ var Filter = function Filter(_ref) {
|
|
|
42
45
|
renderStepContent = _ref.renderStepContent,
|
|
43
46
|
addFilterComponent = _ref.addFilterComponent,
|
|
44
47
|
texts = _ref.texts,
|
|
45
|
-
logicOptions = _ref.logicOptions
|
|
48
|
+
logicOptions = _ref.logicOptions,
|
|
49
|
+
_ref$visibilityConfig = _ref.visibilityConfig,
|
|
50
|
+
visibilityConfig = _ref$visibilityConfig === void 0 ? {
|
|
51
|
+
isStepCardHeaderVisible: true
|
|
52
|
+
} : _ref$visibilityConfig;
|
|
46
53
|
var previousExpressions = usePrevious(expressions);
|
|
47
54
|
|
|
48
55
|
var _React$useState = React.useState(null),
|
|
@@ -65,6 +72,9 @@ var Filter = function Filter(_ref) {
|
|
|
65
72
|
}),
|
|
66
73
|
dropMeHere: formatMessage({
|
|
67
74
|
id: 'DS.FILTER.DROP-ME-HERE'
|
|
75
|
+
}),
|
|
76
|
+
conditionsLimit: formatMessage({
|
|
77
|
+
id: 'DS.FILTER.CONDITIONS-LIMIT'
|
|
68
78
|
})
|
|
69
79
|
}, texts, {
|
|
70
80
|
matching: _objectSpread({
|
|
@@ -149,6 +159,9 @@ var Filter = function Filter(_ref) {
|
|
|
149
159
|
var isActive = React.useCallback(function (expression) {
|
|
150
160
|
return expression.id === activeExpressionId;
|
|
151
161
|
}, [activeExpressionId]);
|
|
162
|
+
var isLimitExceeded = React.useMemo(function () {
|
|
163
|
+
return maxConditionsLimit ? expressions.length >= maxConditionsLimit : false;
|
|
164
|
+
}, [expressions, maxConditionsLimit]);
|
|
152
165
|
var componentProps = React.useCallback(function (expression) {
|
|
153
166
|
var contextTypeTexts = getContextTypeTexts(expression);
|
|
154
167
|
var props = {
|
|
@@ -168,16 +181,17 @@ var Filter = function Filter(_ref) {
|
|
|
168
181
|
onDelete: function onDelete() {
|
|
169
182
|
return onDeleteStep(expression.id);
|
|
170
183
|
},
|
|
171
|
-
onDuplicate: function
|
|
184
|
+
onDuplicate: !isLimitExceeded ? function () {
|
|
172
185
|
return onDuplicateStep(expression.id);
|
|
173
|
-
},
|
|
186
|
+
} : undefined,
|
|
174
187
|
footer: renderStepFooter && renderStepFooter(expression),
|
|
175
188
|
children: renderStepContent && renderStepContent(expression, !!activeExpressionId && !isActive(expression)),
|
|
189
|
+
isHeaderVisible: visibilityConfig.isStepCardHeaderVisible,
|
|
176
190
|
texts: _objectSpread({}, text.step, {}, contextTypeTexts)
|
|
177
191
|
}
|
|
178
192
|
};
|
|
179
193
|
return props[expression.type];
|
|
180
|
-
}, [activeExpressionId, getContextTypeTexts, isActive, logicOptions, onChangeLogic, onChangeStepMatching, onChangeStepName, onDeleteStep, onDuplicateStep, renderStepContent, renderStepFooter, text.step]);
|
|
194
|
+
}, [activeExpressionId, getContextTypeTexts, isActive, isLimitExceeded, logicOptions, onChangeLogic, onChangeStepMatching, onChangeStepName, onDeleteStep, onDuplicateStep, renderStepContent, renderStepFooter, text.step, visibilityConfig.isStepCardHeaderVisible]);
|
|
181
195
|
var renderExpression = React.useCallback(function (expression, index) {
|
|
182
196
|
var Component = component[expression.type];
|
|
183
197
|
var LogicComponent = expression.logic && component[expression.logic.type];
|
|
@@ -193,14 +207,16 @@ var Filter = function Filter(_ref) {
|
|
|
193
207
|
}
|
|
194
208
|
}, /*#__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
209
|
}, [text.dropMeHere, isActive, componentProps, expressions.length]);
|
|
196
|
-
return /*#__PURE__*/React.createElement(S.FilterWrapper, null,
|
|
210
|
+
return /*#__PURE__*/React.createElement(S.FilterWrapper, null, texts != null && (_texts$overwritten = texts.overwritten) != null && _texts$overwritten.filterTitle ? /*#__PURE__*/React.createElement(S.FilterTitle, null, texts.overwritten.filterTitle) : /*#__PURE__*/React.createElement(MatchingWrapper, null, /*#__PURE__*/React.createElement("div", null, matching && /*#__PURE__*/React.createElement(Matching, _extends({}, matching, {
|
|
197
211
|
texts: text.matching
|
|
198
|
-
}))), /*#__PURE__*/React.createElement(React.Fragment, null, expressions.length > 0 ? /*#__PURE__*/React.createElement(ReactSortable, _extends({}, SORTABLE_CONFIG, {
|
|
212
|
+
}))), !!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
213
|
list: expressions,
|
|
200
214
|
setList: onChangeOrder
|
|
201
215
|
}), expressions.map(renderExpression)) : /*#__PURE__*/React.createElement(Placeholder, {
|
|
202
216
|
text: text.placeholder.chooseCondition
|
|
203
|
-
})), addFilterComponent && /*#__PURE__*/React.createElement(S.AddButtonWrapper, null, addFilterComponent
|
|
217
|
+
})), addFilterComponent && /*#__PURE__*/React.createElement(S.AddButtonWrapper, null, typeof addFilterComponent === 'function' ? addFilterComponent({
|
|
218
|
+
isLimitExceeded: isLimitExceeded
|
|
219
|
+
}) : addFilterComponent));
|
|
204
220
|
};
|
|
205
221
|
|
|
206
222
|
export default Filter;
|
package/dist/Filter.styles.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
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;
|
|
6
8
|
}, never>;
|
|
7
9
|
export declare const AddButtonWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
10
|
+
export declare const FilterTitle: import("styled-components").StyledComponent<"div", any, {}, never>;
|
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,11 @@ export var ExpressionWrapper = styled.div.withConfig({
|
|
|
26
34
|
});
|
|
27
35
|
export var AddButtonWrapper = styled.div.withConfig({
|
|
28
36
|
displayName: "Filterstyles__AddButtonWrapper",
|
|
29
|
-
componentId: "w5f27p-
|
|
30
|
-
})(["display:flex;align-items:flex-start;justify-content:flex-start;margin:24px 0 0;width:100%;"]);
|
|
37
|
+
componentId: "w5f27p-6"
|
|
38
|
+
})(["display:flex;align-items:flex-start;justify-content:flex-start;margin:24px 0 0;width:100%;"]);
|
|
39
|
+
export var FilterTitle = styled.div.withConfig({
|
|
40
|
+
displayName: "Filterstyles__FilterTitle",
|
|
41
|
+
componentId: "w5f27p-7"
|
|
42
|
+
})(["font-size:16px;font-weight:500;line-height:1.25;color:", ";text-align:left;user-select:none;&:first-letter{text-transform:uppercase;}"], function (props) {
|
|
43
|
+
return props.theme.palette['grey-800'];
|
|
44
|
+
});
|
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;
|
|
@@ -52,5 +56,11 @@ export declare type FilterProps = {
|
|
|
52
56
|
};
|
|
53
57
|
addFilter?: string;
|
|
54
58
|
dropMeHere?: string;
|
|
59
|
+
overwritten?: {
|
|
60
|
+
filterTitle?: string;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
visibilityConfig: {
|
|
64
|
+
isStepCardHeaderVisible?: boolean;
|
|
55
65
|
};
|
|
56
66
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synerise/ds-filter",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.1",
|
|
4
4
|
"description": "Filter UI Component for the Synerise Design System",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"repository": "Synerise/synerise-design",
|
|
@@ -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": "d40a37ab255097be874ce7efc0c2bcc54d3cc943"
|
|
47
47
|
}
|