kitunga-web 0.1.97 → 0.1.98
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/features/selects/components/Selects/CustomSelect.d.ts +56 -4
- package/dist/features/selects/components/Selects/CustomSelect.d.ts.map +1 -1
- package/dist/features/selects/components/Selects/CustomSelect.js +161 -46
- package/dist/features/selects/components/Selects/CustomSelect.js.map +1 -1
- package/dist/features/selects/components/Selects/CustomSelect.module.css +130 -0
- package/dist/features/selects/components/Selects/pickerOptions.d.ts +29 -0
- package/dist/features/selects/components/Selects/pickerOptions.d.ts.map +1 -0
- package/dist/features/selects/components/Selects/pickerOptions.js +85 -0
- package/dist/features/selects/components/Selects/pickerOptions.js.map +1 -0
- package/package.json +4 -3
|
@@ -2,19 +2,37 @@ import React from 'react';
|
|
|
2
2
|
export interface Option {
|
|
3
3
|
value: string;
|
|
4
4
|
label: string;
|
|
5
|
+
/** Rótulo curto para o trigger fechado (ex.: nome do país sem o
|
|
6
|
+
* indicativo). Default: label. */
|
|
5
7
|
selectedLabel?: string;
|
|
6
8
|
disabled?: boolean;
|
|
7
9
|
/** Ícone da opção (bandeira, avatar, glyph) — renderiza na linha
|
|
8
|
-
* do dropdown e, se a opção estiver seleccionada, também no
|
|
10
|
+
* do dropdown/picker e, se a opção estiver seleccionada, também no
|
|
9
11
|
* trigger fechado (ganha ao leftIcon contextual). */
|
|
10
12
|
icon?: React.ReactNode;
|
|
13
|
+
/** Texto literal do cabeçalho de secção no modo picker — opções
|
|
14
|
+
* com o mesmo group renderizam sob a mesma secção, na ordem dada
|
|
15
|
+
* (ex.: 'Sugeridos', 'A', 'B'). Sem group, a opção renderiza sem
|
|
16
|
+
* cabeçalho. */
|
|
17
|
+
group?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface PickerClassNames {
|
|
20
|
+
overlay?: string;
|
|
21
|
+
panel?: string;
|
|
22
|
+
header?: string;
|
|
23
|
+
backButton?: string;
|
|
24
|
+
closeButton?: string;
|
|
25
|
+
searchRow?: string;
|
|
26
|
+
list?: string;
|
|
27
|
+
groupHeader?: string;
|
|
28
|
+
option?: string;
|
|
11
29
|
}
|
|
12
30
|
export interface CustomSelectProps {
|
|
13
31
|
id?: string;
|
|
14
32
|
name?: string;
|
|
15
33
|
value: string;
|
|
16
34
|
onChange: (value: string) => void;
|
|
17
|
-
options
|
|
35
|
+
options?: Option[];
|
|
18
36
|
placeholder?: string;
|
|
19
37
|
required?: boolean;
|
|
20
38
|
className?: string;
|
|
@@ -27,12 +45,12 @@ export interface CustomSelectProps {
|
|
|
27
45
|
collapsible?: boolean;
|
|
28
46
|
dropdownMinWidth?: number;
|
|
29
47
|
dropdownAlign?: 'left' | 'right';
|
|
30
|
-
/** SearchInput fixo no topo do
|
|
48
|
+
/** SearchInput fixo no topo do painel — para listas longas
|
|
31
49
|
* (ex.: países). Filtro accent-insensitive por label, selectedLabel
|
|
32
50
|
* e value (o "244" encontra "Angola (+244)"). */
|
|
33
51
|
searchable?: boolean;
|
|
34
52
|
searchPlaceholder?: string;
|
|
35
|
-
/** Tamanho do SearchInput no
|
|
53
|
+
/** Tamanho do SearchInput no painel (default 'md'). */
|
|
36
54
|
searchSize?: 'sm' | 'md' | 'lg';
|
|
37
55
|
/** O empty quando o filtro não encontra nada — o mesmo
|
|
38
56
|
* SearchEmptyState das tabelas; actionLabel mostra o botão que
|
|
@@ -42,6 +60,40 @@ export interface CustomSelectProps {
|
|
|
42
60
|
description?: string;
|
|
43
61
|
actionLabel?: string;
|
|
44
62
|
};
|
|
63
|
+
/** Segunda apresentação da lista: overlay-sheet com header, pesquisa
|
|
64
|
+
* e secções agrupadas — para listas longas com identidade visual
|
|
65
|
+
* (países, línguas). 'dropdown' é o comportamento de sempre.
|
|
66
|
+
* A pele responsiva é do consumidor via vars --picker-* e
|
|
67
|
+
* pickerClassNames — a kitunga não tem breakpoints. */
|
|
68
|
+
presentation?: 'dropdown' | 'picker';
|
|
69
|
+
/** Título do header do sheet no modo picker. */
|
|
70
|
+
pickerTitle?: string;
|
|
71
|
+
/** Autofocus no SearchInput ao abrir o picker (default false — no
|
|
72
|
+
* mobile abre o teclado; fica ao critério do consumidor). */
|
|
73
|
+
searchAutoFocus?: boolean;
|
|
74
|
+
/** Slots de classe para a pele do consumidor — media queries e
|
|
75
|
+
* regras de breakpoint vivem sempre fora da kitunga. */
|
|
76
|
+
pickerClassNames?: PickerClassNames;
|
|
77
|
+
/** Conveniência que constrói as opções internamente:
|
|
78
|
+
* 'country' → todos os territórios do libphonenumber +
|
|
79
|
+
* Intl.DisplayNames + bandeiras de flagBaseUrl;
|
|
80
|
+
* 'language' → locales + getLanguageLabel + glyph Globe por linha.
|
|
81
|
+
* `options` explícito sempre ganha ao `kind`. */
|
|
82
|
+
kind?: 'country' | 'language';
|
|
83
|
+
/** Locale dos Intl.DisplayNames e da ordenação — a língua activa
|
|
84
|
+
* do consumidor (default 'en'). */
|
|
85
|
+
displayLocale?: string;
|
|
86
|
+
/** Base dos SVGs de bandeira do consumidor (default '/flags/4x3'). */
|
|
87
|
+
flagBaseUrl?: string;
|
|
88
|
+
/** Bloco prioritário no topo do picker (kind='country') — a ordem
|
|
89
|
+
* é do produto; estas opções entram no grupo `suggestedLabel`. */
|
|
90
|
+
priorityCodes?: readonly string[];
|
|
91
|
+
/** Texto do cabeçalho do grupo prioritário (kind='country'). */
|
|
92
|
+
suggestedLabel?: string;
|
|
93
|
+
/** Lista de locales para kind='language' — a whitelist do consumidor. */
|
|
94
|
+
locales?: readonly string[];
|
|
95
|
+
/** Nome da língua por locale — i18n do consumidor. */
|
|
96
|
+
getLanguageLabel?: (locale: string) => string;
|
|
45
97
|
}
|
|
46
98
|
declare const CustomSelect: React.FC<CustomSelectProps>;
|
|
47
99
|
export default CustomSelect;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomSelect.d.ts","sourceRoot":"","sources":["../../../../../src/features/selects/components/Selects/CustomSelect.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"CustomSelect.d.ts","sourceRoot":"","sources":["../../../../../src/features/selects/components/Selects/CustomSelect.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,75 +1,190 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useState, useRef, useEffect } from 'react';
|
|
4
|
-
import { ChevronDown, Check } from 'lucide-react';
|
|
3
|
+
import React, { useState, useRef, useEffect, useCallback } from 'react';
|
|
4
|
+
import { ChevronDown, Check, X, ArrowLeft } from 'lucide-react';
|
|
5
5
|
import SearchInput from '../../../inputs/components/Inputs/SearchInput';
|
|
6
6
|
import SearchEmptyState from '../../../feedback/components/EmptyStates/SearchEmptyState/SearchEmptyState';
|
|
7
|
+
import { buildCountryPickerOptions, buildLanguagePickerOptions, } from './pickerOptions';
|
|
7
8
|
import styles from './CustomSelect.module.css';
|
|
8
|
-
const
|
|
9
|
-
|
|
9
|
+
const normalize = (text) => text
|
|
10
|
+
.normalize('NFD')
|
|
11
|
+
.replace(/[\u0300-\u036f]/g, '')
|
|
12
|
+
.toLowerCase();
|
|
13
|
+
const CustomSelect = ({ id, name, value, onChange, options, placeholder = 'Selecione uma opção', required = false, className = '', disabled = false, leftIcon, hasError = false, variant = 'default', size = 'md', valueBold = false, collapsible = false, dropdownMinWidth, dropdownAlign = 'right', searchable = false, searchPlaceholder, searchSize = 'md', searchEmptyProps, presentation = 'dropdown', pickerTitle, searchAutoFocus = false, pickerClassNames, kind, displayLocale, flagBaseUrl, priorityCodes, suggestedLabel, locales, getLanguageLabel, }) => {
|
|
14
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
10
15
|
const [isOpen, setIsOpen] = useState(false);
|
|
11
16
|
const [search, setSearch] = useState('');
|
|
12
17
|
const selectRef = useRef(null);
|
|
18
|
+
// Entrada transitória do histórico no modo picker — o voltar do
|
|
19
|
+
// mobile/SO fecha o sheet (mesmo modelo do PopupContext do Masolo,
|
|
20
|
+
// sem router: pushState + popstate).
|
|
21
|
+
const pickerPushedRef = useRef(false);
|
|
22
|
+
const resolvedOptions = React.useMemo(() => {
|
|
23
|
+
if (options === null || options === void 0 ? void 0 : options.length)
|
|
24
|
+
return options;
|
|
25
|
+
if (kind === 'country') {
|
|
26
|
+
return buildCountryPickerOptions({
|
|
27
|
+
displayLocale,
|
|
28
|
+
flagBaseUrl,
|
|
29
|
+
priorityCodes,
|
|
30
|
+
suggestedLabel,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
if (kind === 'language') {
|
|
34
|
+
return buildLanguagePickerOptions({
|
|
35
|
+
locales: locales !== null && locales !== void 0 ? locales : [],
|
|
36
|
+
getLanguageLabel,
|
|
37
|
+
displayLocale,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return options !== null && options !== void 0 ? options : [];
|
|
41
|
+
}, [
|
|
42
|
+
options,
|
|
43
|
+
kind,
|
|
44
|
+
displayLocale,
|
|
45
|
+
flagBaseUrl,
|
|
46
|
+
priorityCodes,
|
|
47
|
+
suggestedLabel,
|
|
48
|
+
locales,
|
|
49
|
+
getLanguageLabel,
|
|
50
|
+
]);
|
|
13
51
|
const selectedOption = value && value.trim() !== ''
|
|
14
|
-
?
|
|
52
|
+
? resolvedOptions.find((option) => option.value === value) || null
|
|
15
53
|
: null;
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
//
|
|
54
|
+
// Fecha o picker — se a entrada do histórico é nossa, o fecho POPA-a
|
|
55
|
+
// com history.back() (o popstate faz setIsOpen(false)); sem entrada
|
|
56
|
+
// basta o state.
|
|
57
|
+
const closePicker = useCallback(() => {
|
|
58
|
+
if (pickerPushedRef.current) {
|
|
59
|
+
pickerPushedRef.current = false;
|
|
60
|
+
window.history.back();
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
setIsOpen(false);
|
|
64
|
+
}, []);
|
|
65
|
+
// Click fora fecha o painel — mousedown para apanhar antes do blur.
|
|
66
|
+
// No modo picker o overlay cobre o viewport e trata do seu próprio
|
|
67
|
+
// click-outside (está dentro do selectRef, por isso nunca dispara aqui).
|
|
68
|
+
useEffect(() => {
|
|
69
|
+
const handleClickOutside = (event) => {
|
|
70
|
+
if (selectRef.current &&
|
|
71
|
+
!selectRef.current.contains(event.target)) {
|
|
72
|
+
setIsOpen(false);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
76
|
+
return () => document.removeEventListener('mousedown', handleClickOutside);
|
|
77
|
+
}, []);
|
|
78
|
+
// A pesquisa morre com o painel — reabrir mostra a lista inteira.
|
|
28
79
|
useEffect(() => {
|
|
29
80
|
if (!isOpen)
|
|
30
81
|
setSearch('');
|
|
31
82
|
}, [isOpen]);
|
|
83
|
+
// popstate — o voltar do SO/navegador popou a nossa entrada: fecha.
|
|
84
|
+
useEffect(() => {
|
|
85
|
+
if (!isOpen || presentation !== 'picker')
|
|
86
|
+
return;
|
|
87
|
+
const handlePopState = () => {
|
|
88
|
+
pickerPushedRef.current = false;
|
|
89
|
+
setIsOpen(false);
|
|
90
|
+
};
|
|
91
|
+
window.addEventListener('popstate', handlePopState);
|
|
92
|
+
return () => window.removeEventListener('popstate', handlePopState);
|
|
93
|
+
}, [isOpen, presentation]);
|
|
94
|
+
// ESC + trava de scroll da página enquanto o sheet está aberto.
|
|
95
|
+
useEffect(() => {
|
|
96
|
+
if (!isOpen || presentation !== 'picker')
|
|
97
|
+
return;
|
|
98
|
+
const handleKeyDown = (e) => {
|
|
99
|
+
if (e.key === 'Escape')
|
|
100
|
+
closePicker();
|
|
101
|
+
};
|
|
102
|
+
window.addEventListener('keydown', handleKeyDown);
|
|
103
|
+
document.body.style.overflow = 'hidden';
|
|
104
|
+
return () => {
|
|
105
|
+
window.removeEventListener('keydown', handleKeyDown);
|
|
106
|
+
document.body.style.overflow = 'unset';
|
|
107
|
+
};
|
|
108
|
+
}, [isOpen, presentation, closePicker]);
|
|
32
109
|
const toggleDropdown = () => {
|
|
33
110
|
if (disabled)
|
|
34
111
|
return;
|
|
35
|
-
|
|
112
|
+
if (isOpen) {
|
|
113
|
+
if (presentation === 'picker')
|
|
114
|
+
closePicker();
|
|
115
|
+
else
|
|
116
|
+
setIsOpen(false);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
setIsOpen(true);
|
|
120
|
+
if (presentation === 'picker' && typeof window !== 'undefined') {
|
|
121
|
+
// Entrada transitória — o botão/gesto de voltar do SO fecha o
|
|
122
|
+
// sheet sem sair da página por baixo.
|
|
123
|
+
pickerPushedRef.current = true;
|
|
124
|
+
window.history.pushState({ __kitungaSelectPicker: true }, '');
|
|
125
|
+
}
|
|
36
126
|
};
|
|
37
127
|
const handleSelect = (option) => {
|
|
38
128
|
if (option.disabled)
|
|
39
129
|
return;
|
|
40
130
|
onChange(option.value);
|
|
41
|
-
|
|
131
|
+
if (presentation === 'picker')
|
|
132
|
+
closePicker();
|
|
133
|
+
else
|
|
134
|
+
setIsOpen(false);
|
|
42
135
|
};
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
136
|
+
const handleKeyDown = (e) => {
|
|
137
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
138
|
+
e.preventDefault();
|
|
139
|
+
toggleDropdown();
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
const query = normalize(search.trim());
|
|
143
|
+
const visibleOptions = query
|
|
144
|
+
? resolvedOptions.filter((option) => {
|
|
145
|
+
var _a;
|
|
146
|
+
return normalize(option.label).includes(query) ||
|
|
147
|
+
normalize((_a = option.selectedLabel) !== null && _a !== void 0 ? _a : '').includes(query) ||
|
|
148
|
+
normalize(option.value).includes(query);
|
|
149
|
+
})
|
|
150
|
+
: resolvedOptions;
|
|
151
|
+
const displayIcon = (_a = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.icon) !== null && _a !== void 0 ? _a : leftIcon;
|
|
152
|
+
const renderOptionRow = (option) => {
|
|
153
|
+
var _a;
|
|
154
|
+
return (_jsxs("div", { className: `${styles.option} ${value === option.value ? styles.selected : ''} ${option.disabled ? styles.disabledOption : ''} ${(_a = pickerClassNames === null || pickerClassNames === void 0 ? void 0 : pickerClassNames.option) !== null && _a !== void 0 ? _a : ''}`, onClick: () => handleSelect(option), onKeyDown: (e) => {
|
|
155
|
+
if (option.disabled)
|
|
156
|
+
return;
|
|
157
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
158
|
+
e.preventDefault();
|
|
159
|
+
handleSelect(option);
|
|
160
|
+
}
|
|
161
|
+
}, role: "option", "aria-selected": value === option.value, "aria-disabled": option.disabled ? true : undefined, tabIndex: option.disabled ? -1 : 0, children: [_jsxs("span", { className: styles.optionText, children: [option.icon && (_jsx("span", { className: styles.optionIcon, children: option.icon })), _jsx("span", { children: option.label })] }), value === option.value && (_jsx(Check, { size: 14, className: styles.checkIcon }))] }, option.value));
|
|
162
|
+
};
|
|
163
|
+
// Linhas do picker com cabeçalhos de secção — um header renderiza
|
|
164
|
+
// sempre que o group muda em relação à linha anterior; ao filtrar,
|
|
165
|
+
// os grupos recalculam sobre o resultado.
|
|
166
|
+
const renderPickerRows = () => {
|
|
167
|
+
const rows = [];
|
|
168
|
+
let lastGroup;
|
|
169
|
+
visibleOptions.forEach((option) => {
|
|
170
|
+
var _a;
|
|
171
|
+
if (option.group !== lastGroup) {
|
|
172
|
+
lastGroup = option.group;
|
|
173
|
+
if (option.group) {
|
|
174
|
+
rows.push(_jsx("div", { className: `${styles.pickerGroupHeader} ${(_a = pickerClassNames === null || pickerClassNames === void 0 ? void 0 : pickerClassNames.groupHeader) !== null && _a !== void 0 ? _a : ''}`, children: option.group }, `group-${option.group}`));
|
|
175
|
+
}
|
|
48
176
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
return
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
return;
|
|
58
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
|
59
|
-
e.preventDefault();
|
|
60
|
-
toggleDropdown();
|
|
61
|
-
}
|
|
62
|
-
}, children: [(selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.icon) ? (_jsx("span", { className: styles.triggerIconFrame, children: displayIcon })) : (displayIcon && _jsx("span", { className: styles.leftIcon, children: displayIcon })), _jsx("span", { className: `${styles.valueText} ${!value ? styles.placeholder : ''} ${valueBold ? styles.valueBold : ''}`.trim(), children: selectedOption ? (_b = selectedOption.selectedLabel) !== null && _b !== void 0 ? _b : selectedOption.label : placeholder }), _jsx(ChevronDown, { size: 16, className: `${styles.arrow} ${isOpen ? styles.rotate : ''}` })] }), isOpen && (_jsx("div", { className: `${styles.dropdown} ${dropdownAlign === 'left' ? styles.dropdownLeft : styles.dropdownRight}`, style: dropdownMinWidth ? { minWidth: `${dropdownMinWidth}px` } : undefined, children: _jsxs("div", { className: styles.dropdownPanel, children: [searchable && (_jsx("div", { className: styles.searchRow, onClick: (e) => e.stopPropagation(), children: _jsx(SearchInput, { value: search, onChange: setSearch, placeholder: searchPlaceholder !== null && searchPlaceholder !== void 0 ? searchPlaceholder : 'Pesquisar...', size: searchSize, onKeyDown: (e) => {
|
|
177
|
+
rows.push(renderOptionRow(option));
|
|
178
|
+
});
|
|
179
|
+
return rows;
|
|
180
|
+
};
|
|
181
|
+
return (_jsxs("div", { ref: selectRef, className: `${styles.customSelect} ${styles[size]} ${variant === 'flat' ? styles.flat : ''} ${hasError ? styles.error : ''} ${disabled ? styles.disabled : ''} ${isOpen ? styles.open : ''} ${className}`, children: [_jsxs("div", { className: styles.selectedValue, onClick: toggleDropdown, onKeyDown: handleKeyDown, role: "button", tabIndex: disabled ? -1 : 0, "aria-haspopup": "listbox", "aria-expanded": isOpen, children: [displayIcon && (_jsx("span", { className: styles.triggerIconFrame, children: displayIcon })), _jsx("span", { className: `${styles.valueText} ${selectedOption ? styles.filled : ''} ${valueBold && selectedOption ? styles.bold : ''}`, children: (_c = (_b = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.selectedLabel) !== null && _b !== void 0 ? _b : selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) !== null && _c !== void 0 ? _c : placeholder }), _jsx(ChevronDown, { size: 16, className: `${styles.arrowIcon} ${collapsible ? styles.collapsibleArrow : ''}` })] }), isOpen && presentation !== 'picker' && (_jsxs("div", { className: `${styles.dropdown} ${styles[dropdownAlign]}`, style: dropdownMinWidth ? { minWidth: `${dropdownMinWidth}px` } : undefined, children: [searchable && (_jsx("div", { className: styles.searchRow, onClick: (e) => e.stopPropagation(), children: _jsx(SearchInput, { value: search, onChange: setSearch, placeholder: searchPlaceholder !== null && searchPlaceholder !== void 0 ? searchPlaceholder : 'Pesquisar...', size: searchSize, onKeyDown: (e) => {
|
|
182
|
+
if (e.key === 'Enter')
|
|
183
|
+
e.preventDefault();
|
|
184
|
+
} }) })), _jsxs("div", { className: styles.options, role: "listbox", onClick: (e) => e.stopPropagation(), children: [visibleOptions.map(renderOptionRow), visibleOptions.length === 0 && (_jsx(SearchEmptyState, { title: searchEmptyProps === null || searchEmptyProps === void 0 ? void 0 : searchEmptyProps.title, description: searchEmptyProps === null || searchEmptyProps === void 0 ? void 0 : searchEmptyProps.description, actionLabel: searchEmptyProps === null || searchEmptyProps === void 0 ? void 0 : searchEmptyProps.actionLabel, onAction: () => setSearch('') }))] })] })), isOpen && presentation === 'picker' && (_jsx("div", { className: `${styles.pickerOverlay} ${(_d = pickerClassNames === null || pickerClassNames === void 0 ? void 0 : pickerClassNames.overlay) !== null && _d !== void 0 ? _d : ''}`, onClick: closePicker, role: "dialog", "aria-modal": "true", "aria-label": pickerTitle, children: _jsxs("div", { className: `${styles.pickerPanel} ${(_e = pickerClassNames === null || pickerClassNames === void 0 ? void 0 : pickerClassNames.panel) !== null && _e !== void 0 ? _e : ''}`, onClick: (e) => e.stopPropagation(), children: [_jsxs("div", { className: `${styles.pickerHeader} ${(_f = pickerClassNames === null || pickerClassNames === void 0 ? void 0 : pickerClassNames.header) !== null && _f !== void 0 ? _f : ''}`, children: [_jsx("button", { type: "button", className: `${styles.pickerBack} ${(_g = pickerClassNames === null || pickerClassNames === void 0 ? void 0 : pickerClassNames.backButton) !== null && _g !== void 0 ? _g : ''}`, onClick: closePicker, "aria-label": "Back", children: _jsx(ArrowLeft, { size: 24 }) }), _jsx("h2", { className: styles.pickerTitle, children: pickerTitle }), _jsx("button", { type: "button", className: `${styles.pickerClose} ${(_h = pickerClassNames === null || pickerClassNames === void 0 ? void 0 : pickerClassNames.closeButton) !== null && _h !== void 0 ? _h : ''}`, onClick: closePicker, "aria-label": "Close", children: _jsx(X, { size: 24 }) })] }), searchable && (_jsx("div", { className: `${styles.pickerSearch} ${(_j = pickerClassNames === null || pickerClassNames === void 0 ? void 0 : pickerClassNames.searchRow) !== null && _j !== void 0 ? _j : ''}`, children: _jsx(SearchInput, { value: search, onChange: setSearch, placeholder: searchPlaceholder !== null && searchPlaceholder !== void 0 ? searchPlaceholder : 'Pesquisar...', size: searchSize, autoFocus: searchAutoFocus, onKeyDown: (e) => {
|
|
63
185
|
if (e.key === 'Enter')
|
|
64
186
|
e.preventDefault();
|
|
65
|
-
} }) })), _jsxs("div", { className: styles.
|
|
66
|
-
if (option.disabled)
|
|
67
|
-
return;
|
|
68
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
|
69
|
-
e.preventDefault();
|
|
70
|
-
handleSelect(option);
|
|
71
|
-
}
|
|
72
|
-
}, role: "option", "aria-selected": value === option.value, "aria-disabled": option.disabled ? true : undefined, tabIndex: option.disabled ? -1 : 0, children: [_jsxs("span", { className: styles.optionText, children: [option.icon && (_jsx("span", { className: styles.optionIcon, children: option.icon })), _jsx("span", { children: option.label })] }), value === option.value && (_jsx(Check, { size: 14, className: styles.checkIcon }))] }, option.value))), visibleOptions.length === 0 && (_jsx(SearchEmptyState, { title: searchEmptyProps === null || searchEmptyProps === void 0 ? void 0 : searchEmptyProps.title, description: searchEmptyProps === null || searchEmptyProps === void 0 ? void 0 : searchEmptyProps.description, actionLabel: searchEmptyProps === null || searchEmptyProps === void 0 ? void 0 : searchEmptyProps.actionLabel, onAction: () => setSearch('') }))] })] }) }))] }));
|
|
187
|
+
} }) })), _jsxs("div", { className: `${styles.pickerList} ${(_k = pickerClassNames === null || pickerClassNames === void 0 ? void 0 : pickerClassNames.list) !== null && _k !== void 0 ? _k : ''}`, role: "listbox", children: [renderPickerRows(), visibleOptions.length === 0 && (_jsx(SearchEmptyState, { title: searchEmptyProps === null || searchEmptyProps === void 0 ? void 0 : searchEmptyProps.title, description: searchEmptyProps === null || searchEmptyProps === void 0 ? void 0 : searchEmptyProps.description, actionLabel: searchEmptyProps === null || searchEmptyProps === void 0 ? void 0 : searchEmptyProps.actionLabel, onAction: () => setSearch('') }))] })] }) })), _jsx("input", { type: "hidden", id: id, name: name, value: value, required: required })] }));
|
|
73
188
|
};
|
|
74
189
|
export default CustomSelect;
|
|
75
190
|
//# sourceMappingURL=CustomSelect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomSelect.js","sourceRoot":"","sources":["../../../../../src/features/selects/components/Selects/CustomSelect.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CustomSelect.js","sourceRoot":"","sources":["../../../../../src/features/selects/components/Selects/CustomSelect.tsx"],"names":[],"mappings":"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"}
|
|
@@ -424,3 +424,133 @@
|
|
|
424
424
|
}
|
|
425
425
|
}
|
|
426
426
|
|
|
427
|
+
/* ===== Picker (presentation="picker") — overlay-sheet com header,
|
|
428
|
+
pesquisa e secções agrupadas, para listas longas (países, línguas).
|
|
429
|
+
ZERO breakpoints: a pele responsiva é sempre CSS do consumidor via
|
|
430
|
+
vars --picker-* e pickerClassNames — a kitunga não conhece a regra
|
|
431
|
+
dos 600px do Masolo nem a de nenhum outro produto (decisão 75). */
|
|
432
|
+
|
|
433
|
+
.pickerOverlay {
|
|
434
|
+
position: fixed;
|
|
435
|
+
inset: 0;
|
|
436
|
+
z-index: var(--picker-overlay-z, 1300);
|
|
437
|
+
display: flex;
|
|
438
|
+
align-items: center;
|
|
439
|
+
justify-content: center;
|
|
440
|
+
height: 100dvh;
|
|
441
|
+
padding: var(--picker-overlay-padding, var(--spacing-lg));
|
|
442
|
+
background: var(--picker-overlay-bg, rgba(0, 0, 0, 0.5));
|
|
443
|
+
animation: pickerFadeIn 0.15s ease-out;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
.pickerPanel {
|
|
447
|
+
display: flex;
|
|
448
|
+
flex-direction: column;
|
|
449
|
+
overflow: hidden;
|
|
450
|
+
width: var(--picker-panel-width, 100%);
|
|
451
|
+
max-width: var(--picker-panel-max-width, 480px);
|
|
452
|
+
height: var(--picker-panel-height, 600px);
|
|
453
|
+
max-height: var(--picker-panel-max-height, 100%);
|
|
454
|
+
background: var(--picker-panel-bg, var(--bg-primary));
|
|
455
|
+
border-radius: var(--picker-panel-radius, var(--radius-sm));
|
|
456
|
+
box-shadow: var(--picker-panel-shadow, 0 10px 25px rgba(0, 0, 0, 0.2));
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
.pickerHeader {
|
|
460
|
+
display: flex;
|
|
461
|
+
align-items: center;
|
|
462
|
+
gap: var(--spacing-md);
|
|
463
|
+
padding: var(--spacing-md);
|
|
464
|
+
flex-shrink: 0;
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
.pickerTitle {
|
|
468
|
+
flex: 1;
|
|
469
|
+
min-width: 0;
|
|
470
|
+
margin: 0;
|
|
471
|
+
font-size: 18px;
|
|
472
|
+
font-weight: 600;
|
|
473
|
+
color: var(--text-primary);
|
|
474
|
+
overflow: hidden;
|
|
475
|
+
text-overflow: ellipsis;
|
|
476
|
+
white-space: nowrap;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
.pickerBack,
|
|
480
|
+
.pickerClose {
|
|
481
|
+
align-items: center;
|
|
482
|
+
justify-content: center;
|
|
483
|
+
width: 40px;
|
|
484
|
+
height: 40px;
|
|
485
|
+
padding: 0;
|
|
486
|
+
border: none;
|
|
487
|
+
border-radius: 50%;
|
|
488
|
+
background: var(--picker-button-bg, var(--bg-hover-normal));
|
|
489
|
+
color: var(--picker-button-color, var(--text-primary));
|
|
490
|
+
cursor: pointer;
|
|
491
|
+
flex-shrink: 0;
|
|
492
|
+
transition: background-color var(--transition-fast);
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
.pickerBack:hover,
|
|
496
|
+
.pickerClose:hover {
|
|
497
|
+
background-color: var(--picker-button-hover, var(--color-gray-200));
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
/* Visibilidade dos controlos — sempre CSS do consumidor. No Masolo
|
|
501
|
+
o X morre e o ← nasce no takeover ≤600px, via --picker-back-display
|
|
502
|
+
e --picker-close-display num media query do app. Ambos são "close":
|
|
503
|
+
o ← é voltar na forma, fechar na função (decisão 30). */
|
|
504
|
+
.pickerBack {
|
|
505
|
+
display: var(--picker-back-display, none);
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
.pickerClose {
|
|
509
|
+
display: var(--picker-close-display, flex);
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
.pickerSearch {
|
|
513
|
+
padding: 0 var(--picker-search-padding-x, var(--spacing-md)) var(--picker-search-padding-y, var(--spacing-sm-large));
|
|
514
|
+
border-bottom: 1px solid var(--picker-search-border, var(--border-divider));
|
|
515
|
+
flex-shrink: 0;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
.pickerList {
|
|
519
|
+
flex: 1;
|
|
520
|
+
min-height: 0;
|
|
521
|
+
overflow-y: auto;
|
|
522
|
+
padding: var(--picker-list-padding, var(--spacing-sm) 0);
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
.pickerGroupHeader {
|
|
526
|
+
position: sticky;
|
|
527
|
+
top: 0;
|
|
528
|
+
z-index: 1;
|
|
529
|
+
padding: var(--spacing-sm) var(--picker-group-padding-x, var(--spacing-md));
|
|
530
|
+
font-size: var(--picker-group-size, 0.75rem);
|
|
531
|
+
font-weight: 600;
|
|
532
|
+
letter-spacing: 0.04em;
|
|
533
|
+
text-transform: uppercase;
|
|
534
|
+
color: var(--picker-group-color, var(--text-tertiary));
|
|
535
|
+
background: var(--picker-panel-bg, var(--bg-primary));
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
/* Fallback da flag quando o asset falha — o ISO em texto dentro da
|
|
539
|
+
moldura circular (um consumidor com flagBaseUrl parcial nunca
|
|
540
|
+
mostra imagem partida). */
|
|
541
|
+
.flagFallback {
|
|
542
|
+
font-size: 0.55rem;
|
|
543
|
+
font-weight: 700;
|
|
544
|
+
letter-spacing: 0.02em;
|
|
545
|
+
color: var(--text-tertiary);
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
@keyframes pickerFadeIn {
|
|
549
|
+
from {
|
|
550
|
+
opacity: 0;
|
|
551
|
+
}
|
|
552
|
+
to {
|
|
553
|
+
opacity: 1;
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Option } from './CustomSelect';
|
|
3
|
+
export interface CountryPickerOptionsParams {
|
|
4
|
+
/** Locale dos nomes e da ordenação alfabética (Intl.DisplayNames +
|
|
5
|
+
* localeCompare) — a língua activa do consumidor. */
|
|
6
|
+
displayLocale?: string;
|
|
7
|
+
/** Base dos SVGs de bandeira (default '/flags/4x3') — assets do app
|
|
8
|
+
* consumidor, nunca bundle nem emoji. */
|
|
9
|
+
flagBaseUrl?: string;
|
|
10
|
+
/** Bloco prioritário no topo — a ordem é do produto; estas opções
|
|
11
|
+
* entram no grupo `suggestedLabel` e o resto segue alfabético. */
|
|
12
|
+
priorityCodes?: readonly string[];
|
|
13
|
+
/** Texto do cabeçalho do grupo prioritário (i18n do consumidor). */
|
|
14
|
+
suggestedLabel?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const buildCountryPickerOptions: ({ displayLocale, flagBaseUrl, priorityCodes, suggestedLabel, }: CountryPickerOptionsParams) => Option[];
|
|
17
|
+
export interface LanguagePickerOptionsParams {
|
|
18
|
+
/** Lista de locales servidos — a whitelist do consumidor. */
|
|
19
|
+
locales: readonly string[];
|
|
20
|
+
/** Nome da língua por locale — i18n do consumidor (a kitunga não
|
|
21
|
+
* conhece os namespaces dele). */
|
|
22
|
+
getLanguageLabel?: (locale: string) => string;
|
|
23
|
+
/** Locale de ordenação alfabética (default: a ordem dada). */
|
|
24
|
+
displayLocale?: string;
|
|
25
|
+
/** Ícone por linha — default o glyph Globe (língua ≠ país). */
|
|
26
|
+
languageIcon?: React.ReactNode;
|
|
27
|
+
}
|
|
28
|
+
export declare const buildLanguagePickerOptions: ({ locales, getLanguageLabel, displayLocale, languageIcon, }: LanguagePickerOptionsParams) => Option[];
|
|
29
|
+
//# sourceMappingURL=pickerOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pickerOptions.d.ts","sourceRoot":"","sources":["../../../../../src/features/selects/components/Selects/pickerOptions.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAIxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAoC7C,MAAM,WAAW,0BAA0B;IACzC;0DACsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;8CAC0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;uEACmE;IACnE,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAMD,eAAO,MAAM,yBAAyB,GAAI,gEAKvC,0BAA0B,KAAG,MAAM,EAmCrC,CAAC;AAEF,MAAM,WAAW,2BAA2B;IAC1C,6DAA6D;IAC7D,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B;uCACmC;IACnC,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAChC;AAED,eAAO,MAAM,0BAA0B,GAAI,6DAKxC,2BAA2B,KAAG,MAAM,EAStC,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// Opções prontas para o modo picker do CustomSelect — kind='country'
|
|
3
|
+
// (todos os territórios da metadata do libphonenumber + Intl.DisplayNames
|
|
4
|
+
// + bandeiras do consumidor) e kind='language' (locales + labels do
|
|
5
|
+
// consumidor + glyph Globe — língua ≠ país, nunca bandeira).
|
|
6
|
+
// A lista de países é a metadata inteira — nunca allowlist manual
|
|
7
|
+
// (decisão 74 do Masolo); o bloco prioritário e a pele são do
|
|
8
|
+
// consumidor via props.
|
|
9
|
+
import { useState } from 'react';
|
|
10
|
+
import { Globe } from 'lucide-react';
|
|
11
|
+
import { getCountryConfig, getSupportedCountryCodes } from '../../../inputs/components/Inputs/PhoneInput/countries';
|
|
12
|
+
import styles from './CustomSelect.module.css';
|
|
13
|
+
const normalize = (text) => text.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
14
|
+
// Letra do grupo alfabético — NFD para "África"→A, "É…"→E, "Å…"→A.
|
|
15
|
+
const firstLetter = (text) => (normalize(text).charAt(0) || '#').toUpperCase();
|
|
16
|
+
// Flag <img> — se o asset falhar (consumidor com flagBaseUrl parcial)
|
|
17
|
+
// cai para o ISO em texto dentro da mesma moldura circular; nunca
|
|
18
|
+
// imagem partida.
|
|
19
|
+
const FlagImg = ({ code, base }) => {
|
|
20
|
+
const [failed, setFailed] = useState(false);
|
|
21
|
+
if (failed)
|
|
22
|
+
return _jsx("span", { className: styles.flagFallback, children: code });
|
|
23
|
+
return (
|
|
24
|
+
// eslint-disable-next-line @next/next/no-img-element
|
|
25
|
+
_jsx("img", { src: `${base}/${code.toLowerCase()}.svg`, alt: "", loading: "lazy", draggable: false, onError: () => setFailed(true) }));
|
|
26
|
+
};
|
|
27
|
+
const regionNamesCache = new Map();
|
|
28
|
+
const regionNames = (locale) => {
|
|
29
|
+
let names = regionNamesCache.get(locale);
|
|
30
|
+
if (!names) {
|
|
31
|
+
names = new Intl.DisplayNames([locale], { type: 'region' });
|
|
32
|
+
regionNamesCache.set(locale, names);
|
|
33
|
+
}
|
|
34
|
+
return names;
|
|
35
|
+
};
|
|
36
|
+
// Uma lista por combinação de params — os nomes e a ordem mudam com a
|
|
37
|
+
// língua; cacheada porque são ~245 opções.
|
|
38
|
+
const countryCache = new Map();
|
|
39
|
+
export const buildCountryPickerOptions = ({ displayLocale = 'en', flagBaseUrl = '/flags/4x3', priorityCodes = [], suggestedLabel = 'Suggested', }) => {
|
|
40
|
+
const cacheKey = [displayLocale, flagBaseUrl, suggestedLabel, ...priorityCodes].join('|');
|
|
41
|
+
const cached = countryCache.get(cacheKey);
|
|
42
|
+
if (cached)
|
|
43
|
+
return cached;
|
|
44
|
+
const names = regionNames(displayLocale);
|
|
45
|
+
const all = getSupportedCountryCodes();
|
|
46
|
+
const priority = priorityCodes.filter((code) => all.includes(code));
|
|
47
|
+
const prioritySet = new Set(priority);
|
|
48
|
+
const rest = all
|
|
49
|
+
.filter((code) => !prioritySet.has(code))
|
|
50
|
+
.sort((a, b) => { var _a, _b; return ((_a = names.of(a)) !== null && _a !== void 0 ? _a : a).localeCompare((_b = names.of(b)) !== null && _b !== void 0 ? _b : b, displayLocale); });
|
|
51
|
+
const toOption = (code, group) => {
|
|
52
|
+
var _a, _b, _c;
|
|
53
|
+
const name = (_a = names.of(code)) !== null && _a !== void 0 ? _a : code;
|
|
54
|
+
const dialCode = (_c = (_b = getCountryConfig(code)) === null || _b === void 0 ? void 0 : _b.dialCode) !== null && _c !== void 0 ? _c : '';
|
|
55
|
+
return {
|
|
56
|
+
value: code,
|
|
57
|
+
// A linha mostra nome + indicativo (a pesquisa casa os dois);
|
|
58
|
+
// o trigger fechado mostra só o nome via selectedLabel.
|
|
59
|
+
label: dialCode ? `${name} (${dialCode})` : name,
|
|
60
|
+
selectedLabel: name,
|
|
61
|
+
icon: _jsx(FlagImg, { code: code, base: flagBaseUrl }),
|
|
62
|
+
group,
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
const result = [
|
|
66
|
+
...priority.map((code) => toOption(code, suggestedLabel)),
|
|
67
|
+
...rest.map((code) => { var _a; return toOption(code, firstLetter((_a = names.of(code)) !== null && _a !== void 0 ? _a : code)); }),
|
|
68
|
+
];
|
|
69
|
+
countryCache.set(cacheKey, result);
|
|
70
|
+
return result;
|
|
71
|
+
};
|
|
72
|
+
export const buildLanguagePickerOptions = ({ locales, getLanguageLabel, displayLocale, languageIcon, }) => {
|
|
73
|
+
const icon = languageIcon !== null && languageIcon !== void 0 ? languageIcon : _jsx(Globe, { size: 18 });
|
|
74
|
+
return locales
|
|
75
|
+
.map((locale) => {
|
|
76
|
+
var _a;
|
|
77
|
+
return ({
|
|
78
|
+
value: locale,
|
|
79
|
+
label: (_a = getLanguageLabel === null || getLanguageLabel === void 0 ? void 0 : getLanguageLabel(locale)) !== null && _a !== void 0 ? _a : locale,
|
|
80
|
+
});
|
|
81
|
+
})
|
|
82
|
+
.sort((a, b) => a.label.localeCompare(b.label, displayLocale))
|
|
83
|
+
.map((option) => (Object.assign(Object.assign({}, option), { icon, group: firstLetter(option.label) })));
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=pickerOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pickerOptions.js","sourceRoot":"","sources":["../../../../../src/features/selects/components/Selects/pickerOptions.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kitunga-web",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.98",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -63,6 +63,7 @@
|
|
|
63
63
|
"babel-plugin-react-compiler": "1.0.0",
|
|
64
64
|
"eslint": "^9",
|
|
65
65
|
"eslint-config-next": "16.1.3",
|
|
66
|
+
"flag-icons": "^7.6.0",
|
|
66
67
|
"typescript": "^5"
|
|
67
68
|
},
|
|
68
69
|
"peerDependencies": {
|
|
@@ -71,9 +72,9 @@
|
|
|
71
72
|
"react-dom": ">=18"
|
|
72
73
|
},
|
|
73
74
|
"scripts": {
|
|
74
|
-
"dev": "dotenv -e .env.local next dev",
|
|
75
|
+
"dev": "node scripts/copy-flags.mjs && dotenv -e .env.local next dev",
|
|
75
76
|
"start": "dotenv -e .env.local next start",
|
|
76
|
-
"build": "next build",
|
|
77
|
+
"build": "node scripts/copy-flags.mjs && next build",
|
|
77
78
|
"build:lib": "node ./scripts/build-library.mjs",
|
|
78
79
|
"publish:lib": "pnpm publish --no-git-checks",
|
|
79
80
|
"lint": "eslint"
|