laif-ds
Version:
Design System di Laif con componenti React basati su principi di Atomic Design
490 lines (271 loc) • 14.7 kB
Markdown
# Technical Changelog - Template
All notable technical changes to the laif-ds core will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [laif-ds@0.2.80]
### 🚀 Added
- **AppSelect**: Added `selectableAll` prop (multi-select only, default `true`) — renders a tri-state checkbox toggle to the left of the search bar with four icon states (`Square` / `SquareMinus` / `SquareCheck` / `SquareDot`). Both select-all and deselect-all are scoped to the current search filter, preserving out-of-view selections and `fixed: true` items
- **DatePicker**: Added range dragging — in range mode, click and drag the `from` or `to` handle to extend or shrink the selected interval; the range automatically inverts when handles cross over
### 🔧 Changed
- **AppSelect**: Prevented automatic focus of the search input on popover open via `onOpenAutoFocus` — fixes the mobile soft-keyboard collapsing the visual viewport and pushing the dropdown off-screen
- **DatePicker**: Reworked range click behavior — a third click on a completed range now starts a new range from that day instead of resetting to empty; clicking an end-date earlier than the current `from` resets the start anchor to that day
## [laif-ds@0.2.79]
### 🚀 Added
- **MarkdownRenderer**: Added support for raw HTML rendering via `rehype-raw`, including native `<u>...</u>` underline tags
- **Storybook**: Added dedicated `MarkdownRenderer` stories with underline and full-formatting examples
### 🔧 Changed
- **AppEditor**: Switched external underline markdown format from `++text++` to standard HTML `<u>text</u>` while keeping internal conversion compatibility
- **AppEditor**: Improved editor layout flexibility with `wrpClassName` and updated content container sizing behavior
- **Documentation and Stories**: Updated `AppEditor` docs and stories to reflect `<u>...</u>` underline usage
## [laif-ds@0.2.78]
### 🐛 Fixed
- **AppEditor**: Fixed missing underline text save in the component output
## [laif-ds@0.2.77]
### 🚀 Added
- **AppCard**: Added new card wrapper component with 4 visual variants (default, elevated, outlined, ghost), support for title, description, body, footer, and actions props with optional header and footer borders, and comprehensive Storybook examples and documentation
- **AppForm**: Added column span sizing, configurable icon placement, enhanced search options, and comprehensive TypeScript typing improvements
### 🔧 Changed
- **AppForm**: Updated to adopt new form pattern with improved layout, enhanced JSDoc comments, and better type safety across components
- **General**: Removed "use client" directives and fixed export formatting across components for better compatibility
## [laif-ds@0.2.76]
### 🚀 Added
- **FileUploader**: Added support for archive file types including `zip`, `rar`, `7z`, `tar`, `gz`, and `tgz`
- **TruncatedCell**: Added a new component for displaying truncated text content with tooltip expansion and responsive text handling
- **DataTable**: Added `rowClassName` prop for custom CSS classes based on row data
- **DataTable**: Added `headerClassName` and `cellClassName` support in column meta for custom styling
- **DataTable**: Enhanced utils typing with mapped union for better accessor config type inference
## [laif-ds@0.2.75]
### ⚠️ Breaking changes
- **DataTable**: the cell value type is now defined better so some small compatibility issues my emerge with strict typing in precedent versions
- **general**: Since the introduction of strict EsLint in the repository a big number of components has got updated, some small bugs may emerge
### 🚀 Added
- **Storybook**: Added a dedicated changelog documentation page with markdown rendering and release-oriented navigation
### 🔧 Changed
- **DataTable**: Updated datatable with new double re-render patch and better filter interactions
- **ESLint**: Strengthened linting rules to improve code quality and prevent errors
- **Storybook**: Improved story sorting and dev server startup behavior, and disabled telemetry in the core configuration
- **Tooling**: Added parallel command execution support with animated status feedback for local development utilities
## [laif-ds@0.2.74]
### 🔧 Changed
- **Icon**: Updated the Lucide icon library to the latest version
## [laif-ds@0.2.73]
### 🚀 Added
- **FilePreview**: Added `showThumbnail` to disable thumbnail preview
### 🔧 Changed
- **AppTimePicker and DatePicker**: Added configurable minute and second step support
- **Internal Types**: Improved internal type management
- **Action Menu**: Added support for disabling the action menu trigger
## [laif-ds - Storybook Update]
### 🔧 Changed
- **Map Docs**: Added Storybook documentation explaining which libraries to use when an interactive map is needed in applications
## [laif-ds@0.2.71]
### 🚀 Added
- **AppTimePicker**: Added a new component for selecting hours, minutes and seconds
### 🔧 Changed
- **DatePicker**: Added DateTimePicker functionality through the `showTime` prop
## [laif-ds@0.2.70]
### 🐛 Fixed
- **Textarea**: Fixed long content handling
### 🔧 Changed
- **Kanban**: Improved UI and UX
## [laif-ds@0.2.69]
### 🚀 Added
- **Toaster**: Added a new toaster component based on Sonner
### 🐛 Fixed
- **AppDialog**: Fixed the console warning shown when title or description is not provided
## [laif-ds@0.2.68]
### 🚀 Added
- **AppForm**: Added `datePickerProps` to customize DatePicker options inside the form
## [laif-ds@0.2.67]
### 🚀 Added
- **Calendar**: Added range support
### 🔧 Changed
- **Documentation**: Updated the calendar range documentation
## [laif-ds@0.2.66]
### 🚀 Added
- **AppSelect**: Added `renderValue` for custom selected value rendering
- **AppSelect**: Added `noGroupLabel` to customize the label for ungrouped options
- **AppCheckbox**: Added a new component for quickly building checkbox groups
- **DatePicker and Calendar**: Added `minDate` and `maxDate` constraints for selectable date ranges
### � Changed
- **AppSelect**: Removed `groupBy`
- **AppSelect**: On open, options now scroll to the selected option
- **DatePicker and Calendar**: Reduced the default available year range to ±50 years from today
## [laif-ds@0.2.65]
### 🔧 Changed
- **DataTable**: Added empty / not empty operators in all column filters
### ⚠️ Breaking Changes
- **Upstream Requirement**: Use this version only after updating to the upstream release that fixes `eq_null` and `n_eq_null`
## [laif-ds@0.2.64]
### 🚀 Added
- **Testing and Accessibility**: Added support for `id` and `data-testid` on interactive library components
### 🔧 Changed
- **Interactive Components**: Updated `AppSelect`, `AsyncSelect`, `DatePicker`, `AppRadioGroup`, `InputSelector`, `FileUploader`, `DataTable`, `MessageInput` and `AppStepper`
- **Documentation**: Listed components that already support `id` and `data-testid` through spread props
## [laif-ds@0.2.63]
### 🐛 Fixed
- **DataTable**: Center-aligned the clear button inside the searchbar input
## [laif-ds@0.2.62]
### 🚀 Added
- **AppDialog**: Added the new component for simpler dialog implementation
- **DataTable**: Added support for custom components inside column headers
## [laif-ds@0.2.61]
### 🔧 Changed
- **AppSelect and AsyncSelect**: Improved dropdown placement to open above or below depending on available space
## [laif-ds@0.2.60]
### 🔧 Changed
- **Calendar**: Added search to the month and year selectors
## [laif-ds@0.2.59]
### 🔧 Changed
- **AppStepper**: Exported the required component types
## [laif-ds@0.2.58]
### 🔧 Changed
- **DataTable**: Increased horizontal scrollbar `z-index` to avoid overlap with the last row
- **DataTable**: Added `columnVisibility` support inside `initialState`
## [laif-ds@0.2.57]
### 🐛 Fixed
- **AsyncSelect**: Fixed missing classes in some UI states
- **AsyncSelect**: Fixed coexistence between initial options and fetched options
## [laif-ds@0.2.54]
### 🚀 Added
- **AppTooltip**: Added a tooltip component with variant support aligned with the rest of the library
### 🐛 Fixed
- **FilePreview**: Fixed action menu alignment to the right side of the title area
## [laif-ds@0.2.53]
### 🐛 Fixed
- **UI Alignment**: Fixed focus and label alignment issues
## [laif-ds@0.2.52]
### 🐛 Fixed
- **Button**: Fixed shrink effect
## [laif-ds@0.2.48]
### 🚀 Added
- **AppKanban**: Released the first version of the component
- **AppForm**: Added `async` and `async-multiple` modes
### 🔧 Changed
- **AsyncSelect**: Added debounce support with custom delay support and `initialOptions`
### ⚠️ Breaking Changes
- **AsyncSelect API**: Removed `preload`, `filterFn` and `width`
- **AsyncSelect API**: Renamed `getOptionValue` to `resolveOptionValue`
- **AsyncSelect API**: Renamed `getDisplayValue` to `renderSelectedValue`
- **AsyncSelect API**: Renamed `renderOption` to `renderOptionItems`
## [laif-ds@0.2.47]
### 🔧 Changed
- **AppForm**: Added support for defining input types externally
## [laif-ds@0.2.46]
### 🔧 Changed
- **DatePicker**: Set Italian as the default language while keeping it configurable
- **AppForm**: Added `showSubmitButton`
- **AppForm**: Exported the items interface
## [laif-ds@0.2.45]
### 🔧 Changed
- **Documentation**: Added auto-generated docs for all `laif-ds` components under `/node_modules/laif-ds/dist/agent-docs`
## [laif-ds@0.2.44]
### 🚀 Added
- **Spinner**: Added a new spinner component with size, variant and `className` support
## [laif-ds@0.2.43]
### 🚀 Added
- **DataTable Utilities**: Added simplified utilities for column definition and state management
- **DataTable Utilities**: Added visual indicators for filterable, sortable and searchable columns
- **DataTable Utilities**: Added support for duplicate accessors, display-only columns, calculated columns and automatic unique IDs
## [laif-ds@0.2.42]
### 🐛 Fixed
- **DataTable**: Fixed a rare server mode loading loop caused by table loading state interaction
## [laif-ds@0.2.39]
### 🔧 Changed
- **DatePicker**: Set the default upper year selector limit to 100 years in the future
## [laif-ds@0.2.38]
### 🚀 Added
- **DatePicker**: Added `locale`, `initialCalendarMonth` and `customCalendarProps`
### 🔧 Changed
- **DatePicker**: The calendar now opens on the selected day by default
- **DatePicker**: Added default month and year selectors
## [laif-ds@0.2.37]
### 🚀 Added
- **Input**: Added `showValidMessage`, `showValidityMessage` and `validityI18n`
- **Storybook**: Added a showcase story for validation behavior
## [laif-ds@0.2.36]
### 🚀 Added
- **Badge**: Added `iconLeft`, `iconRight` and `disabled`
- **Badge**: Added new variants including `success` and `warning`
### ⚠️ Breaking Changes
- **CSS Variables**: To use `success` and `warning` variants immediately, update the required `shadcn.css` variables in the template or upstream them first
## [laif-ds@0.2.35]
### 🚀 Added
- **Input**: Added `startContent` and `endContent` support for custom React nodes
- **Input**: Added native validation support through the HTML5 validation API
- **Input**: Added `errorMessage`, internal validation state and ARIA improvements
## [laif-ds@0.2.34]
### 🚀 Added
- **Button**: Added the `outline-destructive` variant and improved IntelliSense for variants and sizes
### 🔧 Changed
- **Checkbox**: Updated cursor behavior to `pointer` when enabled
- **Checkbox**: Updated border color for consistency with the radio button and improved contrast
## [laif-ds@0.2.32]
### 🚀 Added
- **AppRadioGroup**: Added a new radio group component with icon, layout, orientation, required indicator, disabled option and TypeScript support
- **TextArea**: Added `wrpClassName`
### 🔧 Changed
- **RadioGroup**: Deprecated in favor of `AppRadioGroup`
- **Storybook**: Deprecated components are now visible in Storybook
## [laif-ds@0.2.30]
### 🐛 Fixed
- **Checkbox**: Fixed incorrect checkmark color
## [laif-ds@0.2.28 / 0.2.29]
### 🔧 Changed
- **Documentation**: Updated documentation only, with no component logic changes
## [laif-ds@0.2.26]
### 🔧 Changed
- **Documentation**: Updated docs pages with no component logic changes
## [laif-ds@0.2.24]
### 🚀 Added
- **Confirmer**: Added a `destructive` variant for delete flows
- **Button**: Added new ghost variants
- **AppSelect**: Added `isSingleSelectClearable` for single-select clearing
### 🐛 Fixed
- **AppSelect**: Fixed HTML label rendering
### 🔧 Changed
- **DataTable**: Refactored the component and published updated documentation
## [laif-ds@0.2.21]
### 🚀 Added
- **Stepper**: Added `Stepper` and `AppStepper`
## [laif-ds@0.2.15]
### 🐛 Fixed
- **AppSelect**: Fixed options overflow when used inside `Dialog`
## [laif-ds@0.2.14]
### 🚀 Added
- **File Preview Modal**: Added `previewFileModal` utility for modal previews
- **File Preview Modal**: Added `FilePreviewer` integration at layout level
## [laif-ds@0.2.13]
### 🐛 Fixed
- **AppSelect**: Fixed options overflow when used inside `Drawer` or `Sheet`
## [laif-ds@0.2.12]
### ⚠️ Breaking Changes
- **Select Components**: Deprecated `AppMultipleSelectDropdown` and `MultipleSelector` in favor of `AppSelect`
### 🔧 Changed
- **AppSelect**: Documented supported value types and main props
## [laif-ds@0.2.8]
### 🚀 Added
- **FileUploader**: Added `maxTotalSize` and `maxFiles`
## [laif-ds@0.2.6]
### 🚀 Added
- **File Management**: Added `FileUploader` and `FilePreview`
## [laif-ds@0.2.5]
### 🔧 Changed
- **MultipleSelector**: Updated default `placeholder` to `Cerca...`
- **MultipleSelector**: Set `hidePlaceholderWhenSelected` default to `true`
## [laif-ds@0.2.4]
### ⚠️ Breaking Changes
- **AppMultipleSelectDropdown**: Removed `cancelButtonLabel`
- **AppMultipleSelectDropdown**: Renamed `filterable` to `searchable`
- **AppMultipleSelectDropdown**: Renamed `filterPlaceholder` to `searchPlaceholder`
### 🔧 Changed
- **AppMultipleSelectDropdown**: Enabled `searchable` by default
---
## Version History
For older versions and detailed commit history, please refer to the Git repository history.
## Contributing
When adding new features or making changes:
1. Update this changelog with your changes
2. Follow the format: Added/Changed/Fixed/Breaking Changes
3. Include migration instructions for breaking changes
4. Update version number in `version.laif-template.txt`