Skip to content

Update to ng 19 and add features #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 163 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
163 commits
Select commit Hold shift + click to select a range
8f20660
fix collapse toggle to hide rules only
eisnerw Jul 3, 2025
26f4323
fix demo layout and collapsed behavior
eisnerw Jul 3, 2025
52a681b
chore: fix cdk and material versions
eisnerw Jul 4, 2025
a46fab8
Fix npm issues
eisnerw Jul 4, 2025
e91a22f
chore: update angular peer deps and fix type
eisnerw Jul 4, 2025
415b5f7
Upgrade to ng 19.
eisnerw Jul 4, 2025
0d598ca
fix: make output textarea resizable vertically
eisnerw Jul 4, 2025
f2e1521
Merge pull request #5 from eisnerw/codex/fix-text-box-resizing-to-sup…
eisnerw Jul 4, 2025
3aa51e1
feat: add NOT toggle support
eisnerw Jul 4, 2025
04ec15f
Merge pull request #6 from eisnerw/codex/add-not-condition-toggle-and…
eisnerw Jul 4, 2025
671b1e8
change enableNot to allowNot; fix allowNot checkbox
eisnerw Jul 4, 2025
78cb60a
docs: document allowNot option
eisnerw Jul 4, 2025
edcf9a5
Merge pull request #9 from eisnerw/codex/add-documentation-for-allownot
eisnerw Jul 4, 2025
4e505e8
Minor fix in README
eisnerw Jul 4, 2025
97ad2d6
feat(demo): allow editing JSON
eisnerw Jul 4, 2025
f7b5ca4
Merge pull request #10 from eisnerw/codex/implement-two-way-binding-b…
eisnerw Jul 4, 2025
97b4234
feat(demo): highlight invalid JSON
eisnerw Jul 4, 2025
aae1de5
Merge pull request #11 from eisnerw/codex/highlight-invalid-json-with…
eisnerw Jul 4, 2025
fc318f8
feat(demo): add JSON validation
eisnerw Jul 4, 2025
a6124f1
fix json validation
eisnerw Jul 4, 2025
fc70787
Merge pull request #13 from eisnerw/codex/fix-json-validation-issues
eisnerw Jul 4, 2025
605d546
Merge pull request #12 from eisnerw/codex/add-json-validation-for-rul…
eisnerw Jul 4, 2025
adea077
fix validation logic and demo
eisnerw Jul 4, 2025
6b1b4cb
Merge pull request #14 from eisnerw/codex/fix-validation-for-tree-and…
eisnerw Jul 4, 2025
ff002b9
fix(category validation): allow arrays for in/not in
eisnerw Jul 4, 2025
2e60284
Merge pull request #15 from eisnerw/codex/fix-category-validation-issue
eisnerw Jul 4, 2025
569ef6e
disallow empty array for category
eisnerw Jul 4, 2025
cdec9ca
Merge pull request #16 from eisnerw/codex/invalidate-empty-array-for-…
eisnerw Jul 4, 2025
f19df3e
demo: start with entity mode disabled
eisnerw Jul 4, 2025
fc5c4b1
feat: clean entity on non-entity mode
eisnerw Jul 4, 2025
d95931e
Merge pull request #17 from eisnerw/codex/disable-entity-mode-at-star…
eisnerw Jul 4, 2025
e651ffb
Merge pull request #18 from eisnerw/codex/remove-entity-attribute-in-…
eisnerw Jul 4, 2025
134903f
fix demo config switch
eisnerw Jul 4, 2025
70c0bc6
Merge pull request #19 from eisnerw/codex/fix-auto-entity-insertion/d…
eisnerw Jul 4, 2025
727ccb5
Revert to one-way binding baseline and add validation
eisnerw Jul 4, 2025
635d973
Merge pull request #21 from eisnerw/codex/revert-to-last-known-good-b…
eisnerw Jul 5, 2025
9ac5366
docs: note custom input onChange
eisnerw Jul 5, 2025
d5d69e8
Merge pull request #22 from eisnerw/codex/fix-two-way-binding-for-tex…
eisnerw Jul 5, 2025
3cd9ee8
Make entity mode optional
eisnerw Jul 5, 2025
bae121e
Merge pull request #25 from eisnerw/codex/update-query-builder-for-en…
eisnerw Jul 5, 2025
66bbd2f
feat(demo): improve JSON editor validation
eisnerw Jul 5, 2025
2412794
Merge pull request #26 from eisnerw/codex/handle-three-json-states-in…
eisnerw Jul 5, 2025
59b4a34
feat: add convert to ruleset button
eisnerw Jul 5, 2025
8ca6955
Merge pull request #27 from eisnerw/codex/add--convert-to-ruleset--bu…
eisnerw Jul 5, 2025
eaf4437
fix layout of convert-to-ruleset button
eisnerw Jul 5, 2025
2455114
Merge pull request #28 from eisnerw/codex/fix-button-alignment-issue
eisnerw Jul 5, 2025
dabf671
Add convert ruleset control and textarea validation
eisnerw Jul 5, 2025
8e9cfa5
Merge pull request #29 from eisnerw/codex/fix-convert-to-ruleset-butt…
eisnerw Jul 5, 2025
c0355ac
fix: update defaults and textarea validation
eisnerw Jul 5, 2025
e487dc0
Merge pull request #30 from eisnerw/codex/fix-default-values-and-text…
eisnerw Jul 5, 2025
377910e
Treat datetime values as invalid for date fields
eisnerw Jul 5, 2025
9d2f49f
Merge pull request #32 from eisnerw/codex/make-datetime-invalid-for-d…
eisnerw Jul 5, 2025
2e4a405
feat: add ruleset-to-rule conversion
eisnerw Jul 5, 2025
bcf5b64
Merge pull request #33 from eisnerw/codex/add--convert-ruleset-to-rul…
eisnerw Jul 5, 2025
89216b8
fix: move convert ruleset to rule button
eisnerw Jul 5, 2025
0edd31a
Merge pull request #34 from eisnerw/codex/undo-last-change-and-update…
eisnerw Jul 5, 2025
6a42542
feat: add rule reordering
eisnerw Jul 5, 2025
3b1677b
Merge pull request #35 from eisnerw/codex/add-up/down-arrows-for-rule…
eisnerw Jul 5, 2025
454c855
feat: add ruleset reordering arrows
eisnerw Jul 5, 2025
0e7153c
Merge pull request #36 from eisnerw/codex/add-arrows-to-ruleset-and-i…
eisnerw Jul 5, 2025
ff2aede
Change "Convert Ruleset to Rule" to "Convert to Rule"
eisnerw Jul 5, 2025
c9e3f20
Reorder convert to rule button
eisnerw Jul 5, 2025
7dc7c6f
Merge pull request #37 from eisnerw/codex/reposition-convert-to-rule-…
eisnerw Jul 5, 2025
9e2ba26
feat: support custom collapsed summary
eisnerw Jul 5, 2025
53c93e4
Merge pull request #38 from eisnerw/codex/add-customcollapsedsummary-…
eisnerw Jul 5, 2025
1c9c325
style: refine collapsed summary
eisnerw Jul 5, 2025
f788c75
Merge pull request #39 from eisnerw/codex/adjust-font-size-and-vertic…
eisnerw Jul 5, 2025
800ff7b
fix docs table row
eisnerw Jul 5, 2025
f86a7f6
Merge pull request #40 from eisnerw/codex/fix-allowconverttoruleset-d…
eisnerw Jul 5, 2025
912020c
docs: document customCollapsedSummary
eisnerw Jul 5, 2025
a36add3
Merge pull request #41 from eisnerw/codex/document-customcollapsedsum…
eisnerw Jul 5, 2025
16dc840
docs: fix table row for customCollapsedSummary
eisnerw Jul 5, 2025
5053961
Merge pull request #42 from eisnerw/codex/fix-readme-display-for-cust…
eisnerw Jul 5, 2025
7b27cf1
docs: summarize changes from upstream
eisnerw Jul 5, 2025
053bc50
Merge pull request #43 from eisnerw/codex/create-pr-with-multiple-fea…
eisnerw Jul 5, 2025
2c2b7f0
Added categorySource
eisnerw Jul 8, 2025
749cb14
feat: dynamic repo categories and validation
eisnerw Jul 8, 2025
c5c4d8e
Only allow '=' for github
eisnerw Jul 8, 2025
098cfed
Merge pull request #45 from eisnerw/codex/add-validation-and-category…
eisnerw Jul 8, 2025
5fc9d50
fix demo validation for dynamic categories
eisnerw Jul 8, 2025
5213dcc
Merge pull request #46 from eisnerw/codex/fix-invalid-query-message-i…
eisnerw Jul 8, 2025
ba8176e
feat: hide unselected condition buttons
eisnerw Jul 8, 2025
adf6a28
Merge pull request #47 from eisnerw/codex/modify-query-builder-button…
eisnerw Jul 8, 2025
52b8d17
fix ruleset deletion when allowRuleset is false
eisnerw Jul 8, 2025
540631f
Merge pull request #48 from eisnerw/codex/add-delete-buttons-for-rule…
eisnerw Jul 8, 2025
715aa34
feat: customizable names and expression toggle
eisnerw Jul 8, 2025
da05ef8
Merge pull request #49 from eisnerw/codex/update-buttons-to-use-=-icon
eisnerw Jul 8, 2025
52a9544
feat: add heavy equal icon
eisnerw Jul 8, 2025
931d5d4
Merge pull request #50 from eisnerw/codex/add-svg-styling-for-=-signs
eisnerw Jul 8, 2025
9f6b298
propagate rule and ruleset names and unify icon color
eisnerw Jul 8, 2025
ea846a3
Minor color and alignment of = icon
eisnerw Jul 8, 2025
f1b6acf
Merge pull request #51 from eisnerw/codex/update-=-icon-color-and-fix…
eisnerw Jul 8, 2025
1f4fdd5
feat: add hideButtons option
eisnerw Jul 9, 2025
33f2f7a
Merge pull request #52 from eisnerw/codex/add-hidebuttons-option-with…
eisnerw Jul 9, 2025
9210584
fix switch group visibility
eisnerw Jul 9, 2025
7278f29
Merge pull request #53 from eisnerw/codex/hide-unset-not/and/or-butto…
eisnerw Jul 9, 2025
d24a4bd
feat: auto add rule when ruleset created
eisnerw Jul 9, 2025
18987ad
Merge pull request #55 from eisnerw/codex/add-automatic-rule-addition…
eisnerw Jul 9, 2025
382a4d7
fix single rule switch layout
eisnerw Jul 9, 2025
14303bb
Merge pull request #56 from eisnerw/codex/fix-empty-box-display-for-s…
eisnerw Jul 9, 2025
168e51d
fix switch group layout for single rule
eisnerw Jul 9, 2025
089cdac
Merge pull request #58 from eisnerw/o8dq79-codex/fix-extra-line-in-em…
eisnerw Jul 9, 2025
306b8de
fix switch group hover with allowNot
eisnerw Jul 9, 2025
784048d
Merge pull request #59 from eisnerw/codex/fix-box-color-behavior-when…
eisnerw Jul 9, 2025
7663c90
feat: add validation indicators
eisnerw Jul 9, 2025
1004f86
Merge pull request #60 from eisnerw/codex/add-validation-to-rules-and…
eisnerw Jul 9, 2025
a2ddb41
fix: detect missing values in rules
eisnerw Jul 9, 2025
c779a2e
Merge pull request #61 from eisnerw/codex/fix-validation-check-for-rules
eisnerw Jul 9, 2025
7a83a2b
fix: validate date fields correctly
eisnerw Jul 9, 2025
7881059
Merge pull request #63 from eisnerw/codex/fix-validation-for-date-input
eisnerw Jul 9, 2025
b5416d3
feat: add named ruleset support
eisnerw Jul 9, 2025
a5fd9ff
Merge pull request #64 from eisnerw/codex/add-support-for-named-rulesets
eisnerw Jul 9, 2025
6922b80
fix demo named rulesets
eisnerw Jul 9, 2025
c65f178
Merge pull request #65 from eisnerw/codex/fix-named-ruleset-dialog-issue
eisnerw Jul 9, 2025
c95b493
refactor: add material dialogs and inline naming
eisnerw Jul 9, 2025
b235026
fix compilation errors
eisnerw Jul 9, 2025
f203d4a
Merge pull request #67 from eisnerw/codex/fix-compilation-errors-in-n…
eisnerw Jul 9, 2025
8aa201c
Merge pull request #66 from eisnerw/codex/update-named-rulesets-ui-co…
eisnerw Jul 9, 2025
27f757c
Improve ruleset naming UI and clone saves
eisnerw Jul 9, 2025
6b4daf7
Merge pull request #68 from eisnerw/codex/clone-ruleset-on-renaming
eisnerw Jul 9, 2025
806435d
feat: improve named ruleset handling
eisnerw Jul 9, 2025
6c6fc33
Merge pull request #73 from eisnerw/codex/update-ruleset-name-display…
eisnerw Jul 9, 2025
4e2f57c
fix named ruleset update
eisnerw Jul 10, 2025
38fd9e2
Merge pull request #74 from eisnerw/codex/fix-named-query-update-hand…
eisnerw Jul 10, 2025
8ee71c3
Refresh named rulesets during data cleaning
eisnerw Jul 10, 2025
cc57f58
Merge pull request #75 from eisnerw/codex/fix-saving-modified-ruleset…
eisnerw Jul 10, 2025
370e444
fix: ensure UI refresh after named ruleset updates
eisnerw Jul 10, 2025
dac7aed
Merge pull request #76 from eisnerw/codex/fix-ui-reactivity-for-query…
eisnerw Jul 10, 2025
c60cb84
fix named ruleset update
eisnerw Jul 10, 2025
481da37
Fix misplaced getRootRuleset
eisnerw Jul 10, 2025
9f4678d
Merge pull request #79 from eisnerw/codex/fix-updatenamedrulesetinsta…
eisnerw Jul 10, 2025
f67a97c
feat: handle named ruleset rename updates
eisnerw Jul 10, 2025
f2dfa72
Clean up rename named ruleset
eisnerw Jul 10, 2025
17a244d
Merge pull request #80 from eisnerw/codex/fix-ruleset-renaming-functi…
eisnerw Jul 10, 2025
ed16aaf
Have remove name perform delete
eisnerw Jul 10, 2025
e2fc108
refactor named ruleset dialog
eisnerw Jul 10, 2025
2fed21e
Merge pull request #81 from eisnerw/codex/update-save-ruleset-dialog-…
eisnerw Jul 10, 2025
50c342a
fix: sort named ruleset options
eisnerw Jul 10, 2025
f09e137
fix angular material theme import
eisnerw Jul 10, 2025
8f0ee79
Merge pull request #83 from eisnerw/codex/fix-unresolved-import-for-a…
eisnerw Jul 10, 2025
29d06ed
Merge pull request #82 from eisnerw/codex/sort-candidate-names-in-dro…
eisnerw Jul 10, 2025
588eee4
feat: confirm before deleting unused named ruleset
eisnerw Jul 10, 2025
54f6555
Merge pull request #84 from eisnerw/codex/add-confirmation-for-rulese…
eisnerw Jul 10, 2025
3236fa1
feat: auto store named rulesets from json
eisnerw Jul 10, 2025
87f9c61
Merge pull request #85 from eisnerw/codex/auto-store-unstored-ruleset…
eisnerw Jul 10, 2025
6510732
Protect against missing named query
eisnerw Jul 10, 2025
175cd92
style: adjust collapsed summary and named ruleset styles
eisnerw Jul 10, 2025
7bf342f
Move summary to the right of the named ruleset button; move +Named Qu…
eisnerw Jul 10, 2025
5d6e597
Merge pull request #86 from eisnerw/codex/implement-minor-ui-changes
eisnerw Jul 10, 2025
8d00e3e
feat: support custom ruleset name sanitization
eisnerw Jul 10, 2025
9b5ade2
Merge pull request #87 from eisnerw/codex/update-ruleset-dialog-text-…
eisnerw Jul 10, 2025
050e138
feat: enhance named ruleset dialog
eisnerw Jul 10, 2025
fee3acf
Merge pull request #88 from eisnerw/codex/update-lib-named-ruleset-di…
eisnerw Jul 10, 2025
fbc8766
Improved titles for rule-to-ruleset conversions
eisnerw Jul 10, 2025
ade30f2
feat: add default rule attribute and UI tweaks
eisnerw Jul 10, 2025
0430239
Merge pull request #89 from eisnerw/codex/add-defaultruleattribute-to…
eisnerw Jul 11, 2025
4524c70
feat: enable external editing for named queries
eisnerw Jul 11, 2025
cdbaf7c
fix: mark EditRulesetDialog as non-standalone
eisnerw Jul 11, 2025
219a6d1
Merge pull request #92 from eisnerw/codex/fix-standalone-component-de…
eisnerw Jul 11, 2025
e6d1aac
Merge pull request #90 from eisnerw/codex/add-edit-functionality-for-…
eisnerw Jul 11, 2025
8688df3
feat(demo): make edit ruleset dialog resizable
eisnerw Jul 11, 2025
860ed98
Merge pull request #94 from eisnerw/yvfv7k-codex/make-edit-ruleset-di…
eisnerw Jul 11, 2025
40e1b8c
Fix not hover; add operators for strings
eisnerw Jul 22, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13,318 changes: 6,800 additions & 6,518 deletions package-lock.json

Large diffs are not rendered by default.

30 changes: 15 additions & 15 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,24 +33,24 @@
},
"homepage": "https://github.com/kerwin612/ngx-query-builder",
"dependencies": {
"@angular/animations": "^18.1.0",
"@angular/cdk": "~18.1.0",
"@angular/common": "^18.1.0",
"@angular/compiler": "^18.1.0",
"@angular/core": "^18.1.0",
"@angular/forms": "^18.1.0",
"@angular/material": "~18.1.0",
"@angular/platform-browser": "^18.1.0",
"@angular/platform-browser-dynamic": "^18.1.0",
"@angular/router": "^18.1.0",
"@angular/animations": "^19.2.14",
"@angular/cdk": "~19.2.14",
"@angular/common": "19.2.14",
"@angular/compiler": "19.2.14",
"@angular/core": "19.2.14",
"@angular/forms": "19.2.14",
"@angular/material": "~19.2.14",
"@angular/platform-browser": "19.2.14",
"@angular/platform-browser-dynamic": "19.2.14",
"@angular/router": "19.2.14",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
"zone.js": "~0.14.3"
"zone.js": "0.15.0"
},
"devDependencies": {
"@angular-devkit/build-angular": "^18.1.0",
"@angular/cli": "^18.1.0",
"@angular/compiler-cli": "^18.1.0",
"@angular-devkit/build-angular": "19.2.14",
"@angular/cli": "19.2.14",
"@angular/compiler-cli": "19.2.14",
"@types/jasmine": "~5.1.0",
"angular-eslint": "18.1.0",
"eslint": "^9.6.0",
Expand All @@ -60,7 +60,7 @@
"karma-coverage": "~2.2.0",
"karma-jasmine": "~5.1.0",
"karma-jasmine-html-reporter": "~2.1.0",
"ng-packagr": "^18.1.0",
"ng-packagr": "^19.2.2",
"typescript": "~5.5.2",
"typescript-eslint": "8.0.0-alpha.38"
}
Expand Down
65 changes: 43 additions & 22 deletions projects/ngx-query-builder-demo/src/app/app.component.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
<main class="main">
<div class="content">
<ngx-query-builder [formControl]='queryCtrl' [config]='currentConfig' [allowRuleset]='allowRuleset' [allowCollapse]='allowCollapse' [allowNot]='allowNot' [allowConvertToRuleset]='allowConvertToRuleset' [allowRuleUpDown]='allowRuleUpDown' [persistValueOnFieldChange]='persistValueOnFieldChange' [ruleName]='ruleName' [rulesetName]='rulesetName' [defaultRuleAttribute]="'name'" [hideButtons]='hideButtons'>
<ng-container *queryInput="let rule; type: 'textarea'; let getDisabledState=getDisabledState; let onChange=onChange">
<textarea class="text-input text-area" [(ngModel)]="rule.value" (ngModelChange)="onChange()" [disabled]=getDisabledState()
placeholder="Custom Textarea"></textarea>
</ng-container>
</ngx-query-builder>
<div class="row panel" style="flex-direction: column">
<div class="row">
<label>Control Valid (Vanilla): {{ queryCtrl.valid }}</label>
Expand All @@ -8,30 +14,45 @@
<label>Level Limit: <input type="number" class="num" value="0" (change)=changeLevelLimit($event)></label>
</div>
<div class="row">
<div>
<label><input type="checkbox" checked (change)=switchModes($event)>Entity Mode</label>
</div>
<div>
<label><input type="checkbox" (change)=switchModes($event)>Entity Mode</label>
</div>
<div>
<label><input type="checkbox" [(ngModel)]='allowRuleset'>Allow Ruleset</label>
</div>
<div>
<label><input type="checkbox" [(ngModel)]='allowCollapse'>Allow Collapse</label>
</div>
<div>
<label><input type="checkbox" [(ngModel)]='persistValueOnFieldChange'>Persist Values on Field Change</label>
</div>
<div>
<label><input type="checkbox" (change)=changeDisabled($event)>Disabled</label>
</div>
<div>
<label><input type="checkbox" [(ngModel)]='allowCollapse'>Allow Collapse</label>
</div>
<div>
<label><input type="checkbox" [(ngModel)]='useCollapsedSummary' (change)='updateCollapsedSummary()'>Collapsed Summary</label>
</div>
<div>
<label><input type="checkbox" [(ngModel)]='allowNot'>Allow Not</label>
</div>
<div>
<label><input type="checkbox" [(ngModel)]='persistValueOnFieldChange'>Persist Values on Field Change</label>
</div>
<div>
<label><input type="checkbox" [(ngModel)]='allowConvertToRuleset'>Allow Convert To Ruleset</label>
</div>
<div>
<label><input type="checkbox" [(ngModel)]='useSavedRulesets' (change)='updateNamedRulesetsUsage()'>Saved Rulesets</label>
</div>
<div>
<label><input type="checkbox" [(ngModel)]='allowRuleUpDown'>Allow Rule Up/Down</label>
</div>
<div>
<label><input type="checkbox" [(ngModel)]='hideButtons'>Hide Buttons</label>
</div>
<div>
<label><input type="checkbox" [(ngModel)]='useExpressionNames' (change)='toggleExpressionNames()'>Expression</label>
</div>
<div>
<label><input type="checkbox" (change)=changeDisabled($event)>Disabled</label>
</div>
</div>

<textarea class="output">{{query | json}}</textarea>
</div>
<ngx-query-builder [formControl]='queryCtrl' [config]='currentConfig' [allowRuleset]='allowRuleset' [allowCollapse]='allowCollapse' [persistValueOnFieldChange]='persistValueOnFieldChange'>
<ng-container *queryInput="let rule; type: 'textarea'; let getDisabledState=getDisabledState">
<textarea class="text-input text-area" [(ngModel)]="rule.value" [disabled]=getDisabledState()
placeholder="Custom Textarea"></textarea>
</ng-container>
</ngx-query-builder>
</div>
</main>
<textarea class="output" [title]="queryTitle" [ngClass]="queryTextState" [(ngModel)]="queryText" (ngModelChange)="updateQuery($event)"></textarea>
</div>
</div>
</main>
30 changes: 18 additions & 12 deletions projects/ngx-query-builder-demo/src/app/app.component.less
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
.main {
padding: 10px;

.content {
display: flex;
gap: 20px;
justify-content: center;
}

ngx-query-builder, .panel {
flex: 1;
}
.content {
display: flex;
flex-direction: column;
gap: 20px;
}
}

.row {
Expand All @@ -32,6 +28,16 @@
height: 100px;
}

.output {
flex: 1;
}
.output {
height: 500px;
resize: both;
overflow: auto;
}

.output.invalid-query {
background-color: #f8d7da;
}

.output.invalid-json {
background-color: #f2bcbc;
}
Loading