Skip to content

fix(grid): ESF search matches numeric values without locale formatting#17131

Open
Copilot wants to merge 15 commits intomasterfrom
copilot/fix-numeric-filtering-in-esf
Open

fix(grid): ESF search matches numeric values without locale formatting#17131
Copilot wants to merge 15 commits intomasterfrom
copilot/fix-numeric-filtering-in-esf

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Mar 30, 2026

Excel-style filtering search on numeric/percent/currency columns only matched against the locale-formatted label (e.g., "2,500%"). Since rejectNonNumericalEntries() strips format characters like % and $ from user input, typing 2500 could never match "2,500%" due to the thousands separator mismatch.

Changes

  • Added matchesNumericValue() helper in excel-style-search.component.ts — matches search input against the raw numeric value (item.value), applying the ×100 display factor for percent columns (with toPrecision(15) to avoid floating-point drift)
  • Integrated into all search paths — non-hierarchical filter in filterListData(), hierarchicalSelectMatches(), and hierarchical tree node expansion
  • Added reproduction test — verifies searching "1000" matches the locale-formatted "1,000" entry in a number column ESF dropdown

Example

Before: searching 2500 in a percent column showing 2,500% → no results
After: searching 2500 matches the 2,500% entry via numeric value comparison

User input: "2500"
  → label match:   "2,500%".indexOf("2500") → -1  ✗
  → numeric match:  (25 * 100).toString().indexOf("2500") → 0  ✓

Note

The last commit inadvertently included a package-lock.json change that should be reverted before merge.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • accounts.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5372 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-87530819 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8300595769920969781,9375832566039075501,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,13841586546792606645,17202931768630745248,4 --trace-process-track-uuid=3190708989122997041 bash (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5373 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-41944158 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8911992420786888099,8965894217057716158,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,1587949124220762341,13369453351174011851,4 --trace-process-track-uuid=3190708989122997041 bash (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-41944158 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --window-size=820,800 --js-flags=--expose-gc http://localhost:9876/?id=41944158 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
  • android.clients.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5372 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-87530819 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8300595769920969781,9375832566039075501,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,13841586546792606645,17202931768630745248,4 --trace-process-track-uuid=3190708989122997041 bash (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5373 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-41944158 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8911992420786888099,8965894217057716158,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,1587949124220762341,13369453351174011851,4 --trace-process-track-uuid=3190708989122997041 bash (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-87530819 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --window-size=820,800 --js-flags=--expose-gc http://localhost:9876/?id=87530819 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
  • clients2.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5372 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-87530819 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8300595769920969781,9375832566039075501,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,13841586546792606645,17202931768630745248,4 --trace-process-track-uuid=3190708989122997041 bash (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5373 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-41944158 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8911992420786888099,8965894217057716158,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,1587949124220762341,13369453351174011851,4 --trace-process-track-uuid=3190708989122997041 bash (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-87530819 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --window-size=820,800 --js-flags=--expose-gc http://localhost:9876/?id=87530819 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
  • clientservices.googleapis.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5372 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-87530819 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8300595769920969781,9375832566039075501,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,13841586546792606645,17202931768630745248,4 --trace-process-track-uuid=3190708989122997041 bash (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5373 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-41944158 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8911992420786888099,8965894217057716158,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,1587949124220762341,13369453351174011851,4 --trace-process-track-uuid=3190708989122997041 bash (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-87530819 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --window-size=820,800 --js-flags=--expose-gc http://localhost:9876/?id=87530819 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
  • content-autofill.googleapis.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5373 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-41944158 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8911992420786888099,8965894217057716158,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,1587949124220762341,13369453351174011851,4 --trace-process-track-uuid=3190708989122997041 bash (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-41944158 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --window-size=820,800 --js-flags=--expose-gc http://localhost:9876/?id=41944158 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5372 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-87530819 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8300595769920969781,9375832566039075501,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,13841586546792606645,17202931768630745248,4 --trace-process-track-uuid=3190708989122997041 bash (dns block)
  • optimizationguide-pa.googleapis.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5372 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-87530819 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8300595769920969781,9375832566039075501,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,13841586546792606645,17202931768630745248,4 --trace-process-track-uuid=3190708989122997041 bash (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5373 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-41944158 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8911992420786888099,8965894217057716158,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,1587949124220762341,13369453351174011851,4 --trace-process-track-uuid=3190708989122997041 bash (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-87530819 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --window-size=820,800 --js-flags=--expose-gc http://localhost:9876/?id=87530819 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
  • randomuser.me
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5372 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-87530819 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8300595769920969781,9375832566039075501,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,13841586546792606645,17202931768630745248,4 --trace-process-track-uuid=3190708989122997041 bash (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-87530819 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --window-size=820,800 --js-flags=--expose-gc http://localhost:9876/?id=87530819 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5720 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-1959334 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,2677832284348964153,8928979265033168388,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,11477603954040772553,9266862597241067796,4 --trace-process-track-uuid=3190708989122997041 stat (dns block)
  • redirector.gvt1.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5372 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-87530819 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8300595769920969781,9375832566039075501,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,13841586546792606645,17202931768630745248,4 --trace-process-track-uuid=3190708989122997041 bash (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5373 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-41944158 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8911992420786888099,8965894217057716158,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,1587949124220762341,13369453351174011851,4 --trace-process-track-uuid=3190708989122997041 bash (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-87530819 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --window-size=820,800 --js-flags=--expose-gc http://localhost:9876/?id=87530819 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
  • safebrowsing.googleapis.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5706 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-33832332 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,9287530175882529242,15489318947332477937,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,11759742442191055001,10548627033459546966,4 --trace-process-track-uuid=3190708989122997041 stat (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-33832332 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --window-size=820,800 --js-flags=--expose-gc http://localhost:9876/?id=33832332 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=6039 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-60656430 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,14288135901229661104,12519144575688549214,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,6642776894894180008,1068945395764780953,4 --trace-process-track-uuid=3190708989122997041 k/igniteui-angul--no-default-browser-check (dns block)
  • safebrowsingohttpgateway.googleapis.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5372 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-87530819 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8300595769920969781,9375832566039075501,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,13841586546792606645,17202931768630745248,4 --trace-process-track-uuid=3190708989122997041 bash (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5373 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-41944158 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8911992420786888099,8965894217057716158,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,1587949124220762341,13369453351174011851,4 --trace-process-track-uuid=3190708989122997041 bash (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-41944158 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --window-size=820,800 --js-flags=--expose-gc http://localhost:9876/?id=41944158 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
  • update.googleapis.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5372 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-87530819 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8300595769920969781,9375832566039075501,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,13841586546792606645,17202931768630745248,4 --trace-process-track-uuid=3190708989122997041 bash (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-87530819 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --window-size=820,800 --js-flags=--expose-gc http://localhost:9876/?id=87530819 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5373 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-41944158 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8911992420786888099,8965894217057716158,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,1587949124220762341,13369453351174011851,4 --trace-process-track-uuid=3190708989122997041 bash (dns block)
  • www.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5372 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-87530819 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8300595769920969781,9375832566039075501,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,13841586546792606645,17202931768630745248,4 --trace-process-track-uuid=3190708989122997041 bash (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5373 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-41944158 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,8911992420786888099,8965894217057716158,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,1587949124220762341,13369453351174011851,4 --trace-process-track-uuid=3190708989122997041 bash (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-87530819 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --disable-gpu --window-size=820,800 --js-flags=--expose-gc http://localhost:9876/?id=87530819 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Copilot AI changed the title [WIP] Fix Excel-style filtering for numeric percent column fix(grid): ESF search matches numeric values without locale formatting Mar 30, 2026
Copilot AI requested a review from kdinev March 30, 2026 14:14
@kdinev kdinev marked this pull request as ready for review March 31, 2026 10:14
Copilot AI review requested due to automatic review settings March 31, 2026 10:14
@kdinev kdinev added ✅ status: verified Applies to PRs that have passed manual verification and removed 💥 status: in-test PRs currently being tested labels Mar 31, 2026
@kdinev kdinev requested a review from mddragnev March 31, 2026 10:15
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes Excel-style filtering (ESF) search so numeric/percent/currency entries can be found using unformatted numeric input (e.g. 1000 matches 1,000, 2500 matches 2,500%) by adding numeric-value-based matching alongside the existing label-based matching.

Changes:

  • Added matchesNumericValue() in the ESF search component and integrated it into both hierarchical and non-hierarchical search flows.
  • Updated sample configs/data to include percent/currency scenarios (e.g. Discount field, dataType updates).
  • Added a regression test ensuring plain numeric search matches locale-formatted numeric labels.

Reviewed changes

Copilot reviewed 6 out of 7 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
projects/igniteui-angular/grids/core/src/filtering/excel-style/excel-style-search.component.ts Adds numeric-value matching and wires it into ESF search paths (hierarchical + flat).
projects/igniteui-angular/grids/grid/src/grid-filtering-ui.spec.ts Adds a regression test for searching 1000 matching 1,000 in ESF list.
src/app/shared/sample-data.ts Adds Discount values to sample data for percent/currency demonstrations.
src/app/hierarchical-grid-updating/hierarchical-grid-updating.sample.html Sets UnitPrice/Discount column dataType to currency/percent.
src/app/hierarchical-grid-remote/hierarchical-grid-remote.sample.ts Updates remote schema field dataType to currency/percent.
src/app/grid-column-types/grid-column-types.sample.html Adjusts grid widths (700px → 800px).
package-lock.json Contains unrelated dependency/lockfile changes (noted in PR description as accidental).

Comment on lines +818 to +823
let numericValue = item.value;
if (columnDataType === GridColumnDataType.Percent) {
numericValue = parseFloat((item.value * 100).toPrecision(15));
}

return numericValue.toString().toLowerCase().indexOf(searchVal) > -1;
Copy link

Copilot AI Mar 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

matchesNumericValue() compares against numericValue.toString(), which drops trailing zeros and can produce scientific notation. As a result, valid numeric inputs that the search field allows (e.g. 1000.00, 1e5) may still fail to match locale-formatted labels like 1,000.00 even though they represent the same value. Consider normalizing searchVal (e.g. parse to a number and stringify) and/or comparing against a canonical non-localized numeric string so decimal inputs reliably match.

Suggested change
let numericValue = item.value;
if (columnDataType === GridColumnDataType.Percent) {
numericValue = parseFloat((item.value * 100).toPrecision(15));
}
return numericValue.toString().toLowerCase().indexOf(searchVal) > -1;
// Normalize the search value: remove grouping separators, trim, and parse as number.
const normalizedSearch = searchVal ? searchVal.replace(/,/g, '').trim() : '';
if (!normalizedSearch) {
return false;
}
const parsedSearch = Number(normalizedSearch);
if (Number.isNaN(parsedSearch)) {
return false;
}
let numericValue = item.value;
if (columnDataType === GridColumnDataType.Percent) {
numericValue = parseFloat((item.value * 100).toPrecision(15));
}
const canonicalItem = numericValue.toString();
const canonicalSearch = parsedSearch.toString();
return canonicalItem.toLowerCase().indexOf(canonicalSearch.toLowerCase()) > -1;

Copilot uses AI. Check for mistakes.
@kdinev kdinev added the squash-merge Merge PR with "Squash and Merge" option label Mar 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

grid: excel-style-filtering squash-merge Merge PR with "Squash and Merge" option version: 21.2.x ✅ status: verified Applies to PRs that have passed manual verification

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Excel-style filtering search by numeric column like Percent is display-based

3 participants