@shakthillc/components
Version:
React generic components for shakthi products
81 lines (78 loc) • 2.48 kB
JavaScript
import _Object$assign from "babel-runtime/core-js/object/assign";
import _slicedToArray from "babel-runtime/helpers/slicedToArray";
import React, { useEffect, useState, useRef } from "react";
import style from "./AttributePicker.module.css";
import Popup from "./../Popup/Popup";
import CheckBoxGroup from "../CheckBoxGroup/CheckBoxGroup";
import Icon from "@material-ui/core/Icon";
var AttributePicker = function AttributePicker(_ref) {
var isPopupOpen = _ref.isPopupOpen,
togglePopup = _ref.togglePopup,
removeClose = _ref.removeClose,
_ref$options = _ref.options,
options = _ref$options === undefined ? [] : _ref$options,
onChange = _ref.onChange,
_ref$iconColor = _ref.iconColor,
iconColor = _ref$iconColor === undefined ? "#005397" : _ref$iconColor,
inlineStyle = _ref.style;
var _useState = useState([]),
_useState2 = _slicedToArray(_useState, 2),
userOptions = _useState2[0],
setOptions = _useState2[1];
var isFirstRun = useRef(true);
useEffect(function () {
if (isFirstRun.current) {
isFirstRun.current = false;
} else {
!isPopupOpen && handleChange();
}
}, [isPopupOpen]);
var handleChange = function handleChange(data) {
if (userOptions.length === 0) {
var filterData = [];
options.map(function (obj) {
obj.flag && filterData.push(obj.value);
});
onChange(filterData);
} else {
onChange(userOptions);
}
};
return React.createElement(
"div",
{ className: style.containerr },
React.createElement(
"div",
{ className: style.button, onClick: togglePopup, style: inlineStyle },
isPopupOpen ? React.createElement(
"span",
{ className: style.spantext },
"Save"
) : React.createElement(
Icon,
{
style: { color: iconColor, fontSize: 32, verticalAlign: "middle" }
},
"view_column"
),
React.createElement(
Icon,
{
style: { color: iconColor, fontSize: 20, verticalAlign: "middle" }
},
"arrow_drop_down"
)
),
isPopupOpen ? React.createElement(
"div",
{ className: style.list, onClick: removeClose },
React.createElement(CheckBoxGroup, {
options: options,
onChange: function onChange(data) {
setOptions(_Object$assign([], data));
}
})
) : null
);
};
export default Popup(AttributePicker);