limits vlaiadtion adn keywrods forms
This commit is contained in:
@@ -102,11 +102,11 @@ export const createKeywordsPageConfig = (
|
||||
handlers: {
|
||||
clusters: Array<{ id: number; name: string }>;
|
||||
activeSector: { id: number; name: string } | null;
|
||||
availableSeedKeywords: Array<{ id: number; keyword: string; volume: number; difficulty: number; intent: string }>;
|
||||
formData: {
|
||||
seed_keyword_id: number;
|
||||
volume_override?: number | null;
|
||||
difficulty_override?: number | null;
|
||||
keyword?: string;
|
||||
volume?: number | null;
|
||||
difficulty?: number | null;
|
||||
intent?: string;
|
||||
cluster_id?: number | null;
|
||||
status: string;
|
||||
};
|
||||
@@ -504,42 +504,53 @@ export const createKeywordsPageConfig = (
|
||||
// They're automatically loaded by TablePageTemplate based on the current route
|
||||
formFields: (clusters: Array<{ id: number; name: string }>) => [
|
||||
{
|
||||
key: 'seed_keyword_id',
|
||||
label: 'Seed Keyword',
|
||||
type: 'select',
|
||||
placeholder: 'Select a seed keyword',
|
||||
value: (handlers.formData.seed_keyword_id && handlers.formData.seed_keyword_id > 0) ? handlers.formData.seed_keyword_id.toString() : '',
|
||||
key: 'keyword',
|
||||
label: 'Keyword',
|
||||
type: 'text',
|
||||
placeholder: 'Enter keyword (e.g., best massage chairs)',
|
||||
value: handlers.formData.keyword || '',
|
||||
onChange: (value: any) =>
|
||||
handlers.setFormData({ ...handlers.formData, seed_keyword_id: value ? parseInt(value) : 0 }),
|
||||
handlers.setFormData({ ...handlers.formData, keyword: value }),
|
||||
required: true,
|
||||
options: [
|
||||
{ value: '', label: 'Select a keyword...' },
|
||||
...handlers.availableSeedKeywords.map((sk) => ({
|
||||
value: sk.id.toString(),
|
||||
label: `${sk.keyword} (Vol: ${sk.volume.toLocaleString()}, Diff: ${sk.difficulty}, ${sk.intent})`,
|
||||
})),
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'volume_override',
|
||||
label: 'Volume Override (optional)',
|
||||
key: 'volume',
|
||||
label: 'Search Volume',
|
||||
type: 'number',
|
||||
placeholder: 'Leave empty to use seed keyword volume',
|
||||
value: handlers.formData.volume_override ?? '',
|
||||
placeholder: 'Monthly search volume',
|
||||
value: handlers.formData.volume ?? '',
|
||||
onChange: (value: any) =>
|
||||
handlers.setFormData({ ...handlers.formData, volume_override: value ? parseInt(value) : null }),
|
||||
handlers.setFormData({ ...handlers.formData, volume: value ? parseInt(value) : null }),
|
||||
required: true,
|
||||
min: 0,
|
||||
},
|
||||
{
|
||||
key: 'difficulty_override',
|
||||
label: 'Difficulty Override (optional)',
|
||||
key: 'difficulty',
|
||||
label: 'Difficulty (0-100)',
|
||||
type: 'number',
|
||||
placeholder: 'Leave empty to use seed keyword difficulty',
|
||||
value: handlers.formData.difficulty_override ?? '',
|
||||
placeholder: 'SEO difficulty score',
|
||||
value: handlers.formData.difficulty ?? '',
|
||||
onChange: (value: any) =>
|
||||
handlers.setFormData({ ...handlers.formData, difficulty_override: value ? parseInt(value) : null }),
|
||||
handlers.setFormData({ ...handlers.formData, difficulty: value ? parseInt(value) : null }),
|
||||
required: true,
|
||||
min: 0,
|
||||
max: 100,
|
||||
},
|
||||
{
|
||||
key: 'intent',
|
||||
label: 'Search Intent',
|
||||
type: 'select',
|
||||
value: handlers.formData.intent || 'informational',
|
||||
onChange: (value: any) =>
|
||||
handlers.setFormData({ ...handlers.formData, intent: value }),
|
||||
required: true,
|
||||
options: [
|
||||
{ value: 'informational', label: 'Informational' },
|
||||
{ value: 'navigational', label: 'Navigational' },
|
||||
{ value: 'transactional', label: 'Transactional' },
|
||||
{ value: 'commercial', label: 'Commercial' },
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'cluster_id',
|
||||
label: 'Cluster',
|
||||
|
||||
Reference in New Issue
Block a user