feat: Add useShortValue prop to CommunityAutocompleteInput and related components for improved community input handling, allowing for shorter community values to be processed.
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m50s

This commit is contained in:
2025-12-24 15:15:43 +07:00
parent 9cdcd054e7
commit f4a6ceed08
4 changed files with 21 additions and 9 deletions
+2
View File
@@ -596,6 +596,7 @@ function ASNsNewManager() {
communities={communities}
placeholder="Начните вводить номер или имя"
className={`form-control${newInvalid.community ? ' is-invalid' : isValidCommunity(newItem.community) ? ' is-valid' : ''}`}
useShortValue={true}
/>
</div>
{newInvalid.community && <div className="invalid-feedback">Неверный формат community</div>}
@@ -869,6 +870,7 @@ function ASNsNewManager() {
onKeyDown={(e) => handleEditKeyDown(e, item.asn)}
className={`form-control d-inline-block me-2${isValidCommunity(editingValue) ? '' : ' is-invalid'}`}
style={{ width: '150px' }}
useShortValue={true}
/>
<Tooltip content="Сохранить (Enter)">
<button className="btn btn-success btn-icon btn-sm me-1" onClick={() => handleSaveEdit(item.asn)} disabled={!isValidCommunity(editingValue)}><IconCheck size={16} /></button>
+10 -8
View File
@@ -598,6 +598,7 @@ function DomainsNewManager() {
communities={communities}
placeholder="Начните вводить номер или имя"
className={`form-control${newInvalid.community ? ' is-invalid' : isValidCommunity(newItem.community) ? ' is-valid' : ''}`}
useShortValue={true}
/>
</div>
{newInvalid.community && <div className="invalid-feedback">Неверный формат community</div>}
@@ -881,14 +882,15 @@ function DomainsNewManager() {
<div className="btn-group">
{editingDomain === item.domain ? (
<>
<CommunityAutocompleteInput
value={editingValue}
onChange={setEditingValue}
communities={communities}
onKeyDown={(e) => handleEditKeyDown(e, item.domain)}
className={`form-control d-inline-block me-2${isValidCommunity(editingValue) ? '' : ' is-invalid'}`}
style={{ width: '150px' }}
/>
<CommunityAutocompleteInput
value={editingValue}
onChange={setEditingValue}
communities={communities}
onKeyDown={(e) => handleEditKeyDown(e, item.domain)}
className={`form-control d-inline-block me-2${isValidCommunity(editingValue) ? '' : ' is-invalid'}`}
style={{ width: '150px' }}
useShortValue={true}
/>
<Tooltip content="Сохранить (Enter)">
<button
className="btn btn-success btn-icon btn-sm"
+2
View File
@@ -856,6 +856,7 @@ function IPRangesManager() {
communities={communities}
placeholder="Начните вводить номер или имя"
className={`form-control${newInvalid.community ? ' is-invalid' : isValidCommunity(newItem.community) ? ' is-valid' : ''}`}
useShortValue={true}
/>
</div>
{newInvalid.community && <div className="invalid-feedback">Неверный формат community</div>}
@@ -1101,6 +1102,7 @@ function IPRangesManager() {
className={`form-control d-inline-block me-2${isValidCommunity(editingValue) ? '' : ' is-invalid'}`}
style={{ width: '150px' }}
onKeyDown={(e) => handleEditKeyDown(e, item.ipRange)}
useShortValue={true}
/>
<Tooltip content="Сохранить (Enter)">
<button className="btn btn-success btn-icon btn-sm me-1" onClick={() => handleSaveEdit(item.ipRange)} disabled={!isValidCommunity(editingValue)}><IconCheck size={16} /></button>
@@ -9,6 +9,7 @@ function CommunityAutocompleteInput({
className = 'form-control',
onSelectMeta,
maxSuggestions = 8,
useShortValue = false, // если true, передавать только короткую часть community (120 вместо 65000:120)
}) {
const containerRef = useRef(null);
const inputRef = useRef(null);
@@ -38,7 +39,12 @@ function CommunityAutocompleteInput({
}, []);
const selectItem = (item) => {
onChange(item.value);
// Если useShortValue=true, извлекаем только часть после двоеточия (если есть)
let valueToSet = item.value;
if (useShortValue && typeof item.value === 'string' && item.value.includes(':')) {
valueToSet = item.value.split(':')[1] || item.value;
}
onChange(valueToSet);
if (onSelectMeta) onSelectMeta(item);
setOpen(false);
setActiveIndex(-1);