ywana-core8 0.0.136 → 0.0.140

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/dist/index.umd.js CHANGED
@@ -921,7 +921,9 @@
921
921
  _props$options = props.options,
922
922
  options = _props$options === void 0 ? [] : _props$options,
923
923
  value = props.value,
924
- onChange = props.onChange;
924
+ onChange = props.onChange,
925
+ _props$canFilter = props.canFilter,
926
+ canFilter = _props$canFilter === void 0 ? false : _props$canFilter;
925
927
 
926
928
  var _useState = React.useState(false),
927
929
  open = _useState[0],
@@ -931,6 +933,10 @@
931
933
  label = _useState2[0],
932
934
  setLabel = _useState2[1];
933
935
 
936
+ var _useState3 = React.useState(),
937
+ filter = _useState3[0],
938
+ setFilter = _useState3[1];
939
+
934
940
  React.useEffect(function () {
935
941
  if (Array.isArray(options)) {
936
942
  var option = options.find(function (option) {
@@ -940,6 +946,16 @@
940
946
  }
941
947
  }, [value]);
942
948
 
949
+ function change(id, value) {
950
+ console.log('dropdown change > canFilter:', canFilter, id, value);
951
+
952
+ if (canFilter) {
953
+ setFilter(value);
954
+ } else {
955
+ if (onChange) onChange(id, value);
956
+ }
957
+ }
958
+
943
959
  function toggle() {
944
960
  if (site) {
945
961
  site.changeFocus({
@@ -962,24 +978,40 @@
962
978
  setOpen(false);
963
979
  }
964
980
 
981
+ function renderOptions() {
982
+ var canShow = open == true && Array.isArray(options);
983
+
984
+ if (canShow) {
985
+ var filterActive = canFilter && label && label.length > 0;
986
+ var items = filterActive ? options.filter(function (option) {
987
+ return canFilter === false || filter.toUpperCase().indexOf(option.label.toUpperCase()) >= 0;
988
+ }) : options;
989
+ var lis = items.map(function (option) {
990
+ return /*#__PURE__*/React__default["default"].createElement("li", {
991
+ key: option.value,
992
+ value: option.value
993
+ }, option.label);
994
+ });
995
+ return /*#__PURE__*/React__default["default"].createElement("menu", null, /*#__PURE__*/React__default["default"].createElement("ul", {
996
+ onClick: select
997
+ }, lis));
998
+ } else {
999
+ return null;
1000
+ }
1001
+ }
1002
+
965
1003
  return /*#__PURE__*/React__default["default"].createElement("div", {
966
1004
  className: "dropdown"
967
1005
  }, /*#__PURE__*/React__default["default"].createElement(TextField, _extends({}, props, {
968
1006
  onClick: toggle,
969
- value: label
1007
+ value: label,
1008
+ onChange: change
970
1009
  })), /*#__PURE__*/React__default["default"].createElement(Icon, {
971
1010
  icon: "expand_more",
972
1011
  clickable: true,
973
1012
  size: "small",
974
1013
  action: toggle
975
- }), open == true ? /*#__PURE__*/React__default["default"].createElement("menu", null, /*#__PURE__*/React__default["default"].createElement("ul", {
976
- onClick: select
977
- }, Array.isArray(options) ? options.map(function (option) {
978
- return /*#__PURE__*/React__default["default"].createElement("li", {
979
- key: option.value,
980
- value: option.value
981
- }, option.label);
982
- }) : null)) : null);
1014
+ }), renderOptions());
983
1015
  };
984
1016
 
985
1017
  var isFunction$1 = function isFunction(value) {
@@ -2942,7 +2974,8 @@
2942
2974
  value: value,
2943
2975
  onChange: change,
2944
2976
  options: buildOptions(),
2945
- readOnly: !editable
2977
+ readOnly: !editable,
2978
+ canFilter: true
2946
2979
  }) : /*#__PURE__*/React__default["default"].createElement(TextField, {
2947
2980
  outlined: outlined,
2948
2981
  id: id,