@servicetitan/anvil2 3.0.4 → 3.0.5

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.
Files changed (74) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/{AnvilProvider-JXEbeQjR.js → AnvilProvider-J9DjoJiB.js} +13 -2
  3. package/dist/AnvilProvider-J9DjoJiB.js.map +1 -0
  4. package/dist/AnvilProvider.js +1 -1
  5. package/dist/{Combobox-C9-3tlcP.js → Combobox-BXQFOwX4.js} +2 -2
  6. package/dist/{Combobox-C9-3tlcP.js.map → Combobox-BXQFOwX4.js.map} +1 -1
  7. package/dist/Combobox.js +1 -1
  8. package/dist/{DataTable-Dr5A6RDe.js → DataTable-BFzj8cZG.js} +3 -3
  9. package/dist/{DataTable-Dr5A6RDe.js.map → DataTable-BFzj8cZG.js.map} +1 -1
  10. package/dist/{FilterBar-BUfajdQU.js → FilterBar-GjMlLOME.js} +6 -6
  11. package/dist/FilterBar-GjMlLOME.js.map +1 -0
  12. package/dist/FilterBar.js +1 -1
  13. package/dist/MultiSelectField.js +1 -1
  14. package/dist/{MultiSelectFieldSync-DXIBQABc.js → MultiSelectFieldSync-BxyQiVPQ.js} +56 -26
  15. package/dist/MultiSelectFieldSync-BxyQiVPQ.js.map +1 -0
  16. package/dist/MultiSelectFieldSync.css +59 -57
  17. package/dist/MultiSelectMenu.js +1 -1
  18. package/dist/{MultiSelectMenuSync-CCINebbr.js → MultiSelectMenuSync-BJfvZGf3.js} +19 -6
  19. package/dist/MultiSelectMenuSync-BJfvZGf3.js.map +1 -0
  20. package/dist/SelectField.js +1 -1
  21. package/dist/{SelectFieldSync-DqIDTKqt.js → SelectFieldSync-z8b41JZz.js} +39 -9
  22. package/dist/SelectFieldSync-z8b41JZz.js.map +1 -0
  23. package/dist/SelectMenu.js +1 -1
  24. package/dist/{SelectMenuSync-DYPEX5wc.js → SelectMenuSync-Cf1Zradm.js} +19 -6
  25. package/dist/SelectMenuSync-Cf1Zradm.js.map +1 -0
  26. package/dist/{SelectOptions-DuMbmJjh.js → SelectOptions-BgT1V6qp.js} +2 -2
  27. package/dist/{SelectOptions-DuMbmJjh.js.map → SelectOptions-BgT1V6qp.js.map} +1 -1
  28. package/dist/{SelectTrigger-RiRjgwXd.js → SelectTrigger-37HzF-VI.js} +2 -2
  29. package/dist/{SelectTrigger-RiRjgwXd.js.map → SelectTrigger-37HzF-VI.js.map} +1 -1
  30. package/dist/SelectTrigger.js +1 -1
  31. package/dist/{SelectTriggerBase-CWxP7nPA.js → SelectTriggerBase-4o1cqEbR.js} +2 -2
  32. package/dist/{SelectTriggerBase-CWxP7nPA.js.map → SelectTriggerBase-4o1cqEbR.js.map} +1 -1
  33. package/dist/SelectTriggerBase.css +44 -42
  34. package/dist/SelectTriggerBase.module-BgZSNZfE.js +37 -0
  35. package/dist/SelectTriggerBase.module-BgZSNZfE.js.map +1 -0
  36. package/dist/Table.js +1 -1
  37. package/dist/beta.js +7 -7
  38. package/dist/index.js +3 -3
  39. package/dist/src/beta/components/MultiSelectField/MultiSelectField.d.ts +1 -0
  40. package/dist/src/beta/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
  41. package/dist/src/beta/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
  42. package/dist/src/beta/components/MultiSelectField/internal/types.d.ts +2 -1
  43. package/dist/src/beta/components/MultiSelectField/types.d.ts +2 -1
  44. package/dist/src/beta/components/MultiSelectMenu/MultiSelectMenu.d.ts +1 -0
  45. package/dist/src/beta/components/MultiSelectMenu/types.d.ts +2 -1
  46. package/dist/src/beta/components/SelectField/SelectField.d.ts +21 -0
  47. package/dist/src/beta/components/SelectField/internal/SelectFieldComboboxMode.d.ts +1 -1
  48. package/dist/src/beta/components/SelectField/internal/SelectFieldSelectMode.d.ts +1 -1
  49. package/dist/src/beta/components/SelectField/types.d.ts +2 -1
  50. package/dist/src/beta/components/SelectMenu/SelectMenu.d.ts +1 -0
  51. package/dist/src/beta/components/SelectMenu/types.d.ts +2 -1
  52. package/dist/src/internal/components/AddNewItemButton.d.ts +40 -0
  53. package/dist/src/internal/components/OptionsDialog/OptionsDialog.d.ts +3 -1
  54. package/dist/src/internal/components/OptionsPopover/OptionsPopover.d.ts +13 -1
  55. package/dist/src/internal/types/addNewItemTypes.d.ts +12 -0
  56. package/dist/src/internal/types/selectFieldInternalTypes.d.ts +2 -1
  57. package/dist/{syncFilterUtils-hlw11Ud8.js → syncFilterUtils-Dpp7gt05.js} +96 -24
  58. package/dist/syncFilterUtils-Dpp7gt05.js.map +1 -0
  59. package/dist/syncFilterUtils.css +44 -23
  60. package/dist/{useMenuInteraction-BwZ2ORo9.js → useMenuInteraction-C4RU5Fdq.js} +1 -5
  61. package/dist/useMenuInteraction-C4RU5Fdq.js.map +1 -0
  62. package/dist/{useToggleSelection-VwlBkdZo.js → useToggleSelection-DBqr4HwT.js} +2 -2
  63. package/dist/{useToggleSelection-VwlBkdZo.js.map → useToggleSelection-DBqr4HwT.js.map} +1 -1
  64. package/package.json +3 -3
  65. package/dist/AnvilProvider-JXEbeQjR.js.map +0 -1
  66. package/dist/FilterBar-BUfajdQU.js.map +0 -1
  67. package/dist/MultiSelectFieldSync-DXIBQABc.js.map +0 -1
  68. package/dist/MultiSelectMenuSync-CCINebbr.js.map +0 -1
  69. package/dist/SelectFieldSync-DqIDTKqt.js.map +0 -1
  70. package/dist/SelectMenuSync-DYPEX5wc.js.map +0 -1
  71. package/dist/SelectTriggerBase.module-CCLOnHm1.js +0 -37
  72. package/dist/SelectTriggerBase.module-CCLOnHm1.js.map +0 -1
  73. package/dist/syncFilterUtils-hlw11Ud8.js.map +0 -1
  74. package/dist/useMenuInteraction-BwZ2ORo9.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @servicetitan/anvil2
2
2
 
3
+ ## 3.0.5
4
+
5
+ ### Patch Changes
6
+
7
+ - [#2336](https://github.com/servicetitan/hammer/pull/2336) [`0277423`](https://github.com/servicetitan/hammer/commit/027742311d21866a3916d4300ece542b0285dd13) Thanks [@w-a-t-s-o-n](https://github.com/w-a-t-s-o-n)! - **BETA** [FilterBar] Update filter drawer combobox `SearchField` and `SelectTrigger` to use `medium` size instead of `small`
8
+
9
+ - [#2313](https://github.com/servicetitan/hammer/pull/2313) [`13093b7`](https://github.com/servicetitan/hammer/commit/13093b77993bfaa76e5137a47686103c44923aa1) Thanks [@AdamLantz](https://github.com/AdamLantz)! - **BETA** [MultiSelectField, MultiSelectMenu, SelectField, SelectMenu] Add `addItemLabel` and `onAddNewItem` props to render a persistent "Add new item" affordance below the option list.
10
+
11
+ - [#2324](https://github.com/servicetitan/hammer/pull/2324) [`e4a8d56`](https://github.com/servicetitan/hammer/commit/e4a8d560fe32621b4db8da52dddd543168013fb7) Thanks [@pbuckingham-st](https://github.com/pbuckingham-st)! - [AnvilProvider] Fix unstyled Anvil2 components inside Anvil1 takeovers (Modal, Dialog, Drawer) by mirroring the `.anvil2` class onto `document.body`.
12
+
3
13
  ## 3.0.4
4
14
 
5
15
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { t as themeStyles, T as ThemeProvider } from './ThemeProvider-D4KdGCaP.js';
3
- import { createContext, useState, useMemo } from 'react';
3
+ import { createContext, useEffect, useState, useMemo } from 'react';
4
4
  import { c as cx } from './index-De1g9FRV.js';
5
5
  import { u as useBreakpoint } from './useBreakpoint-CeaUyHxh.js';
6
6
  import { a as useTranslations, L as LocalizationContext } from './LocalizationContext-UsmB5mnR.js';
@@ -12,6 +12,7 @@ import './AnvilProvider.css';const AnvilProviderContext = createContext(
12
12
  );
13
13
  const TooltipLegacyGroupContext = createContext(null);
14
14
 
15
+ let bodyScopeRefcount = 0;
15
16
  const AnvilProvider = (props) => {
16
17
  const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
17
18
  const {
@@ -43,6 +44,16 @@ const AnvilProvider = (props) => {
43
44
  ...layoutStyles
44
45
  };
45
46
  const breakpoint = useBreakpoint();
47
+ useEffect(() => {
48
+ bodyScopeRefcount += 1;
49
+ document.body.classList.add("anvil2");
50
+ return () => {
51
+ bodyScopeRefcount = Math.max(0, bodyScopeRefcount - 1);
52
+ if (bodyScopeRefcount === 0) {
53
+ document.body.classList.remove("anvil2");
54
+ }
55
+ };
56
+ }, []);
46
57
  const [disableDelayGroup, setDisableDelayGroup] = useState(false);
47
58
  const { translations: t } = useTranslations(translations);
48
59
  const localizationContextValue = useMemo(() => ({ locale, t }), [locale, t]);
@@ -72,4 +83,4 @@ const AnvilProvider = (props) => {
72
83
  };
73
84
 
74
85
  export { AnvilProvider as A, AnvilProviderContext as a };
75
- //# sourceMappingURL=AnvilProvider-JXEbeQjR.js.map
86
+ //# sourceMappingURL=AnvilProvider-J9DjoJiB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnvilProvider-J9DjoJiB.js","sources":["../src/providers/AnvilProvider/AnvilProviderContext.tsx","../src/providers/AnvilProvider/AnvilProvider.tsx"],"sourcesContent":["import { ThemeProviderProps } from \"../ThemeProvider\";\nimport {\n ComponentPropsWithoutRef,\n Dispatch,\n ReactNode,\n SetStateAction,\n createContext,\n useContext,\n} from \"react\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { ITranslations } from \"../LocalizationProvider/LocalizationProvider\";\nimport { type BreakpointReturnProps } from \"../../hooks/useBreakpoint\";\n\nexport type AnvilProviderProps = ComponentPropsWithoutRef<\"div\"> &\n LayoutUtilProps & {\n children?: ReactNode;\n\n themeData?: {\n theme?: ThemeProviderProps[\"theme\"];\n mode?: ThemeProviderProps[\"mode\"];\n };\n\n localizationData?: {\n locale?: ITranslations[\"locale\"];\n dir?: ITranslations[\"dir\"];\n translations?: ITranslations[\"translations\"];\n };\n } & {\n trackingIdData?: {\n scope?: string;\n optOut?: boolean;\n };\n };\n\nexport type AnvilProviderContextProps = {\n breakpoint?: BreakpointReturnProps;\n};\n\nexport const AnvilProviderContext = createContext<AnvilProviderContextProps>(\n {},\n);\n\nexport const TooltipLegacyGroupContext = createContext<{\n disableDelayGroup: Dispatch<SetStateAction<boolean>>;\n} | null>(null);\n\nexport const useTooltipLegacyGroup = () => {\n const context = useContext(TooltipLegacyGroupContext);\n\n if (context == null) {\n throw new Error(\n \"Tooltip components must be wrapped in <AnvilProvider /> or <TooltipGroupContext.Provider />\",\n );\n }\n\n return context;\n};\n","import \"@servicetitan/anvil-fonts/dist/css/anvil-fonts.css\";\nimport { ThemeProvider } from \"../ThemeProvider\";\nimport themeStyles from \"../ThemeProvider/ThemeProvider.module.scss\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport cx from \"classnames\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { useBreakpoint } from \"../../hooks/useBreakpoint\";\nimport { useTranslations } from \"../LocalizationProvider/useTranslations\";\nimport { LocalizationContext } from \"../LocalizationProvider\";\nimport TrackingProvider from \"../TrackingProvider\";\nimport {\n AnvilProviderContext,\n AnvilProviderProps,\n TooltipLegacyGroupContext,\n} from \"./AnvilProviderContext\";\n\n// Refcount of mounted AnvilProviders. Coordinates the body class so the last\n// unmount removes it, but a remount (e.g. story switch, hot reload) keeps it.\nlet bodyScopeRefcount = 0;\n\nexport const AnvilProvider = (props: AnvilProviderProps) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n\n const {\n themeData,\n localizationData,\n trackingIdData,\n children,\n className,\n style,\n ...rest\n } = componentProps;\n\n const {\n locale = \"en\",\n dir = \"ltr\",\n translations = {},\n } = localizationData ?? {};\n\n const { scope = \"ST\", optOut } = trackingIdData ?? {};\n\n const classNameCombined = cx(\n className,\n \"anvil2\",\n [themeStyles[\"theme-core\"]],\n {\n [themeStyles[\"mode-dark\"]]: themeData?.mode === \"dark\",\n [themeStyles[\"mode-light\"]]: themeData?.mode === \"light\",\n },\n );\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const breakpoint = useBreakpoint();\n\n // Anvil1 takeover components (Modal/Dialog/Drawer) `createPortal` their\n // children into `document.body`, escaping AnvilProvider's `.anvil2` scope and\n // leaving descendant Anvil2 components without matching selectors. Mirroring\n // the class onto body lets those selectors match for portaled content while\n // leaving theme variables and typography resets on the local element.\n useEffect(() => {\n bodyScopeRefcount += 1;\n document.body.classList.add(\"anvil2\");\n return () => {\n bodyScopeRefcount = Math.max(0, bodyScopeRefcount - 1);\n if (bodyScopeRefcount === 0) {\n document.body.classList.remove(\"anvil2\");\n }\n };\n }, []);\n\n const [disableDelayGroup, setDisableDelayGroup] = useState(false);\n\n const { translations: t } = useTranslations(translations);\n\n const localizationContextValue = useMemo(() => ({ locale, t }), [locale, t]);\n const tooltipLegacyGroupContextValue = useMemo(\n () => ({ disableDelayGroup: setDisableDelayGroup }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [disableDelayGroup],\n );\n\n return (\n <AnvilProviderContext.Provider value={{ breakpoint }}>\n <ThemeProvider\n className={classNameCombined}\n style={styleCombined}\n theme={themeData?.theme}\n mode={themeData?.mode}\n dir={dir}\n {...rest}\n >\n <TooltipLegacyGroupContext.Provider\n value={tooltipLegacyGroupContextValue}\n >\n <LocalizationContext.Provider value={localizationContextValue}>\n <TrackingProvider scope={scope} optOut={optOut}>\n {children}\n </TrackingProvider>\n </LocalizationContext.Provider>\n </TooltipLegacyGroupContext.Provider>\n </ThemeProvider>\n </AnvilProviderContext.Provider>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAsCO,MAAM,oBAAA,GAAuB,aAAA;AAAA,EAClC;AACF;AAEO,MAAM,yBAAA,GAA4B,cAE/B,IAAI,CAAA;;AC1Bd,IAAI,iBAAA,GAAoB,CAAA;AAEjB,MAAM,aAAA,GAAgB,CAAC,KAAA,KAA8B;AAC1D,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AAEjE,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,gBAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,cAAA;AAEJ,EAAA,MAAM;AAAA,IACJ,MAAA,GAAS,IAAA;AAAA,IACT,GAAA,GAAM,KAAA;AAAA,IACN,eAAe;AAAC,GAClB,GAAI,oBAAoB,EAAC;AAEzB,EAAA,MAAM,EAAE,KAAA,GAAQ,IAAA,EAAM,MAAA,EAAO,GAAI,kBAAkB,EAAC;AAEpD,EAAA,MAAM,iBAAA,GAAoB,EAAA;AAAA,IACxB,SAAA;AAAA,IACA,QAAA;AAAA,IACA,CAAC,WAAA,CAAY,YAAY,CAAC,CAAA;AAAA,IAC1B;AAAA,MACE,CAAC,WAAA,CAAY,WAAW,CAAC,GAAG,WAAW,IAAA,KAAS,MAAA;AAAA,MAChD,CAAC,WAAA,CAAY,YAAY,CAAC,GAAG,WAAW,IAAA,KAAS;AAAA;AACnD,GACF;AACA,EAAA,MAAM,aAAA,GAAgB;AAAA,IACpB,GAAG,KAAA;AAAA,IACH,GAAG;AAAA,GACL;AAEA,EAAA,MAAM,aAAa,aAAA,EAAc;AAOjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,iBAAA,IAAqB,CAAA;AACrB,IAAA,QAAA,CAAS,IAAA,CAAK,SAAA,CAAU,GAAA,CAAI,QAAQ,CAAA;AACpC,IAAA,OAAO,MAAM;AACX,MAAA,iBAAA,GAAoB,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,iBAAA,GAAoB,CAAC,CAAA;AACrD,MAAA,IAAI,sBAAsB,CAAA,EAAG;AAC3B,QAAA,QAAA,CAAS,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,QAAQ,CAAA;AAAA,MACzC;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAI,SAAS,KAAK,CAAA;AAEhE,EAAA,MAAM,EAAE,YAAA,EAAc,CAAA,EAAE,GAAI,gBAAgB,YAAY,CAAA;AAExD,EAAA,MAAM,wBAAA,GAA2B,OAAA,CAAQ,OAAO,EAAE,MAAA,EAAQ,GAAE,CAAA,EAAI,CAAC,MAAA,EAAQ,CAAC,CAAC,CAAA;AAC3E,EAAA,MAAM,8BAAA,GAAiC,OAAA;AAAA,IACrC,OAAO,EAAE,iBAAA,EAAmB,oBAAA,EAAqB,CAAA;AAAA;AAAA,IAEjD,CAAC,iBAAiB;AAAA,GACpB;AAEA,EAAA,2BACG,oBAAA,CAAqB,QAAA,EAArB,EAA8B,KAAA,EAAO,EAAE,YAAW,EACjD,QAAA,kBAAA,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,iBAAA;AAAA,MACX,KAAA,EAAO,aAAA;AAAA,MACP,OAAO,SAAA,EAAW,KAAA;AAAA,MAClB,MAAM,SAAA,EAAW,IAAA;AAAA,MACjB,GAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA;AAAA,QAAC,yBAAA,CAA0B,QAAA;AAAA,QAA1B;AAAA,UACC,KAAA,EAAO,8BAAA;AAAA,UAEP,QAAA,kBAAA,GAAA,CAAC,mBAAA,CAAoB,QAAA,EAApB,EAA6B,KAAA,EAAO,wBAAA,EACnC,QAAA,kBAAA,GAAA,CAAC,gBAAA,EAAA,EAAiB,KAAA,EAAc,MAAA,EAC7B,QAAA,EACH,CAAA,EACF;AAAA;AAAA;AACF;AAAA,GACF,EACF,CAAA;AAEJ;;;;"}
@@ -1,2 +1,2 @@
1
- export { A as AnvilProvider, a as AnvilProviderContext, A as default } from './AnvilProvider-JXEbeQjR.js';
1
+ export { A as AnvilProvider, a as AnvilProviderContext, A as default } from './AnvilProvider-J9DjoJiB.js';
2
2
  //# sourceMappingURL=AnvilProvider.js.map
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { createContext, useContext, useEffect, useMemo, useState, useRef, forwardRef, useId, useLayoutEffect } from 'react';
3
3
  import { P as Popover, u as usePopoverContext } from './Popover-B3Vw4lDW.js';
4
- import { i as isMultiple, b as SELECT_ALL, a as defaultItemToKey, d as defaultItemToString, g as getScrollParent, A as ADD_NEW, S as SelectTriggerBase } from './SelectTriggerBase-CWxP7nPA.js';
4
+ import { i as isMultiple, b as SELECT_ALL, a as defaultItemToKey, d as defaultItemToString, g as getScrollParent, A as ADD_NEW, S as SelectTriggerBase } from './SelectTriggerBase-4o1cqEbR.js';
5
5
  import { c as cx } from './index-De1g9FRV.js';
6
6
  import { u as useDownshiftEnvironment, c as useMultipleSelection, b as useSelect, a as useCombobox$1 } from './downshift.esm-xtSnQp44.js';
7
7
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-CB_zHDbW.js';
@@ -2472,4 +2472,4 @@ const Combobox = Object.assign(
2472
2472
  const ComboboxElement = Combobox;
2473
2473
 
2474
2474
  export { Combobox as C, ComboboxElement as a, ComboboxSelect as b, ComboboxList as c };
2475
- //# sourceMappingURL=Combobox-C9-3tlcP.js.map
2475
+ //# sourceMappingURL=Combobox-BXQFOwX4.js.map