@hi-ui/query-filter 5.0.0-canary.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 ADDED
@@ -0,0 +1,14 @@
1
+ # @hi-ui/query-filter
2
+
3
+ ## 5.0.0-canary.0
4
+
5
+ ### Major Changes
6
+
7
+ - 8b326f7db: feat(query-filter): 新增 QueryFilter 组件 (5.0)
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [5e44cfd6c]
12
+ - Updated dependencies [45b8fa5fb]
13
+ - @hi-ui/core@5.0.0-canary.4
14
+ - @hi-ui/icons@5.0.0-canary.4
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # `@hi-ui/query-filter`
2
+
3
+ > TODO: description
4
+
5
+ ## Usage
6
+
7
+ ```
8
+ const QueryFilter = require('@hi-ui/query-filter');
9
+
10
+ // TODO: DEMONSTRATE API
11
+ ```
@@ -0,0 +1,49 @@
1
+ /** @LICENSE
2
+ * @hi-ui/query-filter
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/query-filter#readme
4
+ *
5
+ * Copyright (c) HiUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ 'use strict';
11
+
12
+ var _typeof = require("@babel/runtime/helpers/typeof");
13
+ Object.defineProperty(exports, '__esModule', {
14
+ value: true
15
+ });
16
+ var tslib = require('tslib');
17
+ var React = require('react');
18
+ var classname = require('@hi-ui/classname');
19
+ var Button = require('@hi-ui/button');
20
+ var icons = require('@hi-ui/icons');
21
+ function _interopDefaultCompat(e) {
22
+ return e && _typeof(e) === 'object' && 'default' in e ? e : {
23
+ 'default': e
24
+ };
25
+ }
26
+ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
27
+ var Button__default = /*#__PURE__*/_interopDefaultCompat(Button);
28
+ var prefixCls = classname.getPrefixCls('query-filter-button');
29
+ var FilterButton = function FilterButton(_a) {
30
+ var count = _a.count,
31
+ children = _a.children,
32
+ restProps = tslib.__rest(_a, ["count", "children"]);
33
+ return /*#__PURE__*/React__default["default"].createElement(Button__default["default"], Object.assign({
34
+ className: prefixCls + " " + (count ? 'has-count' : '')
35
+ }, restProps, {
36
+ type: count ? 'secondary' : 'default'
37
+ }), count ? ( /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
38
+ className: prefixCls + "-count-wrapper"
39
+ }, count > 9 ? {
40
+ style: {
41
+ width: 'auto'
42
+ }
43
+ } : {}), /*#__PURE__*/React__default["default"].createElement("span", {
44
+ className: prefixCls + "-count"
45
+ }, count))) : ( /*#__PURE__*/React__default["default"].createElement(icons.FilterOutlined, null)), /*#__PURE__*/React__default["default"].createElement("span", {
46
+ className: prefixCls + "-text"
47
+ }, children));
48
+ };
49
+ exports.FilterButton = FilterButton;
@@ -0,0 +1,138 @@
1
+ /** @LICENSE
2
+ * @hi-ui/query-filter
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/query-filter#readme
4
+ *
5
+ * Copyright (c) HiUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ 'use strict';
11
+
12
+ var _typeof = require("@babel/runtime/helpers/typeof");
13
+ Object.defineProperty(exports, '__esModule', {
14
+ value: true
15
+ });
16
+ var tslib = require('tslib');
17
+ var React = require('react');
18
+ var core = require('@hi-ui/core');
19
+ var classname = require('@hi-ui/classname');
20
+ var Drawer = require('@hi-ui/drawer');
21
+ var Button = require('@hi-ui/button');
22
+ var index = require('../FilterForm/index.js');
23
+ var context = require('../context.js');
24
+ function _interopDefaultCompat(e) {
25
+ return e && _typeof(e) === 'object' && 'default' in e ? e : {
26
+ 'default': e
27
+ };
28
+ }
29
+ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
30
+ var Drawer__default = /*#__PURE__*/_interopDefaultCompat(Drawer);
31
+ var prefixCls = classname.getPrefixCls('query-filter-drawer');
32
+ var FilterDrawer = function FilterDrawer(_a) {
33
+ var propsFilterFields = _a.filterFields,
34
+ propsFormData = _a.formData,
35
+ onChange = _a.onChange,
36
+ onPinChange = _a.onPinChange,
37
+ onSelect = _a.onSelect,
38
+ title = _a.title,
39
+ sureText = _a.sureText,
40
+ cancelText = _a.cancelText,
41
+ visibleProp = _a.visible,
42
+ pinTexts = _a.pinTexts,
43
+ onClose = _a.onClose,
44
+ customFieldProps = _a.customFieldProps,
45
+ restProps = tslib.__rest(_a, ["filterFields", "formData", "onChange", "onPinChange", "onSelect", "title", "sureText", "cancelText", "visible", "pinTexts", "onClose", "customFieldProps"]);
46
+ var _useState = React.useState(propsFormData),
47
+ formData = _useState[0],
48
+ setFormData = _useState[1];
49
+ var _useState2 = React.useState(visibleProp),
50
+ visible = _useState2[0],
51
+ setVisible = _useState2[1];
52
+ var _useState3 = React.useState(propsFilterFields),
53
+ filterFields = _useState3[0],
54
+ setFilterFields = _useState3[1];
55
+ var i18n = core.useLocaleContext();
56
+ var _useFilterContext = context.useFilterContext(),
57
+ selectedCacheData = _useFilterContext.selectedCacheData,
58
+ setSelectedCacheData = _useFilterContext.setSelectedCacheData;
59
+ var originSelectedCacheData = React.useRef(selectedCacheData);
60
+ var newSelectedCacheData = React.useRef(selectedCacheData);
61
+ React.useEffect(function () {
62
+ originSelectedCacheData.current = new Map(selectedCacheData);
63
+ }, [selectedCacheData]);
64
+ React.useEffect(function () {
65
+ setFormData(propsFormData);
66
+ }, [propsFormData]);
67
+ React.useEffect(function () {
68
+ setVisible(visibleProp);
69
+ }, [visibleProp]);
70
+ React.useEffect(function () {
71
+ setFilterFields(propsFilterFields);
72
+ }, [propsFilterFields]);
73
+ var handleChange = function handleChange(val, allVals) {
74
+ setFormData(allVals);
75
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(val, allVals, filterFields.find(function (item) {
76
+ return item.field === Object.keys(val)[0];
77
+ }));
78
+ };
79
+ var handleConfirm = function handleConfirm() {
80
+ setVisible(false);
81
+ onClose === null || onClose === void 0 ? void 0 : onClose();
82
+ onChange === null || onChange === void 0 ? void 0 : onChange(formData, filterFields);
83
+ setSelectedCacheData(new Map(newSelectedCacheData.current));
84
+ };
85
+ var handlePinChange = function handlePinChange(field, visible) {
86
+ var newFields = filterFields.map(function (item) {
87
+ if (item.field === field) {
88
+ return Object.assign(Object.assign({}, item), {
89
+ visible: visible
90
+ });
91
+ }
92
+ return item;
93
+ });
94
+ setFilterFields(newFields);
95
+ onPinChange === null || onPinChange === void 0 ? void 0 : onPinChange(field, visible);
96
+ };
97
+ var handleReset = function handleReset() {
98
+ setFormData(propsFormData);
99
+ setFilterFields(propsFilterFields);
100
+ setSelectedCacheData(new Map(originSelectedCacheData.current));
101
+ };
102
+ var handleClose = function handleClose() {
103
+ setVisible(false);
104
+ onClose === null || onClose === void 0 ? void 0 : onClose();
105
+ handleReset();
106
+ };
107
+ return /*#__PURE__*/React__default["default"].createElement(Drawer__default["default"], Object.assign({
108
+ className: prefixCls,
109
+ title: title,
110
+ footer: /*#__PURE__*/React__default["default"].createElement("div", {
111
+ className: prefixCls + "-footer",
112
+ style: {
113
+ textAlign: 'right'
114
+ }
115
+ }, /*#__PURE__*/React__default["default"].createElement(Button.Button, {
116
+ appearance: "line",
117
+ onClick: handleClose
118
+ }, cancelText || i18n.get('modal.cancelText')), /*#__PURE__*/React__default["default"].createElement(Button.Button, {
119
+ type: "primary",
120
+ onClick: handleConfirm
121
+ }, sureText || i18n.get('modal.confirmText'))),
122
+ visible: visible,
123
+ onClose: handleClose
124
+ }, restProps), /*#__PURE__*/React__default["default"].createElement(index.FilterForm, {
125
+ placement: "vertical",
126
+ appearance: "line",
127
+ filterFields: filterFields,
128
+ formData: formData,
129
+ onChange: handleChange,
130
+ onPinChange: handlePinChange,
131
+ pinTexts: pinTexts,
132
+ onDataChange: function onDataChange(field, value, item, items) {
133
+ newSelectedCacheData.current = index.updateSelectedCacheData(originSelectedCacheData.current, field, value, item, items);
134
+ },
135
+ customFieldProps: customFieldProps
136
+ }));
137
+ };
138
+ exports.FilterDrawer = FilterDrawer;
@@ -0,0 +1,190 @@
1
+ /** @LICENSE
2
+ * @hi-ui/query-filter
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/query-filter#readme
4
+ *
5
+ * Copyright (c) HiUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ 'use strict';
11
+
12
+ var _typeof = require("@babel/runtime/helpers/typeof");
13
+ Object.defineProperty(exports, '__esModule', {
14
+ value: true
15
+ });
16
+ var React = require('react');
17
+ var core = require('@hi-ui/core');
18
+ var classname = require('@hi-ui/classname');
19
+ var Form = require('@hi-ui/form');
20
+ var Tooltip = require('@hi-ui/tooltip');
21
+ var Button = require('@hi-ui/button');
22
+ var icons = require('@hi-ui/icons');
23
+ var context = require('../context.js');
24
+ function _interopDefaultCompat(e) {
25
+ return e && _typeof(e) === 'object' && 'default' in e ? e : {
26
+ 'default': e
27
+ };
28
+ }
29
+ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
30
+ var Form__default = /*#__PURE__*/_interopDefaultCompat(Form);
31
+ var Tooltip__default = /*#__PURE__*/_interopDefaultCompat(Tooltip);
32
+ var Button__default = /*#__PURE__*/_interopDefaultCompat(Button);
33
+ var prefixCls = classname.getPrefixCls('query-filter-form');
34
+ var FilterForm = function FilterForm(_ref) {
35
+ var filterFields = _ref.filterFields,
36
+ formData = _ref.formData,
37
+ onChange = _ref.onChange,
38
+ onPinChange = _ref.onPinChange,
39
+ _ref$placement = _ref.placement,
40
+ placement = _ref$placement === void 0 ? 'horizontal' : _ref$placement,
41
+ _ref$showLabel = _ref.showLabel,
42
+ showLabel = _ref$showLabel === void 0 ? true : _ref$showLabel,
43
+ _ref$showPin = _ref.showPin,
44
+ showPin = _ref$showPin === void 0 ? true : _ref$showPin,
45
+ _ref$appearance = _ref.appearance,
46
+ appearance = _ref$appearance === void 0 ? 'line' : _ref$appearance,
47
+ _ref$gap = _ref.gap,
48
+ gap = _ref$gap === void 0 ? 8 : _ref$gap,
49
+ prepend = _ref.prepend,
50
+ append = _ref.append,
51
+ _ref$pinTexts = _ref.pinTexts,
52
+ pinTexts = _ref$pinTexts === void 0 ? {
53
+ pin: '',
54
+ unpin: ''
55
+ } : _ref$pinTexts,
56
+ onDataChange = _ref.onDataChange,
57
+ customFieldProps = _ref.customFieldProps;
58
+ var formRef = React.useRef(null);
59
+ React.useEffect(function () {
60
+ var _a;
61
+ (_a = formRef.current) === null || _a === void 0 ? void 0 : _a.setFieldsValue(formData);
62
+ }, [formData]);
63
+ var prependList = prepend ? Array.isArray(prepend) ? prepend : [prepend] : [];
64
+ var appendList = append ? Array.isArray(append) ? append : [append] : [];
65
+ return /*#__PURE__*/React__default["default"].createElement("div", {
66
+ className: prefixCls + "-wrapper"
67
+ }, /*#__PURE__*/React__default["default"].createElement(Form__default["default"], {
68
+ className: "" + prefixCls,
69
+ innerRef: formRef,
70
+ initialValues: formData,
71
+ onValuesChange: onChange,
72
+ labelPlacement: "top",
73
+ placement: placement,
74
+ showValidateMessage: placement === 'vertical',
75
+ style: {
76
+ '--filter-form-gap': gap + "px"
77
+ }
78
+ }, prependList.map(function (item, index) {
79
+ return /*#__PURE__*/React__default["default"].createElement(Form__default["default"].Item, {
80
+ key: index
81
+ }, item);
82
+ }), filterFields.map(function (item) {
83
+ return /*#__PURE__*/React__default["default"].createElement(FilterField, {
84
+ key: item.field,
85
+ item: item,
86
+ showLabel: showLabel,
87
+ showPin: showPin,
88
+ pinTexts: pinTexts,
89
+ appearance: appearance,
90
+ onPinChange: onPinChange,
91
+ onDataChange: onDataChange,
92
+ customFieldProps: customFieldProps
93
+ });
94
+ }), appendList.map(function (item, index) {
95
+ return /*#__PURE__*/React__default["default"].createElement(Form__default["default"].Item, {
96
+ key: index
97
+ }, item);
98
+ })));
99
+ };
100
+ var updateSelectedCacheData = function updateSelectedCacheData(selectedCacheData, field, value, item, items) {
101
+ var newSelectedCacheData = new Map(selectedCacheData);
102
+ if (!value || Array.isArray(value) && value.length === 0) {
103
+ newSelectedCacheData.set(field, []);
104
+ } else {
105
+ if (Array.isArray(value) && items) {
106
+ newSelectedCacheData.set(field, [].concat(items));
107
+ } else {
108
+ newSelectedCacheData.set(field, [item]);
109
+ }
110
+ }
111
+ return newSelectedCacheData;
112
+ };
113
+ var useCacheSelectedData = function useCacheSelectedData() {
114
+ var _useFilterContext = context.useFilterContext(),
115
+ selectedCacheData = _useFilterContext.selectedCacheData,
116
+ setSelectedCacheData = _useFilterContext.setSelectedCacheData;
117
+ var cacheSelectedData = function cacheSelectedData(field, value, item, items) {
118
+ var newSelectedCacheData = updateSelectedCacheData(selectedCacheData, field, value, item, items);
119
+ setSelectedCacheData(newSelectedCacheData);
120
+ };
121
+ return {
122
+ cacheSelectedData: cacheSelectedData
123
+ };
124
+ };
125
+ function FilterField(_ref2) {
126
+ var item = _ref2.item,
127
+ showLabel = _ref2.showLabel,
128
+ showPin = _ref2.showPin,
129
+ pinTexts = _ref2.pinTexts,
130
+ onPinChange = _ref2.onPinChange,
131
+ appearance = _ref2.appearance,
132
+ onDataChange = _ref2.onDataChange,
133
+ customFieldProps = _ref2.customFieldProps;
134
+ var field = item.field,
135
+ label = item.label,
136
+ component = item.component,
137
+ visible = item.visible;
138
+ var _useFilterContext2 = context.useFilterContext(),
139
+ selectedCacheData = _useFilterContext2.selectedCacheData;
140
+ var i18n = core.useLocaleContext();
141
+ var dataMemo = React__default["default"].useMemo(function () {
142
+ var _a, _b;
143
+ var dataProp = (_a = component === null || component === void 0 ? void 0 : component.props) === null || _a === void 0 ? void 0 : _a.data;
144
+ // 去重后的数据
145
+ var data = dataProp === null || dataProp === void 0 ? void 0 : dataProp.filter(function (item) {
146
+ var _a;
147
+ return !((_a = selectedCacheData.get(field)) === null || _a === void 0 ? void 0 : _a.includes(item));
148
+ });
149
+ return ((_b = component === null || component === void 0 ? void 0 : component.props) === null || _b === void 0 ? void 0 : _b.dataSource) ? (selectedCacheData.get(field) || []).concat(data || []) : dataProp;
150
+ }, [selectedCacheData, field, component]);
151
+ return /*#__PURE__*/React__default["default"].createElement("div", {
152
+ key: field,
153
+ className: prefixCls + "-item"
154
+ }, /*#__PURE__*/React__default["default"].createElement(Form__default["default"].Item, {
155
+ key: field,
156
+ field: field,
157
+ label: showLabel ? label : '',
158
+ className: prefixCls + "-item-form"
159
+ }, /*#__PURE__*/React__default["default"].cloneElement(component, Object.assign(Object.assign(Object.assign({
160
+ // Todo:因为 Input 组件目前 appearance 没有 'contained' 类型,所以这里先特殊处理
161
+ appearance: appearance === 'contained' ? component.props.appearance || 'contained' : 'line'
162
+ }, appearance === 'contained' ? {
163
+ label: label
164
+ } : {}), {
165
+ data: dataMemo,
166
+ onChange: function onChange(value, item, items) {
167
+ var _a, _b;
168
+ (_b = (_a = component === null || component === void 0 ? void 0 : component.props) === null || _a === void 0 ? void 0 : _a.onChange) === null || _b === void 0 ? void 0 : _b.call(_a, value, item, items);
169
+ onDataChange === null || onDataChange === void 0 ? void 0 : onDataChange(field, value, item, items);
170
+ }
171
+ }), customFieldProps === null || customFieldProps === void 0 ? void 0 : customFieldProps(item)))), showPin && ( /*#__PURE__*/React__default["default"].createElement(Tooltip__default["default"], {
172
+ title: visible ? (pinTexts === null || pinTexts === void 0 ? void 0 : pinTexts.unpin) || i18n.get('queryFilter.unpin') : (pinTexts === null || pinTexts === void 0 ? void 0 : pinTexts.pin) || i18n.get('queryFilter.pin'),
173
+ placement: "left",
174
+ gutterGap: 9
175
+ }, /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
176
+ className: prefixCls + "-item-pin-btn",
177
+ size: "sm",
178
+ type: visible ? 'primary' : 'default',
179
+ appearance: "text",
180
+ icon: /*#__PURE__*/React__default["default"].createElement(icons.PinOutlined, {
181
+ size: 16
182
+ }),
183
+ onClick: function onClick() {
184
+ return onPinChange === null || onPinChange === void 0 ? void 0 : onPinChange(field, !visible);
185
+ }
186
+ }))));
187
+ }
188
+ exports.FilterForm = FilterForm;
189
+ exports.updateSelectedCacheData = updateSelectedCacheData;
190
+ exports.useCacheSelectedData = useCacheSelectedData;
@@ -0,0 +1,69 @@
1
+ /** @LICENSE
2
+ * @hi-ui/query-filter
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/query-filter#readme
4
+ *
5
+ * Copyright (c) HiUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ 'use strict';
11
+
12
+ var _typeof = require("@babel/runtime/helpers/typeof");
13
+ Object.defineProperty(exports, '__esModule', {
14
+ value: true
15
+ });
16
+ var tslib = require('tslib');
17
+ var React = require('react');
18
+ var classname = require('@hi-ui/classname');
19
+ var env = require('@hi-ui/env');
20
+ var index = require('./FilterForm/index.js');
21
+ function _interopDefaultCompat(e) {
22
+ return e && _typeof(e) === 'object' && 'default' in e ? e : {
23
+ 'default': e
24
+ };
25
+ }
26
+ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
27
+ var QUERY_FILTER_PREFIX = classname.getPrefixCls('query-filter');
28
+ /**
29
+ * 筛选表单
30
+ */
31
+ var QueryFilter = /*#__PURE__*/React.forwardRef(function (_a, ref) {
32
+ var _a$prefixCls = _a.prefixCls,
33
+ prefixCls = _a$prefixCls === void 0 ? QUERY_FILTER_PREFIX : _a$prefixCls,
34
+ _a$role = _a.role,
35
+ role = _a$role === void 0 ? 'query-filter' : _a$role,
36
+ className = _a.className,
37
+ filterFields = _a.filterFields,
38
+ formData = _a.formData,
39
+ onChange = _a.onChange,
40
+ rest = tslib.__rest(_a, ["prefixCls", "role", "className", "children", "filterFields", "formData", "onChange"]);
41
+ var cls = classname.cx(prefixCls, className);
42
+ var _useCacheSelectedData = index.useCacheSelectedData(),
43
+ cacheSelectedData = _useCacheSelectedData.cacheSelectedData;
44
+ var handleChange = function handleChange(formData) {
45
+ onChange === null || onChange === void 0 ? void 0 : onChange(formData);
46
+ };
47
+ return /*#__PURE__*/React__default["default"].createElement("div", {
48
+ ref: ref,
49
+ role: role,
50
+ className: cls
51
+ }, /*#__PURE__*/React__default["default"].createElement(index.FilterForm, Object.assign({
52
+ placement: "horizontal",
53
+ showLabel: false,
54
+ showPin: false,
55
+ appearance: "contained",
56
+ filterFields: filterFields,
57
+ formData: formData,
58
+ onChange: function onChange(value, allValues) {
59
+ handleChange(allValues);
60
+ },
61
+ onDataChange: function onDataChange(field, value, item, items) {
62
+ cacheSelectedData(field, value, item, items);
63
+ }
64
+ }, rest)));
65
+ });
66
+ if (env.__DEV__) {
67
+ QueryFilter.displayName = 'QueryFilter';
68
+ }
69
+ exports.QueryFilter = QueryFilter;
@@ -0,0 +1,37 @@
1
+ /** @LICENSE
2
+ * @hi-ui/query-filter
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/query-filter#readme
4
+ *
5
+ * Copyright (c) HiUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ 'use strict';
11
+
12
+ var _typeof = require("@babel/runtime/helpers/typeof");
13
+ Object.defineProperty(exports, '__esModule', {
14
+ value: true
15
+ });
16
+ var React = require('react');
17
+ var context = require('./context.js');
18
+ function _interopDefaultCompat(e) {
19
+ return e && _typeof(e) === 'object' && 'default' in e ? e : {
20
+ 'default': e
21
+ };
22
+ }
23
+ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
24
+ var QueryFilterProvider = function QueryFilterProvider(_ref) {
25
+ var children = _ref.children;
26
+ // 缓存选中的数据,方便在多个组件中共享数据,解决组件 dataSource 模式下选中数据回显问题
27
+ var _React$useState = React__default["default"].useState(new Map()),
28
+ selectedCacheData = _React$useState[0],
29
+ setSelectedCacheData = _React$useState[1];
30
+ return /*#__PURE__*/React__default["default"].createElement(context.FilterProvider, {
31
+ value: {
32
+ selectedCacheData: selectedCacheData,
33
+ setSelectedCacheData: setSelectedCacheData
34
+ }
35
+ }, children);
36
+ };
37
+ exports.QueryFilterProvider = QueryFilterProvider;
@@ -0,0 +1,41 @@
1
+ /** @LICENSE
2
+ * @hi-ui/query-filter
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/query-filter#readme
4
+ *
5
+ * Copyright (c) HiUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ 'use strict';
11
+
12
+ var _typeof = require("@babel/runtime/helpers/typeof");
13
+ Object.defineProperty(exports, '__esModule', {
14
+ value: true
15
+ });
16
+ var tslib = require('tslib');
17
+ var React = require('react');
18
+ var classname = require('@hi-ui/classname');
19
+ var icons = require('@hi-ui/icons');
20
+ var Input = require('@hi-ui/input');
21
+ function _interopDefaultCompat(e) {
22
+ return e && _typeof(e) === 'object' && 'default' in e ? e : {
23
+ 'default': e
24
+ };
25
+ }
26
+ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
27
+ var Input__default = /*#__PURE__*/_interopDefaultCompat(Input);
28
+ var prefixCls = classname.getPrefixCls('query-filter-search-input');
29
+ var SearchInput = function SearchInput(_a) {
30
+ var restProps = tslib.__rest(_a, []);
31
+ return /*#__PURE__*/React__default["default"].createElement(Input__default["default"], Object.assign({
32
+ className: prefixCls,
33
+ style: {
34
+ width: 200
35
+ },
36
+ clearable: true,
37
+ appearance: "filled",
38
+ prefix: /*#__PURE__*/React__default["default"].createElement(icons.SearchOutlined, null)
39
+ }, restProps));
40
+ };
41
+ exports.SearchInput = SearchInput;
@@ -0,0 +1,28 @@
1
+ /** @LICENSE
2
+ * @hi-ui/query-filter
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/query-filter#readme
4
+ *
5
+ * Copyright (c) HiUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ 'use strict';
11
+
12
+ Object.defineProperty(exports, '__esModule', {
13
+ value: true
14
+ });
15
+ var React = require('react');
16
+ var FilterContext = /*#__PURE__*/React.createContext({
17
+ selectedCacheData: new Map(),
18
+ setSelectedCacheData: function setSelectedCacheData() {
19
+ console.log('setSelectedCacheData');
20
+ }
21
+ });
22
+ var FilterProvider = FilterContext.Provider;
23
+ var useFilterContext = function useFilterContext() {
24
+ return React.useContext(FilterContext);
25
+ };
26
+ exports.FilterContext = FilterContext;
27
+ exports.FilterProvider = FilterProvider;
28
+ exports.useFilterContext = useFilterContext;
@@ -0,0 +1,30 @@
1
+ /** @LICENSE
2
+ * @hi-ui/query-filter
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/query-filter#readme
4
+ *
5
+ * Copyright (c) HiUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ 'use strict';
11
+
12
+ Object.defineProperty(exports, '__esModule', {
13
+ value: true
14
+ });
15
+ require('./styles/index.scss.js');
16
+ var QueryFilter = require('./QueryFilter.js');
17
+ var QueryFilterProvider = require('./QueryFilterProvider.js');
18
+ var index = require('./FilterForm/index.js');
19
+ var index$1 = require('./FilterDrawer/index.js');
20
+ var index$2 = require('./SearchInput/index.js');
21
+ var index$3 = require('./FilterButton/index.js');
22
+ exports.QueryFilter = QueryFilter.QueryFilter;
23
+ exports["default"] = QueryFilter.QueryFilter;
24
+ exports.QueryFilterProvider = QueryFilterProvider.QueryFilterProvider;
25
+ exports.FilterForm = index.FilterForm;
26
+ exports.updateSelectedCacheData = index.updateSelectedCacheData;
27
+ exports.useCacheSelectedData = index.useCacheSelectedData;
28
+ exports.FilterDrawer = index$1.FilterDrawer;
29
+ exports.SearchInput = index$2.SearchInput;
30
+ exports.FilterButton = index$3.FilterButton;
@@ -0,0 +1,18 @@
1
+ /** @LICENSE
2
+ * @hi-ui/query-filter
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/query-filter#readme
4
+ *
5
+ * Copyright (c) HiUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ 'use strict';
11
+
12
+ Object.defineProperty(exports, '__esModule', {
13
+ value: true
14
+ });
15
+ var css_248z = ".hi-v5-query-filter-form-wrapper .hi-v5-query-filter-form {gap: var(--query-filter-form-gap, var(--hi-v5-spacing-4, 8px));}.hi-v5-query-filter-form-wrapper .hi-v5-query-filter-form-item {display: -webkit-box;display: -ms-flexbox;display: flex;-webkit-box-align: center;-ms-flex-align: center;align-items: center;}.hi-v5-query-filter-form-wrapper .hi-v5-query-filter-form-item-form {-webkit-box-flex: 1;-ms-flex: 1 1;flex: 1 1;overflow: hidden;}.hi-v5-query-filter-form-wrapper .hi-v5-query-filter-form-item-pin-btn {-ms-flex-negative: 0;flex-shrink: 0;width: var(--hi-v5-height-8, 32px) !important;height: var(--hi-v5-height-8, 32px) !important;margin: var(--hi-v5-spacing-1, 2px) 0 0 var(--hi-v5-spacing-4, 8px);}.hi-v5-query-filter-button-icon {font-size: var(--hi-v5-text-size-lg, 1rem);}.hi-v5-query-filter-button-text {-webkit-margin-start: var(--hi-v5-spacing-4, 8px);margin-inline-start: var(--hi-v5-spacing-4, 8px);}.hi-v5-query-filter-button.has-count .hi-v5-query-filter-button-text {color: var(--hi-v5-color-primary-600, var(--hi-v5-color-brandblue-600, #1843d2));}.hi-v5-query-filter-button-count-wrapper {-webkit-box-sizing: border-box;box-sizing: border-box;display: -webkit-inline-box;display: -ms-inline-flexbox;display: inline-flex;-webkit-box-align: center;-ms-flex-align: center;align-items: center;-webkit-box-pack: center;-ms-flex-pack: center;justify-content: center;width: 14px;height: 14px;border-radius: 9999px;color: #fff;background-color: var(--hi-v5-color-primary-600, var(--hi-v5-color-brandblue-600, #1843d2));}.hi-v5-query-filter-button-count {font-size: 20px;-webkit-transform: scale(0.5);transform: scale(0.5);-webkit-transform-origin: center;transform-origin: center;}.hi-v5-query-filter-search-input[class*=\"--appearance-filled\"] [class*=__inner],.hi-v5-query-filter-search-input[class*=\"--appearance-filled\"] [class*=__inner--focused] {background-color: var(--hi-v5-color-gray-50, #f2f4f7) !important;}";
16
+ var __styleInject__ = require('@hi-ui/style-inject')["default"];
17
+ __styleInject__(css_248z);
18
+ exports["default"] = css_248z;
@@ -0,0 +1,36 @@
1
+ /** @LICENSE
2
+ * @hi-ui/query-filter
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/query-filter#readme
4
+ *
5
+ * Copyright (c) HiUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ import { __rest } from 'tslib';
11
+ import React from 'react';
12
+ import { getPrefixCls } from '@hi-ui/classname';
13
+ import Button from '@hi-ui/button';
14
+ import { FilterOutlined } from '@hi-ui/icons';
15
+ var prefixCls = getPrefixCls('query-filter-button');
16
+ var FilterButton = function FilterButton(_a) {
17
+ var count = _a.count,
18
+ children = _a.children,
19
+ restProps = __rest(_a, ["count", "children"]);
20
+ return /*#__PURE__*/React.createElement(Button, Object.assign({
21
+ className: prefixCls + " " + (count ? 'has-count' : '')
22
+ }, restProps, {
23
+ type: count ? 'secondary' : 'default'
24
+ }), count ? ( /*#__PURE__*/React.createElement("div", Object.assign({
25
+ className: prefixCls + "-count-wrapper"
26
+ }, count > 9 ? {
27
+ style: {
28
+ width: 'auto'
29
+ }
30
+ } : {}), /*#__PURE__*/React.createElement("span", {
31
+ className: prefixCls + "-count"
32
+ }, count))) : ( /*#__PURE__*/React.createElement(FilterOutlined, null)), /*#__PURE__*/React.createElement("span", {
33
+ className: prefixCls + "-text"
34
+ }, children));
35
+ };
36
+ export { FilterButton };