@activecollab/components 2.0.117 → 2.0.119

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 (53) hide show
  1. package/dist/cjs/components/EditableHours/EditableHours.js +1 -1
  2. package/dist/cjs/components/EditableHours/EditableHours.js.map +1 -1
  3. package/dist/cjs/components/Icons/collection/ArrowRestore.js +46 -0
  4. package/dist/cjs/components/Icons/collection/ArrowRestore.js.map +1 -0
  5. package/dist/cjs/components/Icons/collection/index.js +7 -0
  6. package/dist/cjs/components/Icons/collection/index.js.map +1 -1
  7. package/dist/cjs/components/SelectTrigger/SelectTrigger.js +11 -1
  8. package/dist/cjs/components/SelectTrigger/SelectTrigger.js.map +1 -1
  9. package/dist/cjs/components/SelectTrigger/Styles.js +6 -3
  10. package/dist/cjs/components/SelectTrigger/Styles.js.map +1 -1
  11. package/dist/cjs/hooks/useInputHours.js +3 -3
  12. package/dist/cjs/hooks/useInputHours.js.map +1 -1
  13. package/dist/cjs/utils/index.js +7 -0
  14. package/dist/cjs/utils/index.js.map +1 -1
  15. package/dist/cjs/utils/timeUtils.js +87 -33
  16. package/dist/cjs/utils/timeUtils.js.map +1 -1
  17. package/dist/cjs/utils/timeUtils.test.js +1 -1
  18. package/dist/cjs/utils/timeUtils.test.js.map +1 -1
  19. package/dist/esm/components/EditableHours/EditableHours.js +2 -2
  20. package/dist/esm/components/EditableHours/EditableHours.js.map +1 -1
  21. package/dist/esm/components/Icons/collection/ArrowRestore.d.ts +23 -0
  22. package/dist/esm/components/Icons/collection/ArrowRestore.d.ts.map +1 -0
  23. package/dist/esm/components/Icons/collection/ArrowRestore.js +38 -0
  24. package/dist/esm/components/Icons/collection/ArrowRestore.js.map +1 -0
  25. package/dist/esm/components/Icons/collection/index.d.ts +1 -0
  26. package/dist/esm/components/Icons/collection/index.d.ts.map +1 -1
  27. package/dist/esm/components/Icons/collection/index.js +1 -0
  28. package/dist/esm/components/Icons/collection/index.js.map +1 -1
  29. package/dist/esm/components/SelectTrigger/SelectTrigger.d.ts +2 -3
  30. package/dist/esm/components/SelectTrigger/SelectTrigger.d.ts.map +1 -1
  31. package/dist/esm/components/SelectTrigger/SelectTrigger.js +12 -2
  32. package/dist/esm/components/SelectTrigger/SelectTrigger.js.map +1 -1
  33. package/dist/esm/components/SelectTrigger/Styles.d.ts +2 -3
  34. package/dist/esm/components/SelectTrigger/Styles.d.ts.map +1 -1
  35. package/dist/esm/components/SelectTrigger/Styles.js +8 -3
  36. package/dist/esm/components/SelectTrigger/Styles.js.map +1 -1
  37. package/dist/esm/hooks/useInputHours.js +4 -4
  38. package/dist/esm/hooks/useInputHours.js.map +1 -1
  39. package/dist/esm/utils/index.d.ts +1 -1
  40. package/dist/esm/utils/index.d.ts.map +1 -1
  41. package/dist/esm/utils/index.js +1 -1
  42. package/dist/esm/utils/index.js.map +1 -1
  43. package/dist/esm/utils/timeUtils.d.ts +34 -0
  44. package/dist/esm/utils/timeUtils.d.ts.map +1 -1
  45. package/dist/esm/utils/timeUtils.js +83 -30
  46. package/dist/esm/utils/timeUtils.js.map +1 -1
  47. package/dist/esm/utils/timeUtils.test.js +2 -2
  48. package/dist/esm/utils/timeUtils.test.js.map +1 -1
  49. package/dist/index.js +146 -40
  50. package/dist/index.js.map +1 -1
  51. package/dist/index.min.js +1 -1
  52. package/dist/index.min.js.map +1 -1
  53. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SelectTrigger.js","names":["React","forwardRef","StyledCaretIcon","StyledSelectTrigger","Typography","SelectTrigger","_ref","ref","children","type","size","invalid","open","endAdornment","typographyProps","mode","rest","createElement","_extends","role","$size","$invalid","$mode","as","overflow","whitespace","variant","color","undefined","$open","displayName"],"sources":["../../../../src/components/SelectTrigger/SelectTrigger.tsx"],"sourcesContent":["import React, { forwardRef, ComponentPropsWithoutRef } from \"react\";\n\nimport { StyledCaretIcon, StyledSelectTrigger } from \"./Styles\";\nimport { InputMode } from \"../Input/types\";\nimport { ITypographyProps, Typography } from \"../Typography/Typography\";\n\nexport type Size = \"regular\" | \"big\" | \"small\";\n\nexport interface SelectTriggerProps extends ComponentPropsWithoutRef<\"button\"> {\n size?: Size;\n invalid?: boolean;\n endAdornment?: JSX.Element;\n open?: boolean;\n typographyProps?: ITypographyProps;\n mode?: InputMode;\n}\n\nexport const SelectTrigger = forwardRef<HTMLButtonElement, SelectTriggerProps>(\n (\n {\n children,\n type = \"button\",\n size = \"regular\",\n invalid = false,\n open = false,\n endAdornment,\n typographyProps,\n mode = \"outlined\",\n ...rest\n },\n ref\n ) => {\n return (\n <StyledSelectTrigger\n ref={ref}\n role=\"button\"\n type={type}\n $size={size}\n $invalid={invalid}\n aria-invalid={invalid}\n $mode={mode}\n {...rest}\n >\n <Typography\n as=\"div\"\n overflow=\"truncate\"\n whitespace=\"no-wrap\"\n variant={size === \"small\" || size === \"regular\" ? \"Body 2\" : \"Body 1\"}\n color={mode === \"flat\" && invalid ? \"alert\" : undefined}\n {...typographyProps}\n >\n {children}\n </Typography>\n\n {endAdornment ? endAdornment : <StyledCaretIcon $open={open} />}\n </StyledSelectTrigger>\n );\n }\n);\n\nSelectTrigger.displayName = \"SelectTrigger\";\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAkC,OAAO;AAEnE,SAASC,eAAe,EAAEC,mBAAmB,QAAQ,UAAU;AAE/D,SAA2BC,UAAU,QAAQ,0BAA0B;AAavE,OAAO,MAAMC,aAAa,gBAAGJ,UAAU,CACrC,CAAAK,IAAA,EAYEC,GAAG,KACA;EAAA,IAZH;IACEC,QAAQ;IACRC,IAAI,GAAG,QAAQ;IACfC,IAAI,GAAG,SAAS;IAChBC,OAAO,GAAG,KAAK;IACfC,IAAI,GAAG,KAAK;IACZC,YAAY;IACZC,eAAe;IACfC,IAAI,GAAG,UAAU;IACjB,GAAGC;EACL,CAAC,GAAAV,IAAA;EAGD,oBACEN,KAAA,CAAAiB,aAAA,CAACd,mBAAmB,EAAAe,QAAA;IAClBX,GAAG,EAAEA,GAAI;IACTY,IAAI,EAAC,QAAQ;IACbV,IAAI,EAAEA,IAAK;IACXW,KAAK,EAAEV,IAAK;IACZW,QAAQ,EAAEV,OAAQ;IAClB,gBAAcA,OAAQ;IACtBW,KAAK,EAAEP;EAAK,GACRC,IAAI,gBAERhB,KAAA,CAAAiB,aAAA,CAACb,UAAU,EAAAc,QAAA;IACTK,EAAE,EAAC,KAAK;IACRC,QAAQ,EAAC,UAAU;IACnBC,UAAU,EAAC,SAAS;IACpBC,OAAO,EAAEhB,IAAI,KAAK,OAAO,IAAIA,IAAI,KAAK,SAAS,GAAG,QAAQ,GAAG,QAAS;IACtEiB,KAAK,EAAEZ,IAAI,KAAK,MAAM,IAAIJ,OAAO,GAAG,OAAO,GAAGiB;EAAU,GACpDd,eAAe,GAElBN,QACS,CAAC,EAEZK,YAAY,GAAGA,YAAY,gBAAGb,KAAA,CAAAiB,aAAA,CAACf,eAAe;IAAC2B,KAAK,EAAEjB;EAAK,CAAE,CAC3C,CAAC;AAE1B,CACF,CAAC;AAEDP,aAAa,CAACyB,WAAW,GAAG,eAAe"}
1
+ {"version":3,"file":"SelectTrigger.js","names":["React","forwardRef","useMemo","StyledCaretIcon","StyledSelectTrigger","Typography","SelectTrigger","_ref","ref","children","type","size","invalid","open","endAdornment","typographyProps","mode","rest","variant","createElement","_extends","role","$size","$invalid","$mode","as","overflow","whitespace","weight","color","undefined","$open","displayName"],"sources":["../../../../src/components/SelectTrigger/SelectTrigger.tsx"],"sourcesContent":["import React, { forwardRef, ComponentPropsWithoutRef, useMemo } from \"react\";\n\nimport { StyledCaretIcon, StyledSelectTrigger } from \"./Styles\";\nimport { InputMode, InputSize } from \"../Input/types\";\nimport { ITypographyProps, Typography } from \"../Typography/Typography\";\n\nexport interface SelectTriggerProps extends ComponentPropsWithoutRef<\"button\"> {\n size?: InputSize;\n invalid?: boolean;\n endAdornment?: JSX.Element;\n open?: boolean;\n typographyProps?: ITypographyProps;\n mode?: InputMode;\n}\n\nexport const SelectTrigger = forwardRef<HTMLButtonElement, SelectTriggerProps>(\n (\n {\n children,\n type = \"button\",\n size = \"regular\",\n invalid = false,\n open = false,\n endAdornment,\n typographyProps,\n mode = \"outlined\",\n ...rest\n },\n ref\n ) => {\n const variant = useMemo(() => {\n if (size === \"big\") {\n return \"Body 1\";\n }\n if (size === \"biggest\") {\n return \"Header 2\";\n }\n return \"Body 2\";\n }, [size]);\n return (\n <StyledSelectTrigger\n ref={ref}\n role=\"button\"\n type={type}\n $size={size}\n $invalid={invalid}\n aria-invalid={invalid}\n $mode={mode}\n {...rest}\n >\n <Typography\n as=\"div\"\n overflow=\"truncate\"\n whitespace=\"no-wrap\"\n variant={variant}\n weight={size === \"biggest\" ? \"bold\" : \"regular\"}\n color={mode === \"flat\" && invalid ? \"alert\" : undefined}\n {...typographyProps}\n >\n {children}\n </Typography>\n\n {endAdornment ? endAdornment : <StyledCaretIcon $open={open} />}\n </StyledSelectTrigger>\n );\n }\n);\n\nSelectTrigger.displayName = \"SelectTrigger\";\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,UAAU,EAA4BC,OAAO,QAAQ,OAAO;AAE5E,SAASC,eAAe,EAAEC,mBAAmB,QAAQ,UAAU;AAE/D,SAA2BC,UAAU,QAAQ,0BAA0B;AAWvE,OAAO,MAAMC,aAAa,gBAAGL,UAAU,CACrC,CAAAM,IAAA,EAYEC,GAAG,KACA;EAAA,IAZH;IACEC,QAAQ;IACRC,IAAI,GAAG,QAAQ;IACfC,IAAI,GAAG,SAAS;IAChBC,OAAO,GAAG,KAAK;IACfC,IAAI,GAAG,KAAK;IACZC,YAAY;IACZC,eAAe;IACfC,IAAI,GAAG,UAAU;IACjB,GAAGC;EACL,CAAC,GAAAV,IAAA;EAGD,MAAMW,OAAO,GAAGhB,OAAO,CAAC,MAAM;IAC5B,IAAIS,IAAI,KAAK,KAAK,EAAE;MAClB,OAAO,QAAQ;IACjB;IACA,IAAIA,IAAI,KAAK,SAAS,EAAE;MACtB,OAAO,UAAU;IACnB;IACA,OAAO,QAAQ;EACjB,CAAC,EAAE,CAACA,IAAI,CAAC,CAAC;EACV,oBACEX,KAAA,CAAAmB,aAAA,CAACf,mBAAmB,EAAAgB,QAAA;IAClBZ,GAAG,EAAEA,GAAI;IACTa,IAAI,EAAC,QAAQ;IACbX,IAAI,EAAEA,IAAK;IACXY,KAAK,EAAEX,IAAK;IACZY,QAAQ,EAAEX,OAAQ;IAClB,gBAAcA,OAAQ;IACtBY,KAAK,EAAER;EAAK,GACRC,IAAI,gBAERjB,KAAA,CAAAmB,aAAA,CAACd,UAAU,EAAAe,QAAA;IACTK,EAAE,EAAC,KAAK;IACRC,QAAQ,EAAC,UAAU;IACnBC,UAAU,EAAC,SAAS;IACpBT,OAAO,EAAEA,OAAQ;IACjBU,MAAM,EAAEjB,IAAI,KAAK,SAAS,GAAG,MAAM,GAAG,SAAU;IAChDkB,KAAK,EAAEb,IAAI,KAAK,MAAM,IAAIJ,OAAO,GAAG,OAAO,GAAGkB;EAAU,GACpDf,eAAe,GAElBN,QACS,CAAC,EAEZK,YAAY,GAAGA,YAAY,gBAAGd,KAAA,CAAAmB,aAAA,CAAChB,eAAe;IAAC4B,KAAK,EAAElB;EAAK,CAAE,CAC3C,CAAC;AAE1B,CACF,CAAC;AAEDP,aAAa,CAAC0B,WAAW,GAAG,eAAe"}
@@ -1,8 +1,7 @@
1
1
  /// <reference types="react" />
2
- import { Size } from "./SelectTrigger";
3
- import { InputMode } from "../Input/types";
2
+ import { InputMode, InputSize } from "../Input/types";
4
3
  export declare const StyledSelectTrigger: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>, any, {
5
- $size?: Size | undefined;
4
+ $size?: InputSize | undefined;
6
5
  $invalid?: boolean | undefined;
7
6
  $mode?: InputMode | undefined;
8
7
  }, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"Styles.d.ts","sourceRoot":"","sources":["../../../../src/components/SelectTrigger/Styles.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,eAAO,MAAM,mBAAmB;;;;SAsE/B,CAAC;AAIF,eAAO,MAAM,eAAe;WACnB,OAAO;SAWf,CAAC"}
1
+ {"version":3,"file":"Styles.d.ts","sourceRoot":"","sources":["../../../../src/components/SelectTrigger/Styles.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGtD,eAAO,MAAM,mBAAmB;;;;SA6E/B,CAAC;AAIF,eAAO,MAAM,eAAe;WACnB,OAAO;SAWf,CAAC"}
@@ -4,7 +4,7 @@ import { Trigger } from "../Trigger";
4
4
  export const StyledSelectTrigger = styled(Trigger).withConfig({
5
5
  displayName: "Styles__StyledSelectTrigger",
6
6
  componentId: "sc-9799p2-0"
7
- })(["display:flex;align-items:center;justify-content:space-between;padding:0 4px 0 8px;width:300px;transition:border-color 0.3s ease;background-color:transparent;border:none;", " ", " ", " ", " ", " ", " ", ";"], _ref => {
7
+ })(["display:flex;align-items:center;justify-content:space-between;padding:0 4px 0 8px;width:300px;transition:border-color 0.3s ease;background-color:transparent;border:none;", " ", " ", " ", " ", " ", " ", ";", ";"], _ref => {
8
8
  let {
9
9
  $mode
10
10
  } = _ref;
@@ -46,15 +46,20 @@ export const StyledSelectTrigger = styled(Trigger).withConfig({
46
46
  $size
47
47
  } = _ref7;
48
48
  return $size === "big" && css(["height:40px;border-radius:var(--ac-br-8);"]);
49
+ }, _ref8 => {
50
+ let {
51
+ $size
52
+ } = _ref8;
53
+ return $size === "biggest" && css(["height:48px;border-radius:var(--ac-br-8);"]);
49
54
  });
50
55
  StyledSelectTrigger.displayName = "StyledSelectTrigger";
51
56
  export const StyledCaretIcon = styled(CollapseExpandSingleIcon).withConfig({
52
57
  displayName: "Styles__StyledCaretIcon",
53
58
  componentId: "sc-9799p2-1"
54
- })(["margin-left:8px;flex-shrink:0;transition:transform 200ms ease;", ""], _ref8 => {
59
+ })(["margin-left:8px;flex-shrink:0;transition:transform 200ms ease;", ""], _ref9 => {
55
60
  let {
56
61
  $open
57
- } = _ref8;
62
+ } = _ref9;
58
63
  return !$open && css(["transform:rotate(180deg);"]);
59
64
  });
60
65
  StyledCaretIcon.displayName = "StyledCaretIcon";
@@ -1 +1 @@
1
- {"version":3,"file":"Styles.js","names":["styled","css","CollapseExpandSingleIcon","Trigger","StyledSelectTrigger","withConfig","displayName","componentId","_ref","$mode","_ref2","disabled","_ref3","$invalid","_ref4","_ref5","$size","_ref6","_ref7","StyledCaretIcon","_ref8","$open"],"sources":["../../../../src/components/SelectTrigger/Styles.ts"],"sourcesContent":["import styled, { css } from \"styled-components\";\nimport tw from \"twin.macro\";\n\nimport { Size } from \"./SelectTrigger\";\nimport { CollapseExpandSingleIcon } from \"../Icons\";\nimport { InputMode } from \"../Input/types\";\nimport { Trigger } from \"../Trigger\";\n\nexport const StyledSelectTrigger = styled(Trigger)<{\n $size?: Size;\n $invalid?: boolean;\n $mode?: InputMode;\n}>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 4px 0 8px;\n width: 300px;\n transition: border-color 0.3s ease;\n background-color: transparent;\n border: none;\n\n ${({ $mode }) =>\n $mode === \"outlined\" &&\n css`\n border: 1px solid var(--color-theme-500);\n background-color: var(--input-background-color);\n `}\n\n ${({ disabled }) =>\n disabled &&\n css`\n opacity: 50%;\n cursor: default;\n `}\n\n ${({ $invalid, disabled, $mode }) =>\n !$invalid &&\n !disabled &&\n $mode === \"outlined\" &&\n css`\n &:hover,\n &:focus {\n border-color: var(--color-primary-700);\n }\n `}\n\n ${({ $invalid, $mode }) =>\n $invalid &&\n $mode === \"outlined\" &&\n css`\n ${tw`tw-border-alert`}\n\n &:hover {\n ${tw`tw-border-alert`}\n }\n `}\n\n ${({ $size }) =>\n $size === \"small\" &&\n css`\n height: 24px;\n border-radius: var(--ac-br-6);\n `}\n\n ${({ $size }) =>\n $size === \"regular\" &&\n css`\n height: 32px;\n border-radius: var(--ac-br-8);\n `}\n\n ${({ $size }) =>\n $size === \"big\" &&\n css`\n height: 40px;\n border-radius: var(--ac-br-8);\n `};\n`;\n\nStyledSelectTrigger.displayName = \"StyledSelectTrigger\";\n\nexport const StyledCaretIcon = styled(CollapseExpandSingleIcon)<{\n $open: boolean;\n}>`\n margin-left: 8px;\n flex-shrink: 0;\n transition: transform 200ms ease;\n\n ${({ $open }) =>\n !$open &&\n css`\n transform: rotate(180deg);\n `}\n`;\n\nStyledCaretIcon.displayName = \"StyledCaretIcon\";\n"],"mappings":"AAAA,OAAOA,MAAM,IAAIC,GAAG,QAAQ,mBAAmB;AAI/C,SAASC,wBAAwB,QAAQ,UAAU;AAEnD,SAASC,OAAO,QAAQ,YAAY;AAEpC,OAAO,MAAMC,mBAAmB,GAAGJ,MAAM,CAACG,OAAO,CAAC,CAAAE,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,qNAc9CC,IAAA;EAAA,IAAC;IAAEC;EAAM,CAAC,GAAAD,IAAA;EAAA,OACVC,KAAK,KAAK,UAAU,IACpBR,GAAG,6FAGF;AAAA,GAEDS,KAAA;EAAA,IAAC;IAAEC;EAAS,CAAC,GAAAD,KAAA;EAAA,OACbC,QAAQ,IACRV,GAAG,iCAGF;AAAA,GAEDW,KAAA;EAAA,IAAC;IAAEC,QAAQ;IAAEF,QAAQ;IAAEF;EAAM,CAAC,GAAAG,KAAA;EAAA,OAC9B,CAACC,QAAQ,IACT,CAACF,QAAQ,IACTF,KAAK,KAAK,UAAU,IACpBR,GAAG,6DAKF;AAAA,GAEDa,KAAA;EAAA,IAAC;IAAED,QAAQ;IAAEJ;EAAM,CAAC,GAAAK,KAAA;EAAA,OACpBD,QAAQ,IACRJ,KAAK,KAAK,UAAU,IACpBR,GAAG,yBACG;IAAA;EAAgB,CAAC,EAGf;IAAA;EAAgB,CAAC,CAExB;AAAA,GAEDc,KAAA;EAAA,IAAC;IAAEC;EAAM,CAAC,GAAAD,KAAA;EAAA,OACVC,KAAK,KAAK,OAAO,IACjBf,GAAG,+CAGF;AAAA,GAEDgB,KAAA;EAAA,IAAC;IAAED;EAAM,CAAC,GAAAC,KAAA;EAAA,OACVD,KAAK,KAAK,SAAS,IACnBf,GAAG,+CAGF;AAAA,GAECiB,KAAA;EAAA,IAAC;IAAEF;EAAM,CAAC,GAAAE,KAAA;EAAA,OACZF,KAAK,KAAK,KAAK,IACff,GAAG,+CAGF;AAAA,EACJ;AAEDG,mBAAmB,CAACE,WAAW,GAAG,qBAAqB;AAEvD,OAAO,MAAMa,eAAe,GAAGnB,MAAM,CAACE,wBAAwB,CAAC,CAAAG,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,2EAO3Da,KAAA;EAAA,IAAC;IAAEC;EAAM,CAAC,GAAAD,KAAA;EAAA,OACV,CAACC,KAAK,IACNpB,GAAG,+BAEF;AAAA,EACJ;AAEDkB,eAAe,CAACb,WAAW,GAAG,iBAAiB"}
1
+ {"version":3,"file":"Styles.js","names":["styled","css","CollapseExpandSingleIcon","Trigger","StyledSelectTrigger","withConfig","displayName","componentId","_ref","$mode","_ref2","disabled","_ref3","$invalid","_ref4","_ref5","$size","_ref6","_ref7","_ref8","StyledCaretIcon","_ref9","$open"],"sources":["../../../../src/components/SelectTrigger/Styles.ts"],"sourcesContent":["import styled, { css } from \"styled-components\";\nimport tw from \"twin.macro\";\n\nimport { CollapseExpandSingleIcon } from \"../Icons\";\nimport { InputMode, InputSize } from \"../Input/types\";\nimport { Trigger } from \"../Trigger\";\n\nexport const StyledSelectTrigger = styled(Trigger)<{\n $size?: InputSize;\n $invalid?: boolean;\n $mode?: InputMode;\n}>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 4px 0 8px;\n width: 300px;\n transition: border-color 0.3s ease;\n background-color: transparent;\n border: none;\n\n ${({ $mode }) =>\n $mode === \"outlined\" &&\n css`\n border: 1px solid var(--color-theme-500);\n background-color: var(--input-background-color);\n `}\n\n ${({ disabled }) =>\n disabled &&\n css`\n opacity: 50%;\n cursor: default;\n `}\n\n ${({ $invalid, disabled, $mode }) =>\n !$invalid &&\n !disabled &&\n $mode === \"outlined\" &&\n css`\n &:hover,\n &:focus {\n border-color: var(--color-primary-700);\n }\n `}\n\n ${({ $invalid, $mode }) =>\n $invalid &&\n $mode === \"outlined\" &&\n css`\n ${tw`tw-border-alert`}\n\n &:hover {\n ${tw`tw-border-alert`}\n }\n `}\n\n ${({ $size }) =>\n $size === \"small\" &&\n css`\n height: 24px;\n border-radius: var(--ac-br-6);\n `}\n\n ${({ $size }) =>\n $size === \"regular\" &&\n css`\n height: 32px;\n border-radius: var(--ac-br-8);\n `}\n\n ${({ $size }) =>\n $size === \"big\" &&\n css`\n height: 40px;\n border-radius: var(--ac-br-8);\n `};\n\n ${({ $size }) =>\n $size === \"biggest\" &&\n css`\n height: 48px;\n border-radius: var(--ac-br-8);\n `};\n`;\n\nStyledSelectTrigger.displayName = \"StyledSelectTrigger\";\n\nexport const StyledCaretIcon = styled(CollapseExpandSingleIcon)<{\n $open: boolean;\n}>`\n margin-left: 8px;\n flex-shrink: 0;\n transition: transform 200ms ease;\n\n ${({ $open }) =>\n !$open &&\n css`\n transform: rotate(180deg);\n `}\n`;\n\nStyledCaretIcon.displayName = \"StyledCaretIcon\";\n"],"mappings":"AAAA,OAAOA,MAAM,IAAIC,GAAG,QAAQ,mBAAmB;AAG/C,SAASC,wBAAwB,QAAQ,UAAU;AAEnD,SAASC,OAAO,QAAQ,YAAY;AAEpC,OAAO,MAAMC,mBAAmB,GAAGJ,MAAM,CAACG,OAAO,CAAC,CAAAE,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,0NAc9CC,IAAA;EAAA,IAAC;IAAEC;EAAM,CAAC,GAAAD,IAAA;EAAA,OACVC,KAAK,KAAK,UAAU,IACpBR,GAAG,6FAGF;AAAA,GAEDS,KAAA;EAAA,IAAC;IAAEC;EAAS,CAAC,GAAAD,KAAA;EAAA,OACbC,QAAQ,IACRV,GAAG,iCAGF;AAAA,GAEDW,KAAA;EAAA,IAAC;IAAEC,QAAQ;IAAEF,QAAQ;IAAEF;EAAM,CAAC,GAAAG,KAAA;EAAA,OAC9B,CAACC,QAAQ,IACT,CAACF,QAAQ,IACTF,KAAK,KAAK,UAAU,IACpBR,GAAG,6DAKF;AAAA,GAEDa,KAAA;EAAA,IAAC;IAAED,QAAQ;IAAEJ;EAAM,CAAC,GAAAK,KAAA;EAAA,OACpBD,QAAQ,IACRJ,KAAK,KAAK,UAAU,IACpBR,GAAG,yBACG;IAAA;EAAgB,CAAC,EAGf;IAAA;EAAgB,CAAC,CAExB;AAAA,GAEDc,KAAA;EAAA,IAAC;IAAEC;EAAM,CAAC,GAAAD,KAAA;EAAA,OACVC,KAAK,KAAK,OAAO,IACjBf,GAAG,+CAGF;AAAA,GAEDgB,KAAA;EAAA,IAAC;IAAED;EAAM,CAAC,GAAAC,KAAA;EAAA,OACVD,KAAK,KAAK,SAAS,IACnBf,GAAG,+CAGF;AAAA,GAECiB,KAAA;EAAA,IAAC;IAAEF;EAAM,CAAC,GAAAE,KAAA;EAAA,OACZF,KAAK,KAAK,KAAK,IACff,GAAG,+CAGF;AAAA,GAEDkB,KAAA;EAAA,IAAC;IAAEH;EAAM,CAAC,GAAAG,KAAA;EAAA,OACVH,KAAK,KAAK,SAAS,IACnBf,GAAG,+CAGF;AAAA,EACJ;AAEDG,mBAAmB,CAACE,WAAW,GAAG,qBAAqB;AAEvD,OAAO,MAAMc,eAAe,GAAGpB,MAAM,CAACE,wBAAwB,CAAC,CAAAG,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,2EAO3Dc,KAAA;EAAA,IAAC;IAAEC;EAAM,CAAC,GAAAD,KAAA;EAAA,OACV,CAACC,KAAK,IACNrB,GAAG,+BAEF;AAAA,EACJ;AAEDmB,eAAe,CAACd,WAAW,GAAG,iBAAiB"}
@@ -1,5 +1,5 @@
1
1
  import { useCallback, useMemo, useRef, useState } from "react";
2
- import { decimalToHours } from "../utils";
2
+ import { formatHours } from "../utils";
3
3
  import { validateTimeInput } from "../utils";
4
4
  export const useInputHours = (_ref, inputRef) => {
5
5
  let {
@@ -15,15 +15,15 @@ export const useInputHours = (_ref, inputRef) => {
15
15
  onChange,
16
16
  onClick
17
17
  } = _ref;
18
- const [currentValue, setCurrentValue] = useState(() => decimalToHours(value, withLeadingZero));
19
- const [prevValue, setPrevValue] = useState(() => decimalToHours(value, withLeadingZero));
18
+ const [currentValue, setCurrentValue] = useState(() => formatHours(value, withLeadingZero));
19
+ const [prevValue, setPrevValue] = useState(() => formatHours(value, withLeadingZero));
20
20
  const escapeRef = useRef(false);
21
21
  const handleBlur = useCallback(e => {
22
22
  if (escapeRef.current) {
23
23
  setCurrentValue(prevValue);
24
24
  } else {
25
25
  if (e.target.value.trim().length > 0 && prevValue !== e.target.value) {
26
- const _value = decimalToHours(e.target.value, withLeadingZero);
26
+ const _value = formatHours(e.target.value, withLeadingZero);
27
27
  setPrevValue(_value);
28
28
  setCurrentValue(_value);
29
29
  typeof onSave === "function" && onSave(e);
@@ -1 +1 @@
1
- {"version":3,"file":"useInputHours.js","names":["useCallback","useMemo","useRef","useState","decimalToHours","validateTimeInput","useInputHours","_ref","inputRef","value","withLeadingZero","onSave","validation","allowEmptyValue","onCancel","minuteIncrement","incrementOnlySelected","onEnterKeyPress","onChange","onClick","currentValue","setCurrentValue","prevValue","setPrevValue","escapeRef","handleBlur","e","current","target","trim","length","_value","handleIncrementDecrement","increment","selectionStart","dotsIndex","indexOf","hours","minutes","split","map","Number","newHours","newMinutes","newMinutesString","newHoursString","newValue","requestAnimationFrame","_inputRef$current","newDotsIndex","isHoursSelected","newSelectionStart","selectionEnd","setSelectionRange","handleKeyDown","key","blur","metaKey","ctrlKey","_inputRef$current2","select","input","start","end","shiftKey","isMinutesSelected","_inputRef$current3","preventDefault","_inputRef$current4","substring","handleChange","handleClick","_inputRef$current5","_inputRef$current6","_inputRef$current7","handleDoubleClick","_inputRef$current8","inputProps","onBlur","onKeyDown","onDoubleClick"],"sources":["../../../src/hooks/useInputHours.tsx"],"sourcesContent":["import {\n RefObject,\n useCallback,\n useMemo,\n useRef,\n useState,\n MouseEvent,\n} from \"react\";\n\nimport { decimalToHours } from \"../utils\";\nimport { validateTimeInput } from \"../utils\";\n\nexport interface IInputHours {\n value?: string | number;\n withLeadingZero?: boolean;\n onSave?: (e: Event) => void;\n validation?: (...args) => boolean;\n allowEmptyValue?: boolean;\n onCancel?: (e: Event) => void;\n minuteIncrement?: number;\n incrementOnlySelected?: boolean;\n onEnterKeyPress?: (val: string) => void;\n onChange?: (val: string) => void;\n onClick?: (event: MouseEvent<HTMLInputElement>) => void;\n}\n\nexport const useInputHours = (\n {\n value,\n withLeadingZero,\n onSave,\n validation = validateTimeInput,\n allowEmptyValue,\n onCancel,\n minuteIncrement = 1,\n incrementOnlySelected,\n onEnterKeyPress,\n onChange,\n onClick,\n }: IInputHours,\n inputRef: RefObject<HTMLInputElement | null>\n) => {\n const [currentValue, setCurrentValue] = useState(() =>\n decimalToHours(value, withLeadingZero)\n );\n const [prevValue, setPrevValue] = useState(() =>\n decimalToHours(value, withLeadingZero)\n );\n\n const escapeRef = useRef(false);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n } else {\n if (e.target.value.trim().length > 0 && prevValue !== e.target.value) {\n const _value = decimalToHours(e.target.value, withLeadingZero);\n setPrevValue(_value);\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n if (!allowEmptyValue) {\n setCurrentValue(prevValue);\n typeof onCancel === \"function\" && onCancel(e);\n } else {\n if (typeof onSave === \"function\" && prevValue !== e.target.value) {\n onSave(e);\n } else {\n typeof onCancel === \"function\" && onCancel(e);\n }\n }\n }\n }\n },\n [allowEmptyValue, onCancel, onSave, prevValue, withLeadingZero]\n );\n\n const handleIncrementDecrement = useCallback(\n (increment: boolean) => {\n if (inputRef.current) {\n const selectionStart = inputRef.current.selectionStart;\n if (selectionStart !== null) {\n const dotsIndex = currentValue.indexOf(\":\");\n const [hours, minutes] = currentValue.split(\":\").map(Number);\n let newHours = hours;\n let newMinutes = minutes;\n\n if (selectionStart < dotsIndex) {\n if (increment) {\n newHours += 1;\n } else {\n newHours -= 1;\n if (newHours < 0) newHours = 0;\n }\n } else if (selectionStart > dotsIndex) {\n if (increment) {\n newMinutes += minuteIncrement;\n if (newMinutes > 59) {\n newMinutes = 0;\n if (!incrementOnlySelected) newHours += 1;\n }\n } else {\n if (newMinutes >= minuteIncrement || newMinutes === 0) {\n newMinutes -= minuteIncrement;\n if (newMinutes < 0 && newHours > 0) {\n newMinutes = 60 - minuteIncrement;\n if (!incrementOnlySelected) newHours -= 1;\n }\n if (newHours < 0) {\n newHours = 0;\n }\n } else {\n newMinutes = 0;\n }\n }\n }\n\n const newMinutesString =\n newMinutes < 10 ? `0${newMinutes}` : newMinutes;\n const newHoursString =\n withLeadingZero && newHours < 10 ? `0${newHours}` : newHours;\n const newValue = `${newHoursString}:${newMinutesString}`;\n\n if (validation(newValue, withLeadingZero)) {\n setCurrentValue(newValue);\n\n if (onChange) onChange(newValue);\n\n requestAnimationFrame(() => {\n const newDotsIndex = newValue.indexOf(\":\");\n const isHoursSelected = selectionStart < newDotsIndex;\n const newSelectionStart = isHoursSelected ? 0 : newDotsIndex + 1;\n const selectionEnd = isHoursSelected\n ? newDotsIndex\n : newValue.length;\n inputRef.current?.setSelectionRange(\n newSelectionStart,\n selectionEnd\n );\n });\n }\n }\n }\n },\n [\n currentValue,\n incrementOnlySelected,\n inputRef,\n minuteIncrement,\n onChange,\n validation,\n withLeadingZero,\n ]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.target.blur();\n if (typeof onEnterKeyPress === \"function\")\n onEnterKeyPress(e.target.value);\n }\n if (e.key === \"ArrowLeft\") {\n return;\n }\n if (e.key === \"ArrowRight\") {\n return;\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel(e);\n escapeRef.current = false;\n }\n if (e.key === \"Backspace\") {\n return;\n }\n if ((e.metaKey || e.ctrlKey) && e.key === \"a\") {\n inputRef.current?.select();\n return;\n }\n const input = e.target;\n const start = input.selectionStart;\n const end = input.selectionEnd;\n const currentValue = input.value;\n if (e.key === \"Tab\") {\n if (start !== end) {\n if (e.shiftKey) {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isMinutesSelected = start > newDotsIndex;\n if (isMinutesSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(0, newDotsIndex);\n }\n } else {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isHoursSelected = start < newDotsIndex;\n if (isHoursSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(\n newDotsIndex + 1,\n currentValue.length\n );\n }\n }\n }\n return;\n }\n\n if (start !== end) {\n if (e.key === \"ArrowUp\") {\n handleIncrementDecrement(true);\n return;\n }\n if (e.key === \"ArrowDown\") {\n handleIncrementDecrement(false);\n return;\n }\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n if (!validation(newValue, withLeadingZero)) {\n e.preventDefault();\n return;\n }\n } else {\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n\n if (!validation(newValue, withLeadingZero)) {\n e.preventDefault();\n return;\n }\n }\n },\n [\n handleIncrementDecrement,\n inputRef,\n onCancel,\n onEnterKeyPress,\n validation,\n withLeadingZero,\n ]\n );\n\n const handleChange = useCallback(\n (e) => {\n setCurrentValue(e.target.value);\n if (onChange) onChange(e.target.value);\n },\n [onChange]\n );\n\n const handleClick = useCallback(\n (e) => {\n const selectionStart = inputRef.current?.selectionStart;\n if (\n inputRef.current &&\n currentValue &&\n currentValue.length > 0 &&\n typeof selectionStart === \"number\"\n ) {\n const dotsIndex = currentValue.indexOf(\":\");\n if (selectionStart < dotsIndex) {\n inputRef.current?.setSelectionRange(0, dotsIndex);\n } else if (selectionStart >= dotsIndex) {\n inputRef.current?.setSelectionRange(\n dotsIndex + 1,\n currentValue.length\n );\n }\n }\n\n if (typeof onClick === \"function\") {\n onClick(e);\n }\n },\n [currentValue, inputRef, onClick]\n );\n\n const handleDoubleClick = useCallback(() => {\n if (inputRef.current) {\n inputRef.current?.select();\n }\n }, [inputRef]);\n\n const inputProps = useMemo(() => {\n return {\n value: currentValue,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n onClick: handleClick,\n onDoubleClick: handleDoubleClick,\n };\n }, [\n currentValue,\n handleBlur,\n handleChange,\n handleClick,\n handleDoubleClick,\n handleKeyDown,\n ]);\n\n return {\n inputProps,\n setCurrentValue,\n setPrevValue,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"useInputHours.js","names":["useCallback","useMemo","useRef","useState","formatHours","validateTimeInput","useInputHours","_ref","inputRef","value","withLeadingZero","onSave","validation","allowEmptyValue","onCancel","minuteIncrement","incrementOnlySelected","onEnterKeyPress","onChange","onClick","currentValue","setCurrentValue","prevValue","setPrevValue","escapeRef","handleBlur","e","current","target","trim","length","_value","handleIncrementDecrement","increment","selectionStart","dotsIndex","indexOf","hours","minutes","split","map","Number","newHours","newMinutes","newMinutesString","newHoursString","newValue","requestAnimationFrame","_inputRef$current","newDotsIndex","isHoursSelected","newSelectionStart","selectionEnd","setSelectionRange","handleKeyDown","key","blur","metaKey","ctrlKey","_inputRef$current2","select","input","start","end","shiftKey","isMinutesSelected","_inputRef$current3","preventDefault","_inputRef$current4","substring","handleChange","handleClick","_inputRef$current5","_inputRef$current6","_inputRef$current7","handleDoubleClick","_inputRef$current8","inputProps","onBlur","onKeyDown","onDoubleClick"],"sources":["../../../src/hooks/useInputHours.tsx"],"sourcesContent":["import {\n RefObject,\n useCallback,\n useMemo,\n useRef,\n useState,\n MouseEvent,\n} from \"react\";\n\nimport { formatHours } from \"../utils\";\nimport { validateTimeInput } from \"../utils\";\n\nexport interface IInputHours {\n value?: string | number;\n withLeadingZero?: boolean;\n onSave?: (e: Event) => void;\n validation?: (...args) => boolean;\n allowEmptyValue?: boolean;\n onCancel?: (e: Event) => void;\n minuteIncrement?: number;\n incrementOnlySelected?: boolean;\n onEnterKeyPress?: (val: string) => void;\n onChange?: (val: string) => void;\n onClick?: (event: MouseEvent<HTMLInputElement>) => void;\n}\n\nexport const useInputHours = (\n {\n value,\n withLeadingZero,\n onSave,\n validation = validateTimeInput,\n allowEmptyValue,\n onCancel,\n minuteIncrement = 1,\n incrementOnlySelected,\n onEnterKeyPress,\n onChange,\n onClick,\n }: IInputHours,\n inputRef: RefObject<HTMLInputElement | null>\n) => {\n const [currentValue, setCurrentValue] = useState(() =>\n formatHours(value, withLeadingZero)\n );\n const [prevValue, setPrevValue] = useState(() =>\n formatHours(value, withLeadingZero)\n );\n\n const escapeRef = useRef(false);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n } else {\n if (e.target.value.trim().length > 0 && prevValue !== e.target.value) {\n const _value = formatHours(e.target.value, withLeadingZero);\n setPrevValue(_value);\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n if (!allowEmptyValue) {\n setCurrentValue(prevValue);\n typeof onCancel === \"function\" && onCancel(e);\n } else {\n if (typeof onSave === \"function\" && prevValue !== e.target.value) {\n onSave(e);\n } else {\n typeof onCancel === \"function\" && onCancel(e);\n }\n }\n }\n }\n },\n [allowEmptyValue, onCancel, onSave, prevValue, withLeadingZero]\n );\n\n const handleIncrementDecrement = useCallback(\n (increment: boolean) => {\n if (inputRef.current) {\n const selectionStart = inputRef.current.selectionStart;\n if (selectionStart !== null) {\n const dotsIndex = currentValue.indexOf(\":\");\n const [hours, minutes] = currentValue.split(\":\").map(Number);\n let newHours = hours;\n let newMinutes = minutes;\n\n if (selectionStart < dotsIndex) {\n if (increment) {\n newHours += 1;\n } else {\n newHours -= 1;\n if (newHours < 0) newHours = 0;\n }\n } else if (selectionStart > dotsIndex) {\n if (increment) {\n newMinutes += minuteIncrement;\n if (newMinutes > 59) {\n newMinutes = 0;\n if (!incrementOnlySelected) newHours += 1;\n }\n } else {\n if (newMinutes >= minuteIncrement || newMinutes === 0) {\n newMinutes -= minuteIncrement;\n if (newMinutes < 0 && newHours > 0) {\n newMinutes = 60 - minuteIncrement;\n if (!incrementOnlySelected) newHours -= 1;\n }\n if (newHours < 0) {\n newHours = 0;\n }\n } else {\n newMinutes = 0;\n }\n }\n }\n\n const newMinutesString =\n newMinutes < 10 ? `0${newMinutes}` : newMinutes;\n const newHoursString =\n withLeadingZero && newHours < 10 ? `0${newHours}` : newHours;\n const newValue = `${newHoursString}:${newMinutesString}`;\n\n if (validation(newValue, withLeadingZero)) {\n setCurrentValue(newValue);\n\n if (onChange) onChange(newValue);\n\n requestAnimationFrame(() => {\n const newDotsIndex = newValue.indexOf(\":\");\n const isHoursSelected = selectionStart < newDotsIndex;\n const newSelectionStart = isHoursSelected ? 0 : newDotsIndex + 1;\n const selectionEnd = isHoursSelected\n ? newDotsIndex\n : newValue.length;\n inputRef.current?.setSelectionRange(\n newSelectionStart,\n selectionEnd\n );\n });\n }\n }\n }\n },\n [\n currentValue,\n incrementOnlySelected,\n inputRef,\n minuteIncrement,\n onChange,\n validation,\n withLeadingZero,\n ]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.target.blur();\n if (typeof onEnterKeyPress === \"function\")\n onEnterKeyPress(e.target.value);\n }\n if (e.key === \"ArrowLeft\") {\n return;\n }\n if (e.key === \"ArrowRight\") {\n return;\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel(e);\n escapeRef.current = false;\n }\n if (e.key === \"Backspace\") {\n return;\n }\n if ((e.metaKey || e.ctrlKey) && e.key === \"a\") {\n inputRef.current?.select();\n return;\n }\n const input = e.target;\n const start = input.selectionStart;\n const end = input.selectionEnd;\n const currentValue = input.value;\n if (e.key === \"Tab\") {\n if (start !== end) {\n if (e.shiftKey) {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isMinutesSelected = start > newDotsIndex;\n if (isMinutesSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(0, newDotsIndex);\n }\n } else {\n const newDotsIndex = currentValue.indexOf(\":\");\n const isHoursSelected = start < newDotsIndex;\n if (isHoursSelected) {\n e.preventDefault();\n inputRef.current?.setSelectionRange(\n newDotsIndex + 1,\n currentValue.length\n );\n }\n }\n }\n return;\n }\n\n if (start !== end) {\n if (e.key === \"ArrowUp\") {\n handleIncrementDecrement(true);\n return;\n }\n if (e.key === \"ArrowDown\") {\n handleIncrementDecrement(false);\n return;\n }\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n if (!validation(newValue, withLeadingZero)) {\n e.preventDefault();\n return;\n }\n } else {\n const newValue =\n currentValue.substring(0, start) +\n e.key +\n currentValue.substring(end);\n\n if (!validation(newValue, withLeadingZero)) {\n e.preventDefault();\n return;\n }\n }\n },\n [\n handleIncrementDecrement,\n inputRef,\n onCancel,\n onEnterKeyPress,\n validation,\n withLeadingZero,\n ]\n );\n\n const handleChange = useCallback(\n (e) => {\n setCurrentValue(e.target.value);\n if (onChange) onChange(e.target.value);\n },\n [onChange]\n );\n\n const handleClick = useCallback(\n (e) => {\n const selectionStart = inputRef.current?.selectionStart;\n if (\n inputRef.current &&\n currentValue &&\n currentValue.length > 0 &&\n typeof selectionStart === \"number\"\n ) {\n const dotsIndex = currentValue.indexOf(\":\");\n if (selectionStart < dotsIndex) {\n inputRef.current?.setSelectionRange(0, dotsIndex);\n } else if (selectionStart >= dotsIndex) {\n inputRef.current?.setSelectionRange(\n dotsIndex + 1,\n currentValue.length\n );\n }\n }\n\n if (typeof onClick === \"function\") {\n onClick(e);\n }\n },\n [currentValue, inputRef, onClick]\n );\n\n const handleDoubleClick = useCallback(() => {\n if (inputRef.current) {\n inputRef.current?.select();\n }\n }, [inputRef]);\n\n const inputProps = useMemo(() => {\n return {\n value: currentValue,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n onClick: handleClick,\n onDoubleClick: handleDoubleClick,\n };\n }, [\n currentValue,\n handleBlur,\n handleChange,\n handleClick,\n handleDoubleClick,\n handleKeyDown,\n ]);\n\n return {\n inputProps,\n setCurrentValue,\n setPrevValue,\n };\n};\n"],"mappings":"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"}
@@ -3,6 +3,6 @@ export * from "./colors";
3
3
  export * from "./validation";
4
4
  export { default as useForkRef } from "./useForkRef";
5
5
  export { default as useResizeObserver } from "./useResizeObserver";
6
- export { decimalToHours } from "./timeUtils";
6
+ export { decimalToHours, formatHours } from "./timeUtils";
7
7
  export { formatNumber, formatCurrency, numberWithSeparator, getNumberFromString, } from "./currencyUtils";
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EACL,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EACL,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC"}
@@ -3,6 +3,6 @@ export * from "./colors";
3
3
  export * from "./validation";
4
4
  export { default as useForkRef } from "./useForkRef";
5
5
  export { default as useResizeObserver } from "./useResizeObserver";
6
- export { decimalToHours } from "./timeUtils";
6
+ export { decimalToHours, formatHours } from "./timeUtils";
7
7
  export { formatNumber, formatCurrency, numberWithSeparator, getNumberFromString } from "./currencyUtils";
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","useForkRef","useResizeObserver","decimalToHours","formatNumber","formatCurrency","numberWithSeparator","getNumberFromString"],"sources":["../../../src/utils/index.ts"],"sourcesContent":["export * from \"./layers\";\nexport * from \"./colors\";\nexport * from \"./validation\";\nexport { default as useForkRef } from \"./useForkRef\";\nexport { default as useResizeObserver } from \"./useResizeObserver\";\nexport { decimalToHours } from \"./timeUtils\";\nexport {\n formatNumber,\n formatCurrency,\n numberWithSeparator,\n getNumberFromString,\n} from \"./currencyUtils\";\n"],"mappings":"AAAA,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,cAAc;AAC5B,SAASA,OAAO,IAAIC,UAAU,QAAQ,cAAc;AACpD,SAASD,OAAO,IAAIE,iBAAiB,QAAQ,qBAAqB;AAClE,SAASC,cAAc,QAAQ,aAAa;AAC5C,SACEC,YAAY,EACZC,cAAc,EACdC,mBAAmB,EACnBC,mBAAmB,QACd,iBAAiB"}
1
+ {"version":3,"file":"index.js","names":["default","useForkRef","useResizeObserver","decimalToHours","formatHours","formatNumber","formatCurrency","numberWithSeparator","getNumberFromString"],"sources":["../../../src/utils/index.ts"],"sourcesContent":["export * from \"./layers\";\nexport * from \"./colors\";\nexport * from \"./validation\";\nexport { default as useForkRef } from \"./useForkRef\";\nexport { default as useResizeObserver } from \"./useResizeObserver\";\nexport { decimalToHours, formatHours } from \"./timeUtils\";\nexport {\n formatNumber,\n formatCurrency,\n numberWithSeparator,\n getNumberFromString,\n} from \"./currencyUtils\";\n"],"mappings":"AAAA,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,cAAc;AAC5B,SAASA,OAAO,IAAIC,UAAU,QAAQ,cAAc;AACpD,SAASD,OAAO,IAAIE,iBAAiB,QAAQ,qBAAqB;AAClE,SAASC,cAAc,EAAEC,WAAW,QAAQ,aAAa;AACzD,SACEC,YAAY,EACZC,cAAc,EACdC,mBAAmB,EACnBC,mBAAmB,QACd,iBAAiB"}
@@ -1,3 +1,37 @@
1
+ /**
2
+ * @function formatHours
3
+ * @description
4
+ * Formats a decimal number representing hours into a formatted string (HH:MM).
5
+ * The input can be a number, string, or undefined. The function handles various formats
6
+ * and can optionally add a leading zero to the hours component.
7
+ *
8
+ * @param {number | string | undefined} num - The input representing the hours, which can be in decimal format, a time string, or undefined.
9
+ * @param {boolean} [withLeadingZeroHours=false] - Whether to add a leading zero to the hours part of the output.
10
+ *
11
+ * @returns {string} - A formatted time string in HH:MM format.
12
+ *
13
+ * @example
14
+ * formatHours(1.5) // "1:30"
15
+ * formatHours("3.5", true) // "03:30"
16
+ */
17
+ export declare const formatHours: (num: number | string | undefined, withLeadingZeroHours?: boolean) => string;
18
+ /**
19
+ * @function decimalToHours
20
+ * @deprecated
21
+ * @description
22
+ * Converts a decimal number representing hours into a formatted string (HH:MM).
23
+ * The input can be a number, string, or undefined. The function handles various formats
24
+ * and can optionally add a leading zero to the hours component.
25
+ *
26
+ * @param {number | string | undefined} num - The input representing the hours, which can be in decimal format, a time string, or undefined.
27
+ * @param {boolean} [withLeadingZeroHours=false] - Whether to add a leading zero to the hours part of the output.
28
+ *
29
+ * @returns {string} - A formatted time string in HH:MM format.
30
+ *
31
+ * @example
32
+ * decimalToHours(1.5) // "1:30"
33
+ * decimalToHours("3.5", true) // "03:30"
34
+ */
1
35
  export declare const decimalToHours: (num: number | string | undefined, withLeadingZeroHours?: boolean) => string;
2
36
  export declare const withLeadingZero: (num: string | number, size?: number) => string;
3
37
  export declare const isDecimal: (num: number) => boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"timeUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/timeUtils.ts"],"names":[],"mappings":"AA+BA,eAAO,MAAM,cAAc,QACpB,MAAM,GAAG,MAAM,GAAG,SAAS,qCAE/B,MAkDF,CAAC;AAEF,eAAO,MAAM,eAAe,QAAS,MAAM,GAAG,MAAM,0BAInD,CAAC;AAEF,eAAO,MAAM,SAAS,QAAS,MAAM,KAAG,OAEvC,CAAC"}
1
+ {"version":3,"file":"timeUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/timeUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,WAAW,QACjB,MAAM,GAAG,MAAM,GAAG,SAAS,qCAE/B,MAkDF,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc,QACpB,MAAM,GAAG,MAAM,GAAG,SAAS,qCAE/B,MAqDF,CAAC;AAEF,eAAO,MAAM,eAAe,QAAS,MAAM,GAAG,MAAM,0BAInD,CAAC;AAEF,eAAO,MAAM,SAAS,QAAS,MAAM,KAAG,OAEvC,CAAC"}
@@ -1,38 +1,91 @@
1
- // export const decimalToHours = (decimal: string) => {
2
- // // we round it on two decimals first, to eliminate quirks, eg, 5.99999999 will return 5:59 instead of 6:00
3
- // decimal = parseFloat(decimal).toFixed(2);
4
- // decimal = decimal + "";
5
- // let hours;
6
- // let minutes_decimal;
7
- //
8
- // if (decimal.indexOf(".") < 0) {
9
- // hours = parseInt(decimal);
10
- // minutes_decimal = 0;
11
- // } else {
12
- // hours = parseInt(decimal.substring(0, decimal.indexOf(".")));
13
- // minutes_decimal = decimal.substring(decimal.indexOf(".") + 1);
14
- // minutes_decimal = minutes_decimal.substring(0, 2);
15
- // if (minutes_decimal.length === 1) {
16
- // minutes_decimal += "0";
17
- // } // if
18
- // minutes_decimal = parseInt(minutes_decimal);
19
- // } // if
20
- //
21
- // const minutes = Math.round((minutes_decimal / 100) * 60);
22
- //
23
- // if (hours < 10) {
24
- // hours = `0${hours}`;
25
- // }
26
- // return {
27
- // hours: hours,
28
- // minutes: minutes,
29
- // };
30
- // };
1
+ /**
2
+ * @function formatHours
3
+ * @description
4
+ * Formats a decimal number representing hours into a formatted string (HH:MM).
5
+ * The input can be a number, string, or undefined. The function handles various formats
6
+ * and can optionally add a leading zero to the hours component.
7
+ *
8
+ * @param {number | string | undefined} num - The input representing the hours, which can be in decimal format, a time string, or undefined.
9
+ * @param {boolean} [withLeadingZeroHours=false] - Whether to add a leading zero to the hours part of the output.
10
+ *
11
+ * @returns {string} - A formatted time string in HH:MM format.
12
+ *
13
+ * @example
14
+ * formatHours(1.5) // "1:30"
15
+ * formatHours("3.5", true) // "03:30"
16
+ */
17
+ export const formatHours = function (num, withLeadingZeroHours) {
18
+ if (withLeadingZeroHours === void 0) {
19
+ withLeadingZeroHours = false;
20
+ }
21
+ if (!num) {
22
+ return "";
23
+ }
24
+ if (typeof num === "string" && !num) {
25
+ return withLeadingZeroHours ? "00:00" : "0:00";
26
+ }
27
+ if (typeof num === "string" && num.indexOf(":") >= 0) {
28
+ //eslint-disable-next-line
29
+ let [_hours, _minutes] = num.split(":");
30
+ if (_minutes && _minutes.length === 1 && Number(_minutes) < 10) {
31
+ _minutes = Number(_minutes) + "0";
32
+ }
33
+ if (_hours && _minutes) {
34
+ if (withLeadingZeroHours) {
35
+ return withLeadingZero(_hours) + ":" + _minutes;
36
+ }
37
+ return _hours + ":" + _minutes;
38
+ } else if (!_hours && _minutes) {
39
+ return withLeadingZeroHours ? "00:" + _minutes : "0:" + _minutes;
40
+ } else if (!_minutes && _hours) {
41
+ return withLeadingZeroHours ? withLeadingZero(_hours) + ":00" : _hours + ":00";
42
+ } else {
43
+ return withLeadingZeroHours ? "00:00" : "0:00";
44
+ }
45
+ }
46
+ if (typeof num === "string" && num.indexOf(",") >= 0) {
47
+ num = num.replace(",", ".");
48
+ }
49
+ const input = typeof num === "string" ? parseFloat(num) : num;
50
+ if (!isDecimal(input)) {
51
+ if (withLeadingZeroHours) {
52
+ return withLeadingZero(input) + ":00";
53
+ }
54
+ return input + ":00";
55
+ }
56
+ const decimal = input.toFixed(2);
57
+ const time = decimal.toString().split(".");
58
+ let hours = time[0];
59
+ if (withLeadingZeroHours) {
60
+ hours = withLeadingZero(hours);
61
+ }
62
+ const minutes = time[1];
63
+ const minutes_formatted = Math.round(parseInt(minutes, 10) / 100 * 60);
64
+ return hours + ":" + withLeadingZero(minutes_formatted);
65
+ };
31
66
 
67
+ /**
68
+ * @function decimalToHours
69
+ * @deprecated
70
+ * @description
71
+ * Converts a decimal number representing hours into a formatted string (HH:MM).
72
+ * The input can be a number, string, or undefined. The function handles various formats
73
+ * and can optionally add a leading zero to the hours component.
74
+ *
75
+ * @param {number | string | undefined} num - The input representing the hours, which can be in decimal format, a time string, or undefined.
76
+ * @param {boolean} [withLeadingZeroHours=false] - Whether to add a leading zero to the hours part of the output.
77
+ *
78
+ * @returns {string} - A formatted time string in HH:MM format.
79
+ *
80
+ * @example
81
+ * decimalToHours(1.5) // "1:30"
82
+ * decimalToHours("3.5", true) // "03:30"
83
+ */
32
84
  export const decimalToHours = function (num, withLeadingZeroHours) {
33
85
  if (withLeadingZeroHours === void 0) {
34
86
  withLeadingZeroHours = false;
35
87
  }
88
+ console.warn("Deprecated. Please use formatHours from @activecollab/components.");
36
89
  if (!num) {
37
90
  return "";
38
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"timeUtils.js","names":["decimalToHours","num","withLeadingZeroHours","indexOf","_hours","_minutes","split","length","Number","withLeadingZero","replace","input","parseFloat","isDecimal","decimal","toFixed","time","toString","hours","minutes","minutes_formatted","Math","round","parseInt","size","s","isInteger"],"sources":["../../../src/utils/timeUtils.ts"],"sourcesContent":["// export const decimalToHours = (decimal: string) => {\n// // we round it on two decimals first, to eliminate quirks, eg, 5.99999999 will return 5:59 instead of 6:00\n// decimal = parseFloat(decimal).toFixed(2);\n// decimal = decimal + \"\";\n// let hours;\n// let minutes_decimal;\n//\n// if (decimal.indexOf(\".\") < 0) {\n// hours = parseInt(decimal);\n// minutes_decimal = 0;\n// } else {\n// hours = parseInt(decimal.substring(0, decimal.indexOf(\".\")));\n// minutes_decimal = decimal.substring(decimal.indexOf(\".\") + 1);\n// minutes_decimal = minutes_decimal.substring(0, 2);\n// if (minutes_decimal.length === 1) {\n// minutes_decimal += \"0\";\n// } // if\n// minutes_decimal = parseInt(minutes_decimal);\n// } // if\n//\n// const minutes = Math.round((minutes_decimal / 100) * 60);\n//\n// if (hours < 10) {\n// hours = `0${hours}`;\n// }\n// return {\n// hours: hours,\n// minutes: minutes,\n// };\n// };\n\nexport const decimalToHours = (\n num: number | string | undefined,\n withLeadingZeroHours = false\n): string => {\n if (!num) {\n return \"\";\n }\n if (typeof num === \"string\" && !num) {\n return withLeadingZeroHours ? `00:00` : \"0:00\";\n }\n if (typeof num === \"string\" && num.indexOf(\":\") >= 0) {\n //eslint-disable-next-line\n let [_hours, _minutes] = num.split(\":\");\n if (_minutes && _minutes.length === 1 && Number(_minutes) < 10) {\n _minutes = `${Number(_minutes)}0`;\n }\n if (_hours && _minutes) {\n if (withLeadingZeroHours) {\n return `${withLeadingZero(_hours)}:${_minutes}`;\n }\n return `${_hours}:${_minutes}`;\n } else if (!_hours && _minutes) {\n return withLeadingZeroHours ? `00:${_minutes}` : `0:${_minutes}`;\n } else if (!_minutes && _hours) {\n return withLeadingZeroHours\n ? `${withLeadingZero(_hours)}:00`\n : `${_hours}:00`;\n } else {\n return withLeadingZeroHours ? `00:00` : \"0:00\";\n }\n }\n if (typeof num === \"string\" && num.indexOf(\",\") >= 0) {\n num = num.replace(\",\", \".\");\n }\n const input = typeof num === \"string\" ? parseFloat(num) : num;\n\n if (!isDecimal(input)) {\n if (withLeadingZeroHours) {\n return `${withLeadingZero(input)}:00`;\n }\n return `${input}:00`;\n }\n\n const decimal = input.toFixed(2);\n const time = decimal.toString().split(\".\");\n let hours: string = time[0];\n if (withLeadingZeroHours) {\n hours = withLeadingZero(hours);\n }\n const minutes: string = time[1];\n const minutes_formatted = Math.round((parseInt(minutes, 10) / 100) * 60);\n\n return `${hours}:${withLeadingZero(minutes_formatted)}`;\n};\n\nexport const withLeadingZero = (num: string | number, size = 2) => {\n let s = `${num}`;\n while (s.length < size) s = `0` + s;\n return s;\n};\n\nexport const isDecimal = (num: number): boolean => {\n return !Number.isInteger(num);\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"timeUtils.js","names":["formatHours","num","withLeadingZeroHours","indexOf","_hours","_minutes","split","length","Number","withLeadingZero","replace","input","parseFloat","isDecimal","decimal","toFixed","time","toString","hours","minutes","minutes_formatted","Math","round","parseInt","decimalToHours","console","warn","size","s","isInteger"],"sources":["../../../src/utils/timeUtils.ts"],"sourcesContent":["/**\n * @function formatHours\n * @description\n * Formats a decimal number representing hours into a formatted string (HH:MM).\n * The input can be a number, string, or undefined. The function handles various formats\n * and can optionally add a leading zero to the hours component.\n *\n * @param {number | string | undefined} num - The input representing the hours, which can be in decimal format, a time string, or undefined.\n * @param {boolean} [withLeadingZeroHours=false] - Whether to add a leading zero to the hours part of the output.\n *\n * @returns {string} - A formatted time string in HH:MM format.\n *\n * @example\n * formatHours(1.5) // \"1:30\"\n * formatHours(\"3.5\", true) // \"03:30\"\n */\nexport const formatHours = (\n num: number | string | undefined,\n withLeadingZeroHours = false\n): string => {\n if (!num) {\n return \"\";\n }\n if (typeof num === \"string\" && !num) {\n return withLeadingZeroHours ? `00:00` : \"0:00\";\n }\n if (typeof num === \"string\" && num.indexOf(\":\") >= 0) {\n //eslint-disable-next-line\n let [_hours, _minutes] = num.split(\":\");\n if (_minutes && _minutes.length === 1 && Number(_minutes) < 10) {\n _minutes = `${Number(_minutes)}0`;\n }\n if (_hours && _minutes) {\n if (withLeadingZeroHours) {\n return `${withLeadingZero(_hours)}:${_minutes}`;\n }\n return `${_hours}:${_minutes}`;\n } else if (!_hours && _minutes) {\n return withLeadingZeroHours ? `00:${_minutes}` : `0:${_minutes}`;\n } else if (!_minutes && _hours) {\n return withLeadingZeroHours\n ? `${withLeadingZero(_hours)}:00`\n : `${_hours}:00`;\n } else {\n return withLeadingZeroHours ? `00:00` : \"0:00\";\n }\n }\n if (typeof num === \"string\" && num.indexOf(\",\") >= 0) {\n num = num.replace(\",\", \".\");\n }\n const input = typeof num === \"string\" ? parseFloat(num) : num;\n\n if (!isDecimal(input)) {\n if (withLeadingZeroHours) {\n return `${withLeadingZero(input)}:00`;\n }\n return `${input}:00`;\n }\n\n const decimal = input.toFixed(2);\n const time = decimal.toString().split(\".\");\n let hours: string = time[0];\n if (withLeadingZeroHours) {\n hours = withLeadingZero(hours);\n }\n const minutes: string = time[1];\n const minutes_formatted = Math.round((parseInt(minutes, 10) / 100) * 60);\n\n return `${hours}:${withLeadingZero(minutes_formatted)}`;\n};\n\n/**\n * @function decimalToHours\n * @deprecated\n * @description\n * Converts a decimal number representing hours into a formatted string (HH:MM).\n * The input can be a number, string, or undefined. The function handles various formats\n * and can optionally add a leading zero to the hours component.\n *\n * @param {number | string | undefined} num - The input representing the hours, which can be in decimal format, a time string, or undefined.\n * @param {boolean} [withLeadingZeroHours=false] - Whether to add a leading zero to the hours part of the output.\n *\n * @returns {string} - A formatted time string in HH:MM format.\n *\n * @example\n * decimalToHours(1.5) // \"1:30\"\n * decimalToHours(\"3.5\", true) // \"03:30\"\n */\nexport const decimalToHours = (\n num: number | string | undefined,\n withLeadingZeroHours = false\n): string => {\n console.warn(\n \"Deprecated. Please use formatHours from @activecollab/components.\"\n );\n if (!num) {\n return \"\";\n }\n if (typeof num === \"string\" && !num) {\n return withLeadingZeroHours ? `00:00` : \"0:00\";\n }\n if (typeof num === \"string\" && num.indexOf(\":\") >= 0) {\n //eslint-disable-next-line\n let [_hours, _minutes] = num.split(\":\");\n if (_minutes && _minutes.length === 1 && Number(_minutes) < 10) {\n _minutes = `${Number(_minutes)}0`;\n }\n if (_hours && _minutes) {\n if (withLeadingZeroHours) {\n return `${withLeadingZero(_hours)}:${_minutes}`;\n }\n return `${_hours}:${_minutes}`;\n } else if (!_hours && _minutes) {\n return withLeadingZeroHours ? `00:${_minutes}` : `0:${_minutes}`;\n } else if (!_minutes && _hours) {\n return withLeadingZeroHours\n ? `${withLeadingZero(_hours)}:00`\n : `${_hours}:00`;\n } else {\n return withLeadingZeroHours ? `00:00` : \"0:00\";\n }\n }\n if (typeof num === \"string\" && num.indexOf(\",\") >= 0) {\n num = num.replace(\",\", \".\");\n }\n const input = typeof num === \"string\" ? parseFloat(num) : num;\n\n if (!isDecimal(input)) {\n if (withLeadingZeroHours) {\n return `${withLeadingZero(input)}:00`;\n }\n return `${input}:00`;\n }\n\n const decimal = input.toFixed(2);\n const time = decimal.toString().split(\".\");\n let hours: string = time[0];\n if (withLeadingZeroHours) {\n hours = withLeadingZero(hours);\n }\n const minutes: string = time[1];\n const minutes_formatted = Math.round((parseInt(minutes, 10) / 100) * 60);\n\n return `${hours}:${withLeadingZero(minutes_formatted)}`;\n};\n\nexport const withLeadingZero = (num: string | number, size = 2) => {\n let s = `${num}`;\n while (s.length < size) s = `0` + s;\n return s;\n};\n\nexport const isDecimal = (num: number): boolean => {\n return !Number.isInteger(num);\n};\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- import { decimalToHours } from "./timeUtils";
1
+ import { formatHours } from "./timeUtils";
2
2
  describe("timeUtis.ts", () => {
3
3
  it.each([["1:30", "1:30"], ["1:30", "01:30", true], ["1.5", "1:30"], ["1.05", "1:03"], ["5,5", "5:30"], ["5.5", "5:30"], ["5:30", "5:30"], [",5", "0:30"], [".5", "0:30"], ["", ""], [":", "0:00"], ["1:", "1:00"], ["1:", "01:00", true], [":05", "00:05", true], [",05", "00:03", true], [0.5, "00:30", true], [1.5, "01:30", true], [1.5, "1:30", false], ["0:3", "0:30", false], ["555:35", "555:35", false], ["555", "555:00", false], [555.5, "555:30", false]])("should formatTime", function (value, expected, leadingZero) {
4
4
  if (leadingZero === void 0) {
5
5
  leadingZero = false;
6
6
  }
7
- expect(decimalToHours(value, leadingZero)).toEqual(expected);
7
+ expect(formatHours(value, leadingZero)).toEqual(expected);
8
8
  });
9
9
  });
10
10
  //# sourceMappingURL=timeUtils.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"timeUtils.test.js","names":["decimalToHours","describe","it","each","value","expected","leadingZero","expect","toEqual"],"sources":["../../../src/utils/timeUtils.test.ts"],"sourcesContent":["import { decimalToHours } from \"./timeUtils\";\n\ndescribe(\"timeUtis.ts\", () => {\n it.each([\n [\"1:30\", \"1:30\"],\n [\"1:30\", \"01:30\", true],\n [\"1.5\", \"1:30\"],\n [\"1.05\", \"1:03\"],\n [\"5,5\", \"5:30\"],\n [\"5.5\", \"5:30\"],\n [\"5:30\", \"5:30\"],\n [\",5\", \"0:30\"],\n [\".5\", \"0:30\"],\n [\"\", \"\"],\n [\":\", \"0:00\"],\n [\"1:\", \"1:00\"],\n [\"1:\", \"01:00\", true],\n [\":05\", \"00:05\", true],\n [\",05\", \"00:03\", true],\n [0.5, \"00:30\", true],\n [1.5, \"01:30\", true],\n [1.5, \"1:30\", false],\n [\"0:3\", \"0:30\", false],\n [\"555:35\", \"555:35\", false],\n [\"555\", \"555:00\", false],\n [555.5, \"555:30\", false],\n ])(\"should formatTime\", (value, expected, leadingZero = false) => {\n expect(decimalToHours(value, leadingZero)).toEqual(expected);\n });\n});\n"],"mappings":"AAAA,SAASA,cAAc,QAAQ,aAAa;AAE5CC,QAAQ,CAAC,aAAa,EAAE,MAAM;EAC5BC,EAAE,CAACC,IAAI,CAAC,CACN,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,EACvB,CAAC,KAAK,EAAE,MAAM,CAAC,EACf,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,KAAK,EAAE,MAAM,CAAC,EACf,CAAC,KAAK,EAAE,MAAM,CAAC,EACf,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,IAAI,EAAE,MAAM,CAAC,EACd,CAAC,IAAI,EAAE,MAAM,CAAC,EACd,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,GAAG,EAAE,MAAM,CAAC,EACb,CAAC,IAAI,EAAE,MAAM,CAAC,EACd,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EACrB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EACtB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EACtB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,EACpB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,EACpB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EACpB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EACtB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,EAC3B,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EACxB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CACzB,CAAC,CAAC,mBAAmB,EAAE,UAACC,KAAK,EAAEC,QAAQ,EAAEC,WAAW,EAAa;IAAA,IAAxBA,WAAW;MAAXA,WAAW,GAAG,KAAK;IAAA;IAC3DC,MAAM,CAACP,cAAc,CAACI,KAAK,EAAEE,WAAW,CAAC,CAAC,CAACE,OAAO,CAACH,QAAQ,CAAC;EAC9D,CAAC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"timeUtils.test.js","names":["formatHours","describe","it","each","value","expected","leadingZero","expect","toEqual"],"sources":["../../../src/utils/timeUtils.test.ts"],"sourcesContent":["import { formatHours } from \"./timeUtils\";\n\ndescribe(\"timeUtis.ts\", () => {\n it.each([\n [\"1:30\", \"1:30\"],\n [\"1:30\", \"01:30\", true],\n [\"1.5\", \"1:30\"],\n [\"1.05\", \"1:03\"],\n [\"5,5\", \"5:30\"],\n [\"5.5\", \"5:30\"],\n [\"5:30\", \"5:30\"],\n [\",5\", \"0:30\"],\n [\".5\", \"0:30\"],\n [\"\", \"\"],\n [\":\", \"0:00\"],\n [\"1:\", \"1:00\"],\n [\"1:\", \"01:00\", true],\n [\":05\", \"00:05\", true],\n [\",05\", \"00:03\", true],\n [0.5, \"00:30\", true],\n [1.5, \"01:30\", true],\n [1.5, \"1:30\", false],\n [\"0:3\", \"0:30\", false],\n [\"555:35\", \"555:35\", false],\n [\"555\", \"555:00\", false],\n [555.5, \"555:30\", false],\n ])(\"should formatTime\", (value, expected, leadingZero = false) => {\n expect(formatHours(value, leadingZero)).toEqual(expected);\n });\n});\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,aAAa;AAEzCC,QAAQ,CAAC,aAAa,EAAE,MAAM;EAC5BC,EAAE,CAACC,IAAI,CAAC,CACN,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,EACvB,CAAC,KAAK,EAAE,MAAM,CAAC,EACf,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,KAAK,EAAE,MAAM,CAAC,EACf,CAAC,KAAK,EAAE,MAAM,CAAC,EACf,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,IAAI,EAAE,MAAM,CAAC,EACd,CAAC,IAAI,EAAE,MAAM,CAAC,EACd,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,GAAG,EAAE,MAAM,CAAC,EACb,CAAC,IAAI,EAAE,MAAM,CAAC,EACd,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EACrB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EACtB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EACtB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,EACpB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,EACpB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EACpB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EACtB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,EAC3B,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EACxB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CACzB,CAAC,CAAC,mBAAmB,EAAE,UAACC,KAAK,EAAEC,QAAQ,EAAEC,WAAW,EAAa;IAAA,IAAxBA,WAAW;MAAXA,WAAW,GAAG,KAAK;IAAA;IAC3DC,MAAM,CAACP,WAAW,CAACI,KAAK,EAAEE,WAAW,CAAC,CAAC,CAACE,OAAO,CAACH,QAAQ,CAAC;EAC3D,CAAC,CAAC;AACJ,CAAC,CAAC"}