ze-react-component-library
Version:
ZeroETP React Component Library
89 lines (77 loc) • 2.61 kB
JavaScript
import "antd/es/select/style";
import _Select from "antd/es/select";
import React, { useState, useRef } from "react";
import { getColumnPublicProps } from "../../util";
import { getColumnFilterProps } from "./FilterComponents";
import useLocale from "../../hooks/useLocale";
var PropertyFilter = function PropertyFilter(_a) {
var property = _a.property,
displayText = _a.displayText,
_selectedKeys = _a.selectedKeys,
_confirm = _a.confirm,
_b = _a.disableReset,
disableReset = _b === void 0 ? true : _b;
var _c = getColumnPublicProps(property),
valueEnum = _c.valueEnum,
valueOptions = _c.valueOptions;
var filterProps = getColumnFilterProps(property, {}, valueEnum);
var _d = useState(_selectedKeys),
selectedKeys = _d[0],
_setSelectedKeys = _d[1];
var _e = useState(false),
open = _e[0],
setOpen = _e[1];
var popContainerRef = useRef(null);
var t = useLocale().t;
return /*#__PURE__*/React.createElement("span", null, displayText, /*#__PURE__*/React.createElement(_Select, {
bordered: false,
style: {
margin: "0 -11px"
},
dropdownMatchSelectWidth: false,
open: open,
onDropdownVisibleChange: function onDropdownVisibleChange(o) {
_setSelectedKeys(_selectedKeys);
setOpen(o);
},
dropdownStyle: {
zIndex: 998,
overflow: "visible"
},
dropdownRender: function dropdownRender() {
var _a;
return /*#__PURE__*/React.createElement("span", {
ref: popContainerRef
}, (_a = filterProps.filterDropdown) === null || _a === void 0 ? void 0 : _a.call(filterProps, {
confirm: function confirm() {
setOpen(false);
_confirm === null || _confirm === void 0 ? void 0 : _confirm((selectedKeys === null || selectedKeys === void 0 ? void 0 : selectedKeys.length) > 0 ? selectedKeys : null);
},
disableReset: disableReset,
reset: function reset() {
setOpen(false);
_setSelectedKeys([]);
_confirm === null || _confirm === void 0 ? void 0 : _confirm(null);
},
selectedKeys: selectedKeys,
setSelectedKeys: function setSelectedKeys(v) {
setOpen(true);
_setSelectedKeys(v);
},
visible: open,
prefixCls: "",
getPopupContainer: function getPopupContainer() {
return popContainerRef.current;
},
filters: valueOptions,
t: t
}));
},
options: [{
value: "1",
label: ""
}],
value: "1"
}));
};
export default PropertyFilter;