|
566 | 566 | return rules.every(rule => { |
567 | 567 | if (!rule || !rule.field) return true; |
568 | 568 |
|
569 | | - // Find the field element by name. |
570 | | - // Try multiple patterns since prefix may or may not be present. |
571 | | - const fieldName = rule.field; |
572 | | - const fieldElement = document.querySelector( |
573 | | - `[name="${fieldName}"], [name="${fieldName}[]"], ` + |
574 | | - `[name="openfields_${fieldName}"], [name="openfields_${fieldName}[]"], ` + |
575 | | - `[data-field="${fieldName}"], [id="${fieldName}"]` |
576 | | - ); |
| 569 | + // rule.field is now a FIELD ID (immutable UUID/identifier) |
| 570 | + // Look for any field with data-field-id attribute matching this ID |
| 571 | + // This works for: root fields, repeater subfields, group subfields, anywhere |
| 572 | + const fieldId = rule.field; |
| 573 | + let fieldElement = document.querySelector(`[data-field-id="${fieldId}"]`); |
| 574 | + |
| 575 | + // Fallback: try to find by field name (backwards compatibility) |
| 576 | + if (!fieldElement) { |
| 577 | + const fieldName = rule.field; |
| 578 | + fieldElement = document.querySelector( |
| 579 | + `[name="${fieldName}"], [name="${fieldName}[]"], ` + |
| 580 | + `[name="openfields_${fieldName}"], [name="openfields_${fieldName}[]"], ` + |
| 581 | + `[data-field="${fieldName}"], [id="${fieldName}"]` |
| 582 | + ); |
| 583 | + } |
577 | 584 |
|
578 | 585 | if (!fieldElement) { |
579 | | - console.warn(`[OpenFields] Conditional field not found: ${fieldName}`); |
| 586 | + console.warn(`[OpenFields] Conditional field not found: ${fieldId}`); |
580 | 587 | return true; // If field not found, don't block. |
581 | 588 | } |
582 | 589 |
|
|
0 commit comments