packages/anvil2/CHANGELOG.md.
Older releases: v2.x, v1.x, v0.x.
3.17.0
Minor Changes
-
#2817
d6533f5Thanks @cursor! - [prefersReducedMotion, useReducedMotion] AddprefersReducedMotionutil and re-export MotionuseReducedMotion -
#3076
37a1f04Thanks @lgutin! - [DrillDown] Addactionsprop toDrillDown.Headerfor an overflow menu matchingDrawer.Header, and export theDrillDownHeaderActiontype. Header actions render inDrawerandPage.Panelhosts only; inside aDialogthey are ignored with a development warning, sinceDialog.Headerhas no overflow menu.
Patch Changes
-
#3104
67eb494Thanks @pbuckingham-st! - [Tab] FixTabListthrowing “Maximum update depth exceeded” when tabs that fill the list are near the overflow width and a render changes the list’s width. -
#3076
37a1f04Thanks @lgutin! - [DrillDown] FixDrillDown.HeaderClose persisting afteronCloseis removed or theDrillDownunmounts -
#3100
814f8efThanks @SimonyanGrno! - BETA [DataTable] AddbulkActionsprop for a bulk action bar that replaces the filter bar and toolbar while rows are selected, andclearSelectiononDataTableRef -
#2934
4e7f12aThanks @cursor! - [Exports] Stop shipping Storybook-only CSS bundles in the published package -
#3123
70228d8Thanks @hbartlett-st! - BETA [DataTable] Add a controlled Edit Columns drawer for order, visibility, and left pinning. -
#3109
aa7ac68Thanks @hbartlett-st! - [DataTable (beta)] Add a filter bar and toolbar actions above the tablefilters(DataTableFilters) renders aFilterBar.itemstakes the filter definitions; filters markeddrawerOnlyappear only in the filter drawerfilters.onChangereceives the updated filters and returns a paginated table to its first page. DataTable does not filter rows itself, so apply the filters todataor to yourloadPageDatarequestfilters.controlleddefers inline filters that support an Apply step; filters without one still commit immediately, and the drawer always batches changestools(DataTableTools) takesactions, a list of toolbar button props (DataTableToolbarAction) rendered to the right of the filter barfilters.sizeandtools.sizeset the size of the filter bar and toolbar controls. Both default tomedium
-
#3131
31ce9eeThanks @hbartlett-st! - BETA [DataTable] Add arowAddprop that renders an Add row button in a toolbar below the table and callsonAddRow. SetemptyState.includeAddRowto repeat the button in the empty state. -
#3103
2839b4eThanks @subham-ttan! - [ListView] Fix crash when an option is dynamically disabled, and keep keyboard focus on a valid row -
#2963
f05ead9Thanks @helenvholmes! - [Icons] Addgnav_messages_activeandgnav_messages_inactiveST icons -
Updated dependencies [
11017d0]:- @servicetitan/hammer-token@3.6.1
3.16.1
Patch Changes
-
#2986
7e32bbbThanks @cursor! - [Combobox, MultiSelectField, SelectField, TreeSelectField] Fix mouse focus ring on select triggers and stop caret focus outline from rotating when the menu opens -
#3073
c3fad15Thanks @subham-ttan! - [SelectField] Fix the combobox search input: reopening after a selection now selects the label (so typing replaces it instead of garbling it), and the cursor no longer jumps to the end while editing search text
3.16.0
Minor Changes
- #3031
f378747Thanks @AdamLantz! - [Pagination] AdditemRangeFormatterprop to customize the item-range text
Patch Changes
-
#3036
0c93d69Thanks @w-a-t-s-o-n! - [Dependencies] Use caret ranges for all dependencies to avoid version conflicts in consuming apps -
#2916
c88993fThanks @Diveafall! - [MultiSelectField, MultiSelectMenu, SelectField, SelectMenu] FixLoad moreclosing the options popover, auto-load the next page on scroll for lazy lists, and stop duplicate page requests withvirtualize -
#2880
c773b39Thanks @lgutin! - [ProgressBar] Update success and error indicators to use the shared Status Icon -
#3062
9b9af1fThanks @w-a-t-s-o-n! - BETA [FilterBar] Fix an update loop when typing quickly in the search field
3.15.2
Patch Changes
- #3018
723f70dThanks @w-a-t-s-o-n! - [Dependencies] Update@tiptap/*to3.31.4to pick up GHSA-j95f-988m-3j2f and GHSA-cp6q-959q-f8rh fixes in@tiptap/core
3.15.1
Patch Changes
-
#2980
fa95ee2Thanks @AdamLantz! - BETA [FilterBar] Add a Clear action tonumericRangefilters -
#2980
fa95ee2Thanks @AdamLantz! - BETA [FilterBar] Fix Enter on Clear or Cancel applying the draft in a controlled filter popover -
#3001
6593fa3Thanks @subham-ttan! - [Details] FixSummarychevron sitting vertically misaligned against the label text in Sofia Pro -
#2983
1a0360fThanks @AdamLantz! - [Stepper] Fix incoming panel blinking empty at the end of the step fade
3.15.0
Minor Changes
- #2984
1a54b6cThanks @AdamLantz! - [Icons] Add new global nav icons:gnav_analytics_active,gnav_analytics_inactive
3.14.1
Patch Changes
- Updated dependencies [
c8daeed]:- @servicetitan/hammer-token@3.6.0
3.14.0
Minor Changes
- #2941
1bce68aThanks @pbuckingham-st! - [Icons] Addgnav_automations_active,gnav_automations_inactive,gnav_command_center_active, andgnav_command_center_inactiveglobal nav icons
Patch Changes
- Updated dependencies [
e5a2083]:- @servicetitan/hammer-token@3.5.0
3.13.7
Patch Changes
-
#2923
97cec27Thanks @jarizast! - [DateFieldYearless, DateFieldYearlessRange] Fix the first month or day click in the picker being discarded and closing the popover -
#2929
2b2c7d5Thanks @ericag1985! - [Chip] Fix custom colors defaulting to the system color scheme when theme mode is unset -
#2929
2b2c7d5Thanks @ericag1985! - [Avatar] Fix custom colors defaulting to the system color scheme when theme mode is unset -
#2926
cfcb71dThanks @ericag1985! - [Calendar] Fix bounded month navigation closing containing popovers -
#2929
2b2c7d5Thanks @ericag1985! - BETA [DataTable] Fix empty-state artwork defaulting to the system color scheme when theme mode is unset -
#2920
82dee43Thanks @pbuckingham-st! - [AnvilProvider] Fixanvil2body class being stripped by one MFE scope’s unmount while another scope’sAnvilProvideris still mounted
3.13.6
Patch Changes
- #2869
3accfabThanks @pbuckingham-st! - [MultiSelectField, SelectField] Fix React 18 unknown-property warning for the HTMLpopovertargetattribute without reintroducing the React 19 casing warning
3.13.5
Patch Changes
-
#2894
a2f07c5Thanks @pbuckingham-st! - BETA [SavedFiltersButton] Fix Edit Saved Filters reopening a stale preset edit form instead of the preset list -
Updated dependencies [
dc68e22]:- @servicetitan/hammer-token@3.4.1
3.13.4
Patch Changes
- #2844
a32f02bThanks @tounsoo! - BETA [DataTable] FixemptyState.svgnot renderingforwardRefillustration components
3.13.3
Patch Changes
-
#2820
10234f8Thanks @w-a-t-s-o-n! - BETA [FilterBar] AddcustomRange.minDate,customRange.maxDate, andcustomRange.unavailabletodateListfilters -
Updated dependencies [
5043512]:- @servicetitan/hammer-token@3.4.0
3.13.2
Patch Changes
-
#2429
4e0d6fdThanks @cursor! - [Menu] Fix nested menus ignoring thetriggerrender prop -
#2684
af3ab2dThanks @cursor! - [FilterBar] Fix selected trigger hover/active colors and count badge contrast -
#2813
fa356f3Thanks @hbartlett-st! - BETA [Page] ReplacePage.Contentvirtual scrolling with a native, keyboard-operableoverflow-y: autocontainer on the sharedmainwrapper atlg+ — breaking for consumers relying on document-level scroll or the internalvirtual-scroll-containerclass.
3.13.1
Patch Changes
-
#2773
19423e4Thanks @helenvholmes! - [usePrefersColorScheme] Fixmodestaying"light"until the system color scheme changes -
#2744
988aa23Thanks @AdamLantz! - [MultiSelectField, MultiSelectFieldSync] FixonSelectedOptionsChangere-firing after selection when the parent writes a new array of the same ids -
#2796
b4d6cf1Thanks @w-a-t-s-o-n! - [Popover, ThemeProvider] Fix custom theme tokens being reset to core defaults on top-layer popovers, menus, tooltips, and toasts -
#2775
37b86caThanks @lgutin! - BETA [DataTable] Fix table content and pinned columns misaligning with the container edge by removingpadding-inlinefrom the scroll container so content stays flush and sticky offsets are correct. Paginated tables no longer show a stray horizontal scrollbar and trailing empty space when their columns already fit -
#2745
73447c9Thanks @TitanBob! - [Toaster] Fix a document-wideMutationObserverstaying connected after a toast auto-closes, and scan MFE shadow roots once per mutation batch instead of once per root -
#2781
44c29aeThanks @hbartlett-st! - BETA [Page] Add newPagebeta export withPage.Panel.Header,Page.Panel.Content, andPage.Panel.Footerwith Drawer-like sticky header, scrollable content, and optional sticky footer; padding now lives on those slots instead ofPage.Panel;Drilldownshould be direct sibling ofPage.Panelrather than nested withinPage.Panel.Content -
#2745
73447c9Thanks @TitanBob! - [Dialog, Drawer, Toaster] Fix closing one of two open dialogs un-hiding the page toaster behind the other dialog, and stoptoast.dismiss()re-rendering toast consumers when no toast is open -
#2791
4df4ff8Thanks @lgutin! - BETA [DataTable] Migrate row and cell error/warning indicators to the standard status-specific icon set (filled circular glyphs), rendered at the densesmall(12px) size for consistency with Alert, FieldMessage, and Toast. The warning cell outline now uses theborder-color-warningtoken so it matches the Alert warning border.
3.13.0
Minor Changes
- #2746
ec6d604Thanks @Diveafall! - [Page] AdditemstoPage.Headeractions.primaryfor a primary action that opens a menu
Patch Changes
- #2762
dc83d43Thanks @tounsoo! - [Menu, Page] Fix the Page Header more menu staying open after focus leaves the trigger
3.12.2
Patch Changes
-
#2754
55684fdThanks @AdamLantz! - [TimeField] Fix input shrinking when a value is entered -
#2715
10fe003Thanks @Diveafall! - BETA [DataTable] Cap the loading spacer’s first-load height so a largerowsPerPageno longer reserves a viewport-sized empty area
3.12.1
Patch Changes
-
#2725
a9e5a1dThanks @AdamLantz! - [MultiSelectFieldSync, MultiSelectMenuSync, SelectFieldSync, SelectMenuSync] Fix loader flashing whenoptionsis a new array with the same contents -
#2739
4ee2c39Thanks @AdamLantz! - [Toaster] Fix a centered black square from nativepopoveruser-agent styles when a toast is visible
3.12.0
Minor Changes
- #2710
68dcc25Thanks @AdamLantz! - [StepperBase] Add a controllable stepper primitive with per-stepstatefor status-in-sequence flows
3.11.1
Patch Changes
- #2705
3cd81efThanks @pbuckingham-st! - [Menu] FixdefaultOpennot showing the menu on mount, including nested submenus
3.11.0
Minor Changes
-
#2630
e89d590Thanks @w-a-t-s-o-n! - [Exports] Add@servicetitan/anvil2/themessubpath exportingcartotheme overrides -
#2641
450049bThanks @Diveafall! - Add anoMarginprop toTextfor theheadlinevariant. Headlines ship a bottom margin so they space correctly above following content, which offsets them when they are aligned against a sibling such as aChip. SettingnoMarginremoves that margin so the headline’s layout box hugs the text. The prop is a type error on thebodyandeyebrowvariants, which already have no margins. -
#2630
e89d590Thanks @w-a-t-s-o-n! - [ThemeProvider, Tokens] Enable border-radius and typography CSS variables to cascade from ThemeProvider
Patch Changes
-
#2572
04ca3d0Thanks @karpoff-titan! - [MultiSelectField, SelectField] Makeoption.idtype generic so consumers can usestringornumberids without casting -
Updated dependencies [
e89d590]:- @servicetitan/hammer-token@3.3.0
3.10.1
Patch Changes
-
#2697
f4a1979Thanks @AdamLantz! - [MultiSelectField, SelectField, SelectTrigger] Fix disabled fields still opening from wrapper or caret clicks -
#2679
8276098Thanks @AdamLantz! - [MultiSelectField, MultiSelectFieldSync] Fix clear button vertical alignment whendisableSearchis set -
#2679
8276098Thanks @AdamLantz! - [MultiSelectField, MultiSelectFieldSync] WhensingleRow, reduce search input min-width so chips are not forced into premature+Ncollapse -
#2679
8276098Thanks @AdamLantz! - [MultiSelectField, MultiSelectFieldSync] FixsingleRowchip overflow so it remeasures when the field width changes -
#2678
9f573d2Thanks @AdamLantz! - [DrillDown] AlignContentlayout withDrawer.Contentso children can shrink within the host width -
#2679
8276098Thanks @AdamLantz! - BETA [TreeSelectField, TreeSelectFieldSync] WhensingleRow, reduce search input min-width so chips are not forced into premature+Ncollapse -
#2679
8276098Thanks @AdamLantz! - BETA [TreeSelectField, TreeSelectFieldSync] FixsingleRowchip overflow so it remeasures when the field width changes
3.10.0
Minor Changes
-
#2433
c927b6dThanks @AdamLantz! - [Combobox, DateFieldRange, DateFieldSingle, DateFieldYearless, DateFieldYearlessRange, MultiSelectField, MultiSelectMenu, Pagination, SelectField, SelectMenu, Toolbar] Add internally-manageddata-anv-partattributes to interactive sub-elements for e2e test targeting, and forward consumerdata-*attributes onto the public root or trigger/input surface -
#2671
b263157Thanks @w-a-t-s-o-n! - These version bumps clear npm version numbers reserved after a security-related unpublish. Consumers must upgrade to the new versions. Do not pin to unpublished or reserved numbers. Higher versions that still appear in the npm packumenttimefield but are missing from installableversionsmust not be used — they return 404 and reject republish. -
#2672
3a2d620Thanks @pbuckingham-st! - [DrillDown] Add aninteractiveprop to suspend a screen’s focus trap while it stays mounted and visible, for cases where a consumer opens an independentDialog/Draweron top of it
Patch Changes
-
#2433
c927b6dThanks @AdamLantz! - BETA [DataTable, FilterBar, SavedFiltersButton, Toolbar, TreeSelectField, TreeSelectFieldSync, TreeSelectMenu, TreeSelectMenuSync] Add internally-manageddata-anv-partattributes to interactive sub-elements for e2e test targeting, and forward consumerdata-*attributes onto the public root or trigger surface -
#2643
0a1fa99Thanks @Diveafall! - [MultiSelectField, TreeSelectField] Fix selecteddisabledoptions so their chips omit the close control, and clear/backspace skip locked selections -
#2672
3a2d620Thanks @pbuckingham-st! - BETA [SavedFiltersButton] Fix the Custom Range dialog for adateListfilter being unresponsive to all clicks (day selection, Cancel, and the header close button) when opened while editing a saved filter -
#2667
a7f1232Thanks @tounsoo! - [Page] FixPage.Sidebarlocking page scroll and showing the wrong chevron below thelgbreakpoint -
#2673
3ae742eThanks @tounsoo! - BETA [FilterBar] FixdateListfilter replacing its own label with the selected option’s label on the trigger button. The filter label is now retained and the selection appended, e.g.Start Date: Last 7 Days (Aug 6 – Aug 11, 2026), matching the other filter types. The drawer field is unchanged. -
Updated dependencies [
b263157]:- @servicetitan/hammer-token@3.2.0
- @servicetitan/hammer-icon@1.3.0
3.9.0
Minor Changes
- #2606
664e8ccThanks @cursor! - [Calendar] DeprecatefocusedDatein favor ofdefaultFocusedDate.focusedDatenever reliably controlled the initial view.
Patch Changes
-
#2532
2a87e99Thanks @cursor! - [Tab] Fix overflow scroll buttons covering tabs and scroll the tab list on click -
#2607
79b0364Thanks @AdamLantz! - [Combobox, DateFieldRange, DateFieldSingle, DateFieldYearless, DateFieldYearlessRange, MultiSelectField, SelectField, TimeField] Close attached menus when becomingdisabled -
#2607
79b0364Thanks @AdamLantz! - BETA [TreeSelectField] Close attached menus when becomingdisabled -
#2524
fc611b6Thanks @w-a-t-s-o-n! - [Flex, Grid] Fix font-family inheritance to respect parent typography context -
#2620
786cb51Thanks @joefiorini! - BETA [TreeSelectMenu, TreeSelectField] Fix dragging the tree panel’s scrollbar closing the popover mid-drag. The panel wasn’t a focusable click target, so a scrollbar-thumb drag blurred the search field to nothing andOptionsPopovertreated it as an outside interaction. The panel now getstabIndex={-1}, matchingMultiSelectMenu’s scroller.
3.8.0
Minor Changes
- #2543
8c976e5Thanks @tnathanjames! - [Drawer] Add optionalactionsprop toDrawer.Header
Patch Changes
-
#2535
b3a79dbThanks @w-a-t-s-o-n! - [DateFieldYearless, DateFieldYearlessRange] Fix month dropdown labels shifting by one month in timezones east of UTC -
#2555
6377024Thanks @w-a-t-s-o-n! - [SelectField] Fix clear button vertical alignment fordisableSearchacross sizes
3.7.1
Patch Changes
- #2516
7dc385aThanks @AdamLantz! - BETA [MultiSelectField, MultiSelectMenu] Fix Select All checkbox not updating in confirmation mode
3.7.0
Minor Changes
- #2503
16bb0b2Thanks @AdamLantz! - [MultiSelectField, MultiSelectMenu, SelectField, SelectMenu] AllowaddItemLabelcallbacks to returnnull/undefinedto hide the add-new button for the current search text (for example, until a well-formed email is typed)
3.6.0
Minor Changes
-
#2495
3cf8f42Thanks @tounsoo! - BETA [RichTextEditor] Added markdown support (contentType="markdown"to parsevalue/defaultValueas markdown,onMarkdownChangeto emit markdown on every update) via TipTap’s official@tiptap/markdownextension, which is BETA upstream — known limitations are single-child-per-cell tables and possible loss of HTML comments on round-trip. BETA [RichTextEditor] Added anextensionsprop to inject custom TipTap extensions (e.g. a custom node type); an extension sharing a built-in’s name overrides it. BETA [RichTextEditor] Restricted the default Image extension’ssrctohttp:/https:only, closing off tracking-pixel hosts and non-http(s) schemes previously allowed unrestricted. This is a behavior change for existingallowMediaconsumers relying on other schemes — pass the newisAllowedImageSrcprop to opt back in.
Patch Changes
-
#2467
6540bd5Thanks @tounsoo! - [Listbox] Fix TypeScript error when passing an array toselectedin controlled multiselect mode withitemsprop. Fix controlled mode updating internal state on click and keyboard selection instead of deferring to theselectedprop. -
#2496
a48f5adThanks @w-a-t-s-o-n! - [Icon] Fix SVG gradient ID collisions when multiple gradient icons render on the same page -
#2487
f492511Thanks @tounsoo! - [Dialog] Fix nestedDialoginheriting an ancestor dialog’s--a2-mod-dialog-max-width, causing it to render at the wrong max-width instead of its own size default -
#2500
775a836Thanks @jarizast! - BETA [DataTable] Fix the ascending → descending → none sort cycle collapsing to a single state for nullable columns under server-side (async) sorting by pinningsortDescFirsttofalsewhenmanualSortingis enabled
3.5.0
Minor Changes
- #2490
386ffa2Thanks @AdamLantz! - [MultiSelectField, MultiSelectMenu] Support a function forselectAll/selectFilteredcheckStateso the bulk-action checkbox can reflect the current selection (e.g.checkedwhen all are selected,indeterminatewhen some are). The function receives the current selection (the confirmation draft when confirmation is enabled, otherwise the committed value). This also enables per-cell Select All state for DataTable’smultiselect-asynceditable cells, where the column-level config is shared across cells.
Patch Changes
-
#2494
b975af7Thanks @tounsoo! - BETA [InteractiveCard] Merge arefpassed viawrapperPropswith the component’s forwarded ref, so consumers can access the wrapper element even when usingwrapperProps.ref. -
#2482
673fe8fThanks @AdamLantz! -Calendar: fix the month and year pickers closing popover hosts (e.g.FilterBar’s date-range filter) when a month or year is selected. The picker cards are label-based and not natively focusable, so a mousedown could blur focus todocument.bodyand trigger the popover’s focus-out close before the selection applied. The cards now cancel their default mousedown to preserve focus, matching the existing footer-button behavior. -
#2493
2f30cf0Thanks @jarizast! - [DataTable] Fix column sort occasionally triggering after column resize -
#2494
b975af7Thanks @tounsoo! - [SideNav] Fix a crash when renderingSideNavProviderduring server-side rendering (e.g. Next.js SSR), wherewindowis not defined. -
#2486
202f32eThanks @AdamLantz! - BETA [FilterBar] AddminDate,maxDate, andunavailablesupport todateanddateRangefilters so consumers can restrict which dates are selectable in both the toolbar popover and the drawer. Typing a value outside those constraints is still allowed but now surfaces an error message on the field, with an optionalgetErrorMessagecallback to override the default copy. -
#2489
d8a1fccThanks @AdamLantz! - BETA [FilterBar] Fix the calendar overlapping the Clear / Apply / Cancel footer when the popover is height-constrained. The popover body now scrolls its content instead of letting it spill over the fixed footer. -
#2488
01df630Thanks @pbuckingham-st! - [AnvilProvider]cssUtilsis deprecated and no longer loads stylesheets — import the CSS utility stylesheets you need directly instead. -
#2475
d90ef2aThanks @tounsoo! - BETA [FilterBar] Addsearchfilter type for a pinned, always-visible search field -
#2494
b975af7Thanks @tounsoo! - [MultiSelectField, SelectField] Fix a React console warning caused by passing thepopovertargetattribute in lowercase instead of the camelCasepopoverTargetprop React expects.
3.4.2
Patch Changes
-
#2473
07b379dThanks @w-a-t-s-o-n! - [AnvilProvider] FixcssUtilsprop not loading styles due to incorrect import paths in published package -
#2469
7d8fda9Thanks @tounsoo! - [PageHeader] FixiconandclassNamenot forwarded toMenu.Itemin secondary actions overflow menu
3.4.1
Patch Changes
-
#2448
e53dab6Thanks @tounsoo! - [Button] Fix focus ring appearing on mouse click by restricting it to:focus-visible -
#2458
d35066dThanks @w-a-t-s-o-n! - BETA [FilterBar] AddexcludeDefaultOptionsprop todateListfilters for omitting built-in default options -
#2448
e53dab6Thanks @tounsoo! - [Popover] On a keyboard close (e.g. Escape), focus now returns to the trigger with a visible focus ring, matching:focus-visiblesemantics; pointer closes restore focus without a ring. Applies to both the stablePopoverand the beta popover. -
#2459
c398449Thanks @hbartlett-st! - BETA [DataTable] Fix server-paginated tables getting stuck in a perpetual loading state by memoizing the controlledsortingreference
3.4.0
Minor Changes
- #2437
7eaf679Thanks @jsphstls! -Overflow: add acontentRefprop that forwards a ref to the scrollable content element (the inner element withoverflow: auto). The component’s ownrefstill points at the outer wrapper, which does not scroll, so usecontentRefwhen an integration must target the actual scroller — e.g. a virtualizer’sgetScrollElement, anIntersectionObserversentinel, or programmatic scrolling.
Patch Changes
- #2447
b49ded5Thanks @w-a-t-s-o-n! - [Icons, AiMark] Fix gradient SVG ID collisions when multiple AI mark icons render on the same page
3.3.0
Minor Changes
-
#2428
9eb595bThanks @w-a-t-s-o-n! - [Combobox] Deprecate in favor of SelectField and MultiSelectField -
#2423
e536233Thanks @w-a-t-s-o-n! - [AnvilProvider] AddcssUtilsprop to automatically load CSS utility stylesheets -
#2428
9eb595bThanks @w-a-t-s-o-n! - [MultiSelectField, MultiSelectMenu, SelectField, SelectMenu] Promote select components from beta to the stable package export; retain deprecated beta re-exports until Anvil2 4.0
Patch Changes
-
#2435
e975960Thanks @cursor! - [Combobox] Hide dropdown caret whendisablePopoveristrue -
#2419
daaa703Thanks @cursor! - BETA [DataTable] Fix header, footer, and pagination z-index leaking outside the table container
3.2.0
Minor Changes
- #2386
efd6121Thanks @hbartlett-st! - [NumberField, TextField] AddisHighlightedprop that applies a subdued primary background to draw attention to the field
Patch Changes
-
#2386
efd6121Thanks @hbartlett-st! - BETA [MultiSelectField, SelectField] AddisHighlightedprop that applies a subdued primary background to draw attention to the field -
#2415
58eb789Thanks @w-a-t-s-o-n! - [Details] Fix incorrect content padding when Details components are nested -
#2413
1c606c5Thanks @AdamLantz! - BETA [TreeSelectField] AddgetChipPropscallback to customize chip props (color, icon, avatar, etc.) per selected option -
#2386
efd6121Thanks @hbartlett-st! - BETA [TypeaheadTextField] Add new component for text input with inline suggestions shown in a popover
3.1.0
Minor Changes
- #2407
5e46d4fThanks @pbuckingham-st! - BETA [DataTable] AddonClickRowprop, called with the clicked row’s id when a row is clicked or activated withEnter
Patch Changes
-
#2378
f13b003Thanks @pbuckingham-st! - [Page] Fix “Maximum update depth exceeded” crash when resizing a page withPage.Content. -
#2372
f8e27aeThanks @hbartlett-st! - BETA [chipsFormatter] WhentruncateChips: true:- Hovering the
+Noverflow chip now shows a tooltip listing every hidden chip label. - Truncation is computed in a hidden off-screen measurement cell, so the visible cell only ever paints the final state. Filtering or re-rendering with new chip sets no longer flickers while widths are calculated.
- The hidden measurement cell no longer extends the table’s scroll area. It previously contributed its full single-row width to the scroll container’s overflow region, letting the table scroll well past its real columns.
- Hovering the
-
Updated dependencies [
2c042ed]:- @servicetitan/hammer-token@3.1.0
3.0.9
Patch Changes
-
#2391
168c5ceThanks @w-a-t-s-o-n! - [Divider] Fix horizontalspacingvalues forhalfand1to match size tokens -
#2376
48c651dThanks @rgdelato! - BETA [DataTable] Remove row active state -
#2376
48c651dThanks @rgdelato! - BETA [DataTable] Add row hover state -
#2400
bd7c4c5Thanks @pbuckingham-st! - BETA [FilterBar] Defer mounting date filter popover content until the popover is open, avoiding unnecessary rendering of the date picker before it is shown -
#2394
7401759Thanks @ericag1985! - BETA [DataTable] Hide footer and pagination when the table is empty -
#2385
a0223e7Thanks @rgdelato! - BETA [DataTable] Allow custom editable cells to acceptnullandundefinedvalues -
#2402
ba729d3Thanks @hbartlett-st! - BETA [htmlFormatter, markdownFormatter] Add support for strikethrough (~~,s/strike/del) and headings (#through###,h1/h2/h3).htmlFormatternow renders underline (u), font size (span), and text alignment (text-alignonp/h1-h3) as plain text, preserving their content instead of dropping it. -
#2295
16ac423Thanks @rgdelato! - BETA [DataTable] Add drag and resize functionality to overflow/editable surface
3.0.8
Patch Changes
-
#2382
e8a385dThanks @pbuckingham-st! - [Popover, Tooltip, Toast, OptionsPopover] Apply the anvil2 theme scope (.anvil2+theme-core) to portaled top-layer (popover) content so popovers, tooltips, toasts, and option popovers keep anvil2 styling and tokens instead of rendering unstyled when they escape the theme provider. [Combobox] Wrap customCombobox.Emptycontent in the same.emptycontainer as the built-in empty state so consumer-provided messages get consistent padding and alignment. -
#2271
ca16764Thanks @AdamLantz! - BETA [TreeSelectField] Add component for hierarchical tree selection with async loading, cascading selection, virtualization, search, and keyboard navigation -
#2373
9752e52Thanks @hbartlett-st! - BETA [FilterBar] FixnumericRangepopover closing between keystrokes in uncontrolled mode (controlledFiltering={false}), which made multi-digit bounds impossible to enter. -
#2373
9752e52Thanks @hbartlett-st! - BETA [FilterBar] AddtextInputfilter type — aTextFieldwith optionalplaceholder,maxLength, andshowCounter(requires a concretemaxLength). Long values are ellipsised in the closed-button label. -
#2379
6c75215Thanks @AdamLantz! - BETA [FilterBar] AddtreeandasyncTreefilter types for hierarchical selection. -
#2355
e9de657Thanks @rgdelato! - BETA [DataTable] Revert stricter type forDataTableRowData -
#2271
ca16764Thanks @AdamLantz! - BETA [TreeSelectMenu] Add component for hierarchical tree selection attached to a custom trigger element, with async loading, client-side filtering viaTreeSelectMenuSync, cascading selection, virtualization, search, and keyboard navigation. -
#2379
6c75215Thanks @AdamLantz! - BETA [TreeSelectMenu] Addconfirmationandclearprops, mirroringMultiSelectMenu.
3.0.7
Patch Changes
-
#2365
0d8b5acThanks @AdamLantz! - BETA [MultiSelectMenu, MultiSelectMenuSync, SelectMenu, SelectMenuSync] Addclearconfig prop that renders a Clear button in the menu footer; presence of the prop enables the button, omit to suppress -
#2365
0d8b5acThanks @AdamLantz! - BETA [FilterBar] Add a Clear button to filter popover footers. Always on forsingleSelect,asyncSelect,multiSelect,asyncMultiSelect,date,dateRange, anddateList. Clear commits an empty value immediately and closes the menu. -
#2370
7b75a84Thanks @AdamLantz! - BETA [FilterBar] Align thecustom,date,dateRange, anddateListfilter popover shell with the menu-based filter types. Popover sizing rules, padding, and the footer actions now match selection filters, eliminating visual drift. -
#2350
ebd6b58Thanks @ericag1985! - BETA [FilterBar] AdddrawerOnlyflag to keep a filter exclusively in the drawer; the “All Filters” button now only appears when a filter is unreachable from the toolbar -
#2367
4719b63Thanks @hbartlett-st! - BETA [FilterBar/FilterDrawer] AddnumericRangefilter type with min/maxNumberFieldinputs, optionalcurrency/percentagedecoratormode,minValue/maxValueclamping, andinclusiveBoundsfor toggling between≥/≤and>/<bound semantics. -
#2364
f2f294dThanks @AdamLantz! - BETA [FilterBar] AddasyncSelectandasyncMultiSelectfilter types, supporting the full feature set of theSelectMenuandMultiSelectMenucomponents, respectively. -
#2364
f2f294dThanks @AdamLantz! - BETA [FilterBar]: Breaking rework ofsingleSelect/multiSelectfilter types to align withSelectMenuSyncandMultiSelectMenuSyncAPIs. Field renames (items→options,selectedItem→selectedOption,selectedItems→selectedOptions); theItemgeneric is removed (use theSelectMenuOptionshape withextrafor custom metadata);hasSearch/onSearch/onSearchClear/searchValueare removed — client-side filtering is automatic via match-sorter, override with the newfilterprop. See the migration guide. -
#2352
ef51a6eThanks @ericag1985! - BETA [FilterBar] Remove theoverflowprop; FilterBar always wraps. Shift the drawer-only collapse breakpoint from 768px to 640px. AdddisableCollapseprop to keep filters inline at every container width. Theidprop onFilterToggleButtonnow lands on the rendered<button>element. -
#2317
28f1bf2Thanks @rgdelato! - BETA [DataTable] Add cursor-style pagination support -
#2366
4a60780Thanks @AdamLantz! - BETA [SavedFiltersButton] Add new standalone beta component for managing saved filter presets. Designed to compose withFilterBar. -
#2363
b2cc770Thanks @AdamLantz! - BETA [MultiSelectMenu, MultiSelectMenuSync] Add opt-inconfirmationprop. When enabled, the menu buffers selection as a draft and only commits on Apply.MultiSelectMenuandMultiSelectFieldalso accept a newcomputevariant ofselectAll/selectFilteredthat integrates bulk actions with the confirmation draft and supports async resolution (the menu shows a loading state while the returned promise is pending); the existingonClickshape still works for the non-confirmation case. -
#2353
e5e7ae3Thanks @rgdelato! - [Combobox, ComboboxSelect] Bugfix for performance issues with a large number of selected items -
#2358
1d17553Thanks @AdamLantz! - BETA [MultiSelectField] Fix incorrect box-shadow appearing above input field
3.0.6
Patch Changes
-
#2346
9a175d8Thanks @ericag1985! - BETA [SelectField] FixdisableSearchtrigger height and padding to match the input-based trigger -
#2343
8158aaaThanks @ericag1985! - [Checkbox, Radio] Addcursor: pointerto label -
#2346
9a175d8Thanks @ericag1985! - BETA [FilterBar] AdddateListfilter type for picking from a list of date buckets -
#2344
436a99bThanks @pbuckingham-st! - [DaysOfTheWeek] Fix clipped focus ring on day buttons -
#2337
f8a1179Thanks @ericag1985! - [Dialog] Fix scrollbar overlapping rounded corners by moving scrolling to an inner element inset from the container edges -
#2338
13c5fecThanks @tounsoo! - [Icons] Update 13 custom ServiceTitan icon SVGs to union vectors and remove stalefill/clip-pathattributes so they render correctly with theIconcolorprop -
#2343
8158aaaThanks @ericag1985! - [Tooltip] Removeposition: absolute !importantthat broke scrolling on positioned ancestors
3.0.5
Patch Changes
-
#2336
0277423Thanks @w-a-t-s-o-n! - BETA [FilterBar] Update filter drawer comboboxSearchFieldandSelectTriggerto usemediumsize instead ofsmall -
#2313
13093b7Thanks @AdamLantz! - BETA [MultiSelectField, MultiSelectMenu, SelectField, SelectMenu] AddaddItemLabelandonAddNewItemprops to render a persistent “Add new item” affordance below the option list. -
#2324
e4a8d56Thanks @pbuckingham-st! - [AnvilProvider] Fix unstyled Anvil2 components inside Anvil1 takeovers (Modal, Dialog, Drawer) by mirroring the.anvil2class ontodocument.body.
3.0.4
Patch Changes
-
#2297
75aafc5Thanks @ericag1985! - BETA [DataTable] Fix keyboard a11y for cells with actionable elements -
#2298
8d8529bThanks @w-a-t-s-o-n! - BETA [MultiSelectField, SelectField] Fix input box-shadow and dropdown outline leaks afterreset()mixin no longer appliesall: unset -
#2274
8786d1aThanks @rgdelato! - Bump versions of TypeScript to^6.0.3 -
#2298
8d8529bThanks @w-a-t-s-o-n! - [Components] Remove blanketall: unsetfrom the shared SCSSreset()mixin used across component surfaces. -
#2298
8d8529bThanks @w-a-t-s-o-n! - [Breadcrumbs, Link] Fix focus and hover styles for links. -
#2299
3be5f1aThanks @ericag1985! - BETA [RichTextEditor] Stabilize drag-handle callbacks so the drag plugin no longer re-registers on every render, which was closing the mention popover whenallowDragDropandallowMentionwere both enabled in controlled mode -
#2299
3be5f1aThanks @ericag1985! - BETA [RichTextEditor] Setfont-familyon the editor body so content uses the Anvil2 paragraph font instead of the user-agent default -
#2280
f7fe2caThanks @rgdelato! - BETA [DataTable] Addoverflowoption to display full cell contents -
#2298
8d8529bThanks @w-a-t-s-o-n! - [Button, List, ListView, Menu, Overflow, Popover, SideNav, Stepper, Switch, Tab, Text, TextField, Tooltip] Fix UA style leaks (input shadow, outline, line-height, text-align, popover positioning, heading bidi) afterreset()mixin no longer appliesall: unset -
#2298
8d8529bThanks @w-a-t-s-o-n! - [Breadcrumbs] Updatebreadcrumb.link.foreground.colortoforeground.color.default -
Updated dependencies [
8786d1a,8d8529b]:- @servicetitan/hammer-token@3.0.2
3.0.3
Patch Changes
-
#2291
2f03aa4Thanks @AdamLantz! - BETA [SelectField, MultiSelectField] AddmoreInfoprop for displaying a tooltip next to the label -
#2296
5dfc370Thanks @rgdelato! - BETA [DataTable] UpdatechipsFormatterto default to"small"Chips -
#2306
c47f10bThanks @AdamLantz! - [NumberField] FixreadOnlyallowing value changes via Arrow keys, PageUp/PageDown, and Home/End.
3.0.2
Patch Changes
-
#2289
9d9c1c3Thanks @w-a-t-s-o-n! - [CSS Utils] Scope publisheda2-*stylesheet rules under.anvil2using thecss-utils-anvil2-scopeplugin in the rootpostcss.config.js, run frombuild:css-utilsaftercopy-css-utils, so utilities match Anvil2 component specificity insideAnvilProvider. -
#2201
c0e4ae6Thanks @rgdelato! - BETA [DataTable] Addcustomeditable cell type -
#2165
f40924eThanks @sasuntitan! - BETA [RichTextEditor] Add newRichTextEditorcomponent for authoring formatted rich text content -
#2285
a05cb7fThanks @ericag1985! - BETA [InteractiveCard] Fix click handling so nested form controls (Switch, TextField, contenteditable, etc.) receive their own clicks instead of triggering the card action -
Updated dependencies [
9d9c1c3]:- @servicetitan/hammer-token@3.0.1
3.0.1
Patch Changes
-
#2277
e7f4eccThanks @pbuckingham-st! - Stop emitting the@layer starter, reset, base, state, application;ordering statement in component CSS so strict minifiers (e.g. lightningcss) accept the emitted stylesheets. -
#2265
4c802eaThanks @ericag1985! - [Avatar, Dialog, Drawer, Text] Fixundefinedappearing as a DOM class name whensize="medium"and no.mediumCSS class exists -
#2263
04d03feThanks @AdamLantz! - [Utilities] Add a handful of missing css-utils -
#2203
3b48e37Thanks @pbuckingham-st! - BETA [FilterBar] ExtractToolbar.Filtersinto standaloneFilterBarcomponent with independentassociatedContent,size, andoverflowprops. RemoveToolbar.Filterscompound export. Filter types (Filter,BooleanFilter, etc.) are now exported fromFilterBarinstead ofToolbar.
3.0.0
Major Changes
Patch Changes
-
#1899
6ea319aThanks @tounsoo! - [AiMark] Migrate CSS to 3.0 patterns (remove@layerwrapping and adopt.anvil2specificity scoping). -
#1899
6ea319aThanks @tounsoo! - [FieldLabel][Switch] Position AI Mark on the far right of the container in label-row headings (CheckboxGroup, RadioGroup, SelectCardGroup via FieldLabel) and Switch. -
#1899
6ea319aThanks @tounsoo! - [Alert] Fix content padding. -
#1899
6ea319aThanks @tounsoo! - [Alert] Fix status icon size and vertical alignment with title. -
#1899
6ea319aThanks @tounsoo! - [Breadcrumbs, Button, ButtonCompound, ButtonToggle, ThemeProvider] Update styles to use new design tokens -
#1899
6ea319aThanks @tounsoo! - [EditCard, FieldLabel, FieldMessage, Icon, Link, ListView, Listbox, Menu, Overflow, Page, Pagination, Popover, ProgressBar, Radio, SearchField, SegmentedControl, SelectCard, SideNav, Skeleton, Spinner, Stepper, Switch, Tab, Text, TextField, Textarea, Toast, Toolbar, Tooltip]: Apply component tokens to SCSS files. -
#1899
6ea319aThanks @tounsoo! - [Tokens] Add Avatar component design tokens and migrate SCSS to use token variables. -
#1899
6ea319aThanks @tounsoo! - [Checkbox] Restore indeterminate icon precedence so the indeterminate state renders its icon regardless of thecheckedvalue. -
#1899
6ea319aThanks @tounsoo! - [Combobox, MultiSelectField] Fix group layout regression in option lists. -
#1899
6ea319aThanks @tounsoo! - [Tokens] Add Announcement component design tokens, missing foreground tokens for success, and migrate SCSS to use token variables. -
#1899
6ea319aThanks @tounsoo! - BETA [InteractiveCard] Migrate to 3.0 patterns (unwrap@layerblocks) and expose a new--a2-mod-interactive-card-action-background-colorcustom property for background overrides. -
#1899
6ea319aThanks @tounsoo! - [Tokens][Menu] Addmenu.itemhover and active state tokens (foreground.color-hover,foreground.color-active,background.color-active) and wire them through Menu styles. -
#1899
6ea319aThanks @tounsoo! - [Tokens] Add Badge component design tokens and migrate SCSS to use token variables. -
#1899
6ea319aThanks @tounsoo! - [SelectCard, YearSelector, Calendar, Page] Restore focus-ring and layout regressions dropped during rc-3.0.0 merges: SelectCard inner Checkbox/Radio className wiring, YearSelector focus ring via SelectCard’sfocus-labelmechanism, Calendar.cell:focus-visiblering ontabindex=-1cells, and Pagecontent-wrapper { grid-area: content; }so PageContent’s virtual-scroll ResizeObserver does not inflate the grid row -
#1899
6ea319aThanks @tounsoo! - BETA [Select] Fix option text color. -
#1899
6ea319aThanks @tounsoo! - [SelectMenu] Repair popover styling regressions (border, shadow, and highlighted row background). -
#1899
6ea319aThanks @tounsoo! - [Tokens][SideNav] Restructure SideNav tokens and update SideNav styles to match. Consumers referencing the prior SideNav token names must migrate to the new shape -
#1899
6ea319aThanks @tounsoo! - [Details, Dialog, Divider, Dnd, Drawer, DrillDown] Update styles to use new component tokens -
#1899
6ea319aThanks @tounsoo! - [Tokens][Switch] Restructure Switch tokens (new hierarchy and shadow token scoping) and update Switch styles to match. Consumers referencing the prior Switch token names must migrate to the new shape -
#1899
6ea319aThanks @tounsoo! - [Tokens] Consolidate TextField, Textarea, and SearchField tokens into a singletext-fieldtoken set.search-field.tokens.jsonandtextarea.tokens.jsonare removed; their tokens are merged intotext-field.tokens.jsonwith a flattened hierarchy and renames (e.g.background-color-strong→background-color-disabled). Consumers of the prior per-component token names must migrate -
#1899
6ea319aThanks @tounsoo! - [Text] Removeletter-spacingfrom theheadlinevariant (all sizes). -
#1899
6ea319aThanks @tounsoo! - [Toast] Rename--a2-local-toaster-stack-paddingCSS custom property to--a2-mod-toaster-stack-paddingto align with the--a2-mod-*convention for component-local overrides. -
#1899
6ea319aThanks @tounsoo! - [Button] Apply disabled opacity via design token. [Calendar] Refactor styles to use design tokens and--a2-mod-*custom properties. [Card] Update styles to use design tokens. [Checkbox] Update styles to use design tokens. [Chip] Update styles to use design tokens. [Combobox] Update styles to use design tokens. [Icon] Rename custom properties from--a2-local-icon-*to--a2-mod-icon-*. -
#1899
6ea319aThanks @tounsoo! - [Tokens] Add Alert component design tokens and migrate SCSS to use token variables. -
Updated dependencies [
6ea319a,6ea319a,6ea319a,6ea319a,6ea319a,6ea319a,6ea319a,6ea319a,6ea319a,6ea319a,6ea319a,6ea319a,6ea319a,6ea319a,6ea319a,6ea319a,6ea319a,6ea319a,6ea319a,6ea319a,6ea319a]:- @servicetitan/hammer-token@3.0.0