@servicetitan/anvil2 1.42.0 → 1.42.2

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 CHANGED
@@ -1,5 +1,27 @@
1
1
  # @servicetitan/anvil2
2
2
 
3
+ ## 1.42.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#1412](https://github.com/servicetitan/hammer/pull/1412) [`2b4eac0`](https://github.com/servicetitan/hammer/commit/2b4eac0fd3c0790fcd2a31940f2c6e06d1142535) Thanks [@tounsoo](https://github.com/tounsoo)! - [Pagination] Fix Pagination not being exported
8
+
9
+ - [#1413](https://github.com/servicetitan/hammer/pull/1413) [`78b778e`](https://github.com/servicetitan/hammer/commit/78b778e1207a23924e982552d9e2564926f8dfc9) Thanks [@AdamLantz](https://github.com/AdamLantz)! - [Icon] Add global nav icon for Field Pro
10
+
11
+ - [#1403](https://github.com/servicetitan/hammer/pull/1403) [`46b4a7b`](https://github.com/servicetitan/hammer/commit/46b4a7bb061a2aecbc934b494b9805685adde5c8) Thanks [@AdamLantz](https://github.com/AdamLantz)! - [DateFieldYearless] Fix a case where pasting a value in could result in onChange not being called
12
+
13
+ - Updated dependencies [[`46b4a7b`](https://github.com/servicetitan/hammer/commit/46b4a7bb061a2aecbc934b494b9805685adde5c8)]:
14
+ - @servicetitan/hammer-react@1.40.2
15
+
16
+ ## 1.42.1
17
+
18
+ ### Patch Changes
19
+
20
+ - [#1401](https://github.com/servicetitan/hammer/pull/1401) [`7aba43b`](https://github.com/servicetitan/hammer/commit/7aba43bfb1bdfb4d5fdb04fa36436d187601c6bc) Thanks [@AdamLantz](https://github.com/AdamLantz)! - [DateFieldSingle, DateFieldRange] Fix invalid props spread onto input element
21
+
22
+ - Updated dependencies [[`7aba43b`](https://github.com/servicetitan/hammer/commit/7aba43bfb1bdfb4d5fdb04fa36436d187601c6bc)]:
23
+ - @servicetitan/hammer-react@1.40.1
24
+
3
25
  ## 1.42.0
4
26
 
5
27
  ### Minor Changes
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { useTrackingId } from './useTrackingId.js';
3
3
  import { c as childrenToString } from './childrenToString-Bz9MqbHb-Bz9MqbHb.js';
4
- import { D as DateFieldRange$1 } from './DateFieldYearless-M5KDI_hn-akXtkIZA.js';
4
+ import { D as DateFieldRange$1 } from './DateFieldYearless-C3_oGDr3-5meexzZO.js';
5
5
 
6
6
  const DateFieldRange = (props) => {
7
7
  const data = {
@@ -19,4 +19,4 @@ const DateFieldRange = (props) => {
19
19
  DateFieldRange.displayName = DateFieldRange$1.displayName;
20
20
 
21
21
  export { DateFieldRange as D };
22
- //# sourceMappingURL=DateFieldRange-CgVqJrVg.js.map
22
+ //# sourceMappingURL=DateFieldRange--oSGfjYa.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateFieldRange-CgVqJrVg.js","sources":["../src/components/DateFieldRange/DateFieldRange.tsx"],"sourcesContent":["import {\n childrenToString,\n DateFieldRange as CoreDateFieldRange,\n DateFieldRangeProps as CoreDateFieldRangeProps,\n DateFieldRangeChange as CoreDateFieldRangeChange,\n DateFieldRangeChangeHandler as CoreDateFieldRangeChangeHandler,\n DateMode as CoreDateMode,\n} from \"@servicetitan/hammer-react\";\nimport { useTrackingId } from \"../../hooks/useTrackingId\";\nimport { DataTrackingId } from \"../../types/DataTrackingId\";\n\nexport type DateFieldRangeProps = CoreDateFieldRangeProps & DataTrackingId;\n\nexport type DateFieldRangeChange = CoreDateFieldRangeChange;\n\nexport type DateFieldRangeChangeHandler = CoreDateFieldRangeChangeHandler;\n\nexport type DateMode = CoreDateMode;\n\nexport const DateFieldRange = (props: DateFieldRangeProps) => {\n const data = {\n label: childrenToString(props.label),\n labelProps: props.labelProps,\n description: childrenToString(props.description),\n };\n\n const trackingId = useTrackingId({\n name: \"DateFieldRange\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n return <CoreDateFieldRange data-tracking-id={trackingId} {...props} />;\n};\n\nDateFieldRange.displayName = CoreDateFieldRange.displayName;\n"],"names":["CoreDateFieldRange"],"mappings":";;;;;AAmBa,MAAA,cAAA,GAAiB,CAAC,KAA+B,KAAA;AAC5D,EAAA,MAAM,IAAO,GAAA;AAAA,IACX,KAAA,EAAO,gBAAiB,CAAA,KAAA,CAAM,KAAK,CAAA;AAAA,IACnC,YAAY,KAAM,CAAA,UAAA;AAAA,IAClB,WAAA,EAAa,gBAAiB,CAAA,KAAA,CAAM,WAAW;AAAA,GACjD;AAEA,EAAA,MAAM,aAAa,aAAc,CAAA;AAAA,IAC/B,IAAM,EAAA,gBAAA;AAAA,IACN,IAAA;AAAA,IACA,WAAa,EAAA,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,GACxC,CAAA;AACD,EAAA,uBAAQ,GAAA,CAAAA,gBAAA,EAAA,EAAmB,kBAAkB,EAAA,UAAA,EAAa,GAAG,KAAO,EAAA,CAAA;AACtE;AAEA,cAAA,CAAe,cAAcA,gBAAmB,CAAA,WAAA;;;;"}
1
+ {"version":3,"file":"DateFieldRange--oSGfjYa.js","sources":["../src/components/DateFieldRange/DateFieldRange.tsx"],"sourcesContent":["import {\n childrenToString,\n DateFieldRange as CoreDateFieldRange,\n DateFieldRangeProps as CoreDateFieldRangeProps,\n DateFieldRangeChange as CoreDateFieldRangeChange,\n DateFieldRangeChangeHandler as CoreDateFieldRangeChangeHandler,\n DateMode as CoreDateMode,\n} from \"@servicetitan/hammer-react\";\nimport { useTrackingId } from \"../../hooks/useTrackingId\";\nimport { DataTrackingId } from \"../../types/DataTrackingId\";\n\nexport type DateFieldRangeProps = CoreDateFieldRangeProps & DataTrackingId;\n\nexport type DateFieldRangeChange = CoreDateFieldRangeChange;\n\nexport type DateFieldRangeChangeHandler = CoreDateFieldRangeChangeHandler;\n\nexport type DateMode = CoreDateMode;\n\nexport const DateFieldRange = (props: DateFieldRangeProps) => {\n const data = {\n label: childrenToString(props.label),\n labelProps: props.labelProps,\n description: childrenToString(props.description),\n };\n\n const trackingId = useTrackingId({\n name: \"DateFieldRange\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n return <CoreDateFieldRange data-tracking-id={trackingId} {...props} />;\n};\n\nDateFieldRange.displayName = CoreDateFieldRange.displayName;\n"],"names":["CoreDateFieldRange"],"mappings":";;;;;AAmBa,MAAA,cAAA,GAAiB,CAAC,KAA+B,KAAA;AAC5D,EAAA,MAAM,IAAO,GAAA;AAAA,IACX,KAAA,EAAO,gBAAiB,CAAA,KAAA,CAAM,KAAK,CAAA;AAAA,IACnC,YAAY,KAAM,CAAA,UAAA;AAAA,IAClB,WAAA,EAAa,gBAAiB,CAAA,KAAA,CAAM,WAAW;AAAA,GACjD;AAEA,EAAA,MAAM,aAAa,aAAc,CAAA;AAAA,IAC/B,IAAM,EAAA,gBAAA;AAAA,IACN,IAAA;AAAA,IACA,WAAa,EAAA,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,GACxC,CAAA;AACD,EAAA,uBAAQ,GAAA,CAAAA,gBAAA,EAAA,EAAmB,kBAAkB,EAAA,UAAA,EAAa,GAAG,KAAO,EAAA,CAAA;AACtE;AAEA,cAAA,CAAe,cAAcA,gBAAmB,CAAA,WAAA;;;;"}
@@ -1,2 +1,2 @@
1
- export { D as DateFieldRange } from './DateFieldRange-CgVqJrVg.js';
1
+ export { D as DateFieldRange } from './DateFieldRange--oSGfjYa.js';
2
2
  //# sourceMappingURL=DateFieldRange.js.map
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { useTrackingId } from './useTrackingId.js';
3
3
  import { c as childrenToString } from './childrenToString-Bz9MqbHb-Bz9MqbHb.js';
4
- import { a as DateFieldSingle$1 } from './DateFieldYearless-M5KDI_hn-akXtkIZA.js';
4
+ import { a as DateFieldSingle$1 } from './DateFieldYearless-C3_oGDr3-5meexzZO.js';
5
5
 
6
6
  const DateFieldSingle = (props) => {
7
7
  const data = {
@@ -19,4 +19,4 @@ const DateFieldSingle = (props) => {
19
19
  DateFieldSingle.displayName = DateFieldSingle$1.displayName;
20
20
 
21
21
  export { DateFieldSingle as D };
22
- //# sourceMappingURL=DateFieldSingle-CLoWDlPO.js.map
22
+ //# sourceMappingURL=DateFieldSingle-0a8Bk7Yj.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateFieldSingle-CLoWDlPO.js","sources":["../src/components/DateFieldSingle/DateFieldSingle.tsx"],"sourcesContent":["import {\n childrenToString,\n DateFieldSingle as CoreDateFieldSingle,\n DateFieldSingleProps as CoreDateFieldSingleProps,\n DateFieldSingleChange as CoreDateFieldSingleChange,\n DateFieldSingleChangeHandler as CoreDateFieldSingleChangeHandler,\n} from \"@servicetitan/hammer-react\";\nimport { useTrackingId } from \"../../hooks/useTrackingId\";\nimport { DataTrackingId } from \"../../types/DataTrackingId\";\n\nexport type DateFieldSingleProps = CoreDateFieldSingleProps & DataTrackingId;\n\nexport type DateFieldSingleChange = CoreDateFieldSingleChange;\n\nexport type DateFieldSingleChangeHandler = CoreDateFieldSingleChangeHandler;\n\nexport const DateFieldSingle = (props: DateFieldSingleProps) => {\n const data = {\n label: childrenToString(props.label),\n labelProps: props.labelProps,\n description: childrenToString(props.description),\n };\n\n const trackingId = useTrackingId({\n name: \"DateFieldSingle\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n return <CoreDateFieldSingle data-tracking-id={trackingId} {...props} />;\n};\n\nDateFieldSingle.displayName = CoreDateFieldSingle.displayName;\n"],"names":["CoreDateFieldSingle"],"mappings":";;;;;AAgBa,MAAA,eAAA,GAAkB,CAAC,KAAgC,KAAA;AAC9D,EAAA,MAAM,IAAO,GAAA;AAAA,IACX,KAAA,EAAO,gBAAiB,CAAA,KAAA,CAAM,KAAK,CAAA;AAAA,IACnC,YAAY,KAAM,CAAA,UAAA;AAAA,IAClB,WAAA,EAAa,gBAAiB,CAAA,KAAA,CAAM,WAAW;AAAA,GACjD;AAEA,EAAA,MAAM,aAAa,aAAc,CAAA;AAAA,IAC/B,IAAM,EAAA,iBAAA;AAAA,IACN,IAAA;AAAA,IACA,WAAa,EAAA,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,GACxC,CAAA;AACD,EAAA,uBAAQ,GAAA,CAAAA,iBAAA,EAAA,EAAoB,kBAAkB,EAAA,UAAA,EAAa,GAAG,KAAO,EAAA,CAAA;AACvE;AAEA,eAAA,CAAgB,cAAcA,iBAAoB,CAAA,WAAA;;;;"}
1
+ {"version":3,"file":"DateFieldSingle-0a8Bk7Yj.js","sources":["../src/components/DateFieldSingle/DateFieldSingle.tsx"],"sourcesContent":["import {\n childrenToString,\n DateFieldSingle as CoreDateFieldSingle,\n DateFieldSingleProps as CoreDateFieldSingleProps,\n DateFieldSingleChange as CoreDateFieldSingleChange,\n DateFieldSingleChangeHandler as CoreDateFieldSingleChangeHandler,\n} from \"@servicetitan/hammer-react\";\nimport { useTrackingId } from \"../../hooks/useTrackingId\";\nimport { DataTrackingId } from \"../../types/DataTrackingId\";\n\nexport type DateFieldSingleProps = CoreDateFieldSingleProps & DataTrackingId;\n\nexport type DateFieldSingleChange = CoreDateFieldSingleChange;\n\nexport type DateFieldSingleChangeHandler = CoreDateFieldSingleChangeHandler;\n\nexport const DateFieldSingle = (props: DateFieldSingleProps) => {\n const data = {\n label: childrenToString(props.label),\n labelProps: props.labelProps,\n description: childrenToString(props.description),\n };\n\n const trackingId = useTrackingId({\n name: \"DateFieldSingle\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n return <CoreDateFieldSingle data-tracking-id={trackingId} {...props} />;\n};\n\nDateFieldSingle.displayName = CoreDateFieldSingle.displayName;\n"],"names":["CoreDateFieldSingle"],"mappings":";;;;;AAgBa,MAAA,eAAA,GAAkB,CAAC,KAAgC,KAAA;AAC9D,EAAA,MAAM,IAAO,GAAA;AAAA,IACX,KAAA,EAAO,gBAAiB,CAAA,KAAA,CAAM,KAAK,CAAA;AAAA,IACnC,YAAY,KAAM,CAAA,UAAA;AAAA,IAClB,WAAA,EAAa,gBAAiB,CAAA,KAAA,CAAM,WAAW;AAAA,GACjD;AAEA,EAAA,MAAM,aAAa,aAAc,CAAA;AAAA,IAC/B,IAAM,EAAA,iBAAA;AAAA,IACN,IAAA;AAAA,IACA,WAAa,EAAA,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,GACxC,CAAA;AACD,EAAA,uBAAQ,GAAA,CAAAA,iBAAA,EAAA,EAAoB,kBAAkB,EAAA,UAAA,EAAa,GAAG,KAAO,EAAA,CAAA;AACvE;AAEA,eAAA,CAAgB,cAAcA,iBAAoB,CAAA,WAAA;;;;"}
@@ -1,2 +1,2 @@
1
- export { D as DateFieldSingle } from './DateFieldSingle-CLoWDlPO.js';
1
+ export { D as DateFieldSingle } from './DateFieldSingle-0a8Bk7Yj.js';
2
2
  //# sourceMappingURL=DateFieldSingle.js.map
@@ -2328,17 +2328,30 @@ const DateFieldSingle = ({
2328
2328
  disableCalendar,
2329
2329
  required,
2330
2330
  mode,
2331
+ value: valueProp,
2332
+ defaultValue: defaultValueProp,
2333
+ minDate: minDateProp,
2334
+ maxDate: maxDateProp,
2335
+ unavailable: unavailableProp,
2336
+ onChange: onChangeProp,
2331
2337
  ...rest
2332
2338
  }) => {
2333
2339
  const inputRef = useRef(null);
2334
2340
  const {
2335
- value: valueProp,
2336
- defaultValue: defaultValueProp,
2341
+ value: normalizedValue,
2342
+ defaultValue: normalizedDefaultValue,
2337
2343
  minDate,
2338
2344
  maxDate,
2339
2345
  unavailable,
2340
2346
  onChange
2341
- } = useDateFieldSingleConversion(rest);
2347
+ } = useDateFieldSingleConversion({
2348
+ value: valueProp,
2349
+ defaultValue: defaultValueProp,
2350
+ onChange: onChangeProp,
2351
+ minDate: minDateProp,
2352
+ maxDate: maxDateProp,
2353
+ unavailable: unavailableProp
2354
+ });
2342
2355
  const handleChange = (change) => {
2343
2356
  onChange?.({
2344
2357
  ...change,
@@ -2354,8 +2367,8 @@ const DateFieldSingle = ({
2354
2367
  });
2355
2368
  };
2356
2369
  const { value, handleInputChange, handleCalendarSelection } = useDateFieldSingleState({
2357
- valueProp,
2358
- defaultValueProp,
2370
+ valueProp: normalizedValue,
2371
+ defaultValueProp: normalizedDefaultValue,
2359
2372
  inputRef,
2360
2373
  onChange: handleChange
2361
2374
  });
@@ -2394,9 +2407,9 @@ const DateFieldSingle = ({
2394
2407
  const justTheField = /* @__PURE__ */ jsx(
2395
2408
  MaskedDateInput,
2396
2409
  {
2410
+ ...rest,
2397
2411
  mode,
2398
2412
  ref: combinedRef,
2399
- ...rest,
2400
2413
  onChange: handleInputChange,
2401
2414
  onKeyDown: handleInputKeyDown,
2402
2415
  onClick: () => setCalendarOpen(true),
@@ -2814,13 +2827,26 @@ const DateFieldRange = ({
2814
2827
  disableCalendar,
2815
2828
  required,
2816
2829
  mode,
2830
+ value: valueProp,
2831
+ defaultValue: defaultValueProp,
2832
+ minDate: minDateProp,
2833
+ maxDate: maxDateProp,
2834
+ unavailable: unavailableProp,
2835
+ onChange: onChangeProp,
2817
2836
  ...rest
2818
2837
  }) => {
2819
2838
  const { ref: wrapperRef } = useFocusWithin({
2820
2839
  onBlur,
2821
2840
  onFocus
2822
2841
  });
2823
- const { value, defaultValue, minDate, maxDate, unavailable, onChange } = useDateFieldRangeConversion(rest);
2842
+ const { value, defaultValue, minDate, maxDate, unavailable, onChange } = useDateFieldRangeConversion({
2843
+ value: valueProp,
2844
+ defaultValue: defaultValueProp,
2845
+ minDate: minDateProp,
2846
+ maxDate: maxDateProp,
2847
+ unavailable: unavailableProp,
2848
+ onChange: onChangeProp
2849
+ });
2824
2850
  const inputRef = useRef(null);
2825
2851
  const [popoverTriggerRef, setPopoverTriggerRef] = useState();
2826
2852
  const popoverContentRef = useRef(null);
@@ -2881,13 +2907,12 @@ const DateFieldRange = ({
2881
2907
  }
2882
2908
  });
2883
2909
  }, [required, startDate, endDate, minDate, maxDate, unavailable]);
2884
- const { defaultValue: _, ...passthroughProps } = rest;
2885
2910
  const justTheField = /* @__PURE__ */ jsx(
2886
2911
  MaskedDateRangeInput,
2887
2912
  {
2913
+ ...rest,
2888
2914
  mode,
2889
2915
  ref: combinedRef,
2890
- ...passthroughProps,
2891
2916
  startDate: startDate ?? null,
2892
2917
  endDate: endDate ?? null,
2893
2918
  onChange: handleInputChange,
@@ -3021,6 +3046,10 @@ const MaskedYearlessDateInput = forwardRef(({ onChange, mode = "mm/dd", value, d
3021
3046
  isInputValid,
3022
3047
  isInputEmpty
3023
3048
  } = parseInputValue(event.target.value, mode, removePlaceholder);
3049
+ const isDateDifferent = v === null !== (currentParsedData.value === null) || v?.day !== currentParsedData.value?.day || v?.month !== currentParsedData.value?.month;
3050
+ if (!isDateDifferent) {
3051
+ return;
3052
+ }
3024
3053
  onChange?.({
3025
3054
  event,
3026
3055
  value: v ?? currentParsedData.value ?? null,
@@ -3104,24 +3133,6 @@ function stringifyYearlessDate(day, month, mode) {
3104
3133
  return `${mm}/${dd}`;
3105
3134
  }
3106
3135
 
3107
- const useConditionalChange = ({
3108
- changeHandler,
3109
- compareFn
3110
- }) => {
3111
- const lastChangeRef = useRef(null);
3112
- const onChange = useCallback(
3113
- (change) => {
3114
- if (!!lastChangeRef.current && !compareFn(lastChangeRef.current, change)) {
3115
- return;
3116
- }
3117
- changeHandler?.(change);
3118
- lastChangeRef.current = change;
3119
- },
3120
- [changeHandler, compareFn]
3121
- );
3122
- return onChange;
3123
- };
3124
-
3125
3136
  const DateFieldYearless = ({
3126
3137
  value: valueProp,
3127
3138
  defaultValue: defaultValueProp,
@@ -3148,14 +3159,10 @@ const DateFieldYearless = ({
3148
3159
  }),
3149
3160
  [value, required, unavailable, minDate, maxDate]
3150
3161
  );
3151
- const conditionalChange = useConditionalChange({
3152
- changeHandler: onChange,
3153
- compareFn: (a, b) => a.isInputValid !== b.isInputValid || a.isInputEmpty !== b.isInputEmpty || a.isValid !== b.isValid || a.value?.day !== b.value?.day || a.value?.month !== b.value?.month
3154
- });
3155
3162
  const handleInputChange = (change) => {
3156
3163
  const { event, value: value2, ...restChange } = change;
3157
3164
  setValue(value2);
3158
- return conditionalChange({
3165
+ return onChange?.({
3159
3166
  ...restChange,
3160
3167
  value: value2,
3161
3168
  isValid: validateYearlessDate({
@@ -3184,4 +3191,4 @@ const DateFieldYearless = ({
3184
3191
  DateFieldYearless.displayName = "DateFieldYearless";
3185
3192
 
3186
3193
  export { DateFieldRange as D, DateFieldSingle as a, DateFieldYearless as b };
3187
- //# sourceMappingURL=DateFieldYearless-M5KDI_hn-akXtkIZA.js.map
3194
+ //# sourceMappingURL=DateFieldYearless-C3_oGDr3-5meexzZO.js.map