arengibook 2.4.588 → 2.4.590

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.
Files changed (2) hide show
  1. package/dist/index.js +182 -185
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -35813,6 +35813,8 @@ var PopupPresets = {
35813
35813
  var Dropdown = function Dropdown(_ref) {
35814
35814
  var _ref$options = _ref.options,
35815
35815
  options = _ref$options === void 0 ? [] : _ref$options,
35816
+ _ref$isGroupedOption = _ref.isGroupedOption,
35817
+ isGroupedOption = _ref$isGroupedOption === void 0 ? false : _ref$isGroupedOption,
35816
35818
  value = _ref.value,
35817
35819
  _ref$placeholder = _ref.placeholder,
35818
35820
  placeholder = _ref$placeholder === void 0 ? 'Sélectionnez une option' : _ref$placeholder,
@@ -35833,184 +35835,90 @@ var Dropdown = function Dropdown(_ref) {
35833
35835
  paddingTop: '1rem',
35834
35836
  paddingBottom: '1rem'
35835
35837
  } : _ref$valueStyle,
35838
+ onChange = _ref.onChange,
35836
35839
  _ref$optionStyle = _ref.optionStyle,
35837
35840
  optionStyle = _ref$optionStyle === void 0 ? {} : _ref$optionStyle,
35838
35841
  name = _ref.name,
35839
35842
  _ref$showClear = _ref.showClear,
35840
35843
  showClear = _ref$showClear === void 0 ? false : _ref$showClear,
35844
+ _ref$groupedItemTempl = _ref.groupedItemTemplateConfig,
35845
+ groupedItemTemplateConfig = _ref$groupedItemTempl === void 0 ? {
35846
+ showIcon: false,
35847
+ iconKey: 'icon',
35848
+ showImage: false,
35849
+ imageKey: 'image',
35850
+ imageStyle: null,
35851
+ labelStyle: null,
35852
+ generalIcon: null,
35853
+ generalImage: null
35854
+ } : _ref$groupedItemTempl,
35841
35855
  _ref$isSelectMeta = _ref.isSelectMeta,
35842
35856
  isSelectMeta = _ref$isSelectMeta === void 0 ? false : _ref$isSelectMeta,
35843
35857
  _ref$selectMetaConfig = _ref.selectMetaConfig,
35844
35858
  selectMetaConfig = _ref$selectMetaConfig === void 0 ? {
35845
35859
  labelStyle: null,
35846
35860
  generalIcon: null
35847
- } : _ref$selectMetaConfig,
35848
- onChangeFunction = _ref.onChangeFunction,
35849
- classInput = _ref.classInput,
35850
- _ref$readOnly = _ref.readOnly,
35851
- readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
35852
- _ref$multiple = _ref.multiple,
35853
- multiple = _ref$multiple === void 0 ? false : _ref$multiple;
35854
- _ref.async;
35855
- _ref.url;
35856
- _ref.filterIds;
35857
- _ref.filterContent;
35858
- _ref.formid;
35859
- var ongletID = _ref.ongletID;
35860
- _ref.node;
35861
- var _ref$defaultMenuIsOpe = _ref.defaultMenuIsOpen,
35862
- defaultMenuIsOpen = _ref$defaultMenuIsOpe === void 0 ? false : _ref$defaultMenuIsOpe;
35861
+ } : _ref$selectMetaConfig;
35863
35862
  var _useState = useState(value !== null && value !== void 0 ? value : null),
35864
35863
  _useState2 = _slicedToArray$8(_useState, 2),
35865
35864
  optionSelected = _useState2[0],
35866
35865
  setOptionSelected = _useState2[1];
35867
- var _useState3 = useState(defaultMenuIsOpen),
35868
- _useState4 = _slicedToArray$8(_useState3, 2);
35869
- _useState4[0];
35870
- var setIsOpen = _useState4[1];
35871
- var _useState5 = useState(defaultMenuIsOpen),
35872
- _useState6 = _slicedToArray$8(_useState5, 2),
35873
- menuIsOpen = _useState6[0],
35874
- setMenuIsOpen = _useState6[1];
35875
- var ref = useRef();
35876
- var refValue = useRef();
35877
35866
  var items = useRef(Array.from({
35878
35867
  length: 100000
35879
35868
  }));
35880
- var _useState7 = useState(false),
35881
- _useState8 = _slicedToArray$8(_useState7, 2),
35882
- loading = _useState8[0],
35883
- setLoading = _useState8[1];
35869
+ var _useState3 = useState(false),
35870
+ _useState4 = _slicedToArray$8(_useState3, 2),
35871
+ loading = _useState4[0],
35872
+ setLoading = _useState4[1];
35884
35873
  var loadLazyTimeout = useRef();
35885
35874
  useEffect(function () {
35886
35875
  setOptionSelected(value !== null && value !== void 0 ? value : null);
35887
35876
  }, [value]);
35888
- var inverseColor = function inverseColor(hexColor) {
35889
- var r = parseInt(hexColor.substr(1, 2), 16);
35890
- var g = parseInt(hexColor.substr(3, 2), 16);
35891
- var b = parseInt(hexColor.substr(5, 2), 16);
35892
- var luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
35893
- return luminance > 0.5 ? '#000000' : '#FFFFFF';
35894
- };
35895
- var onLazyLoad = function onLazyLoad(event) {
35896
- setLoading(true);
35897
- if (loadLazyTimeout.current) {
35898
- clearTimeout(loadLazyTimeout.current);
35899
- }
35900
- loadLazyTimeout.current = setTimeout(function () {
35901
- var first = event.first,
35902
- last = event.last;
35903
- var _items = _toConsumableArray$6(items.current);
35904
- for (var i = first; i < last; i++) {
35905
- _items[i] = {
35906
- label: "Item #".concat(i),
35907
- value: i
35908
- };
35909
- }
35910
- items.current = _items;
35911
- setLoading(false);
35912
- }, Math.random() * 1000 + 250);
35913
- };
35914
- var handleChange = function handleChange(e) {
35915
- var newValue = e.value;
35916
- setOptionSelected(newValue);
35917
- if (onChangeFunction) {
35918
- onChangeFunction(newValue);
35919
- }
35920
- if (!multiple) {
35921
- setIsOpen(false);
35922
- }
35923
- };
35924
- var onMenuOpen = function onMenuOpen() {
35925
- setMenuIsOpen(true);
35926
- setIsOpen(true);
35927
- };
35928
- var onMenuClose = function onMenuClose() {
35929
- setMenuIsOpen(false);
35930
- setIsOpen(false);
35931
- };
35932
- var handleClickOutside = function handleClickOutside(e) {
35933
- if (ref.current && !ref.current.contains(e.target)) {
35934
- setMenuIsOpen(false);
35935
- setIsOpen(false);
35936
- }
35937
- };
35938
35877
  useEffect(function () {
35939
- document.addEventListener('mousedown', handleClickOutside);
35878
+ var handleScroll = function handleScroll(e) {
35879
+ var target = e.target;
35880
+
35881
+ // Si on scroll dans la liste elle-même (aucun effet de suppression de liste)
35882
+ if (target.closest && target.closest('.p-dropdown-panel')) {
35883
+ return;
35884
+ }
35885
+ // Sinon, le zone de liste est fermée
35886
+ var dropdownPanels = document.querySelectorAll('.p-dropdown-panel');
35887
+ dropdownPanels.forEach(function (panel) {
35888
+ if (panel && panel.style.display !== 'none') {
35889
+ document.body.click(); // Déclenche un "click outside"
35890
+ }
35891
+ });
35892
+ };
35893
+ window.addEventListener('scroll', handleScroll, true);
35940
35894
  return function () {
35941
- document.removeEventListener('mousedown', handleClickOutside);
35895
+ window.removeEventListener('scroll', handleScroll, true);
35942
35896
  };
35943
35897
  }, []);
35944
- var renderSelectedItems = function renderSelectedItems() {
35945
- if (!optionSelected) return null;
35946
- if (multiple && Array.isArray(optionSelected)) {
35947
- if (optionSelected.length <= 5) {
35948
- return optionSelected.map(function (opt, index) {
35949
- return opt && opt.color && opt.nom ? /*#__PURE__*/React__default.createElement("span", {
35950
- key: index,
35951
- className: "badge badge-primary select-badge",
35952
- style: {
35953
- backgroundColor: opt.color
35954
- }
35955
- }, opt.nom) : null;
35956
- });
35957
- } else {
35958
- return /*#__PURE__*/React__default.createElement("div", {
35959
- onClick: function onClick(e) {
35960
- e.stopPropagation();
35961
- setIsOpen(false);
35962
- var event = new CustomEvent('openInfoSelect', {
35963
- detail: {
35964
- value: optionSelected
35965
- }
35966
- });
35967
- document.dispatchEvent(event);
35968
- }
35969
- }, /*#__PURE__*/React__default.createElement("div", {
35970
- className: "selectMetaCounter"
35971
- }, /*#__PURE__*/React__default.createElement("span", {
35972
- className: "badge trigger_popup_fricc"
35973
- }, optionSelected.length), /*#__PURE__*/React__default.createElement("div", {
35974
- className: "test-title-ON"
35975
- }, "Toggle")));
35976
- }
35977
- } else if (optionSelected && optionSelected.color && optionSelected.nom) {
35978
- return /*#__PURE__*/React__default.createElement("span", {
35979
- className: "badge badge-primary select-badge",
35980
- style: {
35981
- backgroundColor: optionSelected.color,
35982
- color: inverseColor(optionSelected.color)
35898
+ var resetDropdownFilter = function resetDropdownFilter() {
35899
+ setTimeout(function () {
35900
+ var dropdownPanels = document.querySelectorAll('.p-dropdown-panel');
35901
+ dropdownPanels.forEach(function (panel) {
35902
+ var input = panel.querySelector('.p-dropdown-filter');
35903
+ if (input) {
35904
+ input.value = '';
35905
+ input.dispatchEvent(new Event('input', {
35906
+ bubbles: true
35907
+ }));
35983
35908
  }
35984
- }, optionSelected.nom);
35985
- }
35986
- return null;
35987
- };
35988
- var renderHiddenInputs = function renderHiddenInputs() {
35989
- if (multiple && Array.isArray(optionSelected)) {
35990
- return optionSelected.map(function (opt, index) {
35991
- return opt && opt.id ? /*#__PURE__*/React__default.createElement("input", {
35992
- type: "hidden",
35993
- key: index,
35994
- name: !readOnly ? name : '',
35995
- className: classInput,
35996
- "data-id-onglet": ongletID,
35997
- value: opt.id,
35998
- "data-name": opt.nom,
35999
- ref: index === 0 ? refValue : null
36000
- }) : null;
36001
- });
36002
- } else if (optionSelected && optionSelected.id) {
36003
- return /*#__PURE__*/React__default.createElement("input", {
36004
- type: "hidden",
36005
- name: !readOnly ? name : '',
36006
- className: classInput,
36007
- "data-id-onglet": ongletID,
36008
- value: optionSelected.id,
36009
- "data-name": optionSelected.nom,
36010
- ref: refValue
36011
35909
  });
36012
- }
36013
- return null;
35910
+ }, 50);
35911
+ };
35912
+ var style = {
35913
+ border: invalid ? '1px solid red' : '1px solid #ccc',
35914
+ width: '100%'
35915
+ };
35916
+ var inverseColor = function inverseColor(hexColor) {
35917
+ var r = parseInt(hexColor.substr(1, 2), 16);
35918
+ var g = parseInt(hexColor.substr(3, 2), 16);
35919
+ var b = parseInt(hexColor.substr(5, 2), 16);
35920
+ var luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
35921
+ return luminance > 0.5 ? '#000000' : '#FFFFFF';
36014
35922
  };
36015
35923
  var optionTemplate = function optionTemplate(option) {
36016
35924
  if (!isSelectMeta) {
@@ -36018,14 +35926,13 @@ var Dropdown = function Dropdown(_ref) {
36018
35926
  style: _objectSpread2({
36019
35927
  fontSize: '14px'
36020
35928
  }, optionStyle)
36021
- }, option.label);
35929
+ }, option === null || option === void 0 ? void 0 : option[optionLabel]);
36022
35930
  } else {
36023
35931
  var _ref2 = selectMetaConfig || {},
36024
35932
  labelStyle = _ref2.labelStyle,
36025
35933
  generalIcon = _ref2.generalIcon;
36026
35934
  var styleLabel = {
36027
- marginLeft: '10px',
36028
- color: option === null || option === void 0 ? void 0 : option.color
35935
+ marginLeft: '10px'
36029
35936
  };
36030
35937
  return /*#__PURE__*/React__default.createElement("div", {
36031
35938
  className: "flex align-items-center",
@@ -36044,56 +35951,142 @@ var Dropdown = function Dropdown(_ref) {
36044
35951
  className: generalIcon
36045
35952
  }), /*#__PURE__*/React__default.createElement("span", {
36046
35953
  style: styleLabel
36047
- }, option === null || option === void 0 ? void 0 : option.label)));
35954
+ }, option === null || option === void 0 ? void 0 : option[optionLabel])));
36048
35955
  }
36049
35956
  };
36050
35957
  var valueTemplate = function valueTemplate(option) {
36051
- if (!option) {
35958
+ if (isSelectMeta) {
35959
+ var iconColor = option !== null && option !== void 0 && option.color ? inverseColor(option === null || option === void 0 ? void 0 : option.color) : '#FFFFFF';
35960
+ return /*#__PURE__*/React__default.createElement("div", {
35961
+ style: _objectSpread2({
35962
+ backgroundColor: option === null || option === void 0 ? void 0 : option.color,
35963
+ color: 'white',
35964
+ padding: '0.5rem',
35965
+ borderRadius: '1rem',
35966
+ display: 'inline-block'
35967
+ }, valueStyle)
35968
+ }, option !== null && option !== void 0 && option[optionLabel] ? /*#__PURE__*/React__default.createElement("span", {
35969
+ style: {
35970
+ color: iconColor
35971
+ }
35972
+ }, option === null || option === void 0 ? void 0 : option[optionLabel]) : /*#__PURE__*/React__default.createElement("span", {
35973
+ style: {
35974
+ color: '#000000'
35975
+ }
35976
+ }, placeholder));
35977
+ } else {
36052
35978
  return /*#__PURE__*/React__default.createElement("span", {
36053
- style: valueStyle
36054
- }, placeholder);
35979
+ style: _objectSpread2({
35980
+ fontFamily: 'Arial',
35981
+ fontSize: '14px'
35982
+ }, valueStyle)
35983
+ }, (option === null || option === void 0 ? void 0 : option[optionLabel]) || placeholder);
36055
35984
  }
36056
- var iconColor = option !== null && option !== void 0 && option.color ? inverseColor(option.color) : '#FFFFFF';
36057
- return /*#__PURE__*/React__default.createElement("div", {
36058
- style: _objectSpread2({
36059
- backgroundColor: option.color,
36060
- color: iconColor,
36061
- padding: '0.5rem',
36062
- borderRadius: '1rem',
36063
- display: 'inline-block'
36064
- }, valueStyle)
36065
- }, option.label);
36066
35985
  };
36067
- var style = {
36068
- border: invalid ? '1px solid red' : '1px solid #ccc',
36069
- width: '100%'
35986
+ var onLazyLoad = function onLazyLoad(event) {
35987
+ setLoading(true);
35988
+ if (loadLazyTimeout.current) {
35989
+ clearTimeout(loadLazyTimeout.current);
35990
+ }
35991
+ loadLazyTimeout.current = setTimeout(function () {
35992
+ var first = event.first,
35993
+ last = event.last;
35994
+ var _items = _toConsumableArray$6(items.current);
35995
+ for (var i = first; i < last; i++) {
35996
+ _items[i] = {
35997
+ label: "Item #".concat(i),
35998
+ value: i
35999
+ };
36000
+ }
36001
+ items.current = _items;
36002
+ setLoading(false);
36003
+ }, Math.random() * 1000 + 250);
36070
36004
  };
36071
- return /*#__PURE__*/React__default.createElement("div", {
36072
- className: "flex flex-col gap-1 ".concat(readOnly ? 'select-form-event-container-readonly' : ''),
36073
- ref: ref
36074
- }, /*#__PURE__*/React__default.createElement("div", {
36075
- className: "select-badges-container",
36076
- onClick: function onClick() {
36077
- return !readOnly && setIsOpen(true);
36005
+ var handleChange = function handleChange(e) {
36006
+ var newValue = e.value;
36007
+ setOptionSelected(newValue);
36008
+ if (onChange) {
36009
+ onChange(newValue);
36010
+ }
36011
+ };
36012
+ var groupedItemTemplate = function groupedItemTemplate(option) {
36013
+ var _ref3 = groupedItemTemplateConfig || {},
36014
+ showImage = _ref3.showImage,
36015
+ imageKey = _ref3.imageKey,
36016
+ imageStyle = _ref3.imageStyle,
36017
+ showIcon = _ref3.showIcon,
36018
+ iconKey = _ref3.iconKey,
36019
+ labelStyle = _ref3.labelStyle,
36020
+ generalIcon = _ref3.generalIcon,
36021
+ generalImage = _ref3.generalImage;
36022
+ var icon = option.value && option.value[iconKey];
36023
+ var styleLabel = {};
36024
+ if (generalIcon || generalIcon || showImage && option[imageKey] || showIcon && icon) {
36025
+ styleLabel = {
36026
+ 'marginLeft': '10px'
36027
+ };
36078
36028
  }
36079
- }, renderSelectedItems()), !readOnly && /*#__PURE__*/React__default.createElement("span", {
36080
- className: "caret"
36081
- }), /*#__PURE__*/React__default.createElement(Dropdown$1, _extends$A({
36029
+ if (option.group) {
36030
+ return /*#__PURE__*/React__default.createElement("div", {
36031
+ className: "flex align-items-center"
36032
+ }, /*#__PURE__*/React__default.createElement("div", {
36033
+ style: _objectSpread2({
36034
+ fontSize: '15px',
36035
+ fontWeight: 'bold'
36036
+ }, labelStyle)
36037
+ }, generalIcon && /*#__PURE__*/React__default.createElement("i", {
36038
+ style: _objectSpread2({
36039
+ fontSize: '15px',
36040
+ fontWeight: 'bold'
36041
+ }, labelStyle),
36042
+ className: generalIcon
36043
+ }), generalImage && /*#__PURE__*/React__default.createElement("img", {
36044
+ alt: "General",
36045
+ src: generalImage,
36046
+ style: imageStyle || {
36047
+ width: '18px',
36048
+ marginRight: '0.5rem'
36049
+ },
36050
+ className: "mr-2"
36051
+ }), showImage && option[imageKey] && /*#__PURE__*/React__default.createElement("img", {
36052
+ alt: option.label,
36053
+ src: option[imageKey],
36054
+ style: imageStyle || {
36055
+ width: '18px',
36056
+ marginRight: '0.5rem'
36057
+ },
36058
+ className: "mr-2"
36059
+ }), showIcon && icon && /*#__PURE__*/React__default.createElement("i", {
36060
+ style: _objectSpread2({
36061
+ fontSize: '15px',
36062
+ fontWeight: 'bold'
36063
+ }, labelStyle),
36064
+ className: 'mr-2 ' + icon
36065
+ }), /*#__PURE__*/React__default.createElement("span", {
36066
+ style: styleLabel
36067
+ }, option.label)));
36068
+ }
36069
+ };
36070
+ return /*#__PURE__*/React__default.createElement("div", {
36071
+ className: "flex flex-col gap-1"
36072
+ }, /*#__PURE__*/React__default.createElement(Dropdown$1, _extends$A({
36082
36073
  value: optionSelected,
36083
36074
  options: options,
36084
36075
  onChange: handleChange,
36085
36076
  placeholder: placeholder,
36086
- disabled: disabled || readOnly,
36077
+ disabled: disabled,
36087
36078
  filter: filter,
36088
36079
  optionLabel: optionLabel,
36089
36080
  optionValue: optionValue,
36090
36081
  style: style,
36091
36082
  itemTemplate: optionTemplate,
36092
36083
  valueTemplate: valueTemplate,
36084
+ onHide: resetDropdownFilter,
36093
36085
  showClear: showClear,
36094
- onShow: onMenuOpen,
36095
- onHide: onMenuClose,
36096
- menuIsOpen: menuIsOpen
36086
+ optionGroupTemplate: isGroupedOption ? groupedItemTemplate : null
36087
+ }, isGroupedOption && {
36088
+ optionGroupLabel: 'label',
36089
+ optionGroupChildren: 'items'
36097
36090
  }, isSelectMeta && {
36098
36091
  virtualScrollerOptions: {
36099
36092
  lazy: true,
@@ -36103,7 +36096,11 @@ var Dropdown = function Dropdown(_ref) {
36103
36096
  loading: loading,
36104
36097
  delay: 250
36105
36098
  }
36106
- })), /*#__PURE__*/React__default.createElement("div", null, renderHiddenInputs()), invalid && /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement("small", {
36099
+ })), name && /*#__PURE__*/React__default.createElement("input", {
36100
+ type: "hidden",
36101
+ name: name,
36102
+ value: optionSelected !== null && optionSelected !== void 0 ? optionSelected : ''
36103
+ }), invalid && /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement("small", {
36107
36104
  style: {
36108
36105
  color: 'red',
36109
36106
  fontStyle: 'italic'
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "arengibook",
3
3
  "private": false,
4
- "version": "2.4.588",
4
+ "version": "2.4.590",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
7
7
  "exports": {