allaw-ui 3.3.3 → 3.3.5

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.
@@ -1,4 +1,3 @@
1
- import "./SingleFilter.css";
2
1
  import React from "react";
3
2
  export type SingleFilterProps = {
4
3
  defaultSelectedValue?: string;
@@ -20,19 +20,39 @@ var __rest = (this && this.__rest) || function (s, e) {
20
20
  }
21
21
  return t;
22
22
  };
23
- import "./SingleFilter.css";
23
+ import styles from "./SingleFilter.module.css";
24
24
  import { FilterButtonPrimary, PrimaryButton } from "../buttons";
25
25
  import { TinyInfo } from "../typography";
26
- import React, { useState, useEffect } from "react";
26
+ import React, { useState, useEffect, useRef } from "react";
27
27
  var SingleFilter = function (_a) {
28
28
  var _b = _a.showNumIndic, showNumIndic = _b === void 0 ? false : _b, _c = _a.required, required = _c === void 0 ? true : _c, defaultSelectedValue = _a.defaultSelectedValue, filterData = _a.filterData, setFilter = _a.setFilter, _d = _a.showBackdrop, showBackdrop = _d === void 0 ? false : _d, children = _a.children, props = __rest(_a, ["showNumIndic", "required", "defaultSelectedValue", "filterData", "setFilter", "showBackdrop", "children"]);
29
29
  var _e = useState(false), isOpen = _e[0], setIsOpen = _e[1];
30
30
  var _f = useState(defaultSelectedValue || ""), selectedValue = _f[0], setSelectedValue = _f[1];
31
+ var filterRef = useRef(null);
31
32
  useEffect(function () {
32
33
  if (selectedValue) {
33
34
  setFilter(selectedValue);
34
35
  }
35
36
  }, [selectedValue, setFilter]);
37
+ useEffect(function () {
38
+ var handleClickOutside = function (event) {
39
+ if (filterRef.current &&
40
+ event.target instanceof Node &&
41
+ !filterRef.current.contains(event.target)) {
42
+ setIsOpen(false);
43
+ }
44
+ };
45
+ if (isOpen) {
46
+ var timeoutId_1 = setTimeout(function () {
47
+ document.addEventListener("mousedown", handleClickOutside);
48
+ }, 0);
49
+ return function () {
50
+ clearTimeout(timeoutId_1);
51
+ document.removeEventListener("mousedown", handleClickOutside);
52
+ };
53
+ }
54
+ return undefined;
55
+ }, [isOpen]);
36
56
  var handleClose = function () {
37
57
  setIsOpen(false);
38
58
  };
@@ -41,41 +61,39 @@ var SingleFilter = function (_a) {
41
61
  };
42
62
  var Item = function (_a) {
43
63
  var name = _a.name, value = _a.value;
44
- return (React.createElement("button", { className: "item", onClick: function () {
64
+ return (React.createElement("button", { className: styles.item, onClick: function () {
45
65
  setSelectedValue(value);
46
66
  handleClose();
47
67
  } },
48
- React.createElement("div", { className: "round" },
49
- React.createElement("div", { className: selectedValue === value ? "selected" : "notSelected" })),
68
+ React.createElement("div", { className: styles.round },
69
+ React.createElement("div", { className: selectedValue === value ? styles.selected : styles.notSelected })),
50
70
  React.createElement("span", null, name)));
51
71
  };
52
72
  var SmallItem = function (_a) {
53
73
  var name = _a.name, value = _a.value;
54
- return (React.createElement("button", { className: "smallItem", onClick: function () {
74
+ return (React.createElement("button", { className: styles.smallItem, onClick: function () {
55
75
  setSelectedValue(value);
56
76
  } },
57
- React.createElement("div", { className: "round" },
58
- React.createElement("div", { className: selectedValue === value ? "selected" : "notSelected" })),
77
+ React.createElement("div", { className: styles.round },
78
+ React.createElement("div", { className: selectedValue === value ? styles.selected : styles.notSelected })),
59
79
  React.createElement("span", null, name)));
60
80
  };
61
- return (React.createElement(React.Fragment, null,
62
- React.createElement("div", __assign({ className: "baseFilter" }, props),
63
- React.createElement(FilterButtonPrimary, { onClick: handleButtonTap },
64
- children,
65
- React.createElement("p", { style: { color: "#25BEEB", fontWeight: "600" } }, showNumIndic && "(".concat(selectedValue.length, ")"))),
66
- isOpen && (React.createElement("div", { className: "options" }, filterData &&
81
+ return (React.createElement("div", __assign({ className: styles.baseFilter, ref: filterRef }, props),
82
+ React.createElement(FilterButtonPrimary, { onClick: handleButtonTap },
83
+ children,
84
+ React.createElement("p", { style: { color: "#25BEEB", fontWeight: "600" } }, showNumIndic && "(".concat(selectedValue.length, ")"))),
85
+ isOpen && (React.createElement("div", { className: styles.options }, filterData &&
86
+ filterData.length > 0 &&
87
+ filterData.map(function (item, idx) { return (React.createElement(Item, { name: item.name, value: item.value, key: idx })); }))),
88
+ React.createElement("div", { className: styles.optionsSmall, style: { bottom: isOpen ? "0" : "-100%" } },
89
+ React.createElement("div", { className: styles.row },
90
+ React.createElement("div", { style: { minWidth: "20px" } }),
91
+ React.createElement(TinyInfo, { text: children, variant: "bold14", color: "noir" }),
92
+ React.createElement("button", { className: styles.closeButton, onClick: handleClose },
93
+ React.createElement("i", { className: "allaw-icon-close" }))),
94
+ React.createElement("div", { className: styles.choices }, filterData &&
67
95
  filterData.length > 0 &&
68
- filterData.map(function (item, idx) { return (React.createElement(Item, { name: item.name, value: item.value, key: idx })); }))),
69
- React.createElement("div", { className: "optionsSmall", style: { bottom: isOpen ? "0" : "-100%" } },
70
- React.createElement("div", { className: "row" },
71
- React.createElement("div", { style: { minWidth: "20px" } }),
72
- React.createElement(TinyInfo, { text: children, variant: "bold14", color: "noir" }),
73
- React.createElement("button", { className: "closeButton", onClick: handleClose },
74
- React.createElement("i", { className: "allaw-icon-close" }))),
75
- React.createElement("div", { className: "choices" }, filterData &&
76
- filterData.length > 0 &&
77
- filterData.map(function (item, idx) { return (React.createElement(SmallItem, { name: item.name, value: item.value, key: idx })); })),
78
- React.createElement(PrimaryButton, { label: "Voir les r\u00E9sultats", onClick: handleClose }))),
79
- isOpen && React.createElement("div", { className: "backdrop", onClick: handleClose })));
96
+ filterData.map(function (item, idx) { return (React.createElement(SmallItem, { name: item.name, value: item.value, key: idx })); })),
97
+ React.createElement(PrimaryButton, { label: "Voir les r\u00E9sultats", onClick: handleClose }))));
80
98
  };
81
99
  export default SingleFilter;
@@ -1,16 +1,6 @@
1
- .backdrop {
2
- position: fixed;
3
- top: 0;
4
- left: 0;
5
- height: 100vh;
6
- width: 100vw;
7
- z-index: 4500;
8
- }
9
-
10
1
  .baseFilter {
11
2
  position: relative;
12
3
  width: fit-content;
13
- /* z-index: 4501; */
14
4
  }
15
5
 
16
6
  .smallOpenFilter {
@@ -27,7 +17,7 @@
27
17
  border-radius: 4px;
28
18
  background-color: #ffffff;
29
19
  box-shadow: rgba(9, 30, 66, 0.15) 0px 8px 12px 0px;
30
- z-index: 5000;
20
+ z-index: 10;
31
21
  padding: 0.4rem 0rem;
32
22
  }
33
23
 
@@ -162,15 +152,7 @@
162
152
  }
163
153
 
164
154
  .optionsSmall {
165
- z-index: 5000;
155
+ z-index: 10;
166
156
  display: flex;
167
157
  }
168
-
169
- .backdrop {
170
- background: linear-gradient(
171
- 180deg,
172
- rgba(26, 50, 56, 0) 0%,
173
- rgba(2, 9, 11, 0.45) 100%
174
- );
175
- }
176
158
  }
@@ -4,4 +4,4 @@ declare namespace _default {
4
4
  }
5
5
  export default _default;
6
6
  export const Default: any;
7
- import SingleFilter from './SingleFilter';
7
+ import SingleFilter from "./SingleFilter";
@@ -9,24 +9,23 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
- import React from 'react';
13
- import SingleFilter from './SingleFilter'; // Ajustez le chemin selon votre structure de projet
14
- import './SingleFilter'; // Assurez-vous que le chemin est correct
12
+ import React from "react";
13
+ import SingleFilter from "./SingleFilter"; // Ajustez le chemin selon votre structure de projet
15
14
  export default {
16
- title: 'Components/Atoms/Filters/SingleFilter',
15
+ title: "Components/Atoms/Filters/SingleFilter",
17
16
  component: SingleFilter,
18
17
  };
19
18
  var Template = function (args) { return React.createElement(SingleFilter, __assign({}, args)); };
20
19
  export var Default = Template.bind({});
21
20
  Default.args = {
22
- defaultSelectedValue: 'Option 1',
21
+ defaultSelectedValue: "Option 1",
23
22
  filterData: [
24
- { value: 'option1', name: 'Option 1' },
25
- { value: 'option2', name: 'Option 2' },
26
- { value: 'option3', name: 'Option 3' },
23
+ { value: "option1", name: "Option 1" },
24
+ { value: "option2", name: "Option 2" },
25
+ { value: "option3", name: "Option 3" },
27
26
  ],
28
- setFilter: function (selectedValue) { return console.log('Selected value:', selectedValue); },
29
- children: 'Filter',
27
+ setFilter: function (selectedValue) { return console.log("Selected value:", selectedValue); },
28
+ children: "Filter",
30
29
  required: true,
31
30
  showNumIndic: true,
32
31
  showBackdrop: true,
@@ -20,6 +20,7 @@
20
20
  justify-content: center;
21
21
  align-items: flex-start;
22
22
  gap: 18px;
23
+ max-width: 100%;
23
24
  align-self: stretch;
24
25
  }
25
26
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "allaw-ui",
3
- "version": "3.3.3",
3
+ "version": "3.3.5",
4
4
  "description": "Composants UI pour l'application Allaw",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",