@os-design/core 1.0.135 → 1.0.136
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/Alert/index.js.map +1 -1
- package/dist/cjs/Avatar/index.js.map +1 -1
- package/dist/cjs/Avatar/utils/nameToInitials.js.map +1 -1
- package/dist/cjs/Avatar/utils/strToHue.js.map +1 -1
- package/dist/cjs/AvatarSkeleton/index.js.map +1 -1
- package/dist/cjs/Breadcrumb/index.js.map +1 -1
- package/dist/cjs/BreadcrumbItem/index.js.map +1 -1
- package/dist/cjs/Button/ButtonContent.js.map +1 -1
- package/dist/cjs/Button/index.js.map +1 -1
- package/dist/cjs/Button/utils/useButtonColors.js.map +1 -1
- package/dist/cjs/Checkbox/index.js.map +1 -1
- package/dist/cjs/CheckboxSkeleton/index.js.map +1 -1
- package/dist/cjs/DatePicker/DatePickerCalendar.js.map +1 -1
- package/dist/cjs/DatePicker/index.js.map +1 -1
- package/dist/cjs/Drawer/index.js.map +1 -1
- package/dist/cjs/Form/FormConfigContext.js.map +1 -1
- package/dist/cjs/Form/index.js.map +1 -1
- package/dist/cjs/FormDivider/index.js.map +1 -1
- package/dist/cjs/FormItem/index.js.map +1 -1
- package/dist/cjs/FormItem/utils/firstChildHasType.js.map +1 -1
- package/dist/cjs/GlobalStyles/index.js.map +1 -1
- package/dist/cjs/GlobalStyles/resetStyles.js.map +1 -1
- package/dist/cjs/GlobalStyles/typographyStyles.js.map +1 -1
- package/dist/cjs/HeaderSkeleton/index.js.map +1 -1
- package/dist/cjs/Image/index.js.map +1 -1
- package/dist/cjs/ImageSkeleton/index.js.map +1 -1
- package/dist/cjs/Input/index.js.map +1 -1
- package/dist/cjs/Input/utils/getFocusableElements.js.map +1 -1
- package/dist/cjs/InputNumber/index.js.map +1 -1
- package/dist/cjs/InputNumber/utils/defaultLocale.js.map +1 -1
- package/dist/cjs/InputPassword/index.js.map +1 -1
- package/dist/cjs/InputPassword/utils/defaultLocale.js.map +1 -1
- package/dist/cjs/InputSearch/index.js.map +1 -1
- package/dist/cjs/InputSearch/utils/defaultLocale.js.map +1 -1
- package/dist/cjs/InputSkeleton/index.js.map +1 -1
- package/dist/cjs/Layout/LayoutContext.js.map +1 -1
- package/dist/cjs/Layout/index.js.map +1 -1
- package/dist/cjs/Link/index.js.map +1 -1
- package/dist/cjs/LinkButton/index.js.map +1 -1
- package/dist/cjs/List/WindowScroller.js.map +1 -1
- package/dist/cjs/List/index.js +2 -3
- package/dist/cjs/List/index.js.map +1 -1
- package/dist/cjs/List/utils/bodyPointerEvents.js.map +1 -1
- package/dist/cjs/List/utils/frameTimeout.js.map +1 -1
- package/dist/cjs/List/utils/useRWLoadNext.js.map +1 -1
- package/dist/cjs/ListItem/ListItemContent.js.map +1 -1
- package/dist/cjs/ListItem/index.js.map +1 -1
- package/dist/cjs/ListItemLink/index.js.map +1 -1
- package/dist/cjs/ListSkeleton/index.js.map +1 -1
- package/dist/cjs/LogoLink/index.js.map +1 -1
- package/dist/cjs/Menu/index.js.map +1 -1
- package/dist/cjs/Menu/utils/useFocusWithArrows.js.map +1 -1
- package/dist/cjs/MenuDivider/index.js.map +1 -1
- package/dist/cjs/MenuGroup/index.js.map +1 -1
- package/dist/cjs/MenuItem/index.js.map +1 -1
- package/dist/cjs/Modal/index.js.map +1 -1
- package/dist/cjs/Modal/utils/defaultLocale.js.map +1 -1
- package/dist/cjs/Navigation/index.js.map +1 -1
- package/dist/cjs/Navigation/utils/useScrollFlags.js.map +1 -1
- package/dist/cjs/NavigationItem/index.js.map +1 -1
- package/dist/cjs/PageContent/index.js.map +1 -1
- package/dist/cjs/PageHeader/index.js.map +1 -1
- package/dist/cjs/PageHeader/utils/defaultLocale.js.map +1 -1
- package/dist/cjs/PageHeaderInputSearch/index.js.map +1 -1
- package/dist/cjs/PageHeaderInputSearch/utils/defaultLocale.js.map +1 -1
- package/dist/cjs/PageHeaderSkeleton/index.js.map +1 -1
- package/dist/cjs/ParagraphSkeleton/index.js.map +1 -1
- package/dist/cjs/Popover/index.js.map +1 -1
- package/dist/cjs/Popover/utils/usePopoverPosition.js.map +1 -1
- package/dist/cjs/Progress/index.js.map +1 -1
- package/dist/cjs/RadioGroup/index.js.map +1 -1
- package/dist/cjs/RadioGroupSkeleton/index.js.map +1 -1
- package/dist/cjs/Result/index.js.map +1 -1
- package/dist/cjs/ScrollButton/index.js.map +1 -1
- package/dist/cjs/ScrollButton/utils/useContainerPosition.js.map +1 -1
- package/dist/cjs/ScrollButton/utils/useVisibility.js.map +1 -1
- package/dist/cjs/Select/SelectList.js +2 -3
- package/dist/cjs/Select/SelectList.js.map +1 -1
- package/dist/cjs/Select/SelectToggle.js.map +1 -1
- package/dist/cjs/Select/index.js.map +1 -1
- package/dist/cjs/Select/utils/defaultLocale.js.map +1 -1
- package/dist/cjs/Skeleton/index.js.map +1 -1
- package/dist/cjs/Switch/index.js.map +1 -1
- package/dist/cjs/SwitchSkeleton/index.js.map +1 -1
- package/dist/cjs/Tag/index.js.map +1 -1
- package/dist/cjs/TagLink/index.js.map +1 -1
- package/dist/cjs/TagList/index.js.map +1 -1
- package/dist/cjs/TagListSkeleton/index.js.map +1 -1
- package/dist/cjs/TagSkeleton/index.js.map +1 -1
- package/dist/cjs/TextArea/index.js.map +1 -1
- package/dist/cjs/TextAreaSkeleton/index.js.map +1 -1
- package/dist/cjs/ThemeSwitcher/index.js.map +1 -1
- package/dist/cjs/YouTubeVideo/index.js.map +1 -1
- package/dist/cjs/emotion.d.js.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/message/AlertIcon.js.map +1 -1
- package/dist/cjs/message/Message.js.map +1 -1
- package/dist/cjs/message/index.js.map +1 -1
- package/dist/cjs/message/styles.js.map +1 -1
- package/dist/esm/Alert/index.js.map +1 -1
- package/dist/esm/Avatar/index.js.map +1 -1
- package/dist/esm/Avatar/utils/nameToInitials.js.map +1 -1
- package/dist/esm/Avatar/utils/strToHue.js.map +1 -1
- package/dist/esm/AvatarSkeleton/index.js.map +1 -1
- package/dist/esm/Breadcrumb/index.js.map +1 -1
- package/dist/esm/BreadcrumbItem/index.js.map +1 -1
- package/dist/esm/Button/ButtonContent.js.map +1 -1
- package/dist/esm/Button/index.js.map +1 -1
- package/dist/esm/Button/utils/useButtonColors.js.map +1 -1
- package/dist/esm/Checkbox/index.js.map +1 -1
- package/dist/esm/CheckboxSkeleton/index.js.map +1 -1
- package/dist/esm/DatePicker/DatePickerCalendar.js.map +1 -1
- package/dist/esm/DatePicker/index.js.map +1 -1
- package/dist/esm/Drawer/index.js.map +1 -1
- package/dist/esm/Form/FormConfigContext.js.map +1 -1
- package/dist/esm/Form/index.js.map +1 -1
- package/dist/esm/FormDivider/index.js.map +1 -1
- package/dist/esm/FormItem/index.js.map +1 -1
- package/dist/esm/FormItem/utils/firstChildHasType.js.map +1 -1
- package/dist/esm/GlobalStyles/index.js.map +1 -1
- package/dist/esm/GlobalStyles/resetStyles.js.map +1 -1
- package/dist/esm/GlobalStyles/typographyStyles.js.map +1 -1
- package/dist/esm/HeaderSkeleton/index.js.map +1 -1
- package/dist/esm/Image/index.js.map +1 -1
- package/dist/esm/ImageSkeleton/index.js.map +1 -1
- package/dist/esm/Input/index.js.map +1 -1
- package/dist/esm/Input/utils/getFocusableElements.js.map +1 -1
- package/dist/esm/InputNumber/index.js.map +1 -1
- package/dist/esm/InputNumber/utils/defaultLocale.js.map +1 -1
- package/dist/esm/InputPassword/index.js.map +1 -1
- package/dist/esm/InputPassword/utils/defaultLocale.js.map +1 -1
- package/dist/esm/InputSearch/index.js.map +1 -1
- package/dist/esm/InputSearch/utils/defaultLocale.js.map +1 -1
- package/dist/esm/InputSkeleton/index.js.map +1 -1
- package/dist/esm/Layout/LayoutContext.js.map +1 -1
- package/dist/esm/Layout/index.js.map +1 -1
- package/dist/esm/Link/index.js.map +1 -1
- package/dist/esm/LinkButton/index.js.map +1 -1
- package/dist/esm/List/WindowScroller.js.map +1 -1
- package/dist/esm/List/index.js +2 -3
- package/dist/esm/List/index.js.map +1 -1
- package/dist/esm/List/utils/bodyPointerEvents.js.map +1 -1
- package/dist/esm/List/utils/frameTimeout.js.map +1 -1
- package/dist/esm/List/utils/useRWLoadNext.js.map +1 -1
- package/dist/esm/ListItem/ListItemContent.js.map +1 -1
- package/dist/esm/ListItem/index.js.map +1 -1
- package/dist/esm/ListItemLink/index.js.map +1 -1
- package/dist/esm/ListSkeleton/index.js.map +1 -1
- package/dist/esm/LogoLink/index.js.map +1 -1
- package/dist/esm/Menu/index.js.map +1 -1
- package/dist/esm/Menu/utils/useFocusWithArrows.js.map +1 -1
- package/dist/esm/MenuDivider/index.js.map +1 -1
- package/dist/esm/MenuGroup/index.js.map +1 -1
- package/dist/esm/MenuItem/index.js.map +1 -1
- package/dist/esm/Modal/index.js.map +1 -1
- package/dist/esm/Modal/utils/defaultLocale.js.map +1 -1
- package/dist/esm/Navigation/index.js.map +1 -1
- package/dist/esm/Navigation/utils/useScrollFlags.js.map +1 -1
- package/dist/esm/NavigationItem/index.js.map +1 -1
- package/dist/esm/PageContent/index.js.map +1 -1
- package/dist/esm/PageHeader/index.js.map +1 -1
- package/dist/esm/PageHeader/utils/defaultLocale.js.map +1 -1
- package/dist/esm/PageHeaderInputSearch/index.js.map +1 -1
- package/dist/esm/PageHeaderInputSearch/utils/defaultLocale.js.map +1 -1
- package/dist/esm/PageHeaderSkeleton/index.js.map +1 -1
- package/dist/esm/ParagraphSkeleton/index.js.map +1 -1
- package/dist/esm/Popover/index.js.map +1 -1
- package/dist/esm/Popover/utils/usePopoverPosition.js.map +1 -1
- package/dist/esm/Progress/index.js.map +1 -1
- package/dist/esm/RadioGroup/index.js.map +1 -1
- package/dist/esm/RadioGroupSkeleton/index.js.map +1 -1
- package/dist/esm/Result/index.js.map +1 -1
- package/dist/esm/ScrollButton/index.js.map +1 -1
- package/dist/esm/ScrollButton/utils/useContainerPosition.js.map +1 -1
- package/dist/esm/ScrollButton/utils/useVisibility.js.map +1 -1
- package/dist/esm/Select/SelectList.js +3 -4
- package/dist/esm/Select/SelectList.js.map +1 -1
- package/dist/esm/Select/SelectToggle.js.map +1 -1
- package/dist/esm/Select/index.js.map +1 -1
- package/dist/esm/Select/utils/defaultLocale.js.map +1 -1
- package/dist/esm/Skeleton/index.js.map +1 -1
- package/dist/esm/Switch/index.js.map +1 -1
- package/dist/esm/SwitchSkeleton/index.js.map +1 -1
- package/dist/esm/Tag/index.js.map +1 -1
- package/dist/esm/TagLink/index.js.map +1 -1
- package/dist/esm/TagList/index.js.map +1 -1
- package/dist/esm/TagListSkeleton/index.js.map +1 -1
- package/dist/esm/TagSkeleton/index.js.map +1 -1
- package/dist/esm/TextArea/index.js.map +1 -1
- package/dist/esm/TextAreaSkeleton/index.js.map +1 -1
- package/dist/esm/ThemeSwitcher/index.js.map +1 -1
- package/dist/esm/YouTubeVideo/index.js.map +1 -1
- package/dist/esm/emotion.d.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/message/AlertIcon.js.map +1 -1
- package/dist/esm/message/Message.js.map +1 -1
- package/dist/esm/message/index.js.map +1 -1
- package/dist/esm/message/styles.js.map +1 -1
- package/dist/types/Select/SelectList.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/List/index.tsx"],"names":["React","forwardRef","useCallback","useContext","useMemo","FixedSizeList","useFontSize","useForwardedRef","useSafeAreaInset","useSize","useTheme","useIsMinWidth","WindowScroller","useRWLoadNext","LayoutContext","List","itemCount","itemHeight","threshold","overscanCount","height","heightProp","paddingTop","paddingBottom","style","empty","onLoadNext","itemRenderer","rest","ref","listRef","mergedListRef","size","fontSize","document","body","hasNavigation","hasPageHeader","theme","isMinMd","safeAreaInset","itemSize","paddingTopSize","pageHeaderHeight","paddingBottomSize","navigationTabHeight","bottom","loadNextHandler","windowScrollHandler","top","current","scrollTo","InnerElement","innerStyle","innerRest","innerElementRef","parseFloat","displayName","listChildren","childrenStyle","childrenRest","toString","EmptyComponent","renderList","scrollOffset","undefined","default"],"mappings":"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","sourcesContent":["import React, {\n CSSProperties,\n forwardRef,\n useCallback,\n useContext,\n useMemo,\n} from 'react';\nimport {\n FixedSizeList,\n ListChildComponentProps,\n ListProps as RWListProps,\n} from 'react-window';\nimport {\n useFontSize,\n useForwardedRef,\n useSafeAreaInset,\n useSize,\n} from '@os-design/utils';\nimport { useTheme } from '@os-design/theming';\nimport { useIsMinWidth } from '@os-design/media';\nimport WindowScroller, { ScrollPosition } from './WindowScroller';\nimport useRWLoadNext from './utils/useRWLoadNext';\nimport LayoutContext from '../Layout/LayoutContext';\n\nexport interface ListProps extends Partial<RWListProps> {\n /**\n * Total number of items in the list.\n */\n itemCount: number;\n /**\n * The item height in em.\n * @default 4\n */\n itemHeight?: number;\n /**\n * A threshold N means that the onLoadNext function calls when a user scrolls all items except N.\n * @default 10\n */\n threshold?: number;\n /**\n * Defines how many items outside of the visible \"window\" to render at all times.\n * @default 10\n */\n overscanCount?: number;\n /**\n * The height of the list in px.\n * @default undefined\n */\n height?: number;\n /**\n * The top padding in em.\n * @default 0\n */\n paddingTop?: number;\n /**\n * The bottom padding in em.\n * @default 0\n */\n paddingBottom?: number;\n /**\n * The inline css style.\n * @default undefined\n */\n style?: CSSProperties;\n /**\n * The component that renders if the list is empty.\n * @default undefined\n */\n empty?: React.ReactNode;\n /**\n * The callback to load more items.\n * @default undefined\n */\n onLoadNext?: () => void;\n /**\n * The callback to render items.\n * @default () => null\n */\n itemRenderer?: React.FC<ListChildComponentProps>;\n}\n\n/**\n * Virtualized list.\n * Used the react-window library.\n */\nconst List = forwardRef<FixedSizeList, ListProps>(\n (\n {\n itemCount,\n itemHeight = 4,\n threshold = 10,\n overscanCount = 10,\n height: heightProp,\n paddingTop = 0,\n paddingBottom = 0,\n style = {},\n empty,\n onLoadNext = () => {},\n itemRenderer = () => null,\n ...rest\n },\n ref\n ) => {\n const [listRef, mergedListRef] = useForwardedRef(ref);\n const size = useSize();\n const fontSize = useFontSize(document.body);\n const { hasNavigation, hasPageHeader } = useContext(LayoutContext);\n const { theme } = useTheme();\n const isMinMd = useIsMinWidth('md');\n const safeAreaInset = useSafeAreaInset();\n\n const itemSize = useMemo(\n () => itemHeight * fontSize,\n [itemHeight, fontSize]\n );\n\n const paddingTopSize = useMemo(\n () =>\n ((hasPageHeader ? theme.pageHeaderHeight[isMinMd ? 1 : 0] : 0) +\n paddingTop) *\n fontSize,\n [hasPageHeader, theme.pageHeaderHeight, isMinMd, paddingTop, fontSize]\n );\n\n const paddingBottomSize = useMemo(\n () =>\n ((hasNavigation && !isMinMd ? theme.navigationTabHeight : 0) +\n paddingBottom) *\n fontSize +\n safeAreaInset.bottom,\n [\n hasNavigation,\n theme.navigationTabHeight,\n isMinMd,\n paddingBottom,\n fontSize,\n safeAreaInset.bottom,\n ]\n );\n\n const height = useMemo(\n () => heightProp || size.height,\n [heightProp, size.height]\n );\n\n const loadNextHandler = useRWLoadNext({\n itemCount,\n threshold,\n itemSize,\n paddingTop: paddingTopSize,\n height,\n onLoadNext,\n });\n\n const windowScrollHandler = useCallback(\n ({ top }: ScrollPosition) => {\n // Set the scroll position to the list\n if (listRef.current) listRef.current.scrollTo(top);\n loadNextHandler(top);\n },\n [listRef, loadNextHandler]\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const InnerElement = forwardRef<HTMLDivElement, any>(\n ({ style: innerStyle, ...innerRest }, innerElementRef) => (\n <div\n ref={innerElementRef}\n style={{\n ...innerStyle,\n height: `${\n parseFloat(innerStyle.height) + paddingTopSize + paddingBottomSize\n }px`,\n }}\n {...innerRest}\n />\n )\n );\n InnerElement.displayName = 'InnerElement';\n\n const listChildren = useCallback<RWListProps['children']>(\n ({ style: childrenStyle, ...childrenRest }) =>\n itemRenderer({\n style: {\n ...childrenStyle,\n top: `${\n parseFloat(\n childrenStyle.top ? childrenStyle.top.toString() : '0'\n ) + paddingTopSize\n }px`,\n },\n ...childrenRest,\n }),\n [itemRenderer, paddingTopSize]\n );\n\n // eslint-disable-next-line react/jsx-no-useless-fragment\n const EmptyComponent = useCallback(() => <>{empty}</>, [empty]);\n\n const renderList = useCallback(\n () => (\n <FixedSizeList\n ref={mergedListRef}\n itemCount={itemCount}\n width='100%'\n height={height}\n itemSize={itemSize}\n style={heightProp ? style : { ...style, height: '100% important!' }}\n overscanCount={overscanCount}\n onScroll={\n heightProp\n ? ({ scrollOffset }) => loadNextHandler(scrollOffset)\n : undefined\n }\n innerElementType={itemCount > 0 ? InnerElement : EmptyComponent}\n {...rest}\n >\n {listChildren}\n </FixedSizeList>\n ),\n [\n EmptyComponent,\n InnerElement,\n height,\n heightProp,\n itemCount,\n itemSize,\n listChildren,\n loadNextHandler,\n mergedListRef,\n overscanCount,\n rest,\n style,\n ]\n );\n\n if (heightProp) {\n return renderList();\n }\n\n return (\n <WindowScroller onScroll={windowScrollHandler}>\n {renderList()}\n </WindowScroller>\n );\n }\n);\n\nList.displayName = 'List';\n\nexport { default as WindowScroller } from './WindowScroller';\nexport { default as useRWLoadNext } from './utils/useRWLoadNext';\n\nexport default List;\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","forwardRef","useCallback","useContext","useMemo","FixedSizeList","useFontSize","useForwardedRef","useSafeAreaInset","useSize","useTheme","useIsMinWidth","WindowScroller","useRWLoadNext","LayoutContext","List","itemCount","itemHeight","threshold","overscanCount","height","heightProp","paddingTop","paddingBottom","style","empty","onLoadNext","itemRenderer","rest","ref","listRef","mergedListRef","size","fontSize","document","body","hasNavigation","hasPageHeader","theme","isMinMd","safeAreaInset","itemSize","paddingTopSize","pageHeaderHeight","paddingBottomSize","navigationTabHeight","bottom","loadNextHandler","windowScrollHandler","top","current","scrollTo","InnerElement","innerStyle","innerRest","innerElementRef","parseFloat","listChildren","childrenStyle","childrenRest","toString","EmptyComponent","renderList","scrollOffset","undefined","displayName","default"],"sources":["../../../src/List/index.tsx"],"sourcesContent":["import React, {\n CSSProperties,\n forwardRef,\n useCallback,\n useContext,\n useMemo,\n} from 'react';\nimport {\n FixedSizeList,\n ListChildComponentProps,\n ListProps as RWListProps,\n} from 'react-window';\nimport {\n useFontSize,\n useForwardedRef,\n useSafeAreaInset,\n useSize,\n} from '@os-design/utils';\nimport { useTheme } from '@os-design/theming';\nimport { useIsMinWidth } from '@os-design/media';\nimport WindowScroller, { ScrollPosition } from './WindowScroller';\nimport useRWLoadNext from './utils/useRWLoadNext';\nimport LayoutContext from '../Layout/LayoutContext';\n\nexport interface ListProps extends Partial<RWListProps> {\n /**\n * Total number of items in the list.\n */\n itemCount: number;\n /**\n * The item height in em.\n * @default 4\n */\n itemHeight?: number;\n /**\n * A threshold N means that the onLoadNext function calls when a user scrolls all items except N.\n * @default 10\n */\n threshold?: number;\n /**\n * Defines how many items outside of the visible \"window\" to render at all times.\n * @default 10\n */\n overscanCount?: number;\n /**\n * The height of the list in px.\n * @default undefined\n */\n height?: number;\n /**\n * The top padding in em.\n * @default 0\n */\n paddingTop?: number;\n /**\n * The bottom padding in em.\n * @default 0\n */\n paddingBottom?: number;\n /**\n * The inline css style.\n * @default undefined\n */\n style?: CSSProperties;\n /**\n * The component that renders if the list is empty.\n * @default undefined\n */\n empty?: React.ReactNode;\n /**\n * The callback to load more items.\n * @default undefined\n */\n onLoadNext?: () => void;\n /**\n * The callback to render items.\n * @default () => null\n */\n itemRenderer?: React.FC<ListChildComponentProps>;\n}\n\n/**\n * Virtualized list.\n * Used the react-window library.\n */\nconst List = forwardRef<FixedSizeList, ListProps>(\n (\n {\n itemCount,\n itemHeight = 4,\n threshold = 10,\n overscanCount = 10,\n height: heightProp,\n paddingTop = 0,\n paddingBottom = 0,\n style = {},\n empty,\n onLoadNext = () => {},\n itemRenderer = () => null,\n ...rest\n },\n ref\n ) => {\n const [listRef, mergedListRef] = useForwardedRef(ref);\n const size = useSize();\n const fontSize = useFontSize(document.body);\n const { hasNavigation, hasPageHeader } = useContext(LayoutContext);\n const { theme } = useTheme();\n const isMinMd = useIsMinWidth('md');\n const safeAreaInset = useSafeAreaInset();\n\n const itemSize = useMemo(\n () => itemHeight * fontSize,\n [itemHeight, fontSize]\n );\n\n const paddingTopSize = useMemo(\n () =>\n ((hasPageHeader ? theme.pageHeaderHeight[isMinMd ? 1 : 0] : 0) +\n paddingTop) *\n fontSize,\n [hasPageHeader, theme.pageHeaderHeight, isMinMd, paddingTop, fontSize]\n );\n\n const paddingBottomSize = useMemo(\n () =>\n ((hasNavigation && !isMinMd ? theme.navigationTabHeight : 0) +\n paddingBottom) *\n fontSize +\n safeAreaInset.bottom,\n [\n hasNavigation,\n theme.navigationTabHeight,\n isMinMd,\n paddingBottom,\n fontSize,\n safeAreaInset.bottom,\n ]\n );\n\n const height = useMemo(\n () => heightProp || size.height,\n [heightProp, size.height]\n );\n\n const loadNextHandler = useRWLoadNext({\n itemCount,\n threshold,\n itemSize,\n paddingTop: paddingTopSize,\n height,\n onLoadNext,\n });\n\n const windowScrollHandler = useCallback(\n ({ top }: ScrollPosition) => {\n // Set the scroll position to the list\n if (listRef.current) listRef.current.scrollTo(top);\n loadNextHandler(top);\n },\n [listRef, loadNextHandler]\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const InnerElement = useCallback(\n ({ style: innerStyle, ...innerRest }, innerElementRef) => (\n <div\n ref={innerElementRef}\n style={{\n ...innerStyle,\n height: `${\n parseFloat(innerStyle.height) + paddingTopSize + paddingBottomSize\n }px`,\n }}\n {...innerRest}\n />\n ),\n [paddingBottomSize, paddingTopSize]\n );\n\n const listChildren = useCallback<RWListProps['children']>(\n ({ style: childrenStyle, ...childrenRest }) =>\n itemRenderer({\n style: {\n ...childrenStyle,\n top: `${\n parseFloat(\n childrenStyle.top ? childrenStyle.top.toString() : '0'\n ) + paddingTopSize\n }px`,\n },\n ...childrenRest,\n }),\n [itemRenderer, paddingTopSize]\n );\n\n // eslint-disable-next-line react/jsx-no-useless-fragment\n const EmptyComponent = useCallback(() => <>{empty}</>, [empty]);\n\n const renderList = useCallback(\n () => (\n <FixedSizeList\n ref={mergedListRef}\n itemCount={itemCount}\n width='100%'\n height={height}\n itemSize={itemSize}\n style={heightProp ? style : { ...style, height: '100% important!' }}\n overscanCount={overscanCount}\n onScroll={\n heightProp\n ? ({ scrollOffset }) => loadNextHandler(scrollOffset)\n : undefined\n }\n innerElementType={itemCount > 0 ? InnerElement : EmptyComponent}\n {...rest}\n >\n {listChildren}\n </FixedSizeList>\n ),\n [\n EmptyComponent,\n InnerElement,\n height,\n heightProp,\n itemCount,\n itemSize,\n listChildren,\n loadNextHandler,\n mergedListRef,\n overscanCount,\n rest,\n style,\n ]\n );\n\n if (heightProp) {\n return renderList();\n }\n\n return (\n <WindowScroller onScroll={windowScrollHandler}>\n {renderList()}\n </WindowScroller>\n );\n }\n);\n\nList.displayName = 'List';\n\nexport { default as WindowScroller } from './WindowScroller';\nexport { default as useRWLoadNext } from './utils/useRWLoadNext';\n\nexport default List;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"bodyPointerEvents.js","names":["clearFrameTimeout","setFrameTimeout","originalBodyPointerEvents","timeoutId","disableBodyPointerEvents","document","body","style","pointerEvents","enableBodyPointerEvents","enableBodyPointerEventsAfterDelay","delay"],"sources":["../../../../src/List/utils/bodyPointerEvents.ts"],"sourcesContent":["import { clearFrameTimeout, Frame, setFrameTimeout } from './frameTimeout';\n\nlet originalBodyPointerEvents: string | null = null;\nlet timeoutId: Frame | null = null;\n\nexport const disableBodyPointerEvents = (): void => {\n if (originalBodyPointerEvents === null) {\n originalBodyPointerEvents = document.body.style.pointerEvents;\n document.body.style.pointerEvents = 'none';\n }\n};\n\nexport const enableBodyPointerEvents = (): void => {\n timeoutId = null;\n if (originalBodyPointerEvents !== null) {\n document.body.style.pointerEvents = originalBodyPointerEvents;\n originalBodyPointerEvents = null;\n }\n};\n\nexport const enableBodyPointerEventsAfterDelay = (delay: number): void => {\n if (timeoutId) clearFrameTimeout(timeoutId);\n timeoutId = setFrameTimeout(enableBodyPointerEvents, delay);\n};\n"],"mappings":"AAAA,SAASA,iBAAT,EAAmCC,eAAnC,QAA0D,gBAA1D;AAEA,IAAIC,yBAAwC,GAAG,IAA/C;AACA,IAAIC,SAAuB,GAAG,IAA9B;AAEA,OAAO,MAAMC,wBAAwB,GAAG,MAAY;EAClD,IAAIF,yBAAyB,KAAK,IAAlC,EAAwC;IACtCA,yBAAyB,GAAGG,QAAQ,CAACC,IAAT,CAAcC,KAAd,CAAoBC,aAAhD;IACAH,QAAQ,CAACC,IAAT,CAAcC,KAAd,CAAoBC,aAApB,GAAoC,MAApC;EACD;AACF,CALM;AAOP,OAAO,MAAMC,uBAAuB,GAAG,MAAY;EACjDN,SAAS,GAAG,IAAZ;;EACA,IAAID,yBAAyB,KAAK,IAAlC,EAAwC;IACtCG,QAAQ,CAACC,IAAT,CAAcC,KAAd,CAAoBC,aAApB,GAAoCN,yBAApC;IACAA,yBAAyB,GAAG,IAA5B;EACD;AACF,CANM;AAQP,OAAO,MAAMQ,iCAAiC,GAAIC,KAAD,IAAyB;EACxE,IAAIR,SAAJ,EAAeH,iBAAiB,CAACG,SAAD,CAAjB;EACfA,SAAS,GAAGF,eAAe,CAACQ,uBAAD,EAA0BE,KAA1B,CAA3B;AACD,CAHM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"frameTimeout.js","names":["clearFrameTimeout","frame","window","cancelAnimationFrame","id","setFrameTimeout","handler","timeout","start","frameRequestCallback","timestamp","timePassed","requestAnimationFrame"],"sources":["../../../../src/List/utils/frameTimeout.ts"],"sourcesContent":["export interface Frame {\n id: number;\n}\n\n/**\n * Cancels a timeout previously created by setFrameTimeout.\n */\nexport const clearFrameTimeout = (frame: Frame): void => {\n window.cancelAnimationFrame(frame.id);\n};\n\n/**\n * Sets a timeout using requestAnimationFrame.\n */\nexport const setFrameTimeout = (\n handler: () => void,\n timeout: number\n): Frame => {\n let start = 0;\n const frame = { id: 0 };\n\n const frameRequestCallback = (timestamp: number) => {\n if (!start) start = timestamp;\n const timePassed = timestamp - start;\n\n if (timePassed >= timeout) {\n clearFrameTimeout(frame);\n handler();\n } else {\n frame.id = window.requestAnimationFrame(frameRequestCallback);\n }\n };\n\n frame.id = window.requestAnimationFrame(frameRequestCallback);\n return frame;\n};\n"],"mappings":"AAIA;AACA;AACA;AACA,OAAO,MAAMA,iBAAiB,GAAIC,KAAD,IAAwB;EACvDC,MAAM,CAACC,oBAAP,CAA4BF,KAAK,CAACG,EAAlC;AACD,CAFM;AAIP;AACA;AACA;;AACA,OAAO,MAAMC,eAAe,GAAG,CAC7BC,OAD6B,EAE7BC,OAF6B,KAGnB;EACV,IAAIC,KAAK,GAAG,CAAZ;EACA,MAAMP,KAAK,GAAG;IAAEG,EAAE,EAAE;EAAN,CAAd;;EAEA,MAAMK,oBAAoB,GAAIC,SAAD,IAAuB;IAClD,IAAI,CAACF,KAAL,EAAYA,KAAK,GAAGE,SAAR;IACZ,MAAMC,UAAU,GAAGD,SAAS,GAAGF,KAA/B;;IAEA,IAAIG,UAAU,IAAIJ,OAAlB,EAA2B;MACzBP,iBAAiB,CAACC,KAAD,CAAjB;MACAK,OAAO;IACR,CAHD,MAGO;MACLL,KAAK,CAACG,EAAN,GAAWF,MAAM,CAACU,qBAAP,CAA6BH,oBAA7B,CAAX;IACD;EACF,CAVD;;EAYAR,KAAK,CAACG,EAAN,GAAWF,MAAM,CAACU,qBAAP,CAA6BH,oBAA7B,CAAX;EACA,OAAOR,KAAP;AACD,CArBM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"useRWLoadNext.js","names":["useCallback","useEffect","useRef","useRWLoadNext","props","propsRef","current","scrollOffset","itemCount","threshold","itemSize","paddingTop","height","onLoadNext","maxItemBeforeLoad","maxScrollOffsetBeforeLoad"],"sources":["../../../../src/List/utils/useRWLoadNext.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\ninterface UseRWLoadNextProps {\n itemCount: number;\n threshold: number;\n itemSize: number;\n paddingTop: number;\n height: number;\n onLoadNext: () => void;\n}\n\ntype OnScroll = (scrollOffset: number) => void;\n\n/**\n * Creates the onScroll callback for react-window to implement\n * the onLoadNext function.\n */\nconst useRWLoadNext = (props: UseRWLoadNextProps): OnScroll => {\n const propsRef = useRef(props);\n\n useEffect(() => {\n propsRef.current = props;\n }, [props]);\n\n return useCallback<OnScroll>((scrollOffset) => {\n const { itemCount, threshold, itemSize, paddingTop, height, onLoadNext } =\n propsRef.current;\n\n const maxItemBeforeLoad = itemCount - threshold;\n const maxScrollOffsetBeforeLoad =\n maxItemBeforeLoad * itemSize + paddingTop - height;\n\n if (scrollOffset < maxScrollOffsetBeforeLoad) return;\n onLoadNext();\n }, []);\n};\n\nexport default useRWLoadNext;\n"],"mappings":"AAAA,SAASA,WAAT,EAAsBC,SAAtB,EAAiCC,MAAjC,QAA+C,OAA/C;;AAaA;AACA;AACA;AACA;AACA,MAAMC,aAAa,GAAIC,KAAD,IAAyC;EAC7D,MAAMC,QAAQ,GAAGH,MAAM,CAACE,KAAD,CAAvB;EAEAH,SAAS,CAAC,MAAM;IACdI,QAAQ,CAACC,OAAT,GAAmBF,KAAnB;EACD,CAFQ,EAEN,CAACA,KAAD,CAFM,CAAT;EAIA,OAAOJ,WAAW,CAAYO,YAAD,IAAkB;IAC7C,MAAM;MAAEC,SAAF;MAAaC,SAAb;MAAwBC,QAAxB;MAAkCC,UAAlC;MAA8CC,MAA9C;MAAsDC;IAAtD,IACJR,QAAQ,CAACC,OADX;IAGA,MAAMQ,iBAAiB,GAAGN,SAAS,GAAGC,SAAtC;IACA,MAAMM,yBAAyB,GAC7BD,iBAAiB,GAAGJ,QAApB,GAA+BC,UAA/B,GAA4CC,MAD9C;IAGA,IAAIL,YAAY,GAAGQ,yBAAnB,EAA8C;IAC9CF,UAAU;EACX,CAViB,EAUf,EAVe,CAAlB;AAWD,CAlBD;;AAoBA,eAAeV,aAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"ListItemContent.js","names":["React","styled","clr","ellipsisStyles","horizontalPaddingStyles","transitionStyles","omitEmotionProps","css","Button","Content","div","Title","p","theme","colorText","Description","listItemColorDescription","sizes","small","LeftAddon","listItemAddonPaddingHorizontal","RightAddon","hasSwipeStyles","hasSwipe","openedStyles","opened","Actions","listItemActionsPaddingLeft","colorBg","slice","actionIndex","ListItemContent","title","description","left","right","actions","length","map","icon","onClick","actionRest","e","preventDefault","displayName"],"sources":["../../../src/ListItem/ListItemContent.tsx"],"sourcesContent":["import React from 'react';\nimport styled from '@emotion/styled';\nimport { clr, Color } from '@os-design/theming';\nimport {\n ellipsisStyles,\n horizontalPaddingStyles,\n transitionStyles,\n} from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { css } from '@emotion/react';\nimport Button, { ButtonProps } from '../Button';\n\nexport interface ListItemAction\n extends Omit<ButtonProps, 'leftIcon' | 'rightIcon' | 'wide'> {\n icon: React.ReactElement;\n}\n\nexport interface ListItemContentProps {\n /**\n * The title of the item.\n */\n title: string;\n /**\n * The description of the item.\n * @default undefined\n */\n description?: string;\n /**\n * The component located on the left side.\n * For example, avatar, button, checkbox.\n * @default undefined\n */\n left?: React.ReactNode;\n /**\n * The component located on the right side.\n * For example, date.\n */\n right?: React.ReactNode;\n /**\n * Buttons to control the item.\n * For example, edit, delete.\n * @default undefined\n */\n actions?: ListItemAction[];\n\n hasSwipe: boolean;\n opened: boolean;\n}\n\nconst Content = styled.div`\n overflow: hidden;\n`;\n\nconst Title = styled.div`\n color: ${(p) => clr(p.theme.colorText)};\n font-weight: 500;\n ${ellipsisStyles};\n`;\n\nconst Description = styled.div`\n color: ${(p) => clr(p.theme.listItemColorDescription)};\n font-size: ${(p) => p.theme.sizes.small}em;\n ${ellipsisStyles};\n`;\n\nexport const LeftAddon = styled.div`\n color: ${(p) => clr(p.theme.colorText)};\n padding-right: ${(p) => p.theme.listItemAddonPaddingHorizontal}em;\n`;\n\nexport const RightAddon = styled.div`\n color: ${(p) => clr(p.theme.colorText)};\n margin-left: auto;\n padding-left: ${(p) => p.theme.listItemAddonPaddingHorizontal}em;\n`;\n\nconst hasSwipeStyles = (p) =>\n p.hasSwipe &&\n css`\n transform: translateX(100%);\n ${transitionStyles('transform')(p)};\n `;\n\nconst openedStyles = (p) =>\n p.opened &&\n css`\n transform: translateX(0);\n `;\n\ninterface ActionsProps {\n hasSwipe: boolean;\n opened: boolean;\n}\nconst Actions = styled(\n 'nav',\n omitEmotionProps('hasSwipe', 'opened')\n)<ActionsProps>`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n\n display: flex;\n align-items: center;\n\n padding-left: ${(p) => p.theme.listItemActionsPaddingLeft}em;\n background: linear-gradient(\n to right,\n ${(p) => clr([...p.theme.colorBg.slice(0, 3), 0] as Color)},\n ${(p) => clr(p.theme.colorBg)}\n ${(p) => p.theme.listItemActionsPaddingLeft}em\n );\n\n ${hasSwipeStyles};\n ${openedStyles};\n ${horizontalPaddingStyles('right')};\n`;\n\nlet actionIndex = 0;\n\n// Used by ListItem, ListItemLink\nconst ListItemContent: React.FC<ListItemContentProps> = ({\n title,\n description,\n left,\n right,\n actions = [],\n hasSwipe,\n opened,\n}) => (\n <>\n {left && <LeftAddon>{left}</LeftAddon>}\n\n <Content>\n <Title>{title}</Title>\n {description && <Description>{description}</Description>}\n </Content>\n\n {right && <RightAddon>{right}</RightAddon>}\n\n {actions.length > 0 && (\n <Actions hasSwipe={hasSwipe} opened={opened}>\n {actions.map(({ icon, onClick = () => {}, ...actionRest }) => {\n actionIndex += 1;\n return (\n <Button\n type='ghost'\n wide='never'\n size='small'\n key={actionIndex}\n onClick={(e) => {\n e.preventDefault();\n onClick(e);\n }}\n {...actionRest}\n >\n {icon}\n </Button>\n );\n })}\n </Actions>\n )}\n </>\n);\n\nListItemContent.displayName = 'ListItemContent';\n\nexport default ListItemContent;\n"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,SAASC,GAAT,QAA2B,oBAA3B;AACA,SACEC,cADF,EAEEC,uBAFF,EAGEC,gBAHF,QAIO,mBAJP;AAKA,SAASC,gBAAT,QAAiC,kBAAjC;AACA,SAASC,GAAT,QAAoB,gBAApB;AACA,OAAOC,MAAP,MAAoC,WAApC;AAuCA,MAAMC,OAAO,GAAGR,MAAM,CAACS,GAAI;AAC3B;AACA,CAFA;AAIA,MAAMC,KAAK,GAAGV,MAAM,CAACS,GAAI;AACzB,WAAYE,CAAD,IAAOV,GAAG,CAACU,CAAC,CAACC,KAAF,CAAQC,SAAT,CAAoB;AACzC;AACA,IAAIX,cAAe;AACnB,CAJA;AAMA,MAAMY,WAAW,GAAGd,MAAM,CAACS,GAAI;AAC/B,WAAYE,CAAD,IAAOV,GAAG,CAACU,CAAC,CAACC,KAAF,CAAQG,wBAAT,CAAmC;AACxD,eAAgBJ,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQI,KAAR,CAAcC,KAAM;AAC1C,IAAIf,cAAe;AACnB,CAJA;AAMA,OAAO,MAAMgB,SAAS,GAAGlB,MAAM,CAACS,GAAI;AACpC,WAAYE,CAAD,IAAOV,GAAG,CAACU,CAAC,CAACC,KAAF,CAAQC,SAAT,CAAoB;AACzC,mBAAoBF,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQO,8BAA+B;AACjE,CAHO;AAKP,OAAO,MAAMC,UAAU,GAAGpB,MAAM,CAACS,GAAI;AACrC,WAAYE,CAAD,IAAOV,GAAG,CAACU,CAAC,CAACC,KAAF,CAAQC,SAAT,CAAoB;AACzC;AACA,kBAAmBF,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQO,8BAA+B;AAChE,CAJO;;AAMP,MAAME,cAAc,GAAIV,CAAD,IACrBA,CAAC,CAACW,QAAF,IACAhB,GAAI;AACN;AACA,MAAMF,gBAAgB,CAAC,WAAD,CAAhB,CAA8BO,CAA9B,CAAiC;AACvC,GALA;;AAOA,MAAMY,YAAY,GAAIZ,CAAD,IACnBA,CAAC,CAACa,MAAF,IACAlB,GAAI;AACN;AACA,GAJA;;AAUA,MAAMmB,OAAO,GAAGzB,MAAM,CACpB,KADoB,EAEpBK,gBAAgB,CAAC,UAAD,EAAa,QAAb,CAFI,CAGN;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAmBM,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQc,0BAA2B;AAC5D;AACA;AACA,MAAOf,CAAD,IAAOV,GAAG,CAAC,CAAC,GAAGU,CAAC,CAACC,KAAF,CAAQe,OAAR,CAAgBC,KAAhB,CAAsB,CAAtB,EAAyB,CAAzB,CAAJ,EAAiC,CAAjC,CAAD,CAA+C;AAC/D,MAAOjB,CAAD,IAAOV,GAAG,CAACU,CAAC,CAACC,KAAF,CAAQe,OAAT,CAAkB;AAClC,QAAShB,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQc,0BAA2B;AAClD;AACA;AACA,IAAIL,cAAe;AACnB,IAAIE,YAAa;AACjB,IAAIpB,uBAAuB,CAAC,OAAD,CAAU;AACrC,CAvBA;AAyBA,IAAI0B,WAAW,GAAG,CAAlB,C,CAEA;;AACA,MAAMC,eAA+C,GAAG,CAAC;EACvDC,KADuD;EAEvDC,WAFuD;EAGvDC,IAHuD;EAIvDC,KAJuD;EAKvDC,OAAO,GAAG,EAL6C;EAMvDb,QANuD;EAOvDE;AAPuD,CAAD,kBAStD,0CACGS,IAAI,iBAAI,oBAAC,SAAD,QAAYA,IAAZ,CADX,eAGE,oBAAC,OAAD,qBACE,oBAAC,KAAD,QAAQF,KAAR,CADF,EAEGC,WAAW,iBAAI,oBAAC,WAAD,QAAcA,WAAd,CAFlB,CAHF,EAQGE,KAAK,iBAAI,oBAAC,UAAD,QAAaA,KAAb,CARZ,EAUGC,OAAO,CAACC,MAAR,GAAiB,CAAjB,iBACC,oBAAC,OAAD;EAAS,QAAQ,EAAEd,QAAnB;EAA6B,MAAM,EAAEE;AAArC,GACGW,OAAO,CAACE,GAAR,CAAY,CAAC;EAAEC,IAAF;EAAQC,OAAO,GAAG,MAAM,CAAE,CAA1B;EAA4B,GAAGC;AAA/B,CAAD,KAAiD;EAC5DX,WAAW,IAAI,CAAf;EACA,oBACE,oBAAC,MAAD;IACE,IAAI,EAAC,OADP;IAEE,IAAI,EAAC,OAFP;IAGE,IAAI,EAAC,OAHP;IAIE,GAAG,EAAEA,WAJP;IAKE,OAAO,EAAGY,CAAD,IAAO;MACdA,CAAC,CAACC,cAAF;MACAH,OAAO,CAACE,CAAD,CAAP;IACD;EARH,GASMD,UATN,GAWGF,IAXH,CADF;AAeD,CAjBA,CADH,CAXJ,CATF;;AA4CAR,eAAe,CAACa,WAAhB,GAA8B,iBAA9B;AAEA,eAAeb,eAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","forwardRef","useMemo","styled","horizontalPaddingStyles","isTouchDevice","useSwipe","clr","ListItemContent","ListItemContainer","div","p","theme","listItemColorBorder","ListItem","title","description","left","right","actions","onTouchStart","onTouchMove","onTouchEnd","rest","ref","touchDevice","opened","handlers","e","displayName"],"sources":["../../../src/ListItem/index.tsx"],"sourcesContent":["import React, { forwardRef, useMemo } from 'react';\nimport styled from '@emotion/styled';\nimport { horizontalPaddingStyles } from '@os-design/styles';\nimport { isTouchDevice, useSwipe } from '@os-design/utils';\nimport { clr } from '@os-design/theming';\nimport ListItemContent, { ListItemContentProps } from './ListItemContent';\n\ntype JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'ref'>;\n\nexport type ListItemProps = JsxDivProps &\n Omit<ListItemContentProps, 'hasSwipe' | 'opened'>;\n\nexport const ListItemContainer = styled.div`\n position: relative;\n box-sizing: border-box;\n min-height: 4em;\n overflow: hidden;\n\n display: flex;\n align-items: center;\n\n &:not(:last-of-type) {\n border-bottom: 1px solid ${(p) => clr(p.theme.listItemColorBorder)};\n }\n\n @media (hover: hover) {\n // Hide actions by default\n & > nav {\n opacity: 0;\n }\n\n // Display actions either on focus, or on hover\n &:hover,\n &:focus-within {\n & > nav {\n opacity: 1;\n }\n }\n }\n\n ${horizontalPaddingStyles()};\n`;\n\n/**\n * The base list item.\n */\nconst ListItem = forwardRef<HTMLDivElement, ListItemProps>(\n (\n {\n title,\n description,\n left,\n right,\n actions = [],\n onTouchStart = () => {},\n onTouchMove = () => {},\n onTouchEnd = () => {},\n ...rest\n },\n ref\n ) => {\n const touchDevice = useMemo(() => isTouchDevice(), []);\n const { opened, handlers } = useSwipe();\n\n return (\n <ListItemContainer\n {...rest}\n onTouchStart={(e) => {\n handlers.onTouchStart(e);\n onTouchStart(e);\n }}\n onTouchMove={(e) => {\n handlers.onTouchMove(e);\n onTouchMove(e);\n }}\n onTouchEnd={(e) => {\n handlers.onTouchEnd(e);\n onTouchEnd(e);\n }}\n ref={ref}\n >\n <ListItemContent\n title={title}\n description={description}\n left={left}\n right={right}\n actions={actions}\n hasSwipe={touchDevice}\n opened={opened}\n />\n </ListItemContainer>\n );\n }\n);\n\nListItem.displayName = 'ListItem';\n\nexport default ListItem;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,EAA4BC,OAA5B,QAA2C,OAA3C;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,SAASC,uBAAT,QAAwC,mBAAxC;AACA,SAASC,aAAT,EAAwBC,QAAxB,QAAwC,kBAAxC;AACA,SAASC,GAAT,QAAoB,oBAApB;AACA,OAAOC,eAAP,MAAsD,mBAAtD;AAOA,OAAO,MAAMC,iBAAiB,GAAGN,MAAM,CAACO,GAAI;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAAgCC,CAAD,IAAOJ,GAAG,CAACI,CAAC,CAACC,KAAF,CAAQC,mBAAT,CAA8B;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIT,uBAAuB,EAAG;AAC9B,CA7BO;AA+BP;AACA;AACA;;AACA,MAAMU,QAAQ,gBAAGb,UAAU,CACzB,CACE;EACEc,KADF;EAEEC,WAFF;EAGEC,IAHF;EAIEC,KAJF;EAKEC,OAAO,GAAG,EALZ;EAMEC,YAAY,GAAG,MAAM,CAAE,CANzB;EAOEC,WAAW,GAAG,MAAM,CAAE,CAPxB;EAQEC,UAAU,GAAG,MAAM,CAAE,CARvB;EASE,GAAGC;AATL,CADF,EAYEC,GAZF,KAaK;EACH,MAAMC,WAAW,GAAGvB,OAAO,CAAC,MAAMG,aAAa,EAApB,EAAwB,EAAxB,CAA3B;EACA,MAAM;IAAEqB,MAAF;IAAUC;EAAV,IAAuBrB,QAAQ,EAArC;EAEA,oBACE,oBAAC,iBAAD,eACMiB,IADN;IAEE,YAAY,EAAGK,CAAD,IAAO;MACnBD,QAAQ,CAACP,YAAT,CAAsBQ,CAAtB;MACAR,YAAY,CAACQ,CAAD,CAAZ;IACD,CALH;IAME,WAAW,EAAGA,CAAD,IAAO;MAClBD,QAAQ,CAACN,WAAT,CAAqBO,CAArB;MACAP,WAAW,CAACO,CAAD,CAAX;IACD,CATH;IAUE,UAAU,EAAGA,CAAD,IAAO;MACjBD,QAAQ,CAACL,UAAT,CAAoBM,CAApB;MACAN,UAAU,CAACM,CAAD,CAAV;IACD,CAbH;IAcE,GAAG,EAAEJ;EAdP,iBAgBE,oBAAC,eAAD;IACE,KAAK,EAAET,KADT;IAEE,WAAW,EAAEC,WAFf;IAGE,IAAI,EAAEC,IAHR;IAIE,KAAK,EAAEC,KAJT;IAKE,OAAO,EAAEC,OALX;IAME,QAAQ,EAAEM,WANZ;IAOE,MAAM,EAAEC;EAPV,EAhBF,CADF;AA4BD,CA9CwB,CAA3B;AAiDAZ,QAAQ,CAACe,WAAT,GAAuB,UAAvB;AAEA,eAAef,QAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","forwardRef","useMemo","styled","isTouchDevice","omitEmotionProps","useSwipe","clr","resetFocusStyles","css","ListItemContainer","ListItemContent","actionsBgStyles","p","touchDevice","theme","listItemColorBgHover","slice","listItemActionsPaddingLeft","StyledLink","withComponent","ListItemLink","title","description","left","right","actions","as","onMouseDown","onTouchStart","onTouchMove","onTouchEnd","rest","ref","opened","handlers","e","preventDefault","displayName"],"sources":["../../../src/ListItemLink/index.tsx"],"sourcesContent":["import React, { forwardRef, useMemo } from 'react';\nimport styled from '@emotion/styled';\nimport { isTouchDevice, omitEmotionProps, useSwipe } from '@os-design/utils';\nimport { clr, Color } from '@os-design/theming';\nimport { resetFocusStyles } from '@os-design/styles';\nimport { css } from '@emotion/react';\nimport { ListItemContainer } from '../ListItem';\nimport ListItemContent, {\n ListItemContentProps,\n} from '../ListItem/ListItemContent';\nimport { LinkProps, ReactRouterLinkProps } from '../Link';\n\ntype JsxAProps = Omit<JSX.IntrinsicElements['a'], 'ref'>;\nexport type ListItemLinkProps = JsxAProps &\n ReactRouterLinkProps &\n Pick<LinkProps, 'as'> &\n Omit<ListItemContentProps, 'hasSwipe' | 'opened'>;\n\nconst actionsBgStyles = (p) =>\n !p.touchDevice &&\n css`\n & > nav {\n background: linear-gradient(\n to right,\n ${clr([...p.theme.listItemColorBgHover.slice(0, 3), 0] as Color)},\n ${clr(p.theme.listItemColorBgHover)}\n ${p.theme.listItemActionsPaddingLeft}em\n );\n }\n `;\n\ninterface StyledLinkProps {\n touchDevice: boolean;\n}\nconst StyledLink = styled(\n ListItemContainer.withComponent('a'),\n omitEmotionProps('touchDevice', 'as')\n)<StyledLinkProps>`\n ${resetFocusStyles};\n cursor: pointer;\n text-decoration: none;\n\n @media (hover: hover) {\n &:hover,\n &:focus-within {\n background-color: ${(p) => clr(p.theme.listItemColorBgHover)};\n }\n }\n\n ${actionsBgStyles};\n`;\n\n/**\n * The list item with a link.\n */\nconst ListItemLink = forwardRef<HTMLAnchorElement, ListItemLinkProps>(\n (\n {\n title,\n description,\n left,\n right,\n actions = [],\n as,\n onMouseDown = () => {},\n onTouchStart = () => {},\n onTouchMove = () => {},\n onTouchEnd = () => {},\n ...rest\n },\n ref\n ) => {\n const touchDevice = useMemo(() => isTouchDevice(), []);\n const { opened, handlers } = useSwipe();\n\n return (\n <StyledLink\n touchDevice={touchDevice}\n as={as}\n {...rest}\n onMouseDown={(e) => {\n onMouseDown(e);\n e.preventDefault();\n }}\n onTouchStart={(e) => {\n handlers.onTouchStart(e);\n onTouchStart(e);\n }}\n onTouchMove={(e) => {\n handlers.onTouchMove(e);\n onTouchMove(e);\n }}\n onTouchEnd={(e) => {\n handlers.onTouchEnd(e);\n onTouchEnd(e);\n }}\n ref={ref}\n >\n <ListItemContent\n title={title}\n description={description}\n left={left}\n right={right}\n actions={actions}\n hasSwipe={touchDevice}\n opened={opened}\n />\n </StyledLink>\n );\n }\n);\n\nListItemLink.displayName = 'ListItemLink';\n\nexport default ListItemLink;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","forwardRef","useCallback","styled","horizontalPaddingStyles","clr","Skeleton","List","LeftAddon","RightAddon","ListItem","div","p","theme","listItemColorBorder","Content","DescriptionSkeleton","sizes","small","ListSkeleton","hasDescription","titleWidth","descriptionWidth","itemCount","left","right","rest","ref","itemRenderer","style","displayName"],"sources":["../../../src/ListSkeleton/index.tsx"],"sourcesContent":["import React, { forwardRef, useCallback } from 'react';\nimport styled from '@emotion/styled';\nimport { horizontalPaddingStyles } from '@os-design/styles';\nimport { FixedSizeList } from 'react-window';\nimport { clr } from '@os-design/theming';\nimport Skeleton from '../Skeleton';\nimport List, { ListProps } from '../List';\nimport { ListItemProps } from '../ListItem';\nimport { LeftAddon, RightAddon } from '../ListItem/ListItemContent';\n\nexport interface ListSkeletonProps\n extends Omit<ListProps, 'itemCount' | 'itemRenderer'>,\n Pick<ListItemProps, 'left' | 'right'> {\n /**\n * The description placeholder.\n * @default false\n */\n hasDescription?: boolean;\n /**\n * The width of the title.\n * @default 30%\n */\n titleWidth?: string;\n /**\n * The width of the description.\n * @default 40%\n */\n descriptionWidth?: string;\n /**\n * Total count of items.\n * @default 10\n */\n itemCount?: number;\n}\n\nconst ListItem = styled.div`\n width: 100%;\n height: 100%;\n\n display: flex;\n align-items: center;\n box-sizing: border-box;\n\n &:not(:last-of-type) {\n border-bottom: 1px solid ${(p) => clr(p.theme.listItemColorBorder)};\n }\n\n ${horizontalPaddingStyles()};\n`;\n\nconst Content = styled.div`\n width: 100%;\n`;\n\nconst DescriptionSkeleton = styled(Skeleton)`\n height: ${(p) => p.theme.sizes.small}em;\n margin-top: 0.3em;\n`;\n\n/**\n * Provides a list placeholder while a user waits for the content to load.\n */\nconst ListSkeleton = forwardRef<FixedSizeList, ListSkeletonProps>(\n (\n {\n hasDescription = false,\n titleWidth = '30%',\n descriptionWidth = '40%',\n itemCount = 10,\n left,\n right,\n ...rest\n },\n ref\n ) => {\n const itemRenderer = useCallback(\n ({ style }) => (\n <ListItem style={style}>\n {left && <LeftAddon>{left}</LeftAddon>}\n\n <Content>\n <Skeleton width={titleWidth} />\n {hasDescription && <DescriptionSkeleton width={descriptionWidth} />}\n </Content>\n\n {right && <RightAddon>{right}</RightAddon>}\n </ListItem>\n ),\n [descriptionWidth, hasDescription, left, right, titleWidth]\n );\n\n return (\n <List\n itemCount={itemCount}\n itemRenderer={itemRenderer}\n {...rest}\n ref={ref}\n />\n );\n }\n);\n\nListSkeleton.displayName = 'ListSkeleton';\n\nexport default ListSkeleton;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,EAA4BC,WAA5B,QAA+C,OAA/C;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,SAASC,uBAAT,QAAwC,mBAAxC;AAEA,SAASC,GAAT,QAAoB,oBAApB;AACA,OAAOC,QAAP,MAAqB,aAArB;AACA,OAAOC,IAAP,MAAgC,SAAhC;AAEA,SAASC,SAAT,EAAoBC,UAApB,QAAsC,6BAAtC;AA2BA,MAAMC,QAAQ,GAAGP,MAAM,CAACQ,GAAI;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAAgCC,CAAD,IAAOP,GAAG,CAACO,CAAC,CAACC,KAAF,CAAQC,mBAAT,CAA8B;AACvE;AACA;AACA,IAAIV,uBAAuB,EAAG;AAC9B,CAbA;AAeA,MAAMW,OAAO,GAAGZ,MAAM,CAACQ,GAAI;AAC3B;AACA,CAFA;AAIA,MAAMK,mBAAmB,GAAGb,MAAM,CAACG,QAAD,CAAW;AAC7C,YAAaM,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQI,KAAR,CAAcC,KAAM;AACvC;AACA,CAHA;AAKA;AACA;AACA;;AACA,MAAMC,YAAY,gBAAGlB,UAAU,CAC7B,CACE;EACEmB,cAAc,GAAG,KADnB;EAEEC,UAAU,GAAG,KAFf;EAGEC,gBAAgB,GAAG,KAHrB;EAIEC,SAAS,GAAG,EAJd;EAKEC,IALF;EAMEC,KANF;EAOE,GAAGC;AAPL,CADF,EAUEC,GAVF,KAWK;EACH,MAAMC,YAAY,GAAG1B,WAAW,CAC9B,CAAC;IAAE2B;EAAF,CAAD,kBACE,oBAAC,QAAD;IAAU,KAAK,EAAEA;EAAjB,GACGL,IAAI,iBAAI,oBAAC,SAAD,QAAYA,IAAZ,CADX,eAGE,oBAAC,OAAD,qBACE,oBAAC,QAAD;IAAU,KAAK,EAAEH;EAAjB,EADF,EAEGD,cAAc,iBAAI,oBAAC,mBAAD;IAAqB,KAAK,EAAEE;EAA5B,EAFrB,CAHF,EAQGG,KAAK,iBAAI,oBAAC,UAAD,QAAaA,KAAb,CARZ,CAF4B,EAa9B,CAACH,gBAAD,EAAmBF,cAAnB,EAAmCI,IAAnC,EAAyCC,KAAzC,EAAgDJ,UAAhD,CAb8B,CAAhC;EAgBA,oBACE,oBAAC,IAAD;IACE,SAAS,EAAEE,SADb;IAEE,YAAY,EAAEK;EAFhB,GAGMF,IAHN;IAIE,GAAG,EAAEC;EAJP,GADF;AAQD,CArC4B,CAA/B;AAwCAR,YAAY,CAACW,WAAb,GAA2B,cAA3B;AAEA,eAAeX,YAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["styled","React","forwardRef","css","resetFocusStyles","sizeStyles","transitionStyles","omitEmotionProps","useTheme","darkStyles","p","dark","StyledLogoLink","LogoLink","src","as","onMouseDown","rest","ref","activeTheme","ariaLabel","e","preventDefault","displayName"],"sources":["../../../src/LogoLink/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport React, { forwardRef } from 'react';\nimport { css } from '@emotion/react';\nimport {\n resetFocusStyles,\n sizeStyles,\n transitionStyles,\n WithSize,\n} from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { useTheme } from '@os-design/theming';\nimport { LinkProps, ReactRouterLinkProps } from '../Link';\n\ntype JsxAProps = Omit<JSX.IntrinsicElements['a'], 'ref'>;\nexport interface LogoLinkProps\n extends JsxAProps,\n ReactRouterLinkProps,\n Pick<LinkProps, 'as'>,\n WithSize {\n /**\n * The source of the logo image.\n */\n src?: string;\n}\n\nconst darkStyles = (p) =>\n p.dark &&\n css`\n img {\n filter: brightness(0) invert(1); // Make the logo white\n }\n `;\n\ninterface StyledLogoLinkProps extends WithSize {\n dark: boolean;\n}\nconst StyledLogoLink = styled(\n 'a',\n omitEmotionProps('dark', 'size', 'as')\n)<StyledLogoLinkProps>`\n ${resetFocusStyles};\n cursor: pointer;\n text-decoration: none;\n display: block;\n height: 1.5em;\n\n img {\n display: block;\n height: 100%;\n transform: rotate(0); // Fixes moves on hover\n }\n\n @media (hover: hover) {\n &:hover,\n &:focus {\n opacity: 0.7;\n }\n }\n\n ${darkStyles};\n ${sizeStyles};\n ${transitionStyles('opacity')};\n`;\n\n/**\n * Logo with a link.\n */\nconst LogoLink = forwardRef<HTMLAnchorElement, LogoLinkProps>(\n ({ src, as, onMouseDown = () => {}, ...rest }, ref) => {\n const { activeTheme } = useTheme();\n const ariaLabel = rest['aria-label'] || 'Logo';\n\n return (\n <StyledLogoLink\n dark={activeTheme === 'dark'}\n aria-label={ariaLabel}\n as={as}\n onMouseDown={(e) => {\n onMouseDown(e);\n e.preventDefault();\n }}\n {...rest}\n ref={ref}\n >\n <img src={src} alt={ariaLabel} />\n </StyledLogoLink>\n );\n }\n);\n\nLogoLink.displayName = 'LogoLink';\n\nexport default LogoLink;\n"],"mappings":";;AAAA,OAAOA,MAAP,MAAmB,iBAAnB;AACA,OAAOC,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,SAASC,GAAT,QAAoB,gBAApB;AACA,SACEC,gBADF,EAEEC,UAFF,EAGEC,gBAHF,QAKO,mBALP;AAMA,SAASC,gBAAT,QAAiC,kBAAjC;AACA,SAASC,QAAT,QAAyB,oBAAzB;;AAeA,MAAMC,UAAU,GAAIC,CAAD,IACjBA,CAAC,CAACC,IAAF,IACAR,GAAI;AACN;AACA;AACA;AACA,GANA;;AAWA,MAAMS,cAAc,GAAGZ,MAAM,CAC3B,GAD2B,EAE3BO,gBAAgB,CAAC,MAAD,EAAS,MAAT,EAAiB,IAAjB,CAFW,CAGN;AACvB,IAAIH,gBAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIK,UAAW;AACf,IAAIJ,UAAW;AACf,IAAIC,gBAAgB,CAAC,SAAD,CAAY;AAChC,CA1BA;AA4BA;AACA;AACA;;AACA,MAAMO,QAAQ,gBAAGX,UAAU,CACzB,CAAC;EAAEY,GAAF;EAAOC,EAAP;EAAWC,WAAW,GAAG,MAAM,CAAE,CAAjC;EAAmC,GAAGC;AAAtC,CAAD,EAA+CC,GAA/C,KAAuD;EACrD,MAAM;IAAEC;EAAF,IAAkBX,QAAQ,EAAhC;EACA,MAAMY,SAAS,GAAGH,IAAI,CAAC,YAAD,CAAJ,IAAsB,MAAxC;EAEA,oBACE,oBAAC,cAAD;IACE,IAAI,EAAEE,WAAW,KAAK,MADxB;IAEE,cAAYC,SAFd;IAGE,EAAE,EAAEL,EAHN;IAIE,WAAW,EAAGM,CAAD,IAAO;MAClBL,WAAW,CAACK,CAAD,CAAX;MACAA,CAAC,CAACC,cAAF;IACD;EAPH,GAQML,IARN;IASE,GAAG,EAAEC;EATP,iBAWE;IAAK,GAAG,EAAEJ,GAAV;IAAe,GAAG,EAAEM;EAApB,EAXF,CADF;AAeD,CApBwB,CAA3B;AAuBAP,QAAQ,CAACU,WAAT,GAAuB,UAAvB;AAEA,eAAeV,QAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","forwardRef","useMemo","styled","useBrowserLayoutEffect","useForwardedRef","useKeyPress","useIsMinWidth","enableScrollingStyles","MenuContext","Popover","Modal","useFocusWithArrows","StyledPopover","p","theme","menuPaddingVertical","menuMinWidth","menuMaxHeight","StyledModal","Menu","closeOnSelect","modalTitle","trigger","placement","visible","onClose","size","className","id","children","rest","ref","containerRef","mergedContainerRef","window","undefined","isMinXs","menuId","Math","random","toString","slice","current","setAttribute","contextValue","displayName"],"sources":["../../../src/Menu/index.tsx"],"sourcesContent":["import React, { forwardRef, RefObject, useMemo } from 'react';\nimport styled from '@emotion/styled';\nimport {\n useBrowserLayoutEffect,\n useForwardedRef,\n useKeyPress,\n} from '@os-design/utils';\nimport { useIsMinWidth } from '@os-design/media';\nimport { enableScrollingStyles } from '@os-design/styles';\nimport { MenuContext } from '@os-design/menu-utils';\nimport Popover, { PopoverProps } from '../Popover';\nimport Modal from '../Modal';\nimport useFocusWithArrows from './utils/useFocusWithArrows';\n\nexport interface MenuProps extends PopoverProps {\n /**\n * Whether the menu closes when the user selects a menu item.\n * @default true\n */\n closeOnSelect?: boolean;\n /**\n * The title of the modal.\n * @default undefined\n */\n modalTitle?: string;\n}\n\nconst StyledPopover = styled(Popover)`\n padding: ${(p) => p.theme.menuPaddingVertical}em 0;\n min-width: ${(p) => p.theme.menuMinWidth}em;\n max-height: ${(p) => p.theme.menuMaxHeight}em;\n overflow: hidden;\n ${enableScrollingStyles('y')};\n`;\n\nconst StyledModal = styled(Modal)`\n padding-left: 0;\n padding-right: 0;\n`;\n\n/**\n * The dropdown menu.\n */\nconst Menu = forwardRef<HTMLDivElement, MenuProps>(\n (\n {\n closeOnSelect = true,\n modalTitle,\n trigger,\n placement = 'bottom-start',\n visible,\n onClose = () => {},\n size,\n className,\n id,\n children,\n ...rest\n },\n ref\n ) => {\n const [containerRef, mergedContainerRef] = useForwardedRef(ref);\n useFocusWithArrows(containerRef);\n useKeyPress(\n (typeof window !== 'undefined' ? window : undefined) as EventTarget,\n 'Escape',\n onClose\n );\n const isMinXs = useIsMinWidth('xs');\n\n const menuId = useMemo(\n () => id || `menu-${Math.random().toString(36).slice(2, 11)}`,\n [id]\n );\n\n // Replace the aria-haspopup attribute from true to menu\n useBrowserLayoutEffect(() => {\n if (!trigger) return;\n const { current } = trigger as RefObject<Element>;\n if (!current) return;\n current.setAttribute('aria-haspopup', 'menu');\n current.setAttribute('aria-controls', menuId);\n }, [menuId]);\n\n const contextValue = useMemo(\n () => ({ closeOnSelect, onClose }),\n [closeOnSelect, onClose]\n );\n\n return (\n <MenuContext.Provider value={contextValue}>\n {isMinXs ? (\n <StyledPopover\n trigger={trigger}\n placement={placement}\n visible={visible}\n onClose={onClose}\n size={size}\n className={className}\n id={menuId}\n role='menu'\n {...rest}\n ref={mergedContainerRef}\n >\n {children}\n </StyledPopover>\n ) : (\n <StyledModal\n title={modalTitle}\n footer={null}\n visible={visible}\n onClose={onClose}\n size={size}\n className={className}\n id={menuId}\n role='menu'\n ref={mergedContainerRef}\n >\n {children}\n </StyledModal>\n )}\n </MenuContext.Provider>\n );\n }\n);\n\nMenu.displayName = 'Menu';\n\nexport default Menu;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"useFocusWithArrows.js","names":["useCallback","useKeyPress","useFocusWithArrows","ref","arrowKeyPressListener","e","current","focusableListItems","querySelectorAll","activeElement","document","curFocusedIndex","indexOf","nextFocusedIndex","key","length","undefined","nextFocusedListItem","item","focus","preventDefault","window"],"sources":["../../../../src/Menu/utils/useFocusWithArrows.ts"],"sourcesContent":["import { RefObject, useCallback } from 'react';\nimport { KeyPressListener, useKeyPress } from '@os-design/utils';\n\nconst useFocusWithArrows = (ref: RefObject<Element>): void => {\n const arrowKeyPressListener = useCallback<KeyPressListener>(\n (e) => {\n if (!ref.current) return;\n const focusableListItems = ref.current.querySelectorAll<HTMLElement>(\n 'button:not([disabled])'\n );\n const { activeElement } = document;\n const curFocusedIndex = activeElement\n ? ([...focusableListItems] as Element[]).indexOf(activeElement)\n : -1;\n\n let nextFocusedIndex;\n if (curFocusedIndex === -1 && e.key === 'ArrowUp') {\n nextFocusedIndex = focusableListItems.length - 1;\n } else if (curFocusedIndex === -1 && e.key === 'ArrowDown') {\n nextFocusedIndex = 0;\n } else if (curFocusedIndex > -1 && e.key === 'ArrowUp') {\n nextFocusedIndex =\n curFocusedIndex > 0\n ? curFocusedIndex - 1\n : focusableListItems.length - 1;\n } else if (curFocusedIndex > -1 && e.key === 'ArrowDown') {\n nextFocusedIndex =\n curFocusedIndex < focusableListItems.length - 1\n ? curFocusedIndex + 1\n : 0;\n }\n\n if (nextFocusedIndex === undefined) return;\n const nextFocusedListItem = focusableListItems.item(nextFocusedIndex);\n if (!nextFocusedListItem) return;\n\n nextFocusedListItem.focus();\n e.preventDefault();\n },\n [ref]\n );\n\n useKeyPress(\n (typeof window !== 'undefined' ? window : undefined) as EventTarget,\n ['ArrowUp', 'ArrowDown'],\n arrowKeyPressListener\n );\n};\n\nexport default useFocusWithArrows;\n"],"mappings":"AAAA,SAAoBA,WAApB,QAAuC,OAAvC;AACA,SAA2BC,WAA3B,QAA8C,kBAA9C;;AAEA,MAAMC,kBAAkB,GAAIC,GAAD,IAAmC;EAC5D,MAAMC,qBAAqB,GAAGJ,WAAW,CACtCK,CAAD,IAAO;IACL,IAAI,CAACF,GAAG,CAACG,OAAT,EAAkB;IAClB,MAAMC,kBAAkB,GAAGJ,GAAG,CAACG,OAAJ,CAAYE,gBAAZ,CACzB,wBADyB,CAA3B;IAGA,MAAM;MAAEC;IAAF,IAAoBC,QAA1B;IACA,MAAMC,eAAe,GAAGF,aAAa,GAChC,CAAC,GAAGF,kBAAJ,CAAD,CAAuCK,OAAvC,CAA+CH,aAA/C,CADiC,GAEjC,CAAC,CAFL;IAIA,IAAII,gBAAJ;;IACA,IAAIF,eAAe,KAAK,CAAC,CAArB,IAA0BN,CAAC,CAACS,GAAF,KAAU,SAAxC,EAAmD;MACjDD,gBAAgB,GAAGN,kBAAkB,CAACQ,MAAnB,GAA4B,CAA/C;IACD,CAFD,MAEO,IAAIJ,eAAe,KAAK,CAAC,CAArB,IAA0BN,CAAC,CAACS,GAAF,KAAU,WAAxC,EAAqD;MAC1DD,gBAAgB,GAAG,CAAnB;IACD,CAFM,MAEA,IAAIF,eAAe,GAAG,CAAC,CAAnB,IAAwBN,CAAC,CAACS,GAAF,KAAU,SAAtC,EAAiD;MACtDD,gBAAgB,GACdF,eAAe,GAAG,CAAlB,GACIA,eAAe,GAAG,CADtB,GAEIJ,kBAAkB,CAACQ,MAAnB,GAA4B,CAHlC;IAID,CALM,MAKA,IAAIJ,eAAe,GAAG,CAAC,CAAnB,IAAwBN,CAAC,CAACS,GAAF,KAAU,WAAtC,EAAmD;MACxDD,gBAAgB,GACdF,eAAe,GAAGJ,kBAAkB,CAACQ,MAAnB,GAA4B,CAA9C,GACIJ,eAAe,GAAG,CADtB,GAEI,CAHN;IAID;;IAED,IAAIE,gBAAgB,KAAKG,SAAzB,EAAoC;IACpC,MAAMC,mBAAmB,GAAGV,kBAAkB,CAACW,IAAnB,CAAwBL,gBAAxB,CAA5B;IACA,IAAI,CAACI,mBAAL,EAA0B;IAE1BA,mBAAmB,CAACE,KAApB;IACAd,CAAC,CAACe,cAAF;EACD,CAlCsC,EAmCvC,CAACjB,GAAD,CAnCuC,CAAzC;EAsCAF,WAAW,CACR,OAAOoB,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyCL,SADjC,EAET,CAAC,SAAD,EAAY,WAAZ,CAFS,EAGTZ,qBAHS,CAAX;AAKD,CA5CD;;AA8CA,eAAeF,kBAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","forwardRef","styled","clr","Container","div","p","theme","menuDividerColor","MenuDivider","props","ref","displayName"],"sources":["../../../src/MenuDivider/index.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport styled from '@emotion/styled';\nimport { clr } from '@os-design/theming';\n\nexport type MenuDividerProps = Omit<JSX.IntrinsicElements['div'], 'ref'>;\n\nconst Container = styled.div`\n padding-top: 0.4em;\n border-bottom: 1px solid ${(p) => clr(p.theme.menuDividerColor)};\n margin-bottom: 0.4em;\n`;\n\n/**\n * The divider of menu items.\n */\nconst MenuDivider = forwardRef<HTMLDivElement, MenuDividerProps>(\n (props, ref) => <Container role='separator' {...props} ref={ref} />\n);\n\nMenuDivider.displayName = 'MenuDivider';\n\nexport default MenuDivider;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,SAASC,GAAT,QAAoB,oBAApB;AAIA,MAAMC,SAAS,GAAGF,MAAM,CAACG,GAAI;AAC7B;AACA,6BAA8BC,CAAD,IAAOH,GAAG,CAACG,CAAC,CAACC,KAAF,CAAQC,gBAAT,CAA2B;AAClE;AACA,CAJA;AAMA;AACA;AACA;;AACA,MAAMC,WAAW,gBAAGR,UAAU,CAC5B,CAACS,KAAD,EAAQC,GAAR,kBAAgB,oBAAC,SAAD;EAAW,IAAI,EAAC;AAAhB,GAAgCD,KAAhC;EAAuC,GAAG,EAAEC;AAA5C,GADY,CAA9B;AAIAF,WAAW,CAACG,WAAZ,GAA0B,aAA1B;AAEA,eAAeH,WAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","forwardRef","useContext","useMemo","styled","clr","ellipsisStyles","useForwardedState","m","useSelectHandler","MenuContext","MenuItem","Title","div","p","theme","sizes","small","menuGroupColorTitle","modalBodyPaddingHorizontal","min","xs","Container","menuGroupColorDivider","modalBodyPaddingVertical","MenuGroup","title","maxSelectedItems","value","defaultValue","onChange","children","rest","ref","closeOnSelect","forwardedValue","setForwardedValue","onSelect","menuItems","selectedItems","Children","map","child","isValidElement","type","childValue","onClick","childOnClick","props","cloneElement","key","selected","includes","e","role","displayName"],"sources":["../../../src/MenuGroup/index.tsx"],"sourcesContent":["import React, { forwardRef, useContext, useMemo } from 'react';\nimport styled from '@emotion/styled';\nimport { clr } from '@os-design/theming';\nimport { ellipsisStyles } from '@os-design/styles';\nimport { useForwardedState } from '@os-design/utils';\nimport { m } from '@os-design/media';\nimport { useSelectHandler, MenuContext } from '@os-design/menu-utils';\nimport MenuItem from '../MenuItem';\n\ntype JsxDivProps = Omit<\n JSX.IntrinsicElements['div'],\n 'value' | 'onChange' | 'ref'\n>;\nexport interface MenuGroupProps extends JsxDivProps {\n /**\n * The title of the menu group.\n * @default undefined\n */\n title?: string;\n /**\n * The max number of menu items that the user can select.\n * @default 1\n */\n maxSelectedItems?: number | 'all';\n /**\n * Selected menu items.\n * @default undefined\n */\n value?: string[];\n /**\n * The default value.\n * @default undefined\n */\n defaultValue?: string[];\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: string[]) => void;\n}\n\nconst Title = styled.div`\n font-weight: 500;\n font-size: ${(p) => p.theme.sizes.small}em;\n color: ${(p) => clr(p.theme.menuGroupColorTitle)};\n margin-bottom: 0.4em;\n\n padding: 0 ${(p) => p.theme.modalBodyPaddingHorizontal[0]}em;\n ${m.min.xs} {\n padding: 0 0.8em;\n }\n\n ${ellipsisStyles};\n`;\n\nconst Container = styled.div`\n &:not(:last-of-type) {\n padding-bottom: 0.4em;\n border-bottom: 1px solid ${(p) => clr(p.theme.menuGroupColorDivider)};\n }\n &:not(:first-of-type) {\n margin-top: ${(p) => p.theme.modalBodyPaddingVertical[0]}em;\n ${m.min.xs} {\n margin-top: 0.4em;\n }\n }\n`;\n\n/**\n * The group of menu items.\n */\nconst MenuGroup = forwardRef<HTMLDivElement, MenuGroupProps>(\n (\n {\n title,\n maxSelectedItems = 1,\n value,\n defaultValue,\n onChange = () => {},\n children,\n ...rest\n },\n ref\n ) => {\n const { closeOnSelect } = useContext(MenuContext);\n const [forwardedValue, setForwardedValue] = useForwardedState({\n value,\n defaultValue,\n onChange,\n });\n\n const onSelect = useSelectHandler({\n value: forwardedValue || [],\n onChange: setForwardedValue,\n maxSelectedItems,\n });\n\n const menuItems = useMemo(() => {\n const selectedItems = forwardedValue || [];\n return React.Children.map(children, (child) => {\n if (!React.isValidElement(child) || child.type !== MenuItem)\n return child;\n const { value: childValue, onClick: childOnClick } = child.props;\n return React.cloneElement(child, {\n key: childValue,\n selected: selectedItems.includes(childValue),\n onClick: (e) => {\n if (!childValue) return;\n onSelect(childValue);\n if (childOnClick) childOnClick(e);\n },\n ...(!closeOnSelect\n ? {\n role:\n maxSelectedItems === 1 ? 'menuitemradio' : 'menuitemcheckbox',\n 'aria-checked': selectedItems.includes(childValue),\n }\n : {}),\n });\n });\n }, [children, closeOnSelect, forwardedValue, maxSelectedItems, onSelect]);\n\n return (\n <Container\n role={maxSelectedItems === 1 ? 'radiogroup' : 'group'}\n {...rest}\n ref={ref}\n >\n {title && <Title>{title}</Title>}\n {menuItems}\n </Container>\n );\n }\n);\n\nMenuGroup.displayName = 'MenuGroup';\n\nexport default MenuGroup;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","forwardRef","useCallback","useContext","useEffect","useRef","styled","m","clr","ThemeOverrider","Check","omitEmotionProps","css","MenuContext","Button","selectedStyles","p","selected","theme","menuItemSelectedColorBg","StyledButton","menuItemHeight","menuItemPaddingHorizontal","min","xs","SelectedIcon","menuItemSelectedColorIcon","MenuItem","value","right","onClick","rest","ref","closeOnSelect","onClose","onClickRef","current","clickHandler","e","buttonGhostColorText","colorText","displayName"],"sources":["../../../src/MenuItem/index.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from 'react';\nimport styled from '@emotion/styled';\nimport { m } from '@os-design/media';\nimport { clr, ThemeOverrider } from '@os-design/theming';\nimport { Check } from '@os-design/icons';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { css } from '@emotion/react';\nimport { MenuContext } from '@os-design/menu-utils';\nimport Button, { ButtonProps } from '../Button';\n\nexport interface MenuItemProps\n extends Omit<ButtonProps, 'type' | 'wide' | 'size'> {\n /**\n * Whether the menu item is selected.\n * @default false\n */\n selected?: boolean;\n /**\n * The value of the menu item.\n * @default undefined\n */\n value?: string;\n}\n\nconst selectedStyles = (p) =>\n p.selected &&\n css`\n background-color: ${clr(p.theme.menuItemSelectedColorBg)};\n `;\n\ntype StyledButtonProps = Pick<MenuItemProps, 'selected'>;\nconst StyledButton = styled(\n Button,\n omitEmotionProps('selected')\n)<StyledButtonProps>`\n display: flex;\n font-weight: normal;\n border-radius: 0;\n height: ${(p) => p.theme.menuItemHeight}em;\n\n & > span {\n flex: 1;\n text-align: left;\n overflow: hidden;\n line-height: 1.5;\n }\n\n padding: 0 ${(p) => p.theme.menuItemPaddingHorizontal[0]}em;\n ${m.min.xs} {\n padding: 0 ${(p) => p.theme.menuItemPaddingHorizontal[1]}em;\n }\n\n ${selectedStyles};\n`;\n\nconst SelectedIcon = styled(Check)`\n color: ${(p) => clr(p.theme.menuItemSelectedColorIcon)};\n`;\n\n/**\n * The base menu item.\n */\nconst MenuItem = forwardRef<HTMLButtonElement, MenuItemProps>(\n ({ selected = false, value, right, onClick = () => {}, ...rest }, ref) => {\n const { closeOnSelect, onClose } = useContext(MenuContext);\n const onClickRef = useRef<MenuItemProps['onClick']>();\n\n useEffect(() => {\n onClickRef.current = onClick;\n }, [onClick]);\n\n const clickHandler = useCallback(\n (e) => {\n if (onClickRef.current) onClickRef.current(e);\n if (closeOnSelect) onClose();\n },\n [closeOnSelect, onClose]\n );\n\n return (\n <ThemeOverrider\n overrides={(theme) => ({ buttonGhostColorText: theme.colorText })}\n >\n <StyledButton\n selected={selected}\n right={selected ? <SelectedIcon /> : right}\n type='ghost'\n wide='always'\n onClick={clickHandler}\n role='menuitem'\n {...rest}\n ref={ref}\n />\n </ThemeOverrider>\n );\n }\n);\n\nMenuItem.displayName = 'MenuItem';\n\nexport default MenuItem;\n"],"mappings":";;AAAA,OAAOA,KAAP,IACEC,UADF,EAEEC,WAFF,EAGEC,UAHF,EAIEC,SAJF,EAKEC,MALF,QAMO,OANP;AAOA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,SAASC,CAAT,QAAkB,kBAAlB;AACA,SAASC,GAAT,EAAcC,cAAd,QAAoC,oBAApC;AACA,SAASC,KAAT,QAAsB,kBAAtB;AACA,SAASC,gBAAT,QAAiC,kBAAjC;AACA,SAASC,GAAT,QAAoB,gBAApB;AACA,SAASC,WAAT,QAA4B,uBAA5B;AACA,OAAOC,MAAP,MAAoC,WAApC;;AAgBA,MAAMC,cAAc,GAAIC,CAAD,IACrBA,CAAC,CAACC,QAAF,IACAL,GAAI;AACN,wBAAwBJ,GAAG,CAACQ,CAAC,CAACE,KAAF,CAAQC,uBAAT,CAAkC;AAC7D,GAJA;;AAOA,MAAMC,YAAY,GAAGd,MAAM,CACzBQ,MADyB,EAEzBH,gBAAgB,CAAC,UAAD,CAFS,CAGN;AACrB;AACA;AACA;AACA,YAAaK,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQG,cAAe;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAgBL,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQI,yBAAR,CAAkC,CAAlC,CAAqC;AAC3D,IAAIf,CAAC,CAACgB,GAAF,CAAMC,EAAG;AACb,iBAAkBR,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQI,yBAAR,CAAkC,CAAlC,CAAqC;AAC7D;AACA;AACA,IAAIP,cAAe;AACnB,CAtBA;AAwBA,MAAMU,YAAY,GAAGnB,MAAM,CAACI,KAAD,CAAQ;AACnC,WAAYM,CAAD,IAAOR,GAAG,CAACQ,CAAC,CAACE,KAAF,CAAQQ,yBAAT,CAAoC;AACzD,CAFA;AAIA;AACA;AACA;;AACA,MAAMC,QAAQ,gBAAG1B,UAAU,CACzB,CAAC;EAAEgB,QAAQ,GAAG,KAAb;EAAoBW,KAApB;EAA2BC,KAA3B;EAAkCC,OAAO,GAAG,MAAM,CAAE,CAApD;EAAsD,GAAGC;AAAzD,CAAD,EAAkEC,GAAlE,KAA0E;EACxE,MAAM;IAAEC,aAAF;IAAiBC;EAAjB,IAA6B/B,UAAU,CAACU,WAAD,CAA7C;EACA,MAAMsB,UAAU,GAAG9B,MAAM,EAAzB;EAEAD,SAAS,CAAC,MAAM;IACd+B,UAAU,CAACC,OAAX,GAAqBN,OAArB;EACD,CAFQ,EAEN,CAACA,OAAD,CAFM,CAAT;EAIA,MAAMO,YAAY,GAAGnC,WAAW,CAC7BoC,CAAD,IAAO;IACL,IAAIH,UAAU,CAACC,OAAf,EAAwBD,UAAU,CAACC,OAAX,CAAmBE,CAAnB;IACxB,IAAIL,aAAJ,EAAmBC,OAAO;EAC3B,CAJ6B,EAK9B,CAACD,aAAD,EAAgBC,OAAhB,CAL8B,CAAhC;EAQA,oBACE,oBAAC,cAAD;IACE,SAAS,EAAGhB,KAAD,KAAY;MAAEqB,oBAAoB,EAAErB,KAAK,CAACsB;IAA9B,CAAZ;EADb,gBAGE,oBAAC,YAAD;IACE,QAAQ,EAAEvB,QADZ;IAEE,KAAK,EAAEA,QAAQ,gBAAG,oBAAC,YAAD,OAAH,GAAsBY,KAFvC;IAGE,IAAI,EAAC,OAHP;IAIE,IAAI,EAAC,QAJP;IAKE,OAAO,EAAEQ,YALX;IAME,IAAI,EAAC;EANP,GAOMN,IAPN;IAQE,GAAG,EAAEC;EARP,GAHF,CADF;AAgBD,CAjCwB,CAA3B;AAoCAL,QAAQ,CAACc,WAAT,GAAuB,UAAvB;AAEA,eAAed,QAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/Modal/index.tsx"],"names":["React","forwardRef","useMemo","useRef","FocusLock","styled","useBodyScroll","useKeyPress","useClosable","omitEmotionProps","ellipsisStyles","enableScrollingStyles","sizeStyles","m","css","keyframes","Close","clr","ThemeOverrider","useTheme","Portal","Button","defaultLocale","MODAL_CONTAINER_Z_INDEX","MODAL_BOX_SHADOW_SIZE_EM","maskFadeIn","maskFadeOut","maskVisibleStyles","p","visible","theme","transitionDelay","maskInvisibleStyles","ModalMask","modalMaskColorBg","Container","div","min","xs","contentFadeIn","contentFadeOut","contentFadeInXs","contentFadeOutXs","contentVisibleStyles","contentInvisibleStyles","Content","colorBg","colorText","modalColorBoxShadow","borderRadius","modalWidth","Header","modalHeaderHeight","modalHeaderColorBorderBottom","modalBodyPaddingHorizontal","Math","max","buttonPaddingHorizontal","Title","sizes","large","Body","modalBodyPaddingVertical","Footer","Modal","title","okText","okDanger","okLoading","okDisabled","header","footer","locale","onClose","onOk","size","id","onClick","children","rest","ref","contentRef","mounted","window","undefined","titleId","random","toString","slice","bodyId","e","stopPropagation","t","modalCloseButtonPaddingHorizontal","closeLabel","displayName"],"mappings":"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","sourcesContent":["import React, { forwardRef, useMemo, useRef } from 'react';\nimport FocusLock from 'react-focus-lock';\nimport styled from '@emotion/styled';\nimport {\n useBodyScroll,\n useKeyPress,\n useClosable,\n omitEmotionProps,\n} from '@os-design/utils';\nimport {\n ellipsisStyles,\n enableScrollingStyles,\n sizeStyles,\n WithSize,\n} from '@os-design/styles';\nimport { m } from '@os-design/media';\nimport { css, keyframes } from '@emotion/react';\nimport { Close } from '@os-design/icons';\nimport { clr, ThemeOverrider, useTheme } from '@os-design/theming';\nimport Portal from '@os-design/portal';\nimport Button from '../Button';\nimport defaultLocale, { ModalLocale } from './utils/defaultLocale';\n\ntype JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'ref'>;\nexport interface ModalProps extends JsxDivProps, WithSize {\n /**\n * The title of the modal.\n * @default undefined\n */\n title?: string;\n /**\n * The text of the OK button.\n * @default OK\n */\n okText?: string;\n /**\n * Sets the danger styles to the OK button.\n * @default false\n */\n okDanger?: boolean;\n /**\n * Whether the OK button is loading.\n * @default false\n */\n okLoading?: boolean;\n /**\n * Whether the OK button is disabled.\n * @default false\n */\n okDisabled?: boolean;\n /**\n * The header component.\n * Set as null if you don't need the default header.\n * @default undefined\n */\n header?: React.ReactNode;\n /**\n * The footer component.\n * Set as null if you don't need the default footer.\n * @default undefined\n */\n footer?: React.ReactNode;\n /**\n * Whether the modal is visible.\n * @default false\n */\n visible?: boolean;\n /**\n * The locale of the modal.\n * @default undefined\n */\n locale?: ModalLocale;\n /**\n * Specifies a callback that will be called when a user clicks the mask or\n * the close button. The callback should set the visible state to false.\n * @default undefined\n */\n onClose?: () => void;\n /**\n * Specifies a callback that will be called when a user clicks the OK button.\n * @default undefined\n */\n onOk?: () => void;\n}\n\nconst MODAL_CONTAINER_Z_INDEX = 1000;\nconst MODAL_BOX_SHADOW_SIZE_EM = 1;\n\nconst maskFadeIn = keyframes`\n from { opacity: 0; }\n to { opacity: 1; }\n`;\n\nconst maskFadeOut = keyframes`\n from { opacity: 1; }\n to { opacity: 0; }\n`;\n\nconst maskVisibleStyles = (p) =>\n p.visible &&\n css`\n animation: ${maskFadeIn} ${p.theme.transitionDelay}ms forwards;\n `;\n\nconst maskInvisibleStyles = (p) =>\n !p.visible &&\n css`\n animation: ${maskFadeOut} ${p.theme.transitionDelay}ms forwards;\n `;\n\ntype MaskProps = Pick<ModalProps, 'visible'>;\nexport const ModalMask = styled('div', omitEmotionProps('visible'))<MaskProps>`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 100%;\n background-color: ${(p) => clr(p.theme.modalMaskColorBg)};\n z-index: ${MODAL_CONTAINER_Z_INDEX};\n ${maskVisibleStyles};\n ${maskInvisibleStyles};\n`;\n\nconst Container = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 100%;\n z-index: ${MODAL_CONTAINER_Z_INDEX};\n\n ${m.min.xs} {\n ${enableScrollingStyles('y')};\n }\n`;\n\nconst contentFadeIn = keyframes`\n from { transform: translateY(calc(var(--vh, 1vh) * 100 + ${MODAL_BOX_SHADOW_SIZE_EM}em)); }\n to { transform: translateY(calc(var(--vh, 1vh) * 100 - 100%)); }\n`;\n\nconst contentFadeOut = keyframes`\n from { transform: translateY(calc(var(--vh, 1vh) * 100 - 100%)); }\n to { transform: translateY(calc(var(--vh, 1vh) * 100 + ${MODAL_BOX_SHADOW_SIZE_EM}em)); }\n`;\n\nconst contentFadeInXs = keyframes`\n from { transform: translateY(calc(-100% - ${MODAL_BOX_SHADOW_SIZE_EM}em)); }\n to { transform: translateY(6em); }\n`;\n\nconst contentFadeOutXs = keyframes`\n from { transform: translateY(6em); }\n to { transform: translateY(calc(-100% - ${MODAL_BOX_SHADOW_SIZE_EM}em)); }\n`;\n\nconst contentVisibleStyles = (p) =>\n p.visible &&\n css`\n animation: ${contentFadeIn} ${p.theme.transitionDelay}ms forwards;\n ${m.min.xs} {\n animation: ${contentFadeInXs} ${p.theme.transitionDelay}ms forwards;\n }\n `;\n\nconst contentInvisibleStyles = (p) =>\n !p.visible &&\n css`\n animation: ${contentFadeOut} ${p.theme.transitionDelay}ms forwards;\n ${m.min.xs} {\n animation: ${contentFadeOutXs} ${p.theme.transitionDelay}ms forwards;\n }\n `;\n\ntype ContentProps = Pick<ModalProps, 'visible' | 'size'>;\nconst Content = styled(\n 'div',\n omitEmotionProps('visible', 'size')\n)<ContentProps>`\n position: absolute;\n display: flex;\n flex-direction: column;\n padding-bottom: env(safe-area-inset-bottom);\n\n background-color: ${(p) => clr(p.theme.colorBg)};\n color: ${(p) => clr(p.theme.colorText)};\n box-shadow: 0 0 ${MODAL_BOX_SHADOW_SIZE_EM}em\n ${(p) => clr(p.theme.modalColorBoxShadow)};\n\n width: 100%;\n max-height: 100%;\n border-radius: ${(p) => p.theme.borderRadius}em\n ${(p) => p.theme.borderRadius}em 0 0;\n\n ${m.min.xs} {\n width: ${(p) => p.theme.modalWidth}em;\n max-height: unset;\n border-radius: ${(p) => p.theme.borderRadius}em;\n\n left: 50%;\n margin-left: ${(p) => -p.theme.modalWidth / 2}em;\n }\n\n ${contentVisibleStyles};\n ${contentInvisibleStyles}\n ${sizeStyles};\n`;\n\nconst Header = styled.div`\n flex-shrink: 0;\n height: ${(p) => p.theme.modalHeaderHeight}em;\n border-bottom: 1px solid ${(p) => clr(p.theme.modalHeaderColorBorderBottom)};\n box-sizing: border-box;\n\n display: flex;\n align-items: center;\n\n padding-left: ${(p) => p.theme.modalBodyPaddingHorizontal[0]}em;\n padding-right: ${(p) =>\n Math.max(\n p.theme.modalBodyPaddingHorizontal[1] - p.theme.buttonPaddingHorizontal,\n 0\n )}em;\n\n ${m.min.xs} {\n padding-left: ${(p) => p.theme.modalBodyPaddingHorizontal[1]}em;\n padding-right: ${(p) =>\n Math.max(\n p.theme.modalBodyPaddingHorizontal[1] - p.theme.buttonPaddingHorizontal,\n 0\n )}em;\n }\n`;\n\nconst Title = styled.div`\n flex: 1;\n font-size: ${(p) => p.theme.sizes.large}em;\n font-weight: 500;\n ${ellipsisStyles};\n`;\n\nconst Body = styled.div`\n flex-grow: 1;\n\n padding: ${(p) => p.theme.modalBodyPaddingVertical[0]}em\n ${(p) => p.theme.modalBodyPaddingHorizontal[0]}em;\n\n ${m.min.xs} {\n padding: ${(p) => p.theme.modalBodyPaddingVertical[1]}em\n ${(p) => p.theme.modalBodyPaddingHorizontal[1]}em;\n }\n\n ${enableScrollingStyles('y')};\n`;\n\nconst Footer = styled.div`\n padding: 0 ${(p) => p.theme.modalBodyPaddingHorizontal[0]}em\n ${(p) => p.theme.modalBodyPaddingVertical[0]}em;\n\n ${m.min.xs} {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n\n padding: 0 ${(p) => p.theme.modalBodyPaddingHorizontal[1]}em\n ${(p) => p.theme.modalBodyPaddingVertical[1]}em;\n }\n`;\n\n/**\n * The base pop-up window.\n */\nconst Modal = forwardRef<HTMLDivElement, ModalProps>(\n (\n {\n title,\n okText = 'OK',\n okDanger = false,\n okLoading = false,\n okDisabled = false,\n header,\n footer,\n visible = false,\n locale = defaultLocale,\n onClose = () => {},\n onOk,\n size,\n id,\n onClick = () => {},\n children,\n ...rest\n },\n ref\n ) => {\n const contentRef = useRef<HTMLDivElement>(null);\n const { theme } = useTheme();\n const mounted = useClosable(visible, theme.transitionDelay);\n useBodyScroll(!visible);\n useKeyPress(\n (typeof window !== 'undefined' ? window : undefined) as EventTarget,\n 'Escape',\n onClose\n );\n\n const titleId = useMemo(\n () => `modal-title-${Math.random().toString(36).slice(2, 11)}`,\n []\n );\n const bodyId = useMemo(\n () => id || `modal-body-${Math.random().toString(36).slice(2, 11)}`,\n [id]\n );\n\n if (!mounted) return null;\n\n return (\n <Portal>\n <ModalMask visible={visible} />\n <Container onClick={onClose}>\n <FocusLock autoFocus={false}>\n <Content\n visible={visible}\n size={size}\n onClick={(e) => {\n e.stopPropagation();\n onClick(e);\n }}\n role='dialog'\n aria-modal\n aria-labelledby={header === undefined ? titleId : undefined}\n aria-describedby={bodyId}\n ref={contentRef}\n >\n {header === undefined ? (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal:\n t.modalCloseButtonPaddingHorizontal,\n })}\n >\n <Header>\n <Title id={titleId}>{title}</Title>\n <Button\n type='ghost'\n wide='never'\n onClick={onClose}\n aria-label={locale.closeLabel}\n >\n <Close />\n </Button>\n </Header>\n </ThemeOverrider>\n ) : (\n header\n )}\n\n <Body id={bodyId} {...rest} ref={ref}>\n {children}\n </Body>\n\n {footer === undefined ? (\n <Footer>\n <Button\n danger={okDanger}\n loading={okLoading}\n disabled={okDisabled}\n onClick={onOk}\n >\n {okText}\n </Button>\n </Footer>\n ) : (\n footer\n )}\n </Content>\n </FocusLock>\n </Container>\n </Portal>\n );\n }\n);\n\nModal.displayName = 'Modal';\n\nexport default Modal;\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","forwardRef","useMemo","useRef","FocusLock","styled","useBodyScroll","useKeyPress","useClosable","omitEmotionProps","ellipsisStyles","enableScrollingStyles","sizeStyles","m","css","keyframes","Close","clr","ThemeOverrider","useTheme","Portal","Button","defaultLocale","MODAL_CONTAINER_Z_INDEX","MODAL_BOX_SHADOW_SIZE_EM","maskFadeIn","maskFadeOut","maskVisibleStyles","p","visible","theme","transitionDelay","maskInvisibleStyles","ModalMask","modalMaskColorBg","Container","div","min","xs","contentFadeIn","contentFadeOut","contentFadeInXs","contentFadeOutXs","contentVisibleStyles","contentInvisibleStyles","Content","colorBg","colorText","modalColorBoxShadow","borderRadius","modalWidth","Header","modalHeaderHeight","modalHeaderColorBorderBottom","modalBodyPaddingHorizontal","Math","max","buttonPaddingHorizontal","Title","sizes","large","Body","modalBodyPaddingVertical","Footer","Modal","title","okText","okDanger","okLoading","okDisabled","header","footer","locale","onClose","onOk","size","id","onClick","children","rest","ref","contentRef","mounted","window","undefined","titleId","random","toString","slice","bodyId","e","stopPropagation","t","modalCloseButtonPaddingHorizontal","closeLabel","displayName"],"sources":["../../../src/Modal/index.tsx"],"sourcesContent":["import React, { forwardRef, useMemo, useRef } from 'react';\nimport FocusLock from 'react-focus-lock';\nimport styled from '@emotion/styled';\nimport {\n useBodyScroll,\n useKeyPress,\n useClosable,\n omitEmotionProps,\n} from '@os-design/utils';\nimport {\n ellipsisStyles,\n enableScrollingStyles,\n sizeStyles,\n WithSize,\n} from '@os-design/styles';\nimport { m } from '@os-design/media';\nimport { css, keyframes } from '@emotion/react';\nimport { Close } from '@os-design/icons';\nimport { clr, ThemeOverrider, useTheme } from '@os-design/theming';\nimport Portal from '@os-design/portal';\nimport Button from '../Button';\nimport defaultLocale, { ModalLocale } from './utils/defaultLocale';\n\ntype JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'ref'>;\nexport interface ModalProps extends JsxDivProps, WithSize {\n /**\n * The title of the modal.\n * @default undefined\n */\n title?: string;\n /**\n * The text of the OK button.\n * @default OK\n */\n okText?: string;\n /**\n * Sets the danger styles to the OK button.\n * @default false\n */\n okDanger?: boolean;\n /**\n * Whether the OK button is loading.\n * @default false\n */\n okLoading?: boolean;\n /**\n * Whether the OK button is disabled.\n * @default false\n */\n okDisabled?: boolean;\n /**\n * The header component.\n * Set as null if you don't need the default header.\n * @default undefined\n */\n header?: React.ReactNode;\n /**\n * The footer component.\n * Set as null if you don't need the default footer.\n * @default undefined\n */\n footer?: React.ReactNode;\n /**\n * Whether the modal is visible.\n * @default false\n */\n visible?: boolean;\n /**\n * The locale of the modal.\n * @default undefined\n */\n locale?: ModalLocale;\n /**\n * Specifies a callback that will be called when a user clicks the mask or\n * the close button. The callback should set the visible state to false.\n * @default undefined\n */\n onClose?: () => void;\n /**\n * Specifies a callback that will be called when a user clicks the OK button.\n * @default undefined\n */\n onOk?: () => void;\n}\n\nconst MODAL_CONTAINER_Z_INDEX = 1000;\nconst MODAL_BOX_SHADOW_SIZE_EM = 1;\n\nconst maskFadeIn = keyframes`\n from { opacity: 0; }\n to { opacity: 1; }\n`;\n\nconst maskFadeOut = keyframes`\n from { opacity: 1; }\n to { opacity: 0; }\n`;\n\nconst maskVisibleStyles = (p) =>\n p.visible &&\n css`\n animation: ${maskFadeIn} ${p.theme.transitionDelay}ms forwards;\n `;\n\nconst maskInvisibleStyles = (p) =>\n !p.visible &&\n css`\n animation: ${maskFadeOut} ${p.theme.transitionDelay}ms forwards;\n `;\n\ntype MaskProps = Pick<ModalProps, 'visible'>;\nexport const ModalMask = styled('div', omitEmotionProps('visible'))<MaskProps>`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 100%;\n background-color: ${(p) => clr(p.theme.modalMaskColorBg)};\n z-index: ${MODAL_CONTAINER_Z_INDEX};\n ${maskVisibleStyles};\n ${maskInvisibleStyles};\n`;\n\nconst Container = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 100%;\n z-index: ${MODAL_CONTAINER_Z_INDEX};\n\n ${m.min.xs} {\n ${enableScrollingStyles('y')};\n }\n`;\n\nconst contentFadeIn = keyframes`\n from { transform: translateY(calc(var(--vh, 1vh) * 100 + ${MODAL_BOX_SHADOW_SIZE_EM}em)); }\n to { transform: translateY(calc(var(--vh, 1vh) * 100 - 100%)); }\n`;\n\nconst contentFadeOut = keyframes`\n from { transform: translateY(calc(var(--vh, 1vh) * 100 - 100%)); }\n to { transform: translateY(calc(var(--vh, 1vh) * 100 + ${MODAL_BOX_SHADOW_SIZE_EM}em)); }\n`;\n\nconst contentFadeInXs = keyframes`\n from { transform: translateY(calc(-100% - ${MODAL_BOX_SHADOW_SIZE_EM}em)); }\n to { transform: translateY(6em); }\n`;\n\nconst contentFadeOutXs = keyframes`\n from { transform: translateY(6em); }\n to { transform: translateY(calc(-100% - ${MODAL_BOX_SHADOW_SIZE_EM}em)); }\n`;\n\nconst contentVisibleStyles = (p) =>\n p.visible &&\n css`\n animation: ${contentFadeIn} ${p.theme.transitionDelay}ms forwards;\n ${m.min.xs} {\n animation: ${contentFadeInXs} ${p.theme.transitionDelay}ms forwards;\n }\n `;\n\nconst contentInvisibleStyles = (p) =>\n !p.visible &&\n css`\n animation: ${contentFadeOut} ${p.theme.transitionDelay}ms forwards;\n ${m.min.xs} {\n animation: ${contentFadeOutXs} ${p.theme.transitionDelay}ms forwards;\n }\n `;\n\ntype ContentProps = Pick<ModalProps, 'visible' | 'size'>;\nconst Content = styled(\n 'div',\n omitEmotionProps('visible', 'size')\n)<ContentProps>`\n position: absolute;\n display: flex;\n flex-direction: column;\n padding-bottom: env(safe-area-inset-bottom);\n\n background-color: ${(p) => clr(p.theme.colorBg)};\n color: ${(p) => clr(p.theme.colorText)};\n box-shadow: 0 0 ${MODAL_BOX_SHADOW_SIZE_EM}em\n ${(p) => clr(p.theme.modalColorBoxShadow)};\n\n width: 100%;\n max-height: 100%;\n border-radius: ${(p) => p.theme.borderRadius}em\n ${(p) => p.theme.borderRadius}em 0 0;\n\n ${m.min.xs} {\n width: ${(p) => p.theme.modalWidth}em;\n max-height: unset;\n border-radius: ${(p) => p.theme.borderRadius}em;\n\n left: 50%;\n margin-left: ${(p) => -p.theme.modalWidth / 2}em;\n }\n\n ${contentVisibleStyles};\n ${contentInvisibleStyles}\n ${sizeStyles};\n`;\n\nconst Header = styled.div`\n flex-shrink: 0;\n height: ${(p) => p.theme.modalHeaderHeight}em;\n border-bottom: 1px solid ${(p) => clr(p.theme.modalHeaderColorBorderBottom)};\n box-sizing: border-box;\n\n display: flex;\n align-items: center;\n\n padding-left: ${(p) => p.theme.modalBodyPaddingHorizontal[0]}em;\n padding-right: ${(p) =>\n Math.max(\n p.theme.modalBodyPaddingHorizontal[1] - p.theme.buttonPaddingHorizontal,\n 0\n )}em;\n\n ${m.min.xs} {\n padding-left: ${(p) => p.theme.modalBodyPaddingHorizontal[1]}em;\n padding-right: ${(p) =>\n Math.max(\n p.theme.modalBodyPaddingHorizontal[1] - p.theme.buttonPaddingHorizontal,\n 0\n )}em;\n }\n`;\n\nconst Title = styled.div`\n flex: 1;\n font-size: ${(p) => p.theme.sizes.large}em;\n font-weight: 500;\n ${ellipsisStyles};\n`;\n\nconst Body = styled.div`\n flex-grow: 1;\n\n padding: ${(p) => p.theme.modalBodyPaddingVertical[0]}em\n ${(p) => p.theme.modalBodyPaddingHorizontal[0]}em;\n\n ${m.min.xs} {\n padding: ${(p) => p.theme.modalBodyPaddingVertical[1]}em\n ${(p) => p.theme.modalBodyPaddingHorizontal[1]}em;\n }\n\n ${enableScrollingStyles('y')};\n`;\n\nconst Footer = styled.div`\n padding: 0 ${(p) => p.theme.modalBodyPaddingHorizontal[0]}em\n ${(p) => p.theme.modalBodyPaddingVertical[0]}em;\n\n ${m.min.xs} {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n\n padding: 0 ${(p) => p.theme.modalBodyPaddingHorizontal[1]}em\n ${(p) => p.theme.modalBodyPaddingVertical[1]}em;\n }\n`;\n\n/**\n * The base pop-up window.\n */\nconst Modal = forwardRef<HTMLDivElement, ModalProps>(\n (\n {\n title,\n okText = 'OK',\n okDanger = false,\n okLoading = false,\n okDisabled = false,\n header,\n footer,\n visible = false,\n locale = defaultLocale,\n onClose = () => {},\n onOk,\n size,\n id,\n onClick = () => {},\n children,\n ...rest\n },\n ref\n ) => {\n const contentRef = useRef<HTMLDivElement>(null);\n const { theme } = useTheme();\n const mounted = useClosable(visible, theme.transitionDelay);\n useBodyScroll(!visible);\n useKeyPress(\n (typeof window !== 'undefined' ? window : undefined) as EventTarget,\n 'Escape',\n onClose\n );\n\n const titleId = useMemo(\n () => `modal-title-${Math.random().toString(36).slice(2, 11)}`,\n []\n );\n const bodyId = useMemo(\n () => id || `modal-body-${Math.random().toString(36).slice(2, 11)}`,\n [id]\n );\n\n if (!mounted) return null;\n\n return (\n <Portal>\n <ModalMask visible={visible} />\n <Container onClick={onClose}>\n <FocusLock autoFocus={false}>\n <Content\n visible={visible}\n size={size}\n onClick={(e) => {\n e.stopPropagation();\n onClick(e);\n }}\n role='dialog'\n aria-modal\n aria-labelledby={header === undefined ? titleId : undefined}\n aria-describedby={bodyId}\n ref={contentRef}\n >\n {header === undefined ? (\n <ThemeOverrider\n overrides={(t) => ({\n buttonPaddingHorizontal:\n t.modalCloseButtonPaddingHorizontal,\n })}\n >\n <Header>\n <Title id={titleId}>{title}</Title>\n <Button\n type='ghost'\n wide='never'\n onClick={onClose}\n aria-label={locale.closeLabel}\n >\n <Close />\n </Button>\n </Header>\n </ThemeOverrider>\n ) : (\n header\n )}\n\n <Body id={bodyId} {...rest} ref={ref}>\n {children}\n </Body>\n\n {footer === undefined ? (\n <Footer>\n <Button\n danger={okDanger}\n loading={okLoading}\n disabled={okDisabled}\n onClick={onOk}\n >\n {okText}\n </Button>\n </Footer>\n ) : (\n footer\n )}\n </Content>\n </FocusLock>\n </Container>\n </Portal>\n );\n }\n);\n\nModal.displayName = 'Modal';\n\nexport default Modal;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,EAA4BC,OAA5B,EAAqCC,MAArC,QAAmD,OAAnD;AACA,OAAOC,SAAP,MAAsB,kBAAtB;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,SACEC,aADF,EAEEC,WAFF,EAGEC,WAHF,EAIEC,gBAJF,QAKO,kBALP;AAMA,SACEC,cADF,EAEEC,qBAFF,EAGEC,UAHF,QAKO,mBALP;AAMA,SAASC,CAAT,QAAkB,kBAAlB;AACA,SAASC,GAAT,EAAcC,SAAd,QAA+B,gBAA/B;AACA,SAASC,KAAT,QAAsB,kBAAtB;AACA,SAASC,GAAT,EAAcC,cAAd,EAA8BC,QAA9B,QAA8C,oBAA9C;AACA,OAAOC,MAAP,MAAmB,mBAAnB;AACA,OAAOC,MAAP,MAAmB,WAAnB;AACA,OAAOC,aAAP,MAA2C,uBAA3C;AAgEA,MAAMC,uBAAuB,GAAG,IAAhC;AACA,MAAMC,wBAAwB,GAAG,CAAjC;AAEA,MAAMC,UAAU,GAAGV,SAAU;AAC7B;AACA;AACA,CAHA;AAKA,MAAMW,WAAW,GAAGX,SAAU;AAC9B;AACA;AACA,CAHA;;AAKA,MAAMY,iBAAiB,GAAIC,CAAD,IACxBA,CAAC,CAACC,OAAF,IACAf,GAAI;AACN,iBAAiBW,UAAW,IAAGG,CAAC,CAACE,KAAF,CAAQC,eAAgB;AACvD,GAJA;;AAMA,MAAMC,mBAAmB,GAAIJ,CAAD,IAC1B,CAACA,CAAC,CAACC,OAAH,IACAf,GAAI;AACN,iBAAiBY,WAAY,IAAGE,CAAC,CAACE,KAAF,CAAQC,eAAgB;AACxD,GAJA;;AAOA,OAAO,MAAME,SAAS,GAAG5B,MAAM,CAAC,KAAD,EAAQI,gBAAgB,CAAC,SAAD,CAAxB,CAAgD;AAC/E;AACA;AACA;AACA;AACA;AACA,sBAAuBmB,CAAD,IAAOX,GAAG,CAACW,CAAC,CAACE,KAAF,CAAQI,gBAAT,CAA2B;AAC3D,aAAaX,uBAAwB;AACrC,IAAII,iBAAkB;AACtB,IAAIK,mBAAoB;AACxB,CAVO;AAYP,MAAMG,SAAS,GAAG9B,MAAM,CAAC+B,GAAI;AAC7B;AACA;AACA;AACA;AACA;AACA,aAAab,uBAAwB;AACrC;AACA,IAAIV,CAAC,CAACwB,GAAF,CAAMC,EAAG;AACb,MAAM3B,qBAAqB,CAAC,GAAD,CAAM;AACjC;AACA,CAXA;AAaA,MAAM4B,aAAa,GAAGxB,SAAU;AAChC,6DAA6DS,wBAAyB;AACtF;AACA,CAHA;AAKA,MAAMgB,cAAc,GAAGzB,SAAU;AACjC;AACA,2DAA2DS,wBAAyB;AACpF,CAHA;AAKA,MAAMiB,eAAe,GAAG1B,SAAU;AAClC,8CAA8CS,wBAAyB;AACvE;AACA,CAHA;AAKA,MAAMkB,gBAAgB,GAAG3B,SAAU;AACnC;AACA,4CAA4CS,wBAAyB;AACrE,CAHA;;AAKA,MAAMmB,oBAAoB,GAAIf,CAAD,IAC3BA,CAAC,CAACC,OAAF,IACAf,GAAI;AACN,iBAAiByB,aAAc,IAAGX,CAAC,CAACE,KAAF,CAAQC,eAAgB;AAC1D,MAAMlB,CAAC,CAACwB,GAAF,CAAMC,EAAG;AACf,mBAAmBG,eAAgB,IAAGb,CAAC,CAACE,KAAF,CAAQC,eAAgB;AAC9D;AACA,GAPA;;AASA,MAAMa,sBAAsB,GAAIhB,CAAD,IAC7B,CAACA,CAAC,CAACC,OAAH,IACAf,GAAI;AACN,iBAAiB0B,cAAe,IAAGZ,CAAC,CAACE,KAAF,CAAQC,eAAgB;AAC3D,MAAMlB,CAAC,CAACwB,GAAF,CAAMC,EAAG;AACf,mBAAmBI,gBAAiB,IAAGd,CAAC,CAACE,KAAF,CAAQC,eAAgB;AAC/D;AACA,GAPA;;AAUA,MAAMc,OAAO,GAAGxC,MAAM,CACpB,KADoB,EAEpBI,gBAAgB,CAAC,SAAD,EAAY,MAAZ,CAFI,CAGN;AAChB;AACA;AACA;AACA;AACA;AACA,sBAAuBmB,CAAD,IAAOX,GAAG,CAACW,CAAC,CAACE,KAAF,CAAQgB,OAAT,CAAkB;AAClD,WAAYlB,CAAD,IAAOX,GAAG,CAACW,CAAC,CAACE,KAAF,CAAQiB,SAAT,CAAoB;AACzC,oBAAoBvB,wBAAyB;AAC7C,MAAOI,CAAD,IAAOX,GAAG,CAACW,CAAC,CAACE,KAAF,CAAQkB,mBAAT,CAA8B;AAC9C;AACA;AACA;AACA,mBAAoBpB,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQmB,YAAa;AAC/C,MAAOrB,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQmB,YAAa;AAClC;AACA,IAAIpC,CAAC,CAACwB,GAAF,CAAMC,EAAG;AACb,aAAcV,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQoB,UAAW;AACvC;AACA,qBAAsBtB,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQmB,YAAa;AACjD;AACA;AACA,mBAAoBrB,CAAD,IAAO,CAACA,CAAC,CAACE,KAAF,CAAQoB,UAAT,GAAsB,CAAE;AAClD;AACA;AACA,IAAIP,oBAAqB;AACzB,IAAIC,sBAAuB;AAC3B,IAAIhC,UAAW;AACf,CA/BA;AAiCA,MAAMuC,MAAM,GAAG9C,MAAM,CAAC+B,GAAI;AAC1B;AACA,YAAaR,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQsB,iBAAkB;AAC7C,6BAA8BxB,CAAD,IAAOX,GAAG,CAACW,CAAC,CAACE,KAAF,CAAQuB,4BAAT,CAAuC;AAC9E;AACA;AACA;AACA;AACA;AACA,kBAAmBzB,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQwB,0BAAR,CAAmC,CAAnC,CAAsC;AAC/D,mBAAoB1B,CAAD,IACf2B,IAAI,CAACC,GAAL,CACE5B,CAAC,CAACE,KAAF,CAAQwB,0BAAR,CAAmC,CAAnC,IAAwC1B,CAAC,CAACE,KAAF,CAAQ2B,uBADlD,EAEE,CAFF,CAGE;AACN;AACA,IAAI5C,CAAC,CAACwB,GAAF,CAAMC,EAAG;AACb,oBAAqBV,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQwB,0BAAR,CAAmC,CAAnC,CAAsC;AACjE,qBAAsB1B,CAAD,IACf2B,IAAI,CAACC,GAAL,CACE5B,CAAC,CAACE,KAAF,CAAQwB,0BAAR,CAAmC,CAAnC,IAAwC1B,CAAC,CAACE,KAAF,CAAQ2B,uBADlD,EAEE,CAFF,CAGE;AACR;AACA,CAxBA;AA0BA,MAAMC,KAAK,GAAGrD,MAAM,CAAC+B,GAAI;AACzB;AACA,eAAgBR,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQ6B,KAAR,CAAcC,KAAM;AAC1C;AACA,IAAIlD,cAAe;AACnB,CALA;AAOA,MAAMmD,IAAI,GAAGxD,MAAM,CAAC+B,GAAI;AACxB;AACA;AACA,aAAcR,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQgC,wBAAR,CAAiC,CAAjC,CAAoC;AACxD,MAAOlC,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQwB,0BAAR,CAAmC,CAAnC,CAAsC;AACnD;AACA,IAAIzC,CAAC,CAACwB,GAAF,CAAMC,EAAG;AACb,eAAgBV,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQgC,wBAAR,CAAiC,CAAjC,CAAoC;AAC1D,QAASlC,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQwB,0BAAR,CAAmC,CAAnC,CAAsC;AACrD;AACA;AACA,IAAI3C,qBAAqB,CAAC,GAAD,CAAM;AAC/B,CAZA;AAcA,MAAMoD,MAAM,GAAG1D,MAAM,CAAC+B,GAAI;AAC1B,eAAgBR,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQwB,0BAAR,CAAmC,CAAnC,CAAsC;AAC5D,MAAO1B,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQgC,wBAAR,CAAiC,CAAjC,CAAoC;AACjD;AACA,IAAIjD,CAAC,CAACwB,GAAF,CAAMC,EAAG;AACb;AACA;AACA;AACA;AACA,iBAAkBV,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQwB,0BAAR,CAAmC,CAAnC,CAAsC;AAC9D,QAAS1B,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQgC,wBAAR,CAAiC,CAAjC,CAAoC;AACnD;AACA,CAZA;AAcA;AACA;AACA;;AACA,MAAME,KAAK,gBAAG/D,UAAU,CACtB,CACE;EACEgE,KADF;EAEEC,MAAM,GAAG,IAFX;EAGEC,QAAQ,GAAG,KAHb;EAIEC,SAAS,GAAG,KAJd;EAKEC,UAAU,GAAG,KALf;EAMEC,MANF;EAOEC,MAPF;EAQE1C,OAAO,GAAG,KARZ;EASE2C,MAAM,GAAGlD,aATX;EAUEmD,OAAO,GAAG,MAAM,CAAE,CAVpB;EAWEC,IAXF;EAYEC,IAZF;EAaEC,EAbF;EAcEC,OAAO,GAAG,MAAM,CAAE,CAdpB;EAeEC,QAfF;EAgBE,GAAGC;AAhBL,CADF,EAmBEC,GAnBF,KAoBK;EACH,MAAMC,UAAU,GAAG9E,MAAM,CAAiB,IAAjB,CAAzB;EACA,MAAM;IAAE2B;EAAF,IAAYX,QAAQ,EAA1B;EACA,MAAM+D,OAAO,GAAG1E,WAAW,CAACqB,OAAD,EAAUC,KAAK,CAACC,eAAhB,CAA3B;EACAzB,aAAa,CAAC,CAACuB,OAAF,CAAb;EACAtB,WAAW,CACR,OAAO4E,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyCC,SADjC,EAET,QAFS,EAGTX,OAHS,CAAX;EAMA,MAAMY,OAAO,GAAGnF,OAAO,CACrB,MAAO,eAAcqD,IAAI,CAAC+B,MAAL,GAAcC,QAAd,CAAuB,EAAvB,EAA2BC,KAA3B,CAAiC,CAAjC,EAAoC,EAApC,CAAwC,EADxC,EAErB,EAFqB,CAAvB;EAIA,MAAMC,MAAM,GAAGvF,OAAO,CACpB,MAAM0E,EAAE,IAAK,cAAarB,IAAI,CAAC+B,MAAL,GAAcC,QAAd,CAAuB,EAAvB,EAA2BC,KAA3B,CAAiC,CAAjC,EAAoC,EAApC,CAAwC,EAD9C,EAEpB,CAACZ,EAAD,CAFoB,CAAtB;EAKA,IAAI,CAACM,OAAL,EAAc,OAAO,IAAP;EAEd,oBACE,oBAAC,MAAD,qBACE,oBAAC,SAAD;IAAW,OAAO,EAAErD;EAApB,EADF,eAEE,oBAAC,SAAD;IAAW,OAAO,EAAE4C;EAApB,gBACE,oBAAC,SAAD;IAAW,SAAS,EAAE;EAAtB,gBACE,oBAAC,OAAD;IACE,OAAO,EAAE5C,OADX;IAEE,IAAI,EAAE8C,IAFR;IAGE,OAAO,EAAGe,CAAD,IAAO;MACdA,CAAC,CAACC,eAAF;MACAd,OAAO,CAACa,CAAD,CAAP;IACD,CANH;IAOE,IAAI,EAAC,QAPP;IAQE,kBARF;IASE,mBAAiBpB,MAAM,KAAKc,SAAX,GAAuBC,OAAvB,GAAiCD,SATpD;IAUE,oBAAkBK,MAVpB;IAWE,GAAG,EAAER;EAXP,GAaGX,MAAM,KAAKc,SAAX,gBACC,oBAAC,cAAD;IACE,SAAS,EAAGQ,CAAD,KAAQ;MACjBnC,uBAAuB,EACrBmC,CAAC,CAACC;IAFa,CAAR;EADb,gBAME,oBAAC,MAAD,qBACE,oBAAC,KAAD;IAAO,EAAE,EAAER;EAAX,GAAqBpB,KAArB,CADF,eAEE,oBAAC,MAAD;IACE,IAAI,EAAC,OADP;IAEE,IAAI,EAAC,OAFP;IAGE,OAAO,EAAEQ,OAHX;IAIE,cAAYD,MAAM,CAACsB;EAJrB,gBAME,oBAAC,KAAD,OANF,CAFF,CANF,CADD,GAoBCxB,MAjCJ,eAoCE,oBAAC,IAAD;IAAM,EAAE,EAAEmB;EAAV,GAAsBV,IAAtB;IAA4B,GAAG,EAAEC;EAAjC,IACGF,QADH,CApCF,EAwCGP,MAAM,KAAKa,SAAX,gBACC,oBAAC,MAAD,qBACE,oBAAC,MAAD;IACE,MAAM,EAAEjB,QADV;IAEE,OAAO,EAAEC,SAFX;IAGE,QAAQ,EAAEC,UAHZ;IAIE,OAAO,EAAEK;EAJX,GAMGR,MANH,CADF,CADD,GAYCK,MApDJ,CADF,CADF,CAFF,CADF;AAgED,CA3GqB,CAAxB;AA8GAP,KAAK,CAAC+B,WAAN,GAAoB,OAApB;AAEA,eAAe/B,KAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"defaultLocale.js","names":["defaultLocale","closeLabel"],"sources":["../../../../src/Modal/utils/defaultLocale.ts"],"sourcesContent":["export interface ModalLocale {\n closeLabel: string;\n}\n\nconst defaultLocale: ModalLocale = {\n closeLabel: 'Close',\n};\n\nexport default defaultLocale;\n"],"mappings":"AAIA,MAAMA,aAA0B,GAAG;EACjCC,UAAU,EAAE;AADqB,CAAnC;AAIA,eAAeD,aAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","forwardRef","useRef","enableScrollingStyles","omitEmotionProps","styled","clr","m","css","useScrollFlags","Container","div","p","theme","navigationColorBg","navigationColorText","navigationTabHeight","navigationColorBorder","min","md","navigationSideWidth","notHasSideTopStyles","hasSideTop","pageHeaderHeight","hasPrevStyles","hasPrev","hasNext","navigationMaskImageSize","hasNextStyles","hasPrevNextStyles","Content","Addon","BottomAddon","Navigation","sideTop","sideBottom","children","rest","ref","contentRef","displayName"],"sources":["../../../src/Navigation/index.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from 'react';\nimport { enableScrollingStyles } from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport styled from '@emotion/styled';\nimport { clr } from '@os-design/theming';\nimport { m } from '@os-design/media';\nimport { css } from '@emotion/react';\nimport useScrollFlags from './utils/useScrollFlags';\n\ntype JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'ref'>;\nexport interface NavigationProps extends JsxDivProps {\n /**\n * The top component in the side navigator.\n * E.g. the user avatar.\n * @default undefined\n */\n sideTop?: React.ReactNode;\n /**\n * The bottom component in the side navigator.\n * E.g. the current tariff.\n * @default undefined\n */\n sideBottom?: React.ReactNode;\n}\n\nconst Container = styled.div`\n position: fixed;\n box-sizing: border-box;\n z-index: 101;\n\n background-color: ${(p) => clr(p.theme.navigationColorBg)};\n color: ${(p) => clr(p.theme.navigationColorText)};\n\n // Tab navigator\n bottom: 0;\n left: 0;\n right: 0;\n height: calc(\n ${(p) => p.theme.navigationTabHeight}em + env(safe-area-inset-bottom)\n );\n border-top: 1px solid ${(p) => clr(p.theme.navigationColorBorder)};\n\n // Side navigator\n ${m.min.md} {\n // Reset tab navigator styles\n right: unset;\n height: unset;\n border-top: unset;\n\n left: 0;\n top: 0;\n bottom: 0;\n width: ${(p) => p.theme.navigationSideWidth}em;\n border-right: 1px solid ${(p) => clr(p.theme.navigationColorBorder)};\n }\n`;\n\nconst notHasSideTopStyles = (p) =>\n !p.hasSideTop &&\n css`\n padding-top: ${p.theme.pageHeaderHeight[1]}em;\n `;\n\nconst hasPrevStyles = (p) =>\n p.hasPrev &&\n !p.hasNext &&\n css`\n mask-image: linear-gradient(\n to right,\n transparent,\n white ${p.theme.navigationMaskImageSize}em\n );\n ${m.min.md} {\n mask-image: linear-gradient(\n to bottom,\n transparent,\n white ${p.theme.navigationMaskImageSize}em\n );\n }\n `;\n\nconst hasNextStyles = (p) =>\n !p.hasPrev &&\n p.hasNext &&\n css`\n mask-image: linear-gradient(\n to left,\n transparent,\n white ${p.theme.navigationMaskImageSize}em\n );\n ${m.min.md} {\n mask-image: linear-gradient(\n to top,\n transparent,\n white ${p.theme.navigationMaskImageSize}em\n );\n }\n `;\n\nconst hasPrevNextStyles = (p) =>\n p.hasPrev &&\n p.hasNext &&\n css`\n mask-image: linear-gradient(\n to right,\n transparent,\n white ${p.theme.navigationMaskImageSize}em,\n white calc(100% - ${p.theme.navigationMaskImageSize}em),\n transparent\n );\n ${m.min.md} {\n mask-image: linear-gradient(\n to bottom,\n transparent,\n white ${p.theme.navigationMaskImageSize}em,\n white calc(100% - ${p.theme.navigationMaskImageSize}em),\n transparent\n );\n }\n `;\n\ninterface ContentProps {\n hasSideTop: boolean;\n hasPrev: boolean;\n hasNext: boolean;\n}\nconst Content = styled(\n 'div',\n omitEmotionProps('hasSideTop', 'hasPrev', 'hasNext')\n)<ContentProps>`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: flex-start;\n &::before,\n &::after {\n content: ''; // Insert space before the first item and after the last one\n }\n\n overflow-y: hidden;\n ${enableScrollingStyles('x', false)};\n\n ${m.min.md} {\n // Reset tab navigator styles\n justify-content: unset;\n align-items: unset;\n\n flex-direction: column;\n\n overflow-x: hidden;\n ${enableScrollingStyles('y', false)};\n\n ${notHasSideTopStyles};\n }\n\n ${hasPrevStyles};\n ${hasNextStyles};\n ${hasPrevNextStyles};\n`;\n\nconst Addon = styled.div`\n display: none;\n ${m.min.md} {\n display: block;\n }\n`;\n\nconst BottomAddon = styled(Addon)`\n margin-top: auto;\n`;\n\n/**\n * The main navigation.\n */\nconst Navigation = forwardRef<HTMLDivElement, NavigationProps>(\n ({ sideTop, sideBottom, children, ...rest }, ref) => {\n const contentRef = useRef<HTMLDivElement>(null);\n const { hasPrev, hasNext } = useScrollFlags(contentRef);\n\n return (\n <Container\n role='navigation'\n aria-label='Main navigation'\n {...rest}\n ref={ref}\n >\n <Content\n hasSideTop={!!sideTop}\n hasPrev={hasPrev}\n hasNext={hasNext}\n ref={contentRef}\n role='list'\n >\n {sideTop && <Addon>{sideTop}</Addon>}\n {children}\n {sideBottom && <BottomAddon>{sideBottom}</BottomAddon>}\n </Content>\n </Container>\n );\n }\n);\n\nNavigation.displayName = 'Navigation';\n\nexport default Navigation;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"useScrollFlags.js","names":["useCallback","useState","useEvent","useBrowserLayoutEffect","useIsMinWidth","useScrollFlags","ref","hasPrev","setHasPrev","hasNext","setHasNext","isMinMd","scrollHandler","current","window","undefined"],"sources":["../../../../src/Navigation/utils/useScrollFlags.ts"],"sourcesContent":["import { RefObject, useCallback, useState } from 'react';\nimport { useEvent, useBrowserLayoutEffect } from '@os-design/utils';\nimport { useIsMinWidth } from '@os-design/media';\n\ninterface UseScrollFlagsRes {\n hasPrev: boolean;\n hasNext: boolean;\n}\n\nconst useScrollFlags = (ref: RefObject<Element>): UseScrollFlagsRes => {\n const [hasPrev, setHasPrev] = useState(false);\n const [hasNext, setHasNext] = useState(false);\n const isMinMd = useIsMinWidth('md');\n\n const scrollHandler = useCallback(() => {\n const { current } = ref;\n if (!current) return;\n\n setHasPrev(current[isMinMd ? 'scrollTop' : 'scrollLeft'] > 0);\n setHasNext(\n current[isMinMd ? 'scrollHeight' : 'scrollWidth'] -\n current[isMinMd ? 'scrollTop' : 'scrollLeft'] -\n current[isMinMd ? 'clientHeight' : 'clientWidth'] >\n 0\n );\n }, [ref, isMinMd]);\n\n useBrowserLayoutEffect(() => scrollHandler(), [scrollHandler]);\n useEvent(ref, 'scroll', scrollHandler);\n useEvent(\n (typeof window !== 'undefined' ? window : undefined) as EventTarget,\n 'resize',\n scrollHandler\n );\n\n return { hasPrev, hasNext };\n};\n\nexport default useScrollFlags;\n"],"mappings":"AAAA,SAAoBA,WAApB,EAAiCC,QAAjC,QAAiD,OAAjD;AACA,SAASC,QAAT,EAAmBC,sBAAnB,QAAiD,kBAAjD;AACA,SAASC,aAAT,QAA8B,kBAA9B;;AAOA,MAAMC,cAAc,GAAIC,GAAD,IAAgD;EACrE,MAAM,CAACC,OAAD,EAAUC,UAAV,IAAwBP,QAAQ,CAAC,KAAD,CAAtC;EACA,MAAM,CAACQ,OAAD,EAAUC,UAAV,IAAwBT,QAAQ,CAAC,KAAD,CAAtC;EACA,MAAMU,OAAO,GAAGP,aAAa,CAAC,IAAD,CAA7B;EAEA,MAAMQ,aAAa,GAAGZ,WAAW,CAAC,MAAM;IACtC,MAAM;MAAEa;IAAF,IAAcP,GAApB;IACA,IAAI,CAACO,OAAL,EAAc;IAEdL,UAAU,CAACK,OAAO,CAACF,OAAO,GAAG,WAAH,GAAiB,YAAzB,CAAP,GAAgD,CAAjD,CAAV;IACAD,UAAU,CACRG,OAAO,CAACF,OAAO,GAAG,cAAH,GAAoB,aAA5B,CAAP,GACEE,OAAO,CAACF,OAAO,GAAG,WAAH,GAAiB,YAAzB,CADT,GAEEE,OAAO,CAACF,OAAO,GAAG,cAAH,GAAoB,aAA5B,CAFT,GAGE,CAJM,CAAV;EAMD,CAXgC,EAW9B,CAACL,GAAD,EAAMK,OAAN,CAX8B,CAAjC;EAaAR,sBAAsB,CAAC,MAAMS,aAAa,EAApB,EAAwB,CAACA,aAAD,CAAxB,CAAtB;EACAV,QAAQ,CAACI,GAAD,EAAM,QAAN,EAAgBM,aAAhB,CAAR;EACAV,QAAQ,CACL,OAAOY,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyCC,SADpC,EAEN,QAFM,EAGNH,aAHM,CAAR;EAMA,OAAO;IAAEL,OAAF;IAAWE;EAAX,CAAP;AACD,CA3BD;;AA6BA,eAAeJ,cAAf"}
|