@@ -26,6 +26,90 @@ const compat = new FlatCompat({
2626 allConfig : js . configs . all
2727} ) ;
2828
29+ const schedulerDOMComponentOverrides = [
30+ '_createActionByOption' ,
31+ '_defaultOptionsRules' ,
32+ '_dimensionChanged' ,
33+ '_dispose' ,
34+ '_disposed' ,
35+ '_getDefaultOptions' ,
36+ '_init' ,
37+ '_initTemplates' ,
38+ '_optionChanged' ,
39+ '_setOptionsByReference' ,
40+ '_useTemplates' ,
41+ '_visibilityChanged' ,
42+ ] ;
43+
44+ const schedulerWidgetOverrides = [
45+ '_activeStateUnit' ,
46+ '_clean' ,
47+ '_cleanFocusState' ,
48+ '_eventBindingTarget' ,
49+ '_fireContentReadyAction' ,
50+ '_focusInHandler' ,
51+ '_focusOutHandler' ,
52+ '_focusTarget' ,
53+ '_initMarkup' ,
54+ '_keyboardHandler' ,
55+ '_render' ,
56+ '_renderContent' ,
57+ '_renderFocusState' ,
58+ '_renderFocusTarget' ,
59+ '_supportedKeys' ,
60+ '_toggleVisibility' ,
61+ ] ;
62+
63+ const schedulerCollectionWidgetOverrides = [
64+ '_cleanItemContainer' ,
65+ '_clearDropDownItemsElements' ,
66+ '_createItemByTemplate' ,
67+ '_executeItemRenderAction' ,
68+ '_filteredItems' ,
69+ '_findItemElementByItem' ,
70+ '_focusedItemIndexBeforeRender' ,
71+ '_getItemContent' ,
72+ '_itemClass' ,
73+ '_itemClickHandler' ,
74+ '_itemContainer' ,
75+ '_moveFocus' ,
76+ '_postprocessRenderItem' ,
77+ '_processItemClick' ,
78+ '_refreshActiveDescendant' ,
79+ '_renderDirection' ,
80+ '_renderItem' ,
81+ '_sortedItems' ,
82+ ] ;
83+
84+ const schedulerR1Overrides = [
85+ '_propsInfo' ,
86+ '_value' ,
87+ '_viewComponent' ,
88+ ] ;
89+
90+ const schedulerWorkspaceOverrides = [
91+ '_calculateStartViewDate' ,
92+ '_getAllDayHeight' ,
93+ '_getCellCount' ,
94+ '_getDateRange' ,
95+ '_getDisplayedDate' ,
96+ '_getGroupCount' ,
97+ '_getIntervalDuration' ,
98+ '_isHorizontalGroupedWorkSpace' ,
99+ '_setVisibilityDates' ,
100+ '_updateStateVirtualItems' ,
101+ ] ;
102+
103+ const schedulerMemberAllowlist = [
104+ ...schedulerDOMComponentOverrides ,
105+ ...schedulerWidgetOverrides ,
106+ ...schedulerCollectionWidgetOverrides ,
107+ ...schedulerR1Overrides ,
108+ ...schedulerWorkspaceOverrides ,
109+ ] ;
110+ const schedulerMemberAllowlistRegex =
111+ `^(_|__esModule|${ schedulerMemberAllowlist . join ( '|' ) } )$` ;
112+
29113export default [
30114 {
31115 ignores : [
@@ -556,7 +640,6 @@ export default [
556640 selector : [ 'variable' , 'function' , 'parameter' ] ,
557641 format : null ,
558642 leadingUnderscore : 'forbid' ,
559- // allow only a single underscore identifier `_` to bypass this rule
560643 filter : {
561644 regex : '^_$' ,
562645 match : false ,
@@ -565,13 +648,40 @@ export default [
565648 {
566649 selector : 'memberLike' ,
567650 format : null ,
568- leadingUnderscore : 'allow' ,
651+ leadingUnderscore : 'forbid' ,
652+ filter : {
653+ regex : schedulerMemberAllowlistRegex ,
654+ match : false ,
655+ } ,
569656 } ,
570657 ] ,
571658 'devextreme-custom/no-deferred' : 'error' ,
572659 'devextreme-custom/prefer-switch-true' : [ 'error' , { minBranches : 3 } ] ,
573660 } ,
574661 } ,
662+ // Temporarily allow underscore members in appointments/ (pending refactoring)
663+ {
664+ files : [ 'js/__internal/scheduler/appointments/**/*.ts?(x)' ] ,
665+ rules : {
666+ '@typescript-eslint/naming-convention' : [
667+ 'error' ,
668+ {
669+ selector : [ 'variable' , 'function' , 'parameter' ] ,
670+ format : null ,
671+ leadingUnderscore : 'forbid' ,
672+ filter : {
673+ regex : '^_$' ,
674+ match : false ,
675+ } ,
676+ } ,
677+ {
678+ selector : 'memberLike' ,
679+ format : null ,
680+ leadingUnderscore : 'allow' ,
681+ } ,
682+ ] ,
683+ } ,
684+ } ,
575685 // Allow Deferred in m_* scheduler files only
576686 {
577687 files : [ 'js/__internal/scheduler/**/m_*.ts?(x)' ] ,
0 commit comments