# Changelog

All notable changes to this project will be documented in this file.

## [4.0.0] - 2026/3/12

### Highlights

- Refreshed dark theme with deep navy tones for a softer, modern look.
- Cleaner, more consistent API naming across all components, utils, and validators.
- Metronic 8.2.9 support.

### Breaking Changes

Renamed classes, functions, and types for consistency. Use the tables below for migration.

**Components**

| Before | After |
|--------|-------|
| `Datatable` | `DataTable` |
| `ApiClient` | `APIClient` |
| `selectRef()` (initializers) | `resolveRefs()` (utils) |

HTML attribute: `data-ref` → `data-me-ref`

**Utils**

| Before | After |
|--------|-------|
| `escapeHtml` | `escapeHTML` |
| `fetchDataUrl` | `fetchDataURL` |
| `getExtensionFromDataUrl` | `dataURL2Ext` |
| `getType` | `typeOf` |
| `isAsyncFunction` | `isAsyncFn` |
| `isFunction` | `isFn` |
| `numberFormat` | `formatNumber` |
| `urlToMime` | `url2Mime` |

**Initializers**

| Before | After |
|--------|-------|
| `initDatepicker` | `initDateRangePicker` |
| `initDaterangeMenu` | `initDateRangeMenu` |
| `initPasswordToggle` | `initPwdToggle` |
| `initToggleButton` | `initBtnToggle` |

**Validators**

| Before | After |
|--------|-------|
| `isFQDNorIP` | `isFQDNOrIP` |
| `isNumericRange` | `isInRange` |
| `isPhoneNumberJp` | `isPhoneJP` |
| `isUnixUserName` | `isUnixUser` |

### Migration from v3

1. Find & replace renamed imports using the tables above.
2. `data-ref` → `data-me-ref` in HTML.
3. `new Datatable(...)` → `new DataTable(...)`.
4. `selectRef()` moved from `initializers` to `utils` as `resolveRefs()`.

### Improvements

- Dark theme uses deep navy tones instead of pure black.
- Improved readability of read-only Quill editors in dark mode.
- ApexCharts tooltips now properly styled in dark theme.
- Redesigned demo dashboard with stats cards, bar/line/pie charts, and recent orders table.
- New README with hero screenshot, component overview, and quick start guide.
- Fixed typos in internal APIs (`buttoSelector`, `tooltipInsance`, `undefind`).
- ESM module support (`"type": "module"` in package.json).

---

## [3.0.16] - 2025/2/9

- Reduced container padding on tablet screens for wider content area.

## [3.0.15] - 2025/1/31

- Tagify single-select mode improvements: cleaner spacing, better button visibility, transparent tag backgrounds.

## [3.0.14] - 2025/1/7

- Added `setDisabled()` method and direct Tagify instance access via `tagify.api`.

## [3.0.13] - 2024/12/31

- Fixed DataTable loading indicator not showing when locale is set to Japanese.

## [3.0.12] - 2024/12/31

- Fixed DataTable loading indicator not displaying.

## [3.0.11] - 2024/12/27

- Responsive subtables for DataTable.
- Subtable rows can now conditionally hide the expand button.

## [3.0.10] - 2024/12/27

- Added subtable support for DataTable — nest child tables inside expandable rows.

## [3.0.9] - 2024/2/19

- LineChart default line width changed from 3px to 1px.
- Added Docker build and demo environments.
- Fixed LineChart X-axis first tick missing when `yAxisOpposite` is enabled.

## [3.0.8] - 2024/2/16

- LineChart: added `xAxisTickAmount` option for controlling X-axis tick intervals.
- BarChart & LineChart: added `hideOverlappingLabels` to prevent X-axis label overlap.

## [3.0.7] - 2024/2/16

- LineChart: added `gradient`, `lineWidth`, and `yAxisOpposite` options.

## [3.0.6] - 2024/2/13

- Added date range menu component (`initDaterangeMenu`).

## [3.0.5] - 2024/2/12

- DataTable: column visibility toggle with icon button example.

## [3.0.4] - 2024/2/8

- ImageInput: added `name` option for file input attribute.
- Documentation now supports Light, Dark, and System themes.

## [3.0.3] - 2023/12/27

- Added LineChart component.

## [3.0.2] - 2023/11/20

- BarChart: replaced `dataFormatter` with separate `xAxisFormatter` and `yAxisFormatter` options.

## [3.0.1] - 2023/11/20

- Fixed BarChart and PieChart `data` option not being sent to the server.

## [3.0.0] - 2023/11/10

- **Major version**: reorganized all exports under clear namespaces (`components.*`, `utils.*`, `validators.*`).
- All components, utils, and validators grouped under their respective modules.

## [2.1.2] - 2023/11/7

- BarChart and PieChart: added getter for underlying ApexCharts instance.

## [2.1.1] - 2023/11/6

- Added PieChart component.

## [2.1.0] - 2023/10/30

- Added BarChart component.
- API client: renamed hook methods (`requestErrorHook` → `errorHook`, etc.).
- DataTable: renamed `requestErrorHook` → `ajaxErrorHook`.
- Modal: renamed `showBlockUI` → `showLoading`, `hideBlockUI` → `hideLoading`, `enableHideWithEscapeKey` → `enableEscapeKey`.
- Tree: standardized node ID placeholders to `_PARENT_NODE_ID_` and `_CURRENT_NODE_ID_`.
- Moved `isDataUrl()` to `validators/isDataURI()`.

## [2.0.31] - 2023/9/15

- Renamed `isDirectory` validator to `isPath`; fixed subdirectory path validation.

## [2.0.30] - 2023/9/14

- DataTable: auto-initialize dropdown menu buttons in tables.

## [2.0.29] - 2023/9/6

- Fixed toggle button not activating on click.

## [2.0.28] - 2023/9/6

- Added toggle button initialization function.

## [2.0.27] - 2023/8/30

- DataTable: `getRowData()` now supports retrieving all rows.

## [2.0.26] - 2023/8/29

- Updated TypeScript to 5.1.6.
- Renamed `initShowPasswordToggle` → `initPasswordToggle`.
- Renamed form validators: `isIntegersBetween` → `isNumericRange`, `isCidr`/`isIp` → `isIP`, `isHost` → `isFQDN`, `isHostOrIp` → `isFQDNorIP`.
- Added standalone validator functions.

## [2.0.25] - 2023/8/15

- Clipboard component: Metronic 8.1.8 compatibility.

## [2.0.24] - 2023/8/8

- Success dialog now plays a notification sound.

## [2.0.23] - 2023/8/8

- Validation: added `resetForm()` method.

## [2.0.22] - 2023/8/2

- ImageInput: renamed `getImgDataUrl` → `getImage`, `onchange` → `onChange`.
- Fixed hidden element not clearing on image removal.

## [2.0.21] - 2023/7/28

- ImageInput: click preview area to select files.

## [2.0.20] - 2023/7/28

- DataTable: added `firstAjax` option to defer initial data load.
- DataTable: added `locale` option (English / Japanese).

## [2.0.19] - 2023/7/27

- Added `color-scheme` CSS for proper dark theme rendering.
- Faster ImageInput loading with Data URL sources.

## [2.0.18] - 2023/7/23

- ImageInput: added file input element getter.

## [2.0.17] - 2023/7/13

- Increased password toggle icon size.

## [2.0.16] - 2023/6/30

- Fixed DateRangePicker locale option not being applied.

## [2.0.15] - 2023/6/29

- DateRangePicker: added `maxDays` option.

## [2.0.14] - 2023/6/28

- DateRangePicker: added `autoUpdateInput` and `format` options.

## [2.0.13] - 2023/6/2

- Validation: auto-scroll to first invalid field (enabled by default).

## [2.0.12] - 2023/6/1

- Tree: added `refresh()` and `refreshNode()` methods.

## [2.0.11] - 2023/5/30

- Tree: added node rename method.

## [2.0.10] - 2023/5/29

- Fixed Tree node ID incorrect after file creation.

## [2.0.9] - 2023/5/29

- Tree: file creation API now validates response node ID.
- Tree: added file creation hook for custom logic.

## [2.0.8] - 2023/5/26

- Tree: added `ready` event fired after all nodes loaded.

## [2.0.7] - 2023/5/25

- Tree: expanded functionality.

## [2.0.6] - 2023/5/25

- Tree: added node type options.

## [2.0.5] - 2023/3/26

- DataTable: `reload()` now returns a `Promise` — await table redraw completion.

## [2.0.4] - 2023/3/26

- DataTable: added `clear()` method and `api` getter for DataTables API access.

## [2.0.3] - 2023/3/15

- Dialog: success dialog now supports an optional Cancel button.

## [2.0.2] - 2023/3/7

- Validation: added option to stop remaining validators on first failure.

## [2.0.1] - 2023/3/6

- APIClient: added `axios.create` options passthrough.

## [2.0.0] - 2023/2/27

- **Metronic 8.1.7 support**: theme attribute `data-theme` → `data-bs-theme`, CSS variables `--kt-*` → `--bs-*`.

## [1.0.23] - 2023/2/16

- Added Tree component.
- Added `isFunction()` utility.

## [1.0.22] - 2023/1/30

- DataTable: `reload()` default page reset changed to `false`.

## [1.0.21] - 2023/1/30

- DataTable: added page reset parameter to `reload()`.

## [1.0.20] - 2023/1/24

- DataTable: added column reference method.

## [1.0.19] - 2023/1/23

- DataTable: column visibility toggle example.

## [1.0.18] - 2023/1/10

- `initTooltip()` now returns the tooltip instance.

## [1.0.17] - 2023/1/8

- Fixed DataTable error when `ajax` option is a URL string.

## [1.0.16] - 2023/1/8

- Fixed ESM import compatibility.

## [1.0.15] - 2022/11/24

- Dropzone: added file cancel event handler.

## [1.0.14] - 2022/11/21

- Modal: added `isVisible()` method.

## [1.0.13] - 2022/11/18

- ImageInput: default and current images can be set via `data-image-input-default` and `data-image-input-current` attributes.

## [1.0.12] - 2022/11/18

- Windows OS build support.
- Fixed ImageInput hidden element not receiving Data URL.

## [1.0.11] - 2022/11/17

- Added password visibility toggle component.

## [1.0.10] - 2022/11/15

- Tagify: added tag change event (fires on add/remove).

## [1.0.9] - 2022/11/14

- Added Dropzone component.

## [1.0.8] - 2022/11/14

- Excluded docs/ from npm package.

## [1.0.7] - 2022/11/14

- Removed accidentally included node_modules from package.

## [1.0.6] - 2022/11/14

- Added Tagify component.

## [1.0.5] - 2022/10/24

- Added Japanese phone number validator for form validation.

## [1.0.4] - 2022/10/24

- Validation: added per-field valid/invalid event handlers.
- Validation: added immediate field validation method.

## [1.0.3] - 2022/10/24

- Added Japanese phone number form validation.

## [1.0.2] - 2022/10/24

- APIClient: added request error hook.
- DataTable: added request error hook.
- Fixed tooltip double-instantiation.

## [1.0.1] - 2022/10/20

- Removed bundled Bootstrap that conflicted with Metronic's Bootstrap.

## [1.0.0] - 2022/10/17

- Initial release.

[1.0.1]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.0...v1.0.1
[1.0.2]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.1...v1.0.2
[1.0.3]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.2...v1.0.3
[1.0.4]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.3...v1.0.4
[1.0.5]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.4...v1.0.5
[1.0.6]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.5...v1.0.6
[1.0.7]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.6...v1.0.7
[1.0.8]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.7...v1.0.8
[1.0.9]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.8...v1.0.9
[1.0.10]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.9...v1.0.10
[1.0.11]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.10...v1.0.11
[1.0.12]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.11...v1.0.12
[1.0.13]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.12...v1.0.13
[1.0.14]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.13...v1.0.14
[1.0.15]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.14...v1.0.15
[1.0.16]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.15...v1.0.16
[1.0.17]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.16...v1.0.17
[1.0.18]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.17...v1.0.18
[1.0.19]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.18...v1.0.19
[1.0.20]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.19...v1.0.20
[1.0.21]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.20...v1.0.21
[1.0.22]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.21...v1.0.22
[1.0.23]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.22...v1.0.23
[2.0.0]: https://github.com/shumatsumonobu/metronic-extension/compare/v1.0.23...v2.0.0
[2.0.1]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.0...v2.0.1
[2.0.2]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.1...v2.0.2
[2.0.3]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.2...v2.0.3
[2.0.4]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.3...v2.0.4
[2.0.5]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.4...v2.0.5
[2.0.6]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.5...v2.0.6
[2.0.7]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.6...v2.0.7
[2.0.8]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.7...v2.0.8
[2.0.9]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.8...v2.0.9
[2.0.10]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.9...v2.0.10
[2.0.11]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.10...v2.0.11
[2.0.12]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.11...v2.0.12
[2.0.13]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.12...v2.0.13
[2.0.14]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.13...v2.0.14
[2.0.15]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.14...v2.0.15
[2.0.16]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.15...v2.0.16
[2.0.17]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.16...v2.0.17
[2.0.18]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.17...v2.0.18
[2.0.19]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.18...v2.0.19
[2.0.20]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.19...v2.0.20
[2.0.21]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.20...v2.0.21
[2.0.22]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.21...v2.0.22
[2.0.23]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.22...v2.0.23
[2.0.24]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.23...v2.0.24
[2.0.25]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.24...v2.0.25
[2.0.26]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.25...v2.0.26
[2.0.27]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.26...v2.0.27
[2.0.28]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.27...v2.0.28
[2.0.29]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.28...v2.0.29
[2.0.30]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.29...v2.0.30
[2.0.31]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.30...v2.0.31
[2.1.0]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.0.31...v2.1.0
[2.1.1]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.1.0...v2.1.1
[2.1.2]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.1.1...v2.1.2
[3.0.0]: https://github.com/shumatsumonobu/metronic-extension/compare/v2.1.2...v3.0.0
[3.0.1]: https://github.com/shumatsumonobu/metronic-extension/compare/v3.0.0...v3.0.1
[3.0.2]: https://github.com/shumatsumonobu/metronic-extension/compare/v3.0.1...v3.0.2
[3.0.3]: https://github.com/shumatsumonobu/metronic-extension/compare/v3.0.2...v3.0.3
[3.0.4]: https://github.com/shumatsumonobu/metronic-extension/compare/v3.0.3...v3.0.4
[3.0.5]: https://github.com/shumatsumonobu/metronic-extension/compare/v3.0.4...v3.0.5
[3.0.6]: https://github.com/shumatsumonobu/metronic-extension/compare/v3.0.5...v3.0.6
[3.0.7]: https://github.com/shumatsumonobu/metronic-extension/compare/v3.0.6...v3.0.7
[3.0.8]: https://github.com/shumatsumonobu/metronic-extension/compare/v3.0.7...v3.0.8
[3.0.9]: https://github.com/shumatsumonobu/metronic-extension/compare/v3.0.8...v3.0.9
[3.0.10]: https://github.com/shumatsumonobu/metronic-extension/compare/v3.0.9...v3.0.10
[3.0.11]: https://github.com/shumatsumonobu/metronic-extension/compare/v3.0.10...v3.0.11
[3.0.12]: https://github.com/shumatsumonobu/metronic-extension/compare/v3.0.11...v3.0.12
[3.0.13]: https://github.com/shumatsumonobu/metronic-extension/compare/v3.0.12...v3.0.13
[3.0.14]: https://github.com/shumatsumonobu/metronic-extension/compare/v3.0.13...v3.0.14
[3.0.15]: https://github.com/shumatsumonobu/metronic-extension/compare/v3.0.14...v3.0.15
[3.0.16]: https://github.com/shumatsumonobu/metronic-extension/compare/v3.0.15...v3.0.16
