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
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m50s
This commit is contained in:
@@ -596,6 +596,7 @@ function ASNsNewManager() {
|
|||||||
communities={communities}
|
communities={communities}
|
||||||
placeholder="Начните вводить номер или имя"
|
placeholder="Начните вводить номер или имя"
|
||||||
className={`form-control${newInvalid.community ? ' is-invalid' : isValidCommunity(newItem.community) ? ' is-valid' : ''}`}
|
className={`form-control${newInvalid.community ? ' is-invalid' : isValidCommunity(newItem.community) ? ' is-valid' : ''}`}
|
||||||
|
useShortValue={true}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
{newInvalid.community && <div className="invalid-feedback">Неверный формат community</div>}
|
{newInvalid.community && <div className="invalid-feedback">Неверный формат community</div>}
|
||||||
@@ -869,6 +870,7 @@ function ASNsNewManager() {
|
|||||||
onKeyDown={(e) => handleEditKeyDown(e, item.asn)}
|
onKeyDown={(e) => handleEditKeyDown(e, item.asn)}
|
||||||
className={`form-control d-inline-block me-2${isValidCommunity(editingValue) ? '' : ' is-invalid'}`}
|
className={`form-control d-inline-block me-2${isValidCommunity(editingValue) ? '' : ' is-invalid'}`}
|
||||||
style={{ width: '150px' }}
|
style={{ width: '150px' }}
|
||||||
|
useShortValue={true}
|
||||||
/>
|
/>
|
||||||
<Tooltip content="Сохранить (Enter)">
|
<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>
|
<button className="btn btn-success btn-icon btn-sm me-1" onClick={() => handleSaveEdit(item.asn)} disabled={!isValidCommunity(editingValue)}><IconCheck size={16} /></button>
|
||||||
|
|||||||
@@ -598,6 +598,7 @@ function DomainsNewManager() {
|
|||||||
communities={communities}
|
communities={communities}
|
||||||
placeholder="Начните вводить номер или имя"
|
placeholder="Начните вводить номер или имя"
|
||||||
className={`form-control${newInvalid.community ? ' is-invalid' : isValidCommunity(newItem.community) ? ' is-valid' : ''}`}
|
className={`form-control${newInvalid.community ? ' is-invalid' : isValidCommunity(newItem.community) ? ' is-valid' : ''}`}
|
||||||
|
useShortValue={true}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
{newInvalid.community && <div className="invalid-feedback">Неверный формат community</div>}
|
{newInvalid.community && <div className="invalid-feedback">Неверный формат community</div>}
|
||||||
@@ -881,14 +882,15 @@ function DomainsNewManager() {
|
|||||||
<div className="btn-group">
|
<div className="btn-group">
|
||||||
{editingDomain === item.domain ? (
|
{editingDomain === item.domain ? (
|
||||||
<>
|
<>
|
||||||
<CommunityAutocompleteInput
|
<CommunityAutocompleteInput
|
||||||
value={editingValue}
|
value={editingValue}
|
||||||
onChange={setEditingValue}
|
onChange={setEditingValue}
|
||||||
communities={communities}
|
communities={communities}
|
||||||
onKeyDown={(e) => handleEditKeyDown(e, item.domain)}
|
onKeyDown={(e) => handleEditKeyDown(e, item.domain)}
|
||||||
className={`form-control d-inline-block me-2${isValidCommunity(editingValue) ? '' : ' is-invalid'}`}
|
className={`form-control d-inline-block me-2${isValidCommunity(editingValue) ? '' : ' is-invalid'}`}
|
||||||
style={{ width: '150px' }}
|
style={{ width: '150px' }}
|
||||||
/>
|
useShortValue={true}
|
||||||
|
/>
|
||||||
<Tooltip content="Сохранить (Enter)">
|
<Tooltip content="Сохранить (Enter)">
|
||||||
<button
|
<button
|
||||||
className="btn btn-success btn-icon btn-sm"
|
className="btn btn-success btn-icon btn-sm"
|
||||||
|
|||||||
@@ -856,6 +856,7 @@ function IPRangesManager() {
|
|||||||
communities={communities}
|
communities={communities}
|
||||||
placeholder="Начните вводить номер или имя"
|
placeholder="Начните вводить номер или имя"
|
||||||
className={`form-control${newInvalid.community ? ' is-invalid' : isValidCommunity(newItem.community) ? ' is-valid' : ''}`}
|
className={`form-control${newInvalid.community ? ' is-invalid' : isValidCommunity(newItem.community) ? ' is-valid' : ''}`}
|
||||||
|
useShortValue={true}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
{newInvalid.community && <div className="invalid-feedback">Неверный формат community</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'}`}
|
className={`form-control d-inline-block me-2${isValidCommunity(editingValue) ? '' : ' is-invalid'}`}
|
||||||
style={{ width: '150px' }}
|
style={{ width: '150px' }}
|
||||||
onKeyDown={(e) => handleEditKeyDown(e, item.ipRange)}
|
onKeyDown={(e) => handleEditKeyDown(e, item.ipRange)}
|
||||||
|
useShortValue={true}
|
||||||
/>
|
/>
|
||||||
<Tooltip content="Сохранить (Enter)">
|
<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>
|
<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',
|
className = 'form-control',
|
||||||
onSelectMeta,
|
onSelectMeta,
|
||||||
maxSuggestions = 8,
|
maxSuggestions = 8,
|
||||||
|
useShortValue = false, // если true, передавать только короткую часть community (120 вместо 65000:120)
|
||||||
}) {
|
}) {
|
||||||
const containerRef = useRef(null);
|
const containerRef = useRef(null);
|
||||||
const inputRef = useRef(null);
|
const inputRef = useRef(null);
|
||||||
@@ -38,7 +39,12 @@ function CommunityAutocompleteInput({
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const selectItem = (item) => {
|
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);
|
if (onSelectMeta) onSelectMeta(item);
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
setActiveIndex(-1);
|
setActiveIndex(-1);
|
||||||
|
|||||||
Reference in New Issue
Block a user