@xanui/ui 1.1.26 → 1.1.28
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/Alert/index.js +2 -2
- package/Alert/index.mjs +2 -2
- package/Autocomplete/index.d.ts +40 -0
- package/Autocomplete/index.js +136 -0
- package/Autocomplete/index.js.map +1 -0
- package/Autocomplete/index.mjs +134 -0
- package/Autocomplete/index.mjs.map +1 -0
- package/Avatar/index.d.ts +5 -0
- package/Avatar/index.js +7 -2
- package/Avatar/index.js.map +1 -1
- package/Avatar/index.mjs +7 -2
- package/Avatar/index.mjs.map +1 -1
- package/Button/index.d.ts +3 -0
- package/Button/index.js +13 -9
- package/Button/index.js.map +1 -1
- package/Button/index.mjs +12 -8
- package/Button/index.mjs.map +1 -1
- package/Calendar/index.js +35 -20
- package/Calendar/index.js.map +1 -1
- package/Calendar/index.mjs +27 -12
- package/Calendar/index.mjs.map +1 -1
- package/CalendarInput/index.js +6 -2
- package/CalendarInput/index.js.map +1 -1
- package/CalendarInput/index.mjs +6 -2
- package/CalendarInput/index.mjs.map +1 -1
- package/DataFilter/index.d.ts +7 -0
- package/DataFilter/index.js +78 -0
- package/DataFilter/index.js.map +1 -0
- package/DataFilter/index.mjs +67 -0
- package/DataFilter/index.mjs.map +1 -0
- package/DataFilter/options/DateFilter.d.ts +11 -0
- package/DataFilter/options/DateFilter.js +32 -0
- package/DataFilter/options/DateFilter.js.map +1 -0
- package/DataFilter/options/DateFilter.mjs +30 -0
- package/DataFilter/options/DateFilter.mjs.map +1 -0
- package/DataFilter/options/DateRangeFilter.d.ts +11 -0
- package/DataFilter/options/DateRangeFilter.js +27 -0
- package/DataFilter/options/DateRangeFilter.js.map +1 -0
- package/DataFilter/options/DateRangeFilter.mjs +25 -0
- package/DataFilter/options/DateRangeFilter.mjs.map +1 -0
- package/DataFilter/options/MultiSelectFilter.d.ts +11 -0
- package/DataFilter/options/MultiSelectFilter.js +38 -0
- package/DataFilter/options/MultiSelectFilter.js.map +1 -0
- package/DataFilter/options/MultiSelectFilter.mjs +36 -0
- package/DataFilter/options/MultiSelectFilter.mjs.map +1 -0
- package/DataFilter/options/NumberFilter.d.ts +11 -0
- package/DataFilter/options/NumberFilter.js +24 -0
- package/DataFilter/options/NumberFilter.js.map +1 -0
- package/DataFilter/options/NumberFilter.mjs +22 -0
- package/DataFilter/options/NumberFilter.mjs.map +1 -0
- package/DataFilter/options/NumberRangeFilter.d.ts +11 -0
- package/DataFilter/options/NumberRangeFilter.js +29 -0
- package/DataFilter/options/NumberRangeFilter.js.map +1 -0
- package/DataFilter/options/NumberRangeFilter.mjs +27 -0
- package/DataFilter/options/NumberRangeFilter.mjs.map +1 -0
- package/DataFilter/options/SelectFilter.d.ts +11 -0
- package/DataFilter/options/SelectFilter.js +34 -0
- package/DataFilter/options/SelectFilter.js.map +1 -0
- package/DataFilter/options/SelectFilter.mjs +32 -0
- package/DataFilter/options/SelectFilter.mjs.map +1 -0
- package/DataFilter/options/TextFilter.d.ts +11 -0
- package/DataFilter/options/TextFilter.js +24 -0
- package/DataFilter/options/TextFilter.js.map +1 -0
- package/DataFilter/options/TextFilter.mjs +22 -0
- package/DataFilter/options/TextFilter.mjs.map +1 -0
- package/DataFilter/types.d.ts +58 -0
- package/Datatable/FilterBox.js +21 -13
- package/Datatable/FilterBox.js.map +1 -1
- package/Datatable/FilterBox.mjs +20 -12
- package/Datatable/FilterBox.mjs.map +1 -1
- package/Datatable/Row.js +15 -14
- package/Datatable/Row.js.map +1 -1
- package/Datatable/Row.mjs +16 -15
- package/Datatable/Row.mjs.map +1 -1
- package/Datatable/Table.js +3 -3
- package/Datatable/Table.js.map +1 -1
- package/Datatable/Table.mjs +3 -3
- package/Datatable/Table.mjs.map +1 -1
- package/Datatable/TableHead.js +5 -4
- package/Datatable/TableHead.js.map +1 -1
- package/Datatable/TableHead.mjs +5 -4
- package/Datatable/TableHead.mjs.map +1 -1
- package/Datatable/index.d.ts +1 -1
- package/Datatable/index.js +51 -11
- package/Datatable/index.js.map +1 -1
- package/Datatable/index.mjs +50 -10
- package/Datatable/index.mjs.map +1 -1
- package/Datatable/types.d.ts +13 -9
- package/Drawer/index.js +3 -3
- package/Drawer/index.js.map +1 -1
- package/Drawer/index.mjs +3 -3
- package/Drawer/index.mjs.map +1 -1
- package/IconButton/index.js +1 -7
- package/IconButton/index.js.map +1 -1
- package/IconButton/index.mjs +1 -7
- package/IconButton/index.mjs.map +1 -1
- package/Input/index.d.ts +7 -7
- package/Input/index.js +35 -66
- package/Input/index.js.map +1 -1
- package/Input/index.mjs +35 -66
- package/Input/index.mjs.map +1 -1
- package/InputNumber/index.js +32 -0
- package/InputNumber/index.js.map +1 -0
- package/InputNumber/index.mjs +30 -0
- package/InputNumber/index.mjs.map +1 -0
- package/List/ListContext.js +11 -0
- package/List/ListContext.js.map +1 -0
- package/List/ListContext.mjs +8 -0
- package/List/ListContext.mjs.map +1 -0
- package/List/index.d.ts +2 -1
- package/List/index.js +23 -19
- package/List/index.js.map +1 -1
- package/List/index.mjs +23 -19
- package/List/index.mjs.map +1 -1
- package/ListItem/index.d.ts +1 -0
- package/ListItem/index.js +30 -13
- package/ListItem/index.js.map +1 -1
- package/ListItem/index.mjs +30 -13
- package/ListItem/index.mjs.map +1 -1
- package/Menu/index.js +2 -0
- package/Menu/index.js.map +1 -1
- package/Menu/index.mjs +2 -0
- package/Menu/index.mjs.map +1 -1
- package/Paper/index.js +2 -2
- package/Paper/index.js.map +1 -1
- package/Paper/index.mjs +2 -2
- package/Paper/index.mjs.map +1 -1
- package/Select/index.d.ts +2 -10
- package/Select/index.js +3 -3
- package/Select/index.js.map +1 -1
- package/Select/index.mjs +3 -3
- package/Select/index.mjs.map +1 -1
- package/Skeleton/index.d.ts +8 -0
- package/Skeleton/index.js +60 -0
- package/Skeleton/index.js.map +1 -0
- package/Skeleton/index.mjs +58 -0
- package/Skeleton/index.mjs.map +1 -0
- package/Table/index.js +3 -3
- package/Table/index.js.map +1 -1
- package/Table/index.mjs +3 -3
- package/Table/index.mjs.map +1 -1
- package/TablePagination/index.d.ts +2 -2
- package/TablePagination/index.js +2 -7
- package/TablePagination/index.js.map +1 -1
- package/TablePagination/index.mjs +2 -7
- package/TablePagination/index.mjs.map +1 -1
- package/index.d.ts +65 -55
- package/index.js +126 -108
- package/index.js.map +1 -1
- package/index.mjs +9 -0
- package/index.mjs.map +1 -1
- package/package.json +2 -7
package/Input/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../src/Input/index.tsx"],"sourcesContent":["\"use client\";\nimport React, { ReactElement, useEffect, useMemo, useState } from 'react';\nimport { Tag, TagProps, TagComponentType, UseColorTemplateColor, useBreakpointPropsType, useInterface, useBreakpointProps, useMergeRefs } from '@xanui/core';\n\nexport type InputProps<T extends TagComponentType = \"div\"> = Omit<TagProps<T>, \"size\" | \"color\"> & {\n value?: string;\n type?: TagProps<'input'>['type'];\n name?: string;\n placeholder?: string;\n readOnly?: boolean;\n autoFocus?: boolean;\n autoComplete?: string;\n\n\n onFocus?: (e: React.FocusEvent<any>) => void;\n onBlur?: (e: React.FocusEvent<any>) => void;\n onChange?: (e: React.ChangeEvent<any>) => void;\n onInput?: (e: React.FormEvent<any>) => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onKeyUp?: (e: React.KeyboardEvent<any>) => void;\n\n rows?: useBreakpointPropsType<number>;\n minRows?: useBreakpointPropsType<number>;\n maxRows?: useBreakpointPropsType<number>;\n fullWidth?: boolean;\n\n startIcon?: useBreakpointPropsType<ReactElement>;\n endIcon?: useBreakpointPropsType<ReactElement>;\n iconPlacement?: useBreakpointPropsType<\"start\" | \"center\" | \"end\">;\n focused?: boolean;\n color?: useBreakpointPropsType<Omit<UseColorTemplateColor, \"default\">>;\n variant?: useBreakpointPropsType<\"fill\" | \"outline\" | \"text\">;\n error?: boolean;\n helperText?: useBreakpointPropsType<string>;\n multiline?: boolean;\n size?: useBreakpointPropsType<\"small\" | \"medium\" | \"large\">;\n\n refs?: {\n rootContainer?: React.Ref<\"div\">;\n startIcon?: React.Ref<ReactElement>;\n endIcon?: React.Ref<ReactElement>;\n inputContainer?: React.Ref<\"div\">;\n input?: React.Ref<'input' | 'textarea'>;\n helperText?: React.Ref<\"div\">;\n };\n\n slotProps?: {\n rootContainer?: Omit<TagProps<\"div\">, \"children\">;\n startIcon?: Omit<TagProps<'div'>, \"children\">;\n endIcon?: Omit<TagProps<'div'>, \"children\">;\n inputContainer?: Omit<TagProps<\"div\">, \"children\">;\n helperText?: Omit<TagProps<\"div\">, \"children\">;\n input?: Partial<TagProps<T>>;\n }\n}\n\nconst Input = React.forwardRef(<T extends TagComponentType = \"div\">({ value, refs, ...props }: InputProps<T>, ref?: React.Ref<any>) => {\n let [{\n startIcon,\n endIcon,\n iconPlacement,\n color,\n\n name,\n placeholder,\n type,\n readOnly,\n autoFocus,\n autoComplete,\n onFocus,\n onBlur,\n onChange,\n onKeyDown,\n onKeyUp,\n\n focused,\n disabled,\n variant,\n error,\n helperText,\n multiline,\n size,\n rows,\n minRows,\n maxRows,\n fullWidth,\n slotProps,\n\n ...rest\n }, theme] = useInterface<any>(\"Input\", props, {})\n\n const _p: any = {}\n if (startIcon) _p.startIcon = startIcon\n if (endIcon) _p.endIcon = endIcon\n if (iconPlacement) _p.iconPlacement = iconPlacement\n if (color) _p.color = color\n if (variant) _p.variant = variant\n if (helperText) _p.helperText = helperText\n if (size) _p.size = size\n if (rows) _p.rows = rows\n if (minRows) _p.minRows = minRows\n if (maxRows) _p.maxRows = maxRows\n const p: any = useBreakpointProps(_p)\n startIcon = p.startIcon\n endIcon = p.endIcon\n iconPlacement = p.iconPlacement\n color = p.color ?? \"brand\"\n variant = p.variant ?? \"fill\"\n helperText = p.helperText\n size = p.size ?? 'medium'\n rows = p.rows\n minRows = p.minRows\n maxRows = p.maxRows\n\n iconPlacement ??= multiline ? \"end\" : \"center\"\n if (!value) iconPlacement = 'center'\n\n const [_focused, setFocused] = useState(false)\n let _focus = focused || _focused\n const inputRef = React.useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n const inputMergeRef = useMergeRefs(inputRef, refs?.input as any);\n\n useEffect(() => {\n if (autoFocus) {\n setTimeout(() => {\n inputRef.current?.focus()\n }, 100);\n }\n }, [autoFocus])\n\n let _rows = useMemo(() => {\n if (rows) return rows\n if (value && multiline) {\n let lines = (value as string).split(`\\n`).length\n if (minRows && minRows > lines) {\n return minRows\n } else if (maxRows && maxRows < lines) {\n return maxRows\n } else {\n return lines\n }\n }\n }, [value]) || 1\n\n const sizes: any = {\n small: {\n height: 40,\n gap: .5,\n fontSize: 'button',\n },\n medium: {\n height: 48,\n gap: 1,\n fontSize: \"text\"\n },\n large: {\n height: 52,\n gap: 1,\n fontSize: 'big'\n }\n }\n\n const _size = sizes[size]\n let borderColor = _focus ? color : (variant === \"fill\" ? \"transparent\" : \"divider\")\n borderColor = error ? \"danger.primary\" : borderColor\n let multiprops: any = {}\n if (multiline) {\n multiprops = {\n rows: _rows,\n sx: {\n resize: \"none\"\n }\n }\n }\n\n return (\n <Tag\n width={fullWidth ? \"100%\" : undefined}\n {...rest}\n ref={ref}\n baseClass={'input-root'}\n classNames={{\n 'input-full-width': fullWidth || false,\n 'input-focused': _focus,\n 'input-error': error || false,\n [`input-variant-${variant}`]: true,\n [`input-size-${size}`]: true,\n }}\n >\n <Tag\n {...slotProps?.rootContainer}\n ref={refs?.rootContainer}\n baseClass='root-container'\n sxr={{\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: iconPlacement === 'center' ? iconPlacement : `flex-${iconPlacement}`,\n flexWrap: \"nowrap\",\n transitionProperty: \"border, box-shadow, background\",\n bgcolor: error ? \"danger.soft.primary\" : variant === \"fill\" ? \"background.secondary\" : \"background.primary\",\n border: variant === \"text\" ? 0 : \"1px solid\",\n borderColor: borderColor,\n borderRadius: 1,\n px: 1,\n py: .5,\n }}\n disabled={disabled || false}\n {..._size}\n height={multiline ? \"auto\" : _size.height}\n minHeight={_size.height}\n >\n {startIcon && <Tag\n {...slotProps?.startIcon}\n ref={refs?.startIcon}\n flex={\"0 0 auto\"}\n sxr={{\n height: \"100%\",\n alignItems: 'center',\n justifyContent: \"center\",\n display: \"flex\",\n color: error ? \"danger.primary\" : \"text.secondary\",\n }}\n baseClass=\"input-start-icon\"\n >{startIcon}</Tag>}\n <Tag\n {...slotProps?.inputContainer}\n ref={refs?.inputContainer}\n baseClass='input-container'\n flex={1}\n sxr={{\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n flex: 1,\n minHeight: _size.height,\n \"& textarea\": {\n resize: \"none\"\n },\n \"& input:-webkit-autofill,& input:-webkit-autofill:hover, & input:-webkit-autofill:focus,& input:-webkit-autofill:active\": {\n \"-webkit-text-fill-color\": \"text.primary\",\n \"box-shadow\": `0 0 0px 1000px ${variant === \"fill\" ? theme.colors.background.secondary : theme.colors.background.primary} inset`,\n transition: \"background-color 5000s ease-in-out 0s\"\n } as any\n }}\n >\n <Tag\n {...slotProps?.input}\n ref={inputMergeRef}\n baseClass='input'\n component={multiline ? 'textarea' : 'input'}\n {...multiprops}\n sxr={{\n border: 0,\n outline: 0,\n bgcolor: \"transparent\",\n color: error ? \"danger.primary\" : \"text.primary\",\n fontSize: _size.fontSize,\n height: multiline ? \"auto\" : _size.height + \"px!important\",\n width: \"100%\",\n maxHeight: 200,\n }}\n value={value}\n onChange={onChange}\n onFocus={(e: any) => {\n focused ?? setFocused(true)\n onFocus && onFocus(e)\n }}\n onBlur={(e: any) => {\n focused ?? setFocused(false)\n onBlur && onBlur(e)\n }}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n name={name}\n placeholder={placeholder}\n type={type}\n readOnly={readOnly}\n autoComplete={autoComplete}\n />\n </Tag>\n {endIcon && <Tag\n {...slotProps?.endIcon}\n ref={refs?.endIcon}\n flex={\"0 0 auto\"}\n sxr={{\n height: \"100%\",\n alignItems: 'center',\n justifyContent: \"center\",\n display: 'flex',\n color: error ? \"danger.primary\" : \"text.secondary\",\n }}\n baseClass=\"input-end-icon\"\n >{endIcon}</Tag>}\n </Tag>\n {helperText && <Tag\n {...slotProps?.helperText}\n ref={refs?.helperText}\n baseClass=\"input-helper-text\"\n sxr={{\n color: error ? \"danger.primary\" : \"text.primary\",\n fontSize: \"small\",\n lineHeight: \"text\",\n fontWeight: 'text',\n pl: .5,\n }}\n >{helperText}</Tag>}\n </Tag>\n )\n})\n\nexport default Input\n"],"names":[],"mappings":";;;;;;AAwDA;;;AACI;;AAmCA;AAAe;AACf;AAAa;AACb;AAAmB;AACnB;AAAW;AACX;AAAa;AACb;AAAgB;AAChB;AAAU;AACV;AAAU;AACV;AAAa;AACb;AAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;AAGA;;AAEA;;;;;AAKY;;;AAGZ;AAEA;AACI;AAAU;AACV;;AAEI;AACI;;AACG;AACH;;;AAEA;;;AAGZ;AAEA;AACI;AACI;AACA;AACA;AACH;AACD;AACI;AACA;AACA;AACH;AACD;AACI;AACA;AACA;AACH;;AAGL;;;;;AAKI;AACI;AACA;AACI;AACH;;;;;AAYG;;AAEA;AACA;;AAQI;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAYI;AACA;AACA;AACA;;AAEH;AASG;AACA;AACA;AACA;;AAEA;AACI;AACH;AACD;AACI;;AAEA;AACI;AACX;AASO;AACA;AACA;;;AAGA;AACA;AACA;AACH;;AAKG;AACJ;;AAGI;;AAgBJ;AACA;AACA;AACA;;AAEH;;AAUD;AACA;AACA;AACA;AACH;AAIjB;;"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/Input/index.tsx"],"sourcesContent":["\"use client\";\nimport React, { ReactElement, useEffect, useMemo, useState } from 'react';\nimport { Tag, TagProps, TagComponentType, UseColorTemplateColor, useBreakpointPropsType, useInterface, useBreakpointProps, useMergeRefs } from '@xanui/core';\nimport Label, { LabelProps } from '../Label';\n\nexport type InputProps<T extends TagComponentType = \"div\"> = Omit<TagProps<T>, \"size\" | \"color\" | \"label\"> & {\n value?: string;\n type?: TagProps<'input'>['type'];\n name?: string;\n placeholder?: string;\n readOnly?: boolean;\n autoFocus?: boolean;\n autoComplete?: string;\n label?: useBreakpointPropsType<string>;\n\n onFocus?: (e: React.FocusEvent<any>) => void;\n onBlur?: (e: React.FocusEvent<any>) => void;\n onChange?: (e: React.ChangeEvent<any>) => void;\n onInput?: (e: React.FormEvent<any>) => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onKeyUp?: (e: React.KeyboardEvent<any>) => void;\n\n rows?: useBreakpointPropsType<number>;\n minRows?: useBreakpointPropsType<number>;\n maxRows?: useBreakpointPropsType<number>;\n fullWidth?: boolean;\n\n startIcon?: useBreakpointPropsType<ReactElement>;\n endIcon?: useBreakpointPropsType<ReactElement>;\n iconPlacement?: useBreakpointPropsType<\"start\" | \"center\" | \"end\">;\n focused?: boolean;\n color?: useBreakpointPropsType<Omit<UseColorTemplateColor, \"default\">>;\n variant?: useBreakpointPropsType<\"fill\" | \"outline\" | \"text\">;\n error?: boolean;\n helperText?: useBreakpointPropsType<string>;\n multiline?: boolean;\n size?: useBreakpointPropsType<\"small\" | \"medium\" | \"large\">;\n\n refs?: {\n inputRoot?: React.Ref<\"div\">;\n label?: React.Ref<\"label\">;\n rootContainer?: React.Ref<\"div\">;\n // startIcon?: React.Ref<ReactElement>;\n // endIcon?: React.Ref<ReactElement>;\n // inputContainer?: React.Ref<\"div\">;\n input?: React.Ref<'input' | 'textarea'>;\n helperText?: React.Ref<\"div\">;\n };\n\n slotProps?: {\n inputRoot?: Omit<TagProps<\"div\">, \"children\">;\n label?: Omit<LabelProps, \"children\">;\n rootContainer?: Omit<TagProps<\"div\">, \"children\">;\n // startIcon?: Omit<TagProps<'div'>, \"children\">;\n // endIcon?: Omit<TagProps<'div'>, \"children\">;\n // inputContainer?: Omit<TagProps<\"div\">, \"children\">;\n helperText?: Omit<TagProps<\"div\">, \"children\">;\n input?: Partial<TagProps<T>>;\n }\n}\n\nconst Input = React.forwardRef(<T extends TagComponentType = \"div\">({ value, refs, ...props }: InputProps<T>, ref?: React.Ref<any>) => {\n let [{\n startIcon,\n endIcon,\n iconPlacement,\n color,\n label,\n name,\n placeholder,\n type,\n readOnly,\n autoFocus,\n autoComplete,\n onFocus,\n onBlur,\n onChange,\n onKeyDown,\n onKeyUp,\n\n focused,\n disabled,\n variant,\n error,\n helperText,\n multiline,\n size,\n rows,\n minRows,\n maxRows,\n fullWidth,\n slotProps,\n\n ...rest\n }, theme] = useInterface<any>(\"Input\", props, {})\n\n const _p: any = {}\n if (startIcon) _p.startIcon = startIcon\n if (endIcon) _p.endIcon = endIcon\n if (iconPlacement) _p.iconPlacement = iconPlacement\n if (color) _p.color = color\n if (variant) _p.variant = variant\n if (helperText) _p.helperText = helperText\n if (size) _p.size = size\n if (rows) _p.rows = rows\n if (minRows) _p.minRows = minRows\n if (maxRows) _p.maxRows = maxRows\n const p: any = useBreakpointProps(_p)\n startIcon = p.startIcon\n endIcon = p.endIcon\n iconPlacement = p.iconPlacement\n color = p.color ?? \"brand\"\n variant = p.variant ?? \"fill\"\n helperText = p.helperText\n size = p.size ?? 'medium'\n rows = p.rows\n minRows = p.minRows\n maxRows = p.maxRows\n\n iconPlacement ??= multiline ? \"end\" : \"center\"\n if (!value) iconPlacement = 'center'\n\n const [_focused, setFocused] = useState(false)\n let _focus = focused || _focused\n const inputRef = React.useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n const inputMergeRef = useMergeRefs(inputRef, refs?.input as any);\n\n useEffect(() => {\n if (autoFocus) {\n setTimeout(() => {\n inputRef.current?.focus()\n }, 100);\n }\n }, [autoFocus])\n\n let _rows = useMemo(() => {\n if (rows) return rows\n if (value && multiline) {\n let lines = (value as string).split(`\\n`).length\n if (minRows && minRows > lines) {\n return minRows\n } else if (maxRows && maxRows < lines) {\n return maxRows\n } else {\n return lines\n }\n }\n }, [value]) || 1\n\n const sizes: any = {\n small: {\n height: 38,\n gap: .5,\n fontSize: 'button',\n },\n medium: {\n height: 46,\n gap: 1,\n fontSize: \"text\"\n },\n large: {\n height: 52,\n gap: 1,\n fontSize: 'big'\n }\n }\n\n const _size = sizes[size]\n let borderColor = _focus ? color : (variant === \"fill\" ? \"transparent\" : \"divider\")\n borderColor = error ? \"danger.primary\" : borderColor\n let multiprops: any = {}\n if (multiline) {\n multiprops = {\n rows: _rows,\n sx: {\n resize: \"none\"\n }\n }\n }\n\n return (\n <Tag\n width={fullWidth ? \"100%\" : \"auto\"}\n {...rest}\n ref={ref}\n baseClass=\"input-wrapper\"\n sxr={{\n display: 'flex',\n flexDirection: 'column',\n gap: .5,\n }}\n >\n {!!label && <Label {...slotProps?.label} ref={refs?.label}>{label}</Label>}\n <Tag\n {...slotProps?.inputRoot}\n ref={refs?.inputRoot}\n baseClass={'input-root'}\n sxr={{\n width: \"100%\",\n overflow: \"hidden\",\n }}\n >\n <Tag\n {...slotProps?.rootContainer}\n ref={refs?.rootContainer}\n baseClass='input-root-container'\n sxr={{\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: iconPlacement === 'center' ? iconPlacement : `flex-${iconPlacement}`,\n flexWrap: \"nowrap\",\n transitionProperty: \"border, box-shadow, background\",\n bgcolor: error ? \"danger.soft.primary\" : variant === \"fill\" ? \"background.secondary\" : \"background.primary\",\n border: variant === \"text\" ? 0 : \"1px solid\",\n borderColor: borderColor,\n borderRadius: 1,\n px: 1,\n // py: .5,\n ..._size,\n height: multiline ? \"auto\" : _size.height,\n minHeight: _size.height,\n \"& input:-webkit-autofill,& input:-webkit-autofill:hover, & input:-webkit-autofill:focus,& input:-webkit-autofill:active\": {\n \"-webkit-text-fill-color\": \"text.primary\",\n \"box-shadow\": `0 0 0px 1000px ${variant === \"fill\" ? theme.colors.background.secondary : theme.colors.background.primary} inset`,\n transition: \"background-color 5000s ease-in-out 0s\"\n } as any,\n \"& textarea\": {\n resize: \"none\"\n },\n\n // ...(!!startIcon && {\n // \"& :first-child\": {\n // height: \"100%\",\n // alignItems: 'center',\n // justifyContent: \"center\",\n // display: \"flex\",\n // color: error ? \"danger.primary\" : \"text.secondary\",\n // flex: \"0 0 auto\",\n // },\n // }),\n\n // ...(!!endIcon && {\n // \"& :last-child\": {\n // height: \"100%\",\n // alignItems: 'center',\n // justifyContent: \"center\",\n // display: 'flex',\n // color: error ? \"danger.primary\" : \"text.secondary\",\n // flex: \"0 0 auto\",\n // },\n // })\n\n }}\n disabled={disabled || false}\n >\n {/* {startIcon && <Tag\n {...slotProps?.startIcon}\n ref={refs?.startIcon}\n flex={\"0 0 auto\"}\n sxr={{\n height: \"100%\",\n alignItems: 'center',\n justifyContent: \"center\",\n display: \"flex\",\n color: error ? \"danger.primary\" : \"text.secondary\",\n }}\n baseClass=\"input-start-icon\"\n >{startIcon}</Tag>} */}\n {startIcon}\n {/* <Tag\n {...slotProps?.inputContainer}\n ref={refs?.inputContainer}\n baseClass='input-container'\n flex={1}\n sxr={{\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n flex: 1,\n minHeight: _size.height,\n \"& textarea\": {\n resize: \"none\"\n },\n \"& input:-webkit-autofill,& input:-webkit-autofill:hover, & input:-webkit-autofill:focus,& input:-webkit-autofill:active\": {\n \"-webkit-text-fill-color\": \"text.primary\",\n \"box-shadow\": `0 0 0px 1000px ${variant === \"fill\" ? theme.colors.background.secondary : theme.colors.background.primary} inset`,\n transition: \"background-color 5000s ease-in-out 0s\"\n } as any\n }}\n >\n \n </Tag> */}\n <Tag\n {...slotProps?.input}\n ref={inputMergeRef}\n baseClass='input'\n component={multiline ? 'textarea' : 'input'}\n {...multiprops}\n sxr={{\n border: 0,\n outline: 0,\n bgcolor: \"transparent\",\n color: error ? \"danger.primary\" : \"text.primary\",\n fontSize: _size.fontSize,\n height: multiline ? \"auto\" : _size.height + \"px!important\",\n width: \"100%\",\n maxHeight: 200,\n }}\n value={value}\n onChange={onChange}\n onFocus={(e: any) => {\n focused ?? setFocused(true)\n onFocus && onFocus(e)\n }}\n onBlur={(e: any) => {\n focused ?? setFocused(false)\n onBlur && onBlur(e)\n }}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n name={name}\n placeholder={placeholder}\n type={type}\n readOnly={readOnly}\n autoComplete={autoComplete}\n />\n {/* {endIcon && <Tag\n {...slotProps?.endIcon}\n ref={refs?.endIcon}\n flex={\"0 0 auto\"}\n sxr={{\n height: \"100%\",\n alignItems: 'center',\n justifyContent: \"center\",\n display: 'flex',\n color: error ? \"danger.primary\" : \"text.secondary\",\n }}\n baseClass=\"input-end-icon\"\n >{endIcon}</Tag>} */}\n {endIcon}\n </Tag>\n {helperText && <Tag\n {...slotProps?.helperText}\n ref={refs?.helperText}\n baseClass=\"input-helper-text\"\n sxr={{\n color: error ? \"danger.primary\" : \"text.primary\",\n fontSize: \"small\",\n lineHeight: \"text\",\n fontWeight: 'text',\n pl: .5,\n }}\n >{helperText}</Tag>}\n </Tag>\n </Tag>\n )\n})\n\nexport default Input\n"],"names":[],"mappings":";;;;;;;AA6DA;;;AACI;;AAmCA;AAAe;AACf;AAAa;AACb;AAAmB;AACnB;AAAW;AACX;AAAa;AACb;AAAgB;AAChB;AAAU;AACV;AAAU;AACV;AAAa;AACb;AAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;;;AAGA;;AAEA;;;;;AAKY;;;AAGZ;AAEA;AACI;AAAU;AACV;;AAEI;AACI;;AACG;AACH;;;AAEA;;;AAGZ;AAEA;AACI;AACI;AACA;AACA;AACH;AACD;AACI;AACA;AACA;AACH;AACD;AACI;AACA;AACA;AACH;;AAGL;;;;;AAKI;AACI;AACA;AACI;AACH;;;;AAWG;AACA;AACA;;AASI;AACA;AACH;AAuBW;;AAEA;AACI;AAEJ;AACH;AAuEG;AACA;AACA;;;AAGA;AACA;AACA;AACH;;AAKG;AACJ;;AAGI;AACJ;;AA8BA;AACA;AACA;AACA;AACH;AAKrB;;"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var index = require('../Input/index.js');
|
|
7
|
+
var UnfoldMore = require('@xanui/icons/UnfoldMore');
|
|
8
|
+
|
|
9
|
+
const InputNumber = React.forwardRef((props, ref) => {
|
|
10
|
+
const isNumeric = !isNaN(Number(props.value));
|
|
11
|
+
let p = {};
|
|
12
|
+
if (!isNumeric) {
|
|
13
|
+
p.error = true;
|
|
14
|
+
p.helperText = "Value must be numeric";
|
|
15
|
+
}
|
|
16
|
+
return (jsxRuntime.jsx(index, Object.assign({}, props, p, { ref: ref, endIcon: jsxRuntime.jsx(UnfoldMore, {}), onKeyDown: (e) => {
|
|
17
|
+
props.onKeyDown && props.onKeyDown(e);
|
|
18
|
+
if (e.key !== 'ArrowUp' && e.key !== 'ArrowDown')
|
|
19
|
+
return;
|
|
20
|
+
e.preventDefault();
|
|
21
|
+
let val = parseInt(props.value || '0');
|
|
22
|
+
val = e.key === 'ArrowUp' ? val + 1 : val - 1;
|
|
23
|
+
e.target.value = String(val);
|
|
24
|
+
props.onChange && props.onChange(e);
|
|
25
|
+
}, value: props.value, onChange: e => {
|
|
26
|
+
e.target.value = e.target.value.replace(/\D/g, '');
|
|
27
|
+
props.onChange && props.onChange(e);
|
|
28
|
+
} })));
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
module.exports = InputNumber;
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/InputNumber/index.tsx"],"sourcesContent":["\"use client\"\nimport React from 'react'\nimport Input, { InputProps } from '../Input'\nimport UnfoldMore from '@xanui/icons/UnfoldMore'\n\nexport type InputNumberProps = InputProps\n\nconst InputNumber = React.forwardRef((props: InputNumberProps, ref: React.Ref<any>) => {\n const isNumeric = !isNaN(Number(props.value));\n\n let p: any = {}\n if (!isNumeric) {\n p.error = true;\n p.helperText = \"Value must be numeric\";\n }\n\n return (\n <Input\n {...props}\n {...p}\n ref={ref}\n endIcon={<UnfoldMore />}\n onKeyDown={(e: any) => {\n props.onKeyDown && props.onKeyDown(e);\n if (e.key !== 'ArrowUp' && e.key !== 'ArrowDown') return;\n e.preventDefault();\n let val = parseInt(props.value || '0');\n val = e.key === 'ArrowUp' ? val + 1 : val - 1;\n e.target.value = String(val);\n props.onChange && props.onChange(e);\n }}\n value={props.value}\n onChange={e => {\n e.target.value = e.target.value.replace(/\\D/g, '')\n props.onChange && props.onChange(e);\n }}\n />\n )\n})\n\nexport default InputNumber\n"],"names":[],"mappings":";;;;;;;;AAOA;AACG;;;AAIG;AACA;;;;;;;;AAcM;;;;AAMA;;;AAKZ;;"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import Input from '../Input/index.mjs';
|
|
5
|
+
import UnfoldMore from '@xanui/icons/UnfoldMore';
|
|
6
|
+
|
|
7
|
+
const InputNumber = React.forwardRef((props, ref) => {
|
|
8
|
+
const isNumeric = !isNaN(Number(props.value));
|
|
9
|
+
let p = {};
|
|
10
|
+
if (!isNumeric) {
|
|
11
|
+
p.error = true;
|
|
12
|
+
p.helperText = "Value must be numeric";
|
|
13
|
+
}
|
|
14
|
+
return (jsx(Input, Object.assign({}, props, p, { ref: ref, endIcon: jsx(UnfoldMore, {}), onKeyDown: (e) => {
|
|
15
|
+
props.onKeyDown && props.onKeyDown(e);
|
|
16
|
+
if (e.key !== 'ArrowUp' && e.key !== 'ArrowDown')
|
|
17
|
+
return;
|
|
18
|
+
e.preventDefault();
|
|
19
|
+
let val = parseInt(props.value || '0');
|
|
20
|
+
val = e.key === 'ArrowUp' ? val + 1 : val - 1;
|
|
21
|
+
e.target.value = String(val);
|
|
22
|
+
props.onChange && props.onChange(e);
|
|
23
|
+
}, value: props.value, onChange: e => {
|
|
24
|
+
e.target.value = e.target.value.replace(/\D/g, '');
|
|
25
|
+
props.onChange && props.onChange(e);
|
|
26
|
+
} })));
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
export { InputNumber as default };
|
|
30
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/InputNumber/index.tsx"],"sourcesContent":["\"use client\"\nimport React from 'react'\nimport Input, { InputProps } from '../Input'\nimport UnfoldMore from '@xanui/icons/UnfoldMore'\n\nexport type InputNumberProps = InputProps\n\nconst InputNumber = React.forwardRef((props: InputNumberProps, ref: React.Ref<any>) => {\n const isNumeric = !isNaN(Number(props.value));\n\n let p: any = {}\n if (!isNumeric) {\n p.error = true;\n p.helperText = \"Value must be numeric\";\n }\n\n return (\n <Input\n {...props}\n {...p}\n ref={ref}\n endIcon={<UnfoldMore />}\n onKeyDown={(e: any) => {\n props.onKeyDown && props.onKeyDown(e);\n if (e.key !== 'ArrowUp' && e.key !== 'ArrowDown') return;\n e.preventDefault();\n let val = parseInt(props.value || '0');\n val = e.key === 'ArrowUp' ? val + 1 : val - 1;\n e.target.value = String(val);\n props.onChange && props.onChange(e);\n }}\n value={props.value}\n onChange={e => {\n e.target.value = e.target.value.replace(/\\D/g, '')\n props.onChange && props.onChange(e);\n }}\n />\n )\n})\n\nexport default InputNumber\n"],"names":[],"mappings":";;;;;;AAOA;AACG;;;AAIG;AACA;;;;;;;;AAcM;;;;AAMA;;;AAKZ;;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
|
|
5
|
+
// ListContext.ts
|
|
6
|
+
const ListContext = React.createContext(null);
|
|
7
|
+
const useListContext = () => React.useContext(ListContext);
|
|
8
|
+
|
|
9
|
+
exports.ListContext = ListContext;
|
|
10
|
+
exports.useListContext = useListContext;
|
|
11
|
+
//# sourceMappingURL=ListContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListContext.js","sources":["../../src/List/ListContext.ts"],"sourcesContent":["// ListContext.ts\nimport React from \"react\"\n\nexport type ListSize = \"small\" | \"medium\" | \"large\"\n\nexport interface ListContextValue {\n size: ListSize\n}\n\nexport const ListContext = React.createContext<ListContextValue | null>(null)\n\nexport const useListContext = () => React.useContext(ListContext)\n"],"names":[],"mappings":";;;;AAAA;AASO,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAA0B,IAAI;AAErE,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,WAAW;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListContext.mjs","sources":["../../src/List/ListContext.ts"],"sourcesContent":["// ListContext.ts\nimport React from \"react\"\n\nexport type ListSize = \"small\" | \"medium\" | \"large\"\n\nexport interface ListContextValue {\n size: ListSize\n}\n\nexport const ListContext = React.createContext<ListContextValue | null>(null)\n\nexport const useListContext = () => React.useContext(ListContext)\n"],"names":[],"mappings":";;AAAA;AASO,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAA0B,IAAI;AAErE,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,WAAW;;;;"}
|
package/List/index.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { TagComponentType, TagProps, useBreakpointPropsType, UseColorTemplateColor, UseColorTemplateType } from '@xanui/core';
|
|
3
3
|
|
|
4
|
-
type ListProps<T extends TagComponentType = "ul"> = Omit<TagProps<T>, 'color'> & {
|
|
4
|
+
type ListProps<T extends TagComponentType = "ul"> = Omit<TagProps<T>, 'color' | "size"> & {
|
|
5
5
|
color?: useBreakpointPropsType<UseColorTemplateColor>;
|
|
6
6
|
variant?: useBreakpointPropsType<UseColorTemplateType>;
|
|
7
7
|
hoverColor?: useBreakpointPropsType<UseColorTemplateColor>;
|
|
8
8
|
hoverVariant?: useBreakpointPropsType<UseColorTemplateType>;
|
|
9
|
+
size?: useBreakpointPropsType<"small" | "medium" | "large">;
|
|
9
10
|
};
|
|
10
11
|
declare const List: React.ForwardRefExoticComponent<Omit<ListProps<TagComponentType>, "ref"> & React.RefAttributes<any>>;
|
|
11
12
|
|
package/List/index.js
CHANGED
|
@@ -4,11 +4,12 @@ var tslib = require('tslib');
|
|
|
4
4
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
5
|
var React = require('react');
|
|
6
6
|
var core = require('@xanui/core');
|
|
7
|
+
var ListContext = require('./ListContext.js');
|
|
7
8
|
|
|
8
9
|
const List = React.forwardRef((_a, ref) => {
|
|
9
|
-
var _b, _c, _d, _e;
|
|
10
|
+
var _b, _c, _d, _e, _f;
|
|
10
11
|
var { children } = _a, rest = tslib.__rest(_a, ["children"]);
|
|
11
|
-
let [
|
|
12
|
+
let [_g] = core.useInterface("List", rest, {}), { sx, color, variant, hoverColor, hoverVariant, size } = _g, props = tslib.__rest(_g, ["sx", "color", "variant", "hoverColor", "hoverVariant", "size"]);
|
|
12
13
|
const _p = {};
|
|
13
14
|
if (color)
|
|
14
15
|
_p.color = color;
|
|
@@ -18,11 +19,14 @@ const List = React.forwardRef((_a, ref) => {
|
|
|
18
19
|
_p.hoverColor = hoverColor;
|
|
19
20
|
if (hoverVariant)
|
|
20
21
|
_p.hoverVariant = hoverVariant;
|
|
22
|
+
if (size)
|
|
23
|
+
_p.size = size;
|
|
21
24
|
const p = core.useBreakpointProps(_p);
|
|
22
25
|
color = (_b = p.color) !== null && _b !== void 0 ? _b : "brand";
|
|
23
26
|
variant = (_c = p.variant) !== null && _c !== void 0 ? _c : "fill";
|
|
24
27
|
hoverColor = (_d = p.hoverColor) !== null && _d !== void 0 ? _d : "default";
|
|
25
28
|
hoverVariant = (_e = p.hoverVariant) !== null && _e !== void 0 ? _e : "soft";
|
|
29
|
+
size = (_f = p.size) !== null && _f !== void 0 ? _f : "medium";
|
|
26
30
|
const template = core.useColorTemplate(color, variant);
|
|
27
31
|
const hoverTemplate = core.useColorTemplate(hoverColor, hoverVariant);
|
|
28
32
|
let sxOutline = {};
|
|
@@ -34,25 +38,25 @@ const List = React.forwardRef((_a, ref) => {
|
|
|
34
38
|
}
|
|
35
39
|
};
|
|
36
40
|
}
|
|
37
|
-
return (jsxRuntime.jsx(core.Tag, Object.assign({ component: 'ul' }, props, { baseClass: 'list', sxr: Object.assign(Object.assign(Object.assign({ listStyle: "none", p: 0, m: 0 }, sxOutline), { "& .list-item-icon": {
|
|
38
|
-
|
|
39
|
-
}, "& .list-item-text": {
|
|
40
|
-
color: "text.primary"
|
|
41
|
-
}, "& .list-item-subtitle": {
|
|
42
|
-
color: "text.secondary"
|
|
43
|
-
}, "& .xui-list-item:not(.list-item-selected):hover": Object.assign(Object.assign({}, hoverTemplate.primary), { "& .list-item-icon": {
|
|
44
|
-
color: hoverTemplate.primary.color
|
|
41
|
+
return (jsxRuntime.jsx(ListContext.ListContext.Provider, { value: { size }, children: jsxRuntime.jsx(core.Tag, Object.assign({ component: 'ul' }, props, { baseClass: 'list', sxr: Object.assign(Object.assign(Object.assign({ listStyle: "none", p: 0, m: 0 }, sxOutline), { "& .list-item-icon": {
|
|
42
|
+
color: "text.secondary"
|
|
45
43
|
}, "& .list-item-text": {
|
|
46
|
-
color:
|
|
44
|
+
color: "text.primary"
|
|
47
45
|
}, "& .list-item-subtitle": {
|
|
48
|
-
color:
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
46
|
+
color: "text.secondary"
|
|
47
|
+
}, "& .xui-list-item:not(.list-item-selected):hover": Object.assign(Object.assign({}, hoverTemplate.primary), { "& .list-item-icon": {
|
|
48
|
+
color: hoverTemplate.primary.color
|
|
49
|
+
}, "& .list-item-text": {
|
|
50
|
+
color: hoverTemplate.primary.color
|
|
51
|
+
}, "& .list-item-subtitle": {
|
|
52
|
+
color: hoverColor === 'default' ? "text.secondary" : hoverTemplate.primary.color
|
|
53
|
+
} }), "& .xui-list-item.list-item-selected": Object.assign(Object.assign({}, template.primary), { "& .list-item-icon": {
|
|
54
|
+
color: template.primary.color
|
|
55
|
+
}, "& .list-item-text": {
|
|
56
|
+
color: template.primary.color
|
|
57
|
+
}, "& .list-item-subtitle": {
|
|
58
|
+
color: template.primary.color
|
|
59
|
+
} }) }), (sx || {})), ref: ref, children: children })) }));
|
|
56
60
|
});
|
|
57
61
|
|
|
58
62
|
module.exports = List;
|
package/List/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/List/index.tsx"],"sourcesContent":["\nimport React from 'react'\nimport { Tag, TagProps, TagComponentType, useInterface, useColorTemplate, UseColorTemplateType, UseColorTemplateColor, useBreakpointProps, useBreakpointPropsType } from '@xanui/core'\n\
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/List/index.tsx"],"sourcesContent":["\nimport React from 'react'\nimport { Tag, TagProps, TagComponentType, useInterface, useColorTemplate, UseColorTemplateType, UseColorTemplateColor, useBreakpointProps, useBreakpointPropsType } from '@xanui/core'\nimport { ListContext } from './ListContext';\n\nexport type ListProps<T extends TagComponentType = \"ul\"> = Omit<TagProps<T>, 'color' | \"size\"> & {\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n variant?: useBreakpointPropsType<UseColorTemplateType>;\n hoverColor?: useBreakpointPropsType<UseColorTemplateColor>;\n hoverVariant?: useBreakpointPropsType<UseColorTemplateType>;\n size?: useBreakpointPropsType<\"small\" | \"medium\" | \"large\">;\n}\n\n\nconst List = React.forwardRef(<T extends TagComponentType = \"ul\">({ children, ...rest }: ListProps<T>, ref: React.Ref<any>) => {\n let [{ sx, color, variant, hoverColor, hoverVariant, size, ...props }] = useInterface<any>(\"List\", rest, {})\n const _p: any = {}\n if (color) _p.color = color\n if (variant) _p.variant = variant\n if (hoverColor) _p.hoverColor = hoverColor\n if (hoverVariant) _p.hoverVariant = hoverVariant\n if (size) _p.size = size\n const p: any = useBreakpointProps(_p)\n\n color = p.color ?? \"brand\"\n variant = p.variant ?? \"fill\"\n hoverColor = p.hoverColor ?? \"default\"\n hoverVariant = p.hoverVariant ?? \"soft\"\n size = p.size ?? \"medium\"\n\n const template = useColorTemplate(color, variant)\n const hoverTemplate = useColorTemplate(hoverColor, hoverVariant)\n\n let sxOutline: any = {}\n if (hoverVariant == 'outline' || variant === 'outline') {\n sxOutline = {\n \"& .list-item\": {\n border: \"1px solid\",\n borderColor: \"transparent\"\n }\n }\n }\n\n return (\n <ListContext.Provider value={{ size }}>\n <Tag\n component='ul'\n {...props}\n baseClass='list'\n sxr={{\n listStyle: \"none\",\n p: 0,\n m: 0,\n ...sxOutline,\n \"& .list-item-icon\": {\n color: \"text.secondary\"\n },\n \"& .list-item-text\": {\n color: \"text.primary\"\n },\n \"& .list-item-subtitle\": {\n color: \"text.secondary\"\n },\n \"& .xui-list-item:not(.list-item-selected):hover\": {\n ...hoverTemplate.primary,\n \"& .list-item-icon\": {\n color: hoverTemplate.primary.color\n },\n \"& .list-item-text\": {\n color: hoverTemplate.primary.color\n },\n \"& .list-item-subtitle\": {\n color: hoverColor === 'default' ? \"text.secondary\" : hoverTemplate.primary.color\n },\n },\n \"& .xui-list-item.list-item-selected\": {\n ...template.primary,\n \"& .list-item-icon\": {\n color: template.primary.color\n },\n \"& .list-item-text\": {\n color: template.primary.color\n },\n \"& .list-item-subtitle\": {\n color: template.primary.color\n },\n },\n ...(sx || {} as any)\n }}\n ref={ref}\n >\n {children}\n </Tag>\n </ListContext.Provider>\n )\n})\n\nexport default List"],"names":["__rest","useInterface","useBreakpointProps","useColorTemplate","_jsx","ListContext","Tag"],"mappings":";;;;;;;;AAcA,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAoC,EAAmC,EAAE,GAAmB,KAAI;;AAA5D,IAAA,IAAA,EAAE,QAAQ,EAAA,GAAA,EAAyB,EAApB,IAAI,GAAAA,YAAA,CAAA,EAAA,EAAnB,YAAqB,CAAF;AACjF,IAAA,IAAI,CAAA,EAAA,CAAA,GAAqEC,iBAAY,CAAM,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,EAAvG,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAA,GAAA,EAAY,EAAP,KAAK,GAAAD,YAAA,CAAA,EAAA,EAA9D,CAAA,IAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,MAAA,CAAgE,CAAuC;IAC5G,MAAM,EAAE,GAAQ,EAAE;AAClB,IAAA,IAAI,KAAK;AAAE,QAAA,EAAE,CAAC,KAAK,GAAG,KAAK;AAC3B,IAAA,IAAI,OAAO;AAAE,QAAA,EAAE,CAAC,OAAO,GAAG,OAAO;AACjC,IAAA,IAAI,UAAU;AAAE,QAAA,EAAE,CAAC,UAAU,GAAG,UAAU;AAC1C,IAAA,IAAI,YAAY;AAAE,QAAA,EAAE,CAAC,YAAY,GAAG,YAAY;AAChD,IAAA,IAAI,IAAI;AAAE,QAAA,EAAE,CAAC,IAAI,GAAG,IAAI;AACxB,IAAA,MAAM,CAAC,GAAQE,uBAAkB,CAAC,EAAE,CAAC;AAErC,IAAA,KAAK,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,OAAO;AAC1B,IAAA,OAAO,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,MAAM;AAC7B,IAAA,UAAU,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,SAAS;AACtC,IAAA,YAAY,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,MAAM;AACvC,IAAA,IAAI,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,QAAQ;IAEzB,MAAM,QAAQ,GAAGC,qBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC;IACjD,MAAM,aAAa,GAAGA,qBAAgB,CAAC,UAAU,EAAE,YAAY,CAAC;IAEhE,IAAI,SAAS,GAAQ,EAAE;IACvB,IAAI,YAAY,IAAI,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE;AACpD,QAAA,SAAS,GAAG;AACR,YAAA,cAAc,EAAE;AACZ,gBAAA,MAAM,EAAE,WAAW;AACnB,gBAAA,WAAW,EAAE;AAChB;SACJ;IACL;AAEA,IAAA,QACIC,cAAA,CAACC,uBAAW,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAA,QAAA,EACjCD,eAACE,QAAG,EAAA,MAAA,CAAA,MAAA,CAAA,EACA,SAAS,EAAC,IAAI,IACV,KAAK,EAAA,EACT,SAAS,EAAC,MAAM,EAChB,GAAG,8CACC,SAAS,EAAE,MAAM,EACjB,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,IACD,SAAS,CAAA,EAAA,EACZ,mBAAmB,EAAE;AACjB,oBAAA,KAAK,EAAE;AACV,iBAAA,EACD,mBAAmB,EAAE;AACjB,oBAAA,KAAK,EAAE;AACV,iBAAA,EACD,uBAAuB,EAAE;AACrB,oBAAA,KAAK,EAAE;AACV,iBAAA,EACD,iDAAiD,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAC1C,aAAa,CAAC,OAAO,CAAA,EAAA,EACxB,mBAAmB,EAAE;AACjB,wBAAA,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC;AAChC,qBAAA,EACD,mBAAmB,EAAE;AACjB,wBAAA,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC;AAChC,qBAAA,EACD,uBAAuB,EAAE;AACrB,wBAAA,KAAK,EAAE,UAAU,KAAK,SAAS,GAAG,gBAAgB,GAAG,aAAa,CAAC,OAAO,CAAC;AAC9E,qBAAA,EAAA,CAAA,EAEL,qCAAqC,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAC9B,QAAQ,CAAC,OAAO,CAAA,EAAA,EACnB,mBAAmB,EAAE;AACjB,wBAAA,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;AAC3B,qBAAA,EACD,mBAAmB,EAAE;AACjB,wBAAA,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;AAC3B,qBAAA,EACD,uBAAuB,EAAE;AACrB,wBAAA,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;AAC3B,qBAAA,EAAA,CAAA,EAAA,CAAA,GAED,EAAE,IAAI,EAAS,EAAC,EAExB,GAAG,EAAE,GAAG,EAAA,QAAA,EAEP,QAAQ,EAAA,CAAA,CACP,EAAA,CACa;AAE/B,CAAC;;;;"}
|
package/List/index.mjs
CHANGED
|
@@ -2,11 +2,12 @@ import { __rest } from 'tslib';
|
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { useInterface, useBreakpointProps, useColorTemplate, Tag } from '@xanui/core';
|
|
5
|
+
import { ListContext } from './ListContext.mjs';
|
|
5
6
|
|
|
6
7
|
const List = React.forwardRef((_a, ref) => {
|
|
7
|
-
var _b, _c, _d, _e;
|
|
8
|
+
var _b, _c, _d, _e, _f;
|
|
8
9
|
var { children } = _a, rest = __rest(_a, ["children"]);
|
|
9
|
-
let [
|
|
10
|
+
let [_g] = useInterface("List", rest, {}), { sx, color, variant, hoverColor, hoverVariant, size } = _g, props = __rest(_g, ["sx", "color", "variant", "hoverColor", "hoverVariant", "size"]);
|
|
10
11
|
const _p = {};
|
|
11
12
|
if (color)
|
|
12
13
|
_p.color = color;
|
|
@@ -16,11 +17,14 @@ const List = React.forwardRef((_a, ref) => {
|
|
|
16
17
|
_p.hoverColor = hoverColor;
|
|
17
18
|
if (hoverVariant)
|
|
18
19
|
_p.hoverVariant = hoverVariant;
|
|
20
|
+
if (size)
|
|
21
|
+
_p.size = size;
|
|
19
22
|
const p = useBreakpointProps(_p);
|
|
20
23
|
color = (_b = p.color) !== null && _b !== void 0 ? _b : "brand";
|
|
21
24
|
variant = (_c = p.variant) !== null && _c !== void 0 ? _c : "fill";
|
|
22
25
|
hoverColor = (_d = p.hoverColor) !== null && _d !== void 0 ? _d : "default";
|
|
23
26
|
hoverVariant = (_e = p.hoverVariant) !== null && _e !== void 0 ? _e : "soft";
|
|
27
|
+
size = (_f = p.size) !== null && _f !== void 0 ? _f : "medium";
|
|
24
28
|
const template = useColorTemplate(color, variant);
|
|
25
29
|
const hoverTemplate = useColorTemplate(hoverColor, hoverVariant);
|
|
26
30
|
let sxOutline = {};
|
|
@@ -32,25 +36,25 @@ const List = React.forwardRef((_a, ref) => {
|
|
|
32
36
|
}
|
|
33
37
|
};
|
|
34
38
|
}
|
|
35
|
-
return (jsx(Tag, Object.assign({ component: 'ul' }, props, { baseClass: 'list', sxr: Object.assign(Object.assign(Object.assign({ listStyle: "none", p: 0, m: 0 }, sxOutline), { "& .list-item-icon": {
|
|
36
|
-
|
|
37
|
-
}, "& .list-item-text": {
|
|
38
|
-
color: "text.primary"
|
|
39
|
-
}, "& .list-item-subtitle": {
|
|
40
|
-
color: "text.secondary"
|
|
41
|
-
}, "& .xui-list-item:not(.list-item-selected):hover": Object.assign(Object.assign({}, hoverTemplate.primary), { "& .list-item-icon": {
|
|
42
|
-
color: hoverTemplate.primary.color
|
|
39
|
+
return (jsx(ListContext.Provider, { value: { size }, children: jsx(Tag, Object.assign({ component: 'ul' }, props, { baseClass: 'list', sxr: Object.assign(Object.assign(Object.assign({ listStyle: "none", p: 0, m: 0 }, sxOutline), { "& .list-item-icon": {
|
|
40
|
+
color: "text.secondary"
|
|
43
41
|
}, "& .list-item-text": {
|
|
44
|
-
color:
|
|
42
|
+
color: "text.primary"
|
|
45
43
|
}, "& .list-item-subtitle": {
|
|
46
|
-
color:
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
44
|
+
color: "text.secondary"
|
|
45
|
+
}, "& .xui-list-item:not(.list-item-selected):hover": Object.assign(Object.assign({}, hoverTemplate.primary), { "& .list-item-icon": {
|
|
46
|
+
color: hoverTemplate.primary.color
|
|
47
|
+
}, "& .list-item-text": {
|
|
48
|
+
color: hoverTemplate.primary.color
|
|
49
|
+
}, "& .list-item-subtitle": {
|
|
50
|
+
color: hoverColor === 'default' ? "text.secondary" : hoverTemplate.primary.color
|
|
51
|
+
} }), "& .xui-list-item.list-item-selected": Object.assign(Object.assign({}, template.primary), { "& .list-item-icon": {
|
|
52
|
+
color: template.primary.color
|
|
53
|
+
}, "& .list-item-text": {
|
|
54
|
+
color: template.primary.color
|
|
55
|
+
}, "& .list-item-subtitle": {
|
|
56
|
+
color: template.primary.color
|
|
57
|
+
} }) }), (sx || {})), ref: ref, children: children })) }));
|
|
54
58
|
});
|
|
55
59
|
|
|
56
60
|
export { List as default };
|
package/List/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../src/List/index.tsx"],"sourcesContent":["\nimport React from 'react'\nimport { Tag, TagProps, TagComponentType, useInterface, useColorTemplate, UseColorTemplateType, UseColorTemplateColor, useBreakpointProps, useBreakpointPropsType } from '@xanui/core'\n\
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/List/index.tsx"],"sourcesContent":["\nimport React from 'react'\nimport { Tag, TagProps, TagComponentType, useInterface, useColorTemplate, UseColorTemplateType, UseColorTemplateColor, useBreakpointProps, useBreakpointPropsType } from '@xanui/core'\nimport { ListContext } from './ListContext';\n\nexport type ListProps<T extends TagComponentType = \"ul\"> = Omit<TagProps<T>, 'color' | \"size\"> & {\n color?: useBreakpointPropsType<UseColorTemplateColor>;\n variant?: useBreakpointPropsType<UseColorTemplateType>;\n hoverColor?: useBreakpointPropsType<UseColorTemplateColor>;\n hoverVariant?: useBreakpointPropsType<UseColorTemplateType>;\n size?: useBreakpointPropsType<\"small\" | \"medium\" | \"large\">;\n}\n\n\nconst List = React.forwardRef(<T extends TagComponentType = \"ul\">({ children, ...rest }: ListProps<T>, ref: React.Ref<any>) => {\n let [{ sx, color, variant, hoverColor, hoverVariant, size, ...props }] = useInterface<any>(\"List\", rest, {})\n const _p: any = {}\n if (color) _p.color = color\n if (variant) _p.variant = variant\n if (hoverColor) _p.hoverColor = hoverColor\n if (hoverVariant) _p.hoverVariant = hoverVariant\n if (size) _p.size = size\n const p: any = useBreakpointProps(_p)\n\n color = p.color ?? \"brand\"\n variant = p.variant ?? \"fill\"\n hoverColor = p.hoverColor ?? \"default\"\n hoverVariant = p.hoverVariant ?? \"soft\"\n size = p.size ?? \"medium\"\n\n const template = useColorTemplate(color, variant)\n const hoverTemplate = useColorTemplate(hoverColor, hoverVariant)\n\n let sxOutline: any = {}\n if (hoverVariant == 'outline' || variant === 'outline') {\n sxOutline = {\n \"& .list-item\": {\n border: \"1px solid\",\n borderColor: \"transparent\"\n }\n }\n }\n\n return (\n <ListContext.Provider value={{ size }}>\n <Tag\n component='ul'\n {...props}\n baseClass='list'\n sxr={{\n listStyle: \"none\",\n p: 0,\n m: 0,\n ...sxOutline,\n \"& .list-item-icon\": {\n color: \"text.secondary\"\n },\n \"& .list-item-text\": {\n color: \"text.primary\"\n },\n \"& .list-item-subtitle\": {\n color: \"text.secondary\"\n },\n \"& .xui-list-item:not(.list-item-selected):hover\": {\n ...hoverTemplate.primary,\n \"& .list-item-icon\": {\n color: hoverTemplate.primary.color\n },\n \"& .list-item-text\": {\n color: hoverTemplate.primary.color\n },\n \"& .list-item-subtitle\": {\n color: hoverColor === 'default' ? \"text.secondary\" : hoverTemplate.primary.color\n },\n },\n \"& .xui-list-item.list-item-selected\": {\n ...template.primary,\n \"& .list-item-icon\": {\n color: template.primary.color\n },\n \"& .list-item-text\": {\n color: template.primary.color\n },\n \"& .list-item-subtitle\": {\n color: template.primary.color\n },\n },\n ...(sx || {} as any)\n }}\n ref={ref}\n >\n {children}\n </Tag>\n </ListContext.Provider>\n )\n})\n\nexport default List"],"names":["_jsx"],"mappings":";;;;;;AAcA,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAoC,EAAmC,EAAE,GAAmB,KAAI;;AAA5D,IAAA,IAAA,EAAE,QAAQ,EAAA,GAAA,EAAyB,EAApB,IAAI,GAAA,MAAA,CAAA,EAAA,EAAnB,YAAqB,CAAF;AACjF,IAAA,IAAI,CAAA,EAAA,CAAA,GAAqE,YAAY,CAAM,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,EAAvG,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAA,GAAA,EAAY,EAAP,KAAK,GAAA,MAAA,CAAA,EAAA,EAA9D,CAAA,IAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,MAAA,CAAgE,CAAuC;IAC5G,MAAM,EAAE,GAAQ,EAAE;AAClB,IAAA,IAAI,KAAK;AAAE,QAAA,EAAE,CAAC,KAAK,GAAG,KAAK;AAC3B,IAAA,IAAI,OAAO;AAAE,QAAA,EAAE,CAAC,OAAO,GAAG,OAAO;AACjC,IAAA,IAAI,UAAU;AAAE,QAAA,EAAE,CAAC,UAAU,GAAG,UAAU;AAC1C,IAAA,IAAI,YAAY;AAAE,QAAA,EAAE,CAAC,YAAY,GAAG,YAAY;AAChD,IAAA,IAAI,IAAI;AAAE,QAAA,EAAE,CAAC,IAAI,GAAG,IAAI;AACxB,IAAA,MAAM,CAAC,GAAQ,kBAAkB,CAAC,EAAE,CAAC;AAErC,IAAA,KAAK,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,OAAO;AAC1B,IAAA,OAAO,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,MAAM;AAC7B,IAAA,UAAU,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,SAAS;AACtC,IAAA,YAAY,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,MAAM;AACvC,IAAA,IAAI,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,QAAQ;IAEzB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC;IACjD,MAAM,aAAa,GAAG,gBAAgB,CAAC,UAAU,EAAE,YAAY,CAAC;IAEhE,IAAI,SAAS,GAAQ,EAAE;IACvB,IAAI,YAAY,IAAI,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE;AACpD,QAAA,SAAS,GAAG;AACR,YAAA,cAAc,EAAE;AACZ,gBAAA,MAAM,EAAE,WAAW;AACnB,gBAAA,WAAW,EAAE;AAChB;SACJ;IACL;AAEA,IAAA,QACIA,GAAA,CAAC,WAAW,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAA,QAAA,EACjCA,IAAC,GAAG,EAAA,MAAA,CAAA,MAAA,CAAA,EACA,SAAS,EAAC,IAAI,IACV,KAAK,EAAA,EACT,SAAS,EAAC,MAAM,EAChB,GAAG,8CACC,SAAS,EAAE,MAAM,EACjB,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,IACD,SAAS,CAAA,EAAA,EACZ,mBAAmB,EAAE;AACjB,oBAAA,KAAK,EAAE;AACV,iBAAA,EACD,mBAAmB,EAAE;AACjB,oBAAA,KAAK,EAAE;AACV,iBAAA,EACD,uBAAuB,EAAE;AACrB,oBAAA,KAAK,EAAE;AACV,iBAAA,EACD,iDAAiD,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAC1C,aAAa,CAAC,OAAO,CAAA,EAAA,EACxB,mBAAmB,EAAE;AACjB,wBAAA,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC;AAChC,qBAAA,EACD,mBAAmB,EAAE;AACjB,wBAAA,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC;AAChC,qBAAA,EACD,uBAAuB,EAAE;AACrB,wBAAA,KAAK,EAAE,UAAU,KAAK,SAAS,GAAG,gBAAgB,GAAG,aAAa,CAAC,OAAO,CAAC;AAC9E,qBAAA,EAAA,CAAA,EAEL,qCAAqC,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAC9B,QAAQ,CAAC,OAAO,CAAA,EAAA,EACnB,mBAAmB,EAAE;AACjB,wBAAA,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;AAC3B,qBAAA,EACD,mBAAmB,EAAE;AACjB,wBAAA,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;AAC3B,qBAAA,EACD,uBAAuB,EAAE;AACrB,wBAAA,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;AAC3B,qBAAA,EAAA,CAAA,EAAA,CAAA,GAED,EAAE,IAAI,EAAS,EAAC,EAExB,GAAG,EAAE,GAAG,EAAA,QAAA,EAEP,QAAQ,EAAA,CAAA,CACP,EAAA,CACa;AAE/B,CAAC;;;;"}
|
package/ListItem/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ type ListItemProps<T extends TagComponentType = "li"> = TagProps<T> & {
|
|
|
6
6
|
subtitle?: useBreakpointPropsType<string | ReactElement>;
|
|
7
7
|
startIcon?: useBreakpointPropsType<ReactElement>;
|
|
8
8
|
endIcon?: useBreakpointPropsType<ReactElement>;
|
|
9
|
+
size?: useBreakpointPropsType<"small" | "medium" | "large">;
|
|
9
10
|
};
|
|
10
11
|
declare const ListItem: React.ForwardRefExoticComponent<Omit<ListItemProps<TagComponentType>, "ref"> & React.RefAttributes<any>>;
|
|
11
12
|
|
package/ListItem/index.js
CHANGED
|
@@ -5,10 +5,12 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
5
5
|
var React = require('react');
|
|
6
6
|
var core = require('@xanui/core');
|
|
7
7
|
var index = require('../Text/index.js');
|
|
8
|
+
var ListContext = require('../List/ListContext.js');
|
|
8
9
|
|
|
9
10
|
const ListItem = React.forwardRef((_a, ref) => {
|
|
10
|
-
var
|
|
11
|
-
|
|
11
|
+
var _b, _c;
|
|
12
|
+
var { children, startIcon, endIcon, subtitle, size } = _a, rest = tslib.__rest(_a, ["children", "startIcon", "endIcon", "subtitle", "size"]);
|
|
13
|
+
let [_d] = core.useInterface("ListItem", rest, {}), { selected } = _d, props = tslib.__rest(_d, ["selected"]);
|
|
12
14
|
const _p = {};
|
|
13
15
|
if (subtitle)
|
|
14
16
|
_p.subtitle = subtitle;
|
|
@@ -16,22 +18,37 @@ const ListItem = React.forwardRef((_a, ref) => {
|
|
|
16
18
|
_p.startIcon = startIcon;
|
|
17
19
|
if (endIcon)
|
|
18
20
|
_p.endIcon = endIcon;
|
|
21
|
+
if (size)
|
|
22
|
+
_p.size = size;
|
|
19
23
|
const p = core.useBreakpointProps(_p);
|
|
24
|
+
const ctx = ListContext.useListContext();
|
|
20
25
|
subtitle = p.subtitle;
|
|
21
26
|
startIcon = p.startIcon;
|
|
22
27
|
endIcon = p.endIcon;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
size = (_c = (_b = p.size) !== null && _b !== void 0 ? _b : ctx === null || ctx === void 0 ? void 0 : ctx.size) !== null && _c !== void 0 ? _c : "medium";
|
|
29
|
+
let sizes = {
|
|
30
|
+
small: {
|
|
31
|
+
fontSize: "button",
|
|
32
|
+
py: 0.5,
|
|
33
|
+
px: 1,
|
|
34
|
+
minHeight: 32,
|
|
35
|
+
},
|
|
36
|
+
medium: {
|
|
37
|
+
fontSize: "text",
|
|
38
|
+
py: 1,
|
|
39
|
+
px: 1.5,
|
|
40
|
+
minHeight: 40,
|
|
41
|
+
},
|
|
42
|
+
large: {
|
|
43
|
+
fontSize: "h6",
|
|
44
|
+
py: 1.5,
|
|
45
|
+
px: 2,
|
|
46
|
+
minHeight: 48,
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
return (jsxRuntime.jsxs(core.Tag, Object.assign({ component: 'li' }, props, { sxr: Object.assign({ alignItems: "center", display: "flex", flexDirection: "row", userSelect: "none", cursor: "pointer", lineHeight: 1.4, whiteSpace: "nowrap", flexShrink: "0" }, sizes[size]), baseClass: 'list-item', classNames: [{ "list-item-selected": selected }, ...(props.classNames || [])], ref: ref, children: [startIcon && jsxRuntime.jsx(core.Tag, { mr: 1, component: "span", display: "inline-block", className: 'list-item-icon', children: startIcon }), jsxRuntime.jsxs(core.Tag, { flex: 1, children: [jsxRuntime.jsx(index, { variant: "text", className: 'list-item-text', component: typeof children === "string" || typeof children === "number" ? "p" : "div", children: children }), subtitle && jsxRuntime.jsx(index, { variant: "text", fontSize: "button", className: 'list-item-subtitle', component: typeof subtitle === "string" || typeof subtitle === "number" ? "p" : "div", children: subtitle })] }), endIcon && jsxRuntime.jsx(core.Tag, { ml: 1, component: "span", display: "inline-block", className: 'list-item-icon', children: endIcon })] })));
|
|
34
50
|
});
|
|
51
|
+
ListItem.displayName = "ListItem";
|
|
35
52
|
|
|
36
53
|
module.exports = ListItem;
|
|
37
54
|
//# sourceMappingURL=index.js.map
|
package/ListItem/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/ListItem/index.tsx"],"sourcesContent":["\nimport React, { ReactElement } from 'react'\nimport { Tag, TagProps, TagComponentType, useInterface, useBreakpointProps, useBreakpointPropsType } from '@xanui/core'\nimport Text from '../Text';\n\n\nexport type ListItemProps<T extends TagComponentType = \"li\"> = TagProps<T> & {\n selected?: boolean;\n subtitle?: useBreakpointPropsType<string | ReactElement>;\n startIcon?: useBreakpointPropsType<ReactElement>;\n endIcon?: useBreakpointPropsType<ReactElement>;\n}\n\nconst ListItem = React.forwardRef(<T extends TagComponentType = \"li\">({ children, startIcon, endIcon, subtitle, ...rest }: ListItemProps<T>, ref: React.Ref<any>) => {\n let [{ selected, ...props }] = useInterface<any>(\"ListItem\", rest, {})\n const _p: any = {}\n if (subtitle) _p.subtitle = subtitle\n if (startIcon) _p.startIcon = startIcon\n if (endIcon) _p.endIcon = endIcon\n const p: any = useBreakpointProps(_p)\n\n subtitle = p.subtitle\n startIcon = p.startIcon\n endIcon = p.endIcon\n\n return (\n <Tag\n component='li'\n {...props}\n sxr={{\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"row\",\n userSelect: \"none\",\n cursor: \"pointer\",\n lineHeight: 1.4,\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/ListItem/index.tsx"],"sourcesContent":["\nimport React, { ReactElement } from 'react'\nimport { Tag, TagProps, TagComponentType, useInterface, useBreakpointProps, useBreakpointPropsType } from '@xanui/core'\nimport Text from '../Text';\nimport { useListContext } from '../List/ListContext';\n\n\nexport type ListItemProps<T extends TagComponentType = \"li\"> = TagProps<T> & {\n selected?: boolean;\n subtitle?: useBreakpointPropsType<string | ReactElement>;\n startIcon?: useBreakpointPropsType<ReactElement>;\n endIcon?: useBreakpointPropsType<ReactElement>;\n size?: useBreakpointPropsType<\"small\" | \"medium\" | \"large\">;\n}\n\nconst ListItem = React.forwardRef(<T extends TagComponentType = \"li\">({ children, startIcon, endIcon, subtitle, size, ...rest }: ListItemProps<T>, ref: React.Ref<any>) => {\n let [{ selected, ...props }] = useInterface<any>(\"ListItem\", rest, {})\n const _p: any = {}\n if (subtitle) _p.subtitle = subtitle\n if (startIcon) _p.startIcon = startIcon\n if (endIcon) _p.endIcon = endIcon\n if (size) _p.size = size\n const p: any = useBreakpointProps(_p)\n const ctx = useListContext()\n\n subtitle = p.subtitle\n startIcon = p.startIcon\n endIcon = p.endIcon\n size = p.size ?? ctx?.size ?? \"medium\"\n\n let sizes: any = {\n small: {\n fontSize: \"button\",\n py: 0.5,\n px: 1,\n minHeight: 32,\n },\n medium: {\n fontSize: \"text\",\n py: 1,\n px: 1.5,\n minHeight: 40,\n },\n large: {\n fontSize: \"h6\",\n py: 1.5,\n px: 2,\n minHeight: 48,\n }\n }\n\n return (\n <Tag\n component='li'\n {...props}\n sxr={{\n alignItems: \"center\",\n display: \"flex\",\n flexDirection: \"row\",\n userSelect: \"none\",\n cursor: \"pointer\",\n lineHeight: 1.4,\n whiteSpace: \"nowrap\",\n flexShrink: \"0\",\n ...sizes[size as any]\n }}\n baseClass='list-item'\n classNames={[{ \"list-item-selected\": selected as boolean }, ...(props.classNames || [])]}\n ref={ref}\n >\n {startIcon && <Tag mr={1} component=\"span\" display=\"inline-block\" className='list-item-icon'>{startIcon as any}</Tag>}\n <Tag flex={1}>\n <Text\n variant=\"text\"\n className='list-item-text'\n component={typeof children === \"string\" || typeof children === \"number\" ? \"p\" : \"div\"}\n >\n {children}\n </Text>\n {\n subtitle && <Text\n variant=\"text\"\n fontSize=\"button\"\n className='list-item-subtitle'\n component={typeof subtitle === \"string\" || typeof subtitle === \"number\" ? \"p\" : \"div\"}\n >{subtitle as any}</Text>\n }\n </Tag>\n {endIcon && <Tag ml={1} component=\"span\" display=\"inline-block\" className='list-item-icon'>{endIcon as any}</Tag>}\n </Tag>\n )\n})\n\nListItem.displayName = \"ListItem\"\n\nexport default ListItem"],"names":["__rest","useInterface","useBreakpointProps","useListContext","_jsxs","Tag","_jsx","Text"],"mappings":"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"}
|
package/ListItem/index.mjs
CHANGED
|
@@ -3,10 +3,12 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { useInterface, useBreakpointProps, Tag } from '@xanui/core';
|
|
5
5
|
import Text from '../Text/index.mjs';
|
|
6
|
+
import { useListContext } from '../List/ListContext.mjs';
|
|
6
7
|
|
|
7
8
|
const ListItem = React.forwardRef((_a, ref) => {
|
|
8
|
-
var
|
|
9
|
-
|
|
9
|
+
var _b, _c;
|
|
10
|
+
var { children, startIcon, endIcon, subtitle, size } = _a, rest = __rest(_a, ["children", "startIcon", "endIcon", "subtitle", "size"]);
|
|
11
|
+
let [_d] = useInterface("ListItem", rest, {}), { selected } = _d, props = __rest(_d, ["selected"]);
|
|
10
12
|
const _p = {};
|
|
11
13
|
if (subtitle)
|
|
12
14
|
_p.subtitle = subtitle;
|
|
@@ -14,22 +16,37 @@ const ListItem = React.forwardRef((_a, ref) => {
|
|
|
14
16
|
_p.startIcon = startIcon;
|
|
15
17
|
if (endIcon)
|
|
16
18
|
_p.endIcon = endIcon;
|
|
19
|
+
if (size)
|
|
20
|
+
_p.size = size;
|
|
17
21
|
const p = useBreakpointProps(_p);
|
|
22
|
+
const ctx = useListContext();
|
|
18
23
|
subtitle = p.subtitle;
|
|
19
24
|
startIcon = p.startIcon;
|
|
20
25
|
endIcon = p.endIcon;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
size = (_c = (_b = p.size) !== null && _b !== void 0 ? _b : ctx === null || ctx === void 0 ? void 0 : ctx.size) !== null && _c !== void 0 ? _c : "medium";
|
|
27
|
+
let sizes = {
|
|
28
|
+
small: {
|
|
29
|
+
fontSize: "button",
|
|
30
|
+
py: 0.5,
|
|
31
|
+
px: 1,
|
|
32
|
+
minHeight: 32,
|
|
33
|
+
},
|
|
34
|
+
medium: {
|
|
35
|
+
fontSize: "text",
|
|
36
|
+
py: 1,
|
|
37
|
+
px: 1.5,
|
|
38
|
+
minHeight: 40,
|
|
39
|
+
},
|
|
40
|
+
large: {
|
|
41
|
+
fontSize: "h6",
|
|
42
|
+
py: 1.5,
|
|
43
|
+
px: 2,
|
|
44
|
+
minHeight: 48,
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
return (jsxs(Tag, Object.assign({ component: 'li' }, props, { sxr: Object.assign({ alignItems: "center", display: "flex", flexDirection: "row", userSelect: "none", cursor: "pointer", lineHeight: 1.4, whiteSpace: "nowrap", flexShrink: "0" }, sizes[size]), baseClass: 'list-item', classNames: [{ "list-item-selected": selected }, ...(props.classNames || [])], ref: ref, children: [startIcon && jsx(Tag, { mr: 1, component: "span", display: "inline-block", className: 'list-item-icon', children: startIcon }), jsxs(Tag, { flex: 1, children: [jsx(Text, { variant: "text", className: 'list-item-text', component: typeof children === "string" || typeof children === "number" ? "p" : "div", children: children }), subtitle && jsx(Text, { variant: "text", fontSize: "button", className: 'list-item-subtitle', component: typeof subtitle === "string" || typeof subtitle === "number" ? "p" : "div", children: subtitle })] }), endIcon && jsx(Tag, { ml: 1, component: "span", display: "inline-block", className: 'list-item-icon', children: endIcon })] })));
|
|
32
48
|
});
|
|
49
|
+
ListItem.displayName = "ListItem";
|
|
33
50
|
|
|
34
51
|
export { ListItem as default };
|
|
35
52
|
//# sourceMappingURL=index.mjs.map
|