allaw-ui 4.9.0 → 4.9.2

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.
@@ -39,6 +39,7 @@ function FilterButtonPrimary(_a) {
39
39
  gap: "0.5rem",
40
40
  alignItems: "center",
41
41
  zIndex: zIndex,
42
+ fontFamily: "var(--font-open-sans)",
42
43
  }, onClick: function () { return onClick && onClick(); } }, props),
43
44
  React.createElement("i", { className: "allaw-icon-filter", style: { fontSize: "14px", color: "#25BEEB" } }),
44
45
  children));
@@ -1,16 +1,18 @@
1
1
  import React from "react";
2
2
  export type SingleFilterProps = {
3
- defaultSelectedValue?: string;
3
+ defaultSelectedValue?: string | string[];
4
4
  filterData: {
5
5
  value: string;
6
6
  name: string;
7
7
  }[];
8
- setFilter: (selectedValue: string) => void;
8
+ setFilter: (selectedValue: string | string[]) => void;
9
9
  children?: React.ReactNode;
10
10
  required?: boolean;
11
11
  showNumIndic?: boolean;
12
12
  showBackdrop?: boolean;
13
13
  isStatusTag?: boolean;
14
+ displaySelectedValue?: boolean;
15
+ multiSelect?: boolean;
14
16
  };
15
- declare const SingleFilter: ({ showNumIndic, required, defaultSelectedValue, filterData, setFilter, showBackdrop, children, ...props }: SingleFilterProps) => React.JSX.Element;
17
+ declare const SingleFilter: ({ showNumIndic, required, defaultSelectedValue, filterData, setFilter, showBackdrop, children, displaySelectedValue, multiSelect, ...props }: SingleFilterProps) => React.JSX.Element;
16
18
  export default SingleFilter;
@@ -20,20 +20,31 @@ var __rest = (this && this.__rest) || function (s, e) {
20
20
  }
21
21
  return t;
22
22
  };
23
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
24
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
25
+ if (ar || !(i in from)) {
26
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
27
+ ar[i] = from[i];
28
+ }
29
+ }
30
+ return to.concat(ar || Array.prototype.slice.call(from));
31
+ };
23
32
  import styles from "./SingleFilter.module.css";
24
33
  import { FilterButtonPrimary, PrimaryButton } from "../buttons";
25
34
  import { TinyInfo } from "../typography";
26
35
  import React, { useState, useEffect, useRef } from "react";
27
36
  var SingleFilter = function (_a) {
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
- var _e = useState(false), isOpen = _e[0], setIsOpen = _e[1];
30
- var _f = useState(defaultSelectedValue || ""), selectedValue = _f[0], setSelectedValue = _f[1];
37
+ 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, _e = _a.displaySelectedValue, displaySelectedValue = _e === void 0 ? false : _e, _f = _a.multiSelect, multiSelect = _f === void 0 ? false : _f, props = __rest(_a, ["showNumIndic", "required", "defaultSelectedValue", "filterData", "setFilter", "showBackdrop", "children", "displaySelectedValue", "multiSelect"]);
38
+ var _g = useState(false), isOpen = _g[0], setIsOpen = _g[1];
39
+ var _h = useState(defaultSelectedValue || (multiSelect ? [] : "")), selectedValue = _h[0], setSelectedValue = _h[1];
31
40
  var filterRef = useRef(null);
32
41
  useEffect(function () {
33
- if (selectedValue) {
42
+ if (multiSelect
43
+ ? Array.isArray(selectedValue) && selectedValue.length > 0
44
+ : selectedValue) {
34
45
  setFilter(selectedValue);
35
46
  }
36
- }, [selectedValue, setFilter]);
47
+ }, [selectedValue, setFilter, multiSelect]);
37
48
  useEffect(function () {
38
49
  var handleClickOutside = function (event) {
39
50
  if (filterRef.current &&
@@ -61,27 +72,61 @@ var SingleFilter = function (_a) {
61
72
  };
62
73
  var Item = function (_a) {
63
74
  var name = _a.name, value = _a.value;
64
- return (React.createElement("button", { className: styles.item, onClick: function () {
75
+ var isSelected = multiSelect
76
+ ? Array.isArray(selectedValue) && selectedValue.includes(value)
77
+ : selectedValue === value;
78
+ var handleItemClick = function () {
79
+ if (multiSelect) {
80
+ var currentValues = Array.isArray(selectedValue) ? selectedValue : [];
81
+ if (currentValues.includes(value)) {
82
+ setSelectedValue(currentValues.filter(function (v) { return v !== value; }));
83
+ }
84
+ else {
85
+ setSelectedValue(__spreadArray(__spreadArray([], currentValues, true), [value], false));
86
+ }
87
+ }
88
+ else {
65
89
  setSelectedValue(value);
66
90
  handleClose();
67
- } },
91
+ }
92
+ };
93
+ return (React.createElement("button", { className: styles.item, onClick: handleItemClick },
68
94
  React.createElement("div", { className: styles.round },
69
- React.createElement("div", { className: selectedValue === value ? styles.selected : styles.notSelected })),
95
+ React.createElement("div", { className: isSelected ? styles.selected : styles.notSelected })),
70
96
  React.createElement("span", null, name)));
71
97
  };
72
98
  var SmallItem = function (_a) {
73
99
  var name = _a.name, value = _a.value;
74
- return (React.createElement("button", { className: styles.smallItem, onClick: function () {
100
+ var isSelected = multiSelect
101
+ ? Array.isArray(selectedValue) && selectedValue.includes(value)
102
+ : selectedValue === value;
103
+ var handleItemClick = function () {
104
+ if (multiSelect) {
105
+ var currentValues = Array.isArray(selectedValue) ? selectedValue : [];
106
+ if (currentValues.includes(value)) {
107
+ setSelectedValue(currentValues.filter(function (v) { return v !== value; }));
108
+ }
109
+ else {
110
+ setSelectedValue(__spreadArray(__spreadArray([], currentValues, true), [value], false));
111
+ }
112
+ }
113
+ else {
75
114
  setSelectedValue(value);
76
- } },
115
+ }
116
+ };
117
+ return (React.createElement("button", { className: styles.smallItem, onClick: handleItemClick },
77
118
  React.createElement("div", { className: styles.round },
78
- React.createElement("div", { className: selectedValue === value ? styles.selected : styles.notSelected })),
119
+ React.createElement("div", { className: isSelected ? styles.selected : styles.notSelected })),
79
120
  React.createElement("span", null, name)));
80
121
  };
81
122
  return (React.createElement("div", __assign({ className: styles.baseFilter, ref: filterRef }, props),
82
123
  React.createElement(FilterButtonPrimary, { onClick: handleButtonTap },
83
124
  children,
84
- React.createElement("p", { style: { color: "#25BEEB", fontWeight: "600" } }, showNumIndic && "(".concat(selectedValue.length, ")"))),
125
+ React.createElement("p", { style: {
126
+ color: "#25BEEB",
127
+ fontWeight: "600",
128
+ fontFamily: "var(--font-open-sans)",
129
+ } }, showNumIndic && "(".concat(selectedValue.length, ")"))),
85
130
  isOpen && (React.createElement("div", { className: styles.options }, filterData &&
86
131
  filterData.length > 0 &&
87
132
  filterData.map(function (item, idx) { return (React.createElement(Item, { name: item.name, value: item.value, key: idx })); }))),
@@ -4,4 +4,7 @@ declare namespace _default {
4
4
  }
5
5
  export default _default;
6
6
  export const Default: any;
7
+ export const WithDisplaySelectedValue: any;
8
+ export const MultiSelectWithDisplaySelected: any;
9
+ export const MultiSelectEmpty: any;
7
10
  import SingleFilter from "./SingleFilter";
@@ -18,7 +18,7 @@ export default {
18
18
  var Template = function (args) { return React.createElement(SingleFilter, __assign({}, args)); };
19
19
  export var Default = Template.bind({});
20
20
  Default.args = {
21
- defaultSelectedValue: "Option 1",
21
+ defaultSelectedValue: "option1",
22
22
  filterData: [
23
23
  { value: "option1", name: "Option 1" },
24
24
  { value: "option2", name: "Option 2" },
@@ -31,3 +31,54 @@ Default.args = {
31
31
  showBackdrop: true,
32
32
  isStatusTag: false,
33
33
  };
34
+ export var WithDisplaySelectedValue = Template.bind({});
35
+ WithDisplaySelectedValue.args = {
36
+ defaultSelectedValue: "option2",
37
+ filterData: [
38
+ { value: "option1", name: "Médecin généraliste" },
39
+ { value: "option2", name: "Cardiologue" },
40
+ { value: "option3", name: "Dermatologue" },
41
+ ],
42
+ setFilter: function (selectedValue) { return console.log("Selected value:", selectedValue); },
43
+ children: "Spécialité",
44
+ displaySelectedValue: true,
45
+ required: true,
46
+ showNumIndic: false,
47
+ showBackdrop: true,
48
+ isStatusTag: false,
49
+ };
50
+ export var MultiSelectWithDisplaySelected = Template.bind({});
51
+ MultiSelectWithDisplaySelected.args = {
52
+ defaultSelectedValue: ["option1", "option3"],
53
+ filterData: [
54
+ { value: "option1", name: "Médecin généraliste" },
55
+ { value: "option2", name: "Cardiologue" },
56
+ { value: "option3", name: "Dermatologue" },
57
+ { value: "option4", name: "Pédiatre" },
58
+ { value: "option5", name: "Gynécologue" },
59
+ ],
60
+ setFilter: function (selectedValue) { return console.log("Selected values:", selectedValue); },
61
+ children: "Spécialités",
62
+ displaySelectedValue: true,
63
+ multiSelect: true,
64
+ required: true,
65
+ showNumIndic: true,
66
+ showBackdrop: true,
67
+ isStatusTag: false,
68
+ };
69
+ export var MultiSelectEmpty = Template.bind({});
70
+ MultiSelectEmpty.args = {
71
+ filterData: [
72
+ { value: "option1", name: "Médecin généraliste" },
73
+ { value: "option2", name: "Cardiologue" },
74
+ { value: "option3", name: "Dermatologue" },
75
+ ],
76
+ setFilter: function (selectedValue) { return console.log("Selected values:", selectedValue); },
77
+ children: "Choisir spécialités",
78
+ displaySelectedValue: true,
79
+ multiSelect: true,
80
+ required: true,
81
+ showNumIndic: true,
82
+ showBackdrop: true,
83
+ isStatusTag: false,
84
+ };
@@ -35,4 +35,7 @@
35
35
  /* Background */
36
36
  --background-pro: #fcfdfd;
37
37
  --background-usager: #ffffff;
38
+
39
+ /* Fonts */
40
+ --font-open-sans: "Open Sans", "Helvetica Neue", Arial, sans-serif;
38
41
  }
@@ -3,7 +3,7 @@
3
3
  @import url("https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;500;600;700;800;900&display=swap");
4
4
  @import url("https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap");
5
5
 
6
- /* @import "~typeface-open-sans/index.css"; */
6
+ @import "~typeface-open-sans/index.css";
7
7
  @import "./colors.css";
8
8
 
9
9
  @import "./icons.css";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "allaw-ui",
3
- "version": "4.9.0",
3
+ "version": "4.9.2",
4
4
  "description": "Composants UI pour l'application Allaw",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",