Skip to content
Merged
Changes from 2 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
d2d91d7
Scheduler - Add ESLint naming-convention rule to forbid underscore-pr…
aleksei-semikozov Apr 2, 2026
d3a8e3c
Scheduler - Add legacy members to naming-convention allowlist
aleksei-semikozov Apr 2, 2026
4b12af6
Scheduler - Replace underscore-prefixed with private/protected modifiers
aleksei-semikozov Apr 2, 2026
d47eb48
Scheduler - Remove renamed methods from ESLint allowlist
aleksei-semikozov Apr 2, 2026
0e98856
Scheduler - Extract ESLint allowlist to separate file
aleksei-semikozov Apr 2, 2026
35f9a1e
Scheduler - Replace underscore-prefixed members in shaders with modif…
aleksei-semikozov Apr 2, 2026
ef97b50
Scheduler - Restore _shader to allowlist (used in m_work_space.ts)
aleksei-semikozov Apr 2, 2026
8d9569b
Scheduler - Replace _calculateCellIndex with protected calculateCellI…
aleksei-semikozov Apr 2, 2026
e782ffe
Scheduler - Replace underscore-prefixed in m_position_helper and m_form
aleksei-semikozov Apr 2, 2026
597938c
Scheduler - Replace underscore-prefixed members in header
aleksei-semikozov Apr 2, 2026
974db2b
Scheduler - Replace underscore-prefixed in calendar, popup, r1 compon…
aleksei-semikozov Apr 2, 2026
935aa84
Scheduler - Group legacy allowlist members by source file
aleksei-semikozov Apr 2, 2026
0545895
Scheduler - Replace internal underscore-prefixed members in m_schedul…
aleksei-semikozov Apr 2, 2026
38bf73f
Scheduler - Fix external usages of renamed members
aleksei-semikozov Apr 2, 2026
947e2b8
Scheduler - Revert _dataSource rename (inherited from Widget) and fix…
aleksei-semikozov Apr 2, 2026
28e5bff
Scheduler - Move _dataSource, _dataSourceLoadedCallback, _createActio…
aleksei-semikozov Apr 2, 2026
03256f0
Scheduler - Move _options to Widget overrides
aleksei-semikozov Apr 2, 2026
f53a6f0
Scheduler - Fix remaining _dataSourceChangedHandler reference
aleksei-semikozov Apr 2, 2026
67a96e2
Scheduler - Revert header, calendar, popup, r1, m_scheduler.ts rename…
aleksei-semikozov Apr 3, 2026
36b1564
Scheduler - Replace underscore-prefixed members in header
aleksei-semikozov Apr 3, 2026
b106c15
Scheduler - Replace underscore-prefixed members in m_calendar
aleksei-semikozov Apr 3, 2026
69dfa98
Scheduler - Replace underscore-prefixed in popup/form
aleksei-semikozov Apr 3, 2026
d159e26
Scheduler - Replace underscore-prefixed in r1 components
aleksei-semikozov Apr 3, 2026
03ce643
Scheduler - Rename internal m_scheduler members, move Widget-inherite…
aleksei-semikozov Apr 3, 2026
a4f0129
Scheduler - Add TODO comments to legacy allowlist members
aleksei-semikozov Apr 3, 2026
09915c4
Scheduler - Merge workspace overrides into legacy, group by source file
aleksei-semikozov Apr 3, 2026
2fba25b
Scheduler - Add protected modifier to renamed overrides
aleksei-semikozov Apr 3, 2026
857e020
Scheduler - Revert _getIntervalDuration rename, add to allowlist with…
aleksei-semikozov Apr 3, 2026
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
189 changes: 187 additions & 2 deletions packages/devextreme/eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,165 @@ const compat = new FlatCompat({
allConfig: js.configs.all
});

const schedulerDOMComponentOverrides = [
'_createActionByOption',
'_defaultOptionsRules',
'_dimensionChanged',
'_dispose',
'_disposed',
'_getDefaultOptions',
'_init',
'_initTemplates',
'_optionChanged',
'_setOptionsByReference',
'_useTemplates',
'_visibilityChanged',
];

const schedulerWidgetOverrides = [
'_activeStateUnit',
'_clean',
'_cleanFocusState',
'_eventBindingTarget',
'_fireContentReadyAction',
'_focusInHandler',
'_focusOutHandler',
'_focusTarget',
'_initMarkup',
'_keyboardHandler',
'_render',
'_renderContent',
'_renderFocusState',
'_renderFocusTarget',
'_supportedKeys',
'_toggleVisibility',
];

const schedulerCollectionWidgetOverrides = [
'_cleanItemContainer',
'_clearDropDownItemsElements',
'_createItemByTemplate',
'_executeItemRenderAction',
'_filteredItems',
'_findItemElementByItem',
'_focusedItemIndexBeforeRender',
'_getItemContent',
'_itemClass',
'_itemClickHandler',
'_itemContainer',
'_moveFocus',
'_postprocessRenderItem',
'_processItemClick',
'_refreshActiveDescendant',
'_renderDirection',
'_renderItem',
'_sortedItems',
];

const schedulerR1Overrides = [
'_propsInfo',
'_value',
'_viewComponent',
];

const schedulerWorkspaceOverrides = [
'_calculateStartViewDate',
'_getAllDayHeight',
'_getCellCount',
'_getDateRange',
'_getDisplayedDate',
'_getGroupCount',
'_getIntervalDuration',
'_isHorizontalGroupedWorkSpace',
'_setVisibilityDates',
'_updateStateVirtualItems',
];

const schedulerLegacyMembers = [
'_$allDayIndicator',
'_$allDayPanel',
'_$bottomShader',
'_$container',
'_$dateTable',
'_$dateTableScrollableContent',
'_$flexContainer',
'_$groupTable',
'_$headerPanel',
'_$headerPanelContainer',
'_$mainGroup',
'_$recurrenceGroup',
'_$shader',
'_$thead',
'_$topShader',
'_addEvent',
'_appointmentTooltipOffset',
'_appointments',
'_calculateCellIndex',
'_callEvent',
'_compactAppointmentsHelper',
'_createAction',
'_createEventArgs',
'_createEventMap',
'_createOverlayContent',
'_createScrollable',
'_createToolbarConfig',
'_dataAccessors',
'_dataSource',
'_dataSourceChangedHandler',
'_dataSourceOptions',
'_dateTableScrollable',
'_draggingMode',
'_dxForm',
'_getCalendarOptionUpdater',
'_getCalendarOptions',
'_getCaption',
'_getCaptionOptions',
'_getDragBehavior',
'_getMaxAllowedVerticalPosition',
'_getNextDate',
'_groupPanelItems',
'_groupedStrategy',
'_ignorePreventScrollEventsDeprecation',
'_isAppointmentBeingUpdated',
'_isMobileLayout',
'_isScrollOptionsObject',
'_layoutManager',
'_options',
'_parseItem',
'_popup',
'_readOnly',
'_recurrenceForm',
'_renderAppointmentTemplate',
'_renderCalendar',
'_renderGrid',
'_renderOverlay',
'_renderToolbar',
'_shader',
'_showCalendar',
'_sidebarScrollable',
'_textCache',
'_timeZoneCalculator',
'_updateCalendarValueAndCurrentDate',
'_updateCurrentDate',
'_updateCurrentView',
'_updateDateByDirection',
'_useShortDateFormat',
'_weekDayButtons',
'_workSpace',
'_wrapperClassExternal',
];

const schedulerMemberAllowlist = [
...schedulerDOMComponentOverrides,
...schedulerWidgetOverrides,
...schedulerCollectionWidgetOverrides,
...schedulerR1Overrides,
...schedulerWorkspaceOverrides,
...schedulerLegacyMembers,
];
const schedulerMemberAllowlistRegex =
`^(_|__esModule|${schedulerMemberAllowlist.map(s => s.replace(/\$/g, '\\$')).join('|')})$`;
Comment thread
aleksei-semikozov marked this conversation as resolved.
Outdated

export default [
{
ignores: [
Expand Down Expand Up @@ -556,7 +715,6 @@ export default [
selector: ['variable', 'function', 'parameter'],
format: null,
leadingUnderscore: 'forbid',
// allow only a single underscore identifier `_` to bypass this rule
filter: {
regex: '^_$',
match: false,
Expand All @@ -565,13 +723,40 @@ export default [
{
selector: 'memberLike',
format: null,
leadingUnderscore: 'allow',
leadingUnderscore: 'forbid',
filter: {
regex: schedulerMemberAllowlistRegex,
match: false,
},
},
Comment thread
aleksei-semikozov marked this conversation as resolved.
],
'devextreme-custom/no-deferred': 'error',
'devextreme-custom/prefer-switch-true': ['error', { minBranches: 3 }],
},
},
// Temporarily allow underscore members in appointments/ (pending refactoring)
{
files: ['js/__internal/scheduler/appointments/**/*.ts?(x)'],
rules: {
'@typescript-eslint/naming-convention': [
'error',
{
selector: ['variable', 'function', 'parameter'],
format: null,
leadingUnderscore: 'forbid',
filter: {
regex: '^_$',
match: false,
},
},
{
selector: 'memberLike',
format: null,
leadingUnderscore: 'allow',
},
],
Comment thread
aleksei-semikozov marked this conversation as resolved.
},
},
// Allow Deferred in m_* scheduler files only
{
files: ['js/__internal/scheduler/**/m_*.ts?(x)'],
Expand Down
Loading