@os-design/core 1.0.134 → 1.0.137
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 -4
- 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 +4 -6
- 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 -4
- 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 +3 -5
- 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 +3 -5
- 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 +4 -6
- 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/List/index.d.ts.map +1 -1
- package/dist/types/RadioGroup/index.d.ts.map +1 -1
- package/dist/types/Select/SelectList.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","forwardRef","useCallback","Up","Down","styled","useClosable","omitEmotionProps","clr","ThemeOverrider","useTheme","css","keyframes","Portal","Button","useContainerPosition","useVisibility","fadeIn","fadeOut","visibleStyles","p","visible","theme","transitionDelay","invisibleStyles","StyledButton","containerPosition","right","scrollButtonMargin","bottom","scrollButtonColorBoxShadow","ScrollButton","container","scrollTo","minOffset","onClick","rest","ref","mounted","clickHandler","e","window","top","document","body","scrollHeight","containerElement","Element","current","t","buttonPrimaryColorBg","scrollButtonColorBg","buttonPrimaryColorText","scrollButtonColorText","buttonPrimaryColorBgHover","scrollButtonColorBgHover","displayName"],"sources":["../../../src/ScrollButton/index.tsx"],"sourcesContent":["import React, {\n forwardRef,\n MouseEventHandler,\n RefObject,\n useCallback,\n} from 'react';\nimport { Up, Down } from '@os-design/icons';\nimport styled from '@emotion/styled';\nimport { useClosable, omitEmotionProps } from '@os-design/utils';\nimport { clr, ThemeOverrider, useTheme } from '@os-design/theming';\nimport { css, keyframes } from '@emotion/react';\nimport Portal from '@os-design/portal';\nimport Button, { ButtonProps } from '../Button';\nimport useContainerPosition, {\n ContainerPosition,\n} from './utils/useContainerPosition';\nimport useVisibility from './utils/useVisibility';\n\nexport interface ScrollButtonProps extends Omit<ButtonProps, 'type' | 'wide'> {\n /**\n * The container that needs to be scrolled.\n * @default undefined\n */\n container?: Element | RefObject<Element>;\n /**\n * Where the container should be scrolled.\n * @default top\n */\n scrollTo?: 'top' | 'bottom';\n /**\n * The min scroll offset when the button is visible.\n * @default 500\n */\n minOffset?: number;\n}\n\nconst fadeIn = keyframes`\n from { opacity: 0; }\n to { opacity: 1; }\n`;\n\nconst fadeOut = keyframes`\n from { opacity: 1; }\n to { opacity: 0; }\n`;\n\nconst visibleStyles = (p) =>\n p.visible &&\n css`\n animation: ${fadeIn} ${p.theme.transitionDelay}ms forwards;\n `;\n\nconst invisibleStyles = (p) =>\n !p.visible &&\n css`\n animation: ${fadeOut} ${p.theme.transitionDelay}ms forwards;\n `;\n\ninterface StyledButtonProps {\n visible: boolean;\n containerPosition: ContainerPosition;\n}\nconst StyledButton = styled(\n Button,\n omitEmotionProps('visible', 'containerPosition')\n)<StyledButtonProps>`\n position: fixed;\n right: ${(p) =>\n p.containerPosition.right > 0\n ? `calc(${p.containerPosition.right}px + ${p.theme.scrollButtonMargin}em)`\n : `${p.theme.scrollButtonMargin}em`};\n bottom: ${(p) =>\n `calc(${\n p.containerPosition.bottom > 0 ? `${p.containerPosition.bottom}px + ` : ''\n }${p.theme.scrollButtonMargin}em + env(safe-area-inset-bottom))`};\n box-shadow: 0 0.15em 0.8em ${(p) => clr(p.theme.scrollButtonColorBoxShadow)};\n\n ${visibleStyles};\n ${invisibleStyles};\n`;\n\n/**\n * The button to scroll to either the top or bottom of the container.\n */\nconst ScrollButton = forwardRef<HTMLButtonElement, ScrollButtonProps>(\n (\n {\n container,\n scrollTo = 'top',\n minOffset = 500,\n onClick = () => {},\n ...rest\n },\n ref\n ) => {\n const visible = useVisibility({ container, scrollTo, minOffset });\n const containerPosition = useContainerPosition(container);\n const { theme } = useTheme();\n const mounted = useClosable(visible, theme.transitionDelay);\n\n // Scroll through the container when the user clicks the button\n const clickHandler = useCallback<MouseEventHandler<HTMLButtonElement>>(\n (e) => {\n // Scroll the window if the container is not defined\n if (!container) {\n window.scrollTo({\n top: scrollTo === 'top' ? 0 : document.body.scrollHeight,\n });\n return;\n }\n\n // Otherwise scroll the container\n const containerElement =\n container instanceof Element ? container : container.current;\n if (!containerElement) return;\n\n containerElement.scrollTo({\n top: scrollTo === 'top' ? 0 : containerElement.scrollHeight,\n });\n\n // Call the passed onClick handler\n onClick(e);\n },\n [container, scrollTo, onClick]\n );\n\n if (!mounted) return null;\n\n return (\n <Portal container={container}>\n <ThemeOverrider\n overrides={(t) => ({\n buttonPrimaryColorBg: t.scrollButtonColorBg,\n buttonPrimaryColorText: t.scrollButtonColorText,\n buttonPrimaryColorBgHover: t.scrollButtonColorBgHover,\n })}\n >\n <StyledButton\n visible={visible}\n containerPosition={containerPosition}\n wide='never'\n size='small'\n onClick={clickHandler}\n aria-label={`Scroll to ${scrollTo}`}\n {...rest}\n ref={ref}\n >\n {scrollTo === 'top' ? <Up /> : <Down />}\n </StyledButton>\n </ThemeOverrider>\n </Portal>\n );\n }\n);\n\nScrollButton.displayName = 'ScrollButton';\n\nexport default ScrollButton;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"useContainerPosition.js","names":["useCallback","useState","useResizeObserver","useBrowserLayoutEffect","useContainerPosition","container","position","setPosition","right","bottom","updatePosition","element","Element","current","getBoundingClientRect","innerWidth","innerHeight","window"],"sources":["../../../../src/ScrollButton/utils/useContainerPosition.ts"],"sourcesContent":["import { RefObject, useCallback, useState } from 'react';\nimport { useResizeObserver, useBrowserLayoutEffect } from '@os-design/utils';\n\nexport interface ContainerPosition {\n right: number;\n bottom: number;\n}\n\n/**\n * Calculates the position of the container.\n */\nconst useContainerPosition = (\n container?: Element | RefObject<Element>\n): ContainerPosition => {\n const [position, setPosition] = useState<ContainerPosition>({\n right: 0,\n bottom: 0,\n });\n\n const updatePosition = useCallback(() => {\n if (!container) return;\n const element =\n container instanceof Element ? container : container.current;\n if (!element) return;\n\n const { right, bottom } = element.getBoundingClientRect();\n const { innerWidth, innerHeight } = window;\n\n setPosition({\n right: innerWidth - right,\n bottom: innerHeight - bottom,\n });\n }, [container]);\n\n useBrowserLayoutEffect(() => updatePosition(), [updatePosition]);\n useResizeObserver(container as never, updatePosition);\n\n return position;\n};\n\nexport default useContainerPosition;\n"],"mappings":"AAAA,SAAoBA,WAApB,EAAiCC,QAAjC,QAAiD,OAAjD;AACA,SAASC,iBAAT,EAA4BC,sBAA5B,QAA0D,kBAA1D;;AAOA;AACA;AACA;AACA,MAAMC,oBAAoB,GACxBC,SAD2B,IAEL;EACtB,MAAM,CAACC,QAAD,EAAWC,WAAX,IAA0BN,QAAQ,CAAoB;IAC1DO,KAAK,EAAE,CADmD;IAE1DC,MAAM,EAAE;EAFkD,CAApB,CAAxC;EAKA,MAAMC,cAAc,GAAGV,WAAW,CAAC,MAAM;IACvC,IAAI,CAACK,SAAL,EAAgB;IAChB,MAAMM,OAAO,GACXN,SAAS,YAAYO,OAArB,GAA+BP,SAA/B,GAA2CA,SAAS,CAACQ,OADvD;IAEA,IAAI,CAACF,OAAL,EAAc;IAEd,MAAM;MAAEH,KAAF;MAASC;IAAT,IAAoBE,OAAO,CAACG,qBAAR,EAA1B;IACA,MAAM;MAAEC,UAAF;MAAcC;IAAd,IAA8BC,MAApC;IAEAV,WAAW,CAAC;MACVC,KAAK,EAAEO,UAAU,GAAGP,KADV;MAEVC,MAAM,EAAEO,WAAW,GAAGP;IAFZ,CAAD,CAAX;EAID,CAbiC,EAa/B,CAACJ,SAAD,CAb+B,CAAlC;EAeAF,sBAAsB,CAAC,MAAMO,cAAc,EAArB,EAAyB,CAACA,cAAD,CAAzB,CAAtB;EACAR,iBAAiB,CAACG,SAAD,EAAqBK,cAArB,CAAjB;EAEA,OAAOJ,QAAP;AACD,CA3BD;;AA6BA,eAAeF,oBAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"useVisibility.js","names":["useCallback","useState","useEvent","useBrowserLayoutEffect","useVisibility","container","scrollTo","minOffset","visible","setVisible","updateVisibility","offset","window","scrollY","document","body","scrollHeight","innerHeight","containerElement","Element","current","scrollTop","clientHeight","undefined"],"sources":["../../../../src/ScrollButton/utils/useVisibility.ts"],"sourcesContent":["import { RefObject, useCallback, useState } from 'react';\nimport { useEvent, useBrowserLayoutEffect } from '@os-design/utils';\n\ninterface UseVisibilityProps {\n container?: Element | RefObject<Element>;\n scrollTo: 'top' | 'bottom';\n minOffset: number;\n}\n\n/**\n * Controls the visibility of the button.\n */\nconst useVisibility = ({\n container,\n scrollTo,\n minOffset,\n}: UseVisibilityProps): boolean => {\n const [visible, setVisible] = useState(false);\n\n // Update the visibility of the button when the user scrolls the container\n const updateVisibility = useCallback(() => {\n let offset = 0;\n\n if (!container) {\n offset =\n scrollTo === 'top'\n ? window.scrollY\n : document.body.scrollHeight - window.scrollY - window.innerHeight;\n } else {\n const containerElement =\n container instanceof Element ? container : container.current;\n if (containerElement === null) return;\n\n offset =\n scrollTo === 'top'\n ? containerElement.scrollTop\n : containerElement.scrollHeight -\n containerElement.scrollTop -\n containerElement.clientHeight;\n }\n\n setVisible(offset >= minOffset);\n }, [container, scrollTo, minOffset]);\n\n useBrowserLayoutEffect(() => updateVisibility(), [updateVisibility]);\n useEvent(\n container ||\n ((typeof window !== 'undefined' ? window : undefined) as EventTarget),\n 'scroll',\n updateVisibility\n );\n\n return visible;\n};\n\nexport default useVisibility;\n"],"mappings":"AAAA,SAAoBA,WAApB,EAAiCC,QAAjC,QAAiD,OAAjD;AACA,SAASC,QAAT,EAAmBC,sBAAnB,QAAiD,kBAAjD;;AAQA;AACA;AACA;AACA,MAAMC,aAAa,GAAG,CAAC;EACrBC,SADqB;EAErBC,QAFqB;EAGrBC;AAHqB,CAAD,KAIa;EACjC,MAAM,CAACC,OAAD,EAAUC,UAAV,IAAwBR,QAAQ,CAAC,KAAD,CAAtC,CADiC,CAGjC;;EACA,MAAMS,gBAAgB,GAAGV,WAAW,CAAC,MAAM;IACzC,IAAIW,MAAM,GAAG,CAAb;;IAEA,IAAI,CAACN,SAAL,EAAgB;MACdM,MAAM,GACJL,QAAQ,KAAK,KAAb,GACIM,MAAM,CAACC,OADX,GAEIC,QAAQ,CAACC,IAAT,CAAcC,YAAd,GAA6BJ,MAAM,CAACC,OAApC,GAA8CD,MAAM,CAACK,WAH3D;IAID,CALD,MAKO;MACL,MAAMC,gBAAgB,GACpBb,SAAS,YAAYc,OAArB,GAA+Bd,SAA/B,GAA2CA,SAAS,CAACe,OADvD;MAEA,IAAIF,gBAAgB,KAAK,IAAzB,EAA+B;MAE/BP,MAAM,GACJL,QAAQ,KAAK,KAAb,GACIY,gBAAgB,CAACG,SADrB,GAEIH,gBAAgB,CAACF,YAAjB,GACAE,gBAAgB,CAACG,SADjB,GAEAH,gBAAgB,CAACI,YALvB;IAMD;;IAEDb,UAAU,CAACE,MAAM,IAAIJ,SAAX,CAAV;EACD,CAtBmC,EAsBjC,CAACF,SAAD,EAAYC,QAAZ,EAAsBC,SAAtB,CAtBiC,CAApC;EAwBAJ,sBAAsB,CAAC,MAAMO,gBAAgB,EAAvB,EAA2B,CAACA,gBAAD,CAA3B,CAAtB;EACAR,QAAQ,CACNG,SAAS,KACL,OAAOO,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyCW,SADpC,CADH,EAGN,QAHM,EAINb,gBAJM,CAAR;EAOA,OAAOF,OAAP;AACD,CAzCD;;AA2CA,eAAeJ,aAAf"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
2
|
|
|
3
|
-
import React, {
|
|
3
|
+
import React, { useCallback, useMemo } from 'react';
|
|
4
4
|
import { FixedSizeList } from 'react-window';
|
|
5
5
|
import { useFontSize, useSize } from '@os-design/utils';
|
|
6
6
|
import { useTheme } from '@os-design/theming';
|
|
@@ -66,18 +66,16 @@ const SelectList = ({
|
|
|
66
66
|
maxSelectedItems
|
|
67
67
|
}); // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
68
68
|
|
|
69
|
-
const InnerElement =
|
|
69
|
+
const InnerElement = useCallback(({
|
|
70
70
|
style,
|
|
71
71
|
...innerElementRest
|
|
72
|
-
}
|
|
73
|
-
ref: innerElementRef,
|
|
72
|
+
}) => /*#__PURE__*/React.createElement("div", _extends({
|
|
74
73
|
style: { ...style,
|
|
75
74
|
height: `${parseFloat(style.height) + paddingTop + paddingBottom}px`
|
|
76
75
|
},
|
|
77
76
|
role: "listbox",
|
|
78
77
|
id: id
|
|
79
|
-
}, innerElementRest)));
|
|
80
|
-
InnerElement.displayName = 'InnerElement';
|
|
78
|
+
}, innerElementRest)), [id, paddingBottom, paddingTop]);
|
|
81
79
|
const listItemFn = useCallback(({
|
|
82
80
|
index,
|
|
83
81
|
style
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/Select/SelectList.tsx"],"names":["React","forwardRef","useCallback","useMemo","FixedSizeList","useFontSize","useSize","useTheme","useIsMinWidth","useSelectHandler","MenuItem","useRWLoadNext","SelectList","searchVisible","options","visibleCount","overscanCount","threshold","onLoadNext","maxSelectedItems","containerRef","value","onChange","id","size","windowSize","isMinXs","fontSize","document","body","theme","scaleFactor","s","includes","sizes","Number","replace","paddingBottom","paddingEm","menuPaddingVertical","modalBodyPaddingVertical","paddingTop","searchInputHeight","baseHeight","itemSize","menuItemHeight","height","maxHeight","modalHeaderHeight","curHeight","length","count","scrollHandler","itemCount","onSelect","InnerElement","style","innerElementRest","innerElementRef","parseFloat","displayName","listItemFn","index","title","optionTitle","optionValue","onClick","optionOnClick","restOption","top","toString","e","current","focus","scrollOffset"],"mappings":"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","sourcesContent":["import React, { forwardRef, RefObject, useCallback, useMemo } from 'react';\nimport { FixedSizeList } from 'react-window';\nimport { useFontSize, useSize } from '@os-design/utils';\nimport { useTheme } from '@os-design/theming';\nimport { useIsMinWidth } from '@os-design/media';\nimport { WithSize } from '@os-design/styles';\nimport { useSelectHandler } from '@os-design/menu-utils';\nimport MenuItem, { MenuItemProps } from '../MenuItem';\nimport useRWLoadNext from '../List/utils/useRWLoadNext';\n\nexport interface OptionProps extends MenuItemProps {\n title?: string;\n}\n\ninterface SelectListProps extends WithSize {\n searchVisible: boolean;\n options: OptionProps[];\n visibleCount: number;\n overscanCount: number;\n threshold: number;\n onLoadNext: () => void;\n maxSelectedItems: number | 'all';\n containerRef: RefObject<HTMLDivElement>;\n value?: string[];\n onChange?: (value: string[]) => void;\n id?: string;\n}\n\nconst SelectList: React.FC<SelectListProps> = ({\n searchVisible,\n options,\n visibleCount,\n overscanCount,\n threshold,\n onLoadNext,\n maxSelectedItems,\n containerRef,\n value,\n onChange = () => {},\n id,\n size,\n}) => {\n const windowSize = useSize();\n const isMinXs = useIsMinWidth('xs');\n const fontSize = useFontSize(document.body);\n const { theme } = useTheme();\n\n const scaleFactor = useMemo(() => {\n const s = size || 'medium';\n return ['small', 'medium', 'large'].includes(s)\n ? theme.sizes[s]\n : Number(s.replace(/^([0-9]+(\\.[0-9]+)?).*/, '$1')) || 1; // Extract the number\n }, [size, theme.sizes]);\n\n const paddingBottom = useMemo(() => {\n const paddingEm = isMinXs\n ? theme.menuPaddingVertical\n : theme.modalBodyPaddingVertical[0];\n return paddingEm * fontSize * scaleFactor;\n }, [\n isMinXs,\n theme.menuPaddingVertical,\n theme.modalBodyPaddingVertical,\n fontSize,\n scaleFactor,\n ]);\n\n const paddingTop = useMemo(\n () => (searchVisible ? 5 * scaleFactor : paddingBottom),\n [searchVisible, scaleFactor, paddingBottom]\n );\n\n const searchInputHeight = useMemo(\n () =>\n searchVisible\n ? (theme.baseHeight + theme.menuPaddingVertical) *\n fontSize *\n scaleFactor\n : 0,\n [\n searchVisible,\n theme.baseHeight,\n theme.menuPaddingVertical,\n fontSize,\n scaleFactor,\n ]\n );\n\n const itemSize = useMemo(\n () => theme.menuItemHeight * fontSize * scaleFactor,\n [theme.menuItemHeight, fontSize, scaleFactor]\n );\n\n const height = useMemo(() => {\n // Modal\n if (!isMinXs) {\n const maxHeight =\n windowSize.height -\n theme.modalHeaderHeight * fontSize * scaleFactor -\n searchInputHeight;\n const curHeight = options.length * itemSize + paddingTop + paddingBottom;\n return curHeight < maxHeight ? curHeight : maxHeight;\n }\n // Popover\n const count = options.length < visibleCount ? options.length : visibleCount;\n return count * itemSize + paddingTop + paddingBottom;\n }, [\n isMinXs,\n options.length,\n visibleCount,\n itemSize,\n windowSize.height,\n theme.modalHeaderHeight,\n fontSize,\n scaleFactor,\n searchInputHeight,\n paddingTop,\n paddingBottom,\n ]);\n\n const scrollHandler = useRWLoadNext({\n itemCount: options.length,\n threshold,\n itemSize,\n paddingTop,\n height,\n onLoadNext,\n });\n\n const onSelect = useSelectHandler({\n value: value || [],\n onChange,\n maxSelectedItems,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const InnerElement = forwardRef<HTMLDivElement, any>(\n ({ style, ...innerElementRest }, innerElementRef) => (\n <div\n ref={innerElementRef}\n style={{\n ...style,\n height: `${parseFloat(style.height) + paddingTop + paddingBottom}px`,\n }}\n role='listbox'\n id={id}\n {...innerElementRest}\n />\n )\n );\n InnerElement.displayName = 'InnerElement';\n\n const listItemFn = useCallback(\n ({ index, style }) => {\n const {\n title: optionTitle,\n value: optionValue,\n onClick: optionOnClick,\n ...restOption\n } = options[index];\n return (\n <MenuItem\n style={{\n ...style,\n top: `${\n parseFloat(style.top ? style.top.toString() : '0') + paddingTop\n }px`,\n }}\n selected={(value || []).includes(optionValue || '')}\n onClick={(e) => {\n if (!optionValue) return;\n onSelect(optionValue);\n\n // Focus the input.\n // Otherwise, if the max number of selected items equals 1\n // and the user presses enter to select an item,\n // the input will lose focus.\n if (containerRef.current && maxSelectedItems === 1) {\n containerRef.current.focus();\n }\n\n if (optionOnClick) optionOnClick(e);\n }}\n role='option'\n aria-selected={(value || []).includes(optionValue || '')}\n {...restOption}\n >\n {optionTitle}\n </MenuItem>\n );\n },\n [containerRef, maxSelectedItems, onSelect, options, paddingTop, value]\n );\n\n return (\n <FixedSizeList\n width='100%'\n height={height}\n itemSize={itemSize}\n itemCount={options.length}\n overscanCount={overscanCount}\n onScroll={({ scrollOffset }) => scrollHandler(scrollOffset)}\n innerElementType={InnerElement}\n >\n {listItemFn}\n </FixedSizeList>\n );\n};\n\nSelectList.displayName = 'SelectList';\n\nexport default SelectList;\n"],"file":"SelectList.js"}
|
|
1
|
+
{"version":3,"file":"SelectList.js","names":["React","useCallback","useMemo","FixedSizeList","useFontSize","useSize","useTheme","useIsMinWidth","useSelectHandler","MenuItem","useRWLoadNext","SelectList","searchVisible","options","visibleCount","overscanCount","threshold","onLoadNext","maxSelectedItems","containerRef","value","onChange","id","size","windowSize","isMinXs","fontSize","document","body","theme","scaleFactor","s","includes","sizes","Number","replace","paddingBottom","paddingEm","menuPaddingVertical","modalBodyPaddingVertical","paddingTop","searchInputHeight","baseHeight","itemSize","menuItemHeight","height","maxHeight","modalHeaderHeight","curHeight","length","count","scrollHandler","itemCount","onSelect","InnerElement","style","innerElementRest","parseFloat","listItemFn","index","title","optionTitle","optionValue","onClick","optionOnClick","restOption","top","toString","e","current","focus","scrollOffset","displayName"],"sources":["../../../src/Select/SelectList.tsx"],"sourcesContent":["import React, { RefObject, useCallback, useMemo } from 'react';\nimport { FixedSizeList } from 'react-window';\nimport { useFontSize, useSize } from '@os-design/utils';\nimport { useTheme } from '@os-design/theming';\nimport { useIsMinWidth } from '@os-design/media';\nimport { WithSize } from '@os-design/styles';\nimport { useSelectHandler } from '@os-design/menu-utils';\nimport MenuItem, { MenuItemProps } from '../MenuItem';\nimport useRWLoadNext from '../List/utils/useRWLoadNext';\n\nexport interface OptionProps extends MenuItemProps {\n title?: string;\n}\n\ninterface SelectListProps extends WithSize {\n searchVisible: boolean;\n options: OptionProps[];\n visibleCount: number;\n overscanCount: number;\n threshold: number;\n onLoadNext: () => void;\n maxSelectedItems: number | 'all';\n containerRef: RefObject<HTMLDivElement>;\n value?: string[];\n onChange?: (value: string[]) => void;\n id?: string;\n}\n\nconst SelectList: React.FC<SelectListProps> = ({\n searchVisible,\n options,\n visibleCount,\n overscanCount,\n threshold,\n onLoadNext,\n maxSelectedItems,\n containerRef,\n value,\n onChange = () => {},\n id,\n size,\n}) => {\n const windowSize = useSize();\n const isMinXs = useIsMinWidth('xs');\n const fontSize = useFontSize(document.body);\n const { theme } = useTheme();\n\n const scaleFactor = useMemo(() => {\n const s = size || 'medium';\n return ['small', 'medium', 'large'].includes(s)\n ? theme.sizes[s]\n : Number(s.replace(/^([0-9]+(\\.[0-9]+)?).*/, '$1')) || 1; // Extract the number\n }, [size, theme.sizes]);\n\n const paddingBottom = useMemo(() => {\n const paddingEm = isMinXs\n ? theme.menuPaddingVertical\n : theme.modalBodyPaddingVertical[0];\n return paddingEm * fontSize * scaleFactor;\n }, [\n isMinXs,\n theme.menuPaddingVertical,\n theme.modalBodyPaddingVertical,\n fontSize,\n scaleFactor,\n ]);\n\n const paddingTop = useMemo(\n () => (searchVisible ? 5 * scaleFactor : paddingBottom),\n [searchVisible, scaleFactor, paddingBottom]\n );\n\n const searchInputHeight = useMemo(\n () =>\n searchVisible\n ? (theme.baseHeight + theme.menuPaddingVertical) *\n fontSize *\n scaleFactor\n : 0,\n [\n searchVisible,\n theme.baseHeight,\n theme.menuPaddingVertical,\n fontSize,\n scaleFactor,\n ]\n );\n\n const itemSize = useMemo(\n () => theme.menuItemHeight * fontSize * scaleFactor,\n [theme.menuItemHeight, fontSize, scaleFactor]\n );\n\n const height = useMemo(() => {\n // Modal\n if (!isMinXs) {\n const maxHeight =\n windowSize.height -\n theme.modalHeaderHeight * fontSize * scaleFactor -\n searchInputHeight;\n const curHeight = options.length * itemSize + paddingTop + paddingBottom;\n return curHeight < maxHeight ? curHeight : maxHeight;\n }\n // Popover\n const count = options.length < visibleCount ? options.length : visibleCount;\n return count * itemSize + paddingTop + paddingBottom;\n }, [\n isMinXs,\n options.length,\n visibleCount,\n itemSize,\n windowSize.height,\n theme.modalHeaderHeight,\n fontSize,\n scaleFactor,\n searchInputHeight,\n paddingTop,\n paddingBottom,\n ]);\n\n const scrollHandler = useRWLoadNext({\n itemCount: options.length,\n threshold,\n itemSize,\n paddingTop,\n height,\n onLoadNext,\n });\n\n const onSelect = useSelectHandler({\n value: value || [],\n onChange,\n maxSelectedItems,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const InnerElement = useCallback(\n ({ style, ...innerElementRest }) => (\n <div\n style={{\n ...style,\n height: `${parseFloat(style.height) + paddingTop + paddingBottom}px`,\n }}\n role='listbox'\n id={id}\n {...innerElementRest}\n />\n ),\n [id, paddingBottom, paddingTop]\n );\n\n const listItemFn = useCallback(\n ({ index, style }) => {\n const {\n title: optionTitle,\n value: optionValue,\n onClick: optionOnClick,\n ...restOption\n } = options[index];\n return (\n <MenuItem\n style={{\n ...style,\n top: `${\n parseFloat(style.top ? style.top.toString() : '0') + paddingTop\n }px`,\n }}\n selected={(value || []).includes(optionValue || '')}\n onClick={(e) => {\n if (!optionValue) return;\n onSelect(optionValue);\n\n // Focus the input.\n // Otherwise, if the max number of selected items equals 1\n // and the user presses enter to select an item,\n // the input will lose focus.\n if (containerRef.current && maxSelectedItems === 1) {\n containerRef.current.focus();\n }\n\n if (optionOnClick) optionOnClick(e);\n }}\n role='option'\n aria-selected={(value || []).includes(optionValue || '')}\n {...restOption}\n >\n {optionTitle}\n </MenuItem>\n );\n },\n [containerRef, maxSelectedItems, onSelect, options, paddingTop, value]\n );\n\n return (\n <FixedSizeList\n width='100%'\n height={height}\n itemSize={itemSize}\n itemCount={options.length}\n overscanCount={overscanCount}\n onScroll={({ scrollOffset }) => scrollHandler(scrollOffset)}\n innerElementType={InnerElement}\n >\n {listItemFn}\n </FixedSizeList>\n );\n};\n\nSelectList.displayName = 'SelectList';\n\nexport default SelectList;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/Select/SelectToggle.tsx"],"names":["React","useCallback","useMemo","styled","Up","Down","Loading","Close","CloseCircle","ellipsisStyles","resetButtonStyles","transitionStyles","omitEmotionProps","clr","css","Tag","Button","Placeholder","span","p","theme","inputColorPlaceholder","unborderedTitleStyles","unbordered","disabled","colorPrimary","disabledStyles","inputDisabledColorText","Title","colorText","ListItem","selectToggleListItemHeight","List","div","selectToggleListItemGap","DeleteButton","button","selectToggleDeleteButtonColorIcon","selectToggleDeleteButtonColorIconHover","unborderedIconContainerStyles","IconContainer","inputPaddingHorizontal","selectColorIcon","ClearButtonContainer","ClearIcon","SelectToggle","selectedItems","onDelete","onClear","opened","multiple","placeholder","loading","clearVisible","locale","renderContent","length","map","title","value","e","stopPropagation","deleteLabel","undefined","icon","key","clearLabel","displayName"],"mappings":"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","sourcesContent":["import React, { useCallback, useMemo } from 'react';\nimport styled from '@emotion/styled';\nimport { Up, Down, Loading, Close, CloseCircle } from '@os-design/icons';\nimport {\n ellipsisStyles,\n resetButtonStyles,\n transitionStyles,\n} from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { clr } from '@os-design/theming';\nimport { css } from '@emotion/react';\nimport Tag from '../Tag';\nimport Button from '../Button';\nimport { SelectLocale } from './utils/defaultLocale';\n\ninterface SelectToggleProps {\n selectedItems: Array<{ title: string; value: string }>;\n onDelete: (value: string) => void;\n onClear: () => void;\n opened: boolean;\n multiple: boolean;\n placeholder?: string;\n unbordered?: boolean;\n loading?: boolean;\n disabled?: boolean;\n clearVisible?: boolean;\n locale: SelectLocale;\n}\n\nexport const Placeholder = styled.span`\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n ${ellipsisStyles};\n`;\n\nconst unborderedTitleStyles = (p) =>\n p.unbordered &&\n css`\n font-weight: 500;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\nconst disabledStyles = (p) =>\n p.disabled &&\n css`\n color: ${clr(p.theme.inputDisabledColorText)};\n `;\n\ntype TitleProps = Pick<SelectToggleProps, 'disabled' | 'unbordered'>;\nexport const Title = styled(\n 'span',\n omitEmotionProps('disabled', 'unbordered')\n)<TitleProps>`\n color: ${(p) => clr(p.theme.colorText)};\n ${unborderedTitleStyles};\n ${disabledStyles};\n ${ellipsisStyles};\n`;\n\ntype ListItemProps = Pick<SelectToggleProps, 'disabled'>;\nconst ListItem = styled(Tag, omitEmotionProps('disabled'))<ListItemProps>`\n // Reset tag styles\n padding-top: 0;\n padding-bottom: 0;\n\n height: ${(p) => p.theme.selectToggleListItemHeight}em;\n ${disabledStyles};\n`;\n\nconst List = styled.div`\n display: flex;\n flex-wrap: wrap;\n overflow: hidden; // For ellipsis styles\n\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => -p.theme.selectToggleListItemGap}em 0;\n\n & > div {\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => p.theme.selectToggleListItemGap}em 0;\n }\n`;\n\nconst DeleteButton = styled.button`\n ${resetButtonStyles};\n cursor: pointer;\n display: inherit;\n font-size: 1em;\n margin-left: 0.2em;\n\n background-color: transparent;\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIcon)};\n\n @media (hover: hover) {\n &:hover,\n &:focus {\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIconHover)};\n }\n }\n\n ${transitionStyles('color')};\n`;\n\nconst unborderedIconContainerStyles = (p) =>\n p.unbordered &&\n css`\n padding-top: 0.2em;\n font-size: 0.8em;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\ninterface IconContainerProps {\n unbordered?: boolean;\n disabled?: boolean;\n}\nexport const IconContainer = styled(\n 'span',\n omitEmotionProps('unbordered', 'disabled')\n)<IconContainerProps>`\n position: absolute;\n top: 0;\n right: ${(p) => p.theme.inputPaddingHorizontal}em;\n bottom: 0;\n\n display: flex;\n align-items: center;\n color: ${(p) => clr(p.theme.selectColorIcon)};\n\n ${unborderedIconContainerStyles};\n`;\n\nexport const ClearButtonContainer = styled(IconContainer)`\n right: 0;\n`;\n\nexport const ClearIcon = styled(CloseCircle)`\n transform: scale(1.2) !important;\n`;\n\nconst SelectToggle: React.FC<SelectToggleProps> = ({\n selectedItems,\n onDelete,\n onClear,\n opened,\n unbordered,\n multiple,\n placeholder,\n loading,\n disabled,\n clearVisible,\n locale,\n}) => {\n const renderContent = useCallback(() => {\n if (selectedItems.length === 0) {\n return <Placeholder>{placeholder}</Placeholder>;\n }\n if (multiple) {\n return (\n <List>\n {selectedItems.map(({ title, value }) => (\n <ListItem\n key={value}\n disabled={disabled}\n right={\n !disabled ? (\n <DeleteButton\n onClick={(e) => {\n onDelete(value);\n e.stopPropagation();\n }}\n onKeyDown={(e) => e.stopPropagation()}\n aria-label={`${locale.deleteLabel} ${title}`}\n aria-hidden\n >\n <Close />\n </DeleteButton>\n ) : undefined\n }\n aria-hidden\n >\n {title}\n </ListItem>\n ))}\n </List>\n );\n }\n return (\n <Title disabled={disabled} unbordered={unbordered}>\n {selectedItems[0].title}\n </Title>\n );\n }, [\n selectedItems,\n multiple,\n disabled,\n unbordered,\n placeholder,\n locale.deleteLabel,\n onDelete,\n ]);\n\n const icon = useMemo(() => {\n if (loading) return <Loading />;\n return opened ? <Up /> : <Down />;\n }, [loading, opened]);\n\n return (\n <>\n {renderContent()}\n {clearVisible && selectedItems.length > 0 ? (\n <ClearButtonContainer unbordered={unbordered} disabled={disabled}>\n <Button\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={(e) => {\n onClear();\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') onClear();\n e.stopPropagation();\n }}\n aria-label={locale.clearLabel}\n >\n <ClearIcon />\n </Button>\n </ClearButtonContainer>\n ) : (\n <IconContainer unbordered={unbordered} disabled={disabled}>\n {icon}\n </IconContainer>\n )}\n </>\n );\n};\n\nSelectToggle.displayName = 'SelectToggle';\n\nexport default SelectToggle;\n"],"file":"SelectToggle.js"}
|
|
1
|
+
{"version":3,"file":"SelectToggle.js","names":["React","useCallback","useMemo","styled","Up","Down","Loading","Close","CloseCircle","ellipsisStyles","resetButtonStyles","transitionStyles","omitEmotionProps","clr","css","Tag","Button","Placeholder","span","p","theme","inputColorPlaceholder","unborderedTitleStyles","unbordered","disabled","colorPrimary","disabledStyles","inputDisabledColorText","Title","colorText","ListItem","selectToggleListItemHeight","List","div","selectToggleListItemGap","DeleteButton","button","selectToggleDeleteButtonColorIcon","selectToggleDeleteButtonColorIconHover","unborderedIconContainerStyles","IconContainer","inputPaddingHorizontal","selectColorIcon","ClearButtonContainer","ClearIcon","SelectToggle","selectedItems","onDelete","onClear","opened","multiple","placeholder","loading","clearVisible","locale","renderContent","length","map","title","value","e","stopPropagation","deleteLabel","undefined","icon","key","clearLabel","displayName"],"sources":["../../../src/Select/SelectToggle.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react';\nimport styled from '@emotion/styled';\nimport { Up, Down, Loading, Close, CloseCircle } from '@os-design/icons';\nimport {\n ellipsisStyles,\n resetButtonStyles,\n transitionStyles,\n} from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { clr } from '@os-design/theming';\nimport { css } from '@emotion/react';\nimport Tag from '../Tag';\nimport Button from '../Button';\nimport { SelectLocale } from './utils/defaultLocale';\n\ninterface SelectToggleProps {\n selectedItems: Array<{ title: string; value: string }>;\n onDelete: (value: string) => void;\n onClear: () => void;\n opened: boolean;\n multiple: boolean;\n placeholder?: string;\n unbordered?: boolean;\n loading?: boolean;\n disabled?: boolean;\n clearVisible?: boolean;\n locale: SelectLocale;\n}\n\nexport const Placeholder = styled.span`\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n ${ellipsisStyles};\n`;\n\nconst unborderedTitleStyles = (p) =>\n p.unbordered &&\n css`\n font-weight: 500;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\nconst disabledStyles = (p) =>\n p.disabled &&\n css`\n color: ${clr(p.theme.inputDisabledColorText)};\n `;\n\ntype TitleProps = Pick<SelectToggleProps, 'disabled' | 'unbordered'>;\nexport const Title = styled(\n 'span',\n omitEmotionProps('disabled', 'unbordered')\n)<TitleProps>`\n color: ${(p) => clr(p.theme.colorText)};\n ${unborderedTitleStyles};\n ${disabledStyles};\n ${ellipsisStyles};\n`;\n\ntype ListItemProps = Pick<SelectToggleProps, 'disabled'>;\nconst ListItem = styled(Tag, omitEmotionProps('disabled'))<ListItemProps>`\n // Reset tag styles\n padding-top: 0;\n padding-bottom: 0;\n\n height: ${(p) => p.theme.selectToggleListItemHeight}em;\n ${disabledStyles};\n`;\n\nconst List = styled.div`\n display: flex;\n flex-wrap: wrap;\n overflow: hidden; // For ellipsis styles\n\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => -p.theme.selectToggleListItemGap}em 0;\n\n & > div {\n margin: 0 ${(p) => p.theme.selectToggleListItemGap}em\n ${(p) => p.theme.selectToggleListItemGap}em 0;\n }\n`;\n\nconst DeleteButton = styled.button`\n ${resetButtonStyles};\n cursor: pointer;\n display: inherit;\n font-size: 1em;\n margin-left: 0.2em;\n\n background-color: transparent;\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIcon)};\n\n @media (hover: hover) {\n &:hover,\n &:focus {\n color: ${(p) => clr(p.theme.selectToggleDeleteButtonColorIconHover)};\n }\n }\n\n ${transitionStyles('color')};\n`;\n\nconst unborderedIconContainerStyles = (p) =>\n p.unbordered &&\n css`\n padding-top: 0.2em;\n font-size: 0.8em;\n ${!p.disabled && `color: ${clr(p.theme.colorPrimary)};`}\n `;\n\ninterface IconContainerProps {\n unbordered?: boolean;\n disabled?: boolean;\n}\nexport const IconContainer = styled(\n 'span',\n omitEmotionProps('unbordered', 'disabled')\n)<IconContainerProps>`\n position: absolute;\n top: 0;\n right: ${(p) => p.theme.inputPaddingHorizontal}em;\n bottom: 0;\n\n display: flex;\n align-items: center;\n color: ${(p) => clr(p.theme.selectColorIcon)};\n\n ${unborderedIconContainerStyles};\n`;\n\nexport const ClearButtonContainer = styled(IconContainer)`\n right: 0;\n`;\n\nexport const ClearIcon = styled(CloseCircle)`\n transform: scale(1.2) !important;\n`;\n\nconst SelectToggle: React.FC<SelectToggleProps> = ({\n selectedItems,\n onDelete,\n onClear,\n opened,\n unbordered,\n multiple,\n placeholder,\n loading,\n disabled,\n clearVisible,\n locale,\n}) => {\n const renderContent = useCallback(() => {\n if (selectedItems.length === 0) {\n return <Placeholder>{placeholder}</Placeholder>;\n }\n if (multiple) {\n return (\n <List>\n {selectedItems.map(({ title, value }) => (\n <ListItem\n key={value}\n disabled={disabled}\n right={\n !disabled ? (\n <DeleteButton\n onClick={(e) => {\n onDelete(value);\n e.stopPropagation();\n }}\n onKeyDown={(e) => e.stopPropagation()}\n aria-label={`${locale.deleteLabel} ${title}`}\n aria-hidden\n >\n <Close />\n </DeleteButton>\n ) : undefined\n }\n aria-hidden\n >\n {title}\n </ListItem>\n ))}\n </List>\n );\n }\n return (\n <Title disabled={disabled} unbordered={unbordered}>\n {selectedItems[0].title}\n </Title>\n );\n }, [\n selectedItems,\n multiple,\n disabled,\n unbordered,\n placeholder,\n locale.deleteLabel,\n onDelete,\n ]);\n\n const icon = useMemo(() => {\n if (loading) return <Loading />;\n return opened ? <Up /> : <Down />;\n }, [loading, opened]);\n\n return (\n <>\n {renderContent()}\n {clearVisible && selectedItems.length > 0 ? (\n <ClearButtonContainer unbordered={unbordered} disabled={disabled}>\n <Button\n type='ghost'\n wide='never'\n size='small'\n disabled={disabled}\n onClick={(e) => {\n onClear();\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') onClear();\n e.stopPropagation();\n }}\n aria-label={locale.clearLabel}\n >\n <ClearIcon />\n </Button>\n </ClearButtonContainer>\n ) : (\n <IconContainer unbordered={unbordered} disabled={disabled}>\n {icon}\n </IconContainer>\n )}\n </>\n );\n};\n\nSelectToggle.displayName = 'SelectToggle';\n\nexport default SelectToggle;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/Select/index.tsx"],"names":["React","forwardRef","useCallback","useMemo","useRef","useState","transitionStyles","omitEmotionProps","useEvent","useForwardedRef","useForwardedState","useResizeObserver","useBrowserLayoutEffect","styled","m","css","clr","InputContainer","Menu","InputSearch","SelectToggle","SelectList","defaultLocale","paddingStyles","p","paddingVertical","theme","baseHeight","selectToggleListItemHeight","inputPaddingHorizontal","openedStyles","opened","unbordered","inputFocusColorBorder","inputFocusColorShadow","unborderedStyles","unborderedHoverStyles","disabled","buttonGhostColorBgHover","SelectContainer","SelectMenu","min","xs","width","NotFound","div","menuItemHeight","selectNotFoundColorText","InputSearchContainer","menuPaddingVertical","Select","options","placeholder","searchVisible","searchProps","notFoundText","loading","clearVisible","threshold","visibleCount","overscanCount","maxSelectedItems","locale","value","defaultValue","onChange","onLoadNext","size","placement","rest","ref","containerRef","mergedContainerRef","setWidth","inputSearchContainerRef","setOpened","forwardedValue","setForwardedValue","resizeHandler","window","requestAnimationFrame","current","nextWidth","getBoundingClientRect","undefined","setAttribute","selectedItems","map","v","option","find","item","title","listBoxId","Math","random","toString","slice","e","includes","key","preventDefault","filter","focus","length","displayName"],"mappings":"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","sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { transitionStyles, WithSize } from '@os-design/styles';\nimport {\n omitEmotionProps,\n useEvent,\n useForwardedRef,\n useForwardedState,\n useResizeObserver,\n useBrowserLayoutEffect,\n} from '@os-design/utils';\nimport styled from '@emotion/styled';\nimport { m } from '@os-design/media';\nimport { css } from '@emotion/react';\nimport { clr } from '@os-design/theming';\nimport { InputContainer } from '../Input';\nimport Menu from '../Menu';\nimport InputSearch, { InputSearchProps } from '../InputSearch';\nimport SelectToggle from './SelectToggle';\nimport SelectList, { OptionProps } from './SelectList';\nimport { PopoverProps } from '../Popover';\nimport defaultLocale, { SelectLocale } from './utils/defaultLocale';\n\ntype JsxDivProps = Omit<\n JSX.IntrinsicElements['div'],\n 'value' | 'defaultValue' | 'onChange' | 'ref'\n>;\nexport interface SelectProps\n extends JsxDivProps,\n WithSize,\n Pick<PopoverProps, 'placement'> {\n /**\n * Options of the select.\n * @default undefined\n */\n options?: OptionProps[];\n /**\n * The placeholder of the select.\n * @default undefined\n */\n placeholder?: string;\n /**\n * Whether the search input visible.\n * @default false\n */\n searchVisible?: boolean;\n /**\n * Props of the search input.\n * @default undefined\n */\n searchProps?: InputSearchProps;\n /**\n * Text displayed when there are no list items.\n * @default Not found\n */\n notFoundText?: string;\n /**\n * Whether the border is hidden.\n * @default false\n */\n unbordered?: boolean;\n /**\n * Shows the loading status.\n * @default false\n */\n loading?: boolean;\n /**\n * Whether the select is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Whether the select has the clear button.\n * @default false\n */\n clearVisible?: boolean;\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 inside of the visible \"window\" to render.\n * @default 6\n */\n visibleCount?: 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 max number of options that the user can select.\n * @default 1\n */\n maxSelectedItems?: number | 'all';\n /**\n * The locale.\n * @default undefined\n */\n locale?: SelectLocale;\n /**\n * Selected options.\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 * The callback to load more items.\n * @default undefined\n */\n onLoadNext?: () => void;\n}\n\nconst paddingStyles = (p) => {\n const paddingVertical =\n (p.theme.baseHeight - p.theme.selectToggleListItemHeight) / 2;\n\n return css`\n padding: calc(${paddingVertical}em - 1px) 3.5em\n calc(${paddingVertical}em - 1px) ${p.theme.inputPaddingHorizontal}em;\n `;\n};\n\nconst openedStyles = (p) =>\n p.opened &&\n !p.unbordered &&\n css`\n border-color: ${clr(p.theme.inputFocusColorBorder)};\n box-shadow: 0 0 0 0.15em ${clr(p.theme.inputFocusColorShadow)};\n `;\n\nconst unborderedStyles = (p) =>\n p.unbordered &&\n css`\n border: 0;\n padding-right: 1.8em;\n box-shadow: none !important;\n ${transitionStyles('background-color')(p)};\n `;\n\nconst unborderedHoverStyles = (p) =>\n p.unbordered &&\n !p.disabled &&\n css`\n @media (hover: hover) {\n &:hover,\n &:focus {\n background-color: ${clr(p.theme.buttonGhostColorBgHover)};\n }\n }\n `;\n\ninterface SelectContainerProps {\n opened: boolean;\n unbordered?: boolean;\n disabled?: boolean;\n}\nexport const SelectContainer = styled(\n InputContainer,\n omitEmotionProps('opened', 'unbordered', 'disabled')\n)<SelectContainerProps>`\n cursor: ${(p) => (!p.disabled ? 'pointer' : 'not-allowed')};\n user-select: none;\n position: relative;\n display: flex;\n align-items: center;\n\n height: unset;\n min-height: ${(p) => p.theme.baseHeight}em;\n\n ${paddingStyles};\n ${openedStyles};\n ${unborderedStyles};\n ${unborderedHoverStyles};\n`;\n\ninterface SelectMenuProps {\n width: number;\n}\nconst SelectMenu = styled(Menu, omitEmotionProps('width'))<SelectMenuProps>`\n padding-top: 0;\n padding-bottom: 0;\n max-height: unset;\n\n ${m.min.xs} {\n width: ${(p) => p.width}px;\n }\n`;\n\nconst NotFound = styled.div`\n height: ${(p) => p.theme.menuItemHeight}em;\n display: flex;\n align-items: center;\n\n padding: 0 ${(p) => p.theme.inputPaddingHorizontal}em;\n color: ${(p) => clr(p.theme.selectNotFoundColorText)};\n`;\n\nconst InputSearchContainer = styled.div`\n padding: ${(p) => p.theme.menuPaddingVertical}em\n ${(p) => p.theme.inputPaddingHorizontal}em 0;\n`;\n\n/**\n * The component that allows to pick a value from predefined options.\n */\nconst Select = forwardRef<HTMLDivElement, SelectProps>(\n (\n {\n options = [],\n placeholder,\n searchVisible = false,\n searchProps = {},\n notFoundText = 'Not found',\n unbordered = false,\n loading = false,\n disabled = false,\n clearVisible = false,\n threshold = 10,\n visibleCount = 6,\n overscanCount = 10,\n maxSelectedItems = 1,\n locale = defaultLocale,\n value,\n defaultValue,\n onChange,\n onLoadNext = () => {},\n size,\n placement,\n ...rest\n },\n ref\n ) => {\n const [containerRef, mergedContainerRef] = useForwardedRef(ref);\n const [width, setWidth] = useState(0);\n const inputSearchContainerRef = useRef<HTMLDivElement>(null);\n const [opened, setOpened] = useState(false);\n const [forwardedValue, setForwardedValue] = useForwardedState({\n value,\n defaultValue,\n onChange,\n });\n\n /**\n * Detect the width of the container when the select was opened and update\n * it when either the container size or the window size has been changed.\n */\n const resizeHandler = useCallback(() => {\n window.requestAnimationFrame(() => {\n if (!opened || !containerRef.current) return;\n const nextWidth = containerRef.current.getBoundingClientRect().width;\n if (width === nextWidth) return;\n setWidth(nextWidth);\n });\n }, [opened, containerRef, width]);\n useBrowserLayoutEffect(() => resizeHandler(), [resizeHandler]);\n useResizeObserver(containerRef, resizeHandler);\n useEvent(\n (typeof window !== 'undefined' ? window : undefined) as EventTarget,\n 'resize',\n resizeHandler\n );\n\n // Replace the aria-haspopup attribute from menu to listbox\n useBrowserLayoutEffect(() => {\n if (!containerRef.current) return;\n containerRef.current.setAttribute('aria-haspopup', 'listbox');\n }, []);\n\n const selectedItems = useMemo(\n () =>\n (forwardedValue || []).map((v) => {\n const option = (options || []).find((item) => item.value === v);\n return { title: option ? option.title || '' : '', value: v };\n }),\n [forwardedValue, options]\n );\n\n const listBoxId = useMemo(\n () => `listbox-${Math.random().toString(36).slice(2, 11)}`,\n []\n );\n\n return (\n <>\n <SelectContainer\n opened={opened}\n unbordered={unbordered}\n disabled={disabled}\n size={size}\n tabIndex={!disabled ? 0 : -1}\n onClick={() => {\n if (disabled) return;\n setOpened(!opened);\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setOpened(!opened);\n e.preventDefault();\n }\n }}\n onMouseDown={(e) => e.preventDefault()}\n role='combobox'\n aria-disabled={disabled}\n aria-busy={loading}\n aria-haspopup='listbox'\n aria-owns={listBoxId}\n {...rest}\n ref={mergedContainerRef}\n >\n <SelectToggle\n selectedItems={selectedItems}\n onDelete={(v) =>\n setForwardedValue(\n (forwardedValue || []).filter((item) => item !== v)\n )\n }\n onClear={() => {\n setForwardedValue([]);\n if (!containerRef.current) return;\n containerRef.current.focus();\n }}\n opened={opened}\n unbordered={unbordered}\n multiple={maxSelectedItems !== 1}\n disabled={disabled}\n clearVisible={clearVisible}\n placeholder={placeholder}\n loading={loading}\n locale={locale}\n />\n </SelectContainer>\n\n <SelectMenu\n trigger={containerRef}\n visible={opened}\n onClose={() => setOpened(false)}\n size={size}\n width={width}\n closeOnSelect={maxSelectedItems === 1}\n modalTitle={placeholder}\n placement={placement}\n >\n {searchVisible && (\n <InputSearchContainer ref={inputSearchContainerRef}>\n <InputSearch {...searchProps} />\n </InputSearchContainer>\n )}\n\n {options.length > 0 ? (\n <SelectList\n searchVisible={searchVisible}\n options={options}\n visibleCount={visibleCount}\n overscanCount={overscanCount}\n threshold={threshold}\n onLoadNext={onLoadNext}\n maxSelectedItems={maxSelectedItems}\n containerRef={containerRef}\n value={forwardedValue}\n onChange={setForwardedValue}\n id={listBoxId}\n size={size}\n />\n ) : (\n <NotFound>{notFoundText}</NotFound>\n )}\n </SelectMenu>\n </>\n );\n }\n);\n\nSelect.displayName = 'Select';\n\nexport default Select;\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","forwardRef","useCallback","useMemo","useRef","useState","transitionStyles","omitEmotionProps","useEvent","useForwardedRef","useForwardedState","useResizeObserver","useBrowserLayoutEffect","styled","m","css","clr","InputContainer","Menu","InputSearch","SelectToggle","SelectList","defaultLocale","paddingStyles","p","paddingVertical","theme","baseHeight","selectToggleListItemHeight","inputPaddingHorizontal","openedStyles","opened","unbordered","inputFocusColorBorder","inputFocusColorShadow","unborderedStyles","unborderedHoverStyles","disabled","buttonGhostColorBgHover","SelectContainer","SelectMenu","min","xs","width","NotFound","div","menuItemHeight","selectNotFoundColorText","InputSearchContainer","menuPaddingVertical","Select","options","placeholder","searchVisible","searchProps","notFoundText","loading","clearVisible","threshold","visibleCount","overscanCount","maxSelectedItems","locale","value","defaultValue","onChange","onLoadNext","size","placement","rest","ref","containerRef","mergedContainerRef","setWidth","inputSearchContainerRef","setOpened","forwardedValue","setForwardedValue","resizeHandler","window","requestAnimationFrame","current","nextWidth","getBoundingClientRect","undefined","setAttribute","selectedItems","map","v","option","find","item","title","listBoxId","Math","random","toString","slice","e","includes","key","preventDefault","filter","focus","length","displayName"],"sources":["../../../src/Select/index.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { transitionStyles, WithSize } from '@os-design/styles';\nimport {\n omitEmotionProps,\n useEvent,\n useForwardedRef,\n useForwardedState,\n useResizeObserver,\n useBrowserLayoutEffect,\n} from '@os-design/utils';\nimport styled from '@emotion/styled';\nimport { m } from '@os-design/media';\nimport { css } from '@emotion/react';\nimport { clr } from '@os-design/theming';\nimport { InputContainer } from '../Input';\nimport Menu from '../Menu';\nimport InputSearch, { InputSearchProps } from '../InputSearch';\nimport SelectToggle from './SelectToggle';\nimport SelectList, { OptionProps } from './SelectList';\nimport { PopoverProps } from '../Popover';\nimport defaultLocale, { SelectLocale } from './utils/defaultLocale';\n\ntype JsxDivProps = Omit<\n JSX.IntrinsicElements['div'],\n 'value' | 'defaultValue' | 'onChange' | 'ref'\n>;\nexport interface SelectProps\n extends JsxDivProps,\n WithSize,\n Pick<PopoverProps, 'placement'> {\n /**\n * Options of the select.\n * @default undefined\n */\n options?: OptionProps[];\n /**\n * The placeholder of the select.\n * @default undefined\n */\n placeholder?: string;\n /**\n * Whether the search input visible.\n * @default false\n */\n searchVisible?: boolean;\n /**\n * Props of the search input.\n * @default undefined\n */\n searchProps?: InputSearchProps;\n /**\n * Text displayed when there are no list items.\n * @default Not found\n */\n notFoundText?: string;\n /**\n * Whether the border is hidden.\n * @default false\n */\n unbordered?: boolean;\n /**\n * Shows the loading status.\n * @default false\n */\n loading?: boolean;\n /**\n * Whether the select is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Whether the select has the clear button.\n * @default false\n */\n clearVisible?: boolean;\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 inside of the visible \"window\" to render.\n * @default 6\n */\n visibleCount?: 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 max number of options that the user can select.\n * @default 1\n */\n maxSelectedItems?: number | 'all';\n /**\n * The locale.\n * @default undefined\n */\n locale?: SelectLocale;\n /**\n * Selected options.\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 * The callback to load more items.\n * @default undefined\n */\n onLoadNext?: () => void;\n}\n\nconst paddingStyles = (p) => {\n const paddingVertical =\n (p.theme.baseHeight - p.theme.selectToggleListItemHeight) / 2;\n\n return css`\n padding: calc(${paddingVertical}em - 1px) 3.5em\n calc(${paddingVertical}em - 1px) ${p.theme.inputPaddingHorizontal}em;\n `;\n};\n\nconst openedStyles = (p) =>\n p.opened &&\n !p.unbordered &&\n css`\n border-color: ${clr(p.theme.inputFocusColorBorder)};\n box-shadow: 0 0 0 0.15em ${clr(p.theme.inputFocusColorShadow)};\n `;\n\nconst unborderedStyles = (p) =>\n p.unbordered &&\n css`\n border: 0;\n padding-right: 1.8em;\n box-shadow: none !important;\n ${transitionStyles('background-color')(p)};\n `;\n\nconst unborderedHoverStyles = (p) =>\n p.unbordered &&\n !p.disabled &&\n css`\n @media (hover: hover) {\n &:hover,\n &:focus {\n background-color: ${clr(p.theme.buttonGhostColorBgHover)};\n }\n }\n `;\n\ninterface SelectContainerProps {\n opened: boolean;\n unbordered?: boolean;\n disabled?: boolean;\n}\nexport const SelectContainer = styled(\n InputContainer,\n omitEmotionProps('opened', 'unbordered', 'disabled')\n)<SelectContainerProps>`\n cursor: ${(p) => (!p.disabled ? 'pointer' : 'not-allowed')};\n user-select: none;\n position: relative;\n display: flex;\n align-items: center;\n\n height: unset;\n min-height: ${(p) => p.theme.baseHeight}em;\n\n ${paddingStyles};\n ${openedStyles};\n ${unborderedStyles};\n ${unborderedHoverStyles};\n`;\n\ninterface SelectMenuProps {\n width: number;\n}\nconst SelectMenu = styled(Menu, omitEmotionProps('width'))<SelectMenuProps>`\n padding-top: 0;\n padding-bottom: 0;\n max-height: unset;\n\n ${m.min.xs} {\n width: ${(p) => p.width}px;\n }\n`;\n\nconst NotFound = styled.div`\n height: ${(p) => p.theme.menuItemHeight}em;\n display: flex;\n align-items: center;\n\n padding: 0 ${(p) => p.theme.inputPaddingHorizontal}em;\n color: ${(p) => clr(p.theme.selectNotFoundColorText)};\n`;\n\nconst InputSearchContainer = styled.div`\n padding: ${(p) => p.theme.menuPaddingVertical}em\n ${(p) => p.theme.inputPaddingHorizontal}em 0;\n`;\n\n/**\n * The component that allows to pick a value from predefined options.\n */\nconst Select = forwardRef<HTMLDivElement, SelectProps>(\n (\n {\n options = [],\n placeholder,\n searchVisible = false,\n searchProps = {},\n notFoundText = 'Not found',\n unbordered = false,\n loading = false,\n disabled = false,\n clearVisible = false,\n threshold = 10,\n visibleCount = 6,\n overscanCount = 10,\n maxSelectedItems = 1,\n locale = defaultLocale,\n value,\n defaultValue,\n onChange,\n onLoadNext = () => {},\n size,\n placement,\n ...rest\n },\n ref\n ) => {\n const [containerRef, mergedContainerRef] = useForwardedRef(ref);\n const [width, setWidth] = useState(0);\n const inputSearchContainerRef = useRef<HTMLDivElement>(null);\n const [opened, setOpened] = useState(false);\n const [forwardedValue, setForwardedValue] = useForwardedState({\n value,\n defaultValue,\n onChange,\n });\n\n /**\n * Detect the width of the container when the select was opened and update\n * it when either the container size or the window size has been changed.\n */\n const resizeHandler = useCallback(() => {\n window.requestAnimationFrame(() => {\n if (!opened || !containerRef.current) return;\n const nextWidth = containerRef.current.getBoundingClientRect().width;\n if (width === nextWidth) return;\n setWidth(nextWidth);\n });\n }, [opened, containerRef, width]);\n useBrowserLayoutEffect(() => resizeHandler(), [resizeHandler]);\n useResizeObserver(containerRef, resizeHandler);\n useEvent(\n (typeof window !== 'undefined' ? window : undefined) as EventTarget,\n 'resize',\n resizeHandler\n );\n\n // Replace the aria-haspopup attribute from menu to listbox\n useBrowserLayoutEffect(() => {\n if (!containerRef.current) return;\n containerRef.current.setAttribute('aria-haspopup', 'listbox');\n }, []);\n\n const selectedItems = useMemo(\n () =>\n (forwardedValue || []).map((v) => {\n const option = (options || []).find((item) => item.value === v);\n return { title: option ? option.title || '' : '', value: v };\n }),\n [forwardedValue, options]\n );\n\n const listBoxId = useMemo(\n () => `listbox-${Math.random().toString(36).slice(2, 11)}`,\n []\n );\n\n return (\n <>\n <SelectContainer\n opened={opened}\n unbordered={unbordered}\n disabled={disabled}\n size={size}\n tabIndex={!disabled ? 0 : -1}\n onClick={() => {\n if (disabled) return;\n setOpened(!opened);\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (['Enter', ' '].includes(e.key)) {\n setOpened(!opened);\n e.preventDefault();\n }\n }}\n onMouseDown={(e) => e.preventDefault()}\n role='combobox'\n aria-disabled={disabled}\n aria-busy={loading}\n aria-haspopup='listbox'\n aria-owns={listBoxId}\n {...rest}\n ref={mergedContainerRef}\n >\n <SelectToggle\n selectedItems={selectedItems}\n onDelete={(v) =>\n setForwardedValue(\n (forwardedValue || []).filter((item) => item !== v)\n )\n }\n onClear={() => {\n setForwardedValue([]);\n if (!containerRef.current) return;\n containerRef.current.focus();\n }}\n opened={opened}\n unbordered={unbordered}\n multiple={maxSelectedItems !== 1}\n disabled={disabled}\n clearVisible={clearVisible}\n placeholder={placeholder}\n loading={loading}\n locale={locale}\n />\n </SelectContainer>\n\n <SelectMenu\n trigger={containerRef}\n visible={opened}\n onClose={() => setOpened(false)}\n size={size}\n width={width}\n closeOnSelect={maxSelectedItems === 1}\n modalTitle={placeholder}\n placement={placement}\n >\n {searchVisible && (\n <InputSearchContainer ref={inputSearchContainerRef}>\n <InputSearch {...searchProps} />\n </InputSearchContainer>\n )}\n\n {options.length > 0 ? (\n <SelectList\n searchVisible={searchVisible}\n options={options}\n visibleCount={visibleCount}\n overscanCount={overscanCount}\n threshold={threshold}\n onLoadNext={onLoadNext}\n maxSelectedItems={maxSelectedItems}\n containerRef={containerRef}\n value={forwardedValue}\n onChange={setForwardedValue}\n id={listBoxId}\n size={size}\n />\n ) : (\n <NotFound>{notFoundText}</NotFound>\n )}\n </SelectMenu>\n </>\n );\n }\n);\n\nSelect.displayName = 'Select';\n\nexport default Select;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"defaultLocale.js","names":["defaultLocale","deleteLabel","clearLabel"],"sources":["../../../../src/Select/utils/defaultLocale.ts"],"sourcesContent":["export interface SelectLocale {\n deleteLabel: string;\n clearLabel: string;\n}\n\nconst defaultLocale: SelectLocale = {\n deleteLabel: 'Delete',\n clearLabel: 'Clear',\n};\n\nexport default defaultLocale;\n"],"mappings":"AAKA,MAAMA,aAA2B,GAAG;EAClCC,WAAW,EAAE,QADqB;EAElCC,UAAU,EAAE;AAFsB,CAApC;AAKA,eAAeF,aAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["styled","keyframes","React","forwardRef","omitEmotionProps","clr","SkeletonAnimation","StyledSkeleton","p","width","theme","skeletonColorBgFrom","skeletonColorBgTo","borderRadius","Skeleton","rest","ref","displayName"],"sources":["../../../src/Skeleton/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { keyframes } from '@emotion/react';\nimport React, { forwardRef } from 'react';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { clr } from '@os-design/theming';\n\ntype JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'ref'>;\nexport interface SkeletonProps extends JsxDivProps {\n /**\n * The width of the skeleton.\n * @default 100%\n */\n width?: string;\n}\n\nconst SkeletonAnimation = keyframes`\n from { background-position: 100% 50%; }\n to { background-position: 0 50%; }\n`;\n\ntype StyledSkeletonProps = Required<Pick<SkeletonProps, 'width'>>;\nconst StyledSkeleton = styled(\n 'div',\n omitEmotionProps('width', 'size')\n)<StyledSkeletonProps>`\n width: ${(p) => p.width};\n height: 1em;\n\n background: linear-gradient(\n 90deg,\n ${(p) => clr(p.theme.skeletonColorBgFrom)} 25%,\n ${(p) => clr(p.theme.skeletonColorBgTo)} 37%,\n ${(p) => clr(p.theme.skeletonColorBgFrom)} 63%\n );\n background-size: 400% 100%;\n\n border-radius: ${(p) => p.theme.borderRadius}em;\n animation: ${SkeletonAnimation} 1.4s ease infinite;\n`;\n\n/**\n * Provides a basic placeholder while a user waits for the content to load.\n */\nconst Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n ({ width = '100%', ...rest }, ref) => (\n <StyledSkeleton width={width} aria-busy {...rest} ref={ref} />\n )\n);\n\nSkeleton.displayName = 'Skeleton';\n\nexport default Skeleton;\n"],"mappings":";;AAAA,OAAOA,MAAP,MAAmB,iBAAnB;AACA,SAASC,SAAT,QAA0B,gBAA1B;AACA,OAAOC,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,SAASC,gBAAT,QAAiC,kBAAjC;AACA,SAASC,GAAT,QAAoB,oBAApB;AAWA,MAAMC,iBAAiB,GAAGL,SAAU;AACpC;AACA;AACA,CAHA;AAMA,MAAMM,cAAc,GAAGP,MAAM,CAC3B,KAD2B,EAE3BI,gBAAgB,CAAC,OAAD,EAAU,MAAV,CAFW,CAGN;AACvB,WAAYI,CAAD,IAAOA,CAAC,CAACC,KAAM;AAC1B;AACA;AACA;AACA;AACA,MAAOD,CAAD,IAAOH,GAAG,CAACG,CAAC,CAACE,KAAF,CAAQC,mBAAT,CAA8B;AAC9C,MAAOH,CAAD,IAAOH,GAAG,CAACG,CAAC,CAACE,KAAF,CAAQE,iBAAT,CAA4B;AAC5C,MAAOJ,CAAD,IAAOH,GAAG,CAACG,CAAC,CAACE,KAAF,CAAQC,mBAAT,CAA8B;AAC9C;AACA;AACA;AACA,mBAAoBH,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQG,YAAa;AAC/C,eAAeP,iBAAkB;AACjC,CAjBA;AAmBA;AACA;AACA;;AACA,MAAMQ,QAAQ,gBAAGX,UAAU,CACzB,CAAC;EAAEM,KAAK,GAAG,MAAV;EAAkB,GAAGM;AAArB,CAAD,EAA8BC,GAA9B,kBACE,oBAAC,cAAD;EAAgB,KAAK,EAAEP,KAAvB;EAA8B;AAA9B,GAA4CM,IAA5C;EAAkD,GAAG,EAAEC;AAAvD,GAFuB,CAA3B;AAMAF,QAAQ,CAACG,WAAT,GAAuB,UAAvB;AAEA,eAAeH,QAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","forwardRef","styled","css","resetButtonStyles","sizeStyles","transitionStyles","omitEmotionProps","useForwardedState","clr","FRACTION_DIGITS","uncheckedStyles","p","checked","theme","switchUncheckedColorBg","switchHeight","switchCircleSize","toFixed","checkedStyles","switchCheckedColorBg","switchWidth","hoverUncheckedStyles","switchUncheckedColorBgHover","hoverCheckedStyles","switchCheckedColorBgHover","hoverStyles","disabled","disabledUncheckedStyles","switchDisabledUncheckedColorBg","disabledCheckedStyles","switchDisabledCheckedColorBg","disabledStyles","StyledSwitch","switchColorCircleBg","Switch","value","defaultValue","onChange","size","onMouseDown","rest","ref","forwardedValue","setForwardedValue","e","preventDefault","displayName"],"sources":["../../../src/Switch/index.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport styled from '@emotion/styled';\nimport { css } from '@emotion/react';\nimport {\n resetButtonStyles,\n sizeStyles,\n transitionStyles,\n WithSize,\n} from '@os-design/styles';\nimport { omitEmotionProps, useForwardedState } from '@os-design/utils';\nimport { clr } from '@os-design/theming';\n\ntype JsxButtonProps = Omit<\n JSX.IntrinsicElements['button'],\n 'value' | 'defaultValue' | 'onChange' | 'onClick' | 'ref'\n>;\nexport interface SwitchProps extends JsxButtonProps, WithSize {\n /**\n * Whether the switch is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Whether the switch is checked.\n * @default false\n */\n value?: boolean;\n /**\n * The default value.\n * @default undefined\n */\n defaultValue?: boolean;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: boolean) => void;\n}\n\nconst FRACTION_DIGITS = 4;\n\nconst uncheckedStyles = (p) =>\n !p.checked &&\n css`\n background-color: ${clr(p.theme.switchUncheckedColorBg)};\n &::after {\n left: ${+((p.theme.switchHeight - p.theme.switchCircleSize) / 2).toFixed(\n FRACTION_DIGITS\n )}em;\n }\n `;\n\nconst checkedStyles = (p) =>\n p.checked &&\n css`\n background-color: ${clr(p.theme.switchCheckedColorBg)};\n &::after {\n left: ${+(\n p.theme.switchWidth -\n p.theme.switchCircleSize -\n (p.theme.switchHeight - p.theme.switchCircleSize) / 2\n ).toFixed(FRACTION_DIGITS)}em;\n }\n `;\n\nconst hoverUncheckedStyles = (p) =>\n !p.checked &&\n css`\n background-color: ${clr(p.theme.switchUncheckedColorBgHover)};\n `;\n\nconst hoverCheckedStyles = (p) =>\n p.checked &&\n css`\n background-color: ${clr(p.theme.switchCheckedColorBgHover)};\n `;\n\nconst hoverStyles = (p) =>\n !p.disabled &&\n css`\n @media (hover: hover) {\n &:hover,\n &:focus {\n ${hoverUncheckedStyles(p)};\n ${hoverCheckedStyles(p)};\n }\n }\n `;\n\nconst disabledUncheckedStyles = (p) =>\n !p.checked &&\n css`\n background-color: ${clr(p.theme.switchDisabledUncheckedColorBg)};\n `;\n\nconst disabledCheckedStyles = (p) =>\n p.checked &&\n css`\n background-color: ${clr(p.theme.switchDisabledCheckedColorBg)};\n `;\n\nconst disabledStyles = (p) =>\n p.disabled &&\n css`\n cursor: not-allowed;\n ${disabledUncheckedStyles(p)};\n ${disabledCheckedStyles(p)};\n `;\n\ninterface StyledSwitchProps extends Pick<SwitchProps, 'disabled' | 'size'> {\n checked: SwitchProps['value'];\n}\nconst StyledSwitch = styled(\n 'button',\n omitEmotionProps('size', 'checked')\n)<StyledSwitchProps>`\n ${resetButtonStyles};\n position: relative;\n cursor: pointer;\n user-select: none;\n display: block;\n\n width: ${(p) => p.theme.switchWidth}em;\n height: ${(p) => p.theme.switchHeight}em;\n border-radius: ${(p) => p.theme.switchHeight / 2}em;\n\n &::after {\n position: absolute;\n top: ${(p) =>\n +((p.theme.switchHeight - p.theme.switchCircleSize) / 2).toFixed(\n FRACTION_DIGITS\n )}em;\n\n width: ${(p) => p.theme.switchCircleSize}em;\n height: ${(p) => p.theme.switchCircleSize}em;\n border-radius: 50%;\n\n background-color: ${(p) => clr(p.theme.switchColorCircleBg)};\n content: ' ';\n\n ${transitionStyles('left')};\n }\n\n ${uncheckedStyles};\n ${checkedStyles};\n ${hoverStyles};\n ${disabledStyles};\n\n ${sizeStyles};\n ${transitionStyles('background-color')};\n`;\n\n/**\n * The switch that can be enabled or disabled.\n */\nconst Switch = forwardRef<HTMLButtonElement, SwitchProps>(\n (\n {\n disabled = false,\n value,\n defaultValue,\n onChange = () => {},\n size,\n onMouseDown = () => {},\n ...rest\n },\n ref\n ) => {\n const [forwardedValue, setForwardedValue] = useForwardedState({\n value,\n defaultValue,\n onChange,\n });\n\n return (\n <StyledSwitch\n disabled={disabled}\n checked={forwardedValue}\n size={size}\n onClick={() => {\n if (disabled) return;\n setForwardedValue(!forwardedValue);\n }}\n onMouseDown={(e) => {\n onMouseDown(e);\n e.preventDefault();\n }}\n role='switch'\n aria-checked={forwardedValue}\n {...rest}\n ref={ref}\n />\n );\n }\n);\n\nSwitch.displayName = 'Switch';\n\nexport default Switch;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["styled","React","forwardRef","sizeStyles","omitEmotionProps","Skeleton","StyledSwitchSkeleton","p","theme","switchWidth","switchHeight","SwitchSkeleton","props","ref","displayName"],"sources":["../../../src/SwitchSkeleton/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport React, { forwardRef } from 'react';\nimport { sizeStyles, WithSize } from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport Skeleton, { SkeletonProps } from '../Skeleton';\n\nexport type SwitchSkeletonProps = Omit<SkeletonProps, 'width'> & WithSize;\n\nconst StyledSwitchSkeleton = styled(\n Skeleton,\n omitEmotionProps('size')\n)<WithSize>`\n width: ${(p) => p.theme.switchWidth}em;\n height: ${(p) => p.theme.switchHeight}em;\n border-radius: ${(p) => p.theme.switchHeight / 2}em;\n ${sizeStyles};\n`;\n\n/**\n * Provides a switch placeholder while a user waits for the content to load.\n */\nconst SwitchSkeleton = forwardRef<HTMLDivElement, SwitchSkeletonProps>(\n (props, ref) => <StyledSwitchSkeleton width='100%' {...props} ref={ref} />\n);\n\nSwitchSkeleton.displayName = 'SwitchSkeleton';\n\nexport default SwitchSkeleton;\n"],"mappings":";;AAAA,OAAOA,MAAP,MAAmB,iBAAnB;AACA,OAAOC,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,SAASC,UAAT,QAAqC,mBAArC;AACA,SAASC,gBAAT,QAAiC,kBAAjC;AACA,OAAOC,QAAP,MAAwC,aAAxC;AAIA,MAAMC,oBAAoB,GAAGN,MAAM,CACjCK,QADiC,EAEjCD,gBAAgB,CAAC,MAAD,CAFiB,CAGvB;AACZ,WAAYG,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQC,WAAY;AACtC,YAAaF,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQE,YAAa;AACxC,mBAAoBH,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQE,YAAR,GAAuB,CAAE;AACnD,IAAIP,UAAW;AACf,CARA;AAUA;AACA;AACA;;AACA,MAAMQ,cAAc,gBAAGT,UAAU,CAC/B,CAACU,KAAD,EAAQC,GAAR,kBAAgB,oBAAC,oBAAD;EAAsB,KAAK,EAAC;AAA5B,GAAuCD,KAAvC;EAA8C,GAAG,EAAEC;AAAnD,GADe,CAAjC;AAIAF,cAAc,CAACG,WAAf,GAA6B,gBAA7B;AAEA,eAAeH,cAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","forwardRef","styled","ellipsisStyles","sizeStyles","transitionStyles","omitEmotionProps","clr","TagContainer","p","theme","tagColorBg","tagColorText","borderRadius","tagPaddingVertical","tagPaddingHorizontal","Content","div","LeftAddon","tagAddonPaddingHorizontal","RightAddon","Tag","left","right","children","rest","ref","displayName"],"sources":["../../../src/Tag/index.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport styled from '@emotion/styled';\nimport {\n ellipsisStyles,\n sizeStyles,\n transitionStyles,\n WithSize,\n} from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { clr } from '@os-design/theming';\n\ntype JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'ref'>;\n\nexport interface BaseTagProps extends WithSize {\n /**\n * The component located on the left side.\n * @default undefined\n */\n left?: React.ReactNode;\n /**\n * The component located on the right side.\n * @default undefined\n */\n right?: React.ReactNode;\n}\n\nexport type TagProps = JsxDivProps & BaseTagProps;\n\nexport const TagContainer = styled('div', omitEmotionProps('size'))<WithSize>`\n display: inline-flex;\n align-items: center;\n overflow: hidden;\n\n background-color: ${(p) => clr(p.theme.tagColorBg)};\n color: ${(p) => clr(p.theme.tagColorText)};\n\n border-radius: ${(p) => p.theme.borderRadius}em;\n padding: ${(p) => p.theme.tagPaddingVertical}em\n ${(p) => p.theme.tagPaddingHorizontal}em;\n\n ${sizeStyles};\n ${transitionStyles('background-color')};\n`;\n\nconst Content = styled.div`\n ${ellipsisStyles};\n`;\n\nexport const LeftAddon = styled.div`\n display: inherit;\n padding-right: ${(p) => p.theme.tagAddonPaddingHorizontal}em;\n`;\n\nexport const RightAddon = styled.div`\n display: inherit;\n padding-left: ${(p) => p.theme.tagAddonPaddingHorizontal}em;\n`;\n\n/**\n * The component to display a label, tag, or category.\n */\nconst Tag = forwardRef<HTMLDivElement, TagProps>(\n ({ left, right, children, ...rest }, ref) => (\n <TagContainer {...rest} ref={ref}>\n {left && <LeftAddon>{left}</LeftAddon>}\n <Content>{children}</Content>\n {right && <RightAddon>{right}</RightAddon>}\n </TagContainer>\n )\n);\n\nTag.displayName = 'Tag';\n\nexport default Tag;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,SACEC,cADF,EAEEC,UAFF,EAGEC,gBAHF,QAKO,mBALP;AAMA,SAASC,gBAAT,QAAiC,kBAAjC;AACA,SAASC,GAAT,QAAoB,oBAApB;AAmBA,OAAO,MAAMC,YAAY,GAAGN,MAAM,CAAC,KAAD,EAAQI,gBAAgB,CAAC,MAAD,CAAxB,CAA4C;AAC9E;AACA;AACA;AACA;AACA,sBAAuBG,CAAD,IAAOF,GAAG,CAACE,CAAC,CAACC,KAAF,CAAQC,UAAT,CAAqB;AACrD,WAAYF,CAAD,IAAOF,GAAG,CAACE,CAAC,CAACC,KAAF,CAAQE,YAAT,CAAuB;AAC5C;AACA,mBAAoBH,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQG,YAAa;AAC/C,aAAcJ,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQI,kBAAmB;AAC/C,MAAOL,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQK,oBAAqB;AAC1C;AACA,IAAIX,UAAW;AACf,IAAIC,gBAAgB,CAAC,kBAAD,CAAqB;AACzC,CAdO;AAgBP,MAAMW,OAAO,GAAGd,MAAM,CAACe,GAAI;AAC3B,IAAId,cAAe;AACnB,CAFA;AAIA,OAAO,MAAMe,SAAS,GAAGhB,MAAM,CAACe,GAAI;AACpC;AACA,mBAAoBR,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQS,yBAA0B;AAC5D,CAHO;AAKP,OAAO,MAAMC,UAAU,GAAGlB,MAAM,CAACe,GAAI;AACrC;AACA,kBAAmBR,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQS,yBAA0B;AAC3D,CAHO;AAKP;AACA;AACA;;AACA,MAAME,GAAG,gBAAGpB,UAAU,CACpB,CAAC;EAAEqB,IAAF;EAAQC,KAAR;EAAeC,QAAf;EAAyB,GAAGC;AAA5B,CAAD,EAAqCC,GAArC,kBACE,oBAAC,YAAD,eAAkBD,IAAlB;EAAwB,GAAG,EAAEC;AAA7B,IACGJ,IAAI,iBAAI,oBAAC,SAAD,QAAYA,IAAZ,CADX,eAEE,oBAAC,OAAD,QAAUE,QAAV,CAFF,EAGGD,KAAK,iBAAI,oBAAC,UAAD,QAAaA,KAAb,CAHZ,CAFkB,CAAtB;AAUAF,GAAG,CAACM,WAAJ,GAAkB,KAAlB;AAEA,eAAeN,GAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","forwardRef","styled","clr","omitEmotionProps","TagContainer","LeftAddon","RightAddon","StyledTagLink","withComponent","p","theme","tagColorBgHover","TagLink","left","right","as","onMouseDown","children","rest","ref","e","preventDefault","displayName"],"sources":["../../../src/TagLink/index.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport styled from '@emotion/styled';\nimport { clr } from '@os-design/theming';\nimport { omitEmotionProps } from '@os-design/utils';\nimport { BaseTagProps, TagContainer, LeftAddon, RightAddon } from '../Tag';\nimport { LinkProps, ReactRouterLinkProps } from '../Link';\n\ntype JsxAProps = Omit<JSX.IntrinsicElements['a'], 'ref'>;\nexport type TagLinkProps = JsxAProps &\n ReactRouterLinkProps &\n Pick<LinkProps, 'as'> &\n BaseTagProps;\n\nconst StyledTagLink = styled(\n TagContainer.withComponent('a'),\n omitEmotionProps('as')\n)`\n cursor: pointer;\n text-decoration: none;\n\n @media (hover: hover) {\n &:hover,\n &:focus {\n background-color: ${(p) => clr(p.theme.tagColorBgHover)};\n }\n }\n`;\n\n/**\n * The tag component with a link.\n */\nconst TagLink = forwardRef<HTMLAnchorElement, TagLinkProps>(\n ({ left, right, as, onMouseDown = () => {}, children, ...rest }, ref) => (\n <StyledTagLink\n as={as}\n onMouseDown={(e) => {\n onMouseDown(e);\n e.preventDefault();\n }}\n {...rest}\n ref={ref}\n >\n {left && <LeftAddon>{left}</LeftAddon>}\n {children}\n {right && <RightAddon>{right}</RightAddon>}\n </StyledTagLink>\n )\n);\n\nTagLink.displayName = 'TagLink';\n\nexport default TagLink;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,SAASC,GAAT,QAAoB,oBAApB;AACA,SAASC,gBAAT,QAAiC,kBAAjC;AACA,SAAuBC,YAAvB,EAAqCC,SAArC,EAAgDC,UAAhD,QAAkE,QAAlE;AASA,MAAMC,aAAa,GAAGN,MAAM,CAC1BG,YAAY,CAACI,aAAb,CAA2B,GAA3B,CAD0B,EAE1BL,gBAAgB,CAAC,IAAD,CAFU,CAG1B;AACF;AACA;AACA;AACA;AACA;AACA;AACA,0BAA2BM,CAAD,IAAOP,GAAG,CAACO,CAAC,CAACC,KAAF,CAAQC,eAAT,CAA0B;AAC9D;AACA;AACA,CAbA;AAeA;AACA;AACA;;AACA,MAAMC,OAAO,gBAAGZ,UAAU,CACxB,CAAC;EAAEa,IAAF;EAAQC,KAAR;EAAeC,EAAf;EAAmBC,WAAW,GAAG,MAAM,CAAE,CAAzC;EAA2CC,QAA3C;EAAqD,GAAGC;AAAxD,CAAD,EAAiEC,GAAjE,kBACE,oBAAC,aAAD;EACE,EAAE,EAAEJ,EADN;EAEE,WAAW,EAAGK,CAAD,IAAO;IAClBJ,WAAW,CAACI,CAAD,CAAX;IACAA,CAAC,CAACC,cAAF;EACD;AALH,GAMMH,IANN;EAOE,GAAG,EAAEC;AAPP,IASGN,IAAI,iBAAI,oBAAC,SAAD,QAAYA,IAAZ,CATX,EAUGI,QAVH,EAWGH,KAAK,iBAAI,oBAAC,UAAD,QAAaA,KAAb,CAXZ,CAFsB,CAA1B;AAkBAF,OAAO,CAACU,WAAR,GAAsB,SAAtB;AAEA,eAAeV,OAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","forwardRef","useState","styled","css","Down","Up","sizeStyles","omitEmotionProps","Button","collapsibleStyles","p","collapsible","opened","theme","lineHeight","tagPaddingVertical","Container","Content","div","tagListGap","Control","OpenButton","TagList","size","children","rest","ref","setOpened","displayName"],"sources":["../../../src/TagList/index.tsx"],"sourcesContent":["import React, { forwardRef, useState } from 'react';\nimport styled from '@emotion/styled';\nimport { css } from '@emotion/react';\nimport { Down, Up } from '@os-design/icons';\nimport { sizeStyles, WithSize } from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport Button from '../Button';\n\ntype JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'ref'>;\nexport interface TagListProps extends JsxDivProps, WithSize {\n /**\n * Whether the tag list is collapsible.\n * @default false\n */\n collapsible?: boolean;\n}\n\nconst collapsibleStyles = (p) =>\n p.collapsible &&\n !p.opened &&\n css`\n // The height of the tag\n height: ${p.theme.lineHeight + p.theme.tagPaddingVertical * 2}em;\n `;\n\ninterface ContainerProps extends Pick<TagListProps, 'collapsible' | 'size'> {\n opened: boolean;\n}\nconst Container = styled(\n 'div',\n omitEmotionProps('opened', 'collapsible', 'size')\n)<ContainerProps>`\n display: flex;\n overflow: hidden;\n ${collapsibleStyles};\n ${sizeStyles};\n`;\n\nconst Content = styled.div`\n display: flex;\n flex-wrap: wrap;\n flex-grow: 1;\n\n margin: ${(p) => -p.theme.tagListGap}em 0 0 ${(p) => -p.theme.tagListGap}em;\n & > * {\n margin: ${(p) => p.theme.tagListGap}em 0 0 ${(p) => p.theme.tagListGap}em;\n }\n`;\n\nconst Control = styled.div`\n margin-left: 0.2em;\n`;\n\nconst OpenButton = styled(Button)`\n // The height of the tag\n height: ${(p) => p.theme.lineHeight + p.theme.tagPaddingVertical * 2}em;\n padding: 0 0.5em;\n`;\n\n/**\n * The component to display a list of tags.\n */\nconst TagList = forwardRef<HTMLDivElement, TagListProps>(\n ({ collapsible = false, size, children, ...rest }, ref) => {\n const [opened, setOpened] = useState(false);\n\n return (\n <Container\n opened={opened}\n collapsible={collapsible}\n size={size}\n {...rest}\n ref={ref}\n >\n <Content>{children}</Content>\n\n {collapsible && (\n <Control>\n <OpenButton\n type='ghost'\n wide='never'\n onClick={() => setOpened(!opened)}\n >\n {opened ? <Up /> : <Down />}\n </OpenButton>\n </Control>\n )}\n </Container>\n );\n }\n);\n\nTagList.displayName = 'TagList';\n\nexport default TagList;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,EAA4BC,QAA5B,QAA4C,OAA5C;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AACA,SAASC,GAAT,QAAoB,gBAApB;AACA,SAASC,IAAT,EAAeC,EAAf,QAAyB,kBAAzB;AACA,SAASC,UAAT,QAAqC,mBAArC;AACA,SAASC,gBAAT,QAAiC,kBAAjC;AACA,OAAOC,MAAP,MAAmB,WAAnB;;AAWA,MAAMC,iBAAiB,GAAIC,CAAD,IACxBA,CAAC,CAACC,WAAF,IACA,CAACD,CAAC,CAACE,MADH,IAEAT,GAAI;AACN;AACA,cAAcO,CAAC,CAACG,KAAF,CAAQC,UAAR,GAAqBJ,CAAC,CAACG,KAAF,CAAQE,kBAAR,GAA6B,CAAE;AAClE,GANA;;AAWA,MAAMC,SAAS,GAAGd,MAAM,CACtB,KADsB,EAEtBK,gBAAgB,CAAC,QAAD,EAAW,aAAX,EAA0B,MAA1B,CAFM,CAGN;AAClB;AACA;AACA,IAAIE,iBAAkB;AACtB,IAAIH,UAAW;AACf,CARA;AAUA,MAAMW,OAAO,GAAGf,MAAM,CAACgB,GAAI;AAC3B;AACA;AACA;AACA;AACA,YAAaR,CAAD,IAAO,CAACA,CAAC,CAACG,KAAF,CAAQM,UAAW,UAAUT,CAAD,IAAO,CAACA,CAAC,CAACG,KAAF,CAAQM,UAAW;AAC3E;AACA,cAAeT,CAAD,IAAOA,CAAC,CAACG,KAAF,CAAQM,UAAW,UAAUT,CAAD,IAAOA,CAAC,CAACG,KAAF,CAAQM,UAAW;AAC3E;AACA,CATA;AAWA,MAAMC,OAAO,GAAGlB,MAAM,CAACgB,GAAI;AAC3B;AACA,CAFA;AAIA,MAAMG,UAAU,GAAGnB,MAAM,CAACM,MAAD,CAAS;AAClC;AACA,YAAaE,CAAD,IAAOA,CAAC,CAACG,KAAF,CAAQC,UAAR,GAAqBJ,CAAC,CAACG,KAAF,CAAQE,kBAAR,GAA6B,CAAE;AACvE;AACA,CAJA;AAMA;AACA;AACA;;AACA,MAAMO,OAAO,gBAAGtB,UAAU,CACxB,CAAC;EAAEW,WAAW,GAAG,KAAhB;EAAuBY,IAAvB;EAA6BC,QAA7B;EAAuC,GAAGC;AAA1C,CAAD,EAAmDC,GAAnD,KAA2D;EACzD,MAAM,CAACd,MAAD,EAASe,SAAT,IAAsB1B,QAAQ,CAAC,KAAD,CAApC;EAEA,oBACE,oBAAC,SAAD;IACE,MAAM,EAAEW,MADV;IAEE,WAAW,EAAED,WAFf;IAGE,IAAI,EAAEY;EAHR,GAIME,IAJN;IAKE,GAAG,EAAEC;EALP,iBAOE,oBAAC,OAAD,QAAUF,QAAV,CAPF,EASGb,WAAW,iBACV,oBAAC,OAAD,qBACE,oBAAC,UAAD;IACE,IAAI,EAAC,OADP;IAEE,IAAI,EAAC,OAFP;IAGE,OAAO,EAAE,MAAMgB,SAAS,CAAC,CAACf,MAAF;EAH1B,GAKGA,MAAM,gBAAG,oBAAC,EAAD,OAAH,gBAAY,oBAAC,IAAD,OALrB,CADF,CAVJ,CADF;AAuBD,CA3BuB,CAA1B;AA8BAU,OAAO,CAACM,WAAR,GAAsB,SAAtB;AAEA,eAAeN,OAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","forwardRef","TagList","TagSkeleton","tagIndex","TagListSkeleton","width","tagsCount","rest","ref","Array","fill","map","displayName"],"sources":["../../../src/TagListSkeleton/index.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport TagList, { TagListProps } from '../TagList';\nimport TagSkeleton from '../TagSkeleton';\n\nexport interface TagListSkeletonProps extends TagListProps {\n /**\n * The width of the tag skeleton.\n * @default undefined\n */\n width?: string;\n /**\n * The number of tag skeletons.\n * @default 3\n */\n tagsCount?: number;\n}\n\nlet tagIndex = 0;\n\n/**\n * Provides a tag list placeholder while a user waits for the content to load.\n */\nconst TagListSkeleton = forwardRef<HTMLDivElement, TagListSkeletonProps>(\n ({ width, tagsCount = 3, ...rest }, ref) => (\n <TagList {...rest} ref={ref}>\n {Array(tagsCount)\n .fill({})\n .map(() => {\n tagIndex += 1;\n return <TagSkeleton key={tagIndex} width={width} />;\n })}\n </TagList>\n )\n);\n\nTagListSkeleton.displayName = 'TagListSkeleton';\n\nexport default TagListSkeleton;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,OAAOC,OAAP,MAAsC,YAAtC;AACA,OAAOC,WAAP,MAAwB,gBAAxB;AAeA,IAAIC,QAAQ,GAAG,CAAf;AAEA;AACA;AACA;;AACA,MAAMC,eAAe,gBAAGJ,UAAU,CAChC,CAAC;EAAEK,KAAF;EAASC,SAAS,GAAG,CAArB;EAAwB,GAAGC;AAA3B,CAAD,EAAoCC,GAApC,kBACE,oBAAC,OAAD,eAAaD,IAAb;EAAmB,GAAG,EAAEC;AAAxB,IACGC,KAAK,CAACH,SAAD,CAAL,CACEI,IADF,CACO,EADP,EAEEC,GAFF,CAEM,MAAM;EACTR,QAAQ,IAAI,CAAZ;EACA,oBAAO,oBAAC,WAAD;IAAa,GAAG,EAAEA,QAAlB;IAA4B,KAAK,EAAEE;EAAnC,EAAP;AACD,CALF,CADH,CAF8B,CAAlC;AAaAD,eAAe,CAACQ,WAAhB,GAA8B,iBAA9B;AAEA,eAAeR,eAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["styled","React","forwardRef","sizeStyles","omitEmotionProps","Skeleton","StyledTagSkeleton","p","width","theme","lineHeight","tagPaddingVertical","TagSkeleton","rest","ref","displayName"],"sources":["../../../src/TagSkeleton/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport React, { forwardRef } from 'react';\nimport { sizeStyles, WithSize } from '@os-design/styles';\nimport { omitEmotionProps } from '@os-design/utils';\nimport Skeleton, { SkeletonProps } from '../Skeleton';\n\nexport interface TagSkeletonProps\n extends Omit<SkeletonProps, 'width'>,\n WithSize {\n /**\n * The width of the skeleton.\n * @default 6em\n */\n width?: string;\n}\n\ntype StyledTagSkeletonProps = Pick<TagSkeletonProps, 'width' | 'size'>;\nconst StyledTagSkeleton = styled(\n Skeleton,\n omitEmotionProps('width', 'size')\n)<StyledTagSkeletonProps>`\n width: ${(p) => p.width};\n height: ${(p) => p.theme.lineHeight + p.theme.tagPaddingVertical * 2}em;\n ${sizeStyles};\n`;\n\n/**\n * Provides a tag placeholder while a user waits for the content to load.\n */\nconst TagSkeleton = forwardRef<HTMLDivElement, TagSkeletonProps>(\n ({ width = '6em', ...rest }, ref) => (\n <StyledTagSkeleton width={width} {...rest} ref={ref} />\n )\n);\n\nTagSkeleton.displayName = 'TagSkeleton';\n\nexport default TagSkeleton;\n"],"mappings":";;AAAA,OAAOA,MAAP,MAAmB,iBAAnB;AACA,OAAOC,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,SAASC,UAAT,QAAqC,mBAArC;AACA,SAASC,gBAAT,QAAiC,kBAAjC;AACA,OAAOC,QAAP,MAAwC,aAAxC;AAaA,MAAMC,iBAAiB,GAAGN,MAAM,CAC9BK,QAD8B,EAE9BD,gBAAgB,CAAC,OAAD,EAAU,MAAV,CAFc,CAGN;AAC1B,WAAYG,CAAD,IAAOA,CAAC,CAACC,KAAM;AAC1B,YAAaD,CAAD,IAAOA,CAAC,CAACE,KAAF,CAAQC,UAAR,GAAqBH,CAAC,CAACE,KAAF,CAAQE,kBAAR,GAA6B,CAAE;AACvE,IAAIR,UAAW;AACf,CAPA;AASA;AACA;AACA;;AACA,MAAMS,WAAW,gBAAGV,UAAU,CAC5B,CAAC;EAAEM,KAAK,GAAG,KAAV;EAAiB,GAAGK;AAApB,CAAD,EAA6BC,GAA7B,kBACE,oBAAC,iBAAD;EAAmB,KAAK,EAAEN;AAA1B,GAAqCK,IAArC;EAA2C,GAAG,EAAEC;AAAhD,GAF0B,CAA9B;AAMAF,WAAW,CAACG,WAAZ,GAA0B,aAA1B;AAEA,eAAeH,WAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","forwardRef","styled","InputContainer","StyledInput","TextAreaContainer","p","theme","textAreaHeight","TextAreaField","withComponent","textAreaPaddingVertical","lineHeight","TextArea","disabled","size","onChange","rest","ref","e","target","value","displayName"],"sources":["../../../src/TextArea/index.tsx"],"sourcesContent":["import React, { ChangeEvent, forwardRef } from 'react';\nimport styled from '@emotion/styled';\nimport { WithSize } from '@os-design/styles';\nimport { InputContainer, StyledInput } from '../Input';\n\ntype JsxTextAreaProps = Omit<\n JSX.IntrinsicElements['textarea'],\n 'value' | 'onChange' | 'ref'\n>;\nexport interface TextAreaProps extends JsxTextAreaProps, WithSize {\n /**\n * Whether the textarea is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * The textarea value.\n * @default undefined\n */\n value?: string;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: string, e: ChangeEvent<HTMLTextAreaElement>) => void;\n}\n\nconst TextAreaContainer = styled(InputContainer)`\n height: ${(p) => p.theme.textAreaHeight}em;\n`;\n\nconst TextAreaField = styled(StyledInput.withComponent('textarea'))`\n padding-top: ${(p) => p.theme.textAreaPaddingVertical}em;\n padding-bottom: ${(p) => p.theme.textAreaPaddingVertical}em;\n line-height: ${(p) => p.theme.lineHeight};\n`;\n\n/**\n * The multiline input component.\n */\nconst TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n ({ disabled = false, size, onChange = () => {}, ...rest }, ref) => (\n <TextAreaContainer disabled={disabled} size={size}>\n <TextAreaField\n disabled={disabled}\n onChange={(e) => onChange(e.target.value, e)}\n {...rest}\n ref={ref}\n />\n </TextAreaContainer>\n )\n);\n\nTextArea.displayName = 'TextArea';\n\nexport default TextArea;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAA6BC,UAA7B,QAA+C,OAA/C;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AAEA,SAASC,cAAT,EAAyBC,WAAzB,QAA4C,UAA5C;AAwBA,MAAMC,iBAAiB,GAAGH,MAAM,CAACC,cAAD,CAAiB;AACjD,YAAaG,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQC,cAAe;AAC1C,CAFA;AAIA,MAAMC,aAAa,GAAGP,MAAM,CAACE,WAAW,CAACM,aAAZ,CAA0B,UAA1B,CAAD,CAAwC;AACpE,iBAAkBJ,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQI,uBAAwB;AACxD,oBAAqBL,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQI,uBAAwB;AAC3D,iBAAkBL,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQK,UAAW;AAC3C,CAJA;AAMA;AACA;AACA;;AACA,MAAMC,QAAQ,gBAAGZ,UAAU,CACzB,CAAC;EAAEa,QAAQ,GAAG,KAAb;EAAoBC,IAApB;EAA0BC,QAAQ,GAAG,MAAM,CAAE,CAA7C;EAA+C,GAAGC;AAAlD,CAAD,EAA2DC,GAA3D,kBACE,oBAAC,iBAAD;EAAmB,QAAQ,EAAEJ,QAA7B;EAAuC,IAAI,EAAEC;AAA7C,gBACE,oBAAC,aAAD;EACE,QAAQ,EAAED,QADZ;EAEE,QAAQ,EAAGK,CAAD,IAAOH,QAAQ,CAACG,CAAC,CAACC,MAAF,CAASC,KAAV,EAAiBF,CAAjB;AAF3B,GAGMF,IAHN;EAIE,GAAG,EAAEC;AAJP,GADF,CAFuB,CAA3B;AAaAL,QAAQ,CAACS,WAAT,GAAuB,UAAvB;AAEA,eAAeT,QAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["styled","React","forwardRef","InputSkeleton","StyledTextAreaSkeleton","p","theme","textAreaHeight","TextAreaSkeleton","props","ref","displayName"],"sources":["../../../src/TextAreaSkeleton/index.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport React, { forwardRef } from 'react';\nimport InputSkeleton, { InputSkeletonProps } from '../InputSkeleton';\n\nexport type TextAreaSkeletonProps = InputSkeletonProps;\n\nconst StyledTextAreaSkeleton = styled(InputSkeleton)`\n height: ${(p) => p.theme.textAreaHeight}em;\n`;\n\n/**\n * Provides a textarea placeholder while a user waits for the content to load.\n */\nconst TextAreaSkeleton = forwardRef<HTMLDivElement, TextAreaSkeletonProps>(\n (props, ref) => <StyledTextAreaSkeleton {...props} ref={ref} />\n);\n\nTextAreaSkeleton.displayName = 'TextAreaSkeleton';\n\nexport default TextAreaSkeleton;\n"],"mappings":";;AAAA,OAAOA,MAAP,MAAmB,iBAAnB;AACA,OAAOC,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,OAAOC,aAAP,MAAkD,kBAAlD;AAIA,MAAMC,sBAAsB,GAAGJ,MAAM,CAACG,aAAD,CAAgB;AACrD,YAAaE,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQC,cAAe;AAC1C,CAFA;AAIA;AACA;AACA;;AACA,MAAMC,gBAAgB,gBAAGN,UAAU,CACjC,CAACO,KAAD,EAAQC,GAAR,kBAAgB,oBAAC,sBAAD,eAA4BD,KAA5B;EAAmC,GAAG,EAAEC;AAAxC,GADiB,CAAnC;AAIAF,gBAAgB,CAACG,WAAjB,GAA+B,kBAA/B;AAEA,eAAeH,gBAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","forwardRef","useTheme","Moon","Sun","Button","ThemeSwitcher","onClick","rest","ref","activeTheme","setActiveTheme","e","displayName"],"sources":["../../../src/ThemeSwitcher/index.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { useTheme } from '@os-design/theming';\nimport { Moon, Sun } from '@os-design/icons';\nimport Button, { ButtonProps } from '../Button';\n\nexport type ThemeSwitcherProps = ButtonProps;\n\n/**\n * The button to switch the current theme.\n */\nconst ThemeSwitcher = forwardRef<HTMLButtonElement, ThemeSwitcherProps>(\n ({ onClick = () => {}, ...rest }, ref) => {\n const { activeTheme, setActiveTheme } = useTheme();\n\n return (\n <Button\n type='ghost'\n wide='never'\n onClick={(e) => {\n setActiveTheme(activeTheme === 'light' ? 'dark' : 'light');\n onClick(e);\n }}\n role='switch'\n aria-checked={activeTheme === 'dark'}\n aria-label='Dark theme'\n {...rest}\n ref={ref}\n >\n {activeTheme === 'light' ? <Moon /> : <Sun />}\n </Button>\n );\n }\n);\n\nThemeSwitcher.displayName = 'ThemeSwitcher';\n\nexport default ThemeSwitcher;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,SAASC,QAAT,QAAyB,oBAAzB;AACA,SAASC,IAAT,EAAeC,GAAf,QAA0B,kBAA1B;AACA,OAAOC,MAAP,MAAoC,WAApC;;AAIA;AACA;AACA;AACA,MAAMC,aAAa,gBAAGL,UAAU,CAC9B,CAAC;EAAEM,OAAO,GAAG,MAAM,CAAE,CAApB;EAAsB,GAAGC;AAAzB,CAAD,EAAkCC,GAAlC,KAA0C;EACxC,MAAM;IAAEC,WAAF;IAAeC;EAAf,IAAkCT,QAAQ,EAAhD;EAEA,oBACE,oBAAC,MAAD;IACE,IAAI,EAAC,OADP;IAEE,IAAI,EAAC,OAFP;IAGE,OAAO,EAAGU,CAAD,IAAO;MACdD,cAAc,CAACD,WAAW,KAAK,OAAhB,GAA0B,MAA1B,GAAmC,OAApC,CAAd;MACAH,OAAO,CAACK,CAAD,CAAP;IACD,CANH;IAOE,IAAI,EAAC,QAPP;IAQE,gBAAcF,WAAW,KAAK,MARhC;IASE,cAAW;EATb,GAUMF,IAVN;IAWE,GAAG,EAAEC;EAXP,IAaGC,WAAW,KAAK,OAAhB,gBAA0B,oBAAC,IAAD,OAA1B,gBAAqC,oBAAC,GAAD,OAbxC,CADF;AAiBD,CArB6B,CAAhC;AAwBAJ,aAAa,CAACO,WAAd,GAA4B,eAA5B;AAEA,eAAeP,aAAf"}
|