@activecollab/components 2.0.185 → 2.0.187
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/dist/cjs/components/Display/DisplayHours.js +4 -4
- package/dist/cjs/components/Display/DisplayHours.js.map +1 -1
- package/dist/cjs/components/Display/types.js.map +1 -1
- package/dist/cjs/components/Nav/Item/Styles.js +9 -2
- package/dist/cjs/components/Nav/Item/Styles.js.map +1 -1
- package/dist/cjs/components/Nav/Nav.js +3 -3
- package/dist/cjs/components/Nav/Nav.js.map +1 -1
- package/dist/cjs/components/Nav/Styles.js +7 -1
- package/dist/cjs/components/Nav/Styles.js.map +1 -1
- package/dist/cjs/utils/timeUtils.js +6 -6
- package/dist/cjs/utils/timeUtils.js.map +1 -1
- package/dist/cjs/utils/timeUtils.test.js +2 -2
- package/dist/cjs/utils/timeUtils.test.js.map +1 -1
- package/dist/esm/components/Display/DisplayHours.js +2 -2
- package/dist/esm/components/Display/DisplayHours.js.map +1 -1
- package/dist/esm/components/Display/types.d.ts +1 -1
- package/dist/esm/components/Display/types.d.ts.map +1 -1
- package/dist/esm/components/Display/types.js.map +1 -1
- package/dist/esm/components/Nav/Item/Styles.d.ts.map +1 -1
- package/dist/esm/components/Nav/Item/Styles.js +9 -2
- package/dist/esm/components/Nav/Item/Styles.js.map +1 -1
- package/dist/esm/components/Nav/Nav.d.ts.map +1 -1
- package/dist/esm/components/Nav/Nav.js +3 -3
- package/dist/esm/components/Nav/Nav.js.map +1 -1
- package/dist/esm/components/Nav/Styles.d.ts +3 -1
- package/dist/esm/components/Nav/Styles.d.ts.map +1 -1
- package/dist/esm/components/Nav/Styles.js +5 -1
- package/dist/esm/components/Nav/Styles.js.map +1 -1
- package/dist/esm/utils/timeUtils.d.ts +2 -2
- package/dist/esm/utils/timeUtils.d.ts.map +1 -1
- package/dist/esm/utils/timeUtils.js +8 -8
- package/dist/esm/utils/timeUtils.js.map +1 -1
- package/dist/esm/utils/timeUtils.test.js +4 -4
- package/dist/esm/utils/timeUtils.test.js.map +1 -1
- package/dist/index.js +29 -16
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Nav.js","names":["React","useState","useRef","useCallback","useMemo","Children","cloneElement","useEffect","useLayoutEffect","classNames","StyledNavListItemMore","StyledNav","StyledNavAsSelect","StyledNavList","useResizeObserver","ExpandSingle","Select","Nav","_ref","_dimensions$width","_childDimensions$widt","children","alignment","onSelect","className","role","targetId","active","setActive","moreOpened","setMoreOpened","type","setType","setMoreOpen","setMoreClose","navItemNames","toArray","map","item","_item$props","props","name","allOptions","index","id","navRef","wrapRef","dimensions","childDimensions","parentWidth","width","childWidth","childrenWidth","setChildrenWidth","onClick","e","metaKey","ctrlKey","target","currentTarget","dataset","disabled","Number","onMoreOptionClick","forEach","child","navAsSelect","createElement","expanded","fill","current","$align","$role","ref","element","Array","from","keys","indexOf","selected","disabledInternalSort","options","mode","forceCloseMenu","disableSearch","keepSameOptionsOrder","onChange","onSelectOpen","onSelectClose","displayName"],"sources":["../../../../src/components/Nav/Nav.tsx"],"sourcesContent":["import React, {\n ReactElement,\n FC,\n ReactNode,\n useState,\n useRef,\n useCallback,\n useMemo,\n Children,\n cloneElement,\n useEffect,\n useLayoutEffect,\n} from \"react\";\n\nimport classNames from \"classnames\";\n\nimport { ItemProps } from \"./Item/Item\";\nimport { StyledNavListItemMore } from \"./Item/Styles\";\nimport { StyledNav, StyledNavAsSelect, StyledNavList } from \"./Styles\";\nimport { useResizeObserver } from \"../../utils\";\nimport { ExpandSingle } from \"../Expanders/ExpandSingle\";\nimport { Select } from \"../Select/Select\";\n\ntype NavType = \"inline\" | \"dropdown\";\nexport type NavAlignType = \"left\" | \"center\" | \"right\";\nexport type NavRoleType = \"bold\" | \"light\";\n\nexport interface INavProps {\n children?: ReactElement<ItemProps>[];\n /** Function for changing active navs. */\n onSelect?: (index: number) => void;\n /** Aligment of nav component. */\n alignment?: NavAlignType;\n /** CSS classes. */\n className?: string;\n /** Role of nav component. */\n role?: NavRoleType;\n /** Target id */\n targetId?: string;\n}\n\nexport const Nav: FC<INavProps> = ({\n children,\n alignment = \"left\",\n onSelect,\n className,\n role = \"bold\",\n targetId,\n}) => {\n const [active, setActive] = useState(0);\n const [moreOpened, setMoreOpened] = useState(false);\n const [type, setType] = useState<NavType>(\"inline\");\n\n const setMoreOpen = useCallback(() => setMoreOpened(true), []);\n const setMoreClose = useCallback(() => setMoreOpened(false), []);\n\n const navItemNames = useMemo(() => {\n return children\n ? (Children.toArray(children) as ReactElement<ItemProps>[]).map(\n (item) => item?.props?.name\n )\n : [];\n }, [children]);\n\n const allOptions = useMemo(() => {\n return navItemNames?.map((name, index) => {\n return { id: index, name: name };\n });\n }, [navItemNames]);\n\n const navRef = useRef<HTMLUListElement | null>(null);\n const wrapRef = useRef<HTMLElement | null>(null);\n const dimensions = useResizeObserver(wrapRef);\n const childDimensions = useResizeObserver(navRef);\n\n const parentWidth = dimensions?.width ?? 0;\n const childWidth = childDimensions?.width ?? 0;\n\n const [childrenWidth, setChildrenWidth] = useState(childWidth);\n\n useLayoutEffect(() => {\n if (type === \"inline\") setChildrenWidth(childWidth);\n }, [childWidth, type]);\n\n const onClick = useCallback(\n (e: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (e.metaKey || e.ctrlKey) {\n return;\n }\n if (\n e.target &&\n e.currentTarget.dataset.index &&\n !e.currentTarget.dataset.disabled\n ) {\n const index = Number(e.currentTarget.dataset.index);\n setActive(index);\n if (onSelect) {\n onSelect(index);\n }\n }\n },\n [onSelect]\n );\n\n const onMoreOptionClick = useCallback(\n (id) => {\n setActive(id);\n if (onSelect) {\n onSelect(id);\n }\n },\n [onSelect]\n );\n\n useMemo(() => {\n Children.forEach(\n children as ReactElement[],\n (child: ReactElement, index) => {\n if (child && child.props.active) {\n setActive(index);\n }\n }\n );\n }, [children]);\n\n const navAsSelect = useMemo(() => {\n return (\n <StyledNavAsSelect id={targetId}>\n <span>{navItemNames[active]}</span>\n <ExpandSingle expanded={moreOpened} fill=\"currentColor\" />\n </StyledNavAsSelect>\n );\n }, [active, moreOpened, navItemNames, targetId]);\n\n useEffect(() => {\n if (!navRef.current || !wrapRef.current) return;\n\n if (childrenWidth >= parentWidth) {\n setType(\"dropdown\");\n } else {\n setType(\"inline\");\n }\n }, [childrenWidth, parentWidth]);\n\n if (!children) return;\n\n return (\n <StyledNav\n className={classNames(\"c-nav\", className)}\n $align={alignment}\n $role={role}\n ref={wrapRef}\n >\n <StyledNavList ref={navRef}>\n {type === \"inline\" &&\n Children.toArray(children).map((child: ReactNode, index: number) => {\n const element = child as ReactElement;\n return cloneElement(element, {\n active: index === active,\n role,\n onClick,\n \"data-index\": index,\n \"data-disabled\": element.props.disabled,\n });\n })}\n {type === \"dropdown\" ? (\n <StyledNavListItemMore\n name=\"More\"\n active={Array.from(navItemNames.keys()).indexOf(active) === -1}\n role={role}\n >\n <Select\n selected={active}\n target={navAsSelect}\n disabledInternalSort\n options={allOptions}\n type=\"single\"\n mode=\"normal\"\n forceCloseMenu\n disableSearch\n keepSameOptionsOrder\n onChange={onMoreOptionClick}\n onSelectOpen={setMoreOpen}\n onSelectClose={setMoreClose}\n />\n </StyledNavListItemMore>\n ) : null}\n </StyledNavList>\n </StyledNav>\n );\n};\n\nNav.displayName = \"Nav\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Nav.js","names":["React","useState","useRef","useCallback","useMemo","Children","cloneElement","useEffect","useLayoutEffect","classNames","StyledNavListItemMore","StyledNav","StyledNavAsSelect","StyledNavList","useResizeObserver","ExpandSingle","Select","Nav","_ref","_dimensions$width","_childDimensions$widt","children","alignment","onSelect","className","role","targetId","active","setActive","moreOpened","setMoreOpened","type","setType","setMoreOpen","setMoreClose","navItemNames","toArray","map","item","_item$props","props","name","allOptions","index","id","navRef","wrapRef","dimensions","childDimensions","parentWidth","width","childWidth","childrenWidth","setChildrenWidth","onClick","e","metaKey","ctrlKey","target","currentTarget","dataset","disabled","Number","onMoreOptionClick","forEach","child","navAsSelect","createElement","$active","expanded","fill","current","$align","$role","ref","element","selected","disabledInternalSort","options","mode","forceCloseMenu","disableSearch","keepSameOptionsOrder","onChange","onSelectOpen","onSelectClose","displayName"],"sources":["../../../../src/components/Nav/Nav.tsx"],"sourcesContent":["import React, {\n ReactElement,\n FC,\n ReactNode,\n useState,\n useRef,\n useCallback,\n useMemo,\n Children,\n cloneElement,\n useEffect,\n useLayoutEffect,\n} from \"react\";\n\nimport classNames from \"classnames\";\n\nimport { ItemProps } from \"./Item/Item\";\nimport { StyledNavListItemMore } from \"./Item/Styles\";\nimport { StyledNav, StyledNavAsSelect, StyledNavList } from \"./Styles\";\nimport { useResizeObserver } from \"../../utils\";\nimport { ExpandSingle } from \"../Expanders/ExpandSingle\";\nimport { Select } from \"../Select/Select\";\n\ntype NavType = \"inline\" | \"dropdown\";\nexport type NavAlignType = \"left\" | \"center\" | \"right\";\nexport type NavRoleType = \"bold\" | \"light\";\n\nexport interface INavProps {\n children?: ReactElement<ItemProps>[];\n /** Function for changing active navs. */\n onSelect?: (index: number) => void;\n /** Aligment of nav component. */\n alignment?: NavAlignType;\n /** CSS classes. */\n className?: string;\n /** Role of nav component. */\n role?: NavRoleType;\n /** Target id */\n targetId?: string;\n}\n\nexport const Nav: FC<INavProps> = ({\n children,\n alignment = \"left\",\n onSelect,\n className,\n role = \"bold\",\n targetId,\n}) => {\n const [active, setActive] = useState(0);\n const [moreOpened, setMoreOpened] = useState(false);\n const [type, setType] = useState<NavType>(\"inline\");\n\n const setMoreOpen = useCallback(() => setMoreOpened(true), []);\n const setMoreClose = useCallback(() => setMoreOpened(false), []);\n\n const navItemNames = useMemo(() => {\n return children\n ? (Children.toArray(children) as ReactElement<ItemProps>[]).map(\n (item) => item?.props?.name\n )\n : [];\n }, [children]);\n\n const allOptions = useMemo(() => {\n return navItemNames?.map((name, index) => {\n return { id: index, name: name };\n });\n }, [navItemNames]);\n\n const navRef = useRef<HTMLUListElement | null>(null);\n const wrapRef = useRef<HTMLElement | null>(null);\n const dimensions = useResizeObserver(wrapRef);\n const childDimensions = useResizeObserver(navRef);\n\n const parentWidth = dimensions?.width ?? 0;\n const childWidth = childDimensions?.width ?? 0;\n\n const [childrenWidth, setChildrenWidth] = useState(childWidth);\n\n useLayoutEffect(() => {\n if (type === \"inline\") setChildrenWidth(childWidth);\n }, [childWidth, type]);\n\n const onClick = useCallback(\n (e: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (e.metaKey || e.ctrlKey) {\n return;\n }\n if (\n e.target &&\n e.currentTarget.dataset.index &&\n !e.currentTarget.dataset.disabled\n ) {\n const index = Number(e.currentTarget.dataset.index);\n setActive(index);\n if (onSelect) {\n onSelect(index);\n }\n }\n },\n [onSelect]\n );\n\n const onMoreOptionClick = useCallback(\n (id) => {\n setActive(id);\n if (onSelect) {\n onSelect(id);\n }\n },\n [onSelect]\n );\n\n useMemo(() => {\n Children.forEach(\n children as ReactElement[],\n (child: ReactElement, index) => {\n if (child && child.props.active) {\n setActive(index);\n }\n }\n );\n }, [children]);\n\n const navAsSelect = useMemo(() => {\n return (\n <StyledNavAsSelect id={targetId} $active>\n <span>{navItemNames[active]}</span>\n <ExpandSingle expanded={moreOpened} fill=\"currentColor\" />\n </StyledNavAsSelect>\n );\n }, [active, moreOpened, navItemNames, targetId]);\n\n useEffect(() => {\n if (!navRef.current || !wrapRef.current) return;\n\n if (childrenWidth >= parentWidth) {\n setType(\"dropdown\");\n } else {\n setType(\"inline\");\n }\n }, [childrenWidth, parentWidth]);\n\n if (!children) return;\n\n return (\n <StyledNav\n className={classNames(\"c-nav\", className)}\n $align={alignment}\n $role={role}\n ref={wrapRef}\n >\n <StyledNavList ref={navRef}>\n {type === \"inline\" &&\n Children.toArray(children).map((child: ReactNode, index: number) => {\n const element = child as ReactElement;\n return cloneElement(element, {\n active: index === active,\n role,\n onClick,\n \"data-index\": index,\n \"data-disabled\": element.props.disabled,\n });\n })}\n {type === \"dropdown\" ? (\n <StyledNavListItemMore name={navItemNames[active]} role={role}>\n <Select\n selected={active}\n target={navAsSelect}\n disabledInternalSort\n options={allOptions}\n type=\"single\"\n mode=\"normal\"\n forceCloseMenu\n disableSearch\n keepSameOptionsOrder\n onChange={onMoreOptionClick}\n onSelectOpen={setMoreOpen}\n onSelectClose={setMoreClose}\n />\n </StyledNavListItemMore>\n ) : null}\n </StyledNavList>\n </StyledNav>\n );\n};\n\nNav.displayName = \"Nav\";\n"],"mappings":"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"}
|
|
@@ -12,7 +12,9 @@ interface StyledNavListItemProps {
|
|
|
12
12
|
$asMore?: boolean;
|
|
13
13
|
}
|
|
14
14
|
export declare const StyledNavListItem: import("styled-components").StyledComponent<"li", any, StyledNavListItemProps, never>;
|
|
15
|
-
export declare const StyledNavAsSelect: import("styled-components").StyledComponent<"div", any, {
|
|
15
|
+
export declare const StyledNavAsSelect: import("styled-components").StyledComponent<"div", any, {
|
|
16
|
+
$active: boolean;
|
|
17
|
+
}, never>;
|
|
16
18
|
export declare const StyledNavAsMoreTarget: import("styled-components").StyledComponent<"div", any, {
|
|
17
19
|
$role?: NavRoleType | undefined;
|
|
18
20
|
}, never>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Styles.d.ts","sourceRoot":"","sources":["../../../../src/components/Nav/Styles.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAElD,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,eAAO,MAAM,SAAS,gFA6BrB,CAAC;AAIF,eAAO,MAAM,aAAa,mEAGzB,CAAC;AAIF,UAAU,sBAAsB;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,iBAAiB,uFAyE7B,CAAC;AAIF,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"Styles.d.ts","sourceRoot":"","sources":["../../../../src/components/Nav/Styles.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAElD,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,eAAO,MAAM,SAAS,gFA6BrB,CAAC;AAIF,eAAO,MAAM,aAAa,mEAGzB,CAAC;AAIF,UAAU,sBAAsB;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,iBAAiB,uFAyE7B,CAAC;AAIF,eAAO,MAAM,iBAAiB;aAAyB,OAAO;SAqB7D,CAAC;AAIF,eAAO,MAAM,qBAAqB;;SAajC,CAAC"}
|
|
@@ -62,7 +62,11 @@ StyledNavListItem.displayName = "StyledNavListItem";
|
|
|
62
62
|
export const StyledNavAsSelect = styled.div.withConfig({
|
|
63
63
|
displayName: "Styles__StyledNavAsSelect",
|
|
64
64
|
componentId: "sc-1khiypw-3"
|
|
65
|
-
})(["padding:0 10px;height:100%;display:flex;align-items:center;svg{color:var(--color-primary);}"]
|
|
65
|
+
})(["padding:0 10px;height:100%;display:flex;align-items:center;gap:4px;svg{color:var(--color-primary);top:1px;position:relative;}", ""], props => props.$active && css(["", " & *{", "}"], {
|
|
66
|
+
"color": "var(--color-primary)"
|
|
67
|
+
}, {
|
|
68
|
+
"color": "var(--color-primary)"
|
|
69
|
+
}));
|
|
66
70
|
StyledNavAsSelect.displayName = "StyledNavAsSelect";
|
|
67
71
|
export const StyledNavAsMoreTarget = styled.div.withConfig({
|
|
68
72
|
displayName: "Styles__StyledNavAsMoreTarget",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Styles.js","names":["styled","css","StyledNav","nav","withConfig","displayName","componentId","props","$align","$role","StyledNavList","ul","StyledNavListItem","li","$disabled","$active","StyledNavAsSelect","div","StyledNavAsMoreTarget"],"sources":["../../../../src/components/Nav/Styles.ts"],"sourcesContent":["import styled, { css } from \"styled-components\";\nimport tw from \"twin.macro\";\n\nimport { NavAlignType, NavRoleType } from \"./Nav\";\n\ninterface StyledNavProps {\n $align?: NavAlignType;\n $role?: NavRoleType;\n}\n\nexport const StyledNav = styled.nav<StyledNavProps>`\n ${tw`tw-flex`}\n height: 100%;\n width: 100%;\n overflow: clip visible;\n\n ${(props) =>\n props.$align === \"left\" &&\n css`\n ${tw`tw-justify-start`}\n `}\n\n ${(props) =>\n props.$align === \"center\" &&\n css`\n ${tw`tw-justify-center`}\n `}\n\n ${(props) =>\n props.$align === \"right\" &&\n css`\n ${tw`tw-justify-end`}\n `}\n\n ${(props) =>\n props.$role === \"light\" &&\n css`\n height: auto;\n `}\n`;\n\nStyledNav.displayName = \"StyledNav\";\n\nexport const StyledNavList = styled.ul`\n ${tw`tw-flex tw-list-none tw-m-0 tw-p-0`}\n overflow: clip visible;\n`;\n\nStyledNavList.displayName = \"StyledNavList\";\n\ninterface StyledNavListItemProps {\n $active?: boolean;\n $disabled?: boolean;\n $role?: NavRoleType;\n $asMore?: boolean;\n}\n\nexport const StyledNavListItem = styled.li<StyledNavListItemProps>`\n ${tw`tw-text-sm tw-cursor-default tw-relative tw-select-none`}\n color: var(--color-theme-700);\n font-size: 15px;\n display: flex;\n align-items: center;\n font-weight: 500;\n padding: 0 10px;\n flex-shrink: 0;\n\n &:hover,\n &:hover * {\n ${(props) =>\n !props.$disabled &&\n css`\n ${tw`tw-text-primary`}\n `}\n }\n\n ${(props) =>\n !props.$active &&\n !props.$disabled &&\n css`\n ${tw`tw-cursor-pointer`}\n `}\n\n &::after {\n content: \"\";\n ${tw`tw-absolute tw-block tw-m-auto tw-w-0 tw-bg-transparent`}\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n height: 3px;\n transition: width 0.3s ease, background-color 0.3s ease;\n }\n\n ${(props) =>\n props.$active &&\n css`\n ${tw`tw-pointer-events-none`}\n &::after {\n ${tw`tw-w-full tw-bg-primary`}\n }\n `}\n\n ${(props) =>\n props.$disabled &&\n css`\n ${tw`tw-select-none tw-cursor-not-allowed tw-opacity-50`}\n `}\n\n ${(props) =>\n props.$role === \"light\" &&\n css`\n ${tw`tw-text-sm`}\n color: var(--color-theme-800);\n font-weight: 400;\n padding: 0 8px;\n\n &::after {\n bottom: -4px;\n height: 2px;\n }\n `}\n\n ${(props) =>\n props.$active &&\n css`\n ${tw`tw-text-primary`}\n & * {\n ${tw`tw-text-primary`}\n }\n `}\n`;\n\nStyledNavListItem.displayName = \"StyledNavListItem\";\n\nexport const StyledNavAsSelect = styled.div
|
|
1
|
+
{"version":3,"file":"Styles.js","names":["styled","css","StyledNav","nav","withConfig","displayName","componentId","props","$align","$role","StyledNavList","ul","StyledNavListItem","li","$disabled","$active","StyledNavAsSelect","div","StyledNavAsMoreTarget"],"sources":["../../../../src/components/Nav/Styles.ts"],"sourcesContent":["import styled, { css } from \"styled-components\";\nimport tw from \"twin.macro\";\n\nimport { NavAlignType, NavRoleType } from \"./Nav\";\n\ninterface StyledNavProps {\n $align?: NavAlignType;\n $role?: NavRoleType;\n}\n\nexport const StyledNav = styled.nav<StyledNavProps>`\n ${tw`tw-flex`}\n height: 100%;\n width: 100%;\n overflow: clip visible;\n\n ${(props) =>\n props.$align === \"left\" &&\n css`\n ${tw`tw-justify-start`}\n `}\n\n ${(props) =>\n props.$align === \"center\" &&\n css`\n ${tw`tw-justify-center`}\n `}\n\n ${(props) =>\n props.$align === \"right\" &&\n css`\n ${tw`tw-justify-end`}\n `}\n\n ${(props) =>\n props.$role === \"light\" &&\n css`\n height: auto;\n `}\n`;\n\nStyledNav.displayName = \"StyledNav\";\n\nexport const StyledNavList = styled.ul`\n ${tw`tw-flex tw-list-none tw-m-0 tw-p-0`}\n overflow: clip visible;\n`;\n\nStyledNavList.displayName = \"StyledNavList\";\n\ninterface StyledNavListItemProps {\n $active?: boolean;\n $disabled?: boolean;\n $role?: NavRoleType;\n $asMore?: boolean;\n}\n\nexport const StyledNavListItem = styled.li<StyledNavListItemProps>`\n ${tw`tw-text-sm tw-cursor-default tw-relative tw-select-none`}\n color: var(--color-theme-700);\n font-size: 15px;\n display: flex;\n align-items: center;\n font-weight: 500;\n padding: 0 10px;\n flex-shrink: 0;\n\n &:hover,\n &:hover * {\n ${(props) =>\n !props.$disabled &&\n css`\n ${tw`tw-text-primary`}\n `}\n }\n\n ${(props) =>\n !props.$active &&\n !props.$disabled &&\n css`\n ${tw`tw-cursor-pointer`}\n `}\n\n &::after {\n content: \"\";\n ${tw`tw-absolute tw-block tw-m-auto tw-w-0 tw-bg-transparent`}\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n height: 3px;\n transition: width 0.3s ease, background-color 0.3s ease;\n }\n\n ${(props) =>\n props.$active &&\n css`\n ${tw`tw-pointer-events-none`}\n &::after {\n ${tw`tw-w-full tw-bg-primary`}\n }\n `}\n\n ${(props) =>\n props.$disabled &&\n css`\n ${tw`tw-select-none tw-cursor-not-allowed tw-opacity-50`}\n `}\n\n ${(props) =>\n props.$role === \"light\" &&\n css`\n ${tw`tw-text-sm`}\n color: var(--color-theme-800);\n font-weight: 400;\n padding: 0 8px;\n\n &::after {\n bottom: -4px;\n height: 2px;\n }\n `}\n\n ${(props) =>\n props.$active &&\n css`\n ${tw`tw-text-primary`}\n & * {\n ${tw`tw-text-primary`}\n }\n `}\n`;\n\nStyledNavListItem.displayName = \"StyledNavListItem\";\n\nexport const StyledNavAsSelect = styled.div<{ $active: boolean }>`\n padding: 0 10px;\n height: 100%;\n display: flex;\n align-items: center;\n gap: 4px;\n\n svg {\n color: var(--color-primary);\n top: 1px;\n position: relative;\n }\n\n ${(props) =>\n props.$active &&\n css`\n ${tw`tw-text-primary`}\n & * {\n ${tw`tw-text-primary`}\n }\n `}\n`;\n\nStyledNavAsSelect.displayName = \"StyledNavAsSelect\";\n\nexport const StyledNavAsMoreTarget = styled.div<{\n $role?: NavRoleType;\n}>`\n padding: 0 10px;\n height: 100%;\n display: flex;\n align-items: center;\n\n ${(props) =>\n props.$role === \"light\" &&\n css`\n padding: 0;\n `}\n`;\n\nStyledNavAsMoreTarget.displayName = \"StyledNavAsMoreTarget\";\n"],"mappings":"AAAA,OAAOA,MAAM,IAAIC,GAAG,QAAQ,mBAAmB;AAU/C,OAAO,MAAMC,SAAS,GAAGF,MAAM,CAACG,GAAG,CAAAC,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,8EAC7B;EAAA;AAAQ,CAAC,EAKVC,KAAK,IACNA,KAAK,CAACC,MAAM,KAAK,MAAM,IACvBP,GAAG,WACG;EAAA;AAAiB,CAAC,CACvB,EAEAM,KAAK,IACNA,KAAK,CAACC,MAAM,KAAK,QAAQ,IACzBP,GAAG,WACG;EAAA;AAAkB,CAAC,CACxB,EAEAM,KAAK,IACNA,KAAK,CAACC,MAAM,KAAK,OAAO,IACxBP,GAAG,WACG;EAAA;AAAe,CAAC,CACrB,EAEAM,KAAK,IACNA,KAAK,CAACE,KAAK,KAAK,OAAO,IACvBR,GAAG,kBAEF,CACJ;AAEDC,SAAS,CAACG,WAAW,GAAG,WAAW;AAEnC,OAAO,MAAMK,aAAa,GAAGV,MAAM,CAACW,EAAE,CAAAP,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,oCAChC;EAAA;EAAA;EAAA;EAAA;AAAmC,CAAC,CAEzC;AAEDI,aAAa,CAACL,WAAW,GAAG,eAAe;AAS3C,OAAO,MAAMO,iBAAiB,GAAGZ,MAAM,CAACa,EAAE,CAAAT,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,gUACpC;EAAA;EAAA;EAAA;EAAA;EAAA;AAAwD,CAAC,EAWxDC,KAAK,IACN,CAACA,KAAK,CAACO,SAAS,IAChBb,GAAG,WACG;EAAA;AAAgB,CAAC,CACtB,EAGFM,KAAK,IACN,CAACA,KAAK,CAACQ,OAAO,IACd,CAACR,KAAK,CAACO,SAAS,IAChBb,GAAG,WACG;EAAA;AAAkB,CAAC,CACxB,EAIG;EAAA;EAAA;EAAA;EAAA;EAAA;AAAwD,CAAC,EAQ5DM,KAAK,IACNA,KAAK,CAACQ,OAAO,IACbd,GAAG,0BACG;EAAA;AAAuB,CAAC,EAEtB;EAAA;EAAA;AAAwB,CAAC,CAEhC,EAEAM,KAAK,IACNA,KAAK,CAACO,SAAS,IACfb,GAAG,WACG;EAAA;EAAA;EAAA;AAAmD,CAAC,CACzD,EAEAM,KAAK,IACNA,KAAK,CAACE,KAAK,KAAK,OAAO,IACvBR,GAAG,wGACG;EAAA;EAAA;AAAW,CAAC,CASjB,EAEAM,KAAK,IACNA,KAAK,CAACQ,OAAO,IACbd,GAAG,qBACG;EAAA;AAAgB,CAAC,EAEf;EAAA;AAAgB,CAAC,CAExB,CACJ;AAEDW,iBAAiB,CAACP,WAAW,GAAG,mBAAmB;AAEnD,OAAO,MAAMW,iBAAiB,GAAGhB,MAAM,CAACiB,GAAG,CAAAb,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,0IAatCC,KAAK,IACNA,KAAK,CAACQ,OAAO,IACbd,GAAG,qBACG;EAAA;AAAgB,CAAC,EAEf;EAAA;AAAgB,CAAC,CAExB,CACJ;AAEDe,iBAAiB,CAACX,WAAW,GAAG,mBAAmB;AAEnD,OAAO,MAAMa,qBAAqB,GAAGlB,MAAM,CAACiB,GAAG,CAAAb,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,wEAQ1CC,KAAK,IACNA,KAAK,CAACE,KAAK,KAAK,OAAO,IACvBR,GAAG,gBAEF,CACJ;AAEDiB,qBAAqB,CAACb,WAAW,GAAG,uBAAuB"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @param {number | string | undefined} num - The input representing the hours, which can be in decimal format, a time string, or undefined.
|
|
9
9
|
* @param {boolean} [withLeadingZeroHours=false] - Whether to add a leading zero to the hours part of the output.
|
|
10
|
-
* @param {boolean} [
|
|
10
|
+
* @param {boolean} [trimZeroMinutes=false] - Whether to remove minutes if they are zero.
|
|
11
11
|
*
|
|
12
12
|
* @returns {string} - A formatted time string in HH:MM format.
|
|
13
13
|
*
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* formatHours(1.5) // "1:30"
|
|
16
16
|
* formatHours("3.5", true) // "03:30"
|
|
17
17
|
*/
|
|
18
|
-
export declare const formatHours: (num: number | string | undefined, withLeadingZeroHours?: boolean,
|
|
18
|
+
export declare const formatHours: (num: number | string | undefined, withLeadingZeroHours?: boolean, trimZeroMinutes?: boolean) => string;
|
|
19
19
|
export declare const withLeadingZero: (num: string | number, size?: number) => string;
|
|
20
20
|
export declare const isDecimal: (num: number) => boolean;
|
|
21
21
|
export declare const isValidTime: (time: string | undefined) => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/timeUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,WAAW,QACjB,MAAM,GAAG,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"timeUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/timeUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,WAAW,QACjB,MAAM,GAAG,MAAM,GAAG,SAAS,gEAG/B,MA+DF,CAAC;AAEF,eAAO,MAAM,eAAe,QAAS,MAAM,GAAG,MAAM,0BAInD,CAAC;AAEF,eAAO,MAAM,SAAS,QAAS,MAAM,KAAG,OAEvC,CAAC;AAEF,eAAO,MAAM,WAAW,SAAU,MAAM,GAAG,SAAS,KAAG,OAEtD,CAAC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @param {number | string | undefined} num - The input representing the hours, which can be in decimal format, a time string, or undefined.
|
|
9
9
|
* @param {boolean} [withLeadingZeroHours=false] - Whether to add a leading zero to the hours part of the output.
|
|
10
|
-
* @param {boolean} [
|
|
10
|
+
* @param {boolean} [trimZeroMinutes=false] - Whether to remove minutes if they are zero.
|
|
11
11
|
*
|
|
12
12
|
* @returns {string} - A formatted time string in HH:MM format.
|
|
13
13
|
*
|
|
@@ -15,15 +15,15 @@
|
|
|
15
15
|
* formatHours(1.5) // "1:30"
|
|
16
16
|
* formatHours("3.5", true) // "03:30"
|
|
17
17
|
*/
|
|
18
|
-
export const formatHours = function (num, withLeadingZeroHours,
|
|
18
|
+
export const formatHours = function (num, withLeadingZeroHours, trimZeroMinutes) {
|
|
19
19
|
if (withLeadingZeroHours === void 0) {
|
|
20
20
|
withLeadingZeroHours = false;
|
|
21
21
|
}
|
|
22
|
-
if (
|
|
23
|
-
|
|
22
|
+
if (trimZeroMinutes === void 0) {
|
|
23
|
+
trimZeroMinutes = false;
|
|
24
24
|
}
|
|
25
25
|
if (num === 0 || num === "0") {
|
|
26
|
-
return
|
|
26
|
+
return trimZeroMinutes ? "0" : withLeadingZeroHours ? "00:00" : "0:00";
|
|
27
27
|
}
|
|
28
28
|
if (!num) {
|
|
29
29
|
return "";
|
|
@@ -35,7 +35,7 @@ export const formatHours = function (num, withLeadingZeroHours, trimZeroes) {
|
|
|
35
35
|
_minutes = Number(_minutes) + "0";
|
|
36
36
|
}
|
|
37
37
|
if (_hours && _minutes) {
|
|
38
|
-
if (
|
|
38
|
+
if (trimZeroMinutes && _minutes === "00") {
|
|
39
39
|
return withLeadingZeroHours ? withLeadingZero(_hours) : String(Number(_hours));
|
|
40
40
|
}
|
|
41
41
|
return withLeadingZeroHours ? withLeadingZero(_hours) + ":" + _minutes : _hours + ":" + _minutes;
|
|
@@ -53,7 +53,7 @@ export const formatHours = function (num, withLeadingZeroHours, trimZeroes) {
|
|
|
53
53
|
}
|
|
54
54
|
const input = typeof num === "string" ? parseFloat(num) : num;
|
|
55
55
|
if (!isDecimal(input)) {
|
|
56
|
-
if (
|
|
56
|
+
if (trimZeroMinutes) {
|
|
57
57
|
return withLeadingZeroHours ? withLeadingZero(input) : String(Number(input));
|
|
58
58
|
}
|
|
59
59
|
return withLeadingZeroHours ? withLeadingZero(input) + ":00" : input + ":00";
|
|
@@ -66,7 +66,7 @@ export const formatHours = function (num, withLeadingZeroHours, trimZeroes) {
|
|
|
66
66
|
}
|
|
67
67
|
const minutes = time[1];
|
|
68
68
|
const minutes_formatted = Math.round(parseInt(minutes, 10) / 100 * 60);
|
|
69
|
-
if (
|
|
69
|
+
if (trimZeroMinutes && minutes_formatted === 0) {
|
|
70
70
|
return hours;
|
|
71
71
|
}
|
|
72
72
|
return hours + ":" + withLeadingZero(minutes_formatted);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeUtils.js","names":["formatHours","num","withLeadingZeroHours","
|
|
1
|
+
{"version":3,"file":"timeUtils.js","names":["formatHours","num","withLeadingZeroHours","trimZeroMinutes","indexOf","_hours","_minutes","split","length","Number","withLeadingZero","String","replace","input","parseFloat","isDecimal","decimal","toFixed","time","toString","hours","minutes","minutes_formatted","Math","round","parseInt","size","s","isInteger","isValidTime","undefined","test"],"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 * @param {boolean} [trimZeroMinutes=false] - Whether to remove minutes if they are zero.\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 trimZeroMinutes = false\n): string => {\n if (num === 0 || num === \"0\") {\n return trimZeroMinutes ? \"0\" : withLeadingZeroHours ? \"00:00\" : \"0:00\";\n }\n if (!num) {\n return \"\";\n }\n if (typeof num === \"string\" && num.indexOf(\":\") >= 0) {\n // eslint-disable-next-line prefer-const\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 (trimZeroMinutes && _minutes === \"00\") {\n return withLeadingZeroHours\n ? withLeadingZero(_hours)\n : String(Number(_hours));\n }\n return withLeadingZeroHours\n ? `${withLeadingZero(_hours)}:${_minutes}`\n : `${_hours}:${_minutes}`;\n } else if (_hours && !_minutes) {\n return withLeadingZeroHours\n ? `${withLeadingZero(_hours)}:00`\n : `${_hours}:00`;\n } else if (!_hours && _minutes) {\n return withLeadingZeroHours ? `00:${_minutes}` : `0:${_minutes}`;\n } else if (!_hours && !_minutes) {\n return withLeadingZeroHours ? \"00:00\" : \"0:00\";\n }\n return withLeadingZeroHours ? `00:${_minutes}` : `0:${_minutes}`;\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 (trimZeroMinutes) {\n return withLeadingZeroHours\n ? withLeadingZero(input)\n : String(Number(input));\n }\n return withLeadingZeroHours\n ? `${withLeadingZero(input)}:00`\n : `${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 if (trimZeroMinutes && minutes_formatted === 0) {\n return hours;\n }\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\nexport const isValidTime = (time: string | undefined): boolean => {\n return time === undefined || /^([01]\\d|2[0-3]):([0-5]\\d)$/.test(time);\n};\n"],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { formatHours } from "./timeUtils";
|
|
2
2
|
describe("timeUtis.ts", () => {
|
|
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], ["5:00", "5", false, true], ["05:00", "05", true, true], ["12:00", "12", false, true], ["12:30", "12:30", false, true], [5, "5:00", false, false], [5, "5", false, true], [0, "0:00", false, false], [0, "0", false, true], [5, "05", true, true], ["5:00", "05", true, true], ["05:00", "5", false, true]])("should formatTime", function (value, expected, leadingZero,
|
|
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], ["5:00", "5", false, true], ["05:00", "05", true, true], ["12:00", "12", false, true], ["12:30", "12:30", false, true], [5, "5:00", false, false], [5, "5", false, true], [0, "0:00", false, false], [0, "0", false, true], [5, "05", true, true], ["5:00", "05", true, true], ["05:00", "5", false, true]])("should formatTime", function (value, expected, leadingZero, trimZeroMinutes) {
|
|
4
4
|
if (leadingZero === void 0) {
|
|
5
5
|
leadingZero = false;
|
|
6
6
|
}
|
|
7
|
-
if (
|
|
8
|
-
|
|
7
|
+
if (trimZeroMinutes === void 0) {
|
|
8
|
+
trimZeroMinutes = false;
|
|
9
9
|
}
|
|
10
|
-
expect(formatHours(value, leadingZero,
|
|
10
|
+
expect(formatHours(value, leadingZero, trimZeroMinutes)).toEqual(expected);
|
|
11
11
|
});
|
|
12
12
|
});
|
|
13
13
|
//# sourceMappingURL=timeUtils.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeUtils.test.js","names":["formatHours","describe","it","each","value","expected","leadingZero","
|
|
1
|
+
{"version":3,"file":"timeUtils.test.js","names":["formatHours","describe","it","each","value","expected","leadingZero","trimZeroMinutes","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 [\"5:00\", \"5\", false, true],\n [\"05:00\", \"05\", true, true],\n [\"12:00\", \"12\", false, true],\n [\"12:30\", \"12:30\", false, true],\n [5, \"5:00\", false, false],\n [5, \"5\", false, true],\n [0, \"0:00\", false, false],\n [0, \"0\", false, true],\n [5, \"05\", true, true],\n [\"5:00\", \"05\", true, true],\n [\"05:00\", \"5\", false, true],\n ])(\n \"should formatTime\",\n (value, expected, leadingZero = false, trimZeroMinutes = false) => {\n expect(formatHours(value, leadingZero, trimZeroMinutes)).toEqual(\n expected\n );\n }\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,EACxB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,EAC1B,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAC3B,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAC5B,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAC/B,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,EACzB,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,EACrB,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,EACzB,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,EACrB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACrB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAC1B,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAC5B,CAAC,CACA,mBAAmB,EACnB,UAACC,KAAK,EAAEC,QAAQ,EAAEC,WAAW,EAAUC,eAAe,EAAa;IAAA,IAAjDD,WAAW;MAAXA,WAAW,GAAG,KAAK;IAAA;IAAA,IAAEC,eAAe;MAAfA,eAAe,GAAG,KAAK;IAAA;IAC5DC,MAAM,CAACR,WAAW,CAACI,KAAK,EAAEE,WAAW,EAAEC,eAAe,CAAC,CAAC,CAACE,OAAO,CAC9DJ,QACF,CAAC;EACH,CACF,CAAC;AACH,CAAC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -801,7 +801,7 @@
|
|
|
801
801
|
*
|
|
802
802
|
* @param {number | string | undefined} num - The input representing the hours, which can be in decimal format, a time string, or undefined.
|
|
803
803
|
* @param {boolean} [withLeadingZeroHours=false] - Whether to add a leading zero to the hours part of the output.
|
|
804
|
-
* @param {boolean} [
|
|
804
|
+
* @param {boolean} [trimZeroMinutes=false] - Whether to remove minutes if they are zero.
|
|
805
805
|
*
|
|
806
806
|
* @returns {string} - A formatted time string in HH:MM format.
|
|
807
807
|
*
|
|
@@ -811,9 +811,9 @@
|
|
|
811
811
|
*/
|
|
812
812
|
var formatHours = function formatHours(num) {
|
|
813
813
|
var withLeadingZeroHours = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
814
|
-
var
|
|
814
|
+
var trimZeroMinutes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
815
815
|
if (num === 0 || num === "0") {
|
|
816
|
-
return
|
|
816
|
+
return trimZeroMinutes ? "0" : withLeadingZeroHours ? "00:00" : "0:00";
|
|
817
817
|
}
|
|
818
818
|
if (!num) {
|
|
819
819
|
return "";
|
|
@@ -828,7 +828,7 @@
|
|
|
828
828
|
_minutes = "".concat(Number(_minutes), "0");
|
|
829
829
|
}
|
|
830
830
|
if (_hours && _minutes) {
|
|
831
|
-
if (
|
|
831
|
+
if (trimZeroMinutes && _minutes === "00") {
|
|
832
832
|
return withLeadingZeroHours ? withLeadingZero(_hours) : String(Number(_hours));
|
|
833
833
|
}
|
|
834
834
|
return withLeadingZeroHours ? "".concat(withLeadingZero(_hours), ":").concat(_minutes) : "".concat(_hours, ":").concat(_minutes);
|
|
@@ -846,7 +846,7 @@
|
|
|
846
846
|
}
|
|
847
847
|
var input = typeof num === "string" ? parseFloat(num) : num;
|
|
848
848
|
if (!isDecimal(input)) {
|
|
849
|
-
if (
|
|
849
|
+
if (trimZeroMinutes) {
|
|
850
850
|
return withLeadingZeroHours ? withLeadingZero(input) : String(Number(input));
|
|
851
851
|
}
|
|
852
852
|
return withLeadingZeroHours ? "".concat(withLeadingZero(input), ":00") : "".concat(input, ":00");
|
|
@@ -859,7 +859,7 @@
|
|
|
859
859
|
}
|
|
860
860
|
var minutes = time[1];
|
|
861
861
|
var minutes_formatted = Math.round(parseInt(minutes, 10) / 100 * 60);
|
|
862
|
-
if (
|
|
862
|
+
if (trimZeroMinutes && minutes_formatted === 0) {
|
|
863
863
|
return hours;
|
|
864
864
|
}
|
|
865
865
|
return "".concat(hours, ":").concat(withLeadingZero(minutes_formatted));
|
|
@@ -13693,7 +13693,13 @@
|
|
|
13693
13693
|
var StyledNavAsSelect = styled__default["default"].div.withConfig({
|
|
13694
13694
|
displayName: "Styles__StyledNavAsSelect",
|
|
13695
13695
|
componentId: "sc-1khiypw-3"
|
|
13696
|
-
})(["padding:0 10px;height:100%;display:flex;align-items:center;svg{color:var(--color-primary);}"])
|
|
13696
|
+
})(["padding:0 10px;height:100%;display:flex;align-items:center;gap:4px;svg{color:var(--color-primary);top:1px;position:relative;}", ""], function (props) {
|
|
13697
|
+
return props.$active && styled.css(["", " & *{", "}"], {
|
|
13698
|
+
"color": "var(--color-primary)"
|
|
13699
|
+
}, {
|
|
13700
|
+
"color": "var(--color-primary)"
|
|
13701
|
+
});
|
|
13702
|
+
});
|
|
13697
13703
|
StyledNavAsSelect.displayName = "StyledNavAsSelect";
|
|
13698
13704
|
var StyledNavAsMoreTarget = styled__default["default"].div.withConfig({
|
|
13699
13705
|
displayName: "Styles__StyledNavAsMoreTarget",
|
|
@@ -13729,10 +13735,17 @@
|
|
|
13729
13735
|
var StyledNavListItemMore = styled__default["default"](Item).withConfig({
|
|
13730
13736
|
displayName: "Styles__StyledNavListItemMore",
|
|
13731
13737
|
componentId: "sc-m6npdq-0"
|
|
13732
|
-
})(["", " cursor:pointer;", ""], function (props) {
|
|
13738
|
+
})(["", " cursor:pointer;&::after{content:\"\";", " bottom:0;left:50%;transform:translateX(-50%);height:3px;transition:width 0.3s ease,background-color 0.3s ease;", "}"], function (props) {
|
|
13733
13739
|
return props.role !== "light" && styled.css(["padding:0;"]);
|
|
13734
13740
|
}, {
|
|
13735
|
-
"
|
|
13741
|
+
"position": "absolute",
|
|
13742
|
+
"margin": "auto",
|
|
13743
|
+
"display": "block",
|
|
13744
|
+
"width": "0px",
|
|
13745
|
+
"backgroundColor": "transparent"
|
|
13746
|
+
}, {
|
|
13747
|
+
"width": "100%",
|
|
13748
|
+
"backgroundColor": "var(--color-primary)"
|
|
13736
13749
|
});
|
|
13737
13750
|
StyledNavListItemMore.displayName = "StyledNavListItemMore";
|
|
13738
13751
|
|
|
@@ -15766,7 +15779,8 @@
|
|
|
15766
15779
|
}, [children]);
|
|
15767
15780
|
var navAsSelect = React.useMemo(function () {
|
|
15768
15781
|
return /*#__PURE__*/React__default["default"].createElement(StyledNavAsSelect, {
|
|
15769
|
-
id: targetId
|
|
15782
|
+
id: targetId,
|
|
15783
|
+
$active: true
|
|
15770
15784
|
}, /*#__PURE__*/React__default["default"].createElement("span", null, navItemNames[active]), /*#__PURE__*/React__default["default"].createElement(ExpandSingle, {
|
|
15771
15785
|
expanded: moreOpened,
|
|
15772
15786
|
fill: "currentColor"
|
|
@@ -15798,8 +15812,7 @@
|
|
|
15798
15812
|
"data-disabled": element.props.disabled
|
|
15799
15813
|
});
|
|
15800
15814
|
}), type === "dropdown" ? /*#__PURE__*/React__default["default"].createElement(StyledNavListItemMore, {
|
|
15801
|
-
name:
|
|
15802
|
-
active: Array.from(navItemNames.keys()).indexOf(active) === -1,
|
|
15815
|
+
name: navItemNames[active],
|
|
15803
15816
|
role: role
|
|
15804
15817
|
}, /*#__PURE__*/React__default["default"].createElement(Select, {
|
|
15805
15818
|
selected: active,
|
|
@@ -17603,7 +17616,7 @@
|
|
|
17603
17616
|
});
|
|
17604
17617
|
DisplayCurrency.displayName = "DisplayCurrency";
|
|
17605
17618
|
|
|
17606
|
-
var _excluded$x = ["value", "variant", "thousandSeparator", "decimalSeparator", "
|
|
17619
|
+
var _excluded$x = ["value", "variant", "thousandSeparator", "decimalSeparator", "trimZeroMinutes", "trimDecimals", "decimalSpaces", "format", "disableTooltip", "className", "withLeadingZero", "as"];
|
|
17607
17620
|
var DisplayHours = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
17608
17621
|
var value = _ref.value,
|
|
17609
17622
|
_ref$variant = _ref.variant,
|
|
@@ -17612,8 +17625,8 @@
|
|
|
17612
17625
|
thousandSeparator = _ref$thousandSeparato === void 0 ? "," : _ref$thousandSeparato,
|
|
17613
17626
|
_ref$decimalSeparator = _ref.decimalSeparator,
|
|
17614
17627
|
decimalSeparator = _ref$decimalSeparator === void 0 ? "." : _ref$decimalSeparator,
|
|
17615
|
-
_ref$
|
|
17616
|
-
|
|
17628
|
+
_ref$trimZeroMinutes = _ref.trimZeroMinutes,
|
|
17629
|
+
trimZeroMinutes = _ref$trimZeroMinutes === void 0 ? false : _ref$trimZeroMinutes,
|
|
17617
17630
|
_ref$trimDecimals = _ref.trimDecimals,
|
|
17618
17631
|
trimDecimals = _ref$trimDecimals === void 0 ? true : _ref$trimDecimals,
|
|
17619
17632
|
_ref$decimalSpaces = _ref.decimalSpaces,
|
|
@@ -17629,7 +17642,7 @@
|
|
|
17629
17642
|
rest = _objectWithoutProperties(_ref, _excluded$x);
|
|
17630
17643
|
var numberValue = +String(value).replaceAll(thousandSeparator, "").replace(decimalSeparator, ".");
|
|
17631
17644
|
var formattedValue = formatNumber(numberValue, thousandSeparator, decimalSeparator, trimDecimals, decimalSpaces, "short");
|
|
17632
|
-
var formattedLongValue = formatHours(numberValue, withLeadingZero,
|
|
17645
|
+
var formattedLongValue = formatHours(numberValue, withLeadingZero, trimZeroMinutes);
|
|
17633
17646
|
var showShortVersion = numberValue > 1000;
|
|
17634
17647
|
if (format === "short" && showShortVersion) {
|
|
17635
17648
|
return /*#__PURE__*/React__default["default"].createElement(Tooltip, {
|