From 59fd24336adf090a930f393460192619ec920e3b Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Mon, 24 Aug 2026 21:30:55 +0100 Subject: [PATCH] fix numbers being considered empty by field conditions Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01HWzPmQoku8u1dA6VMp51RS --- resources/js/components/field-conditions/Validator.js | 3 +++ resources/js/tests/FieldConditionsValidator.test.js | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/resources/js/components/field-conditions/Validator.js b/resources/js/components/field-conditions/Validator.js index 1183a12e81e..2fbf29ae054 100644 --- a/resources/js/components/field-conditions/Validator.js +++ b/resources/js/components/field-conditions/Validator.js @@ -9,6 +9,9 @@ const NUMBER_SPECIFIC_COMPARISONS = ['>', '>=', '<', '<=']; const isEmpty = (value) => { if (value === null || value === undefined) return true; + // Object.keys() would consider numbers empty. + if (typeof value === 'number') return false; + return Array.isArray(value) ? value.length === 0 : Object.keys(value).length === 0; }; diff --git a/resources/js/tests/FieldConditionsValidator.test.js b/resources/js/tests/FieldConditionsValidator.test.js index 742c84dca0c..64949642ba1 100644 --- a/resources/js/tests/FieldConditionsValidator.test.js +++ b/resources/js/tests/FieldConditionsValidator.test.js @@ -226,6 +226,8 @@ test('it can check if value is empty', () => { last_name: 'HasselHoff', user: { email: 'david@hasselhoff.com' }, favorite_foods: ['lasagna'], + age: 43, + zero: 0, empty_string: '', empty_array: [], empty_object: {}, @@ -237,6 +239,9 @@ test('it can check if value is empty', () => { expect(showFieldIf({ last_name: 'not empty' })).toBe(true); expect(showFieldIf({ user: 'empty' })).toBe(false); expect(showFieldIf({ favorite_foods: 'empty' })).toBe(false); + expect(showFieldIf({ age: 'empty' })).toBe(false); + expect(showFieldIf({ age: 'not empty' })).toBe(true); + expect(showFieldIf({ zero: 'empty' })).toBe(false); expect(showFieldIf({ empty_string: 'empty' })).toBe(true); expect(showFieldIf({ empty_array: 'empty' })).toBe(true); expect(showFieldIf({ empty_object: 'empty' })).toBe(true);