@@ -42,7 +42,7 @@ import {
42
42
UserAttributeRule
43
43
} from 'app/common/GranularAccessClause' ;
44
44
import { getDefaultForType , isHiddenCol } from 'app/common/gristTypes' ;
45
- import { isNonNullish , unwrap } from 'app/common/gutil' ;
45
+ import { isNonNullish , localeCompare , unwrap } from 'app/common/gutil' ;
46
46
import { EmptyRecordView , InfoView , RecordView } from 'app/common/RecordView' ;
47
47
import {
48
48
getPredicateFormulaProperties ,
@@ -129,6 +129,7 @@ export class AccessRules extends Disposable {
129
129
130
130
// Array of all per-table rules.
131
131
private _tableRules = this . autoDispose ( obsArray < TableRules > ( ) ) ;
132
+ private _sortedTableRules : Computed < TableRules [ ] > ;
132
133
133
134
// The default rule set for the document (for "*:*").
134
135
private _docDefaultRuleSet = Observable . create < DefaultObsRuleSet | null > ( this , null ) ;
@@ -184,6 +185,12 @@ export class AccessRules extends Disposable {
184
185
) ;
185
186
} ) ;
186
187
188
+ this . _sortedTableRules = Computed . create ( this , ( use ) =>
189
+ [ ...use ( this . _tableRules ) ] . sort ( ( a , b ) =>
190
+ localeCompare ( a . tableId , b . tableId )
191
+ )
192
+ ) ;
193
+
187
194
this . _savingEnabled = Computed . create ( this , this . _ruleStatus , ( use , s ) =>
188
195
( s === RuleStatus . ChangedValid ) ) ;
189
196
@@ -253,7 +260,6 @@ export class AccessRules extends Disposable {
253
260
this . _tableRules . set (
254
261
rules . getAllTableIds ( )
255
262
. filter ( tableId => ( tableId !== SPECIAL_RULES_TABLE_ID ) )
256
- . sort ( ( a , b ) => a . localeCompare ( b ) )
257
263
. map ( tableId => TableRules . create ( this . _tableRules ,
258
264
tableId , this , rules . getAllColumnRuleSets ( tableId ) , rules . getTableDefaultRuleSet ( tableId ) ) )
259
265
) ;
@@ -480,7 +486,7 @@ export class AccessRules extends Disposable {
480
486
) ,
481
487
) ,
482
488
) ,
483
- dom . forEach ( this . _tableRules , ( tableRules ) => tableRules . buildDom ( ) ) ,
489
+ dom . forEach ( this . _sortedTableRules , ( tableRules ) => tableRules . buildDom ( ) ) ,
484
490
cssSection (
485
491
cssSectionHeading ( t ( "Default Rules" ) , testId ( 'rule-table-header' ) ) ,
486
492
dom . maybe ( this . _specialRulesWithDefault , tableRules => cssSeedRule (
0 commit comments