allaw-ui 4.2.7 → 4.2.9

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.
@@ -152,3 +152,17 @@
152
152
  .combo-box-hovered {
153
153
  border-color: var(--venom-grey-dark, #d1dce8);
154
154
  }
155
+
156
+ .listOpen {
157
+ animation: fadeIn 0.2s ease-out;
158
+ }
159
+ @keyframes fadeIn {
160
+ from {
161
+ opacity: 0;
162
+ transform: scale(0.98);
163
+ }
164
+ to {
165
+ opacity: 1;
166
+ transform: scale(1);
167
+ }
168
+ }
@@ -160,7 +160,7 @@ function ComboBox(_a, ref) {
160
160
  React.createElement("i", { className: "allaw-icon-".concat(isInputValid ? "chevron-down" : "close") }))),
161
161
  isOpen &&
162
162
  filteredItems.length > 0 &&
163
- createPortal(React.createElement("div", { ref: listRef, className: "combo-box-list", style: {
163
+ createPortal(React.createElement("div", { ref: listRef, className: "combo-box-list listOpen", style: {
164
164
  top: "".concat(listPosition.top, "px"),
165
165
  left: "".concat(listPosition.left, "px"),
166
166
  width: "".concat(listPosition.width, "px"),
@@ -201,7 +201,7 @@ function Select(_a, ref) {
201
201
  }
202
202
  return function () { };
203
203
  }, [isOpen]);
204
- var renderList = function () { return (React.createElement("div", { ref: listRef, className: "".concat(styles.selectList, " ").concat(isOpen ? styles.visible : "", " ").concat(placement), style: {
204
+ var renderList = function () { return (React.createElement("div", { ref: listRef, className: "".concat(styles.selectList, " ").concat(styles.listOpen, " ").concat(isOpen ? styles.visible : "", " ").concat(placement), style: {
205
205
  position: "fixed",
206
206
  top: "".concat(listPosition.top, "px"),
207
207
  left: "".concat(listPosition.left, "px"),
@@ -206,3 +206,17 @@
206
206
  .selectRequireAttention:focus {
207
207
  border-color: #1d9cc9 !important;
208
208
  }
209
+
210
+ .listOpen {
211
+ animation: fadeIn 0.2s ease-out;
212
+ }
213
+ @keyframes fadeIn {
214
+ from {
215
+ opacity: 0;
216
+ transform: scale(0.98);
217
+ }
218
+ to {
219
+ opacity: 1;
220
+ transform: scale(1);
221
+ }
222
+ }
@@ -0,0 +1,21 @@
1
+ import React from "react";
2
+ export interface CountrySelectProps {
3
+ items: Array<{
4
+ value: string;
5
+ label: string;
6
+ flagEmoji?: string;
7
+ flagUrl?: string;
8
+ code: string;
9
+ }>;
10
+ defaultCountry?: string;
11
+ placeholder?: string;
12
+ isRequired?: boolean;
13
+ disabled?: boolean;
14
+ buttonWidth?: string | number;
15
+ listWidth?: string | number;
16
+ onSelect?: (value: string) => void;
17
+ onError?: (msg: string) => void;
18
+ disableAutofill?: boolean;
19
+ }
20
+ declare const CountrySelect: React.FC<CountrySelectProps>;
21
+ export default CountrySelect;
@@ -0,0 +1,145 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import React, { useState, useRef, useEffect } from "react";
13
+ import ReactDOM from "react-dom";
14
+ import styles from "./countrySelect.module.css";
15
+ import selectStyles from "../../atoms/selects/Select.module.css";
16
+ var CountrySelect = function (_a) {
17
+ var items = _a.items, defaultCountry = _a.defaultCountry, isRequired = _a.isRequired, disabled = _a.disabled, _b = _a.buttonWidth, buttonWidth = _b === void 0 ? 80 : _b, _c = _a.listWidth, listWidth = _c === void 0 ? 200 : _c, onSelect = _a.onSelect, onError = _a.onError, _d = _a.disableAutofill, disableAutofill = _d === void 0 ? true : _d;
18
+ var _e = useState(false), isOpen = _e[0], setIsOpen = _e[1];
19
+ var _f = useState(defaultCountry || ""), selected = _f[0], setSelected = _f[1];
20
+ var _g = useState(""), search = _g[0], setSearch = _g[1];
21
+ var _h = useState(""), error = _h[0], setError = _h[1];
22
+ var _j = useState(-1), highlighted = _j[0], setHighlighted = _j[1];
23
+ var buttonRef = useRef(null);
24
+ var _k = useState({ top: 0, left: 0, width: Number(listWidth) || 200 }), listPos = _k[0], setListPos = _k[1];
25
+ useEffect(function () {
26
+ setSelected(defaultCountry || "");
27
+ }, [defaultCountry]);
28
+ useEffect(function () {
29
+ if (!isOpen)
30
+ setSearch("");
31
+ }, [isOpen]);
32
+ useEffect(function () {
33
+ if (isOpen && buttonRef.current) {
34
+ var rect = buttonRef.current.getBoundingClientRect();
35
+ var btnW = typeof buttonWidth === "number" ? buttonWidth : rect.width;
36
+ var lstW = typeof listWidth === "number" ? listWidth : rect.width;
37
+ var left = rect.left + window.scrollX + (btnW - lstW) / 2;
38
+ // Décalage intelligent si la liste sort de l'écran
39
+ var minMargin = 8;
40
+ if (left < minMargin)
41
+ left = minMargin;
42
+ if (left + lstW > window.innerWidth - minMargin)
43
+ left = window.innerWidth - minMargin - lstW;
44
+ setListPos({
45
+ top: rect.bottom + window.scrollY,
46
+ left: left,
47
+ width: lstW,
48
+ });
49
+ }
50
+ }, [isOpen, listWidth, buttonWidth]);
51
+ useEffect(function () {
52
+ if (!isOpen)
53
+ return;
54
+ var handleClick = function (e) {
55
+ if (buttonRef.current && !buttonRef.current.contains(e.target)) {
56
+ setIsOpen(false);
57
+ }
58
+ };
59
+ document.addEventListener("mousedown", handleClick);
60
+ return function () { return document.removeEventListener("mousedown", handleClick); };
61
+ }, [isOpen]);
62
+ var filtered = items.filter(function (item) {
63
+ return item.label.toLowerCase().includes(search.toLowerCase()) ||
64
+ item.code.replace("+", "").includes(search.replace("+", ""));
65
+ });
66
+ var handleSelect = function (value) {
67
+ setSelected(value);
68
+ setIsOpen(false);
69
+ setError("");
70
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(value);
71
+ onError === null || onError === void 0 ? void 0 : onError("");
72
+ };
73
+ var handleBlur = function () {
74
+ setTimeout(function () {
75
+ if (isRequired && !selected) {
76
+ setError("Ce champ est requis");
77
+ onError === null || onError === void 0 ? void 0 : onError("Ce champ est requis");
78
+ }
79
+ else {
80
+ setError("");
81
+ onError === null || onError === void 0 ? void 0 : onError("");
82
+ }
83
+ }, 100);
84
+ };
85
+ var handleKeyDown = function (e) {
86
+ if (!isOpen)
87
+ return;
88
+ if (e.key === "ArrowDown") {
89
+ setHighlighted(function (h) { return (h < filtered.length - 1 ? h + 1 : 0); });
90
+ e.preventDefault();
91
+ }
92
+ else if (e.key === "ArrowUp") {
93
+ setHighlighted(function (h) { return (h > 0 ? h - 1 : filtered.length - 1); });
94
+ e.preventDefault();
95
+ }
96
+ else if (e.key === "Enter" && highlighted >= 0) {
97
+ handleSelect(filtered[highlighted].value);
98
+ e.preventDefault();
99
+ }
100
+ };
101
+ var selectedItem = items.find(function (i) { return i.value === selected; });
102
+ // Liste en portal, position fixed, centrée sous le bouton, décalée si besoin
103
+ var list = isOpen && !disabled
104
+ ? ReactDOM.createPortal(React.createElement("div", { className: selectStyles.selectList + " " + styles.listOpen, style: {
105
+ position: "fixed",
106
+ top: listPos.top,
107
+ left: listPos.left,
108
+ width: listPos.width,
109
+ zIndex: 9999,
110
+ }, role: "listbox", tabIndex: -1, onKeyDown: handleKeyDown },
111
+ React.createElement("div", { className: styles.searchWrapper },
112
+ React.createElement("i", { className: "allaw-icon-search" }),
113
+ React.createElement("input", __assign({ className: styles.search, placeholder: "Rechercher...", value: search, onChange: function (e) { return setSearch(e.target.value); }, autoFocus: true, "aria-label": "Rechercher un pays", onBlur: handleBlur }, (disableAutofill && {
114
+ autoComplete: "off",
115
+ "data-form-type": "other",
116
+ "data-lpignore": "true",
117
+ "data-1p-ignore": true,
118
+ })))),
119
+ filtered.map(function (item, idx) { return (React.createElement("div", { key: item.value, className: selectStyles.selectItem +
120
+ (item.value === selected || idx === highlighted
121
+ ? " " + selectStyles.highlighted
122
+ : "") +
123
+ (item.value === selected ? " " + styles.selectedItem : ""), role: "option", "aria-selected": item.value === selected, tabIndex: -1, onMouseDown: function () { return handleSelect(item.value); }, onMouseEnter: function () { return setHighlighted(idx); } },
124
+ item.flagUrl ? (React.createElement("img", { src: item.flagUrl, alt: "", className: styles.flag })) : item.flagEmoji ? (React.createElement("span", { className: styles.flag }, item.flagEmoji)) : null,
125
+ React.createElement("span", { className: styles.label }, item.label),
126
+ React.createElement("span", { className: styles.code }, item.code))); }),
127
+ filtered.length === 0 && (React.createElement("div", { className: selectStyles.selectItem, style: { opacity: 0.6 } }, "Aucun r\u00E9sultat"))), document.body)
128
+ : null;
129
+ return (React.createElement("div", { className: styles.wrapper },
130
+ React.createElement("button", { ref: buttonRef, type: "button", className: selectStyles.select + " " + styles.button, style: { width: buttonWidth }, "aria-haspopup": "listbox", "aria-expanded": isOpen, disabled: disabled, onClick: function () { return !disabled && setIsOpen(function (o) { return !o; }); }, tabIndex: 0, onBlur: handleBlur },
131
+ React.createElement("span", { className: styles.flagWrapper }, (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.flagUrl) ? (React.createElement("img", { src: selectedItem.flagUrl, alt: "", className: styles.flag })) : (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.flagEmoji) ? (React.createElement("span", { className: styles.flag }, selectedItem.flagEmoji)) : null),
132
+ React.createElement("span", { className: styles.chevron, "aria-hidden": true },
133
+ React.createElement("i", { className: selectStyles.selectIcon +
134
+ " " +
135
+ (isOpen ? selectStyles.chevronUp : selectStyles.chevronDown) +
136
+ " allaw-icon-chevron-down" }))),
137
+ list,
138
+ error && (React.createElement("div", { className: "Input-error error-message", style: {
139
+ color: "#e15151",
140
+ fontSize: 13,
141
+ marginTop: 4,
142
+ marginLeft: 2,
143
+ } }, error))));
144
+ };
145
+ export default CountrySelect;
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ export interface PhoneInputProps {
3
+ defaultValue?: string;
4
+ placeholder?: string;
5
+ isRequired?: boolean;
6
+ disabled?: boolean;
7
+ validationPattern?: RegExp | string;
8
+ onChange?: (value: string) => void;
9
+ onError?: (msg: string) => void;
10
+ disableAutofill?: boolean;
11
+ }
12
+ declare const PhoneInput: React.FC<PhoneInputProps>;
13
+ export default PhoneInput;
@@ -0,0 +1,67 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import React, { useState, useRef, useEffect } from "react";
13
+ import styles from "./PhoneInput.module.css";
14
+ var formatPhone = function (value) {
15
+ // Garde uniquement les chiffres, espace tous les 2 chiffres
16
+ var digits = value.replace(/\D/g, "");
17
+ return digits.replace(/(\d{2})(?=\d)/g, "$1 ").trim();
18
+ };
19
+ var PhoneInput = function (_a) {
20
+ var _b = _a.defaultValue, defaultValue = _b === void 0 ? "" : _b, placeholder = _a.placeholder, isRequired = _a.isRequired, disabled = _a.disabled, validationPattern = _a.validationPattern, onChange = _a.onChange, onError = _a.onError, _c = _a.disableAutofill, disableAutofill = _c === void 0 ? true : _c;
21
+ var _d = useState(formatPhone(defaultValue)), value = _d[0], setValue = _d[1];
22
+ var _e = useState(""), error = _e[0], setError = _e[1];
23
+ var inputRef = useRef(null);
24
+ useEffect(function () {
25
+ setValue(formatPhone(defaultValue));
26
+ }, [defaultValue]);
27
+ var validate = function (val) {
28
+ if (isRequired && !val.replace(/\s/g, "")) {
29
+ setError("Ce champ est requis");
30
+ onError === null || onError === void 0 ? void 0 : onError("Ce champ est requis");
31
+ return false;
32
+ }
33
+ if (validationPattern) {
34
+ var regex = typeof validationPattern === "string"
35
+ ? new RegExp(validationPattern)
36
+ : validationPattern;
37
+ if (!regex.test(val.replace(/\s/g, ""))) {
38
+ setError("Veuillez vérifier votre numéro de téléphone");
39
+ onError === null || onError === void 0 ? void 0 : onError("Veuillez vérifier votre numéro de téléphone");
40
+ return false;
41
+ }
42
+ }
43
+ setError("");
44
+ onError === null || onError === void 0 ? void 0 : onError("");
45
+ return true;
46
+ };
47
+ var handleChange = function (e) {
48
+ var raw = e.target.value;
49
+ var formatted = formatPhone(raw);
50
+ setValue(formatted);
51
+ onChange === null || onChange === void 0 ? void 0 : onChange(formatted.replace(/\s/g, ""));
52
+ if (error)
53
+ validate(formatted);
54
+ };
55
+ var handleBlur = function () {
56
+ validate(value);
57
+ };
58
+ return (React.createElement("div", { className: styles.wrapper },
59
+ React.createElement("input", __assign({ ref: inputRef, className: styles.input, type: "tel", inputMode: "numeric", pattern: "[0-9 ]*", placeholder: placeholder, value: value, onChange: handleChange, onBlur: handleBlur, "aria-required": isRequired, "aria-invalid": !!error, disabled: disabled }, (disableAutofill && {
60
+ autoComplete: "off",
61
+ "data-form-type": "other",
62
+ "data-lpignore": "true",
63
+ "data-1p-ignore": true,
64
+ }))),
65
+ error && React.createElement("div", { className: styles.error }, error)));
66
+ };
67
+ export default PhoneInput;
@@ -0,0 +1,45 @@
1
+ .wrapper {
2
+ display: flex;
3
+ flex-direction: column;
4
+ width: 100%;
5
+ }
6
+ .input {
7
+ width: 100%;
8
+ height: 44px;
9
+ padding: 10px;
10
+ border: 2px solid var(--grey-venom, #e6edf5);
11
+ border-radius: 8px;
12
+ font-size: 16px;
13
+ font-family: "Open Sans";
14
+ color: var(--Primary-Mid-black, #171e25);
15
+ background: #fff;
16
+ outline: none;
17
+ transition: border 0.2s;
18
+ box-sizing: border-box;
19
+ }
20
+ .input:focus {
21
+ border-color: var(--mid-grey, #728ea7);
22
+ }
23
+ .input:hover {
24
+ border-color: var(--venom-grey-dark, #d1dce8);
25
+ }
26
+ .input:disabled {
27
+ background: #f4f7fb;
28
+ color: var(--mid-grey, #728ea7);
29
+ cursor: not-allowed;
30
+ }
31
+ .input::placeholder {
32
+ color: var(--Tags-Mid-grey, rgba(114, 142, 167, 1));
33
+ font-family: "Open Sans";
34
+ font-size: 14px;
35
+ font-style: normal;
36
+ font-weight: 400;
37
+ line-height: normal;
38
+ opacity: 0.8;
39
+ }
40
+ .error {
41
+ color: var(--actions-error, #e15151);
42
+ font-size: 13px;
43
+ margin-top: 4px;
44
+ margin-left: 2px;
45
+ }
@@ -0,0 +1,17 @@
1
+ import React from "react";
2
+ import { CountrySelectProps } from "./CountrySelect";
3
+ export interface PhoneNumberFieldProps {
4
+ countryItems: CountrySelectProps["items"];
5
+ defaultCountry?: string;
6
+ defaultNumber?: string;
7
+ numberPlaceholder?: string;
8
+ validationPattern?: RegExp | string;
9
+ isRequired?: boolean;
10
+ disabled?: boolean;
11
+ selectButtonWidth?: string | number;
12
+ selectListWidth?: string | number;
13
+ onChange?: (country: string, number: string) => void;
14
+ onError?: (msg: string) => void;
15
+ }
16
+ declare const PhoneNumberField: React.FC<PhoneNumberFieldProps>;
17
+ export default PhoneNumberField;
@@ -0,0 +1,33 @@
1
+ import React, { useState } from "react";
2
+ import styles from "./PhoneNumberField.module.css";
3
+ import CountrySelect from "./CountrySelect";
4
+ import PhoneInput from "./PhoneInput";
5
+ var PhoneNumberField = function (_a) {
6
+ var countryItems = _a.countryItems, defaultCountry = _a.defaultCountry, defaultNumber = _a.defaultNumber, numberPlaceholder = _a.numberPlaceholder, validationPattern = _a.validationPattern, isRequired = _a.isRequired, disabled = _a.disabled, selectButtonWidth = _a.selectButtonWidth, selectListWidth = _a.selectListWidth, onChange = _a.onChange, onError = _a.onError;
7
+ var _b = useState(defaultCountry || ""), country = _b[0], setCountry = _b[1];
8
+ var _c = useState(defaultNumber || ""), number = _c[0], setNumber = _c[1];
9
+ var _d = useState(""), error = _d[0], setError = _d[1];
10
+ var handleCountry = function (c) {
11
+ setCountry(c);
12
+ if (onChange)
13
+ onChange(c, number);
14
+ setError("");
15
+ };
16
+ var handleNumber = function (n) {
17
+ setNumber(n);
18
+ if (onChange)
19
+ onChange(country, n);
20
+ setError("");
21
+ };
22
+ var setErrorMsg = function (msg) {
23
+ setError(msg);
24
+ onError === null || onError === void 0 ? void 0 : onError(msg);
25
+ };
26
+ return (React.createElement("div", { className: styles.container },
27
+ React.createElement("div", { className: styles.selectWrapper },
28
+ React.createElement(CountrySelect, { items: countryItems, defaultCountry: defaultCountry, buttonWidth: selectButtonWidth, listWidth: selectListWidth, isRequired: isRequired, disabled: disabled, onSelect: handleCountry, onError: setErrorMsg })),
29
+ React.createElement("div", { className: styles.inputWrapper },
30
+ React.createElement(PhoneInput, { defaultValue: defaultNumber, placeholder: numberPlaceholder, validationPattern: validationPattern, isRequired: isRequired, disabled: disabled, onChange: handleNumber, onError: setErrorMsg }),
31
+ error && React.createElement("div", { className: styles.errorMessage }, error))));
32
+ };
33
+ export default PhoneNumberField;
@@ -0,0 +1,20 @@
1
+ .container {
2
+ display: flex;
3
+ align-items: center;
4
+ gap: 8px;
5
+ width: 100%;
6
+ }
7
+ .selectWrapper {
8
+ flex: 0 0 auto;
9
+ }
10
+ .inputWrapper {
11
+ flex: 1 1 auto;
12
+ display: flex;
13
+ flex-direction: column;
14
+ }
15
+ .errorMessage {
16
+ color: var(--actions-error, #e15151);
17
+ font-size: 13px;
18
+ margin-top: 4px;
19
+ margin-left: 2px;
20
+ }
@@ -0,0 +1,111 @@
1
+ .wrapper {
2
+ position: relative;
3
+ display: flex;
4
+ flex-direction: column;
5
+ align-items: flex-start;
6
+ }
7
+ .button {
8
+ display: flex;
9
+ align-items: center;
10
+ justify-content: space-between;
11
+ border: 2px solid var(--grey-venom, #e6edf5);
12
+ background: #fff;
13
+ border-radius: 8px;
14
+ padding: 0 14px 0 12px;
15
+ cursor: pointer;
16
+ min-width: 40px;
17
+ min-height: 44px;
18
+ height: 44px;
19
+ transition: border 0.2s;
20
+ }
21
+ .button[aria-disabled="true"],
22
+ .button:disabled {
23
+ opacity: 0.5;
24
+ cursor: not-allowed;
25
+ background: #f4f7fb;
26
+ }
27
+ .flagWrapper {
28
+ display: flex;
29
+ align-items: center;
30
+ gap: 8px;
31
+ }
32
+ .flag {
33
+ width: 24px;
34
+ height: 24px;
35
+ margin-right: 0;
36
+ font-size: 22px;
37
+ display: flex;
38
+ align-items: center;
39
+ justify-content: center;
40
+ }
41
+ .chevron {
42
+ /* margin-left: 8px; */
43
+ font-size: 18px;
44
+ color: var(--mid-grey, #728ea7);
45
+ display: flex;
46
+ align-items: center;
47
+ height: 24px;
48
+ }
49
+ .searchWrapper {
50
+ display: flex;
51
+ align-items: center;
52
+ padding: 4px 8px 4px 8px;
53
+ gap: 8px;
54
+ }
55
+ .searchWrapper .allaw-icon-search {
56
+ font-size: 18px;
57
+ color: var(--mid-grey, #728ea7);
58
+ margin-right: 4px;
59
+ }
60
+ .search {
61
+ width: 100%;
62
+ border: none;
63
+ /* border-bottom: 1px solid var(--grey-venom, #e6edf5); */
64
+ padding: 8px 0 8px 0;
65
+ font-size: 15px;
66
+ outline: none;
67
+ /* background: #f8fafc; */
68
+ border-radius: 8px 8px 0 0;
69
+ }
70
+ .label {
71
+ flex: 1 1 auto;
72
+ text-align: left;
73
+ margin-left: 8px;
74
+ }
75
+ .code {
76
+ flex: 0 0 auto;
77
+ text-align: right;
78
+ color: var(--mid-grey, #728ea7);
79
+ margin-left: 12px;
80
+ font-size: 14px;
81
+ }
82
+ .selectedItem {
83
+ font-weight: 600;
84
+ color: #25beeb;
85
+ border-radius: 8px;
86
+ }
87
+ .error {
88
+ color: var(--actions-error, #e15151);
89
+ font-size: 13px;
90
+ margin-top: 4px;
91
+ margin-left: 2px;
92
+ }
93
+ .noResult {
94
+ padding: 8px 12px;
95
+ color: var(--mid-grey, #728ea7);
96
+ font-size: 14px;
97
+ text-align: center;
98
+ }
99
+ .listOpen {
100
+ animation: fadeIn 0.2s ease-out;
101
+ }
102
+ @keyframes fadeIn {
103
+ from {
104
+ opacity: 0;
105
+ transform: scale(0.98);
106
+ }
107
+ to {
108
+ opacity: 1;
109
+ transform: scale(1);
110
+ }
111
+ }
@@ -0,0 +1,6 @@
1
+ export { default as CountrySelect } from "./CountrySelect";
2
+ export type { CountrySelectProps } from "./CountrySelect";
3
+ export { default as PhoneInput } from "./PhoneInput";
4
+ export type { PhoneInputProps } from "./PhoneInput";
5
+ export { default as PhoneNumberField } from "./PhoneNumberField";
6
+ export type { PhoneNumberFieldProps } from "./PhoneNumberField";
@@ -0,0 +1,3 @@
1
+ export { default as CountrySelect } from "./CountrySelect";
2
+ export { default as PhoneInput } from "./PhoneInput";
3
+ export { default as PhoneNumberField } from "./PhoneNumberField";
package/dist/index.d.ts CHANGED
@@ -31,6 +31,8 @@ export type { ComboBoxProps, ComboBoxRef, } from "./components/atoms/selects/Com
31
31
  export { default as Select } from "./components/atoms/selects/Select";
32
32
  export type { SelectItem, SelectProps, SelectRef, } from "./components/atoms/selects/Select";
33
33
  export { default as SelectableListItem } from "./components/atoms/selects/SelectableListItem";
34
+ export { default as PhoneNumberField } from "./components/molecules/phoneNumberField/PhoneNumberField";
35
+ export type { PhoneNumberFieldProps } from "./components/molecules/phoneNumberField/PhoneNumberField";
34
36
  export { default as Datepicker } from "./components/atoms/datepickers/Datepicker";
35
37
  export type { DatepickerProps } from "./components/atoms/datepickers/Datepicker";
36
38
  export { default as DatepickerForm } from "./components/molecules/datepickerForm/DatepickerForm";
package/dist/index.js CHANGED
@@ -31,6 +31,8 @@ export { default as SelectCard } from "./components/atoms/radios/SelectCard";
31
31
  export { default as ComboBox } from "./components/atoms/selects/ComboBox";
32
32
  export { default as Select } from "./components/atoms/selects/Select";
33
33
  export { default as SelectableListItem } from "./components/atoms/selects/SelectableListItem";
34
+ // Phone Number Field
35
+ export { default as PhoneNumberField } from "./components/molecules/phoneNumberField/PhoneNumberField";
34
36
  // Datepickers
35
37
  export { default as Datepicker } from "./components/atoms/datepickers/Datepicker";
36
38
  // DatepickerForm
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "allaw-ui",
3
- "version": "4.2.7",
3
+ "version": "4.2.9",
4
4
  "description": "Composants UI pour l'application Allaw",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",