feat: check for select type and emit dropdown socket event
This commit is contained in:
@@ -289,6 +289,45 @@ export class WorkflowGenerator {
|
|||||||
const elementInfo = await getElementInformation(page, coordinates, '', false);
|
const elementInfo = await getElementInformation(page, coordinates, '', false);
|
||||||
console.log("Element info: ", elementInfo);
|
console.log("Element info: ", elementInfo);
|
||||||
|
|
||||||
|
// Check if clicked element is a select dropdown
|
||||||
|
const isDropdown = elementInfo?.tagName === 'SELECT';
|
||||||
|
|
||||||
|
if (isDropdown && elementInfo.innerHTML) {
|
||||||
|
// Parse options from innerHTML
|
||||||
|
const options = elementInfo.innerHTML
|
||||||
|
.split('<option')
|
||||||
|
.slice(1) // Remove first empty element
|
||||||
|
.map(optionHtml => {
|
||||||
|
const valueMatch = optionHtml.match(/value="([^"]*)"/);
|
||||||
|
const disabledMatch = optionHtml.includes('disabled="disabled"');
|
||||||
|
const selectedMatch = optionHtml.includes('selected="selected"');
|
||||||
|
|
||||||
|
// Extract text content between > and </option>
|
||||||
|
const textMatch = optionHtml.match(/>([^<]*)</);
|
||||||
|
const text = textMatch
|
||||||
|
? textMatch[1]
|
||||||
|
.replace(/\n/g, '') // Remove all newlines
|
||||||
|
.replace(/\s+/g, ' ') // Replace multiple spaces with single space
|
||||||
|
.trim()
|
||||||
|
: '';
|
||||||
|
|
||||||
|
return {
|
||||||
|
value: valueMatch ? valueMatch[1] : '',
|
||||||
|
text,
|
||||||
|
disabled: disabledMatch,
|
||||||
|
selected: selectedMatch
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
// Notify client to show dropdown overlay
|
||||||
|
this.socket.emit('showDropdown', {
|
||||||
|
coordinates,
|
||||||
|
selector,
|
||||||
|
options
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Check if clicked element is a date input
|
// Check if clicked element is a date input
|
||||||
const isDateInput = elementInfo?.tagName === 'INPUT' && elementInfo?.attributes?.type === 'date';
|
const isDateInput = elementInfo?.tagName === 'INPUT' && elementInfo?.attributes?.type === 'date';
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user