All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Note: You may need to force-compile your application when upgrading Doggo.
Unreleased
0.15.0 - 2026-09-11
Added
- Publish the JavaScript hooks as ES modules, on npm as
@woylie/doggoand in the Hex package underassets/js. See the README for both install routes. - Add hooks and keyboard support for the
accordion,combobox,menu,menu_bar,menu_button,modal,alert_dialog,split_pane,tabs,toolbar,action_bar,tooltip,treeandtree_itemcomponents. - Add a
labelledbyattribute to all components that take alabel.
Alert component
- Add a
:closeslot for the content of the close button. - Add an
:actionslot.
Callout component
- Add an
:actionslot.
Carousel component
- Add a
loopattribute, defaulttrue. Withloop={false}, the first and last slide don't wrap around. - Add a
rotation_interval_msattribute, default5000. - Add
HomeandEndkey handlers to the pagination, which move to the first and last slide.
Combobox component
- Support options written as keyword lists and maps, with
descriptionanddisabledkeys, and support option groups and:hrseparators. - Add a
display_valueattribute to set the text shown for the selected value. - Add an
on_searchattribute to filter the options on the server instead of in the browser. - Add
free_textandfree_text_labelattributes, which let the user submit what they typed when it is not among the options. - Add a
clearableattribute, which renders a button that unselects, and aclear_labelattribute for its accessible name. - Add
:clearand:toggleslots for the content of the two buttons. - Add an example stylesheet.
Field component
- Add an
:extra_typesbuilder option for rendering a type with your own component. - Add a
hidden_inputattribute to omit the hidden input that submitsfalsefor an unchecked checkbox. - Support nested options in the
checkbox-groupandradio-grouptypes. - Support options written as keyword lists, and support option descriptions.
Split pane component
- Make the panes resizable by dragging the separator or by moving it with the keyboard.
Tabs component
- Add an
orientationattribute.
Tree item component
- Add
expandedandselectedattributes.
Changed
- Require a
labelor alabelledbyon thebottom_navigation,breadcrumb,steps,tab_navigationandvertical_navcomponents, and remove the default labels ofbreadcrumb,stepsandtab_navigation. - Reject a blank
labelorlabelledby. - Require the
idattribute of thevertical_nav,menu,menu_bar,toolbar,action_barandtreecomponents. - Raise the maturity level of sixteen components from experimental to
developing, most of them because they gained their hook and keyboard support
in this release:
action_bar,combobox,drawer,menu,menu_bar,menu_button,menu_group,menu_item,menu_item_checkbox,menu_item_radio_group,radio_group,split_pane,switch,toolbar,treeandtree_item.
Alert component
- Change the type of the
close_labelattribute to:string. - Remove the click handler from the root element.
Alert dialog and modal components
- Use
showModal()to open dialogs to provide proper modal semantics. This adds support for the CSS::backdroppseudo element and ensures scroll locking without relying on CSS or JS. - Close dialogs with the
closedbyattribute. - Support the Invoker Commands API.
- Remove the
modal-containerandalert-dialog-containerelement.
App bar component
- Require the
labelattribute of the:navigationand:actionslots. - Set
aria-labelon the:navigationand:actionlinks.
Bottom navigation component
- Require the
labelattribute of the:itemslot.
Button and toggle button components
- Default the
disabledattribute tofalseinstead ofnil.
Button link component
- Prevent activation of a disabled
button_link. The link is now rendered without a destination and withrole="link"andaria-disabled="true". - Remove the
data-disabledattribute. The state is expressed witharia-disabledinstead.
Callout component
- Rename the default
variantmodifier tolevel.
Card component
- Rename the
:mainslot to:body.
Carousel component
- Replace the
auto_rotationattribute with a:pauseslot, which renders the button that stops and restarts the rotation. The rotation is enabled by the presence of the slot, so a rotating carousel always has a button to stop it, as WCAG 2.2.2 requires. - Complete the tablist of the pagination:
role="tablist"is set on thecarousel-paginationelement instead of a nesteddiv, each button has anid,aria-selectedandtabindex, and the slides are the tab panels the buttons select. The button contains a singlespaninstead of two nested ones. - Label the pagination buttons with the
labelof the slide they select.pagination_slide_labelis only used for slides without a label. - Set
aria-livetooffwhile the carousel rotates and topolitewhile it is stopped. - Move the carousel by setting
scrollLefton the scroll container, so that thescroll-behaviorproperty decides whether the movement is animated. - Render no controls and no pagination if the carousel only has a single item. The item is a group instead of a tab panel then.
- Mark the component as
developing.
Combobox component
- Render the listbox as a
divwithrole="listbox"and each option as adivwithrole="option", instead of aulwithlielements.
Page header component
- Render the title and the subtitle in an
hgroupinstead of adivwith thepage-header-titleclass.
Property list component
- Require the
:propslot.
Tabs component
- Require the
labelattribute of the:panelslot.
Toolbar component
- Add an
orientationattribute.
Vertical nav, vertical nav nested and navbar items components
- Change
classattribute of the item slots to:any, so that a list of classes can be passed.
Removed
Combobox component
- Remove support for options written as
{label, value, description}tuples. Write the option as a keyword list with adescriptionkey instead.
Fixed
Card component
- Render the main content as a
divinstead of amainelement. A document may hold only onemain, so a page of cards was invalid and exposed onemainlandmark per card.
Carousel component
- Scroll to the right slide if the slides have different widths, or if
scroll-snap-alignis notstart. The scroll position was calculated from the width of the first slide. - Render the pause button first and the pagination between the previous and next buttons, so that the tab order matches the visual order.
- Keep the carousel working after a LiveView patch that adds or removes slides. Buttons rendered by the patch did nothing, and the active slide could point at a slide that had been removed.
- Stop the rotation timer when the element is removed. It kept running against a detached element and held it from being collected.
Cluster component
- Remove the
role="group"attribute from theclustercomponent.
Combobox component
- Mark the option holding the value as selected when the option values are not strings.
- Mark only the first option when several options hold the same value.
- Render an option with an empty value for
niland for an empty label, so that a blank option can be selected.
Field component
- Describe an errored field by its error text through
aria-describedbyin addition toaria-errormessage. - Always render the error list as an
aria-live="polite"region, so that an error that appears after load is announced. - Render a field built without
fieldassign from just anameandvalue. - Render options given as keyword lists.
Frame component
- Default to a
1:1ratio instead of raising when noratiois given.
Image component
- Fix the storybook module passing an invalid
ratio.
Page header component
- Add the missing
on_clickattribute to the:navigationslot.
Split pane component
- Clamp the
aria-valuenowof the separator betweenmin_sizeandmax_size.
Tree item component
- Fix the expanded and collapsed state.
How to upgrade
- Replace
[data-disabled]with[aria-disabled]in any styles you wrote for disabledbutton_linkcomponents. - A disabled
button_linkno longer renders anhref. Revisit any style or test that selectsa.button[href]. - Add a
:propslot to anyproperty_listthat has none, or remove the component from that call site. - Rename the
:mainslot of thecardcomponent to:body, and replacemainwith.card-bodyin any styles you wrote for it. - Ensure to pass a
labelorlabelledbyattribute to every component that expects them. - Set an
idon everyvertical_nav,menu,menu_bar,toolbar,action_barandtree. - Rename
varianttolevelon thecalloutcomponent if you use the defaults, and change[data-variant]to[data-level]in your CSS. - Register the hooks of the components you build. See the README.
- Rewrite any styles that select the
comboboxlistbox or its options asulandli. They aredivelements withrole="listbox"androle="option"now. - Rewrite
comboboxoptions given as{label, value, description}tuples as keyword lists with adescriptionkey. - Remove the backdrop and scroll locking for the
modalandalert_dialogcomponents and style::backdropinstead. - Move any styles on
.modal-containerand.alert-dialog-containerto thedialogelement itself. The element is gone, and the dialog is the box now that it opens in the top layer. - An empty
.field-errorselement is now part of the layout. See the Field error announcements section of the README for the CSS that removes it from the flow without removing it from the accessibility tree. - Replace the
auto_rotationattribute of thecarouselcomponent with a:pauseslot. - In
carouselpagination styles,[role="tablist"]is now thecarousel-paginationelement itself rather than a child of it, and the dot isbutton > spanrather thanbutton > span > span. - Set
labelon every:itemof acarouselwithpagination, since the pickers take their names from it.pagination_slide_labelnow applies only to slides without a label. - A
carouselwith a single item renders nocarousel-controlselement anymore. Update your styles to account for its absence if necessary.
0.14.9 - 2026-08-27
Changed
- Document that the
row_clickattribute of thetablecomponent is available to pointer users only, and that every action reachable through it needs a focusable equivalent in the row. - Document that omitting the
textattribute of theiconcomponent leaves the icon without an accessible name, and correct the examples that omitted it. Thetoolbarexamples passed alabelattribute, which theiconcomponent does not have. - Document the CSS rule the
data-visually-hiddenattribute needs, and whydisplay: noneis the wrong one. - Document that the
modalandalert_dialogcomponents are not modal in the browser's sense, so the caller has to supply a backdrop and lock scrolling.
Fixed
- Set
aria-labelon the buttons of theaction_barcomponent, taken from the requiredlabelof the item. The name previously came fromtitlealone. - Set
role="img"on the placeholder of thefallbackcomponent androle="group"on a titledvertical_nav_section. Both put an accessible name on an element whose implicit role prohibits one, so the name was dropped. - Focus the container of the
modalandalert_dialogcomponents rather than their content, so that a dialog whose body holds nothing focusable still moves focus into the dialog. - Set
type="button"on the buttons generated by theaction_bar,alert,alert_dialog,comboboxandmodalcomponents. Without it they defaulted tosubmitand submitted any form they sat in. - Remove the
hrefattribute from the close button of themodalandalert_dialogcomponents, which is not valid on abuttonelement. - Omit the
data-addonattribute of thefieldcomponent when neither addon slot is filled. It was tested with&&, and an empty slot is truthy, so every field rendereddata-addon="left right". - Resolve the
:moduleoption ofuse Doggo.Storybookin the caller's environment, so that a story module can refer to its components module through an alias. - Remove the builder options documented by the
stepscomponent. None of:current_class,:completed_class,:upcoming_classand:visually_hidden_classexists, so following the documentation raised anArgumentErrorat compile time.
0.14.8 - 2026-08-27
Security
- Fix HTML injection in the
dateinput of thefieldcomponent, which marked the field value as already escaped. A value taken from user params could break out of thevalueattribute. Present since 0.1.0. - Remove
datefield values that are not a valid ISO 8601 date instead of truncating them to ten characters.
0.14.7 - 2026-07-24
Changed
- Change hook name for carousel component to
Doggo.Components.Carousel.Hook. - Support scrolling and swiping in carousel component on mobile devices.
- Add auto rotation to carousel component.
- Add carousel items container for more flexible styling.
0.14.6 - 2026-06-11
Changed
- Loosen
phoenix_live_viewversion requirement to ~> 1.1. - Add example CSS styles for carousel component.
- Add colocated JS hook for carousel pagination.
0.14.5 - 2026-05-15
Fixed
- Type warning in Elixir 1.20.0-rc.5.
0.14.4 - 2026-04-09
Fixed
- Fix an issue where the icon function name atoms don't exist yet when the icon component is rendered.
0.14.3 - 2026-04-08
Changed
- Simplify example styles for icon component.
Fixed
- Remove extraneous whitespace from icon component.
- Handle modifiers without values and boolean modifiers in stories.
0.14.2 - 2026-04-07
Fixed
- Icon story: Render all configured icons instead of only the first one.
0.14.1 - 2026-04-07
Fixed
- Toggle hidden attribute in toggle button story properly.
- Set class name as string in the container function of some stories.
0.14.0 - 2026-03-16
Changed
- Move
data-numeratoranddata-denominatorattributes inimagecomponent to innerimage-frameelement.
Fixed
- Add modifier data attributes to image component.
HTML diff
Before:
<figure class="image" data-numerator="16" data-denominator="9">
<div class="image-frame">
<img src="" alt="" loading="" />
</div>
<figcaption></figcaption>
</figure>After:
<figure class="image">
<div class="image-frame" data-numerator="16" data-denominator="9">
<img src="" alt="" loading="" />
</div>
<figcaption></figcaption>
</figure>0.13.3 - 2026-03-14
Changed
- Allow
popovertargetattribute on button component.
0.13.2 - 2026-03-04
Changed
- Require
phoenix_storybook~> 1.0.
0.13.1 - 2026-02-16
Changed
- Add
@doc type: {type}tags to compiled components for ExDoc grouping.
0.13.0 - 2026-02-05
This release contains significant breaking changes. Check your component styles carefully when upgrading.
Added
- Add
:typeoption to modifiers, so that any attribute type can be used instead of only strings.
Changed
- Rename
mix dog.classestomix dog.safelist. - Rename
Doggo.classes/1toDoggo.safelist/1. - Include data attributes in
mix dog.safelistandDoggo.safelist/1output. - Use
data-attributes instead of classes for modifiers (see upgrade guide below).
Button link component
- Remove
disabled_classoption. - Use
data-disabledattribute instead of thedisabled_class(selector:[data-disabled]).
Field component
- Remove
addon_left_class,addon_right_class, andvisually_hidden_classoptions. - Use
data-addonattribute instead ofaddon_left_classandaddon_right_class(selectors:[data-addon~="left"],[data-addon~="right"]). - Use
data-visually-hiddenattribute instead ofvisually_hidden_class(selector:[data-visually-hidden]). - Use
data-invalidattribute instead ofhas-errorsclass (selector:[data-invalid]). - Use
data-stateattribute instead of{base_class}-switch-state-{on|off}classes (selectors:[data-state="on"],[data-state="off"]).
Frame and image component
- Make
ratiorequired forframecomponent. - Change format of
ratioattribute (before:16-by-9, after:16:9). - Use
data-numeratoranddata-denominatorattributes instead of adding a class for the ratio (before:class="is-16-by-9", after:data-numerator="16" data-denominator="9").
Icon and icon sprite component
- Remove
text_position_after_class,text_position_before_class,text_position_hidden_class, andvisually_hidden_classoptions. - Use
data-text-positionclass instead oftext_position_*classes (selectors:[data-text-position="before"],[data-text-position="after"],[data-text-position="hidden"]). - Use
data-visually-hiddenattribute instead ofvisually_hidden_class(selector:[data-visually-hidden]).
Stack component
- Remove
recursive_classoption. - Use
data-recursiveattribute instead ofrecursive_class(selector:[data-recursive]).
Steps component
- Remove
current_class,completed_class,upcoming_class, andvisually_hidden_classoptions. - Use
data-visually-hiddenattribute instead ofvisually_hidden_class(selector:[data-visually-hidden]). - Use
data-stateattribute instead ofcurrent_class,completed_class, andupcoming_class(selectors:[data-state="current"],[data-state="completed"],[data-state="upcoming"]).
Removed
- Remove
class_name_funoption. - Remove
Doggo.modifier_class_name/2.
Upgrade Guide
In previous versions, modifier attribute values would be reflected with CSS classes in the HTML output.
For example, if you had a tag component with a size modifier like this:
build_tag(
modifiers: [
size: [values: ["small", "medium", "large"], default: "medium"]
]
)And you used it like:
<.tag size="small">Hello</.tag>This would result in the addition of an is-small class.
<span class="tag is-small">Hello</span>The implementation was changed to use separate data attributes for each modifier instead. Now, the generated HTML will look like this:
<span class="tag" data-size="small">Hello</span>In your CSS styles, you will need to change the selectors accordingly.
Before:
.tag.is-small {
}After:
.tag[data-size="small"] {
}0.12.0 - 2026-01-15
Changed
- Breaking: The icon component renders the inner SVG with a referenced icon module now instead of using an inner block.
- Add
navigationslot topage_headercomponent.
0.11.0 - 2025-12-16
Added
- Add
--checkswitch tomix dog.classes.
Changed
- Require
phoenix_live_view~> 1.1.0andphoenix_storybook~> 0.9.
0.10.8 - 2025-09-15
Changed
- Support
gettext~> 1.0.
0.10.7 - 2025-07-31
Changed
- Require
phoenix_live_view~> 1.0.6 or ~> 1.1.0.
0.10.6 - 2025-07-08
Changed
- Loosen version requirement for
phoenix_storybook.
0.10.5 - 2025-06-10
Fixed
- Add
requiredattribute to radio inputs.
0.10.4 - 2025-02-22
Fixed
- Escape select option values in
fieldcomponent.
0.10.3 - 2025-02-11
Changed
- Build select options with function components instead of
Phoenix.HTML.Form.options_for_select/2.
0.10.2 - 2025-01-08
Changed
- Require Phoenix LiveView ~> 1.0.0.
- Support Phoenix Storybook 0.8.
0.10.1 - 2024-11-20
Changed
- Support Phoenix Storybook 0.7.x.
0.10.0 - 2024-11-19
Changed
fieldcomponent:- Remove
required_textattribute in favor of a compile-time option passed tobuild_field/1. - Remove
required_titleattribute; removetitlefromspanelement. - Change default for
required_textfrom*to(required). - Translate
required_textwith Gettext module, if set. - Add
optional_textoption tobuild_field/1to mark optional fields with a label suffix. Defaults tonil. - Prefix
checkbox,checkbox-group,radio-group,required-mark,select,switch,switch-label,switch-state,switch-state-off, andswitch-state-onclasses with base class for consistency.
- Remove
0.9.1 - 2024-10-18
Changed
- Add header to file output of
mix dog.classes.
Fixed
- Fix deprecation warning in Phoenix LiveView 1.0.7-rc.7.
0.9.0 - 2024-09-25
Changed
- Rename
Doggo.modifier_classes/1toDoggo.classes/1andmix dog.modifierstomix dog.classes. The function and mix task return all base classes, nested classes, and additional customizable classes in addition to the modifier classes now. - Wrap inner block of
boxcomponent intodiv. - Add example styles for box and tag components.
Removed
- The
fabcomponent was removed. It might have made sense to have it as a separate component before components could be customized, but since the semantics are the same as a regular button, you can just make one withbuild_button(name: :fab, base_class: "fab")if you need it.
0.8.2 - 2024-07-28
Fixed
- Ensure storybook module and components module are loaded before checking whether module exports function.
- Fix menu stories not compiling under certain circumstances.
0.8.1 - 2024-07-28
Fixed
- Declare
phoenix_storybookas required dependency.
0.8.0 - 2024-07-28
Added
- Set up design tokens and CSS for demo application based on Barker. Styles for all components will be added in the future.
Changed
General
- Add documentation for the compile-time options of the builder macros.
Property list, stack, cluster, button, and button link component
- Add styles to demo application.
- Improve story and documentation.
- Mark components as
stable.
Tab navigation and disclosure button component
- Add styles to demo application.
- Improve story and documentation.
- Mark component as
refining.
Icon and icon sprite component
- Add styles to demo application.
- Add story for icon sprite.
- Rename
labelattribute totext. - Rename
label_placementattribute totext_position. - Change type of
label_placementattribute from atom to string for consistency. - Use
beforeandafteras values fortext_positioninstead ofleftandrightto better apply to right-to-left languages. Rename default classes tohas-text-beforeandhas-text-afteraccordingly. - Make
text_positionclasses configurable. - Add
right-to-leftvariation group to icon story. - Set
sprite_urlas a compile time option. - Mark both components as
refining.
Date, datetime, and time component
- Improve story and documentation.
- Mark components as
refining.
Fixed
attributesfor modifier variations weren't set correctly when map was lacking key.
0.7.0 - 2024-07-24
Changed
- Use private
field_description,field_errors, andlabelcomponents infieldcomponent. Apply base class tofield_descriptionandfield_errorscomponents. - Use plain
divwith{base_class}-frameclass instead of nestedframecomponent inimagecomponent. Thisdivdoes not receive theratioattribute anymore. Apply the ratio with a CSS selector on the root div instead (e.g..image.is-4-by-3 > .image-frame).
Removed
field_descriptioncomponent.field_errorscomponent.labelcomponent.
0.6.0 - 2024-07-23
Added
- Add
Doggo.Storybookandmix dog.gen.storiesfor generatingPhoenix.Storybookstories for the configured components. The generated stories automatically render variation groups for all configured modifiers. - Add
Doggo.modifier_classes/1. - Add
Doggo.modifier_class_name/2.
Changed
- Replace all function components defined in
Doggowith build macros inDoggo.Components. This allows you to customize the modifier attributes, component names, base classes, and some other options at compile time. - Make modifier class name builder configurable.
- Rename build macro for former
inputcomponent tofield. - Configure
Gettextmodule forfieldcomponent (formerlyinput) via compile-time option instead of global attribute. - Allow to set required text and required title attributes for input and label.
- Add
moduleargument tomix dog.modifiersthat points to the module in which the Doggo components are configured. - Replace
placeholderattribute withplaceholder_srcandplaceholder_contentattributes inavatarcomponent. - Replace
phx-feedback-forattribute in favor ofPhoenix.Component.used_input?/1. - Don't use
h2forDoggo.page_header/1sub title. - Nest
vertical_nav_nestedcomponent into<div>. - Rename
drawer-nav-titleclass invertical_nav_nestedcomponent to be based on configured component name (default:vertical-nav-nested-title). - Better consistency, various improvements and optimizations in all components.
- Revise The component type classification.
- Add maturity levels for all components (experimental, developing, refining, stable).
- Require
live_view ~> 1.0.0-rc.6.
Removed
- Remove
Phoenix.Storybookstories bundled in theprivfolder in favor ofmix dog.gen.storiesandDoggo.Storybook. - Remove
Doggo.flash_group/1.
Upgrade Guide
- For all Doggo components you were using, call the corresponding
buildmacros inDoggo.Componentsin one of your modules and update your HEEx templates to call the generated functions instead of the ones from theDoggomodule. See readme for installation details. - The previous Doggo version instructed you to configure a separate Storybook
that reads the stories from the
privfolder of the dependency. Remove that second Storybook and runmix dog.gen.stories -m [component-module] -o [storybook-folder] -ato generate stories for the configured Doggo components in the primary Storybook. - If you use
mix dog.modifiersin a script, add the--moduleargument. - If you were setting the
gettextattribute on theinputcomponent, pass thegettext_moduleoption toDoggo.Components.build_field/1instead.
0.5.0 - 2024-02-12
Added
- New component:
Doggo.alert_dialog/1. - New component:
Doggo.carousel/1. - New component:
Doggo.combobox/1. - New component:
Doggo.disclosure_button/1. - New component:
Doggo.menu/1. - New component:
Doggo.menu_bar/1. - New component:
Doggo.menu_button/1. - New component:
Doggo.menu_group/1. - New component:
Doggo.menu_item/1. - New component:
Doggo.menu_item_checkbox/1. - New component:
Doggo.menu_item_radio_group/1. - New component:
Doggo.radio_group/1. - New component:
Doggo.split_pane/1. - New component:
Doggo.tabs/1. - New component:
Doggo.toolbar/1. - New component:
Doggo.tree/1. - Storybook page about modifier classes.
- Mix task
mix dog.modifiersto list all modifier classes.
Changed
- Set
aria-invalidandaria-errormessageattributes inDoggo.input/1component. - Use buttons instead of links in
Doggo.action_bar/1. - Add
toolbarrole toDoggo.action_bar/1. - Use
sectioninstead ofarticleinDoggo.modal/1. - Use
buttonfor close button inDoggo.modal/1. - Add
dismissableattribute toDoggo.modal/1. - Remove
rolefrombutton_link/1, addclass. - Rename
Doggo.drawer/1slots toheader,main, andfooter. - Rename
Doggo.drawer_nav/1,Doggo.drawer_nav_nested/1andDoggo.drawer_nav_sectiontoDoggo.vertical_nav/1,Doggo.vertical_nav_nested/1andDoggo.vertical_nav_section/1. - Depend on
phoenix_storybook ~> 0.6.0.
0.4.0 - 2023-12-31
Added
- New component:
Doggo.cluster/1. - New component:
Doggo.toggle_button/1.
Changed
- Significant changes to
Doggo.alert/1andDoggo.flash_group/1. - Require
idattribute forDoggo.callout/1. - Add
:normalas size forDoggo.icon_sprite/1. - Remove
:errorvariant in favor of:danger. - Add
<span>around text placeholder forDoggo.avatar/1. - Add base class to
Doggo.image/1, addclassattribute. - Rename
Doggo.frame/1ratio classes fromx-to-xtox-by-x. - Add required
labelattribute toDoggo.navbar/1. - Add
classattribute to:itemslot ofDoggo.navbar_items/1. - Add
required_titleattribute toDoggo.label/1. - Change
descriptionattribute ofDoggo.field_description/1to inner block. - Require
idattribute forDoggo.drawer_section/1. - Add
aria-labelledbyattribute toDoggo.drawer_section/1. - Require
idandlabelattributes forDoggo.drawer_nav/1. - Add
classattribute toDoggo.drawer_navitem slot. - Require
idattribute forDoggo.drawer_nested_nav/1. - Add
classattribute toDoggo.drawer_nested_navitem slot. - Add
close_labelattribute toDoggo.modal/1.
Fixed
- Box header not rendered if only action slot is used without banner or title.
- Aria label of breadcrumb component not overridable.
- Radio groups and checkbox groups always marked as required.
- Missing datalist option text.
0.3.1 - 2023-12-28
Changed
- Allow event name as string in
on_clickattributes of app bar and steps.
Fixed
- Faulty application of the
on_clickattribute inDoggo.steps/1.
0.3.0 - 2023-12-27
Added
- New component:
Doggo.avatar/1. - New component:
Doggo.badge/1. - New component:
Doggo.bottom_navigation/1. - New component:
Doggo.box/1. - New component:
Doggo.callout/1. - New component:
Doggo.fab/1. - New component:
Doggo.field_group/1. - New component:
Doggo.page_header/1. - New component:
Doggo.skeleton/1. - New component:
Doggo.steps/1. - New component:
Doggo.tag/1. - New component:
Doggo.tooltip/1. - Allow to visually hide labels.
- Support autocomplete via
<datalist>ininput/1component. addon_leftandaddon_rightslots on theinput/1component.gettextattribute onDoggo.input/1, giving you the choice to set the Gettext module locally.
0.2.1 - 2023-12-19
Changed
- Ensure compatibility with Phoenix.HTML 4.0.
0.2.0 - 2023-12-17
Added
- New
tab_navigation/1component. - New
frame/1component. - New
image/1component.
0.1.5 - 2023-12-16
Fixed
- Remove default value for
errorsattribute oninputcomponent.
0.1.4 - 2023-12-16
Added
- Added storybook stories for the remaining components.
Fixed
- Errors passed as an attribute to the
input/1component were overridden. - The
field_description/1component had a stray<li>tag.
0.1.3 - 2023-12-15
Fixed
- Added
priv/storybookfolder to package configuration.
0.1.2 - 2023-12-14
Changed
- Added more storybook stories.
Fixed
- Fixed attribute name for table rows.
0.1.1 - 2023-12-13
Changed
- Storybook stories for more components and documentation improvements.
0.1.0 - 2023-12-13
Initial release.