@artsy/palette 31.2.0 → 31.3.1
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/elements/AutocompleteInput/AutocompleteInput.js +5 -3
- package/dist/elements/AutocompleteInput/AutocompleteInput.js.map +1 -1
- package/dist/elements/Banner/Banner.js +2 -2
- package/dist/elements/Banner/Banner.js.map +1 -1
- package/dist/elements/BorderBox/BorderBox.d.ts +1 -1
- package/dist/elements/BorderBox/BorderBox.js +1 -1
- package/dist/elements/BorderBox/BorderBox.js.map +1 -1
- package/dist/elements/BorderedRadio/BorderedRadio.d.ts +1 -1
- package/dist/elements/Button/Button.d.ts +3 -2
- package/dist/elements/Button/Button.js +2 -2
- package/dist/elements/Button/Button.js.map +1 -1
- package/dist/elements/Button/Button.story.js +2 -2
- package/dist/elements/Button/Button.story.js.map +1 -1
- package/dist/elements/Carousel/Carousel.js +5 -5
- package/dist/elements/Carousel/Carousel.js.map +1 -1
- package/dist/elements/Checkbox/Check.js +3 -4
- package/dist/elements/Checkbox/Check.js.map +1 -1
- package/dist/elements/Expandable/Expandable.js +13 -5
- package/dist/elements/Expandable/Expandable.js.map +1 -1
- package/dist/elements/FilterSelect/Components/FilterInput.js +6 -4
- package/dist/elements/FilterSelect/Components/FilterInput.js.map +1 -1
- package/dist/elements/Modal/Modal.js +6 -5
- package/dist/elements/Modal/Modal.js.map +1 -1
- package/dist/elements/ModalDialog/ModalDialogContent.js +6 -8
- package/dist/elements/ModalDialog/ModalDialogContent.js.map +1 -1
- package/dist/elements/Pagination/Pagination.js +9 -9
- package/dist/elements/Pagination/Pagination.js.map +1 -1
- package/dist/elements/PasswordInput/PasswordInput.js +5 -7
- package/dist/elements/PasswordInput/PasswordInput.js.map +1 -1
- package/dist/elements/Pill/Pill.d.ts +5 -2
- package/dist/elements/Pill/Pill.js +2 -2
- package/dist/elements/Pill/Pill.js.map +1 -1
- package/dist/elements/Pill/Pill.story.js +2 -2
- package/dist/elements/Pill/Pill.story.js.map +1 -1
- package/dist/elements/Popover/Popover.js +2 -2
- package/dist/elements/Popover/Popover.js.map +1 -1
- package/dist/elements/Shelf/ShelfNavigation.js +5 -5
- package/dist/elements/Shelf/ShelfNavigation.js.map +1 -1
- package/dist/elements/Stepper/Stepper.js +5 -5
- package/dist/elements/Stepper/Stepper.js.map +1 -1
- package/dist/elements/Tabs/Tabs.d.ts +0 -2
- package/dist/elements/Tabs/Tabs.js.map +1 -1
- package/dist/elements/Tabs/Tabs.story.js +0 -8
- package/dist/elements/Tabs/Tabs.story.js.map +1 -1
- package/dist/elements/Tooltip/Tooltip.story.js +4 -2
- package/dist/elements/Tooltip/Tooltip.story.js.map +1 -1
- package/package.json +12 -6
|
@@ -19,7 +19,9 @@ var _ = require("..");
|
|
|
19
19
|
|
|
20
20
|
var _helpers = require("../../helpers");
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _SearchIcon = _interopRequireDefault(require("@artsy/icons/SearchIcon"));
|
|
23
|
+
|
|
24
|
+
var _CloseIcon = _interopRequireDefault(require("@artsy/icons/CloseIcon"));
|
|
23
25
|
|
|
24
26
|
var _utils = require("../../utils");
|
|
25
27
|
|
|
@@ -370,10 +372,10 @@ var AutocompleteInput = function AutocompleteInput(_ref) {
|
|
|
370
372
|
display: "flex",
|
|
371
373
|
alignItems: "center",
|
|
372
374
|
"aria-label": "Clear input"
|
|
373
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
375
|
+
}, /*#__PURE__*/_react.default.createElement(_CloseIcon.default, {
|
|
374
376
|
fill: "black60",
|
|
375
377
|
"aria-hidden": true
|
|
376
|
-
})) : /*#__PURE__*/_react.default.createElement(
|
|
378
|
+
})) : /*#__PURE__*/_react.default.createElement(_SearchIcon.default, {
|
|
377
379
|
fill: "black60",
|
|
378
380
|
"aria-hidden": true
|
|
379
381
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/AutocompleteInput/AutocompleteInput.tsx"],"names":["reducer","state","action","type","open","query","payload","AutocompleteInput","defaultValue","id","loading","footer","onSubmit","onSelect","onChange","onClear","onClose","onKeyDown","height","renderOption","option","options","rest","inputRef","containerRef","boxProps","inputProps","dispatch","optionsWithRefs","map","ref","resetUI","setTimeout","current","focus","reset","handleSelect","index","text","list","waitForInteractive","onEnter","element","i","event","preventDefault","stopPropagation","set","isDropdownVisible","length","position","offset","active","anchorRef","tooltipRef","width","handleFocus","handleMouseDown","handleMouseEnter","cursor","interactive","handleChange","value","currentTarget","handleClearOrSubmit","handleFocusChange","focused","containsFocusRef","handleInputKeydown","key","blur","handleContainerKeydown","staged","AutocompleteInputDropdown","Box","DROP_SHADOW","AutocompleteInputOptions"],"mappings":"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","sourcesContent":["import composeRefs from \"@seznam/compose-react-refs\"\nimport React, {\n createRef,\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n} from \"react\"\nimport styled from \"styled-components\"\nimport { useKeyboardListNavigation } from \"use-keyboard-list-navigation\"\nimport { Spinner } from \"..\"\nimport { DROP_SHADOW } from \"../../helpers\"\nimport { CloseIcon, MagnifyingGlassIcon } from \"../../svgs\"\nimport { usePosition, useContainsFocus } from \"../../utils\"\nimport { useWidthOf } from \"../../utils/useWidthOf\"\nimport { Box, splitBoxProps } from \"../Box\"\nimport { Clickable } from \"../Clickable\"\nimport { InputProps } from \"../Input\"\nimport { LabeledInput } from \"../LabeledInput\"\nimport { VisuallyHidden } from \"../VisuallyHidden\"\nimport { AutocompleteInputOption } from \"./AutocompleteInputOption\"\nimport { AutocompleteInputOptionLabel } from \"./AutocompleteInputOptionLabel\"\n\n/** Base option type — can be expanded */\nexport interface AutocompleteInputOptionType {\n text: string\n value: string\n}\n\ninterface State {\n open: boolean\n query: string\n}\n\ntype Action =\n | { type: \"OPEN\" }\n | { type: \"CLOSE\" }\n | { type: \"CLEAR\" }\n | { type: \"CHANGE\"; payload: { query: string } }\n | { type: \"SELECT\"; payload: { query: string } }\n\nconst reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"OPEN\":\n return { ...state, open: true }\n case \"CLOSE\":\n return { ...state, open: false }\n case \"CLEAR\":\n return { ...state, query: \"\" }\n case \"CHANGE\":\n return { ...state, query: action.payload.query, open: true }\n case \"SELECT\":\n return { ...state, query: action.payload.query, open: false }\n }\n}\n\nexport interface AutocompleteInputProps<T extends AutocompleteInputOptionType>\n extends Omit<InputProps, \"onSelect\" | \"onSubmit\"> {\n defaultValue?: string\n loading?: boolean\n footer?: React.ReactNode\n /** on <enter> when no option is selected */\n onSubmit?(query: string): void\n /** on <click> or <enter> when an option is selected */\n onSelect?(option: T, index: number): void\n /** on <click> of the 'x' (clear) button */\n onClear?(): void\n /** Callback that runs when options are hidden */\n onClose?(): void\n renderOption?(\n option: T,\n i: number\n ): React.ReactElement<any, string | React.JSXElementConstructor<any>>\n options: T[]\n}\n\n/** AutocompleteInput */\nexport const AutocompleteInput = <T extends AutocompleteInputOptionType>({\n defaultValue = \"\",\n id,\n loading,\n footer,\n onSubmit,\n onSelect,\n onChange,\n onClear,\n onClose,\n onKeyDown,\n height,\n renderOption = (option) => <AutocompleteInputOptionLabel {...option} />,\n options,\n ...rest\n}: AutocompleteInputProps<T>) => {\n const inputRef = useRef<HTMLInputElement | null>(null)\n const containerRef = useRef<HTMLDivElement | null>(null)\n\n const [boxProps, inputProps] = splitBoxProps(rest)\n\n const [state, dispatch] = useReducer(reducer, {\n open: false,\n query: defaultValue,\n })\n\n const optionsWithRefs = useMemo(() => {\n return options.map((option) => ({\n option,\n ref: createRef<HTMLButtonElement>(),\n }))\n }, [options])\n\n const resetUI = () => {\n setTimeout(() => {\n inputRef.current?.focus()\n reset()\n dispatch({ type: \"CLOSE\" })\n }, 100)\n }\n\n const handleSelect = (option: T, index: number) => {\n dispatch({ type: \"SELECT\", payload: { query: option.text } })\n inputRef.current?.focus()\n onSelect?.(option, index)\n }\n\n const { index, reset, set } = useKeyboardListNavigation({\n ref: containerRef,\n list: options,\n waitForInteractive: true,\n onEnter: ({ element: option, index: i, event }) => {\n event.preventDefault()\n event.stopPropagation()\n handleSelect(option, i)\n resetUI()\n },\n })\n\n const isDropdownVisible = state.open && options.length > 0\n\n // Reset keyboard navigation when options change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(reset, [options])\n\n // Reset keyboard navigation when query is empty\n useEffect(() => {\n if (state.query === \"\") reset()\n }, [reset, state.query])\n\n const { anchorRef, tooltipRef } = usePosition({\n position: \"bottom\",\n offset: 10,\n active: isDropdownVisible,\n })\n\n const { width } = useWidthOf({ ref: anchorRef })\n\n const handleFocus = () => {\n reset()\n dispatch({ type: \"OPEN\" })\n }\n\n const handleMouseDown = (option: T, i: number) => () => {\n handleSelect(option, i)\n resetUI()\n }\n\n const handleMouseEnter = (i: number) => () => {\n set({ cursor: i, interactive: true })\n }\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const {\n currentTarget: { value },\n } = event\n\n dispatch({ type: \"CHANGE\", payload: { query: value } })\n onChange?.(event)\n }\n\n const handleClearOrSubmit = () => {\n if (state.query === \"\") {\n onSubmit?.(state.query)\n return\n }\n\n dispatch({ type: \"CLEAR\" })\n inputRef.current?.focus()\n onClear?.()\n }\n\n // Moves focus to different options when keyboard navigating using up/down\n useEffect(() => {\n const option = optionsWithRefs[index]\n option?.ref?.current?.focus()\n }, [index, optionsWithRefs])\n\n const handleFocusChange = useCallback(\n (focused: boolean) => {\n if (focused || !isDropdownVisible) return\n\n dispatch({ type: \"CLOSE\" })\n reset()\n onClose?.()\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [onClose, isDropdownVisible]\n )\n\n // Handle closing the dropdown when clicking outside of the input\n // or when focus leaves the input completely\n const { ref: containsFocusRef } = useContainsFocus({\n onChange: handleFocusChange,\n })\n\n const handleInputKeydown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n switch (event.key) {\n // Handle <Enter> when nothing is selected\n case \"Enter\":\n if (state.query !== \"\" && index === -1) {\n onSubmit?.(state.query)\n resetUI()\n }\n return\n\n // <Esc> to close dropdown\n case \"Escape\":\n event.preventDefault()\n event.stopPropagation()\n\n dispatch({ type: \"CLOSE\" })\n inputRef.current?.blur()\n\n return\n\n default:\n break\n }\n\n onKeyDown?.(event)\n }\n\n // Moves focus back to input when typing\n const handleContainerKeydown = (\n event: React.KeyboardEvent<HTMLDivElement>\n ) => {\n switch (event.key) {\n case \"Alt\":\n case \"ArrowDown\":\n case \"ArrowUp\":\n case \"Control\":\n case \"Enter\":\n case \"Meta\":\n case \"Shift\":\n case \"Tab\":\n // Ignore\n return\n\n case \"Escape\":\n event.preventDefault()\n event.stopPropagation()\n\n dispatch({ type: \"CLOSE\" })\n inputRef.current?.blur()\n reset()\n\n return\n\n default:\n inputRef.current?.focus()\n }\n }\n\n // Option that is being hovered or keyed into\n const staged = options[index]\n\n return (\n <Box\n ref={composeRefs(containerRef, containsFocusRef) as any}\n onKeyDown={handleContainerKeydown}\n {...boxProps}\n >\n <LabeledInput\n ref={composeRefs(inputRef, anchorRef) as any}\n role=\"combobox\"\n aria-expanded={isDropdownVisible}\n aria-autocomplete=\"list\"\n {...(id ? { id, \"aria-describedby\": `${id}__assistiveHint` } : {})}\n label={\n loading ? (\n <Box width={18}>\n <Spinner size=\"small\" />\n </Box>\n ) : state.query ? (\n <Clickable\n onClick={handleClearOrSubmit}\n height=\"100%\"\n display=\"flex\"\n alignItems=\"center\"\n aria-label=\"Clear input\"\n >\n <CloseIcon fill=\"black60\" aria-hidden />\n </Clickable>\n ) : (\n <MagnifyingGlassIcon fill=\"black60\" aria-hidden />\n )\n }\n value={staged?.text ?? state.query}\n onChange={handleChange}\n onFocus={handleFocus}\n onKeyDown={handleInputKeydown}\n autoComplete=\"off\"\n height={height}\n {...inputProps}\n />\n\n {isDropdownVisible && (\n <AutocompleteInputDropdown\n ref={tooltipRef as any}\n role=\"listbox\"\n width={width}\n >\n <AutocompleteInputOptions>\n {optionsWithRefs.map(({ option, ref }, i) => {\n return (\n <AutocompleteInputOption\n key={i}\n ref={ref}\n role=\"option\"\n aria-selected={i === index}\n aria-posinset={i + 1}\n aria-setsize={options.length}\n onMouseDown={handleMouseDown(option, i)}\n onMouseEnter={handleMouseEnter(i)}\n selected={i === index}\n tabIndex={-1}\n >\n {renderOption(option, i)}\n </AutocompleteInputOption>\n )\n })}\n </AutocompleteInputOptions>\n\n {footer}\n </AutocompleteInputDropdown>\n )}\n\n <VisuallyHidden {...(id ? { id: `${id}__assistiveHint` } : {})}>\n When autocomplete results are available use up and down arrows to review\n and enter to select. Touch device users, explore by touch or with swipe\n gestures.\n </VisuallyHidden>\n\n {isDropdownVisible && (\n <VisuallyHidden role=\"status\" aria-atomic=\"true\" aria-live=\"polite\">\n {options.length === 1\n ? `1 result is available`\n : `${options.length} results are available`}\n </VisuallyHidden>\n )}\n </Box>\n )\n}\n\nconst AutocompleteInputDropdown = styled(Box)`\n box-shadow: ${DROP_SHADOW};\n z-index: 1;\n`\n\nconst AutocompleteInputOptions = styled(Box)`\n /* 308 = Roughly, 5.5 default sized options */\n max-height: 308px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n`\n"],"file":"AutocompleteInput.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/AutocompleteInput/AutocompleteInput.tsx"],"names":["reducer","state","action","type","open","query","payload","AutocompleteInput","defaultValue","id","loading","footer","onSubmit","onSelect","onChange","onClear","onClose","onKeyDown","height","renderOption","option","options","rest","inputRef","containerRef","boxProps","inputProps","dispatch","optionsWithRefs","map","ref","resetUI","setTimeout","current","focus","reset","handleSelect","index","text","list","waitForInteractive","onEnter","element","i","event","preventDefault","stopPropagation","set","isDropdownVisible","length","position","offset","active","anchorRef","tooltipRef","width","handleFocus","handleMouseDown","handleMouseEnter","cursor","interactive","handleChange","value","currentTarget","handleClearOrSubmit","handleFocusChange","focused","containsFocusRef","handleInputKeydown","key","blur","handleContainerKeydown","staged","AutocompleteInputDropdown","Box","DROP_SHADOW","AutocompleteInputOptions"],"mappings":"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","sourcesContent":["import composeRefs from \"@seznam/compose-react-refs\"\nimport React, {\n createRef,\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n} from \"react\"\nimport styled from \"styled-components\"\nimport { useKeyboardListNavigation } from \"use-keyboard-list-navigation\"\nimport { Spinner } from \"..\"\nimport { DROP_SHADOW } from \"../../helpers\"\nimport SearchIcon from \"@artsy/icons/SearchIcon\"\nimport CloseIcon from \"@artsy/icons/CloseIcon\"\nimport { usePosition, useContainsFocus } from \"../../utils\"\nimport { useWidthOf } from \"../../utils/useWidthOf\"\nimport { Box, splitBoxProps } from \"../Box\"\nimport { Clickable } from \"../Clickable\"\nimport { InputProps } from \"../Input\"\nimport { LabeledInput } from \"../LabeledInput\"\nimport { VisuallyHidden } from \"../VisuallyHidden\"\nimport { AutocompleteInputOption } from \"./AutocompleteInputOption\"\nimport { AutocompleteInputOptionLabel } from \"./AutocompleteInputOptionLabel\"\n\n/** Base option type — can be expanded */\nexport interface AutocompleteInputOptionType {\n text: string\n value: string\n}\n\ninterface State {\n open: boolean\n query: string\n}\n\ntype Action =\n | { type: \"OPEN\" }\n | { type: \"CLOSE\" }\n | { type: \"CLEAR\" }\n | { type: \"CHANGE\"; payload: { query: string } }\n | { type: \"SELECT\"; payload: { query: string } }\n\nconst reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"OPEN\":\n return { ...state, open: true }\n case \"CLOSE\":\n return { ...state, open: false }\n case \"CLEAR\":\n return { ...state, query: \"\" }\n case \"CHANGE\":\n return { ...state, query: action.payload.query, open: true }\n case \"SELECT\":\n return { ...state, query: action.payload.query, open: false }\n }\n}\n\nexport interface AutocompleteInputProps<T extends AutocompleteInputOptionType>\n extends Omit<InputProps, \"onSelect\" | \"onSubmit\"> {\n defaultValue?: string\n loading?: boolean\n footer?: React.ReactNode\n /** on <enter> when no option is selected */\n onSubmit?(query: string): void\n /** on <click> or <enter> when an option is selected */\n onSelect?(option: T, index: number): void\n /** on <click> of the 'x' (clear) button */\n onClear?(): void\n /** Callback that runs when options are hidden */\n onClose?(): void\n renderOption?(\n option: T,\n i: number\n ): React.ReactElement<any, string | React.JSXElementConstructor<any>>\n options: T[]\n}\n\n/** AutocompleteInput */\nexport const AutocompleteInput = <T extends AutocompleteInputOptionType>({\n defaultValue = \"\",\n id,\n loading,\n footer,\n onSubmit,\n onSelect,\n onChange,\n onClear,\n onClose,\n onKeyDown,\n height,\n renderOption = (option) => <AutocompleteInputOptionLabel {...option} />,\n options,\n ...rest\n}: AutocompleteInputProps<T>) => {\n const inputRef = useRef<HTMLInputElement | null>(null)\n const containerRef = useRef<HTMLDivElement | null>(null)\n\n const [boxProps, inputProps] = splitBoxProps(rest)\n\n const [state, dispatch] = useReducer(reducer, {\n open: false,\n query: defaultValue,\n })\n\n const optionsWithRefs = useMemo(() => {\n return options.map((option) => ({\n option,\n ref: createRef<HTMLButtonElement>(),\n }))\n }, [options])\n\n const resetUI = () => {\n setTimeout(() => {\n inputRef.current?.focus()\n reset()\n dispatch({ type: \"CLOSE\" })\n }, 100)\n }\n\n const handleSelect = (option: T, index: number) => {\n dispatch({ type: \"SELECT\", payload: { query: option.text } })\n inputRef.current?.focus()\n onSelect?.(option, index)\n }\n\n const { index, reset, set } = useKeyboardListNavigation({\n ref: containerRef,\n list: options,\n waitForInteractive: true,\n onEnter: ({ element: option, index: i, event }) => {\n event.preventDefault()\n event.stopPropagation()\n handleSelect(option, i)\n resetUI()\n },\n })\n\n const isDropdownVisible = state.open && options.length > 0\n\n // Reset keyboard navigation when options change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(reset, [options])\n\n // Reset keyboard navigation when query is empty\n useEffect(() => {\n if (state.query === \"\") reset()\n }, [reset, state.query])\n\n const { anchorRef, tooltipRef } = usePosition({\n position: \"bottom\",\n offset: 10,\n active: isDropdownVisible,\n })\n\n const { width } = useWidthOf({ ref: anchorRef })\n\n const handleFocus = () => {\n reset()\n dispatch({ type: \"OPEN\" })\n }\n\n const handleMouseDown = (option: T, i: number) => () => {\n handleSelect(option, i)\n resetUI()\n }\n\n const handleMouseEnter = (i: number) => () => {\n set({ cursor: i, interactive: true })\n }\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const {\n currentTarget: { value },\n } = event\n\n dispatch({ type: \"CHANGE\", payload: { query: value } })\n onChange?.(event)\n }\n\n const handleClearOrSubmit = () => {\n if (state.query === \"\") {\n onSubmit?.(state.query)\n return\n }\n\n dispatch({ type: \"CLEAR\" })\n inputRef.current?.focus()\n onClear?.()\n }\n\n // Moves focus to different options when keyboard navigating using up/down\n useEffect(() => {\n const option = optionsWithRefs[index]\n option?.ref?.current?.focus()\n }, [index, optionsWithRefs])\n\n const handleFocusChange = useCallback(\n (focused: boolean) => {\n if (focused || !isDropdownVisible) return\n\n dispatch({ type: \"CLOSE\" })\n reset()\n onClose?.()\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [onClose, isDropdownVisible]\n )\n\n // Handle closing the dropdown when clicking outside of the input\n // or when focus leaves the input completely\n const { ref: containsFocusRef } = useContainsFocus({\n onChange: handleFocusChange,\n })\n\n const handleInputKeydown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n switch (event.key) {\n // Handle <Enter> when nothing is selected\n case \"Enter\":\n if (state.query !== \"\" && index === -1) {\n onSubmit?.(state.query)\n resetUI()\n }\n return\n\n // <Esc> to close dropdown\n case \"Escape\":\n event.preventDefault()\n event.stopPropagation()\n\n dispatch({ type: \"CLOSE\" })\n inputRef.current?.blur()\n\n return\n\n default:\n break\n }\n\n onKeyDown?.(event)\n }\n\n // Moves focus back to input when typing\n const handleContainerKeydown = (\n event: React.KeyboardEvent<HTMLDivElement>\n ) => {\n switch (event.key) {\n case \"Alt\":\n case \"ArrowDown\":\n case \"ArrowUp\":\n case \"Control\":\n case \"Enter\":\n case \"Meta\":\n case \"Shift\":\n case \"Tab\":\n // Ignore\n return\n\n case \"Escape\":\n event.preventDefault()\n event.stopPropagation()\n\n dispatch({ type: \"CLOSE\" })\n inputRef.current?.blur()\n reset()\n\n return\n\n default:\n inputRef.current?.focus()\n }\n }\n\n // Option that is being hovered or keyed into\n const staged = options[index]\n\n return (\n <Box\n ref={composeRefs(containerRef, containsFocusRef) as any}\n onKeyDown={handleContainerKeydown}\n {...boxProps}\n >\n <LabeledInput\n ref={composeRefs(inputRef, anchorRef) as any}\n role=\"combobox\"\n aria-expanded={isDropdownVisible}\n aria-autocomplete=\"list\"\n {...(id ? { id, \"aria-describedby\": `${id}__assistiveHint` } : {})}\n label={\n loading ? (\n <Box width={18}>\n <Spinner size=\"small\" />\n </Box>\n ) : state.query ? (\n <Clickable\n onClick={handleClearOrSubmit}\n height=\"100%\"\n display=\"flex\"\n alignItems=\"center\"\n aria-label=\"Clear input\"\n >\n <CloseIcon fill=\"black60\" aria-hidden />\n </Clickable>\n ) : (\n <SearchIcon fill=\"black60\" aria-hidden />\n )\n }\n value={staged?.text ?? state.query}\n onChange={handleChange}\n onFocus={handleFocus}\n onKeyDown={handleInputKeydown}\n autoComplete=\"off\"\n height={height}\n {...inputProps}\n />\n\n {isDropdownVisible && (\n <AutocompleteInputDropdown\n ref={tooltipRef as any}\n role=\"listbox\"\n width={width}\n >\n <AutocompleteInputOptions>\n {optionsWithRefs.map(({ option, ref }, i) => {\n return (\n <AutocompleteInputOption\n key={i}\n ref={ref}\n role=\"option\"\n aria-selected={i === index}\n aria-posinset={i + 1}\n aria-setsize={options.length}\n onMouseDown={handleMouseDown(option, i)}\n onMouseEnter={handleMouseEnter(i)}\n selected={i === index}\n tabIndex={-1}\n >\n {renderOption(option, i)}\n </AutocompleteInputOption>\n )\n })}\n </AutocompleteInputOptions>\n\n {footer}\n </AutocompleteInputDropdown>\n )}\n\n <VisuallyHidden {...(id ? { id: `${id}__assistiveHint` } : {})}>\n When autocomplete results are available use up and down arrows to review\n and enter to select. Touch device users, explore by touch or with swipe\n gestures.\n </VisuallyHidden>\n\n {isDropdownVisible && (\n <VisuallyHidden role=\"status\" aria-atomic=\"true\" aria-live=\"polite\">\n {options.length === 1\n ? `1 result is available`\n : `${options.length} results are available`}\n </VisuallyHidden>\n )}\n </Box>\n )\n}\n\nconst AutocompleteInputDropdown = styled(Box)`\n box-shadow: ${DROP_SHADOW};\n z-index: 1;\n`\n\nconst AutocompleteInputOptions = styled(Box)`\n /* 308 = Roughly, 5.5 default sized options */\n max-height: 308px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n`\n"],"file":"AutocompleteInput.js"}
|
|
@@ -13,7 +13,7 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
|
13
13
|
|
|
14
14
|
var _styledSystem = require("styled-system");
|
|
15
15
|
|
|
16
|
-
var _CloseIcon = require("
|
|
16
|
+
var _CloseIcon = _interopRequireDefault(require("@artsy/icons/CloseIcon"));
|
|
17
17
|
|
|
18
18
|
var _Clickable = require("../Clickable");
|
|
19
19
|
|
|
@@ -85,7 +85,7 @@ var Banner = function Banner(_ref) {
|
|
|
85
85
|
alignItems: "center",
|
|
86
86
|
color: "currentColor",
|
|
87
87
|
onClick: handleClick
|
|
88
|
-
}, /*#__PURE__*/_react.default.createElement(_CloseIcon.
|
|
88
|
+
}, /*#__PURE__*/_react.default.createElement(_CloseIcon.default, {
|
|
89
89
|
style: {
|
|
90
90
|
fill: "currentcolor"
|
|
91
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/Banner/Banner.tsx"],"names":["Banner","dismissable","children","rest","dismissed","setDismissed","handleClick","fill","defaultProps","variant","BANNER_VARIANTS","defaultLight","backgroundColor","color","defaultDark","success","error","brand","Container","Flex","variants"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA;AACO,IAAMA,MAA6B,GAAG,SAAhCA,MAAgC,OAIvC;AAAA,8BAHJC,WAGI;AAAA,MAHJA,WAGI,iCAHU,KAGV;AAAA,MAFJC,QAEI,QAFJA,QAEI;AAAA,MADDC,IACC;;AACJ,kBAAkC,qBAAS,KAAT,CAAlC;AAAA;AAAA,MAAOC,SAAP;AAAA,MAAkBC,YAAlB;;AAEA,MAAMC,WAAW,GAAG,SAAdA,WAAc,GAAM;AACxBD,IAAAA,YAAY,CAAC,IAAD,CAAZ;AACD,GAFD;;AAIA,MAAID,SAAJ,EAAe,OAAO,IAAP;AAEf,sBACE,6BAAC,SAAD;AAAW,IAAA,QAAQ,EAAC,UAApB;AAA+B,IAAA,EAAE,EAAE,CAAnC;AAAsC,IAAA,EAAE,EAAE;AAA1C,KAAiDD,IAAjD,gBACE,6BAAC,UAAD;AACE,IAAA,OAAO,EAAC,IADV;AAEE,IAAA,OAAO,EAAC,MAFV;AAGE,IAAA,UAAU,EAAC,QAHb;AAIE,IAAA,cAAc,EAAC,QAJjB;AAKE,IAAA,SAAS,EAAC,QALZ;AAME,IAAA,IAAI,EAAE;AANR,KAQGD,QARH,CADF,EAYGD,WAAW,iBACV,6BAAC,oBAAD;AACE,IAAA,QAAQ,EAAC,UADX;AAEE,IAAA,GAAG,EAAE,CAFP;AAGE,IAAA,KAAK,EAAE,CAHT;AAIE,IAAA,MAAM,EAAE,CAJV;AAKE,IAAA,CAAC,EAAE,CALL;AAME,IAAA,OAAO,EAAC,MANV;AAOE,IAAA,UAAU,EAAC,QAPb;AAQE,IAAA,KAAK,EAAC,cARR;AASE,IAAA,OAAO,EAAEK;AATX,kBAWE,6BAAC,
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/Banner/Banner.tsx"],"names":["Banner","dismissable","children","rest","dismissed","setDismissed","handleClick","fill","defaultProps","variant","BANNER_VARIANTS","defaultLight","backgroundColor","color","defaultDark","success","error","brand","Container","Flex","variants"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA;AACO,IAAMA,MAA6B,GAAG,SAAhCA,MAAgC,OAIvC;AAAA,8BAHJC,WAGI;AAAA,MAHJA,WAGI,iCAHU,KAGV;AAAA,MAFJC,QAEI,QAFJA,QAEI;AAAA,MADDC,IACC;;AACJ,kBAAkC,qBAAS,KAAT,CAAlC;AAAA;AAAA,MAAOC,SAAP;AAAA,MAAkBC,YAAlB;;AAEA,MAAMC,WAAW,GAAG,SAAdA,WAAc,GAAM;AACxBD,IAAAA,YAAY,CAAC,IAAD,CAAZ;AACD,GAFD;;AAIA,MAAID,SAAJ,EAAe,OAAO,IAAP;AAEf,sBACE,6BAAC,SAAD;AAAW,IAAA,QAAQ,EAAC,UAApB;AAA+B,IAAA,EAAE,EAAE,CAAnC;AAAsC,IAAA,EAAE,EAAE;AAA1C,KAAiDD,IAAjD,gBACE,6BAAC,UAAD;AACE,IAAA,OAAO,EAAC,IADV;AAEE,IAAA,OAAO,EAAC,MAFV;AAGE,IAAA,UAAU,EAAC,QAHb;AAIE,IAAA,cAAc,EAAC,QAJjB;AAKE,IAAA,SAAS,EAAC,QALZ;AAME,IAAA,IAAI,EAAE;AANR,KAQGD,QARH,CADF,EAYGD,WAAW,iBACV,6BAAC,oBAAD;AACE,IAAA,QAAQ,EAAC,UADX;AAEE,IAAA,GAAG,EAAE,CAFP;AAGE,IAAA,KAAK,EAAE,CAHT;AAIE,IAAA,MAAM,EAAE,CAJV;AAKE,IAAA,CAAC,EAAE,CALL;AAME,IAAA,OAAO,EAAC,MANV;AAOE,IAAA,UAAU,EAAC,QAPb;AAQE,IAAA,KAAK,EAAC,cARR;AASE,IAAA,OAAO,EAAEK;AATX,kBAWE,6BAAC,kBAAD;AAAW,IAAA,KAAK,EAAE;AAAEC,MAAAA,IAAI,EAAE;AAAR;AAAlB,IAXF,CAbJ,CADF;AA8BD,CA3CM;;;AAAMP,M;AA6CbA,MAAM,CAACQ,YAAP,GAAsB;AACpBC,EAAAA,OAAO,EAAE;AADW,CAAtB;AAIO,IAAMC,eAAe,GAAG;AAC7BC,EAAAA,YAAY,EAAE;AACZC,IAAAA,eAAe,EAAE,SADL;AAEZC,IAAAA,KAAK,EAAE;AAFK,GADe;AAK7BC,EAAAA,WAAW,EAAE;AACXF,IAAAA,eAAe,EAAE,UADN;AAEXC,IAAAA,KAAK,EAAE;AAFI,GALgB;AAS7BE,EAAAA,OAAO,EAAE;AACPH,IAAAA,eAAe,EAAE,UADV;AAEPC,IAAAA,KAAK,EAAE;AAFA,GAToB;AAa7BG,EAAAA,KAAK,EAAE;AACLJ,IAAAA,eAAe,EAAE,QADZ;AAELC,IAAAA,KAAK,EAAE;AAFF,GAbsB;AAiB7BI,EAAAA,KAAK,EAAE;AACLL,IAAAA,eAAe,EAAE,OADZ;AAELC,IAAAA,KAAK,EAAE;AAFF;AAjBsB,CAAxB;;AAuBP,IAAMK,SAAS,GAAG,+BAAOC,UAAP,CAAH;AAAA;AAAA;AAAA,aACX,2BAAQ;AAAEC,EAAAA,QAAQ,EAAEV;AAAZ,CAAR,CADW,CAAf","sourcesContent":["import React, { useState } from \"react\"\nimport styled from \"styled-components\"\nimport { variant } from \"styled-system\"\nimport CloseIcon from \"@artsy/icons/CloseIcon\"\nimport { Clickable } from \"../Clickable\"\nimport { Flex, FlexProps } from \"../Flex\"\nimport { Text } from \"../Text\"\n\nexport type BannerVariant = keyof typeof BANNER_VARIANTS\n\nexport interface BannerProps extends FlexProps {\n variant?: BannerVariant\n dismissable?: boolean\n}\n\n/** A banner */\nexport const Banner: React.FC<BannerProps> = ({\n dismissable = false,\n children,\n ...rest\n}) => {\n const [dismissed, setDismissed] = useState(false)\n\n const handleClick = () => {\n setDismissed(true)\n }\n\n if (dismissed) return null\n\n return (\n <Container position=\"relative\" py={1} px={4} {...rest}>\n <Text\n variant=\"xs\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n textAlign=\"center\"\n flex={1}\n >\n {children}\n </Text>\n\n {dismissable && (\n <Clickable\n position=\"absolute\"\n top={0}\n right={0}\n bottom={0}\n p={1}\n display=\"flex\"\n alignItems=\"center\"\n color=\"currentColor\"\n onClick={handleClick}\n >\n <CloseIcon style={{ fill: \"currentcolor\" }} />\n </Clickable>\n )}\n </Container>\n )\n}\n\nBanner.defaultProps = {\n variant: \"defaultLight\",\n}\n\nexport const BANNER_VARIANTS = {\n defaultLight: {\n backgroundColor: \"black10\",\n color: \"black100\",\n },\n defaultDark: {\n backgroundColor: \"black100\",\n color: \"white100\",\n },\n success: {\n backgroundColor: \"green100\",\n color: \"white100\",\n },\n error: {\n backgroundColor: \"red100\",\n color: \"white100\",\n },\n brand: {\n backgroundColor: \"brand\",\n color: \"white100\",\n },\n}\n\nconst Container = styled(Flex)`\n ${variant({ variants: BANNER_VARIANTS })}\n`\n"],"file":"Banner.js"}
|
|
@@ -3,7 +3,7 @@ import { BorderBoxProps } from "./BorderBoxBase";
|
|
|
3
3
|
/**
|
|
4
4
|
* A `div` that has a common border and padding set by default, with an optional
|
|
5
5
|
* `hover` property for visually focusing content.
|
|
6
|
-
* @deprecated: Use `Box` along with props e.g. `border="1px solid" borderColor="black10"`,
|
|
6
|
+
* @deprecated: Use `Box` along with props e.g. `border="1px solid" borderColor="black10" p={2}`,
|
|
7
7
|
* as needed.
|
|
8
8
|
*/
|
|
9
9
|
export declare const BorderBox: import("styled-components").StyledComponentClass<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & import("..").BoxProps & BorderBoxProps, any, import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & import("..").BoxProps & BorderBoxProps>;
|
|
@@ -20,7 +20,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
20
20
|
/**
|
|
21
21
|
* A `div` that has a common border and padding set by default, with an optional
|
|
22
22
|
* `hover` property for visually focusing content.
|
|
23
|
-
* @deprecated: Use `Box` along with props e.g. `border="1px solid" borderColor="black10"`,
|
|
23
|
+
* @deprecated: Use `Box` along with props e.g. `border="1px solid" borderColor="black10" p={2}`,
|
|
24
24
|
* as needed.
|
|
25
25
|
*/
|
|
26
26
|
var BorderBox = (0, _styledComponents.default)(_BorderBoxBase.BorderBoxBase).withConfig({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/BorderBox/BorderBox.tsx"],"names":["BorderBox","BorderBoxBase","hover","css","displayName"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMA,SAAS,GAAG,+BAAOC,4BAAP,CAAH;AAAA;AAAA;AAAA,cAClB;AAAA,MAAGC,KAAH,QAAGA,KAAH;AAAA,SACAA,KAAK,QACLC,qBADK,kCAGe,wBAAS,gBAAT,CAHf,CADL;AAAA,CADkB,CAAf;;AAUPH,SAAS,CAACI,WAAV,GAAwB,WAAxB","sourcesContent":["import { themeGet } from \"@styled-system/theme-get\"\nimport styled, { css } from \"styled-components\"\nimport { BorderBoxBase, BorderBoxProps } from \"./BorderBoxBase\"\n\n/**\n * A `div` that has a common border and padding set by default, with an optional\n * `hover` property for visually focusing content.\n * @deprecated: Use `Box` along with props e.g. `border=\"1px solid\" borderColor=\"black10\"`,\n * as needed.\n */\nexport const BorderBox = styled(BorderBoxBase)<BorderBoxProps>`\n ${({ hover }) =>\n hover &&\n css`\n :hover {\n border-color: ${themeGet(\"colors.black60\")};\n }\n `};\n`\n\nBorderBox.displayName = \"BorderBox\"\n"],"file":"BorderBox.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/BorderBox/BorderBox.tsx"],"names":["BorderBox","BorderBoxBase","hover","css","displayName"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMA,SAAS,GAAG,+BAAOC,4BAAP,CAAH;AAAA;AAAA;AAAA,cAClB;AAAA,MAAGC,KAAH,QAAGA,KAAH;AAAA,SACAA,KAAK,QACLC,qBADK,kCAGe,wBAAS,gBAAT,CAHf,CADL;AAAA,CADkB,CAAf;;AAUPH,SAAS,CAACI,WAAV,GAAwB,WAAxB","sourcesContent":["import { themeGet } from \"@styled-system/theme-get\"\nimport styled, { css } from \"styled-components\"\nimport { BorderBoxBase, BorderBoxProps } from \"./BorderBoxBase\"\n\n/**\n * A `div` that has a common border and padding set by default, with an optional\n * `hover` property for visually focusing content.\n * @deprecated: Use `Box` along with props e.g. `border=\"1px solid\" borderColor=\"black10\" p={2}`,\n * as needed.\n */\nexport const BorderBox = styled(BorderBoxBase)<BorderBoxProps>`\n ${({ hover }) =>\n hover &&\n css`\n :hover {\n border-color: ${themeGet(\"colors.black60\")};\n }\n `};\n`\n\nBorderBox.displayName = \"BorderBox\"\n"],"file":"BorderBox.js"}
|
|
@@ -360,8 +360,8 @@ export declare const BorderedRadio: import("styled-components").StyledComponentC
|
|
|
360
360
|
onTransitionEndCapture?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
|
|
361
361
|
textAlign?: import("styled-system").ResponsiveValue<import("csstype").TextAlignProperty, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
|
|
362
362
|
disabled?: boolean | undefined;
|
|
363
|
-
value?: string | undefined;
|
|
364
363
|
name?: string | undefined;
|
|
364
|
+
value?: string | undefined;
|
|
365
365
|
error?: boolean | undefined;
|
|
366
366
|
focus?: boolean | undefined;
|
|
367
367
|
hover?: boolean | undefined;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { ResponsiveValue } from "styled-system";
|
|
3
|
-
import { IconProps } from "../../svgs";
|
|
4
3
|
import { BoxProps } from "../Box";
|
|
5
4
|
import { ButtonSize, ButtonVariant } from "./types";
|
|
6
5
|
export interface ButtonProps extends BoxProps, React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
@@ -28,7 +27,9 @@ export interface ButtonProps extends BoxProps, React.ButtonHTMLAttributes<HTMLBu
|
|
|
28
27
|
/** Forces success state */
|
|
29
28
|
success?: boolean;
|
|
30
29
|
/** Optional icon slot */
|
|
31
|
-
Icon?: React.FunctionComponent<
|
|
30
|
+
Icon?: React.FunctionComponent<BoxProps & {
|
|
31
|
+
fill?: ResponsiveValue<string>;
|
|
32
|
+
}>;
|
|
32
33
|
}
|
|
33
34
|
export declare const Button: React.ForwardRefExoticComponent<ButtonProps & {
|
|
34
35
|
ref?: React.Ref<HTMLElement>;
|
|
@@ -15,7 +15,7 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
|
15
15
|
|
|
16
16
|
var _styledSystem = require("styled-system");
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _CheckmarkIcon = _interopRequireDefault(require("@artsy/icons/CheckmarkIcon"));
|
|
19
19
|
|
|
20
20
|
var _themes = require("../../themes");
|
|
21
21
|
|
|
@@ -95,7 +95,7 @@ var Button = /*#__PURE__*/_react.default.forwardRef(function (_ref, forwardedRef
|
|
|
95
95
|
fill: "currentColor",
|
|
96
96
|
mr: 0.5,
|
|
97
97
|
"aria-hidden": "true"
|
|
98
|
-
}), success && /*#__PURE__*/_react.default.createElement(
|
|
98
|
+
}), success && /*#__PURE__*/_react.default.createElement(_CheckmarkIcon.default, {
|
|
99
99
|
fill: "currentColor",
|
|
100
100
|
mr: 0.5,
|
|
101
101
|
"aria-hidden": "true"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/Button/Button.tsx"],"names":["Button","React","forwardRef","forwardedRef","children","loading","success","size","onClick","alignItems","justifyContent","Icon","rest","ref","handleClick","event","current","blur","getTextVariant","displayName","defaultProps","variant","buttonMixin","css","Container","styled","button","prop","variants","BUTTON_SIZES","props","hover","BUTTON_VARIANTS","active","focus","disabled","default","THEME_V3","mediaQueries","boxMixin","BUTTON_TEXT_SIZES","Array","isArray","map","s","large"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;AAiCO,IAAMA,MAEZ,gBAAGC,eAAMC,UAAN,CACF,gBAYEC,YAZF,EAaK;AAAA,MAXDC,QAWC,QAXDA,QAWC;AAAA,MAVDC,OAUC,QAVDA,OAUC;AAAA,MATDC,OASC,QATDA,OASC;AAAA,uBARDC,IAQC;AAAA,MARDA,IAQC,0BARM,OAQN;AAAA,MAPDC,OAOC,QAPDA,OAOC;AAAA,6BANDC,UAMC;AAAA,MANDA,UAMC,gCANY,QAMZ;AAAA,iCALDC,cAKC;AAAA,MALDA,cAKC,oCALgB,QAKhB;AAAA,MAJDC,IAIC,QAJDA,IAIC;AAAA,MAHEC,IAGF;;AACH,MAAMC,GAAG,GAAG,mBAAiC,IAAjC,CAAZ;;AAEA,MAAMC,WAAW,GAAG,SAAdA,WAAc,CAClBC,KADkB,EAEf;AACH,QAAI,CAACV,OAAD,IAAYG,OAAhB,EAAyB;AACvBA,MAAAA,OAAO,CAACO,KAAD,CAAP;AACD;AACF,GAND;;AAQA,wBAAU,YAAM;AACd,QAAIV,OAAO,IAAIQ,GAAG,CAACG,OAAJ,KAAgB,IAA/B,EAAqC;AAAA;;AACnC,sBAAAH,GAAG,CAACG,OAAJ,8DAAaC,IAAb;AACD;AACF,GAJD,EAIG,CAACZ,OAAD,CAJH;AAMA,sBACE,6BAAC,SAAD;AACE,IAAA,GAAG,EAAE,+BAAYQ,GAAZ,EAAiBV,YAAjB,CADP;AAEE,IAAA,OAAO,EAAEW,WAFX;AAGE,IAAA,IAAI,EAAEP,IAHR;AAIE,IAAA,OAAO,EAAEF,OAJX;AAKE,IAAA,OAAO,EAAEC,OALX;AAME,IAAA,QAAQ,EAAED,OAAO,GAAG,CAAC,CAAJ,GAAQ,CAN3B;AAOE,IAAA,OAAO,EAAC,aAPV;AAQE,IAAA,UAAU,EAAEI,UARd;AASE,IAAA,cAAc,EAAEC;AATlB,KAUME,IAVN,GAYGP,OAAO,iBAAI,6BAAC,gBAAD;AAAS,IAAA,IAAI,EAAEE,IAAf;AAAqB,IAAA,KAAK,EAAC;AAA3B,IAZd,eAcE,6BAAC,UAAD;AACE,IAAA,UAAU,EAAE,CADd;AAEE,IAAA,OAAO,EAAEW,cAAc,CAACX,IAAD,CAFzB;AAGE,IAAA,OAAO,EAAEF,OAAO,GAAG,CAAH,GAAO,CAHzB;AAIE,IAAA,OAAO,EAAC,MAJV;AAKE,IAAA,UAAU,EAAEI,UALd;AAME,IAAA,cAAc,EAAEC,cANlB;AAOE,IAAA,KAAK,EAAC;AAPR,KASG,CAACJ,OAAD,IAAYK,IAAZ,iBACC,6BAAC,IAAD;AAAM,IAAA,IAAI,EAAC,cAAX;AAA0B,IAAA,EAAE,EAAE,GAA9B;AAAmC,mBAAY;AAA/C,IAVJ,EAaGL,OAAO,iBACN,6BAAC,
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/Button/Button.tsx"],"names":["Button","React","forwardRef","forwardedRef","children","loading","success","size","onClick","alignItems","justifyContent","Icon","rest","ref","handleClick","event","current","blur","getTextVariant","displayName","defaultProps","variant","buttonMixin","css","Container","styled","button","prop","variants","BUTTON_SIZES","props","hover","BUTTON_VARIANTS","active","focus","disabled","default","THEME_V3","mediaQueries","boxMixin","BUTTON_TEXT_SIZES","Array","isArray","map","s","large"],"mappings":"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","sourcesContent":["import composeRefs from \"@seznam/compose-react-refs\"\nimport React, { useEffect, useRef } from \"react\"\nimport styled, { css } from \"styled-components\"\nimport { ResponsiveValue, variant } from \"styled-system\"\nimport CheckmarkIcon from \"@artsy/icons/CheckmarkIcon\"\nimport { TextVariant } from \"@artsy/palette-tokens/dist/typography/v3\"\nimport { THEME_V3 } from \"../../themes\"\nimport { boxMixin, BoxProps } from \"../Box\"\nimport { Spinner } from \"../Spinner\"\nimport { Text, TextProps } from \"../Text\"\nimport { BUTTON_SIZES, BUTTON_TEXT_SIZES, BUTTON_VARIANTS } from \"./tokens\"\nimport { ButtonSize, ButtonVariant } from \"./types\"\n\nexport interface ButtonProps\n extends BoxProps,\n React.ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * @description\n * The theme of the button. It's possible to pass an array that\n * behaves accordingly to the media breakpoints [\"sm\", \"md\", \"lg\", \"xl\"]\n * @example\n * \"primaryBlack\"\n * \"primaryWhite\"\n * [\"primaryGray\", \"secondaryBlack\"]\n * @see {@link ButtonVariant}\n */\n variant?: ResponsiveValue<ButtonVariant>\n /** Size of the button */\n size?: ResponsiveValue<ButtonSize>\n /** Displays a loader in the button */\n loading?: boolean\n /** Forces hover state */\n hover?: boolean\n /** Forces focus state */\n focus?: boolean\n /** Forces active state */\n active?: boolean\n /** Forces success state */\n success?: boolean\n /** Optional icon slot */\n Icon?: React.FunctionComponent<BoxProps & { fill?: ResponsiveValue<string> }>\n}\n\nexport const Button: React.ForwardRefExoticComponent<\n ButtonProps & { ref?: React.Ref<HTMLElement> }\n> = React.forwardRef(\n (\n {\n children,\n loading,\n success,\n size = \"large\",\n onClick,\n alignItems = \"center\",\n justifyContent = \"center\",\n Icon,\n ...rest\n },\n forwardedRef\n ) => {\n const ref = useRef<HTMLButtonElement | null>(null)\n\n const handleClick = (\n event: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => {\n if (!loading && onClick) {\n onClick(event)\n }\n }\n\n useEffect(() => {\n if (loading && ref.current !== null) {\n ref.current?.blur()\n }\n }, [loading])\n\n return (\n <Container\n ref={composeRefs(ref, forwardedRef) as any}\n onClick={handleClick}\n size={size}\n loading={loading}\n success={success}\n tabIndex={loading ? -1 : 0}\n display=\"inline-flex\"\n alignItems={alignItems}\n justifyContent={justifyContent}\n {...rest}\n >\n {loading && <Spinner size={size} color=\"currentColor\" />}\n\n <Text\n lineHeight={1}\n variant={getTextVariant(size)}\n opacity={loading ? 0 : 1}\n display=\"flex\"\n alignItems={alignItems}\n justifyContent={justifyContent}\n width=\"100%\"\n >\n {!success && Icon && (\n <Icon fill=\"currentColor\" mr={0.5} aria-hidden=\"true\" />\n )}\n\n {success && (\n <CheckmarkIcon fill=\"currentColor\" mr={0.5} aria-hidden=\"true\" />\n )}\n\n {children}\n </Text>\n </Container>\n )\n }\n)\n\nButton.displayName = \"Button\"\n\nButton.defaultProps = {\n size: \"large\",\n variant: \"primaryBlack\",\n}\n\ntype ContainerProps = Pick<\n ButtonProps,\n \"active\" | \"disabled\" | \"focus\" | \"hover\" | \"loading\" | \"size\" | \"success\"\n>\n\nexport const buttonMixin = css`\n cursor: pointer;\n position: relative;\n white-space: nowrap;\n font-weight: normal;\n text-align: center;\n border: 1px solid;\n text-decoration: none;\n transition: color 0.25s ease, border-color 0.25s ease,\n background-color 0.25s ease, box-shadow 0.25s ease;\n`\n\nconst Container = styled.button<ContainerProps & ButtonProps>`\n ${buttonMixin};\n\n /* Handle sizing */\n ${variant({ prop: \"size\", variants: BUTTON_SIZES })}\n\n ${(props) => {\n // Handle props driven states\n if (props.hover) {\n return variant({ variants: BUTTON_VARIANTS.hover })\n }\n\n if (props.active) {\n return variant({ variants: BUTTON_VARIANTS.active })\n }\n\n if (props.success) {\n return variant({ variants: BUTTON_VARIANTS.success })\n }\n\n if (props.focus) {\n return css`\n outline: 0;\n ${variant({ variants: BUTTON_VARIANTS.focus })}\n `\n }\n\n if (props.loading) {\n return css`\n cursor: auto;\n transition: none;\n pointer-events: none;\n ${variant({ variants: BUTTON_VARIANTS.loading })}\n `\n }\n\n if (props.disabled) {\n return css`\n pointer-events: none;\n ${variant({ variants: BUTTON_VARIANTS.disabled })}\n `\n }\n\n return variant({ variants: BUTTON_VARIANTS.default })\n }}\n\n ${() => {\n // Handle pseudo classes\n return css`\n @media ${THEME_V3.mediaQueries.hover} {\n &:hover {\n ${variant({ variants: BUTTON_VARIANTS.hover })}\n }\n }\n\n &:focus {\n outline: 0;\n ${variant({ variants: BUTTON_VARIANTS.focus })}\n }\n\n &:active {\n ${variant({ variants: BUTTON_VARIANTS.active })}\n }\n\n &:disabled {\n pointer-events: none;\n ${variant({ variants: BUTTON_VARIANTS.disabled })}\n }\n `\n }};\n\n ${boxMixin};\n`\n\nconst getTextVariant = (\n size: ResponsiveValue<ButtonSize>\n): TextProps[\"variant\"] => {\n if (typeof size === \"string\") {\n return BUTTON_TEXT_SIZES[size]\n }\n\n if (Array.isArray(size)) {\n return size.map((s) => BUTTON_TEXT_SIZES[s!] as TextVariant)\n }\n\n return BUTTON_TEXT_SIZES.large\n}\n"],"file":"Button.js"}
|
|
@@ -15,7 +15,7 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
|
15
15
|
|
|
16
16
|
var _Join = require("../Join");
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _BellStrokeIcon = _interopRequireDefault(require("@artsy/icons/BellStrokeIcon"));
|
|
19
19
|
|
|
20
20
|
var _Box = require("../Box");
|
|
21
21
|
|
|
@@ -280,7 +280,7 @@ var WithIcon = function WithIcon() {
|
|
|
280
280
|
}, /*#__PURE__*/_react.default.createElement(_index.Button, {
|
|
281
281
|
variant: "secondaryBlack",
|
|
282
282
|
size: "small",
|
|
283
|
-
Icon:
|
|
283
|
+
Icon: _BellStrokeIcon.default
|
|
284
284
|
}, "Create an Alert"));
|
|
285
285
|
};
|
|
286
286
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/Button/Button.story.tsx"],"names":["title","_States","focus","hover","active","loading","disabled","success","story","name","Sizes","BUTTON_SIZE_NAMES","map","size","variants","BUTTON_VARIANT_NAMES","variant","Display","Box","displayName","Variants","reduce","a","b","concat","props","includes","bg","color","NativeButtonProps","autoFocus","children","tabIndex","onClick","event","preventDefault","WithBoxProps","Loading","setLoading","handleClick","setTimeout","As","as","WithIcon","BellIcon","ResponsiveSize"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAEe;AAAEA,EAAAA,KAAK,EAAE;AAAT,C;;;AAER,IAAMC,OAAO,GAAG,SAAVA,OAAU,GAAM;AAC3B,sBACE,6BAAC,uBAAD;AACE,IAAA,MAAM,EAAE,CACN,EADM,EAEN;AAAEC,MAAAA,KAAK,EAAE;AAAT,KAFM,EAGN;AAAEC,MAAAA,KAAK,EAAE;AAAT,KAHM,EAIN;AAAEC,MAAAA,MAAM,EAAE;AAAV,KAJM,EAKN;AAAEC,MAAAA,OAAO,EAAE;AAAX,KALM,EAMN;AAAEC,MAAAA,QAAQ,EAAE;AAAZ,KANM,EAON;AAAEC,MAAAA,OAAO,EAAE;AAAX,KAPM,EAQN;AAAEF,MAAAA,OAAO,EAAE,IAAX;AAAiBC,MAAAA,QAAQ,EAAE;AAA3B,KARM;AADV,kBAYE,6BAAC,aAAD,gBAZF,CADF;AAgBD,CAjBM;;;AAAML,O;AAmBbA,OAAO,CAACO,KAAR,GAAgB;AACdC,EAAAA,IAAI,EAAE;AADQ,CAAhB;;AAIO,IAAMC,KAAK,GAAG,SAARA,KAAQ,GAAM;AACzB,sBACE,6BAAC,uBAAD;AAAqB,IAAA,MAAM,EAAEC,yBAAkBC,GAAlB,CAAsB,UAACC,IAAD;AAAA,aAAW;AAAEA,QAAAA,IAAI,EAAJA;AAAF,OAAX;AAAA,KAAtB;AAA7B,kBACE,6BAAC,aAAD,gBADF,CADF;AAKD,CANM;;;AAAMH,K;;AAQb,IAAMI,QAAQ,GAAGC,4BAAqBH,GAArB,CAAyB,UAACI,OAAD;AAAA,SAAc;AAAEA,IAAAA,OAAO,EAAPA;AAAF,GAAd;AAAA,CAAzB,CAAjB;;AAEA,IAAMC,OAAO,GAAG,+BAAOC,QAAP,CAAH;AAAA;AAAA;AAAA,QAAb;AACAD,OAAO,CAACE,WAAR,GAAsB,QAAtB;;AAEO,IAAMC,QAAQ,GAAG,SAAXA,QAAW,GAAM;AAC5B,sBACE,6BAAC,uBAAD;AACE,IAAA,MAAM,EAAG,CAAC;AAAEP,MAAAA,IAAI,EAAE;AAAR,KAAD,EAAoB;AAAEA,MAAAA,IAAI,EAAE;AAAR,KAApB,CAAD,CACLD,GADK,CACD,UAACC,IAAD,EAAU;AACb,aAAOC,QAAQ,CAACF,GAAT,CAAa,UAACI,OAAD;AAAA,+CAAmBH,IAAnB,GAA4BG,OAA5B;AAAA,OAAb,CAAP;AACD,KAHK,EAILK,MAJK,CAIE,UAACC,CAAD,EAAIC,CAAJ,EAAU;AAChB,aAAOD,CAAC,CAACE,MAAF,CAASD,CAAT,CAAP;AACD,KANK,EAMH,EANG;AADV,KASG,UAACE,KAAD;AAAA,wBACC,6BAAC,OAAD;AACE,MAAA,CAAC,EAAE,CADL;AAEE,MAAA,SAAS,EAAC;AAFZ,OAGO,CAAC,cAAD,EAAiB,gBAAjB,EAAmCC,QAAnC,WAA+CD,KAAK,CAACT,OAArD,KACD;AAAEW,MAAAA,EAAE,EAAE,UAAN;AAAkBC,MAAAA,KAAK,EAAE;AAAzB,KADC,GAED;AAAED,MAAAA,EAAE,EAAE,UAAN;AAAkBC,MAAAA,KAAK,EAAE;AAAzB,KALN,gBAOE,6BAAC,UAAD,qBACE,6BAAC,UAAD;AAAM,MAAA,SAAS,eAAE,6BAAC,cAAD;AAAQ,QAAA,CAAC,EAAE;AAAX;AAAjB,oBACE,6BAAC,aAAD,EAAYH,KAAZ,YADF,eAGE,6BAAC,aAAD,eAAYA,KAAZ;AAAmB,MAAA,KAAK;AAAxB,gBAHF,eAOE,6BAAC,aAAD,eAAYA,KAAZ;AAAmB,MAAA,KAAK;AAAxB,gBAPF,eAWE,6BAAC,aAAD,eAAYA,KAAZ;AAAmB,MAAA,MAAM;AAAzB,iBAXF,eAeE,6BAAC,aAAD,eAAYA,KAAZ;AAAmB,MAAA,OAAO;AAA1B,kBAfF,eAmBE,6BAAC,aAAD,eAAYA,KAAZ;AAAmB,MAAA,QAAQ;AAA3B,mBAnBF,eAuBE,6BAAC,aAAD,eAAYA,KAAZ;AAAmB,MAAA,OAAO;AAA1B,kBAvBF,CADF,CAPF,CADD;AAAA,GATH,CADF;AAmDD,CApDM;;;AAAML,Q;;AAsDN,IAAMS,iBAAiB,GAAG,SAApBA,iBAAoB,GAAM;AACrC,sBACE,6BAAC,uBAAD;AACE,IAAA,MAAM,EAAE,CACN;AAAEC,MAAAA,SAAS,EAAE,IAAb;AAAmBC,MAAAA,QAAQ,EAAE;AAA7B,KADM,EAEN;AAAEC,MAAAA,QAAQ,EAAE,CAAC,CAAb;AAAgBD,MAAAA,QAAQ,EAAE;AAA1B,KAFM,EAGN;AACEE,MAAAA,OAAO,EAAE,iBAACC,KAAD,EAAW;AAClBA,QAAAA,KAAK,CAACC,cAAN;AACD,OAHH;AAIEJ,MAAAA,QAAQ,EAAE;AAJZ,KAHM;AADV,kBAYE,6BAAC,aAAD,gBAZF,CADF;AAgBD,CAjBM;;;AAAMF,iB;AAmBbA,iBAAiB,CAACrB,KAAlB,GAA0B;AACxBC,EAAAA,IAAI,EAAE;AADkB,CAA1B;;AAIO,IAAM2B,YAAY,GAAG,SAAfA,YAAe,GAAM;AAChC,sBACE,6BAAC,uBAAD,qBACE,6BAAC,QAAD;AAAK,IAAA,MAAM,EAAC,YAAZ;AAAyB,IAAA,WAAW,EAAC;AAArC,kBACE,6BAAC,aAAD;AAAQ,IAAA,OAAO,EAAC,OAAhB;AAAwB,IAAA,KAAK,EAAC,MAA9B;AAAqC,IAAA,EAAE,EAAE;AAAzC,kBADF,eAKE,6BAAC,aAAD;AAAQ,IAAA,OAAO,EAAC,OAAhB;AAAwB,IAAA,KAAK,EAAC,MAA9B;AAAqC,IAAA,EAAE,EAAE;AAAzC,uBALF,eASE,6BAAC,aAAD;AAAQ,IAAA,OAAO,EAAC,OAAhB;AAAwB,IAAA,KAAK,EAAC,MAA9B;AAAqC,IAAA,EAAE,EAAE;AAAzC,eATF,CADF,CADF;AAiBD,CAlBM;;;AAAMA,Y;AAoBbA,YAAY,CAAC5B,KAAb,GAAqB;AACnBC,EAAAA,IAAI,EAAE;AADa,CAArB;;AAIO,IAAM4B,OAAO,GAAG,SAAVA,OAAU,GAAM;AAC3B,kBAA8B,qBAAS,KAAT,CAA9B;AAAA;AAAA,MAAOhC,OAAP;AAAA,MAAgBiC,UAAhB;;AAEA,MAAMC,WAAW,GAAG,SAAdA,WAAc,GAAM;AACxB,QAAIlC,OAAJ,EAAa;AACbiC,IAAAA,UAAU,CAAC,IAAD,CAAV;AACAE,IAAAA,UAAU,CAAC,YAAM;AACfF,MAAAA,UAAU,CAAC,KAAD,CAAV;AACD,KAFS,EAEP,IAFO,CAAV;AAGD,GAND;;AAOA,sBACE,6BAAC,uBAAD,qBACE,6BAAC,aAAD;AAAQ,IAAA,OAAO,EAAEjC,OAAjB;AAA0B,IAAA,OAAO,EAAEkC;AAAnC,qBADF,CADF;AAOD,CAjBM;;;AAAMF,O;;AAmBN,IAAMI,EAAE,GAAG,SAALA,EAAK,GAAM;AACtB,sBACE,6BAAC,uBAAD;AAAQ,IAAA,MAAM,EAAE,CAAC,EAAD,EAAK;AAAEC,MAAAA,EAAE,EAAE,KAAN;AAAaX,MAAAA,QAAQ,EAAE;AAAvB,KAAL;AAAhB,kBAEE,6BAAC,aAAD;AAAQ,IAAA,EAAE,EAAC,GAAX;AAAe,IAAA,IAAI,EAAC;AAApB,0CAFF,CADF;AAQD,CATM;;;AAAMU,E;;AAWN,IAAME,QAAQ,GAAG,SAAXA,QAAW,GAAM;AAC5B,sBACE,6BAAC,uBAAD;AACE,IAAA,MAAM,EAAE,CACN,EADM,EAEN;AAAEzC,MAAAA,KAAK,EAAE;AAAT,KAFM,EAGN;AAAEC,MAAAA,KAAK,EAAE;AAAT,KAHM,EAIN;AAAEE,MAAAA,OAAO,EAAE;AAAX,KAJM,EAKN;AAAEC,MAAAA,QAAQ,EAAE;AAAZ,KALM,EAMN;AAAED,MAAAA,OAAO,EAAE,IAAX;AAAiBC,MAAAA,QAAQ,EAAE;AAA3B,KANM,EAON;AAAEC,MAAAA,OAAO,EAAE;AAAX,KAPM,EAQN;AAAEM,MAAAA,IAAI,EAAE;AAAR,KARM,EASN;AAAEA,MAAAA,IAAI,EAAE,OAAR;AAAiBX,MAAAA,KAAK,EAAE;AAAxB,KATM,EAUN;AAAEW,MAAAA,IAAI,EAAE,OAAR;AAAiBV,MAAAA,KAAK,EAAE;AAAxB,KAVM,EAWN;AAAEU,MAAAA,IAAI,EAAE,OAAR;AAAiBR,MAAAA,OAAO,EAAE;AAA1B,KAXM,EAYN;AAAEQ,MAAAA,IAAI,EAAE,OAAR;AAAiBP,MAAAA,QAAQ,EAAE;AAA3B,KAZM,EAaN;AAAEO,MAAAA,IAAI,EAAE,OAAR;AAAiBR,MAAAA,OAAO,EAAE,IAA1B;AAAgCC,MAAAA,QAAQ,EAAE;AAA1C,KAbM,EAcN;AAAEO,MAAAA,IAAI,EAAE,OAAR;AAAiBN,MAAAA,OAAO,EAAE;AAA1B,KAdM;AADV,kBAkBE,6BAAC,aAAD;AAAQ,IAAA,OAAO,EAAC,gBAAhB;AAAiC,IAAA,IAAI,EAAC,OAAtC;AAA8C,IAAA,IAAI,EAAEqC;AAApD,uBAlBF,CADF;AAwBD,CAzBM;;;AAAMD,Q;;AA2BN,IAAME,cAAc,GAAG,SAAjBA,cAAiB,GAAM;AAClC,sBAAO,6BAAC,aAAD;AAAQ,IAAA,IAAI,EAAE,CAAC,OAAD,EAAU,OAAV;AAAd,uBAAP;AACD,CAFM;;;AAAMA,c","sourcesContent":["import React, { useState } from \"react\"\nimport { States } from \"storybook-states\"\nimport styled from \"styled-components\"\nimport { Join } from \"../Join\"\nimport { BellIcon } from \"../../svgs/BellIcon\"\nimport { Box } from \"../Box\"\nimport { Flex } from \"../Flex\"\nimport { Spacer } from \"../Spacer\"\nimport { ButtonProps } from \"./Button\"\nimport { Button, BUTTON_SIZE_NAMES, BUTTON_VARIANT_NAMES } from \"./index\"\n\nexport default { title: \"Components/Button\" }\n\nexport const _States = () => {\n return (\n <States<ButtonProps>\n states={[\n {},\n { focus: true },\n { hover: true },\n { active: true },\n { loading: true },\n { disabled: true },\n { success: true },\n { loading: true, disabled: true },\n ]}\n >\n <Button>Label</Button>\n </States>\n )\n}\n\n_States.story = {\n name: \"States\",\n}\n\nexport const Sizes = () => {\n return (\n <States<ButtonProps> states={BUTTON_SIZE_NAMES.map((size) => ({ size }))}>\n <Button>Label</Button>\n </States>\n )\n}\n\nconst variants = BUTTON_VARIANT_NAMES.map((variant) => ({ variant }))\n\nconst Display = styled(Box)``\nDisplay.displayName = \"Button\"\n\nexport const Variants = () => {\n return (\n <States<ButtonProps>\n states={([{ size: \"large\" }, { size: \"small\" }] as const)\n .map((size) => {\n return variants.map((variant) => ({ ...size, ...variant }))\n })\n .reduce((a, b) => {\n return a.concat(b)\n }, [])}\n >\n {(props) => (\n <Display\n p={1}\n overflowX=\"auto\"\n {...([\"primaryWhite\", \"secondaryWhite\"].includes(`${props.variant}`)\n ? { bg: \"black100\", color: \"white100\" }\n : { bg: \"white100\", color: \"black100\" })}\n >\n <Flex>\n <Join separator={<Spacer x={2} />}>\n <Button {...props}>Default</Button>\n\n <Button {...props} focus>\n Focus\n </Button>\n\n <Button {...props} hover>\n Hover\n </Button>\n\n <Button {...props} active>\n Active\n </Button>\n\n <Button {...props} loading>\n Loading\n </Button>\n\n <Button {...props} disabled>\n Disabled\n </Button>\n\n <Button {...props} success>\n Success\n </Button>\n </Join>\n </Flex>\n </Display>\n )}\n </States>\n )\n}\n\nexport const NativeButtonProps = () => {\n return (\n <States<ButtonProps>\n states={[\n { autoFocus: true, children: \"autofocused\" },\n { tabIndex: -1, children: \"not focusable with keyboard\" },\n {\n onClick: (event) => {\n event.preventDefault()\n },\n children: \"correctly typed click event\",\n },\n ]}\n >\n <Button>Label</Button>\n </States>\n )\n}\n\nNativeButtonProps.story = {\n name: \"Native button tag props\",\n}\n\nexport const WithBoxProps = () => {\n return (\n <States>\n <Box border=\"1px dotted\" borderColor=\"black100\">\n <Button display=\"block\" width=\"100%\" my={2}>\n full width\n </Button>\n\n <Button display=\"block\" width=\"100%\" my={2}>\n with collapsing\n </Button>\n\n <Button display=\"block\" width=\"100%\" my={2}>\n margins\n </Button>\n </Box>\n </States>\n )\n}\n\nWithBoxProps.story = {\n name: \"with BoxProps\",\n}\n\nexport const Loading = () => {\n const [loading, setLoading] = useState(false)\n\n const handleClick = () => {\n if (loading) return\n setLoading(true)\n setTimeout(() => {\n setLoading(false)\n }, 1000)\n }\n return (\n <States>\n <Button loading={loading} onClick={handleClick}>\n click to load\n </Button>\n </States>\n )\n}\n\nexport const As = () => {\n return (\n <States states={[{}, { as: \"div\", children: \"This is a div\" }]}>\n {/* @ts-ignore */}\n <Button as=\"a\" href=\"#example\">\n This is an anchor tag with an href\n </Button>\n </States>\n )\n}\n\nexport const WithIcon = () => {\n return (\n <States<ButtonProps>\n states={[\n {},\n { focus: true },\n { hover: true },\n { loading: true },\n { disabled: true },\n { loading: true, disabled: true },\n { success: true },\n { size: \"large\" },\n { size: \"large\", focus: true },\n { size: \"large\", hover: true },\n { size: \"large\", loading: true },\n { size: \"large\", disabled: true },\n { size: \"large\", loading: true, disabled: true },\n { size: \"large\", success: true },\n ]}\n >\n <Button variant=\"secondaryBlack\" size=\"small\" Icon={BellIcon}>\n Create an Alert\n </Button>\n </States>\n )\n}\n\nexport const ResponsiveSize = () => {\n return <Button size={[\"small\", \"large\"]}>Resize Viewport</Button>\n}\n"],"file":"Button.story.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/Button/Button.story.tsx"],"names":["title","_States","focus","hover","active","loading","disabled","success","story","name","Sizes","BUTTON_SIZE_NAMES","map","size","variants","BUTTON_VARIANT_NAMES","variant","Display","Box","displayName","Variants","reduce","a","b","concat","props","includes","bg","color","NativeButtonProps","autoFocus","children","tabIndex","onClick","event","preventDefault","WithBoxProps","Loading","setLoading","handleClick","setTimeout","As","as","WithIcon","BellStrokeIcon","ResponsiveSize"],"mappings":"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","sourcesContent":["import React, { useState } from \"react\"\nimport { States } from \"storybook-states\"\nimport styled from \"styled-components\"\nimport { Join } from \"../Join\"\nimport BellStrokeIcon from \"@artsy/icons/BellStrokeIcon\"\nimport { Box } from \"../Box\"\nimport { Flex } from \"../Flex\"\nimport { Spacer } from \"../Spacer\"\nimport { ButtonProps } from \"./Button\"\nimport { Button, BUTTON_SIZE_NAMES, BUTTON_VARIANT_NAMES } from \"./index\"\n\nexport default { title: \"Components/Button\" }\n\nexport const _States = () => {\n return (\n <States<ButtonProps>\n states={[\n {},\n { focus: true },\n { hover: true },\n { active: true },\n { loading: true },\n { disabled: true },\n { success: true },\n { loading: true, disabled: true },\n ]}\n >\n <Button>Label</Button>\n </States>\n )\n}\n\n_States.story = {\n name: \"States\",\n}\n\nexport const Sizes = () => {\n return (\n <States<ButtonProps> states={BUTTON_SIZE_NAMES.map((size) => ({ size }))}>\n <Button>Label</Button>\n </States>\n )\n}\n\nconst variants = BUTTON_VARIANT_NAMES.map((variant) => ({ variant }))\n\nconst Display = styled(Box)``\nDisplay.displayName = \"Button\"\n\nexport const Variants = () => {\n return (\n <States<ButtonProps>\n states={([{ size: \"large\" }, { size: \"small\" }] as const)\n .map((size) => {\n return variants.map((variant) => ({ ...size, ...variant }))\n })\n .reduce((a, b) => {\n return a.concat(b)\n }, [])}\n >\n {(props) => (\n <Display\n p={1}\n overflowX=\"auto\"\n {...([\"primaryWhite\", \"secondaryWhite\"].includes(`${props.variant}`)\n ? { bg: \"black100\", color: \"white100\" }\n : { bg: \"white100\", color: \"black100\" })}\n >\n <Flex>\n <Join separator={<Spacer x={2} />}>\n <Button {...props}>Default</Button>\n\n <Button {...props} focus>\n Focus\n </Button>\n\n <Button {...props} hover>\n Hover\n </Button>\n\n <Button {...props} active>\n Active\n </Button>\n\n <Button {...props} loading>\n Loading\n </Button>\n\n <Button {...props} disabled>\n Disabled\n </Button>\n\n <Button {...props} success>\n Success\n </Button>\n </Join>\n </Flex>\n </Display>\n )}\n </States>\n )\n}\n\nexport const NativeButtonProps = () => {\n return (\n <States<ButtonProps>\n states={[\n { autoFocus: true, children: \"autofocused\" },\n { tabIndex: -1, children: \"not focusable with keyboard\" },\n {\n onClick: (event) => {\n event.preventDefault()\n },\n children: \"correctly typed click event\",\n },\n ]}\n >\n <Button>Label</Button>\n </States>\n )\n}\n\nNativeButtonProps.story = {\n name: \"Native button tag props\",\n}\n\nexport const WithBoxProps = () => {\n return (\n <States>\n <Box border=\"1px dotted\" borderColor=\"black100\">\n <Button display=\"block\" width=\"100%\" my={2}>\n full width\n </Button>\n\n <Button display=\"block\" width=\"100%\" my={2}>\n with collapsing\n </Button>\n\n <Button display=\"block\" width=\"100%\" my={2}>\n margins\n </Button>\n </Box>\n </States>\n )\n}\n\nWithBoxProps.story = {\n name: \"with BoxProps\",\n}\n\nexport const Loading = () => {\n const [loading, setLoading] = useState(false)\n\n const handleClick = () => {\n if (loading) return\n setLoading(true)\n setTimeout(() => {\n setLoading(false)\n }, 1000)\n }\n return (\n <States>\n <Button loading={loading} onClick={handleClick}>\n click to load\n </Button>\n </States>\n )\n}\n\nexport const As = () => {\n return (\n <States states={[{}, { as: \"div\", children: \"This is a div\" }]}>\n {/* @ts-ignore */}\n <Button as=\"a\" href=\"#example\">\n This is an anchor tag with an href\n </Button>\n </States>\n )\n}\n\nexport const WithIcon = () => {\n return (\n <States<ButtonProps>\n states={[\n {},\n { focus: true },\n { hover: true },\n { loading: true },\n { disabled: true },\n { loading: true, disabled: true },\n { success: true },\n { size: \"large\" },\n { size: \"large\", focus: true },\n { size: \"large\", hover: true },\n { size: \"large\", loading: true },\n { size: \"large\", disabled: true },\n { size: \"large\", loading: true, disabled: true },\n { size: \"large\", success: true },\n ]}\n >\n <Button variant=\"secondaryBlack\" size=\"small\" Icon={BellStrokeIcon}>\n Create an Alert\n </Button>\n </States>\n )\n}\n\nexport const ResponsiveSize = () => {\n return <Button size={[\"small\", \"large\"]}>Resize Viewport</Button>\n}\n"],"file":"Button.story.js"}
|
|
@@ -15,7 +15,9 @@ var _styledSystem = require("styled-system");
|
|
|
15
15
|
|
|
16
16
|
var _useCursor2 = require("use-cursor");
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _ChevronLeftIcon = _interopRequireDefault(require("@artsy/icons/ChevronLeftIcon"));
|
|
19
|
+
|
|
20
|
+
var _ChevronRightIcon = _interopRequireDefault(require("@artsy/icons/ChevronRightIcon"));
|
|
19
21
|
|
|
20
22
|
var _useUpdateEffect = require("../../utils/useUpdateEffect");
|
|
21
23
|
|
|
@@ -228,16 +230,14 @@ var Carousel = function Carousel(_ref) {
|
|
|
228
230
|
onClick: handlePrev,
|
|
229
231
|
disabled: index === 0,
|
|
230
232
|
"aria-label": "Previous page"
|
|
231
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
232
|
-
direction: "left",
|
|
233
|
+
}, /*#__PURE__*/_react.default.createElement(_ChevronLeftIcon.default, {
|
|
233
234
|
width: 15,
|
|
234
235
|
height: 15
|
|
235
236
|
})), /*#__PURE__*/_react.default.createElement(Next, {
|
|
236
237
|
onClick: handleNext,
|
|
237
238
|
disabled: index === pages.length - 1,
|
|
238
239
|
"aria-label": "Next page"
|
|
239
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
240
|
-
direction: "right",
|
|
240
|
+
}, /*#__PURE__*/_react.default.createElement(_ChevronRightIcon.default, {
|
|
241
241
|
width: 15,
|
|
242
242
|
height: 15
|
|
243
243
|
}))), /*#__PURE__*/_react.default.createElement(Viewport, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/Carousel/Carousel.tsx"],"names":["RAIL_TRANSITION_MS","transition","CarouselRail","Box","defaultProps","as","display","CarouselCell","CELL_GAP_PADDING_AMOUNT","Container","Viewport","Carousel","initialIndex","children","Previous","CarouselPrevious","Next","CarouselNext","Rail","Cell","paginateBy","onChange","onPageCountChange","rest","containerRef","viewportRef","startRef","endRef","cells","Children","toArray","filter","isValidElement","map","child","ref","pages","setPages","initialCursor","max","length","index","handleNext","handlePrev","setCursor","init","viewport","current","values","clientWidth","window","addEventListener","removeEventListener","skipToEnd","focus","skipToStart","handleKeydown","key","contains","document","activeElement","offset","transform","i","isLast"],"mappings":"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","sourcesContent":["import React, {\n Children,\n createRef,\n isValidElement,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\"\nimport styled from \"styled-components\"\nimport { ResponsiveValue, system } from \"styled-system\"\nimport { useCursor } from \"use-cursor\"\nimport { ChevronIcon } from \"../../svgs\"\nimport { SpacingUnit } from \"../../Theme\"\nimport { useUpdateEffect } from \"../../utils/useUpdateEffect\"\nimport { Box, BoxProps } from \"../Box\"\nimport { Skip } from \"../Skip\"\nimport { VisuallyHidden } from \"../VisuallyHidden\"\nimport {\n CarouselNavigationProps,\n CarouselNext,\n CarouselPrevious,\n} from \"./CarouselNavigation\"\nimport { paginateCarousel } from \"./paginate\"\n\nconst RAIL_TRANSITION_MS = 500\n\nconst transition = system({ transition: true })\n\n/** CarouselRailProps */\nexport type CarouselRailProps = BoxProps & {\n transition?: ResponsiveValue<string>\n}\n\n/** A `CarouselRail` slides back and forth within the viewport */\nexport const CarouselRail = styled(Box)<CarouselRailProps>`\n height: 100%;\n margin: 0;\n padding: 0;\n list-style: none;\n white-space: nowrap;\n ${transition}\n`\n\nCarouselRail.defaultProps = {\n as: \"ul\",\n display: \"flex\",\n transition: `transform ${RAIL_TRANSITION_MS}ms`,\n}\n\n/** CarouselCellProps */\nexport type CarouselCellProps = BoxProps\n\n/** A `CarouselCell` wraps a single child in the carousel */\nexport const CarouselCell = styled(Box)`\n white-space: normal;\n`\n\nCarouselCell.defaultProps = {\n as: \"li\",\n}\n\n/**\n * We share this spacing value with the `Swiper` component\n */\nexport const CELL_GAP_PADDING_AMOUNT: SpacingUnit[] = [1, 2]\n\nconst Container = styled(Box)`\n position: relative;\n width: 100%;\n`\n\nconst Viewport = styled(Box)`\n width: 100%;\n overflow: hidden;\n`\n\nexport interface CarouselProps extends BoxProps {\n initialIndex?: number\n children: React.ReactNode\n Next?: typeof CarouselNext | React.FC<CarouselNavigationProps>\n Previous?: typeof CarouselPrevious | React.FC<CarouselNavigationProps>\n Rail?: typeof CarouselRail | React.FC<CarouselRailProps>\n /**\n * If providing a custom `Cell` you must forward a ref so\n * that cell widths can be calculated.\n */\n Cell?: React.ForwardRefExoticComponent<CarouselCellProps>\n paginateBy?: \"page\" | \"cell\"\n onChange?(index: number): void\n onPageCountChange?(count: number): void\n}\n\n/**\n * A `Carousel` accepts children or a series of children that are JSX elements.\n * It presents them in a horizontal rail and when the width exceeds the width\n * of the viewport, it presents navigation arrows and allows a user to page\n * through them.\n */\nexport const Carousel: React.FC<CarouselProps> = ({\n initialIndex = 0,\n children,\n Previous = CarouselPrevious,\n Next = CarouselNext,\n Rail = CarouselRail,\n Cell = CarouselCell,\n paginateBy = \"page\",\n onChange,\n onPageCountChange,\n ...rest\n}) => {\n const containerRef = useRef<HTMLDivElement | null>(null)\n const viewportRef = useRef<HTMLDivElement | null>(null)\n const startRef = useRef<HTMLButtonElement | null>(null)\n const endRef = useRef<HTMLButtonElement | null>(null)\n\n const cells = useMemo(\n () =>\n Children.toArray(children)\n .filter(isValidElement)\n .map((child) => ({ child, ref: createRef<HTMLDivElement>() })),\n [children]\n )\n\n const [pages, setPages] = useState([0])\n\n const { index, handleNext, handlePrev, setCursor } = useCursor({\n initialCursor: initialIndex,\n max: pages.length,\n })\n\n const init = () => {\n const { current: viewport } = viewportRef\n const values = cells.map(({ ref }) => ref.current!.clientWidth)\n\n setPages(\n paginateCarousel({\n viewport: viewport!.clientWidth,\n values,\n paginateBy,\n })\n )\n }\n\n useEffect(() => {\n init()\n window.addEventListener(\"resize\", init)\n return () => {\n window.removeEventListener(\"resize\", init)\n }\n }, [cells])\n\n const skipToEnd = () => {\n if (!endRef.current) return\n endRef.current.focus()\n setCursor(pages.length - 1)\n }\n\n const skipToStart = () => {\n if (!startRef.current) return\n startRef.current.focus()\n setCursor(0)\n }\n\n const handleKeydown = ({ key }: KeyboardEvent) => {\n if (!containerRef.current) return\n\n // Only triggers keyboard navigation if component is in focus\n if (!containerRef.current.contains(document.activeElement)) {\n return\n }\n\n switch (key) {\n case \"ArrowRight\":\n handleNext()\n break\n case \"ArrowLeft\":\n handlePrev()\n break\n default:\n break\n }\n }\n\n useEffect(() => {\n document.addEventListener(\"keydown\", handleKeydown)\n return () => document.removeEventListener(\"keydown\", handleKeydown)\n }, [handleKeydown])\n\n useUpdateEffect(() => {\n onChange && onChange(index)\n }, [onChange, index])\n\n useUpdateEffect(() => {\n onPageCountChange && onPageCountChange(pages.length)\n }, [onPageCountChange, pages.length])\n\n const offset = `-${pages[index]}px`\n\n return (\n <Container ref={containerRef as any} {...rest}>\n <Skip ref={startRef} onClick={skipToEnd} width=\"100%\" mb={1}>\n Skip to end of content\n </Skip>\n\n <nav>\n <Previous\n onClick={handlePrev}\n disabled={index === 0}\n aria-label=\"Previous page\"\n >\n <ChevronIcon direction=\"left\" width={15} height={15} />\n </Previous>\n\n <Next\n onClick={handleNext}\n disabled={index === pages.length - 1}\n aria-label=\"Next page\"\n >\n <ChevronIcon direction=\"right\" width={15} height={15} />\n </Next>\n </nav>\n\n <Viewport ref={viewportRef as any}>\n <Rail style={{ transform: `translateX(${offset})` }}>\n {cells.map(({ child, ref }, i) => {\n const isLast = i === cells.length - 1\n\n return (\n <Cell\n key={i}\n ref={ref}\n pr={!isLast && (CELL_GAP_PADDING_AMOUNT as any)}\n >\n {child}\n </Cell>\n )\n })}\n </Rail>\n </Viewport>\n\n <Skip ref={endRef} onClick={skipToStart} width=\"100%\" mt={1}>\n Skip to beginning of content\n </Skip>\n\n <VisuallyHidden aria-live=\"polite\" aria-atomic=\"true\">\n Page {index + 1} of {pages.length}\n </VisuallyHidden>\n </Container>\n )\n}\n"],"file":"Carousel.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/Carousel/Carousel.tsx"],"names":["RAIL_TRANSITION_MS","transition","CarouselRail","Box","defaultProps","as","display","CarouselCell","CELL_GAP_PADDING_AMOUNT","Container","Viewport","Carousel","initialIndex","children","Previous","CarouselPrevious","Next","CarouselNext","Rail","Cell","paginateBy","onChange","onPageCountChange","rest","containerRef","viewportRef","startRef","endRef","cells","Children","toArray","filter","isValidElement","map","child","ref","pages","setPages","initialCursor","max","length","index","handleNext","handlePrev","setCursor","init","viewport","current","values","clientWidth","window","addEventListener","removeEventListener","skipToEnd","focus","skipToStart","handleKeydown","key","contains","document","activeElement","offset","transform","i","isLast"],"mappings":"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","sourcesContent":["import React, {\n Children,\n createRef,\n isValidElement,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\"\nimport styled from \"styled-components\"\nimport { ResponsiveValue, system } from \"styled-system\"\nimport { useCursor } from \"use-cursor\"\nimport ChevronLeftIcon from \"@artsy/icons/ChevronLeftIcon\"\nimport ChevronRightIcon from \"@artsy/icons/ChevronRightIcon\"\nimport { SpacingUnit } from \"../../Theme\"\nimport { useUpdateEffect } from \"../../utils/useUpdateEffect\"\nimport { Box, BoxProps } from \"../Box\"\nimport { Skip } from \"../Skip\"\nimport { VisuallyHidden } from \"../VisuallyHidden\"\nimport {\n CarouselNavigationProps,\n CarouselNext,\n CarouselPrevious,\n} from \"./CarouselNavigation\"\nimport { paginateCarousel } from \"./paginate\"\n\nconst RAIL_TRANSITION_MS = 500\n\nconst transition = system({ transition: true })\n\n/** CarouselRailProps */\nexport type CarouselRailProps = BoxProps & {\n transition?: ResponsiveValue<string>\n}\n\n/** A `CarouselRail` slides back and forth within the viewport */\nexport const CarouselRail = styled(Box)<CarouselRailProps>`\n height: 100%;\n margin: 0;\n padding: 0;\n list-style: none;\n white-space: nowrap;\n ${transition}\n`\n\nCarouselRail.defaultProps = {\n as: \"ul\",\n display: \"flex\",\n transition: `transform ${RAIL_TRANSITION_MS}ms`,\n}\n\n/** CarouselCellProps */\nexport type CarouselCellProps = BoxProps\n\n/** A `CarouselCell` wraps a single child in the carousel */\nexport const CarouselCell = styled(Box)`\n white-space: normal;\n`\n\nCarouselCell.defaultProps = {\n as: \"li\",\n}\n\n/**\n * We share this spacing value with the `Swiper` component\n */\nexport const CELL_GAP_PADDING_AMOUNT: SpacingUnit[] = [1, 2]\n\nconst Container = styled(Box)`\n position: relative;\n width: 100%;\n`\n\nconst Viewport = styled(Box)`\n width: 100%;\n overflow: hidden;\n`\n\nexport interface CarouselProps extends BoxProps {\n initialIndex?: number\n children: React.ReactNode\n Next?: typeof CarouselNext | React.FC<CarouselNavigationProps>\n Previous?: typeof CarouselPrevious | React.FC<CarouselNavigationProps>\n Rail?: typeof CarouselRail | React.FC<CarouselRailProps>\n /**\n * If providing a custom `Cell` you must forward a ref so\n * that cell widths can be calculated.\n */\n Cell?: React.ForwardRefExoticComponent<CarouselCellProps>\n paginateBy?: \"page\" | \"cell\"\n onChange?(index: number): void\n onPageCountChange?(count: number): void\n}\n\n/**\n * A `Carousel` accepts children or a series of children that are JSX elements.\n * It presents them in a horizontal rail and when the width exceeds the width\n * of the viewport, it presents navigation arrows and allows a user to page\n * through them.\n */\nexport const Carousel: React.FC<CarouselProps> = ({\n initialIndex = 0,\n children,\n Previous = CarouselPrevious,\n Next = CarouselNext,\n Rail = CarouselRail,\n Cell = CarouselCell,\n paginateBy = \"page\",\n onChange,\n onPageCountChange,\n ...rest\n}) => {\n const containerRef = useRef<HTMLDivElement | null>(null)\n const viewportRef = useRef<HTMLDivElement | null>(null)\n const startRef = useRef<HTMLButtonElement | null>(null)\n const endRef = useRef<HTMLButtonElement | null>(null)\n\n const cells = useMemo(\n () =>\n Children.toArray(children)\n .filter(isValidElement)\n .map((child) => ({ child, ref: createRef<HTMLDivElement>() })),\n [children]\n )\n\n const [pages, setPages] = useState([0])\n\n const { index, handleNext, handlePrev, setCursor } = useCursor({\n initialCursor: initialIndex,\n max: pages.length,\n })\n\n const init = () => {\n const { current: viewport } = viewportRef\n const values = cells.map(({ ref }) => ref.current!.clientWidth)\n\n setPages(\n paginateCarousel({\n viewport: viewport!.clientWidth,\n values,\n paginateBy,\n })\n )\n }\n\n useEffect(() => {\n init()\n window.addEventListener(\"resize\", init)\n return () => {\n window.removeEventListener(\"resize\", init)\n }\n }, [cells])\n\n const skipToEnd = () => {\n if (!endRef.current) return\n endRef.current.focus()\n setCursor(pages.length - 1)\n }\n\n const skipToStart = () => {\n if (!startRef.current) return\n startRef.current.focus()\n setCursor(0)\n }\n\n const handleKeydown = ({ key }: KeyboardEvent) => {\n if (!containerRef.current) return\n\n // Only triggers keyboard navigation if component is in focus\n if (!containerRef.current.contains(document.activeElement)) {\n return\n }\n\n switch (key) {\n case \"ArrowRight\":\n handleNext()\n break\n case \"ArrowLeft\":\n handlePrev()\n break\n default:\n break\n }\n }\n\n useEffect(() => {\n document.addEventListener(\"keydown\", handleKeydown)\n return () => document.removeEventListener(\"keydown\", handleKeydown)\n }, [handleKeydown])\n\n useUpdateEffect(() => {\n onChange && onChange(index)\n }, [onChange, index])\n\n useUpdateEffect(() => {\n onPageCountChange && onPageCountChange(pages.length)\n }, [onPageCountChange, pages.length])\n\n const offset = `-${pages[index]}px`\n\n return (\n <Container ref={containerRef as any} {...rest}>\n <Skip ref={startRef} onClick={skipToEnd} width=\"100%\" mb={1}>\n Skip to end of content\n </Skip>\n\n <nav>\n <Previous\n onClick={handlePrev}\n disabled={index === 0}\n aria-label=\"Previous page\"\n >\n <ChevronLeftIcon width={15} height={15} />\n </Previous>\n\n <Next\n onClick={handleNext}\n disabled={index === pages.length - 1}\n aria-label=\"Next page\"\n >\n <ChevronRightIcon width={15} height={15} />\n </Next>\n </nav>\n\n <Viewport ref={viewportRef as any}>\n <Rail style={{ transform: `translateX(${offset})` }}>\n {cells.map(({ child, ref }, i) => {\n const isLast = i === cells.length - 1\n\n return (\n <Cell\n key={i}\n ref={ref}\n pr={!isLast && (CELL_GAP_PADDING_AMOUNT as any)}\n >\n {child}\n </Cell>\n )\n })}\n </Rail>\n </Viewport>\n\n <Skip ref={endRef} onClick={skipToStart} width=\"100%\" mt={1}>\n Skip to beginning of content\n </Skip>\n\n <VisuallyHidden aria-live=\"polite\" aria-atomic=\"true\">\n Page {index + 1} of {pages.length}\n </VisuallyHidden>\n </Container>\n )\n}\n"],"file":"Carousel.js"}
|
|
@@ -9,7 +9,7 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
9
9
|
|
|
10
10
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _CheckmarkIcon = _interopRequireDefault(require("@artsy/icons/CheckmarkIcon"));
|
|
13
13
|
|
|
14
14
|
var _Box = require("../Box");
|
|
15
15
|
|
|
@@ -36,9 +36,8 @@ var Check = function Check(_ref) {
|
|
|
36
36
|
border: "1px solid",
|
|
37
37
|
disabled: disabled,
|
|
38
38
|
selected: selected
|
|
39
|
-
}, rest), /*#__PURE__*/_react.default.createElement(
|
|
40
|
-
"aria-hidden": true
|
|
41
|
-
fill: "currentColor"
|
|
39
|
+
}, rest), /*#__PURE__*/_react.default.createElement(_CheckmarkIcon.default, {
|
|
40
|
+
"aria-hidden": true
|
|
42
41
|
}));
|
|
43
42
|
};
|
|
44
43
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/Checkbox/Check.tsx"],"names":["Check","disabled","selected","rest","Container","Box","props","mode","focus","CHECK_STATES","hover","error","default","resting"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;AAUA;AACO,IAAMA,KAA2B,GAAG,SAA9BA,KAA8B,OAIrC;AAAA,MAHJC,QAGI,QAHJA,QAGI;AAAA,MAFJC,QAEI,QAFJA,QAEI;AAAA,MADDC,IACC;;AACJ,sBACE,6BAAC,SAAD;AACE,IAAA,EAAE,EAAE,CADN;AAEE,IAAA,MAAM,EAAC,WAFT;AAGE,IAAA,QAAQ,EAAEF,QAHZ;AAIE,IAAA,QAAQ,EAAEC;AAJZ,KAKMC,IALN,gBAOE,6BAAC,
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/Checkbox/Check.tsx"],"names":["Check","disabled","selected","rest","Container","Box","props","mode","focus","CHECK_STATES","hover","error","default","resting"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;AAUA;AACO,IAAMA,KAA2B,GAAG,SAA9BA,KAA8B,OAIrC;AAAA,MAHJC,QAGI,QAHJA,QAGI;AAAA,MAFJC,QAEI,QAFJA,QAEI;AAAA,MADDC,IACC;;AACJ,sBACE,6BAAC,SAAD;AACE,IAAA,EAAE,EAAE,CADN;AAEE,IAAA,MAAM,EAAC,WAFT;AAGE,IAAA,QAAQ,EAAEF,QAHZ;AAIE,IAAA,QAAQ,EAAEC;AAJZ,KAKMC,IALN,gBAOE,6BAAC,sBAAD;AAAe;AAAf,IAPF,CADF;AAWD,CAhBM;;;AAAMH,K;AAkBb,IAAMI,SAAS,GAAG,+BAAOC,QAAP,CAAH;AAAA;AAAA;AAAA,6JAQX,UAACC,KAAD,EAAW;AACX,MAAMC,IAAI,GAAI,YAAM;AAClB,YAAQ,IAAR;AACE,WAAKD,KAAK,CAACE,KAAX;AACE,eAAOC,qBAAaD,KAApB;;AACF,WAAKF,KAAK,CAACI,KAAX;AACE,eAAOD,qBAAaC,KAApB;;AACF,WAAKJ,KAAK,CAACK,KAAX;AACE,eAAOF,qBAAaE,KAApB;;AACF,WAAKL,KAAK,CAACL,QAAX;AACE,eAAOQ,qBAAaR,QAApB;;AACF;AACE,eAAOQ,qBAAaG,OAApB;AAVJ;AAYD,GAbY,EAAb;;AAeA,SAAON,KAAK,CAACJ,QAAN,GAAiBK,IAAI,CAACL,QAAtB,GAAiCK,IAAI,CAACM,OAA7C;AACD,CAzBY,CAAf","sourcesContent":["import React from \"react\"\nimport styled from \"styled-components\"\nimport CheckmarkIcon from \"@artsy/icons/CheckmarkIcon\"\nimport { Box } from \"../Box\"\nimport { CHECK_STATES } from \"./tokens\"\n\nexport interface CheckProps {\n disabled?: boolean\n error?: boolean\n hover?: boolean\n focus?: boolean\n selected?: boolean\n}\n\n/** Toggeable check mark */\nexport const Check: React.FC<CheckProps> = ({\n disabled,\n selected,\n ...rest\n}) => {\n return (\n <Container\n mr={1}\n border=\"1px solid\"\n disabled={disabled}\n selected={selected}\n {...rest}\n >\n <CheckmarkIcon aria-hidden />\n </Container>\n )\n}\n\nconst Container = styled(Box)<CheckProps>`\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.25s, border-color 0.25s, color 0.25s;\n\n ${(props) => {\n const mode = (() => {\n switch (true) {\n case props.focus:\n return CHECK_STATES.focus\n case props.hover:\n return CHECK_STATES.hover\n case props.error:\n return CHECK_STATES.error\n case props.disabled:\n return CHECK_STATES.disabled\n default:\n return CHECK_STATES.default\n }\n })()\n\n return props.selected ? mode.selected : mode.resting\n }};\n`\n"],"file":"Check.js"}
|
|
@@ -11,7 +11,9 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
11
11
|
|
|
12
12
|
var _isText = require("../../helpers/isText");
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _ChevronUpIcon = _interopRequireDefault(require("@artsy/icons/ChevronUpIcon"));
|
|
15
|
+
|
|
16
|
+
var _ChevronDownIcon = _interopRequireDefault(require("@artsy/icons/ChevronDownIcon"));
|
|
15
17
|
|
|
16
18
|
var _Box = require("../Box");
|
|
17
19
|
|
|
@@ -23,6 +25,8 @@ var _Text = require("../Text");
|
|
|
23
25
|
|
|
24
26
|
var _excluded = ["label", "expanded", "children", "disabled", "onClick", "borderColor"];
|
|
25
27
|
|
|
28
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
29
|
+
|
|
26
30
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
31
|
|
|
28
32
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -93,15 +97,19 @@ var Expandable = function Expandable(_ref) {
|
|
|
93
97
|
alignItems: "center"
|
|
94
98
|
}, (0, _isText.isText)(label) ? /*#__PURE__*/_react.default.createElement(_Text.Text, {
|
|
95
99
|
variant: "sm-display"
|
|
96
|
-
}, label) : label), !disabled && /*#__PURE__*/_react.default.createElement(
|
|
97
|
-
|
|
100
|
+
}, label) : label), !disabled && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, expanded ? /*#__PURE__*/_react.default.createElement(_ChevronUpIcon.default, {
|
|
101
|
+
width: 14,
|
|
102
|
+
height: 14,
|
|
103
|
+
ml: 1,
|
|
104
|
+
mr: 1,
|
|
105
|
+
"aria-hidden": "true"
|
|
106
|
+
}) : /*#__PURE__*/_react.default.createElement(_ChevronDownIcon.default, {
|
|
98
107
|
width: 14,
|
|
99
108
|
height: 14,
|
|
100
109
|
ml: 1,
|
|
101
110
|
mr: 1,
|
|
102
|
-
fill: "currentColor",
|
|
103
111
|
"aria-hidden": "true"
|
|
104
|
-
})), expanded && (typeof children === "function" ? children({
|
|
112
|
+
}))), expanded && (typeof children === "function" ? children({
|
|
105
113
|
setExpanded: setExpanded,
|
|
106
114
|
expanded: expanded
|
|
107
115
|
}) : children));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/Expandable/Expandable.tsx"],"names":["Expandable","label","defaultExpanded","expanded","children","disabled","onClick","borderColor","rest","setExpanded","boxProps","clickableProps","handleClick","event","prevExpanded"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/Expandable/Expandable.tsx"],"names":["Expandable","label","defaultExpanded","expanded","children","disabled","onClick","borderColor","rest","setExpanded","boxProps","clickableProps","handleClick","event","prevExpanded"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA;AACA;AACA;AACO,IAAMA,UAAqC,GAAG,SAAxCA,UAAwC,OAQ/C;AAAA,MAPJC,KAOI,QAPJA,KAOI;AAAA,MANMC,eAMN,QANJC,QAMI;AAAA,MALJC,QAKI,QALJA,QAKI;AAAA,MAJJC,QAII,QAJJA,QAII;AAAA,MAHJC,OAGI,QAHJA,OAGI;AAAA,8BAFJC,WAEI;AAAA,MAFJA,WAEI,iCAFU,SAEV;AAAA,MADDC,IACC;;AACJ,kBAAgC,qBAASN,eAAT,CAAhC;AAAA;AAAA,MAAOC,QAAP;AAAA,MAAiBM,WAAjB;;AAEA,uBAAmC,wBAAcD,IAAd,CAAnC;AAAA;AAAA,MAAOE,QAAP;AAAA,MAAiBC,cAAjB;;AAEA,MAAMC,WAAW,GAAG,SAAdA,WAAc,CAClBC,KADkB,EAEf;AACHJ,IAAAA,WAAW,CAAC,UAACK,YAAD;AAAA,aAAkB,CAACA,YAAnB;AAAA,KAAD,CAAX;AACAR,IAAAA,OAAO,IAAIA,OAAO,CAACO,KAAD,CAAlB;AACD,GALD;;AAOA,sBACE,6BAAC,QAAD,EAASH,QAAT,eACE,6BAAC,oBAAD;AACE,IAAA,KAAK,EAAC,MADR;AAEE,IAAA,OAAO,EAAC,MAFV;AAGE,IAAA,UAAU,EAAC,QAHb;AAIE,IAAA,cAAc,EAAC,eAJjB;AAKE,IAAA,SAAS,EAAC,WALZ;AAME,IAAA,WAAW,EAAEH,WANf;AAOE,IAAA,EAAE,EAAE,CAPN;AAQE,IAAA,QAAQ,EAAEF,QARZ;AASE,qBAAeF,QATjB;AAUE,IAAA,OAAO,EAAES;AAVX,KAWMD,cAXN,gBAaE,6BAAC,UAAD;AAAM,IAAA,IAAI,EAAE,CAAZ;AAAe,IAAA,SAAS,EAAE,EAA1B;AAA8B,IAAA,OAAO,EAAC,MAAtC;AAA6C,IAAA,UAAU,EAAC;AAAxD,KACG,oBAAOV,KAAP,iBAAgB,6BAAC,UAAD;AAAM,IAAA,OAAO,EAAC;AAAd,KAA4BA,KAA5B,CAAhB,GAA4DA,KAD/D,CAbF,EAiBG,CAACI,QAAD,iBACC,4DACGF,QAAQ,gBACP,6BAAC,sBAAD;AACE,IAAA,KAAK,EAAE,EADT;AAEE,IAAA,MAAM,EAAE,EAFV;AAGE,IAAA,EAAE,EAAE,CAHN;AAIE,IAAA,EAAE,EAAE,CAJN;AAKE,mBAAY;AALd,IADO,gBASP,6BAAC,wBAAD;AACE,IAAA,KAAK,EAAE,EADT;AAEE,IAAA,MAAM,EAAE,EAFV;AAGE,IAAA,EAAE,EAAE,CAHN;AAIE,IAAA,EAAE,EAAE,CAJN;AAKE,mBAAY;AALd,IAVJ,CAlBJ,CADF,EAyCGA,QAAQ,KACN,OAAOC,QAAP,KAAoB,UAApB,GACGA,QAAQ,CAAC;AAAEK,IAAAA,WAAW,EAAXA,WAAF;AAAeN,IAAAA,QAAQ,EAARA;AAAf,GAAD,CADX,GAEGC,QAHG,CAzCX,CADF;AAgDD,CApEM;;;AAAMJ,U","sourcesContent":["import React, { useState } from \"react\"\nimport { isText } from \"../../helpers/isText\"\nimport ChevronUpIcon from \"@artsy/icons/ChevronUpIcon\"\nimport ChevronDownIcon from \"@artsy/icons/ChevronDownIcon\"\nimport { Box, splitBoxProps } from \"../Box\"\nimport { Clickable, ClickableProps } from \"../Clickable\"\nimport { Flex } from \"../Flex\"\nimport { Text } from \"../Text\"\n\nexport interface ExpandableProps extends ClickableProps {\n label?: string | JSX.Element\n expanded?: boolean\n children: React.ReactNode\n}\n\n/**\n * A toggleable component used to show / hide content\n */\nexport const Expandable: React.FC<ExpandableProps> = ({\n label,\n expanded: defaultExpanded,\n children,\n disabled,\n onClick,\n borderColor = \"black60\",\n ...rest\n}) => {\n const [expanded, setExpanded] = useState(defaultExpanded)\n\n const [boxProps, clickableProps] = splitBoxProps(rest)\n\n const handleClick = (\n event: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => {\n setExpanded((prevExpanded) => !prevExpanded)\n onClick && onClick(event)\n }\n\n return (\n <Box {...boxProps}>\n <Clickable\n width=\"100%\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n borderTop=\"1px solid\"\n borderColor={borderColor}\n pt={1}\n disabled={disabled}\n aria-expanded={expanded}\n onClick={handleClick}\n {...clickableProps}\n >\n <Flex flex={1} minHeight={40} display=\"flex\" alignItems=\"center\">\n {isText(label) ? <Text variant=\"sm-display\">{label}</Text> : label}\n </Flex>\n\n {!disabled && (\n <>\n {expanded ? (\n <ChevronUpIcon\n width={14}\n height={14}\n ml={1}\n mr={1}\n aria-hidden=\"true\"\n />\n ) : (\n <ChevronDownIcon\n width={14}\n height={14}\n ml={1}\n mr={1}\n aria-hidden=\"true\"\n />\n )}\n </>\n )}\n </Clickable>\n\n {expanded &&\n (typeof children === \"function\"\n ? children({ setExpanded, expanded })\n : children)}\n </Box>\n )\n}\n"],"file":"Expandable.js"}
|