|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## [0.94.0](https://github.com/graycoreio/daffodil/compare/v0.93.1...v0.94.0) (2026-08-05) |
| 4 | + |
| 5 | + |
| 6 | +### ⚠ BREAKING CHANGES |
| 7 | + |
| 8 | +* **customer-order:** `@daffodil/customer-order/driver/magento/2-4-5` -> `@daffodil/customer-order/driver/magento/2.4.5`; `@daffodil/customer-order/driver/magento/2-4-5/testing` -> `@daffodil/customer-order/driver/magento/2.4.5/testing`; `@daffodil/customer-order/driver/magento/2-4-6` -> `@daffodil/customer-order/driver/magento/2.4.6`; `@daffodil/customer-order/driver/magento/2-4-6/testing` -> `@daffodil/customer-order/driver/magento/2.4.6/testing` this aligns with our current conventions |
| 9 | +* **order:** `@daffodil/order/driver/magento/2-4-0` -> `@daffodil/order/driver/magento/2.4.0`; `@daffodil/order/driver/magento/2-4-1` -> `@daffodil/order/driver/magento/2.4.1`; `@daffodil/order/driver/magento/2-4-1/testing` -> `@daffodil/order/driver/magento/2.4.1/testing` |
| 10 | +* **design:** `DaffCalloutComponent` no longer resets the margins of paragraphs nested inside child components within `[daffCalloutBody]`. Previously the first and last `<p>` under the body received `margin-top: 0` and `margin-bottom: 0` at any depth. The reset now applies only to paragraphs that are direct children of `[daffCalloutBody]`. If you relied on the old behavior to flatten spacing in nested content, apply those margins in your own styles. |
| 11 | +* **design:** `@daffodil/design/menu` now exposes the `DaffMenuActivatorDirective` `daffMenuActivator` input as a signal rather than a plain property. Template bindings (`[daffMenuActivator]="..."`) continue to work unchanged. Programmatic reads must invoke the signal: `activator.daffMenuActivator` → `activator.daffMenuActivator()`. `daffMenuActivator` is now read-only and can no longer be assigned imperatively (`activator.daffMenuActivator = menu` is no longer supported). |
| 12 | +* **design:** `DaffToastComponent.toast` is now a required signal input. Read its value by calling it as a function (`toast()`) instead of accessing the property directly, and provide it via `[toast]` binding as it is now required. |
| 13 | +* **design:** `@daffodil/design/text-snippet` now exposes the `DaffTextSnippetComponent` inputs as signals rather than plain properties, and renames the `toggle` output to `toggled`. Template bindings (`[condensed]="..."`, `[html]="..."`) continue to work unchanged. |
| 14 | +* **design:** `@daffodil/design/switch` now exposes the `DaffSwitchComponent` inputs as signals rather than plain properties. Template bindings (`[checked]="..."`, `[labelPosition]="..."`, `[id]="..."`, `[disabled]="..."`) continue to work unchanged. |
| 15 | +* **design:** `@daffodil/design/tabs` now exposes its inputs as signals rather than plain properties. Template bindings (`[initiallySelected]="..."`, `[linkMode]="..."`, `aria-label="..."`, `[id]="..."`, etc.) continue to work unchanged. |
| 16 | +* **design:** `@daffodil/design/tag` now exposes the `DaffTagComponent` `dismissible` input as a signal rather than a plain property. Template bindings (`[dismissible]="..."`) continue to work unchanged. Programmatic reads must invoke the signal: `tag.dismissible` → `tag.dismissible()`. `dismissible` is now read-only and can no longer be assigned imperatively (`tag.dismissible = true` is no longer supported). |
| 17 | +* **design:** `DaffDisableableDirective` now exposes `disabled` as a signal (`model`) rather than a plain property. Template bindings (`[disabled]="..."`) continue to work unchanged. Programmatic reads must invoke the signal: `directive.disabled` → `directive.disabled()`. Imperative writes must use `set`: `directive.disabled = true` → `directive.disabled.set(true)`. |
| 18 | +* **design:** `@daffodil/design/progress-bar` now exposes the `DaffProgressBarComponent` inputs `percentage`, `aria-label`, and `indeterminate` as signals rather than plain properties. Template bindings (`[percentage]="..."`, `[indeterminate]="..."`, etc.) continue to work unchanged. Programmatic reads must invoke the signal: `progressBar.percentage` → `progressBar.percentage()`, `progressBar.ariaLabel` → `progressBar.ariaLabel()`. These inputs are now read-only and can no longer be assigned imperatively (`progressBar.percentage = 50` is no longer supported). |
| 19 | +* **design:** `@daffodil/design/paginator` now exposes the `DaffPaginatorComponent` inputs `numberOfPages`, `currentPage`, `linkMode`, `url`, and `queryParam` as signals rather than plain properties. Template bindings (`[numberOfPages]="..."`, etc.) continue to work unchanged. Programmatic reads must invoke the signal: `paginator.currentPage` → `paginator.currentPage()`, `paginator.numberOfPages` → `paginator.numberOfPages()`, etc. These inputs are now read-only and can no longer be assigned imperatively. |
| 20 | +* **design:** `@daffodil/design/notification` now exposes the `DaffNotificationComponent` `dismissible` input as a signal rather than a plain property. Template bindings (`[dismissible]="..."`) continue to work unchanged. Programmatic reads must invoke the signal: `notification.dismissible` → `notification.dismissible()`. `dismissible` is now read-only and can no longer be assigned imperatively (`notification.dismissible = true` is no longer supported). |
| 21 | +* **design:** `@daffodil/design/list` now exposes the `DaffListItemComponent` `active` input as a signal rather than a plain property. Template bindings (`[active]="..."`) continue to work unchanged. Programmatic reads must invoke the signal: `listItem.active` → `listItem.active()`. `active` is now read-only and can no longer be assigned imperatively (`listItem.active = true` is no longer supported). |
| 22 | +* **design:** `@daffodil/design/image` now exposes the `DaffImageComponent` inputs `src`, `alt`, `width`, and `height` as signals rather than plain properties, and renames the `load` output to `loaded`. Input template bindings (`[src]`, `[alt]`, etc.) continue to work unchanged. Programmatic reads must invoke the signal: `image.src` → `image.src()`, `image.width` → `image.width()`, etc. Inputs are now read-only and can no longer be assigned imperatively (`image.src = '/image/test.jpg'` is no longer supported). |
| 23 | +* **design:** `@daffodil/design/form-field` now exposes all `DaffFormFieldComponent` inputs (`appearance` and `id`) as signals rather than plain properties. Template bindings continue to work, but any programmatic access must go through the signal API: |
| 24 | + |
| 25 | +### Features |
| 26 | + |
| 27 | +* **core:** add injectable reducer factory ([#4631](https://github.com/graycoreio/daffodil/issues/4631)) ([ca3c74a](https://github.com/graycoreio/daffodil/commit/ca3c74ae17ad644251721b6f682942fbc80540f5)) |
| 28 | +* **customer-order:** rename magento driver packages to dot versions ([#4624](https://github.com/graycoreio/daffodil/issues/4624)) ([22288b6](https://github.com/graycoreio/daffodil/commit/22288b6e13e679cd3bc9d1cc9ec5e8bc9e5c850c)) |
| 29 | +* **design:** add configurable menu position and scrollable overflow ([#4541](https://github.com/graycoreio/daffodil/issues/4541)) ([cf4f135](https://github.com/graycoreio/daffodil/commit/cf4f1354c73d7bfed4b3b11d153d2d296dccc5a3)) |
| 30 | +* **design:** convert @daffodil/design/media-gallery to use signals ([#4599](https://github.com/graycoreio/daffodil/issues/4599)) ([0ef5ba2](https://github.com/graycoreio/daffodil/commit/0ef5ba21d02346862c03adfae6fc3c97967bf5d7)) |
| 31 | +* **design:** convert `@daffodil/design/accordion` to use signals ([#4586](https://github.com/graycoreio/daffodil/issues/4586)) ([9923025](https://github.com/graycoreio/daffodil/commit/99230255a485f3fed3646051ab492b6ac1b6ae28)) |
| 32 | +* **design:** convert `@daffodil/design/card` to use signals ([#4587](https://github.com/graycoreio/daffodil/issues/4587)) ([b0b3f7c](https://github.com/graycoreio/daffodil/commit/b0b3f7ce240fc9706097b8f076340a9a20a2ab67)) |
| 33 | +* **design:** convert `@daffodil/design/form-field` to use signals ([#4591](https://github.com/graycoreio/daffodil/issues/4591)) ([f993bf9](https://github.com/graycoreio/daffodil/commit/f993bf9abaf493d04aadc00d7ff8cd91132bbf22)) |
| 34 | +* **design:** convert `@daffodil/design/form` to use signals ([#4588](https://github.com/graycoreio/daffodil/issues/4588)) ([ac4cb20](https://github.com/graycoreio/daffodil/commit/ac4cb20fcb84ef597f005d032dfc31906ff44620)) |
| 35 | +* **design:** convert `@daffodil/design/image` to use signals ([#4597](https://github.com/graycoreio/daffodil/issues/4597)) ([8ae04ce](https://github.com/graycoreio/daffodil/commit/8ae04ce2ba79805e8f06c26049a8965563f84d84)) |
| 36 | +* **design:** convert `@daffodil/design/list` to use signals ([#4598](https://github.com/graycoreio/daffodil/issues/4598)) ([56e3240](https://github.com/graycoreio/daffodil/commit/56e3240de1308c5341af96c800e908d4a943b2d0)) |
| 37 | +* **design:** convert `@daffodil/design/menu` to use signals ([#4611](https://github.com/graycoreio/daffodil/issues/4611)) ([49d0680](https://github.com/graycoreio/daffodil/commit/49d068015fdb60f99dbd4a2cbf930e5b9bc53679)) |
| 38 | +* **design:** convert `@daffodil/design/notification` to use signals ([#4601](https://github.com/graycoreio/daffodil/issues/4601)) ([2605219](https://github.com/graycoreio/daffodil/commit/26052195ee172766d9dcdd799ed56e48d943407e)) |
| 39 | +* **design:** convert `@daffodil/design/paginator` to use signals ([#4602](https://github.com/graycoreio/daffodil/issues/4602)) ([c789c0b](https://github.com/graycoreio/daffodil/commit/c789c0b6ee94617cf8181114868f214bb870f437)) |
| 40 | +* **design:** convert `@daffodil/design/progress-bar` to use signals ([#4603](https://github.com/graycoreio/daffodil/issues/4603)) ([c09aeb1](https://github.com/graycoreio/daffodil/commit/c09aeb13a94597757ca33d05f3fe8839a5093542)) |
| 41 | +* **design:** convert `@daffodil/design/spinner` to use signals ([#4604](https://github.com/graycoreio/daffodil/issues/4604)) ([7ccfba9](https://github.com/graycoreio/daffodil/commit/7ccfba9f9ad66494e7fb5ef4aaf58d48b10f2a89)) |
| 42 | +* **design:** convert `@daffodil/design/switch` to use signals ([#4608](https://github.com/graycoreio/daffodil/issues/4608)) ([889ea85](https://github.com/graycoreio/daffodil/commit/889ea85733d2c09a0e87dc3e5d001daa5e82987a)) |
| 43 | +* **design:** convert `@daffodil/design/tabs` to use signals ([#4607](https://github.com/graycoreio/daffodil/issues/4607)) ([dfcb254](https://github.com/graycoreio/daffodil/commit/dfcb254bf322b0e607fa958f83cc4f8e64f65d93)) |
| 44 | +* **design:** convert `@daffodil/design/tag` to use signals ([#4606](https://github.com/graycoreio/daffodil/issues/4606)) ([f449db4](https://github.com/graycoreio/daffodil/commit/f449db4c8ab5f621251d84c29a27315ed0e76a22)) |
| 45 | +* **design:** convert `@daffodil/design/text-snippet` to use signals ([#4609](https://github.com/graycoreio/daffodil/issues/4609)) ([0680453](https://github.com/graycoreio/daffodil/commit/0680453bf26a57559f5102d2e3411a161c8a423a)) |
| 46 | +* **design:** convert `@daffodil/design/toast` to use signals ([#4610](https://github.com/graycoreio/daffodil/issues/4610)) ([955d46d](https://github.com/graycoreio/daffodil/commit/955d46d533b4fb1853f740c2da1d942417fbf9c0)) |
| 47 | +* **design:** convert `DaffDisableableDirective` to use signals ([#4605](https://github.com/graycoreio/daffodil/issues/4605)) ([abdddbd](https://github.com/graycoreio/daffodil/commit/abdddbd67508e88f92c9e73fcde83aee56e0b3f0)) |
| 48 | +* **design:** support `light` and `dark` colors in callout and hero ([#4632](https://github.com/graycoreio/daffodil/issues/4632)) ([147cbc7](https://github.com/graycoreio/daffodil/commit/147cbc71c01fdd7f33acacfe50299274b6a50c00)) |
| 49 | +* Eslint for Magento driver `exports` in package.json ([#4447](https://github.com/graycoreio/daffodil/issues/4447)) ([b5b14b7](https://github.com/graycoreio/daffodil/commit/b5b14b7ddf38f7908eecb160b2cbcce84318d8c6)) |
| 50 | +* **order:** rename version packages to dot separator ([#4623](https://github.com/graycoreio/daffodil/issues/4623)) ([fa1a17c](https://github.com/graycoreio/daffodil/commit/fa1a17cccb27f28d4ec7b4a29a0f92283c3291d4)) |
| 51 | + |
| 52 | + |
| 53 | +### Bug Fixes |
| 54 | + |
| 55 | +* **design-examples:** bind hero text alignment to selected option value ([#4600](https://github.com/graycoreio/daffodil/issues/4600)) ([fa428b0](https://github.com/graycoreio/daffodil/commit/fa428b0dbcae01824542dd2b4eda39002fc67975)) |
| 56 | +* **design:** break dependency cycle in DaffRovingTabIndexDirective ([#4594](https://github.com/graycoreio/daffodil/issues/4594)) ([840e653](https://github.com/graycoreio/daffodil/commit/840e653d7cc2f137fcf43e5f80523940c21ae11a)) |
| 57 | +* **design:** isolate menu open state to activator ([#4550](https://github.com/graycoreio/daffodil/issues/4550)) ([5560c90](https://github.com/graycoreio/daffodil/commit/5560c90836285ab896015545abf27f5f3d4cf990)) |
| 58 | +* **design:** let the card body fill the card ([#4615](https://github.com/graycoreio/daffodil/issues/4615)) ([49eceaa](https://github.com/graycoreio/daffodil/commit/49eceaa3d5fb3b12e56cdc650401d1f94744d1fb)) |
| 59 | +* **design:** remove duplicate component theme injections ([#4636](https://github.com/graycoreio/daffodil/issues/4636)) ([a145c13](https://github.com/graycoreio/daffodil/commit/a145c13209d798ad67df69c7ef29cc8ba41c142b)) |
| 60 | +* **design:** resolve card image border radius specificity ([#4613](https://github.com/graycoreio/daffodil/issues/4613)) ([98bdd4f](https://github.com/graycoreio/daffodil/commit/98bdd4ff0e07ecdd93f2a77457dce4fe4af3f9da)) |
| 61 | +* **design:** scope callout body paragraph margins to direct children ([#4617](https://github.com/graycoreio/daffodil/issues/4617)) ([fedce39](https://github.com/graycoreio/daffodil/commit/fedce39b8dc7bf3e4928869406d46c30ed54e5f4)) |
| 62 | +* **navigation:** ensure fragment fields on leaf nodes in magento ([#4621](https://github.com/graycoreio/daffodil/issues/4621)) ([732c082](https://github.com/graycoreio/daffodil/commit/732c082d07b63a57687502f47960fc49c9ab6356)) |
| 63 | + |
3 | 64 | ## [0.93.1](https://github.com/graycoreio/daffodil/compare/v0.93.0...v0.93.1) (2026-07-09) |
4 | 65 |
|
5 | 66 |
|
|
0 commit comments