@os-design/core 1.0.131 → 1.0.134
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/Input/index.js +3 -1
- package/dist/cjs/Input/index.js.map +1 -1
- package/dist/cjs/List/index.js +39 -35
- package/dist/cjs/List/index.js.map +1 -1
- package/dist/esm/Input/index.js +2 -0
- package/dist/esm/Input/index.js.map +1 -1
- package/dist/esm/List/index.js +25 -25
- package/dist/esm/List/index.js.map +1 -1
- package/dist/types/Input/index.d.ts.map +1 -1
- package/dist/types/List/index.d.ts +5 -6
- package/dist/types/List/index.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/cjs/Input/index.js
CHANGED
|
@@ -23,7 +23,7 @@ var _icons = require("@os-design/icons");
|
|
|
23
23
|
|
|
24
24
|
var _getFocusableElements = _interopRequireDefault(require("./utils/getFocusableElements"));
|
|
25
25
|
|
|
26
|
-
var _excluded = ["type", "left", "leftHasPadding", "right", "rightHasPadding", "disabled", "loading", "containerRef", "containerProps", "size", "onChange"];
|
|
26
|
+
var _excluded = ["type", "left", "leftHasPadding", "right", "rightHasPadding", "disabled", "loading", "containerRef", "containerProps", "size", "value", "onChange"];
|
|
27
27
|
|
|
28
28
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12;
|
|
29
29
|
|
|
@@ -126,6 +126,7 @@ var Input = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
126
126
|
_ref$containerProps = _ref.containerProps,
|
|
127
127
|
containerProps = _ref$containerProps === void 0 ? {} : _ref$containerProps,
|
|
128
128
|
size = _ref.size,
|
|
129
|
+
value = _ref.value,
|
|
129
130
|
_ref$onChange = _ref.onChange,
|
|
130
131
|
_onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange,
|
|
131
132
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
@@ -180,6 +181,7 @@ var Input = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
180
181
|
disabled: disabled,
|
|
181
182
|
hasLeft: !!left,
|
|
182
183
|
hasRight: !!right,
|
|
184
|
+
value: value || '',
|
|
183
185
|
onChange: function onChange(e) {
|
|
184
186
|
return _onChange(e.target.value, e);
|
|
185
187
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/Input/index.tsx"],"names":["hoverStyles","p","disabled","css","theme","inputHoverColorBorder","focusStyles","inputFocusColorBorder","inputFocusColorShadow","disabledStyles","inputDisabledColorText","inputDisabledColorBg","inputDisabledColorBorder","inputDisabledColorPlaceholder","InputContainer","resetFocusStyles","baseHeight","inputColorBg","inputBorderWidth","inputColorBorder","borderRadius","sizeStyles","notHasLeftStyles","hasLeft","inputPaddingHorizontal","notHasRightStyles","hasRight","StyledInput","inputColorText","inputColorPlaceholder","Addon","LeftAddon","inputAddonPaddingHorizontal","hasPadding","RightAddon","Input","ref","type","left","leftHasPadding","right","rightHasPadding","loading","containerRef","containerProps","size","onChange","rest","innerContainerRef","mergedContainerRef","rightValue","rightHasPaddingValue","e","target","current","focusableElements","focus","document","inputFocusableElements","firstInputElementIsFocused","activeElement","key","shiftKey","inputContainerIndex","findIndex","el","elementBeforeInputContainer","buttonPaddingHorizontal","value","displayName"],"mappings":"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","sourcesContent":["import React, { ChangeEvent, ForwardedRef, forwardRef, useMemo } from 'react';\nimport {\n resetFocusStyles,\n sizeStyles,\n transitionStyles,\n WithSize,\n} from '@os-design/styles';\nimport { omitEmotionProps, useForwardedRef } from '@os-design/utils';\nimport styled from '@emotion/styled';\nimport { clr, ThemeOverrider } from '@os-design/theming';\nimport { css } from '@emotion/react';\nimport { Loading } from '@os-design/icons';\nimport getFocusableElements from './utils/getFocusableElements';\n\ntype JsxInputProps = Omit<\n JSX.IntrinsicElements['input'],\n 'value' | 'onChange' | 'size' | 'ref'\n>;\nexport interface InputProps extends JsxInputProps, WithSize {\n /**\n * Type of the input.\n * @default text\n */\n type?: JsxInputProps['type'];\n /**\n * The component located on the left side.\n * @default undefined\n */\n left?: React.ReactNode;\n /**\n * Adds padding to the left component.\n * It can be useful when passing an icon or text in the left component.\n * @default false\n */\n leftHasPadding?: boolean;\n /**\n * The component located on the right side.\n * @default undefined\n */\n right?: React.ReactNode;\n /**\n * Adds padding to the right component.\n * It can be useful when passing an icon or text in the right component.\n * @default false\n */\n rightHasPadding?: boolean;\n /**\n * Whether the input is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Shows the loading status.\n * @default false\n */\n loading?: boolean;\n /**\n * The ref of the input container.\n * @default undefined\n */\n containerRef?: ForwardedRef<HTMLDivElement>;\n /**\n * The props of the input container.\n * @default undefined\n */\n containerProps?: JSX.IntrinsicElements['div'];\n /**\n * The input value.\n * @default undefined\n */\n value?: string;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: string, e: ChangeEvent<HTMLInputElement>) => void;\n}\n\nconst hoverStyles = (p) =>\n !p.disabled &&\n css`\n @media (hover: hover) {\n &:hover {\n border-color: ${clr(p.theme.inputHoverColorBorder)};\n }\n }\n `;\n\nconst focusStyles = (p) =>\n !p.disabled &&\n css`\n &:focus-within {\n border-color: ${clr(p.theme.inputFocusColorBorder)};\n box-shadow: 0 0 0 0.15em ${clr(p.theme.inputFocusColorShadow)};\n }\n `;\n\nconst disabledStyles = (p) =>\n p.disabled &&\n css`\n cursor: not-allowed;\n color: ${clr(p.theme.inputDisabledColorText)};\n background-color: ${clr(p.theme.inputDisabledColorBg)};\n border-color: ${clr(p.theme.inputDisabledColorBorder)};\n\n input,\n textarea {\n cursor: not-allowed;\n &::placeholder {\n color: ${clr(p.theme.inputDisabledColorPlaceholder)};\n }\n }\n `;\n\ntype InputContainerProps = Pick<InputProps, 'disabled' | 'size'>;\nexport const InputContainer = styled(\n 'div',\n omitEmotionProps('disabled', 'size')\n)<InputContainerProps>`\n ${resetFocusStyles};\n\n display: inline-flex;\n width: 100%;\n height: ${(p) => p.theme.baseHeight}em;\n box-sizing: border-box;\n background-color: ${(p) => clr(p.theme.inputColorBg)};\n\n border: ${(p) => p.theme.inputBorderWidth}px solid\n ${(p) => clr(p.theme.inputColorBorder)};\n border-radius: ${(p) => p.theme.borderRadius}em;\n\n ${hoverStyles};\n ${focusStyles};\n ${disabledStyles};\n ${sizeStyles};\n ${transitionStyles('border-color', 'box-shadow')};\n`;\n\nconst notHasLeftStyles = (p) =>\n !p.hasLeft &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `;\n\nconst notHasRightStyles = (p) =>\n !p.hasRight &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `;\n\ninterface StyledInputProps {\n hasLeft?: boolean;\n hasRight?: boolean;\n}\nexport const StyledInput = styled(\n 'input',\n omitEmotionProps('hasLeft', 'hasRight')\n)<StyledInputProps>`\n ${resetFocusStyles};\n appearance: none;\n border: none;\n font-size: 1em;\n flex: 1;\n overflow: hidden;\n\n color: ${(p) => clr(p.theme.inputColorText)};\n background-color: transparent;\n\n &::placeholder {\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n }\n\n ${notHasLeftStyles};\n ${notHasRightStyles};\n`;\n\ninterface AddonProps {\n hasPadding: boolean;\n}\nconst Addon = styled('span', omitEmotionProps('hasPadding'))<AddonProps>`\n display: flex;\n align-items: center;\n user-select: none;\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n\n svg {\n transform: scale(1.2);\n }\n`;\n\nconst LeftAddon = styled(Addon)`\n padding-right: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\nconst RightAddon = styled(Addon)`\n padding-left: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\n/**\n * The basic input component.\n */\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n type = 'text',\n left,\n leftHasPadding = false,\n right,\n rightHasPadding = false,\n disabled = false,\n loading = false,\n containerRef,\n containerProps = {},\n size,\n onChange = () => {},\n ...rest\n },\n ref\n ) => {\n const [innerContainerRef, mergedContainerRef] =\n useForwardedRef(containerRef);\n\n const rightValue = useMemo(\n () => (loading ? <Loading /> : right),\n [loading, right]\n );\n\n const rightHasPaddingValue = useMemo(\n () => (loading ? true : rightHasPadding),\n [loading, rightHasPadding]\n );\n\n return (\n <InputContainer\n disabled={disabled}\n size={size}\n tabIndex={!disabled ? 0 : -1}\n onFocus={(e) => {\n // Focus the next element if the container element was focused.\n // The next element will be the input or button in the addon.\n if (disabled || e.target !== innerContainerRef.current) return;\n const focusableElements = getFocusableElements(\n innerContainerRef.current\n );\n focusableElements[0].focus();\n }}\n onKeyDown={(e) => {\n // Focus the previous element if the first element in the input\n // container is focused and the Shift + Tab combination is pressed.\n const focusableElements = getFocusableElements(document);\n const inputFocusableElements = innerContainerRef.current\n ? getFocusableElements(innerContainerRef.current)\n : [];\n const firstInputElementIsFocused =\n inputFocusableElements[0] === document.activeElement;\n if (firstInputElementIsFocused && e.key === 'Tab' && e.shiftKey) {\n const inputContainerIndex = focusableElements.findIndex(\n (el) => el === innerContainerRef.current\n );\n if (inputContainerIndex === 0) return;\n const elementBeforeInputContainer =\n focusableElements[inputContainerIndex - 1];\n elementBeforeInputContainer.focus();\n }\n }}\n ref={mergedContainerRef}\n {...containerProps}\n >\n {left && (\n <ThemeOverrider overrides={{ buttonPaddingHorizontal: 0.8 }}>\n <LeftAddon hasPadding={leftHasPadding}>{left}</LeftAddon>\n </ThemeOverrider>\n )}\n\n <StyledInput\n type={type}\n disabled={disabled}\n hasLeft={!!left}\n hasRight={!!right}\n onChange={(e) => onChange(e.target.value, e)}\n {...rest}\n ref={ref}\n />\n\n {rightValue && (\n <ThemeOverrider overrides={{ buttonPaddingHorizontal: 0.8 }}>\n <RightAddon hasPadding={rightHasPaddingValue}>\n {rightValue}\n </RightAddon>\n </ThemeOverrider>\n )}\n </InputContainer>\n );\n }\n);\n\nInput.displayName = 'Input';\n\nexport default Input;\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/Input/index.tsx"],"names":["hoverStyles","p","disabled","css","theme","inputHoverColorBorder","focusStyles","inputFocusColorBorder","inputFocusColorShadow","disabledStyles","inputDisabledColorText","inputDisabledColorBg","inputDisabledColorBorder","inputDisabledColorPlaceholder","InputContainer","resetFocusStyles","baseHeight","inputColorBg","inputBorderWidth","inputColorBorder","borderRadius","sizeStyles","notHasLeftStyles","hasLeft","inputPaddingHorizontal","notHasRightStyles","hasRight","StyledInput","inputColorText","inputColorPlaceholder","Addon","LeftAddon","inputAddonPaddingHorizontal","hasPadding","RightAddon","Input","ref","type","left","leftHasPadding","right","rightHasPadding","loading","containerRef","containerProps","size","value","onChange","rest","innerContainerRef","mergedContainerRef","rightValue","rightHasPaddingValue","e","target","current","focusableElements","focus","document","inputFocusableElements","firstInputElementIsFocused","activeElement","key","shiftKey","inputContainerIndex","findIndex","el","elementBeforeInputContainer","buttonPaddingHorizontal","displayName"],"mappings":"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","sourcesContent":["import React, { ChangeEvent, ForwardedRef, forwardRef, useMemo } from 'react';\nimport {\n resetFocusStyles,\n sizeStyles,\n transitionStyles,\n WithSize,\n} from '@os-design/styles';\nimport { omitEmotionProps, useForwardedRef } from '@os-design/utils';\nimport styled from '@emotion/styled';\nimport { clr, ThemeOverrider } from '@os-design/theming';\nimport { css } from '@emotion/react';\nimport { Loading } from '@os-design/icons';\nimport getFocusableElements from './utils/getFocusableElements';\n\ntype JsxInputProps = Omit<\n JSX.IntrinsicElements['input'],\n 'value' | 'onChange' | 'size' | 'ref'\n>;\nexport interface InputProps extends JsxInputProps, WithSize {\n /**\n * Type of the input.\n * @default text\n */\n type?: JsxInputProps['type'];\n /**\n * The component located on the left side.\n * @default undefined\n */\n left?: React.ReactNode;\n /**\n * Adds padding to the left component.\n * It can be useful when passing an icon or text in the left component.\n * @default false\n */\n leftHasPadding?: boolean;\n /**\n * The component located on the right side.\n * @default undefined\n */\n right?: React.ReactNode;\n /**\n * Adds padding to the right component.\n * It can be useful when passing an icon or text in the right component.\n * @default false\n */\n rightHasPadding?: boolean;\n /**\n * Whether the input is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Shows the loading status.\n * @default false\n */\n loading?: boolean;\n /**\n * The ref of the input container.\n * @default undefined\n */\n containerRef?: ForwardedRef<HTMLDivElement>;\n /**\n * The props of the input container.\n * @default undefined\n */\n containerProps?: JSX.IntrinsicElements['div'];\n /**\n * The input value.\n * @default undefined\n */\n value?: string;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: string, e: ChangeEvent<HTMLInputElement>) => void;\n}\n\nconst hoverStyles = (p) =>\n !p.disabled &&\n css`\n @media (hover: hover) {\n &:hover {\n border-color: ${clr(p.theme.inputHoverColorBorder)};\n }\n }\n `;\n\nconst focusStyles = (p) =>\n !p.disabled &&\n css`\n &:focus-within {\n border-color: ${clr(p.theme.inputFocusColorBorder)};\n box-shadow: 0 0 0 0.15em ${clr(p.theme.inputFocusColorShadow)};\n }\n `;\n\nconst disabledStyles = (p) =>\n p.disabled &&\n css`\n cursor: not-allowed;\n color: ${clr(p.theme.inputDisabledColorText)};\n background-color: ${clr(p.theme.inputDisabledColorBg)};\n border-color: ${clr(p.theme.inputDisabledColorBorder)};\n\n input,\n textarea {\n cursor: not-allowed;\n &::placeholder {\n color: ${clr(p.theme.inputDisabledColorPlaceholder)};\n }\n }\n `;\n\ntype InputContainerProps = Pick<InputProps, 'disabled' | 'size'>;\nexport const InputContainer = styled(\n 'div',\n omitEmotionProps('disabled', 'size')\n)<InputContainerProps>`\n ${resetFocusStyles};\n\n display: inline-flex;\n width: 100%;\n height: ${(p) => p.theme.baseHeight}em;\n box-sizing: border-box;\n background-color: ${(p) => clr(p.theme.inputColorBg)};\n\n border: ${(p) => p.theme.inputBorderWidth}px solid\n ${(p) => clr(p.theme.inputColorBorder)};\n border-radius: ${(p) => p.theme.borderRadius}em;\n\n ${hoverStyles};\n ${focusStyles};\n ${disabledStyles};\n ${sizeStyles};\n ${transitionStyles('border-color', 'box-shadow')};\n`;\n\nconst notHasLeftStyles = (p) =>\n !p.hasLeft &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `;\n\nconst notHasRightStyles = (p) =>\n !p.hasRight &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `;\n\ninterface StyledInputProps {\n hasLeft?: boolean;\n hasRight?: boolean;\n}\nexport const StyledInput = styled(\n 'input',\n omitEmotionProps('hasLeft', 'hasRight')\n)<StyledInputProps>`\n ${resetFocusStyles};\n appearance: none;\n border: none;\n font-size: 1em;\n flex: 1;\n overflow: hidden;\n\n color: ${(p) => clr(p.theme.inputColorText)};\n background-color: transparent;\n\n &::placeholder {\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n }\n\n ${notHasLeftStyles};\n ${notHasRightStyles};\n`;\n\ninterface AddonProps {\n hasPadding: boolean;\n}\nconst Addon = styled('span', omitEmotionProps('hasPadding'))<AddonProps>`\n display: flex;\n align-items: center;\n user-select: none;\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n\n svg {\n transform: scale(1.2);\n }\n`;\n\nconst LeftAddon = styled(Addon)`\n padding-right: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\nconst RightAddon = styled(Addon)`\n padding-left: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\n/**\n * The basic input component.\n */\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n type = 'text',\n left,\n leftHasPadding = false,\n right,\n rightHasPadding = false,\n disabled = false,\n loading = false,\n containerRef,\n containerProps = {},\n size,\n value,\n onChange = () => {},\n ...rest\n },\n ref\n ) => {\n const [innerContainerRef, mergedContainerRef] =\n useForwardedRef(containerRef);\n\n const rightValue = useMemo(\n () => (loading ? <Loading /> : right),\n [loading, right]\n );\n\n const rightHasPaddingValue = useMemo(\n () => (loading ? true : rightHasPadding),\n [loading, rightHasPadding]\n );\n\n return (\n <InputContainer\n disabled={disabled}\n size={size}\n tabIndex={!disabled ? 0 : -1}\n onFocus={(e) => {\n // Focus the next element if the container element was focused.\n // The next element will be the input or button in the addon.\n if (disabled || e.target !== innerContainerRef.current) return;\n const focusableElements = getFocusableElements(\n innerContainerRef.current\n );\n focusableElements[0].focus();\n }}\n onKeyDown={(e) => {\n // Focus the previous element if the first element in the input\n // container is focused and the Shift + Tab combination is pressed.\n const focusableElements = getFocusableElements(document);\n const inputFocusableElements = innerContainerRef.current\n ? getFocusableElements(innerContainerRef.current)\n : [];\n const firstInputElementIsFocused =\n inputFocusableElements[0] === document.activeElement;\n if (firstInputElementIsFocused && e.key === 'Tab' && e.shiftKey) {\n const inputContainerIndex = focusableElements.findIndex(\n (el) => el === innerContainerRef.current\n );\n if (inputContainerIndex === 0) return;\n const elementBeforeInputContainer =\n focusableElements[inputContainerIndex - 1];\n elementBeforeInputContainer.focus();\n }\n }}\n ref={mergedContainerRef}\n {...containerProps}\n >\n {left && (\n <ThemeOverrider overrides={{ buttonPaddingHorizontal: 0.8 }}>\n <LeftAddon hasPadding={leftHasPadding}>{left}</LeftAddon>\n </ThemeOverrider>\n )}\n\n <StyledInput\n type={type}\n disabled={disabled}\n hasLeft={!!left}\n hasRight={!!right}\n value={value || ''}\n onChange={(e) => onChange(e.target.value, e)}\n {...rest}\n ref={ref}\n />\n\n {rightValue && (\n <ThemeOverrider overrides={{ buttonPaddingHorizontal: 0.8 }}>\n <RightAddon hasPadding={rightHasPaddingValue}>\n {rightValue}\n </RightAddon>\n </ThemeOverrider>\n )}\n </InputContainer>\n );\n }\n);\n\nInput.displayName = 'Input';\n\nexport default Input;\n"],"file":"index.js"}
|
package/dist/cjs/List/index.js
CHANGED
|
@@ -35,8 +35,9 @@ var _useRWLoadNext = _interopRequireDefault(require("./utils/useRWLoadNext"));
|
|
|
35
35
|
|
|
36
36
|
var _LayoutContext = _interopRequireDefault(require("../Layout/LayoutContext"));
|
|
37
37
|
|
|
38
|
-
var _excluded = ["style"],
|
|
39
|
-
_excluded2 = ["style"]
|
|
38
|
+
var _excluded = ["itemCount", "itemHeight", "threshold", "overscanCount", "height", "paddingTop", "paddingBottom", "style", "empty", "onLoadNext", "itemRenderer"],
|
|
39
|
+
_excluded2 = ["style"],
|
|
40
|
+
_excluded3 = ["style"];
|
|
40
41
|
|
|
41
42
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
42
43
|
|
|
@@ -52,10 +53,6 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
52
53
|
|
|
53
54
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
54
55
|
|
|
55
|
-
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
56
|
-
|
|
57
|
-
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
58
|
-
|
|
59
56
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
60
57
|
|
|
61
58
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -68,13 +65,16 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
|
68
65
|
|
|
69
66
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
70
67
|
|
|
68
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
69
|
+
|
|
70
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
71
|
+
|
|
71
72
|
/**
|
|
72
73
|
* Virtualized list.
|
|
73
74
|
* Used the react-window library.
|
|
74
75
|
*/
|
|
75
76
|
var List = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
76
77
|
var itemCount = _ref.itemCount,
|
|
77
|
-
itemData = _ref.itemData,
|
|
78
78
|
_ref$itemHeight = _ref.itemHeight,
|
|
79
79
|
itemHeight = _ref$itemHeight === void 0 ? 4 : _ref$itemHeight,
|
|
80
80
|
_ref$threshold = _ref.threshold,
|
|
@@ -86,14 +86,16 @@ var List = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
86
86
|
paddingTop = _ref$paddingTop === void 0 ? 0 : _ref$paddingTop,
|
|
87
87
|
_ref$paddingBottom = _ref.paddingBottom,
|
|
88
88
|
paddingBottom = _ref$paddingBottom === void 0 ? 0 : _ref$paddingBottom,
|
|
89
|
+
_ref$style = _ref.style,
|
|
90
|
+
style = _ref$style === void 0 ? {} : _ref$style,
|
|
91
|
+
empty = _ref.empty,
|
|
89
92
|
_ref$onLoadNext = _ref.onLoadNext,
|
|
90
93
|
onLoadNext = _ref$onLoadNext === void 0 ? function () {} : _ref$onLoadNext,
|
|
91
94
|
_ref$itemRenderer = _ref.itemRenderer,
|
|
92
95
|
itemRenderer = _ref$itemRenderer === void 0 ? function () {
|
|
93
96
|
return null;
|
|
94
97
|
} : _ref$itemRenderer,
|
|
95
|
-
|
|
96
|
-
innerRef = _ref.innerRef;
|
|
98
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
97
99
|
|
|
98
100
|
var _useForwardedRef = (0, _utils.useForwardedRef)(ref),
|
|
99
101
|
_useForwardedRef2 = _slicedToArray(_useForwardedRef, 2),
|
|
@@ -140,47 +142,49 @@ var List = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
140
142
|
}, [listRef, loadNextHandler]); // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
141
143
|
|
|
142
144
|
var InnerElement = /*#__PURE__*/(0, _react.forwardRef)(function (_ref3, innerElementRef) {
|
|
143
|
-
var
|
|
144
|
-
|
|
145
|
+
var innerStyle = _ref3.style,
|
|
146
|
+
innerRest = _objectWithoutProperties(_ref3, _excluded2);
|
|
145
147
|
|
|
146
148
|
return /*#__PURE__*/_react["default"].createElement("div", _extends({
|
|
147
149
|
ref: innerElementRef,
|
|
148
|
-
style: _objectSpread(_objectSpread({},
|
|
149
|
-
height: "".concat(parseFloat(
|
|
150
|
+
style: _objectSpread(_objectSpread({}, innerStyle), {}, {
|
|
151
|
+
height: "".concat(parseFloat(innerStyle.height) + paddingTopSize + paddingBottomSize, "px")
|
|
150
152
|
})
|
|
151
|
-
},
|
|
153
|
+
}, innerRest));
|
|
152
154
|
});
|
|
153
155
|
InnerElement.displayName = 'InnerElement';
|
|
156
|
+
var listChildren = (0, _react.useCallback)(function (_ref4) {
|
|
157
|
+
var childrenStyle = _ref4.style,
|
|
158
|
+
childrenRest = _objectWithoutProperties(_ref4, _excluded3);
|
|
159
|
+
|
|
160
|
+
return itemRenderer(_objectSpread({
|
|
161
|
+
style: _objectSpread(_objectSpread({}, childrenStyle), {}, {
|
|
162
|
+
top: "".concat(parseFloat(childrenStyle.top ? childrenStyle.top.toString() : '0') + paddingTopSize, "px")
|
|
163
|
+
})
|
|
164
|
+
}, childrenRest));
|
|
165
|
+
}, [itemRenderer, paddingTopSize]); // eslint-disable-next-line react/jsx-no-useless-fragment
|
|
166
|
+
|
|
167
|
+
var EmptyComponent = (0, _react.useCallback)(function () {
|
|
168
|
+
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, empty);
|
|
169
|
+
}, [empty]);
|
|
154
170
|
var renderList = (0, _react.useCallback)(function () {
|
|
155
|
-
return /*#__PURE__*/_react["default"].createElement(_reactWindow.FixedSizeList, {
|
|
171
|
+
return /*#__PURE__*/_react["default"].createElement(_reactWindow.FixedSizeList, _extends({
|
|
156
172
|
ref: mergedListRef,
|
|
173
|
+
itemCount: itemCount,
|
|
157
174
|
width: "100%",
|
|
158
175
|
height: height,
|
|
159
|
-
itemData: itemData,
|
|
160
176
|
itemSize: itemSize,
|
|
161
|
-
|
|
162
|
-
style: heightProp ? {} : {
|
|
177
|
+
style: heightProp ? style : _objectSpread(_objectSpread({}, style), {}, {
|
|
163
178
|
height: '100% important!'
|
|
164
|
-
},
|
|
179
|
+
}),
|
|
165
180
|
overscanCount: overscanCount,
|
|
166
|
-
onScroll: heightProp ? function (
|
|
167
|
-
var scrollOffset =
|
|
181
|
+
onScroll: heightProp ? function (_ref5) {
|
|
182
|
+
var scrollOffset = _ref5.scrollOffset;
|
|
168
183
|
return loadNextHandler(scrollOffset);
|
|
169
184
|
} : undefined,
|
|
170
|
-
innerElementType: InnerElement
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
}, function (_ref5) {
|
|
174
|
-
var style = _ref5.style,
|
|
175
|
-
rest = _objectWithoutProperties(_ref5, _excluded2);
|
|
176
|
-
|
|
177
|
-
return itemRenderer(_objectSpread({
|
|
178
|
-
style: _objectSpread(_objectSpread({}, style), {}, {
|
|
179
|
-
top: "".concat(parseFloat(style.top ? style.top.toString() : '0') + paddingTopSize, "px")
|
|
180
|
-
})
|
|
181
|
-
}, rest));
|
|
182
|
-
});
|
|
183
|
-
}, [InnerElement, height, heightProp, innerRef, itemCount, itemData, itemRenderer, itemSize, loadNextHandler, mergedListRef, outerRef, overscanCount, paddingTopSize]);
|
|
185
|
+
innerElementType: itemCount > 0 ? InnerElement : EmptyComponent
|
|
186
|
+
}, rest), listChildren);
|
|
187
|
+
}, [EmptyComponent, InnerElement, height, heightProp, itemCount, itemSize, listChildren, loadNextHandler, mergedListRef, overscanCount, rest, style]);
|
|
184
188
|
|
|
185
189
|
if (heightProp) {
|
|
186
190
|
return renderList();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/List/index.tsx"],"names":["List","ref","itemCount","itemData","itemHeight","threshold","overscanCount","heightProp","height","paddingTop","paddingBottom","onLoadNext","itemRenderer","outerRef","innerRef","listRef","mergedListRef","size","fontSize","document","body","LayoutContext","hasNavigation","hasPageHeader","theme","isMinMd","safeAreaInset","itemSize","paddingTopSize","pageHeaderHeight","paddingBottomSize","navigationTabHeight","bottom","loadNextHandler","windowScrollHandler","top","current","scrollTo","InnerElement","innerElementRef","style","rest","parseFloat","displayName","renderList","scrollOffset","undefined","toString"],"mappings":"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","sourcesContent":["import React, { forwardRef, useCallback, useContext, useMemo } from 'react';\nimport {\n FixedSizeList,\n FixedSizeListProps,\n ListChildComponentProps,\n} from 'react-window';\nimport {\n useForwardedRef,\n useSize,\n useFontSize,\n useSafeAreaInset,\n} from '@os-design/utils';\nimport { useTheme } from '@os-design/theming';\nimport { useIsMinWidth } from '@os-design/media';\nimport WindowScroller, { ScrollPosition } from './WindowScroller';\nimport useRWLoadNext from './utils/useRWLoadNext';\nimport LayoutContext from '../Layout/LayoutContext';\n\nexport interface ListProps {\n /**\n * Total count of items.\n */\n itemCount: number;\n /**\n * Array of items.\n */\n itemData?: any; // eslint-disable-line @typescript-eslint/no-explicit-any\n /**\n * The item height in em.\n * @default 4\n */\n itemHeight?: number;\n /**\n * A threshold N means that the onLoadNext function calls when a user scrolls all items except N.\n * @default 10\n */\n threshold?: number;\n /**\n * Defines how many items outside of the visible \"window\" to render at all times.\n * @default 10\n */\n overscanCount?: number;\n /**\n * The height of the list in px.\n * @default undefined\n */\n height?: number;\n /**\n * The top padding in em.\n * @default 0\n */\n paddingTop?: number;\n /**\n * The bottom padding in em.\n * @default 0\n */\n paddingBottom?: number;\n /**\n * The callback to load more items.\n * @default undefined\n */\n onLoadNext?: () => void;\n /**\n * The callback to render items.\n * @default () => null\n */\n itemRenderer?: React.FC<ListChildComponentProps>;\n /**\n * Ref to attach to the outer container element.\n * @default undefined\n */\n outerRef?: FixedSizeListProps['outerRef'];\n /**\n * Ref to attach to the inner container element.\n * @default undefined\n */\n innerRef?: FixedSizeListProps['innerRef'];\n}\n\n/**\n * Virtualized list.\n * Used the react-window library.\n */\nconst List = forwardRef<FixedSizeList, ListProps>(\n (\n {\n itemCount,\n itemData,\n itemHeight = 4,\n threshold = 10,\n overscanCount = 10,\n height: heightProp,\n paddingTop = 0,\n paddingBottom = 0,\n onLoadNext = () => {},\n itemRenderer = () => null,\n outerRef,\n innerRef,\n },\n ref\n ) => {\n const [listRef, mergedListRef] = useForwardedRef(ref);\n const size = useSize();\n const fontSize = useFontSize(document.body);\n const { hasNavigation, hasPageHeader } = useContext(LayoutContext);\n const { theme } = useTheme();\n const isMinMd = useIsMinWidth('md');\n const safeAreaInset = useSafeAreaInset();\n\n const itemSize = useMemo(\n () => itemHeight * fontSize,\n [itemHeight, fontSize]\n );\n\n const paddingTopSize = useMemo(\n () =>\n ((hasPageHeader ? theme.pageHeaderHeight[isMinMd ? 1 : 0] : 0) +\n paddingTop) *\n fontSize,\n [hasPageHeader, theme.pageHeaderHeight, isMinMd, paddingTop, fontSize]\n );\n\n const paddingBottomSize = useMemo(\n () =>\n ((hasNavigation && !isMinMd ? theme.navigationTabHeight : 0) +\n paddingBottom) *\n fontSize +\n safeAreaInset.bottom,\n [\n hasNavigation,\n theme.navigationTabHeight,\n isMinMd,\n paddingBottom,\n fontSize,\n safeAreaInset.bottom,\n ]\n );\n\n const height = useMemo(\n () => heightProp || size.height,\n [heightProp, size.height]\n );\n\n const loadNextHandler = useRWLoadNext({\n itemCount,\n threshold,\n itemSize,\n paddingTop: paddingTopSize,\n height,\n onLoadNext,\n });\n\n const windowScrollHandler = useCallback(\n ({ top }: ScrollPosition) => {\n // Set the scroll position to the list\n if (listRef.current) listRef.current.scrollTo(top);\n loadNextHandler(top);\n },\n [listRef, loadNextHandler]\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const InnerElement = forwardRef<HTMLDivElement, any>(\n ({ style, ...rest }, innerElementRef) => (\n <div\n ref={innerElementRef}\n style={{\n ...style,\n height: `${\n parseFloat(style.height) + paddingTopSize + paddingBottomSize\n }px`,\n }}\n {...rest}\n />\n )\n );\n InnerElement.displayName = 'InnerElement';\n\n const renderList = useCallback(\n () => (\n <FixedSizeList\n ref={mergedListRef}\n width='100%'\n height={height}\n itemData={itemData}\n itemSize={itemSize}\n itemCount={itemCount}\n style={heightProp ? {} : { height: '100% important!' }}\n overscanCount={overscanCount}\n onScroll={\n heightProp\n ? ({ scrollOffset }) => loadNextHandler(scrollOffset)\n : undefined\n }\n innerElementType={InnerElement}\n outerRef={outerRef}\n innerRef={innerRef}\n >\n {({ style, ...rest }) =>\n itemRenderer({\n style: {\n ...style,\n top: `${\n parseFloat(style.top ? style.top.toString() : '0') +\n paddingTopSize\n }px`,\n },\n ...rest,\n })\n }\n </FixedSizeList>\n ),\n [\n InnerElement,\n height,\n heightProp,\n innerRef,\n itemCount,\n itemData,\n itemRenderer,\n itemSize,\n loadNextHandler,\n mergedListRef,\n outerRef,\n overscanCount,\n paddingTopSize,\n ]\n );\n\n if (heightProp) {\n return renderList();\n }\n\n return (\n <WindowScroller onScroll={windowScrollHandler}>\n {renderList()}\n </WindowScroller>\n );\n }\n);\n\nList.displayName = 'List';\n\nexport { default as WindowScroller } from './WindowScroller';\nexport { default as useRWLoadNext } from './utils/useRWLoadNext';\n\nexport default List;\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/List/index.tsx"],"names":["List","ref","itemCount","itemHeight","threshold","overscanCount","heightProp","height","paddingTop","paddingBottom","style","empty","onLoadNext","itemRenderer","rest","listRef","mergedListRef","size","fontSize","document","body","LayoutContext","hasNavigation","hasPageHeader","theme","isMinMd","safeAreaInset","itemSize","paddingTopSize","pageHeaderHeight","paddingBottomSize","navigationTabHeight","bottom","loadNextHandler","windowScrollHandler","top","current","scrollTo","InnerElement","innerElementRef","innerStyle","innerRest","parseFloat","displayName","listChildren","childrenStyle","childrenRest","toString","EmptyComponent","renderList","scrollOffset","undefined"],"mappings":"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","sourcesContent":["import React, {\n CSSProperties,\n forwardRef,\n useCallback,\n useContext,\n useMemo,\n} from 'react';\nimport {\n FixedSizeList,\n ListChildComponentProps,\n ListProps as RWListProps,\n} from 'react-window';\nimport {\n useFontSize,\n useForwardedRef,\n useSafeAreaInset,\n useSize,\n} from '@os-design/utils';\nimport { useTheme } from '@os-design/theming';\nimport { useIsMinWidth } from '@os-design/media';\nimport WindowScroller, { ScrollPosition } from './WindowScroller';\nimport useRWLoadNext from './utils/useRWLoadNext';\nimport LayoutContext from '../Layout/LayoutContext';\n\nexport interface ListProps extends Partial<RWListProps> {\n /**\n * Total number of items in the list.\n */\n itemCount: number;\n /**\n * The item height in em.\n * @default 4\n */\n itemHeight?: number;\n /**\n * A threshold N means that the onLoadNext function calls when a user scrolls all items except N.\n * @default 10\n */\n threshold?: number;\n /**\n * Defines how many items outside of the visible \"window\" to render at all times.\n * @default 10\n */\n overscanCount?: number;\n /**\n * The height of the list in px.\n * @default undefined\n */\n height?: number;\n /**\n * The top padding in em.\n * @default 0\n */\n paddingTop?: number;\n /**\n * The bottom padding in em.\n * @default 0\n */\n paddingBottom?: number;\n /**\n * The inline css style.\n * @default undefined\n */\n style?: CSSProperties;\n /**\n * The component that renders if the list is empty.\n * @default undefined\n */\n empty?: React.ReactNode;\n /**\n * The callback to load more items.\n * @default undefined\n */\n onLoadNext?: () => void;\n /**\n * The callback to render items.\n * @default () => null\n */\n itemRenderer?: React.FC<ListChildComponentProps>;\n}\n\n/**\n * Virtualized list.\n * Used the react-window library.\n */\nconst List = forwardRef<FixedSizeList, ListProps>(\n (\n {\n itemCount,\n itemHeight = 4,\n threshold = 10,\n overscanCount = 10,\n height: heightProp,\n paddingTop = 0,\n paddingBottom = 0,\n style = {},\n empty,\n onLoadNext = () => {},\n itemRenderer = () => null,\n ...rest\n },\n ref\n ) => {\n const [listRef, mergedListRef] = useForwardedRef(ref);\n const size = useSize();\n const fontSize = useFontSize(document.body);\n const { hasNavigation, hasPageHeader } = useContext(LayoutContext);\n const { theme } = useTheme();\n const isMinMd = useIsMinWidth('md');\n const safeAreaInset = useSafeAreaInset();\n\n const itemSize = useMemo(\n () => itemHeight * fontSize,\n [itemHeight, fontSize]\n );\n\n const paddingTopSize = useMemo(\n () =>\n ((hasPageHeader ? theme.pageHeaderHeight[isMinMd ? 1 : 0] : 0) +\n paddingTop) *\n fontSize,\n [hasPageHeader, theme.pageHeaderHeight, isMinMd, paddingTop, fontSize]\n );\n\n const paddingBottomSize = useMemo(\n () =>\n ((hasNavigation && !isMinMd ? theme.navigationTabHeight : 0) +\n paddingBottom) *\n fontSize +\n safeAreaInset.bottom,\n [\n hasNavigation,\n theme.navigationTabHeight,\n isMinMd,\n paddingBottom,\n fontSize,\n safeAreaInset.bottom,\n ]\n );\n\n const height = useMemo(\n () => heightProp || size.height,\n [heightProp, size.height]\n );\n\n const loadNextHandler = useRWLoadNext({\n itemCount,\n threshold,\n itemSize,\n paddingTop: paddingTopSize,\n height,\n onLoadNext,\n });\n\n const windowScrollHandler = useCallback(\n ({ top }: ScrollPosition) => {\n // Set the scroll position to the list\n if (listRef.current) listRef.current.scrollTo(top);\n loadNextHandler(top);\n },\n [listRef, loadNextHandler]\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const InnerElement = forwardRef<HTMLDivElement, any>(\n ({ style: innerStyle, ...innerRest }, innerElementRef) => (\n <div\n ref={innerElementRef}\n style={{\n ...innerStyle,\n height: `${\n parseFloat(innerStyle.height) + paddingTopSize + paddingBottomSize\n }px`,\n }}\n {...innerRest}\n />\n )\n );\n InnerElement.displayName = 'InnerElement';\n\n const listChildren = useCallback<RWListProps['children']>(\n ({ style: childrenStyle, ...childrenRest }) =>\n itemRenderer({\n style: {\n ...childrenStyle,\n top: `${\n parseFloat(\n childrenStyle.top ? childrenStyle.top.toString() : '0'\n ) + paddingTopSize\n }px`,\n },\n ...childrenRest,\n }),\n [itemRenderer, paddingTopSize]\n );\n\n // eslint-disable-next-line react/jsx-no-useless-fragment\n const EmptyComponent = useCallback(() => <>{empty}</>, [empty]);\n\n const renderList = useCallback(\n () => (\n <FixedSizeList\n ref={mergedListRef}\n itemCount={itemCount}\n width='100%'\n height={height}\n itemSize={itemSize}\n style={heightProp ? style : { ...style, height: '100% important!' }}\n overscanCount={overscanCount}\n onScroll={\n heightProp\n ? ({ scrollOffset }) => loadNextHandler(scrollOffset)\n : undefined\n }\n innerElementType={itemCount > 0 ? InnerElement : EmptyComponent}\n {...rest}\n >\n {listChildren}\n </FixedSizeList>\n ),\n [\n EmptyComponent,\n InnerElement,\n height,\n heightProp,\n itemCount,\n itemSize,\n listChildren,\n loadNextHandler,\n mergedListRef,\n overscanCount,\n rest,\n style,\n ]\n );\n\n if (heightProp) {\n return renderList();\n }\n\n return (\n <WindowScroller onScroll={windowScrollHandler}>\n {renderList()}\n </WindowScroller>\n );\n }\n);\n\nList.displayName = 'List';\n\nexport { default as WindowScroller } from './WindowScroller';\nexport { default as useRWLoadNext } from './utils/useRWLoadNext';\n\nexport default List;\n"],"file":"index.js"}
|
package/dist/esm/Input/index.js
CHANGED
|
@@ -122,6 +122,7 @@ const Input = /*#__PURE__*/forwardRef(({
|
|
|
122
122
|
containerRef,
|
|
123
123
|
containerProps = {},
|
|
124
124
|
size,
|
|
125
|
+
value,
|
|
125
126
|
onChange = () => {},
|
|
126
127
|
...rest
|
|
127
128
|
}, ref) => {
|
|
@@ -165,6 +166,7 @@ const Input = /*#__PURE__*/forwardRef(({
|
|
|
165
166
|
disabled: disabled,
|
|
166
167
|
hasLeft: !!left,
|
|
167
168
|
hasRight: !!right,
|
|
169
|
+
value: value || '',
|
|
168
170
|
onChange: e => onChange(e.target.value, e)
|
|
169
171
|
}, rest, {
|
|
170
172
|
ref: ref
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/Input/index.tsx"],"names":["React","forwardRef","useMemo","resetFocusStyles","sizeStyles","transitionStyles","omitEmotionProps","useForwardedRef","styled","clr","ThemeOverrider","css","Loading","getFocusableElements","hoverStyles","p","disabled","theme","inputHoverColorBorder","focusStyles","inputFocusColorBorder","inputFocusColorShadow","disabledStyles","inputDisabledColorText","inputDisabledColorBg","inputDisabledColorBorder","inputDisabledColorPlaceholder","InputContainer","baseHeight","inputColorBg","inputBorderWidth","inputColorBorder","borderRadius","notHasLeftStyles","hasLeft","inputPaddingHorizontal","notHasRightStyles","hasRight","StyledInput","inputColorText","inputColorPlaceholder","Addon","LeftAddon","inputAddonPaddingHorizontal","hasPadding","RightAddon","Input","type","left","leftHasPadding","right","rightHasPadding","loading","containerRef","containerProps","size","onChange","rest","ref","innerContainerRef","mergedContainerRef","rightValue","rightHasPaddingValue","e","target","current","focusableElements","focus","document","inputFocusableElements","firstInputElementIsFocused","activeElement","key","shiftKey","inputContainerIndex","findIndex","el","elementBeforeInputContainer","buttonPaddingHorizontal","value","displayName"],"mappings":"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","sourcesContent":["import React, { ChangeEvent, ForwardedRef, forwardRef, useMemo } from 'react';\nimport {\n resetFocusStyles,\n sizeStyles,\n transitionStyles,\n WithSize,\n} from '@os-design/styles';\nimport { omitEmotionProps, useForwardedRef } from '@os-design/utils';\nimport styled from '@emotion/styled';\nimport { clr, ThemeOverrider } from '@os-design/theming';\nimport { css } from '@emotion/react';\nimport { Loading } from '@os-design/icons';\nimport getFocusableElements from './utils/getFocusableElements';\n\ntype JsxInputProps = Omit<\n JSX.IntrinsicElements['input'],\n 'value' | 'onChange' | 'size' | 'ref'\n>;\nexport interface InputProps extends JsxInputProps, WithSize {\n /**\n * Type of the input.\n * @default text\n */\n type?: JsxInputProps['type'];\n /**\n * The component located on the left side.\n * @default undefined\n */\n left?: React.ReactNode;\n /**\n * Adds padding to the left component.\n * It can be useful when passing an icon or text in the left component.\n * @default false\n */\n leftHasPadding?: boolean;\n /**\n * The component located on the right side.\n * @default undefined\n */\n right?: React.ReactNode;\n /**\n * Adds padding to the right component.\n * It can be useful when passing an icon or text in the right component.\n * @default false\n */\n rightHasPadding?: boolean;\n /**\n * Whether the input is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Shows the loading status.\n * @default false\n */\n loading?: boolean;\n /**\n * The ref of the input container.\n * @default undefined\n */\n containerRef?: ForwardedRef<HTMLDivElement>;\n /**\n * The props of the input container.\n * @default undefined\n */\n containerProps?: JSX.IntrinsicElements['div'];\n /**\n * The input value.\n * @default undefined\n */\n value?: string;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: string, e: ChangeEvent<HTMLInputElement>) => void;\n}\n\nconst hoverStyles = (p) =>\n !p.disabled &&\n css`\n @media (hover: hover) {\n &:hover {\n border-color: ${clr(p.theme.inputHoverColorBorder)};\n }\n }\n `;\n\nconst focusStyles = (p) =>\n !p.disabled &&\n css`\n &:focus-within {\n border-color: ${clr(p.theme.inputFocusColorBorder)};\n box-shadow: 0 0 0 0.15em ${clr(p.theme.inputFocusColorShadow)};\n }\n `;\n\nconst disabledStyles = (p) =>\n p.disabled &&\n css`\n cursor: not-allowed;\n color: ${clr(p.theme.inputDisabledColorText)};\n background-color: ${clr(p.theme.inputDisabledColorBg)};\n border-color: ${clr(p.theme.inputDisabledColorBorder)};\n\n input,\n textarea {\n cursor: not-allowed;\n &::placeholder {\n color: ${clr(p.theme.inputDisabledColorPlaceholder)};\n }\n }\n `;\n\ntype InputContainerProps = Pick<InputProps, 'disabled' | 'size'>;\nexport const InputContainer = styled(\n 'div',\n omitEmotionProps('disabled', 'size')\n)<InputContainerProps>`\n ${resetFocusStyles};\n\n display: inline-flex;\n width: 100%;\n height: ${(p) => p.theme.baseHeight}em;\n box-sizing: border-box;\n background-color: ${(p) => clr(p.theme.inputColorBg)};\n\n border: ${(p) => p.theme.inputBorderWidth}px solid\n ${(p) => clr(p.theme.inputColorBorder)};\n border-radius: ${(p) => p.theme.borderRadius}em;\n\n ${hoverStyles};\n ${focusStyles};\n ${disabledStyles};\n ${sizeStyles};\n ${transitionStyles('border-color', 'box-shadow')};\n`;\n\nconst notHasLeftStyles = (p) =>\n !p.hasLeft &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `;\n\nconst notHasRightStyles = (p) =>\n !p.hasRight &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `;\n\ninterface StyledInputProps {\n hasLeft?: boolean;\n hasRight?: boolean;\n}\nexport const StyledInput = styled(\n 'input',\n omitEmotionProps('hasLeft', 'hasRight')\n)<StyledInputProps>`\n ${resetFocusStyles};\n appearance: none;\n border: none;\n font-size: 1em;\n flex: 1;\n overflow: hidden;\n\n color: ${(p) => clr(p.theme.inputColorText)};\n background-color: transparent;\n\n &::placeholder {\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n }\n\n ${notHasLeftStyles};\n ${notHasRightStyles};\n`;\n\ninterface AddonProps {\n hasPadding: boolean;\n}\nconst Addon = styled('span', omitEmotionProps('hasPadding'))<AddonProps>`\n display: flex;\n align-items: center;\n user-select: none;\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n\n svg {\n transform: scale(1.2);\n }\n`;\n\nconst LeftAddon = styled(Addon)`\n padding-right: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\nconst RightAddon = styled(Addon)`\n padding-left: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\n/**\n * The basic input component.\n */\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n type = 'text',\n left,\n leftHasPadding = false,\n right,\n rightHasPadding = false,\n disabled = false,\n loading = false,\n containerRef,\n containerProps = {},\n size,\n onChange = () => {},\n ...rest\n },\n ref\n ) => {\n const [innerContainerRef, mergedContainerRef] =\n useForwardedRef(containerRef);\n\n const rightValue = useMemo(\n () => (loading ? <Loading /> : right),\n [loading, right]\n );\n\n const rightHasPaddingValue = useMemo(\n () => (loading ? true : rightHasPadding),\n [loading, rightHasPadding]\n );\n\n return (\n <InputContainer\n disabled={disabled}\n size={size}\n tabIndex={!disabled ? 0 : -1}\n onFocus={(e) => {\n // Focus the next element if the container element was focused.\n // The next element will be the input or button in the addon.\n if (disabled || e.target !== innerContainerRef.current) return;\n const focusableElements = getFocusableElements(\n innerContainerRef.current\n );\n focusableElements[0].focus();\n }}\n onKeyDown={(e) => {\n // Focus the previous element if the first element in the input\n // container is focused and the Shift + Tab combination is pressed.\n const focusableElements = getFocusableElements(document);\n const inputFocusableElements = innerContainerRef.current\n ? getFocusableElements(innerContainerRef.current)\n : [];\n const firstInputElementIsFocused =\n inputFocusableElements[0] === document.activeElement;\n if (firstInputElementIsFocused && e.key === 'Tab' && e.shiftKey) {\n const inputContainerIndex = focusableElements.findIndex(\n (el) => el === innerContainerRef.current\n );\n if (inputContainerIndex === 0) return;\n const elementBeforeInputContainer =\n focusableElements[inputContainerIndex - 1];\n elementBeforeInputContainer.focus();\n }\n }}\n ref={mergedContainerRef}\n {...containerProps}\n >\n {left && (\n <ThemeOverrider overrides={{ buttonPaddingHorizontal: 0.8 }}>\n <LeftAddon hasPadding={leftHasPadding}>{left}</LeftAddon>\n </ThemeOverrider>\n )}\n\n <StyledInput\n type={type}\n disabled={disabled}\n hasLeft={!!left}\n hasRight={!!right}\n onChange={(e) => onChange(e.target.value, e)}\n {...rest}\n ref={ref}\n />\n\n {rightValue && (\n <ThemeOverrider overrides={{ buttonPaddingHorizontal: 0.8 }}>\n <RightAddon hasPadding={rightHasPaddingValue}>\n {rightValue}\n </RightAddon>\n </ThemeOverrider>\n )}\n </InputContainer>\n );\n }\n);\n\nInput.displayName = 'Input';\n\nexport default Input;\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/Input/index.tsx"],"names":["React","forwardRef","useMemo","resetFocusStyles","sizeStyles","transitionStyles","omitEmotionProps","useForwardedRef","styled","clr","ThemeOverrider","css","Loading","getFocusableElements","hoverStyles","p","disabled","theme","inputHoverColorBorder","focusStyles","inputFocusColorBorder","inputFocusColorShadow","disabledStyles","inputDisabledColorText","inputDisabledColorBg","inputDisabledColorBorder","inputDisabledColorPlaceholder","InputContainer","baseHeight","inputColorBg","inputBorderWidth","inputColorBorder","borderRadius","notHasLeftStyles","hasLeft","inputPaddingHorizontal","notHasRightStyles","hasRight","StyledInput","inputColorText","inputColorPlaceholder","Addon","LeftAddon","inputAddonPaddingHorizontal","hasPadding","RightAddon","Input","type","left","leftHasPadding","right","rightHasPadding","loading","containerRef","containerProps","size","value","onChange","rest","ref","innerContainerRef","mergedContainerRef","rightValue","rightHasPaddingValue","e","target","current","focusableElements","focus","document","inputFocusableElements","firstInputElementIsFocused","activeElement","key","shiftKey","inputContainerIndex","findIndex","el","elementBeforeInputContainer","buttonPaddingHorizontal","displayName"],"mappings":"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","sourcesContent":["import React, { ChangeEvent, ForwardedRef, forwardRef, useMemo } from 'react';\nimport {\n resetFocusStyles,\n sizeStyles,\n transitionStyles,\n WithSize,\n} from '@os-design/styles';\nimport { omitEmotionProps, useForwardedRef } from '@os-design/utils';\nimport styled from '@emotion/styled';\nimport { clr, ThemeOverrider } from '@os-design/theming';\nimport { css } from '@emotion/react';\nimport { Loading } from '@os-design/icons';\nimport getFocusableElements from './utils/getFocusableElements';\n\ntype JsxInputProps = Omit<\n JSX.IntrinsicElements['input'],\n 'value' | 'onChange' | 'size' | 'ref'\n>;\nexport interface InputProps extends JsxInputProps, WithSize {\n /**\n * Type of the input.\n * @default text\n */\n type?: JsxInputProps['type'];\n /**\n * The component located on the left side.\n * @default undefined\n */\n left?: React.ReactNode;\n /**\n * Adds padding to the left component.\n * It can be useful when passing an icon or text in the left component.\n * @default false\n */\n leftHasPadding?: boolean;\n /**\n * The component located on the right side.\n * @default undefined\n */\n right?: React.ReactNode;\n /**\n * Adds padding to the right component.\n * It can be useful when passing an icon or text in the right component.\n * @default false\n */\n rightHasPadding?: boolean;\n /**\n * Whether the input is disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Shows the loading status.\n * @default false\n */\n loading?: boolean;\n /**\n * The ref of the input container.\n * @default undefined\n */\n containerRef?: ForwardedRef<HTMLDivElement>;\n /**\n * The props of the input container.\n * @default undefined\n */\n containerProps?: JSX.IntrinsicElements['div'];\n /**\n * The input value.\n * @default undefined\n */\n value?: string;\n /**\n * The change event handler.\n * @default undefined\n */\n onChange?: (value: string, e: ChangeEvent<HTMLInputElement>) => void;\n}\n\nconst hoverStyles = (p) =>\n !p.disabled &&\n css`\n @media (hover: hover) {\n &:hover {\n border-color: ${clr(p.theme.inputHoverColorBorder)};\n }\n }\n `;\n\nconst focusStyles = (p) =>\n !p.disabled &&\n css`\n &:focus-within {\n border-color: ${clr(p.theme.inputFocusColorBorder)};\n box-shadow: 0 0 0 0.15em ${clr(p.theme.inputFocusColorShadow)};\n }\n `;\n\nconst disabledStyles = (p) =>\n p.disabled &&\n css`\n cursor: not-allowed;\n color: ${clr(p.theme.inputDisabledColorText)};\n background-color: ${clr(p.theme.inputDisabledColorBg)};\n border-color: ${clr(p.theme.inputDisabledColorBorder)};\n\n input,\n textarea {\n cursor: not-allowed;\n &::placeholder {\n color: ${clr(p.theme.inputDisabledColorPlaceholder)};\n }\n }\n `;\n\ntype InputContainerProps = Pick<InputProps, 'disabled' | 'size'>;\nexport const InputContainer = styled(\n 'div',\n omitEmotionProps('disabled', 'size')\n)<InputContainerProps>`\n ${resetFocusStyles};\n\n display: inline-flex;\n width: 100%;\n height: ${(p) => p.theme.baseHeight}em;\n box-sizing: border-box;\n background-color: ${(p) => clr(p.theme.inputColorBg)};\n\n border: ${(p) => p.theme.inputBorderWidth}px solid\n ${(p) => clr(p.theme.inputColorBorder)};\n border-radius: ${(p) => p.theme.borderRadius}em;\n\n ${hoverStyles};\n ${focusStyles};\n ${disabledStyles};\n ${sizeStyles};\n ${transitionStyles('border-color', 'box-shadow')};\n`;\n\nconst notHasLeftStyles = (p) =>\n !p.hasLeft &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `;\n\nconst notHasRightStyles = (p) =>\n !p.hasRight &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `;\n\ninterface StyledInputProps {\n hasLeft?: boolean;\n hasRight?: boolean;\n}\nexport const StyledInput = styled(\n 'input',\n omitEmotionProps('hasLeft', 'hasRight')\n)<StyledInputProps>`\n ${resetFocusStyles};\n appearance: none;\n border: none;\n font-size: 1em;\n flex: 1;\n overflow: hidden;\n\n color: ${(p) => clr(p.theme.inputColorText)};\n background-color: transparent;\n\n &::placeholder {\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n }\n\n ${notHasLeftStyles};\n ${notHasRightStyles};\n`;\n\ninterface AddonProps {\n hasPadding: boolean;\n}\nconst Addon = styled('span', omitEmotionProps('hasPadding'))<AddonProps>`\n display: flex;\n align-items: center;\n user-select: none;\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n\n svg {\n transform: scale(1.2);\n }\n`;\n\nconst LeftAddon = styled(Addon)`\n padding-right: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-left: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\nconst RightAddon = styled(Addon)`\n padding-left: ${(p) => p.theme.inputAddonPaddingHorizontal}em;\n ${(p) =>\n p.hasPadding &&\n css`\n padding-right: ${p.theme.inputPaddingHorizontal}em;\n `}\n`;\n\n/**\n * The basic input component.\n */\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n type = 'text',\n left,\n leftHasPadding = false,\n right,\n rightHasPadding = false,\n disabled = false,\n loading = false,\n containerRef,\n containerProps = {},\n size,\n value,\n onChange = () => {},\n ...rest\n },\n ref\n ) => {\n const [innerContainerRef, mergedContainerRef] =\n useForwardedRef(containerRef);\n\n const rightValue = useMemo(\n () => (loading ? <Loading /> : right),\n [loading, right]\n );\n\n const rightHasPaddingValue = useMemo(\n () => (loading ? true : rightHasPadding),\n [loading, rightHasPadding]\n );\n\n return (\n <InputContainer\n disabled={disabled}\n size={size}\n tabIndex={!disabled ? 0 : -1}\n onFocus={(e) => {\n // Focus the next element if the container element was focused.\n // The next element will be the input or button in the addon.\n if (disabled || e.target !== innerContainerRef.current) return;\n const focusableElements = getFocusableElements(\n innerContainerRef.current\n );\n focusableElements[0].focus();\n }}\n onKeyDown={(e) => {\n // Focus the previous element if the first element in the input\n // container is focused and the Shift + Tab combination is pressed.\n const focusableElements = getFocusableElements(document);\n const inputFocusableElements = innerContainerRef.current\n ? getFocusableElements(innerContainerRef.current)\n : [];\n const firstInputElementIsFocused =\n inputFocusableElements[0] === document.activeElement;\n if (firstInputElementIsFocused && e.key === 'Tab' && e.shiftKey) {\n const inputContainerIndex = focusableElements.findIndex(\n (el) => el === innerContainerRef.current\n );\n if (inputContainerIndex === 0) return;\n const elementBeforeInputContainer =\n focusableElements[inputContainerIndex - 1];\n elementBeforeInputContainer.focus();\n }\n }}\n ref={mergedContainerRef}\n {...containerProps}\n >\n {left && (\n <ThemeOverrider overrides={{ buttonPaddingHorizontal: 0.8 }}>\n <LeftAddon hasPadding={leftHasPadding}>{left}</LeftAddon>\n </ThemeOverrider>\n )}\n\n <StyledInput\n type={type}\n disabled={disabled}\n hasLeft={!!left}\n hasRight={!!right}\n value={value || ''}\n onChange={(e) => onChange(e.target.value, e)}\n {...rest}\n ref={ref}\n />\n\n {rightValue && (\n <ThemeOverrider overrides={{ buttonPaddingHorizontal: 0.8 }}>\n <RightAddon hasPadding={rightHasPaddingValue}>\n {rightValue}\n </RightAddon>\n </ThemeOverrider>\n )}\n </InputContainer>\n );\n }\n);\n\nInput.displayName = 'Input';\n\nexport default Input;\n"],"file":"index.js"}
|
package/dist/esm/List/index.js
CHANGED
|
@@ -2,7 +2,7 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
|
|
|
2
2
|
|
|
3
3
|
import React, { forwardRef, useCallback, useContext, useMemo } from 'react';
|
|
4
4
|
import { FixedSizeList } from 'react-window';
|
|
5
|
-
import {
|
|
5
|
+
import { useFontSize, useForwardedRef, useSafeAreaInset, useSize } from '@os-design/utils';
|
|
6
6
|
import { useTheme } from '@os-design/theming';
|
|
7
7
|
import { useIsMinWidth } from '@os-design/media';
|
|
8
8
|
import WindowScroller from './WindowScroller';
|
|
@@ -15,17 +15,17 @@ import LayoutContext from '../Layout/LayoutContext';
|
|
|
15
15
|
*/
|
|
16
16
|
const List = /*#__PURE__*/forwardRef(({
|
|
17
17
|
itemCount,
|
|
18
|
-
itemData,
|
|
19
18
|
itemHeight = 4,
|
|
20
19
|
threshold = 10,
|
|
21
20
|
overscanCount = 10,
|
|
22
21
|
height: heightProp,
|
|
23
22
|
paddingTop = 0,
|
|
24
23
|
paddingBottom = 0,
|
|
24
|
+
style = {},
|
|
25
|
+
empty,
|
|
25
26
|
onLoadNext = () => {},
|
|
26
27
|
itemRenderer = () => null,
|
|
27
|
-
|
|
28
|
-
innerRef
|
|
28
|
+
...rest
|
|
29
29
|
}, ref) => {
|
|
30
30
|
const [listRef, mergedListRef] = useForwardedRef(ref);
|
|
31
31
|
const size = useSize();
|
|
@@ -60,41 +60,41 @@ const List = /*#__PURE__*/forwardRef(({
|
|
|
60
60
|
}, [listRef, loadNextHandler]); // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
61
61
|
|
|
62
62
|
const InnerElement = /*#__PURE__*/forwardRef(({
|
|
63
|
-
style,
|
|
64
|
-
...
|
|
63
|
+
style: innerStyle,
|
|
64
|
+
...innerRest
|
|
65
65
|
}, innerElementRef) => /*#__PURE__*/React.createElement("div", _extends({
|
|
66
66
|
ref: innerElementRef,
|
|
67
|
-
style: { ...
|
|
68
|
-
height: `${parseFloat(
|
|
67
|
+
style: { ...innerStyle,
|
|
68
|
+
height: `${parseFloat(innerStyle.height) + paddingTopSize + paddingBottomSize}px`
|
|
69
69
|
}
|
|
70
|
-
},
|
|
70
|
+
}, innerRest)));
|
|
71
71
|
InnerElement.displayName = 'InnerElement';
|
|
72
|
-
const
|
|
72
|
+
const listChildren = useCallback(({
|
|
73
|
+
style: childrenStyle,
|
|
74
|
+
...childrenRest
|
|
75
|
+
}) => itemRenderer({
|
|
76
|
+
style: { ...childrenStyle,
|
|
77
|
+
top: `${parseFloat(childrenStyle.top ? childrenStyle.top.toString() : '0') + paddingTopSize}px`
|
|
78
|
+
},
|
|
79
|
+
...childrenRest
|
|
80
|
+
}), [itemRenderer, paddingTopSize]); // eslint-disable-next-line react/jsx-no-useless-fragment
|
|
81
|
+
|
|
82
|
+
const EmptyComponent = useCallback(() => /*#__PURE__*/React.createElement(React.Fragment, null, empty), [empty]);
|
|
83
|
+
const renderList = useCallback(() => /*#__PURE__*/React.createElement(FixedSizeList, _extends({
|
|
73
84
|
ref: mergedListRef,
|
|
85
|
+
itemCount: itemCount,
|
|
74
86
|
width: "100%",
|
|
75
87
|
height: height,
|
|
76
|
-
itemData: itemData,
|
|
77
88
|
itemSize: itemSize,
|
|
78
|
-
|
|
79
|
-
style: heightProp ? {} : {
|
|
89
|
+
style: heightProp ? style : { ...style,
|
|
80
90
|
height: '100% important!'
|
|
81
91
|
},
|
|
82
92
|
overscanCount: overscanCount,
|
|
83
93
|
onScroll: heightProp ? ({
|
|
84
94
|
scrollOffset
|
|
85
95
|
}) => loadNextHandler(scrollOffset) : undefined,
|
|
86
|
-
innerElementType: InnerElement
|
|
87
|
-
|
|
88
|
-
innerRef: innerRef
|
|
89
|
-
}, ({
|
|
90
|
-
style,
|
|
91
|
-
...rest
|
|
92
|
-
}) => itemRenderer({
|
|
93
|
-
style: { ...style,
|
|
94
|
-
top: `${parseFloat(style.top ? style.top.toString() : '0') + paddingTopSize}px`
|
|
95
|
-
},
|
|
96
|
-
...rest
|
|
97
|
-
})), [InnerElement, height, heightProp, innerRef, itemCount, itemData, itemRenderer, itemSize, loadNextHandler, mergedListRef, outerRef, overscanCount, paddingTopSize]);
|
|
96
|
+
innerElementType: itemCount > 0 ? InnerElement : EmptyComponent
|
|
97
|
+
}, rest), listChildren), [EmptyComponent, InnerElement, height, heightProp, itemCount, itemSize, listChildren, loadNextHandler, mergedListRef, overscanCount, rest, style]);
|
|
98
98
|
|
|
99
99
|
if (heightProp) {
|
|
100
100
|
return renderList();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/List/index.tsx"],"names":["React","forwardRef","useCallback","useContext","useMemo","FixedSizeList","useForwardedRef","useSize","useFontSize","useSafeAreaInset","useTheme","useIsMinWidth","WindowScroller","useRWLoadNext","LayoutContext","List","itemCount","itemData","itemHeight","threshold","overscanCount","height","heightProp","paddingTop","paddingBottom","onLoadNext","itemRenderer","outerRef","innerRef","ref","listRef","mergedListRef","size","fontSize","document","body","hasNavigation","hasPageHeader","theme","isMinMd","safeAreaInset","itemSize","paddingTopSize","pageHeaderHeight","paddingBottomSize","navigationTabHeight","bottom","loadNextHandler","windowScrollHandler","top","current","scrollTo","InnerElement","style","rest","innerElementRef","parseFloat","displayName","renderList","scrollOffset","undefined","toString","default"],"mappings":"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","sourcesContent":["import React, { forwardRef, useCallback, useContext, useMemo } from 'react';\nimport {\n FixedSizeList,\n FixedSizeListProps,\n ListChildComponentProps,\n} from 'react-window';\nimport {\n useForwardedRef,\n useSize,\n useFontSize,\n useSafeAreaInset,\n} from '@os-design/utils';\nimport { useTheme } from '@os-design/theming';\nimport { useIsMinWidth } from '@os-design/media';\nimport WindowScroller, { ScrollPosition } from './WindowScroller';\nimport useRWLoadNext from './utils/useRWLoadNext';\nimport LayoutContext from '../Layout/LayoutContext';\n\nexport interface ListProps {\n /**\n * Total count of items.\n */\n itemCount: number;\n /**\n * Array of items.\n */\n itemData?: any; // eslint-disable-line @typescript-eslint/no-explicit-any\n /**\n * The item height in em.\n * @default 4\n */\n itemHeight?: number;\n /**\n * A threshold N means that the onLoadNext function calls when a user scrolls all items except N.\n * @default 10\n */\n threshold?: number;\n /**\n * Defines how many items outside of the visible \"window\" to render at all times.\n * @default 10\n */\n overscanCount?: number;\n /**\n * The height of the list in px.\n * @default undefined\n */\n height?: number;\n /**\n * The top padding in em.\n * @default 0\n */\n paddingTop?: number;\n /**\n * The bottom padding in em.\n * @default 0\n */\n paddingBottom?: number;\n /**\n * The callback to load more items.\n * @default undefined\n */\n onLoadNext?: () => void;\n /**\n * The callback to render items.\n * @default () => null\n */\n itemRenderer?: React.FC<ListChildComponentProps>;\n /**\n * Ref to attach to the outer container element.\n * @default undefined\n */\n outerRef?: FixedSizeListProps['outerRef'];\n /**\n * Ref to attach to the inner container element.\n * @default undefined\n */\n innerRef?: FixedSizeListProps['innerRef'];\n}\n\n/**\n * Virtualized list.\n * Used the react-window library.\n */\nconst List = forwardRef<FixedSizeList, ListProps>(\n (\n {\n itemCount,\n itemData,\n itemHeight = 4,\n threshold = 10,\n overscanCount = 10,\n height: heightProp,\n paddingTop = 0,\n paddingBottom = 0,\n onLoadNext = () => {},\n itemRenderer = () => null,\n outerRef,\n innerRef,\n },\n ref\n ) => {\n const [listRef, mergedListRef] = useForwardedRef(ref);\n const size = useSize();\n const fontSize = useFontSize(document.body);\n const { hasNavigation, hasPageHeader } = useContext(LayoutContext);\n const { theme } = useTheme();\n const isMinMd = useIsMinWidth('md');\n const safeAreaInset = useSafeAreaInset();\n\n const itemSize = useMemo(\n () => itemHeight * fontSize,\n [itemHeight, fontSize]\n );\n\n const paddingTopSize = useMemo(\n () =>\n ((hasPageHeader ? theme.pageHeaderHeight[isMinMd ? 1 : 0] : 0) +\n paddingTop) *\n fontSize,\n [hasPageHeader, theme.pageHeaderHeight, isMinMd, paddingTop, fontSize]\n );\n\n const paddingBottomSize = useMemo(\n () =>\n ((hasNavigation && !isMinMd ? theme.navigationTabHeight : 0) +\n paddingBottom) *\n fontSize +\n safeAreaInset.bottom,\n [\n hasNavigation,\n theme.navigationTabHeight,\n isMinMd,\n paddingBottom,\n fontSize,\n safeAreaInset.bottom,\n ]\n );\n\n const height = useMemo(\n () => heightProp || size.height,\n [heightProp, size.height]\n );\n\n const loadNextHandler = useRWLoadNext({\n itemCount,\n threshold,\n itemSize,\n paddingTop: paddingTopSize,\n height,\n onLoadNext,\n });\n\n const windowScrollHandler = useCallback(\n ({ top }: ScrollPosition) => {\n // Set the scroll position to the list\n if (listRef.current) listRef.current.scrollTo(top);\n loadNextHandler(top);\n },\n [listRef, loadNextHandler]\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const InnerElement = forwardRef<HTMLDivElement, any>(\n ({ style, ...rest }, innerElementRef) => (\n <div\n ref={innerElementRef}\n style={{\n ...style,\n height: `${\n parseFloat(style.height) + paddingTopSize + paddingBottomSize\n }px`,\n }}\n {...rest}\n />\n )\n );\n InnerElement.displayName = 'InnerElement';\n\n const renderList = useCallback(\n () => (\n <FixedSizeList\n ref={mergedListRef}\n width='100%'\n height={height}\n itemData={itemData}\n itemSize={itemSize}\n itemCount={itemCount}\n style={heightProp ? {} : { height: '100% important!' }}\n overscanCount={overscanCount}\n onScroll={\n heightProp\n ? ({ scrollOffset }) => loadNextHandler(scrollOffset)\n : undefined\n }\n innerElementType={InnerElement}\n outerRef={outerRef}\n innerRef={innerRef}\n >\n {({ style, ...rest }) =>\n itemRenderer({\n style: {\n ...style,\n top: `${\n parseFloat(style.top ? style.top.toString() : '0') +\n paddingTopSize\n }px`,\n },\n ...rest,\n })\n }\n </FixedSizeList>\n ),\n [\n InnerElement,\n height,\n heightProp,\n innerRef,\n itemCount,\n itemData,\n itemRenderer,\n itemSize,\n loadNextHandler,\n mergedListRef,\n outerRef,\n overscanCount,\n paddingTopSize,\n ]\n );\n\n if (heightProp) {\n return renderList();\n }\n\n return (\n <WindowScroller onScroll={windowScrollHandler}>\n {renderList()}\n </WindowScroller>\n );\n }\n);\n\nList.displayName = 'List';\n\nexport { default as WindowScroller } from './WindowScroller';\nexport { default as useRWLoadNext } from './utils/useRWLoadNext';\n\nexport default List;\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/List/index.tsx"],"names":["React","forwardRef","useCallback","useContext","useMemo","FixedSizeList","useFontSize","useForwardedRef","useSafeAreaInset","useSize","useTheme","useIsMinWidth","WindowScroller","useRWLoadNext","LayoutContext","List","itemCount","itemHeight","threshold","overscanCount","height","heightProp","paddingTop","paddingBottom","style","empty","onLoadNext","itemRenderer","rest","ref","listRef","mergedListRef","size","fontSize","document","body","hasNavigation","hasPageHeader","theme","isMinMd","safeAreaInset","itemSize","paddingTopSize","pageHeaderHeight","paddingBottomSize","navigationTabHeight","bottom","loadNextHandler","windowScrollHandler","top","current","scrollTo","InnerElement","innerStyle","innerRest","innerElementRef","parseFloat","displayName","listChildren","childrenStyle","childrenRest","toString","EmptyComponent","renderList","scrollOffset","undefined","default"],"mappings":"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","sourcesContent":["import React, {\n CSSProperties,\n forwardRef,\n useCallback,\n useContext,\n useMemo,\n} from 'react';\nimport {\n FixedSizeList,\n ListChildComponentProps,\n ListProps as RWListProps,\n} from 'react-window';\nimport {\n useFontSize,\n useForwardedRef,\n useSafeAreaInset,\n useSize,\n} from '@os-design/utils';\nimport { useTheme } from '@os-design/theming';\nimport { useIsMinWidth } from '@os-design/media';\nimport WindowScroller, { ScrollPosition } from './WindowScroller';\nimport useRWLoadNext from './utils/useRWLoadNext';\nimport LayoutContext from '../Layout/LayoutContext';\n\nexport interface ListProps extends Partial<RWListProps> {\n /**\n * Total number of items in the list.\n */\n itemCount: number;\n /**\n * The item height in em.\n * @default 4\n */\n itemHeight?: number;\n /**\n * A threshold N means that the onLoadNext function calls when a user scrolls all items except N.\n * @default 10\n */\n threshold?: number;\n /**\n * Defines how many items outside of the visible \"window\" to render at all times.\n * @default 10\n */\n overscanCount?: number;\n /**\n * The height of the list in px.\n * @default undefined\n */\n height?: number;\n /**\n * The top padding in em.\n * @default 0\n */\n paddingTop?: number;\n /**\n * The bottom padding in em.\n * @default 0\n */\n paddingBottom?: number;\n /**\n * The inline css style.\n * @default undefined\n */\n style?: CSSProperties;\n /**\n * The component that renders if the list is empty.\n * @default undefined\n */\n empty?: React.ReactNode;\n /**\n * The callback to load more items.\n * @default undefined\n */\n onLoadNext?: () => void;\n /**\n * The callback to render items.\n * @default () => null\n */\n itemRenderer?: React.FC<ListChildComponentProps>;\n}\n\n/**\n * Virtualized list.\n * Used the react-window library.\n */\nconst List = forwardRef<FixedSizeList, ListProps>(\n (\n {\n itemCount,\n itemHeight = 4,\n threshold = 10,\n overscanCount = 10,\n height: heightProp,\n paddingTop = 0,\n paddingBottom = 0,\n style = {},\n empty,\n onLoadNext = () => {},\n itemRenderer = () => null,\n ...rest\n },\n ref\n ) => {\n const [listRef, mergedListRef] = useForwardedRef(ref);\n const size = useSize();\n const fontSize = useFontSize(document.body);\n const { hasNavigation, hasPageHeader } = useContext(LayoutContext);\n const { theme } = useTheme();\n const isMinMd = useIsMinWidth('md');\n const safeAreaInset = useSafeAreaInset();\n\n const itemSize = useMemo(\n () => itemHeight * fontSize,\n [itemHeight, fontSize]\n );\n\n const paddingTopSize = useMemo(\n () =>\n ((hasPageHeader ? theme.pageHeaderHeight[isMinMd ? 1 : 0] : 0) +\n paddingTop) *\n fontSize,\n [hasPageHeader, theme.pageHeaderHeight, isMinMd, paddingTop, fontSize]\n );\n\n const paddingBottomSize = useMemo(\n () =>\n ((hasNavigation && !isMinMd ? theme.navigationTabHeight : 0) +\n paddingBottom) *\n fontSize +\n safeAreaInset.bottom,\n [\n hasNavigation,\n theme.navigationTabHeight,\n isMinMd,\n paddingBottom,\n fontSize,\n safeAreaInset.bottom,\n ]\n );\n\n const height = useMemo(\n () => heightProp || size.height,\n [heightProp, size.height]\n );\n\n const loadNextHandler = useRWLoadNext({\n itemCount,\n threshold,\n itemSize,\n paddingTop: paddingTopSize,\n height,\n onLoadNext,\n });\n\n const windowScrollHandler = useCallback(\n ({ top }: ScrollPosition) => {\n // Set the scroll position to the list\n if (listRef.current) listRef.current.scrollTo(top);\n loadNextHandler(top);\n },\n [listRef, loadNextHandler]\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const InnerElement = forwardRef<HTMLDivElement, any>(\n ({ style: innerStyle, ...innerRest }, innerElementRef) => (\n <div\n ref={innerElementRef}\n style={{\n ...innerStyle,\n height: `${\n parseFloat(innerStyle.height) + paddingTopSize + paddingBottomSize\n }px`,\n }}\n {...innerRest}\n />\n )\n );\n InnerElement.displayName = 'InnerElement';\n\n const listChildren = useCallback<RWListProps['children']>(\n ({ style: childrenStyle, ...childrenRest }) =>\n itemRenderer({\n style: {\n ...childrenStyle,\n top: `${\n parseFloat(\n childrenStyle.top ? childrenStyle.top.toString() : '0'\n ) + paddingTopSize\n }px`,\n },\n ...childrenRest,\n }),\n [itemRenderer, paddingTopSize]\n );\n\n // eslint-disable-next-line react/jsx-no-useless-fragment\n const EmptyComponent = useCallback(() => <>{empty}</>, [empty]);\n\n const renderList = useCallback(\n () => (\n <FixedSizeList\n ref={mergedListRef}\n itemCount={itemCount}\n width='100%'\n height={height}\n itemSize={itemSize}\n style={heightProp ? style : { ...style, height: '100% important!' }}\n overscanCount={overscanCount}\n onScroll={\n heightProp\n ? ({ scrollOffset }) => loadNextHandler(scrollOffset)\n : undefined\n }\n innerElementType={itemCount > 0 ? InnerElement : EmptyComponent}\n {...rest}\n >\n {listChildren}\n </FixedSizeList>\n ),\n [\n EmptyComponent,\n InnerElement,\n height,\n heightProp,\n itemCount,\n itemSize,\n listChildren,\n loadNextHandler,\n mergedListRef,\n overscanCount,\n rest,\n style,\n ]\n );\n\n if (heightProp) {\n return renderList();\n }\n\n return (\n <WindowScroller onScroll={windowScrollHandler}>\n {renderList()}\n </WindowScroller>\n );\n }\n);\n\nList.displayName = 'List';\n\nexport { default as WindowScroller } from './WindowScroller';\nexport { default as useRWLoadNext } from './utils/useRWLoadNext';\n\nexport default List;\n"],"file":"index.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Input/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,YAAY,EAAuB,MAAM,OAAO,CAAC;AAC9E,OAAO,EAIL,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAQ3B,aAAK,aAAa,GAAG,IAAI,CACvB,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAC9B,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,CACtC,CAAC;AACF,MAAM,WAAW,UAAW,SAAQ,aAAa,EAAE,QAAQ;IAKzD,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAK7B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAMvB,cAAc,CAAC,EAAE,OAAO,CAAC;IAKzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAMxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAK1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAKnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAKlB,YAAY,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;IAK5C,cAAc,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAK9C,KAAK,CAAC,EAAE,MAAM,CAAC;IAKf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;CACtE;AAuCD,eAAO,MAAM,cAAc;;;6HAqB1B,CAAC;AAcF,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AACD,eAAO,MAAM,WAAW;;;iHAoBvB,CAAC;AAqCF,QAAA,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Input/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,YAAY,EAAuB,MAAM,OAAO,CAAC;AAC9E,OAAO,EAIL,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAQ3B,aAAK,aAAa,GAAG,IAAI,CACvB,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAC9B,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,CACtC,CAAC;AACF,MAAM,WAAW,UAAW,SAAQ,aAAa,EAAE,QAAQ;IAKzD,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAK7B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAMvB,cAAc,CAAC,EAAE,OAAO,CAAC;IAKzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAMxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAK1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAKnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAKlB,YAAY,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;IAK5C,cAAc,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAK9C,KAAK,CAAC,EAAE,MAAM,CAAC;IAKf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;CACtE;AAuCD,eAAO,MAAM,cAAc;;;6HAqB1B,CAAC;AAcF,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AACD,eAAO,MAAM,WAAW;;;iHAoBvB,CAAC;AAqCF,QAAA,MAAM,KAAK,qFA+FV,CAAC;AAIF,eAAe,KAAK,CAAC"}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { FixedSizeList,
|
|
3
|
-
export interface ListProps {
|
|
1
|
+
import React, { CSSProperties } from 'react';
|
|
2
|
+
import { FixedSizeList, ListChildComponentProps, ListProps as RWListProps } from 'react-window';
|
|
3
|
+
export interface ListProps extends Partial<RWListProps> {
|
|
4
4
|
itemCount: number;
|
|
5
|
-
itemData?: any;
|
|
6
5
|
itemHeight?: number;
|
|
7
6
|
threshold?: number;
|
|
8
7
|
overscanCount?: number;
|
|
9
8
|
height?: number;
|
|
10
9
|
paddingTop?: number;
|
|
11
10
|
paddingBottom?: number;
|
|
11
|
+
style?: CSSProperties;
|
|
12
|
+
empty?: React.ReactNode;
|
|
12
13
|
onLoadNext?: () => void;
|
|
13
14
|
itemRenderer?: React.FC<ListChildComponentProps>;
|
|
14
|
-
outerRef?: FixedSizeListProps['outerRef'];
|
|
15
|
-
innerRef?: FixedSizeListProps['innerRef'];
|
|
16
15
|
}
|
|
17
16
|
declare const List: React.ForwardRefExoticComponent<ListProps & React.RefAttributes<FixedSizeList<any>>>;
|
|
18
17
|
export { default as WindowScroller } from './WindowScroller';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/List/index.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/List/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,aAAa,EAKd,MAAM,OAAO,CAAC;AACf,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,SAAS,IAAI,WAAW,EACzB,MAAM,cAAc,CAAC;AAatB,MAAM,WAAW,SAAU,SAAQ,OAAO,CAAC,WAAW,CAAC;IAIrD,SAAS,EAAE,MAAM,CAAC;IAKlB,UAAU,CAAC,EAAE,MAAM,CAAC;IAKpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAKnB,aAAa,CAAC,EAAE,MAAM,CAAC;IAKvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAKhB,UAAU,CAAC,EAAE,MAAM,CAAC;IAKpB,aAAa,CAAC,EAAE,MAAM,CAAC;IAKvB,KAAK,CAAC,EAAE,aAAa,CAAC;IAKtB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAKxB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IAKxB,YAAY,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC;CAClD;AAMD,QAAA,MAAM,IAAI,sFAiKT,CAAC;AAIF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEjE,eAAe,IAAI,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@os-design/core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.134",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"repository": "git@gitlab.com:os-team/libs/os-design.git",
|
|
6
6
|
"main": "dist/cjs/index.js",
|
|
@@ -56,5 +56,5 @@
|
|
|
56
56
|
"react": ">=18",
|
|
57
57
|
"react-dom": ">=18"
|
|
58
58
|
},
|
|
59
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "86fab12ecc2f5800240eccbc6d1064b39cd59124"
|
|
60
60
|
}
|