@servicetitan/anvil2 1.40.3 → 1.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/dist/{Calendar-KVYGk3wS-CEptqxjI.js → Calendar-CNrdcd3f-BAKv-Gz3.js} +6 -4
- package/dist/{Calendar-KVYGk3wS-CEptqxjI.js.map → Calendar-CNrdcd3f-BAKv-Gz3.js.map} +1 -1
- package/dist/{Calendar-2q8zRbMK.js → Calendar-MIwfKzm7.js} +2 -2
- package/dist/{Calendar-2q8zRbMK.js.map → Calendar-MIwfKzm7.js.map} +1 -1
- package/dist/Calendar.js +1 -1
- package/dist/{Checkbox-cfgZP7Z2.js → Checkbox-IPM-sdvR.js} +2 -2
- package/dist/{Checkbox-cfgZP7Z2.js.map → Checkbox-IPM-sdvR.js.map} +1 -1
- package/dist/{Checkbox-Qucv_PK8-Bovwdnlj.js → Checkbox-JWDraGFN--7ptfLKN.js} +2 -2
- package/dist/{Checkbox-Qucv_PK8-Bovwdnlj.js.map → Checkbox-JWDraGFN--7ptfLKN.js.map} +1 -1
- package/dist/Checkbox.js +1 -1
- package/dist/{Combobox-3l2SK47T.js → Combobox-CM8DmNMs.js} +4 -4
- package/dist/{Combobox-3l2SK47T.js.map → Combobox-CM8DmNMs.js.map} +1 -1
- package/dist/Combobox.js +1 -1
- package/dist/{DateField-BQFAvS78.js → DateField-BDJEsVc1.js} +8 -8
- package/dist/{DateField-BQFAvS78.js.map → DateField-BDJEsVc1.js.map} +1 -1
- package/dist/DateField.js +1 -1
- package/dist/{DateFieldRange-CGA5ZTRa.js → DateFieldRange-BTq6MrNu.js} +2 -2
- package/dist/DateFieldRange-BTq6MrNu.js.map +1 -0
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-eP5l_TrQ.js → DateFieldSingle-CaeOLrI4.js} +2 -2
- package/dist/DateFieldSingle-CaeOLrI4.js.map +1 -0
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldRange-BRjBcR4r-CfuSiOfZ.js → DateFieldYearless-CJP3H_Dg-BV5wGJp1.js} +257 -17
- package/dist/DateFieldYearless-CJP3H_Dg-BV5wGJp1.js.map +1 -0
- package/dist/DateFieldYearless-CbFo3oyZ.js +22 -0
- package/dist/DateFieldYearless-CbFo3oyZ.js.map +1 -0
- package/dist/DateFieldYearless.d.ts +2 -0
- package/dist/DateFieldYearless.js +2 -0
- package/dist/DateFieldYearless.js.map +1 -0
- package/dist/{DaysOfTheWeek-Dl31wkmU.js → DaysOfTheWeek-8zaAuw55.js} +2 -2
- package/dist/{DaysOfTheWeek-Dl31wkmU.js.map → DaysOfTheWeek-8zaAuw55.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Dialog-CJZEBa5r.js → Dialog-DnZE02ob.js} +9 -5
- package/dist/Dialog-DnZE02ob.js.map +1 -0
- package/dist/Dialog.js +1 -1
- package/dist/{Drawer-Cj3nJc4k.js → Drawer-5kgL0gY9.js} +2 -2
- package/dist/{Drawer-Cj3nJc4k.js.map → Drawer-5kgL0gY9.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/FieldLabel-D5rNXy6h.js +13 -0
- package/dist/FieldLabel-D5rNXy6h.js.map +1 -0
- package/dist/FieldLabel.d.ts +6 -0
- package/dist/FieldLabel.js +2 -0
- package/dist/FieldLabel.js.map +1 -0
- package/dist/{InputMask-BdLGTTAk.js → InputMask-B6kMdXCB.js} +2 -2
- package/dist/{InputMask-BdLGTTAk.js.map → InputMask-B6kMdXCB.js.map} +1 -1
- package/dist/{InputMask-Hn-xudp1-BKhtZ7Zk.js → InputMask-BLZh7hka-CTcRCY2k.js} +2 -2
- package/dist/{InputMask-Hn-xudp1-BKhtZ7Zk.js.map → InputMask-BLZh7hka-CTcRCY2k.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{ListView-_YFTewqc.js → ListView-cMMBtp1O.js} +3 -3
- package/dist/{ListView-_YFTewqc.js.map → ListView-cMMBtp1O.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{Menu-CffX1bPZ-BeEOvryY.js → Menu-CAiyc2zk-rxU7H28t.js} +3 -3
- package/dist/{Menu-CffX1bPZ-BeEOvryY.js.map → Menu-CAiyc2zk-rxU7H28t.js.map} +1 -1
- package/dist/{Menu-1EwVMNIw.js → Menu-Dk3ESnzI.js} +2 -2
- package/dist/{Menu-1EwVMNIw.js.map → Menu-Dk3ESnzI.js.map} +1 -1
- package/dist/Menu.js +1 -1
- package/dist/{Page-BikjTlTM.js → Page-DWeD3rrr.js} +5 -5
- package/dist/{Page-BikjTlTM.js.map → Page-DWeD3rrr.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/Pagination.js.map +1 -1
- package/dist/{Popover-rB4BVx-A.js → Popover-2O1Q-34V.js} +2 -2
- package/dist/{Popover-rB4BVx-A.js.map → Popover-2O1Q-34V.js.map} +1 -1
- package/dist/{Popover-jcmNuir0-DjlCqU1z.js → Popover-DvLcjLjG-Yu5STx-v.js} +77 -14
- package/dist/Popover-DvLcjLjG-Yu5STx-v.js.map +1 -0
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-CzXzPpIX-Clg1J71o.js → ProgressBar-BezETeA3-CeeedJ_w.js} +49 -15
- package/dist/ProgressBar-BezETeA3-CeeedJ_w.js.map +1 -0
- package/dist/{ProgressBar-BL34rg_J.js → ProgressBar-CfstmN5D.js} +2 -2
- package/dist/{ProgressBar-BL34rg_J.js.map → ProgressBar-CfstmN5D.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-BnOSIK1U-1MmGQFPi.js → Radio-8E1l0DJa-CLVaSyQc.js} +3 -3
- package/dist/{Radio-BnOSIK1U-1MmGQFPi.js.map → Radio-8E1l0DJa-CLVaSyQc.js.map} +1 -1
- package/dist/{Radio-BzZUxQa6.js → Radio-P6dkI3W0.js} +2 -2
- package/dist/{Radio-BzZUxQa6.js.map → Radio-P6dkI3W0.js.map} +1 -1
- package/dist/Radio.js +1 -1
- package/dist/{SelectCard-ynL5QcZD-BtBzMtyR.js → SelectCard-m61WUlo--DlByowef.js} +4 -4
- package/dist/{SelectCard-ynL5QcZD-BtBzMtyR.js.map → SelectCard-m61WUlo--DlByowef.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/{SelectCardGroup-D6GuJJB2.js → SelectCardGroup-DIaWX2Vp.js} +2 -2
- package/dist/{SelectCardGroup-D6GuJJB2.js.map → SelectCardGroup-DIaWX2Vp.js.map} +1 -1
- package/dist/{SelectTrigger-Bo2VPAD0.js → SelectTrigger-DKh0Bzy6.js} +2 -2
- package/dist/{SelectTrigger-Bo2VPAD0.js.map → SelectTrigger-DKh0Bzy6.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-BGHwx0mN-B3HiW5tQ.js → SelectTriggerBase-DnRvuD3R-CTFWVZhY.js} +3 -3
- package/dist/{SelectTriggerBase-BGHwx0mN-B3HiW5tQ.js.map → SelectTriggerBase-DnRvuD3R-CTFWVZhY.js.map} +1 -1
- package/dist/{TextField-COXABNrR.js → TextField--tytNBLh.js} +2 -2
- package/dist/{TextField-COXABNrR.js.map → TextField--tytNBLh.js.map} +1 -1
- package/dist/{TextField-BIeCvDD--C7yp05g5.js → TextField-D_fqJf85-Bcd6rWv4.js} +2 -2
- package/dist/{TextField-BIeCvDD--C7yp05g5.js.map → TextField-D_fqJf85-Bcd6rWv4.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-D6K3Jc5_.js → Textarea-B0nZ9vOV.js} +2 -2
- package/dist/{Textarea-D6K3Jc5_.js.map → Textarea-B0nZ9vOV.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/Toast.js +1 -1
- package/dist/{Toolbar-CLsgDAKk.js → Toolbar-BM78DEEM.js} +3 -3
- package/dist/{Toolbar-CLsgDAKk.js.map → Toolbar-BM78DEEM.js.map} +1 -1
- package/dist/Toolbar.js +1 -1
- package/dist/{Tooltip-B_swJyoW.js → Tooltip-ZFFXA77Y.js} +2 -2
- package/dist/{Tooltip-B_swJyoW.js.map → Tooltip-ZFFXA77Y.js.map} +1 -1
- package/dist/Tooltip.js +1 -1
- package/dist/components/DateFieldRange/DateFieldRange.d.ts +4 -1
- package/dist/components/DateFieldRange/index.d.ts +1 -2
- package/dist/components/DateFieldSingle/DateFieldSingle.d.ts +3 -1
- package/dist/components/DateFieldSingle/index.d.ts +1 -2
- package/dist/components/DateFieldYearless/DateFieldYearless.d.ts +62 -0
- package/dist/components/DateFieldYearless/index.d.ts +1 -0
- package/dist/components/Dialog/Dialog.d.ts +1 -1
- package/dist/components/Drawer/Drawer.d.ts +1 -1
- package/dist/components/FieldLabel/FieldLabel.d.ts +8 -0
- package/dist/components/FieldLabel/index.d.ts +2 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/index.js +25 -23
- package/dist/index.js.map +1 -1
- package/dist/{toast-CJSBieY0.js → toast-uADTqqrS.js} +2 -2
- package/dist/{toast-CJSBieY0.js.map → toast-uADTqqrS.js.map} +1 -1
- package/package.json +3 -3
- package/dist/DateFieldRange-BRjBcR4r-CfuSiOfZ.js.map +0 -1
- package/dist/DateFieldRange-CGA5ZTRa.js.map +0 -1
- package/dist/DateFieldSingle-eP5l_TrQ.js.map +0 -1
- package/dist/Dialog-CJZEBa5r.js.map +0 -1
- package/dist/Popover-jcmNuir0-DjlCqU1z.js.map +0 -1
- package/dist/ProgressBar-CzXzPpIX-Clg1J71o.js.map +0 -1
- /package/dist/{Calendar-KVYGk3wS.css → Calendar-CNrdcd3f.css} +0 -0
- /package/dist/{Menu-CffX1bPZ.css → Menu-CAiyc2zk.css} +0 -0
- /package/dist/{Popover-jcmNuir0.css → Popover-DvLcjLjG.css} +0 -0
- /package/dist/{ProgressBar-CzXzPpIX.css → ProgressBar-BezETeA3.css} +0 -0
- /package/dist/{Radio-BnOSIK1U.css → Radio-8E1l0DJa.css} +0 -0
- /package/dist/{SelectCard-ynL5QcZD.css → SelectCard-m61WUlo-.css} +0 -0
- /package/dist/{SelectTriggerBase-BGHwx0mN.css → SelectTriggerBase-DnRvuD3R.css} +0 -0
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export
|
|
2
|
-
export type { DateFieldSingleProps } from './DateFieldSingle';
|
|
1
|
+
export * from './DateFieldSingle';
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { DateFieldYearlessProps as CoreDateFieldYearlessProps, DateFieldYearlessChange as CoreDateFieldYearlessChange, DateFieldYearlessChangeHandler as CoreDateFieldYearlessChangeHandler, YearlessDate as CoreYearlessDate, YearlessDateMode as CoreYearlessDateMode } from '@servicetitan/hammer-react';
|
|
2
|
+
import { DataTrackingId } from '../../types/DataTrackingId';
|
|
3
|
+
/**
|
|
4
|
+
* Props for the DateFieldYearless component
|
|
5
|
+
* @property {YearlessDate | null} [value] - The controlled value of the date field
|
|
6
|
+
* @property {YearlessDate | null} [defaultValue] - The default value for uncontrolled usage
|
|
7
|
+
* @property {DateFieldYearlessChangeHandler} [onChange] - Callback function when the date value changes
|
|
8
|
+
* @property {YearlessDateMode} [mode] - The date format mode (mm/dd or dd/mm)
|
|
9
|
+
* @property {boolean} [disableHint] - Whether to disable the hint text
|
|
10
|
+
* @property {boolean} [required] - Whether the field is required
|
|
11
|
+
* @property {YearlessDate | null} [minDate] - The minimum allowed date
|
|
12
|
+
* @property {YearlessDate | null} [maxDate] - The maximum allowed date
|
|
13
|
+
* @property {Object} [unavailable] - Configuration for unavailable dates
|
|
14
|
+
* @property {YearlessDate[]} [unavailable.dates] - Array of dates that are not selectable
|
|
15
|
+
* @extends CoreDateFieldYearlessProps
|
|
16
|
+
* @extends DataTrackingId
|
|
17
|
+
*/
|
|
18
|
+
export type DateFieldYearlessProps = CoreDateFieldYearlessProps & DataTrackingId;
|
|
19
|
+
/**
|
|
20
|
+
* Represents a change event for the DateFieldYearless component
|
|
21
|
+
* @property {YearlessDate | null} value - The current date value
|
|
22
|
+
* @property {boolean} isInputValid - Whether the input is valid
|
|
23
|
+
* @property {boolean} isInputEmpty - Whether the input is empty
|
|
24
|
+
* @property {boolean} isValid - Whether the overall value is valid
|
|
25
|
+
*/
|
|
26
|
+
export type DateFieldYearlessChange = CoreDateFieldYearlessChange;
|
|
27
|
+
/**
|
|
28
|
+
* Handler function for DateFieldYearless change events
|
|
29
|
+
* @param change - The change event object
|
|
30
|
+
*/
|
|
31
|
+
export type DateFieldYearlessChangeHandler = CoreDateFieldYearlessChangeHandler;
|
|
32
|
+
/**
|
|
33
|
+
* Represents a date without a year component
|
|
34
|
+
* @property {number | null} day - The day of the month (1-31)
|
|
35
|
+
* @property {number | null} month - The month of the year (1-12)
|
|
36
|
+
*/
|
|
37
|
+
export type YearlessDate = CoreYearlessDate;
|
|
38
|
+
/**
|
|
39
|
+
* The format mode for yearless date input
|
|
40
|
+
* @typedef {"mm/dd" | "dd/mm"} YearlessDateMode
|
|
41
|
+
*/
|
|
42
|
+
export type YearlessDateMode = CoreYearlessDateMode;
|
|
43
|
+
/**
|
|
44
|
+
* DateFieldYearless component for inputting dates without year information.
|
|
45
|
+
*
|
|
46
|
+
* Features:
|
|
47
|
+
* - Supports both controlled and uncontrolled usage
|
|
48
|
+
* - Supports different date formats (mm/dd or dd/mm)
|
|
49
|
+
* - Supports layout utilities for positioning and spacing
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* <DateFieldYearless
|
|
53
|
+
* label="Birthday"
|
|
54
|
+
* mode="mm/dd"
|
|
55
|
+
* required
|
|
56
|
+
* onChange={(change) => console.log('Date changed:', change.value)}
|
|
57
|
+
* />
|
|
58
|
+
*/
|
|
59
|
+
export declare const DateFieldYearless: {
|
|
60
|
+
(props: DateFieldYearlessProps): import("react/jsx-runtime").JSX.Element;
|
|
61
|
+
displayName: string;
|
|
62
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './DateFieldYearless';
|
|
@@ -130,7 +130,7 @@ export declare const DialogCancelButton: import('react').ForwardRefExoticCompone
|
|
|
130
130
|
* </Dialog.Footer>
|
|
131
131
|
* </Dialog>
|
|
132
132
|
*/
|
|
133
|
-
export declare const Dialog: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').DialogHTMLAttributes<HTMLDialogElement>, HTMLDialogElement>, "ref"> & import('@servicetitan/hammer-react/dist/hooks/
|
|
133
|
+
export declare const Dialog: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').DialogHTMLAttributes<HTMLDialogElement>, HTMLDialogElement>, "ref"> & import('@servicetitan/hammer-react/dist/hooks/useOpenCloseTransitionStates').OpenCloseTransitionStateEffects & import('@servicetitan/hammer-react').DisableCloseOnEscapeOrClickProps & {
|
|
134
134
|
fullScreen?: boolean;
|
|
135
135
|
size?: Extract<import('@servicetitan/hammer-react').Size, "medium" | "large">;
|
|
136
136
|
open?: boolean;
|
|
@@ -140,7 +140,7 @@ export declare const DrawerContent: import('react').ForwardRefExoticComponent<Om
|
|
|
140
140
|
* </Drawer.Footer>
|
|
141
141
|
* </Drawer>
|
|
142
142
|
*/
|
|
143
|
-
export declare const Drawer: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').DialogHTMLAttributes<HTMLDialogElement>, HTMLDialogElement>, "ref"> & import('@servicetitan/hammer-react/dist/hooks/
|
|
143
|
+
export declare const Drawer: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').DialogHTMLAttributes<HTMLDialogElement>, HTMLDialogElement>, "ref"> & import('@servicetitan/hammer-react/dist/hooks/useOpenCloseTransitionStates').OpenCloseTransitionStateEffects & import('@servicetitan/hammer-react').DisableCloseOnEscapeOrClickProps & {
|
|
144
144
|
size?: Extract<import('@servicetitan/hammer-react').Size, "medium" | "large">;
|
|
145
145
|
open?: boolean;
|
|
146
146
|
onClose?: () => void;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LabelProps as CoreFieldLabelProps } from '@servicetitan/hammer-react';
|
|
2
|
+
export type FieldLabelProps = CoreFieldLabelProps;
|
|
3
|
+
export declare const FieldLabel: import('react').ForwardRefExoticComponent<Omit<Omit<import('react').DetailedHTMLProps<import('react').LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, "ref">, "id"> & {
|
|
4
|
+
id?: string;
|
|
5
|
+
required?: boolean;
|
|
6
|
+
moreInfo?: import('react').ReactNode;
|
|
7
|
+
openMoreInfo?: import('@servicetitan/hammer-react').TooltipProps["open"];
|
|
8
|
+
} & import('react').RefAttributes<HTMLLabelElement>>;
|
|
@@ -15,6 +15,7 @@ export * from './Combobox';
|
|
|
15
15
|
export * from './DateField';
|
|
16
16
|
export * from './DateFieldRange';
|
|
17
17
|
export * from './DateFieldSingle';
|
|
18
|
+
export * from './DateFieldYearless';
|
|
18
19
|
export * from './DaysOfTheWeek';
|
|
19
20
|
export * from './Details';
|
|
20
21
|
export * from './Dialog';
|
|
@@ -23,6 +24,7 @@ export * from './Dnd';
|
|
|
23
24
|
export * from './DndSort';
|
|
24
25
|
export * from './Drawer';
|
|
25
26
|
export * from './EditCard';
|
|
27
|
+
export * from './FieldLabel';
|
|
26
28
|
export * from './FieldMessage';
|
|
27
29
|
export * from './Flex';
|
|
28
30
|
export * from './Grid';
|
package/dist/index.js
CHANGED
|
@@ -7,41 +7,43 @@ export { B as Button } from './Button-DMQKV2sV.js';
|
|
|
7
7
|
export { B as ButtonCompound } from './ButtonCompound-DGuF0zzT.js';
|
|
8
8
|
export { B as ButtonLink } from './ButtonLink-B0NJuVk5.js';
|
|
9
9
|
export { B as ButtonToggle } from './ButtonToggle-CKVyEODc.js';
|
|
10
|
-
export { C as Calendar, b as CalendarMonth, e as CalendarMonthButton, c as CalendarNext, a as CalendarNow, d as CalendarPrev, f as CalendarYearButton } from './Calendar-
|
|
10
|
+
export { C as Calendar, b as CalendarMonth, e as CalendarMonthButton, c as CalendarNext, a as CalendarNow, d as CalendarPrev, f as CalendarYearButton } from './Calendar-MIwfKzm7.js';
|
|
11
11
|
export { C as Card } from './Card-U2IJPk8B.js';
|
|
12
|
-
export { C as Checkbox, a as CheckboxGroup } from './Checkbox-
|
|
12
|
+
export { C as Checkbox, a as CheckboxGroup } from './Checkbox-IPM-sdvR.js';
|
|
13
13
|
export { C as Chip } from './Chip-BlLavyIK.js';
|
|
14
|
-
export { C as Combobox, c as ComboboxContent, a as ComboboxElement, i as ComboboxEmpty, g as ComboboxItem, h as ComboboxItemAddNew, f as ComboboxList, d as ComboboxSearchField, b as ComboboxSelect, e as ComboboxSelectTrigger, u as useInfiniteCombobox } from './Combobox-
|
|
15
|
-
export { D as DateField } from './DateField-
|
|
16
|
-
export { D as DateFieldRange } from './DateFieldRange-
|
|
17
|
-
export { D as DateFieldSingle } from './DateFieldSingle-
|
|
18
|
-
export { D as
|
|
14
|
+
export { C as Combobox, c as ComboboxContent, a as ComboboxElement, i as ComboboxEmpty, g as ComboboxItem, h as ComboboxItemAddNew, f as ComboboxList, d as ComboboxSearchField, b as ComboboxSelect, e as ComboboxSelectTrigger, u as useInfiniteCombobox } from './Combobox-CM8DmNMs.js';
|
|
15
|
+
export { D as DateField } from './DateField-BDJEsVc1.js';
|
|
16
|
+
export { D as DateFieldRange } from './DateFieldRange-BTq6MrNu.js';
|
|
17
|
+
export { D as DateFieldSingle } from './DateFieldSingle-CaeOLrI4.js';
|
|
18
|
+
export { D as DateFieldYearless } from './DateFieldYearless-CbFo3oyZ.js';
|
|
19
|
+
export { D as DaysOfTheWeek } from './DaysOfTheWeek-8zaAuw55.js';
|
|
19
20
|
export { D as Details, b as DetailsContent, a as DetailsSummary } from './Details-DVg0EOkv.js';
|
|
20
|
-
export { D as Dialog, d as DialogCancelButton, c as DialogContent, b as DialogFooter, a as DialogHeader } from './Dialog-
|
|
21
|
+
export { D as Dialog, d as DialogCancelButton, c as DialogContent, b as DialogFooter, a as DialogHeader } from './Dialog-DnZE02ob.js';
|
|
21
22
|
export { D as Divider } from './Divider-CN36wX4s.js';
|
|
22
23
|
export { D as Dnd } from './index-CKfiQx8n-4nziUo7G.js';
|
|
23
24
|
export { D as DndSort, a as DndSortCard, b as DndSortZone } from './DndSort-Cl0FCNQm.js';
|
|
24
|
-
export { D as Drawer, a as DrawerCancelButton, d as DrawerContent, b as DrawerFooter, c as DrawerHeader } from './Drawer-
|
|
25
|
+
export { D as Drawer, a as DrawerCancelButton, d as DrawerContent, b as DrawerFooter, c as DrawerHeader } from './Drawer-5kgL0gY9.js';
|
|
25
26
|
export { E as EditCard } from './EditCard-C0hD1VPA.js';
|
|
27
|
+
export { F as FieldLabel } from './FieldLabel-D5rNXy6h.js';
|
|
26
28
|
export { F as FieldMessage } from './FieldMessage-DkJ0K5s-.js';
|
|
27
29
|
export { F as Flex } from './Flex-Ln6PmaDl.js';
|
|
28
30
|
export { G as Grid } from './Grid-CMcDeSYT.js';
|
|
29
31
|
export { I as Icon } from './Icon-BgKqBmlj.js';
|
|
30
|
-
export { I as InputMask } from './InputMask-
|
|
32
|
+
export { I as InputMask } from './InputMask-B6kMdXCB.js';
|
|
31
33
|
export { L as Layout, a as LayoutElement, b as LayoutItem } from './Layout-CUUb2PVr.js';
|
|
32
34
|
export { L as Link } from './Link-DZa0wmkA.js';
|
|
33
35
|
export { L as Listbox, a as ListboxOption, b as ListboxOptionGroup } from './Listbox-dVARiucB.js';
|
|
34
|
-
export { L as ListView, a as ListViewOption, b as ListViewOptionCell } from './ListView-
|
|
35
|
-
export { M as Menu, a as MenuItem } from './Menu-
|
|
36
|
+
export { L as ListView, a as ListViewOption, b as ListViewOptionCell } from './ListView-cMMBtp1O.js';
|
|
37
|
+
export { M as Menu, a as MenuItem } from './Menu-Dk3ESnzI.js';
|
|
36
38
|
export { O as Overflow, a as OverflowText } from './Overflow-w-3_04fS.js';
|
|
37
|
-
export { P as Page } from './Page-
|
|
38
|
-
export { P as Popover, d as PopoverButton, c as PopoverClose, b as PopoverContent, a as PopoverTrigger } from './Popover-
|
|
39
|
-
export { P as ProgressBar } from './ProgressBar-
|
|
40
|
-
export { R as Radio, a as RadioGroup } from './Radio-
|
|
39
|
+
export { P as Page } from './Page-DWeD3rrr.js';
|
|
40
|
+
export { P as Popover, d as PopoverButton, c as PopoverClose, b as PopoverContent, a as PopoverTrigger } from './Popover-2O1Q-34V.js';
|
|
41
|
+
export { P as ProgressBar } from './ProgressBar-CfstmN5D.js';
|
|
42
|
+
export { R as Radio, a as RadioGroup } from './Radio-P6dkI3W0.js';
|
|
41
43
|
export { S as SearchField } from './SearchField-BGPqpnVd.js';
|
|
42
44
|
export { S as SegmentedControl, a as SegmentedControlSegment } from './SegmentedControl-DKMQuf7s.js';
|
|
43
|
-
export { S as SelectCard, b as SelectCardElement, a as SelectCardGroup } from './SelectCardGroup-
|
|
44
|
-
export { S as SelectTrigger } from './SelectTrigger-
|
|
45
|
+
export { S as SelectCard, b as SelectCardElement, a as SelectCardGroup } from './SelectCardGroup-DIaWX2Vp.js';
|
|
46
|
+
export { S as SelectTrigger } from './SelectTrigger-DKh0Bzy6.js';
|
|
45
47
|
export { S as SideNav, a as SideNavCollapsible, b as SideNavGroup, c as SideNavLink } from './SideNav-DEoGpeqJ.js';
|
|
46
48
|
export { S as Skeleton, a as SkeletonCircle, b as SkeletonPill, c as SkeletonRectangle, d as SkeletonText } from './Skeleton-COxTdwjO.js';
|
|
47
49
|
export { S as Spinner } from './Spinner-C1r3COiQ.js';
|
|
@@ -50,11 +52,11 @@ export { S as Stepper, d as StepperFinalPanel, a as StepperList, e as StepperNex
|
|
|
50
52
|
export { S as Switch } from './Switch-DAQFzi-X.js';
|
|
51
53
|
export { T as Tab, a as TabButton, b as TabList, c as TabPanel } from './Tab-BSC7e4rM.js';
|
|
52
54
|
export { T as Text } from './Text-B91g6xKn.js';
|
|
53
|
-
export { T as Textarea } from './Textarea-
|
|
54
|
-
export { T as TextField } from './TextField
|
|
55
|
-
export { T as Toaster, t as toast } from './toast-
|
|
56
|
-
export { T as Toolbar, b as ToolbarButton, d as ToolbarButtonLink, c as ToolbarButtonToggle, a as ToolbarElement, e as ToolbarSelect } from './Toolbar-
|
|
57
|
-
export { T as Tooltip, b as TooltipContent, a as TooltipTrigger } from './Tooltip-
|
|
55
|
+
export { T as Textarea } from './Textarea-B0nZ9vOV.js';
|
|
56
|
+
export { T as TextField } from './TextField--tytNBLh.js';
|
|
57
|
+
export { T as Toaster, t as toast } from './toast-uADTqqrS.js';
|
|
58
|
+
export { T as Toolbar, b as ToolbarButton, d as ToolbarButtonLink, c as ToolbarButtonToggle, a as ToolbarElement, e as ToolbarSelect } from './Toolbar-BM78DEEM.js';
|
|
59
|
+
export { T as Tooltip, b as TooltipContent, a as TooltipTrigger } from './Tooltip-ZFFXA77Y.js';
|
|
58
60
|
export { u as useAccessibleColor } from './useAccessibleColor-Dc6B_M-Z-BYKjkGRg.js';
|
|
59
61
|
export { u as useBreakpoint } from './useBreakpoint-7QkBkSeP-Cv5fnZxs.js';
|
|
60
62
|
export { u as useLinkStyles } from './Link-Dqp_XXl_-Bv20l_tY.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { forwardRef, useRef, useState, useEffect } from 'react';
|
|
3
3
|
import { u as useMergeRefs } from './useMergeRefs-Bde85AWI-Bde85AWI.js';
|
|
4
|
-
import { h as Toaster$1, t as toast$1 } from './ProgressBar-
|
|
4
|
+
import { h as Toaster$1, t as toast$1 } from './ProgressBar-BezETeA3-CeeedJ_w.js';
|
|
5
5
|
|
|
6
6
|
const SHADOW_HOST_DATA_ATTRS = "[data-mfe-portal-name], [data-mfe-name]";
|
|
7
7
|
const Toaster = forwardRef(
|
|
@@ -93,4 +93,4 @@ Toaster.displayName = Toaster$1.displayName;
|
|
|
93
93
|
const toast = toast$1;
|
|
94
94
|
|
|
95
95
|
export { Toaster as T, toast as t };
|
|
96
|
-
//# sourceMappingURL=toast-
|
|
96
|
+
//# sourceMappingURL=toast-uADTqqrS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toast-CJSBieY0.js","sources":["../src/components/Toast/Toaster.tsx","../src/components/Toast/toast.ts"],"sourcesContent":["import {\n ToasterProps as HammerToasterProps,\n Toaster as HammerToaster,\n useMergeRefs,\n ToastEventType,\n} from \"@servicetitan/hammer-react\";\nimport { Ref, forwardRef, useEffect, useRef, useState } from \"react\";\n\nconst SHADOW_HOST_DATA_ATTRS = \"[data-mfe-portal-name], [data-mfe-name]\";\n\n/**\n * Props for the Toaster component\n * @property {number | false} [duration] - Timeout, in ms, before toasts auto-closes. If set to false, toasts will not auto-close\n * @property {string} id - Unique toaster id\n * @property {(toastEvent: ToastEventType) => void} [onToastEvent] - Callback function that is called when toasts are added, updated, or dismissed\n * @property {number | false} [duration] - Duration of the toast in milliseconds. If set to false, the toast will not auto-dismiss\n * @property {string} [focusKey] - How a screen-reader will announce the hotkey used to set focus on the first toast\n * @property {number} [toastsBeforeStack] - How many toasts to display before they start stacking\n * @extends Omit<HammerToasterProps, \"disableEvents\" | \"duration\">\n */\nexport type ToasterProps = Omit<\n HammerToasterProps,\n \"disableEvents\" | \"duration\"\n> & {\n /**\n * Timeout, in ms, before toasts auto-closes. If set to false, toasts will not auto-close.\n * @deprecated The monolith toaster controls the duration of toasts. This prop should not be used in other cases.\n * @default false\n */\n duration?: number | false;\n};\n\n/**\n * Toaster component for managing and displaying toast notifications with anvil2-specific features.\n *\n * Features:\n * - Manages multiple toast notifications in a stack\n * - Handles toast positioning and stacking behavior\n * - Supports custom events for toast management\n * - Automatic toast dismissal with configurable duration\n * - Keyboard navigation and accessibility support\n * - Dialog-aware positioning for modal contexts\n * - Session storage for dialog toaster state\n * - Custom event system for toast lifecycle management\n * - Responsive design with mobile support\n * - Automatic tracking ID generation for analytics\n * - Monolith toaster integration and coordination\n * - Shadow DOM support for micro-frontend environments\n * - A1 toast group compatibility and positioning\n *\n * @example\n * <Toaster\n * id=\"main-toaster\"\n * duration={5000}\n * toastsBeforeStack={3}\n * onToastEvent={(event) => console.log('Toast event:', event)}\n * />\n *\n * @example\n * <Toaster\n * id=\"dialog-toaster\"\n * disableEvents={false}\n * focusKey=\"t\"\n * />\n */\nexport const Toaster = forwardRef(\n (\n { onToastEvent, ...props }: HammerToasterProps,\n ref: Ref<HTMLDivElement>,\n ) => {\n const { id } = props;\n\n const toasterRef = useRef<HTMLDivElement>(null);\n const mergedToasterRef = useMergeRefs([toasterRef, ref]);\n\n const [shouldDisableEvents, setShouldDisableEvents] =\n useState<boolean>(false);\n\n useEffect(() => {\n const toasters = document.querySelectorAll(\"[data-anv='toaster']\");\n const shadowToasters =\n (\n toasterRef.current?.getRootNode() as Document | ShadowRoot\n )?.querySelectorAll(\"[data-anv='toaster']\") || [];\n\n // Toaster(s) exist in the document, bail out if this toaster is not the first one\n if (\n toasters.length &&\n id !== toasters[0].getAttribute(\"data-toaster-id\")\n ) {\n setShouldDisableEvents(true);\n } else if (\n // Toaster(s) exist in the shadow dom, bail out if this toaster is not the first one\n shadowToasters.length &&\n id !== shadowToasters[0].getAttribute(\"data-toaster-id\")\n ) {\n setShouldDisableEvents(true);\n }\n }, [id]);\n\n const a1ToastGroupObserver = useRef<MutationObserver | null>(null);\n const a1ToastGroupObserverConnected = useRef<boolean>(false);\n const [a1ToastGroups, setA1ToastGroups] = useState<Element[]>([]);\n const [toastCount, setToastCount] = useState<number>(0);\n\n const handleToastEvent = (event: ToastEventType) => {\n const { toastCount: newToastCount } = event;\n setToastCount(newToastCount);\n onToastEvent?.(event);\n };\n\n const updateA1ToastGroups = () => {\n const mfeRoots = document.querySelectorAll(SHADOW_HOST_DATA_ATTRS);\n const a1ToastGroupsLocal = [\n ...document.getElementsByClassName(\"ToastGroup\"),\n ];\n\n if (mfeRoots.length > 0) {\n mfeRoots.forEach((el) => {\n setTimeout(() => {\n if (el.shadowRoot) {\n a1ToastGroupsLocal.push(\n ...el.shadowRoot.querySelectorAll(\".ToastGroup\"),\n );\n }\n setA1ToastGroups(a1ToastGroupsLocal);\n });\n });\n } else {\n setA1ToastGroups(a1ToastGroupsLocal);\n }\n };\n\n useEffect(() => {\n // set mutation observer for a1 toasts after initial render\n a1ToastGroupObserver.current = new MutationObserver(updateA1ToastGroups);\n }, []);\n\n /*\n Listen for any new A1 Toast Groups to adjust styles and\n prevent overlapping.\n */\n useEffect(() => {\n if (a1ToastGroupObserver.current !== null) {\n if (toastCount > 0 && a1ToastGroupObserverConnected.current === false) {\n // listen for any new a1 toasts\n a1ToastGroupObserver.current.observe(document.body, {\n childList: true,\n subtree: true,\n });\n a1ToastGroupObserverConnected.current = true;\n\n // account for already existing a1 toasts\n updateA1ToastGroups();\n } else if (\n toastCount === 0 &&\n a1ToastGroupObserverConnected.current === true\n ) {\n a1ToastGroupObserver.current.disconnect();\n a1ToastGroupObserverConnected.current = false;\n }\n }\n }, [toastCount]);\n\n useEffect(() => {\n if (a1ToastGroups && a1ToastGroups.length > 0) {\n const toasterHeight =\n toasterRef.current?.firstElementChild?.getBoundingClientRect()\n .height as number;\n a1ToastGroups.forEach((group) => {\n (group as HTMLDivElement).style.top =\n toastCount === 0 ? \"16px\" : `calc(${toasterHeight}px + 2.5rem)`;\n });\n }\n // eslint-disable-next-line\n }, [a1ToastGroups.length, toastCount]);\n\n return (\n <HammerToaster\n {...props}\n onToastEvent={handleToastEvent}\n disableEvents={shouldDisableEvents}\n ref={mergedToasterRef}\n />\n );\n },\n);\n\nToaster.displayName = HammerToaster.displayName;\n","import {\n toast as coreToast,\n toastProps as coreToastProps,\n} from \"@servicetitan/hammer-react\";\n\n/**\n * Props for creating toast notifications\n * @property {string} id - Unique identifier for the toast\n * @property {AlertProps[\"status\"]} status - Visual status of the toast (info, success, warning, danger)\n * @property {string} title - Title text displayed in the toast\n * @property {string} [message] - Additional message content to display below the title\n * @property {number | false} [duration] - Duration in milliseconds before auto-dismiss. Set to false to disable auto-dismiss\n * @property {ToastAction & { secondary?: ToastAction }} [actions] - Action buttons to display in the toast\n * @property {ProgressBarProps[\"value\"] | \"indeterminate\"} [progress] - Progress bar value or indeterminate state\n * @property {() => void} [onDismiss] - Callback function called when toast is dismissed, expired, or closed\n * @property {() => void} [onClose] - Callback function called only when the close button is clicked\n * @property {string} [toasterId] - ID of the specific toaster to display the toast in\n */\nexport type toastProps = coreToastProps;\n\n/**\n * Toast utility functions for creating and managing toast notifications.\n *\n * Features:\n * - Create toast notifications with various status types\n * - Update existing toasts with new content\n * - Dismiss individual toasts or all toasts\n * - Support for action buttons and progress bars\n * - Automatic tracking ID generation for analytics\n * - Integration with anvil2 toaster system\n *\n * @example\n * toast.success({\n * id: \"success-toast\",\n * title: \"Success!\",\n * message: \"Your changes have been saved.\"\n * });\n */\nexport const toast = coreToast;\n"],"names":["HammerToaster","coreToast"],"mappings":";;;;;AAQA,MAAM,sBAAyB,GAAA,yCAAA;AAyDxB,MAAM,OAAU,GAAA,UAAA;AAAA,EACrB,CACE,EAAE,YAAA,EAAc,GAAG,KAAA,IACnB,GACG,KAAA;AACH,IAAM,MAAA,EAAE,IAAO,GAAA,KAAA;AAEf,IAAM,MAAA,UAAA,GAAa,OAAuB,IAAI,CAAA;AAC9C,IAAA,MAAM,gBAAmB,GAAA,YAAA,CAAa,CAAC,UAAA,EAAY,GAAG,CAAC,CAAA;AAEvD,IAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAChD,SAAkB,KAAK,CAAA;AAEzB,IAAA,SAAA,CAAU,MAAM;AACd,MAAM,MAAA,QAAA,GAAW,QAAS,CAAA,gBAAA,CAAiB,sBAAsB,CAAA;AACjE,MAAM,MAAA,cAAA,GAEF,WAAW,OAAS,EAAA,WAAA,IACnB,gBAAiB,CAAA,sBAAsB,KAAK,EAAC;AAGlD,MACE,IAAA,QAAA,CAAS,UACT,EAAO,KAAA,QAAA,CAAS,CAAC,CAAE,CAAA,YAAA,CAAa,iBAAiB,CACjD,EAAA;AACA,QAAA,sBAAA,CAAuB,IAAI,CAAA;AAAA,OAC7B,MAAA;AAAA;AAAA,QAEE,eAAe,MACf,IAAA,EAAA,KAAO,eAAe,CAAC,CAAA,CAAE,aAAa,iBAAiB;AAAA,QACvD;AACA,QAAA,sBAAA,CAAuB,IAAI,CAAA;AAAA;AAC7B,KACF,EAAG,CAAC,EAAE,CAAC,CAAA;AAEP,IAAM,MAAA,oBAAA,GAAuB,OAAgC,IAAI,CAAA;AACjE,IAAM,MAAA,6BAAA,GAAgC,OAAgB,KAAK,CAAA;AAC3D,IAAA,MAAM,CAAC,aAAe,EAAA,gBAAgB,CAAI,GAAA,QAAA,CAAoB,EAAE,CAAA;AAChE,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAiB,CAAC,CAAA;AAEtD,IAAM,MAAA,gBAAA,GAAmB,CAAC,KAA0B,KAAA;AAClD,MAAM,MAAA,EAAE,UAAY,EAAA,aAAA,EAAkB,GAAA,KAAA;AACtC,MAAA,aAAA,CAAc,aAAa,CAAA;AAC3B,MAAA,YAAA,GAAe,KAAK,CAAA;AAAA,KACtB;AAEA,IAAA,MAAM,sBAAsB,MAAM;AAChC,MAAM,MAAA,QAAA,GAAW,QAAS,CAAA,gBAAA,CAAiB,sBAAsB,CAAA;AACjE,MAAA,MAAM,kBAAqB,GAAA;AAAA,QACzB,GAAG,QAAS,CAAA,sBAAA,CAAuB,YAAY;AAAA,OACjD;AAEA,MAAI,IAAA,QAAA,CAAS,SAAS,CAAG,EAAA;AACvB,QAAS,QAAA,CAAA,OAAA,CAAQ,CAAC,EAAO,KAAA;AACvB,UAAA,UAAA,CAAW,MAAM;AACf,YAAA,IAAI,GAAG,UAAY,EAAA;AACjB,cAAmB,kBAAA,CAAA,IAAA;AAAA,gBACjB,GAAG,EAAA,CAAG,UAAW,CAAA,gBAAA,CAAiB,aAAa;AAAA,eACjD;AAAA;AAEF,YAAA,gBAAA,CAAiB,kBAAkB,CAAA;AAAA,WACpC,CAAA;AAAA,SACF,CAAA;AAAA,OACI,MAAA;AACL,QAAA,gBAAA,CAAiB,kBAAkB,CAAA;AAAA;AACrC,KACF;AAEA,IAAA,SAAA,CAAU,MAAM;AAEd,MAAqB,oBAAA,CAAA,OAAA,GAAU,IAAI,gBAAA,CAAiB,mBAAmB,CAAA;AAAA,KACzE,EAAG,EAAE,CAAA;AAML,IAAA,SAAA,CAAU,MAAM;AACd,MAAI,IAAA,oBAAA,CAAqB,YAAY,IAAM,EAAA;AACzC,QAAA,IAAI,UAAa,GAAA,CAAA,IAAK,6BAA8B,CAAA,OAAA,KAAY,KAAO,EAAA;AAErE,UAAqB,oBAAA,CAAA,OAAA,CAAQ,OAAQ,CAAA,QAAA,CAAS,IAAM,EAAA;AAAA,YAClD,SAAW,EAAA,IAAA;AAAA,YACX,OAAS,EAAA;AAAA,WACV,CAAA;AACD,UAAA,6BAAA,CAA8B,OAAU,GAAA,IAAA;AAGxC,UAAoB,mBAAA,EAAA;AAAA,SAEpB,MAAA,IAAA,UAAA,KAAe,CACf,IAAA,6BAAA,CAA8B,YAAY,IAC1C,EAAA;AACA,UAAA,oBAAA,CAAqB,QAAQ,UAAW,EAAA;AACxC,UAAA,6BAAA,CAA8B,OAAU,GAAA,KAAA;AAAA;AAC1C;AACF,KACF,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,IAAA,SAAA,CAAU,MAAM;AACd,MAAI,IAAA,aAAA,IAAiB,aAAc,CAAA,MAAA,GAAS,CAAG,EAAA;AAC7C,QAAA,MAAM,aACJ,GAAA,UAAA,CAAW,OAAS,EAAA,iBAAA,EAAmB,uBACpC,CAAA,MAAA;AACL,QAAc,aAAA,CAAA,OAAA,CAAQ,CAAC,KAAU,KAAA;AAC/B,UAAC,MAAyB,KAAM,CAAA,GAAA,GAC9B,eAAe,CAAI,GAAA,MAAA,GAAS,QAAQ,aAAa,CAAA,YAAA,CAAA;AAAA,SACpD,CAAA;AAAA;AACH,KAEC,EAAA,CAAC,aAAc,CAAA,MAAA,EAAQ,UAAU,CAAC,CAAA;AAErC,IACE,uBAAA,GAAA;AAAA,MAACA,SAAA;AAAA,MAAA;AAAA,QACE,GAAG,KAAA;AAAA,QACJ,YAAc,EAAA,gBAAA;AAAA,QACd,aAAe,EAAA,mBAAA;AAAA,QACf,GAAK,EAAA;AAAA;AAAA,KACP;AAAA;AAGN;AAEA,OAAA,CAAQ,cAAcA,SAAc,CAAA,WAAA;;ACtJ7B,MAAM,KAAQ,GAAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"toast-uADTqqrS.js","sources":["../src/components/Toast/Toaster.tsx","../src/components/Toast/toast.ts"],"sourcesContent":["import {\n ToasterProps as HammerToasterProps,\n Toaster as HammerToaster,\n useMergeRefs,\n ToastEventType,\n} from \"@servicetitan/hammer-react\";\nimport { Ref, forwardRef, useEffect, useRef, useState } from \"react\";\n\nconst SHADOW_HOST_DATA_ATTRS = \"[data-mfe-portal-name], [data-mfe-name]\";\n\n/**\n * Props for the Toaster component\n * @property {number | false} [duration] - Timeout, in ms, before toasts auto-closes. If set to false, toasts will not auto-close\n * @property {string} id - Unique toaster id\n * @property {(toastEvent: ToastEventType) => void} [onToastEvent] - Callback function that is called when toasts are added, updated, or dismissed\n * @property {number | false} [duration] - Duration of the toast in milliseconds. If set to false, the toast will not auto-dismiss\n * @property {string} [focusKey] - How a screen-reader will announce the hotkey used to set focus on the first toast\n * @property {number} [toastsBeforeStack] - How many toasts to display before they start stacking\n * @extends Omit<HammerToasterProps, \"disableEvents\" | \"duration\">\n */\nexport type ToasterProps = Omit<\n HammerToasterProps,\n \"disableEvents\" | \"duration\"\n> & {\n /**\n * Timeout, in ms, before toasts auto-closes. If set to false, toasts will not auto-close.\n * @deprecated The monolith toaster controls the duration of toasts. This prop should not be used in other cases.\n * @default false\n */\n duration?: number | false;\n};\n\n/**\n * Toaster component for managing and displaying toast notifications with anvil2-specific features.\n *\n * Features:\n * - Manages multiple toast notifications in a stack\n * - Handles toast positioning and stacking behavior\n * - Supports custom events for toast management\n * - Automatic toast dismissal with configurable duration\n * - Keyboard navigation and accessibility support\n * - Dialog-aware positioning for modal contexts\n * - Session storage for dialog toaster state\n * - Custom event system for toast lifecycle management\n * - Responsive design with mobile support\n * - Automatic tracking ID generation for analytics\n * - Monolith toaster integration and coordination\n * - Shadow DOM support for micro-frontend environments\n * - A1 toast group compatibility and positioning\n *\n * @example\n * <Toaster\n * id=\"main-toaster\"\n * duration={5000}\n * toastsBeforeStack={3}\n * onToastEvent={(event) => console.log('Toast event:', event)}\n * />\n *\n * @example\n * <Toaster\n * id=\"dialog-toaster\"\n * disableEvents={false}\n * focusKey=\"t\"\n * />\n */\nexport const Toaster = forwardRef(\n (\n { onToastEvent, ...props }: HammerToasterProps,\n ref: Ref<HTMLDivElement>,\n ) => {\n const { id } = props;\n\n const toasterRef = useRef<HTMLDivElement>(null);\n const mergedToasterRef = useMergeRefs([toasterRef, ref]);\n\n const [shouldDisableEvents, setShouldDisableEvents] =\n useState<boolean>(false);\n\n useEffect(() => {\n const toasters = document.querySelectorAll(\"[data-anv='toaster']\");\n const shadowToasters =\n (\n toasterRef.current?.getRootNode() as Document | ShadowRoot\n )?.querySelectorAll(\"[data-anv='toaster']\") || [];\n\n // Toaster(s) exist in the document, bail out if this toaster is not the first one\n if (\n toasters.length &&\n id !== toasters[0].getAttribute(\"data-toaster-id\")\n ) {\n setShouldDisableEvents(true);\n } else if (\n // Toaster(s) exist in the shadow dom, bail out if this toaster is not the first one\n shadowToasters.length &&\n id !== shadowToasters[0].getAttribute(\"data-toaster-id\")\n ) {\n setShouldDisableEvents(true);\n }\n }, [id]);\n\n const a1ToastGroupObserver = useRef<MutationObserver | null>(null);\n const a1ToastGroupObserverConnected = useRef<boolean>(false);\n const [a1ToastGroups, setA1ToastGroups] = useState<Element[]>([]);\n const [toastCount, setToastCount] = useState<number>(0);\n\n const handleToastEvent = (event: ToastEventType) => {\n const { toastCount: newToastCount } = event;\n setToastCount(newToastCount);\n onToastEvent?.(event);\n };\n\n const updateA1ToastGroups = () => {\n const mfeRoots = document.querySelectorAll(SHADOW_HOST_DATA_ATTRS);\n const a1ToastGroupsLocal = [\n ...document.getElementsByClassName(\"ToastGroup\"),\n ];\n\n if (mfeRoots.length > 0) {\n mfeRoots.forEach((el) => {\n setTimeout(() => {\n if (el.shadowRoot) {\n a1ToastGroupsLocal.push(\n ...el.shadowRoot.querySelectorAll(\".ToastGroup\"),\n );\n }\n setA1ToastGroups(a1ToastGroupsLocal);\n });\n });\n } else {\n setA1ToastGroups(a1ToastGroupsLocal);\n }\n };\n\n useEffect(() => {\n // set mutation observer for a1 toasts after initial render\n a1ToastGroupObserver.current = new MutationObserver(updateA1ToastGroups);\n }, []);\n\n /*\n Listen for any new A1 Toast Groups to adjust styles and\n prevent overlapping.\n */\n useEffect(() => {\n if (a1ToastGroupObserver.current !== null) {\n if (toastCount > 0 && a1ToastGroupObserverConnected.current === false) {\n // listen for any new a1 toasts\n a1ToastGroupObserver.current.observe(document.body, {\n childList: true,\n subtree: true,\n });\n a1ToastGroupObserverConnected.current = true;\n\n // account for already existing a1 toasts\n updateA1ToastGroups();\n } else if (\n toastCount === 0 &&\n a1ToastGroupObserverConnected.current === true\n ) {\n a1ToastGroupObserver.current.disconnect();\n a1ToastGroupObserverConnected.current = false;\n }\n }\n }, [toastCount]);\n\n useEffect(() => {\n if (a1ToastGroups && a1ToastGroups.length > 0) {\n const toasterHeight =\n toasterRef.current?.firstElementChild?.getBoundingClientRect()\n .height as number;\n a1ToastGroups.forEach((group) => {\n (group as HTMLDivElement).style.top =\n toastCount === 0 ? \"16px\" : `calc(${toasterHeight}px + 2.5rem)`;\n });\n }\n // eslint-disable-next-line\n }, [a1ToastGroups.length, toastCount]);\n\n return (\n <HammerToaster\n {...props}\n onToastEvent={handleToastEvent}\n disableEvents={shouldDisableEvents}\n ref={mergedToasterRef}\n />\n );\n },\n);\n\nToaster.displayName = HammerToaster.displayName;\n","import {\n toast as coreToast,\n toastProps as coreToastProps,\n} from \"@servicetitan/hammer-react\";\n\n/**\n * Props for creating toast notifications\n * @property {string} id - Unique identifier for the toast\n * @property {AlertProps[\"status\"]} status - Visual status of the toast (info, success, warning, danger)\n * @property {string} title - Title text displayed in the toast\n * @property {string} [message] - Additional message content to display below the title\n * @property {number | false} [duration] - Duration in milliseconds before auto-dismiss. Set to false to disable auto-dismiss\n * @property {ToastAction & { secondary?: ToastAction }} [actions] - Action buttons to display in the toast\n * @property {ProgressBarProps[\"value\"] | \"indeterminate\"} [progress] - Progress bar value or indeterminate state\n * @property {() => void} [onDismiss] - Callback function called when toast is dismissed, expired, or closed\n * @property {() => void} [onClose] - Callback function called only when the close button is clicked\n * @property {string} [toasterId] - ID of the specific toaster to display the toast in\n */\nexport type toastProps = coreToastProps;\n\n/**\n * Toast utility functions for creating and managing toast notifications.\n *\n * Features:\n * - Create toast notifications with various status types\n * - Update existing toasts with new content\n * - Dismiss individual toasts or all toasts\n * - Support for action buttons and progress bars\n * - Automatic tracking ID generation for analytics\n * - Integration with anvil2 toaster system\n *\n * @example\n * toast.success({\n * id: \"success-toast\",\n * title: \"Success!\",\n * message: \"Your changes have been saved.\"\n * });\n */\nexport const toast = coreToast;\n"],"names":["HammerToaster","coreToast"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@servicetitan/anvil2",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.41.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
"@servicetitan/anvil-fonts": ">=14",
|
|
27
27
|
"classnames": "^2.5.1",
|
|
28
28
|
"@servicetitan/hammer-icon": "1.2.0",
|
|
29
|
-
"@servicetitan/hammer-
|
|
30
|
-
"@servicetitan/hammer-
|
|
29
|
+
"@servicetitan/hammer-token": "2.4.0",
|
|
30
|
+
"@servicetitan/hammer-react": "1.39.0"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
33
|
"@types/react": "^18",
|