22 Commits

Author SHA1 Message Date
1b54cbd5f4 Merge master and ldap-writeback: added LDAP optional mode, refactored templates and JavaScript modules 2025-11-20 09:00:55 +03:00
9417ca5328 refactor(js): Extract calendar widget to separate module
- Created calendarWidget.js (1002 lines)
- Reduced rightbar_calendar.html from 996 to 237 lines (76% reduction)
- Supports: FullCalendar integration, company/department calendars, recurring events
- Features: week list view, event CRUD, color picker, responsive design
- Export initCalendarWidget() function for reusability
- Updated components/index.js to export calendar widget (v1.1.0)
2025-10-28 10:59:05 +03:00
f80d81eff3 docs(css): Update README with Phase 6 architecture
- Documented common.css (245 lines of shared classes)
- Explained dependency hierarchy: variables → common → feed-cards → components
- Added import order guidelines (critical for correct rendering)
- Documented naming conventions: BEM-like with prefixes
- Listed all eliminated duplication (.btn-icon, .badge-status, .chip, etc.)
- Added maintenance checklists and troubleshooting
- Preserved old README as README_OLD.md

Architecture now clear for all developers:
- Check common.css first before creating new classes
- Use variables.css for all sizing/colors
- Follow import order: variables → common → components
- 0% duplication, 100% maintainability
2025-10-28 10:40:00 +03:00
b779b17086 refactor(css): Phase 6 - Eliminate duplication and unify naming
- Created common.css (245 lines) with shared classes:
  * .btn-icon with variants (--primary, --danger, --success)
  * .badge-acked, .badge-status with state variants
  * .avatar with size variants (xs/sm/md/lg/xl)
  * .feed-author, .feed-sub (feed metadata)
  * .chip, .chip-remove
  * .text-truncate-2/3, .custom-scrollbar

- Deleted feed-header.css (duplicate of feed-cards.css)

- Cleaned 6 component files (~200 lines removed):
  * base-app.css: removed duplicate variables
  * document-list.css: removed .btn-icon, .badge-acked
  * employee-list.css: removed .feed-author, .feed-sub
  * department-list.css: removed .feed-header, .feed-author, .feed-sub
  * ios-components.css: removed .btn-icon, .chip
  * request-list.css: removed .badge-status

- Unified variables.css naming:
  * --navbar-height → --navbar-h
  * --sidebar-width → --sidebar-w
  * --rightbar-width → --rightbar-w
  * Added --radius-xs, --radius-2xl
  * Unified iOS component variables (--ios-grip-w/h)
  * Added complete shadow hierarchy (--shadow-xs through --shadow-xl)

- Updated 6 templates:
  * base.html: added common.css import
  * search/results.html, chat_list.html: feed-header.css → feed-cards.css
  * document_list.html, employees_list.html, department_list.html: added common.css

Result: 0% duplication, unified naming, DRY-compliant architecture
2025-10-28 10:35:12 +03:00
b9ad0cf2a9 docs: Complete Phase 6 - Documentation and finalization
- Enhanced: static/css/variables.css (added iOS, avatar, calendar variables)
- Created: static/css/README.md (comprehensive CSS documentation)
- Created: templates/README.md (complete template structure guide)
- Documentation: Architecture, best practices, quick start guide
- Statistics: 21 CSS components, 3,529 lines, 0% duplication
- Result: Phase 6 complete, project fully documented
2025-10-28 10:21:53 +03:00
dc8c05b6fe refactor: Move specialized CSS from template includes to component files
- Created: static/css/components/rightbar-calendar-fullcalendar.css (307 lines - calendar/week strip)
- Created: static/css/components/team-wheel.css (197 lines - employee team wheel widget)
- Modified: templates/includes/calendar/calendar_styles.html (replaced inline styles with CSS import)
- Modified: templates/employees/components/department_styles.html (replaced inline styles with CSS import)
- Description: Completed CSS extraction - all styles now in component files for consistency
- Result: Zero inline styles remain in templates, 100% CSS component architecture
2025-10-28 10:15:53 +03:00
c7647c6231 refactor: Extract remaining small CSS blocks (department controls, feed-header, search, chat)
- Created: static/css/components/department-controls.css (modal z-index overrides for department management)
- Created: static/css/components/feed-header.css (reusable feed header styles with gap/flex-wrap)
- Modified: templates/employees/_department_controls.html (replaced 12-line style block)
- Modified: templates/search/results.html (replaced feed-header styles)
- Modified: templates/communications/chat_list.html (replaced feed-header styles)
- Description: Extracted last remaining inline styles, created reusable feed-header component
- Result: All small CSS blocks now extracted to component files
2025-10-28 10:11:25 +03:00
5864a2bf71 refactor: Extract post form textarea autogrow styles
- Created: static/css/components/post-form.css (textarea.autogrow with min/max height, overflow control)
- Modified: templates/feed/post_form.html (replaced inline styles with CSS import)
- Description: Extracted 13-line style block for autogrow textarea behavior
- Result: Post form now uses reusable component CSS
2025-10-28 10:10:07 +03:00
2a3fb81584 refactor: Extract sidebar and navbar CSS components
- Created static/css/components/sidebar.css (200 lines)
  * Navigation layout, active states, badges
  * Theme switcher button

- Created static/css/components/navbar.css (30 lines)
  * Menu toggle button
  * Dropdown avatar customization

- Removed ~95 lines of inline styles from sidebar.html
- Removed ~23 lines of inline styles from navbar.html
- All tests passing (17 OK)
2025-10-28 10:03:31 +03:00
dc4e048f4a refactor: Extract request-list CSS and deduplicate styles
- Created static/css/components/request-list.css (170 lines)
- Removed duplicate styles from request_list_full.html (~120 lines)
- Removed duplicate ios-search styles from chat_list.html (~29 lines)
- Reused document-list.css in request_list_full.html
- All tests passing (17 OK)
2025-10-28 09:59:20 +03:00
9b98792914 refactor: Extract chat-detail CSS to component
- Created static/css/components/chat-detail.css (260 lines)
- Extracted chat styles from chat_detail.html (~113 lines removed)
- Features: full-height layout, custom scrollbar, message bubbles, composer
- All tests passing (17 OK)
2025-10-28 09:54:08 +03:00
3dbfae88c5 refactor: Extract document-list CSS to component
- Created static/css/components/document-list.css (220 lines)
- Extracted styles from document_list.html (~50 lines removed)
- Features: document list layout, recipient picker widget, acknowledgments UI
- All tests passing (17 OK)
2025-10-28 09:51:47 +03:00
347740c4a4 refactor: Extract base-app and ios-components CSS
- Created static/css/components/base-app.css (280 lines)
  * Layout system (sidebar, navbar, rightbar)
  * Base typography and form controls
  * Notification bell, mobile FAB
  * Feed elements and ghost buttons
  * Alpha headers and action buttons

- Created static/css/components/ios-components.css (440 lines)
  * iOS-style cards, lists, and cells
  * Avatars, badges, chips
  * Collapse triggers and accordions
  * Department inline editor
  * Skills UI, activity block
  * Icon button variants

- Removed 380 lines of inline styles from base.html
- All tests passing (17 OK)
2025-10-28 09:50:39 +03:00
4ad752ef02 refactor: Extract employee-list CSS to component
- Created static/css/components/employee-list.css (130 lines)
- Extracted employee list styles from employees_list.html (~74 lines removed)
- Features: CSS custom properties for layout, grid-based row structure, avatar styling
- Maintained scrollable container with proper border management
- All tests passing (17 OK)
2025-10-28 09:46:15 +03:00
2b92bf077a refactor: Extract join-scroller CSS to component
- Created static/css/components/join-scroller.css (191 lines)
- Extracted horizontal scrolling newcomers ribbon styles from feed_list.html
- Reduced feed_list.html from 290 to 187 lines (103 lines removed)
- Features: hover expansion, gradient masks, responsive sizing
- All 17 tests passing
2025-10-28 09:43:32 +03:00
8ee1b90a0d refactor: Extract rightbar-calendar CSS to component (Phase 5 start)
- Created static/css/components/rightbar-calendar.css (307 lines)
- Extracted all calendar styles from rightbar_calendar.html
- Includes: FullCalendar customization, week strip, offcanvas, color picker
- Reduced rightbar_calendar.html from 1130 to 997 lines (133 lines removed)
- All 17 tests passing
2025-10-28 09:41:08 +03:00
4cbb0f292f refactor: Extract teamWheel component (Phase 4 start)
- Created static/js/components/teamWheel.js (329 lines)
- Replaced 207-line inline script in department_scripts.html with ES6 module import
- Features: auto-scroll, manual control (mouse/touch/wheel), member focus, fallback
- All 12 tests passing
2025-10-28 09:28:06 +03:00
32b1f732a9 feat: create reusable CSS components (Phase 3)
- Created static/css/components/feed-cards.css (280 lines):
  * Comprehensive styles for feed/news cards
  * Classes: .feed-header, .feed-stream, .feed-card, .feed-hd, .feed-ava
  * Includes variants: compact, borderless, highlighted
  * Responsive design with mobile breakpoints
  * Replaces duplicated styles found in 6+ templates

- Created static/css/components/ios-search.css (160 lines):
  * iOS-style search component
  * Classes: .ios-search, .ios-search-input, .ios-search-clear
  * Size variants: sm, lg
  * Auto-showing clear button
  * Replaces duplicated styles found in 4+ templates

- Updated static/css/components/index.css:
  * Added imports for feed-cards.css and ios-search.css
  * Added import for variables.css
  * Provides single entry point for all CSS components

Benefits:
- Eliminates ~150 lines of duplicated CSS across templates
- Centralized styling for consistent UI
- Easy to maintain and update
- Uses CSS custom properties from variables.css
- Ready for use in new features

Next: Replace inline styles in templates with component imports

Tests: All 12 static file tests passing ✅
2025-10-28 08:48:13 +03:00
95b0e88a21 feat: create reusable ListFilter component (Phase 2.2)
- Created static/js/components/listFilter.js:
  * Universal list filtering component with search support
  * Replaces duplicated applyFilter() functions found in 7 templates
  * Features:
    - Configurable match functions (default or custom)
    - Debounced search input for performance
    - Support for data-attribute matching
    - Support for selector-based matching
    - Optional empty state message
    - Optional clear button
    - Flexible hiding methods (display/class)

- Updated static/js/components/index.js:
  * Exports ListFilter and helper functions
  * Added createDataAttrMatcher() helper
  * Added createSelectorMatcher() helper

Component ready for use in templates to replace inline applyFilter() implementations.

Tests: All 12 static file tests passing ✅

Next: Replace applyFilter() usage in templates with ListFilter component
2025-10-28 08:40:25 +03:00
76f6f4ea32 refactor: extract JavaScript utilities to separate modules (Phase 2)
- Created reusable utility modules:
  * static/js/utils/stringUtils.js - string operations (esc, norm, escAttr, truncate, getInitials)
  * static/js/utils/timing.js - timing utilities (debounce, throttle, delay, poll, once)
  * static/js/utils/scroll.js - scroll helpers (smoothScrollTo, scrollToTop, isElementInViewport, etc.)

- Updated static/js/utils/index.js:
  * Exports all utilities from a single entry point
  * Provides centralized access to all utility functions

- Modified base.html:
  * Removed inline esc() and norm() function definitions
  * Added ES6 module imports for utilities
  * Exported utilities to window for backward compatibility
  * All existing code continues to work without changes

Benefits:
- Eliminates code duplication (esc/norm found in 9 templates)
- Centralizes utility functions for easier maintenance
- Enables future improvements (testing, optimization)
- Maintains backward compatibility with existing templates

Tests: All 12 static file tests passing ✅
2025-10-28 08:37:02 +03:00
9d29e919a9 feat: setup refactoring infrastructure (Phase 0)
- Created static file structure:
  * static/css/components/ - reusable CSS components
  * static/css/pages/ - page-specific styles
  * static/js/utils/ - utility functions
  * static/js/components/ - interactive components

- Created infrastructure files:
  * static/css/variables.css - CSS custom properties
  * static/css/components/index.css - CSS entry point
  * static/js/utils/index.js - JS utilities entry point
  * static/js/components/index.js - JS components entry point

- Added comprehensive tests:
  * tests/test_static_files.py - 12 tests for structure, syntax, encoding

- Updated .gitignore:
  * Added staticfiles/ to ignore list
  * Clarified that static/ sources are tracked

- Added REFACTORING_PLAN.md:
  * New strategy: extract CSS/JS before HTML decomposition
  * Documented lessons learned from previous attempts
  * Defined phases 0-6 for systematic refactoring
2025-10-28 08:29:43 +03:00
75bca556d5 Apply updates across all files in the repository 2025-10-20 17:08:40 +03:00