@tecsinapse/react-web-kit 2.1.2 → 2.1.4

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.
Files changed (27) hide show
  1. package/dist/cjs/components/molecules/DatePicker/DatePicker.d.ts +1 -1
  2. package/dist/cjs/components/molecules/DatePicker/DatePicker.js +9 -3
  3. package/dist/cjs/components/molecules/DatePicker/DatePicker.js.map +1 -1
  4. package/dist/cjs/components/molecules/Select/Dropdown/styled.js +1 -1
  5. package/dist/cjs/components/molecules/Select/Dropdown/styled.js.map +1 -1
  6. package/dist/cjs/components/molecules/Select/Select.d.ts +3 -1
  7. package/dist/cjs/components/molecules/Select/Select.js +33 -21
  8. package/dist/cjs/components/molecules/Select/Select.js.map +1 -1
  9. package/dist/cjs/components/molecules/Select/functions.d.ts +2 -1
  10. package/dist/cjs/components/molecules/Select/functions.js +29 -7
  11. package/dist/cjs/components/molecules/Select/functions.js.map +1 -1
  12. package/dist/cjs/components/molecules/Select/styled.js.map +1 -1
  13. package/dist/cjs/components/molecules/Select/types.d.ts +4 -0
  14. package/dist/esm/components/molecules/DatePicker/DatePicker.d.ts +1 -1
  15. package/dist/esm/components/molecules/DatePicker/DatePicker.js +10 -4
  16. package/dist/esm/components/molecules/DatePicker/DatePicker.js.map +1 -1
  17. package/dist/esm/components/molecules/Select/Dropdown/styled.js +1 -1
  18. package/dist/esm/components/molecules/Select/Dropdown/styled.js.map +1 -1
  19. package/dist/esm/components/molecules/Select/Select.d.ts +3 -1
  20. package/dist/esm/components/molecules/Select/Select.js +34 -22
  21. package/dist/esm/components/molecules/Select/Select.js.map +1 -1
  22. package/dist/esm/components/molecules/Select/functions.d.ts +2 -1
  23. package/dist/esm/components/molecules/Select/functions.js +29 -7
  24. package/dist/esm/components/molecules/Select/functions.js.map +1 -1
  25. package/dist/esm/components/molecules/Select/styled.js.map +1 -1
  26. package/dist/esm/components/molecules/Select/types.d.ts +4 -0
  27. package/package.json +3 -3
@@ -4,4 +4,4 @@ export type WebDatePickerProps<T extends SelectionType> = Omit<DatePickerProps<T
4
4
  callbackAfterValidated?: (valid: boolean, message?: string) => void;
5
5
  invalidDateLabel?: string;
6
6
  };
7
- export declare const DatePicker: <T extends SelectionType>({ value, type, locale, onChange, callbackAfterValidated, placeholder, label, invalidDateLabel, ...rest }: WebDatePickerProps<T>) => JSX.Element;
7
+ export declare const DatePicker: <T extends SelectionType>({ value, type, locale, onChange, callbackAfterValidated, placeholder, disabled, label, invalidDateLabel, ...rest }: WebDatePickerProps<T>) => JSX.Element;
@@ -13,6 +13,7 @@ const DatePicker = ({
13
13
  onChange,
14
14
  callbackAfterValidated,
15
15
  placeholder,
16
+ disabled,
16
17
  label,
17
18
  invalidDateLabel = "Invalid date",
18
19
  ...rest
@@ -22,6 +23,7 @@ const DatePicker = ({
22
23
  const show = React.useCallback(() => setVisible(true), []);
23
24
  const close = React.useCallback(() => setVisible(false), []);
24
25
  const [error, setError] = React.useState(false);
26
+ const theme = reactCore.useTheme();
25
27
  const getYear = React.useMemo(() => {
26
28
  if (value) {
27
29
  if (type === "range") {
@@ -73,6 +75,7 @@ const DatePicker = ({
73
75
  callbackAfterValidated?.(false, invalidDateLabel);
74
76
  }
75
77
  },
78
+ disabled,
76
79
  mask: reactCore.Masks.DATE,
77
80
  value: displayValue ?? "",
78
81
  hint: error ? invalidDateLabel : void 0,
@@ -86,13 +89,14 @@ const DatePicker = ({
86
89
  },
87
90
  placeholder,
88
91
  label,
92
+ placeholderTextColor: disabled ? theme.color.secondary.light : void 0,
89
93
  rightComponent: /* @__PURE__ */ React.createElement(
90
- reactCore.Button,
94
+ reactCore.PressableSurface,
91
95
  {
92
96
  effect: "none",
93
- variant: "text",
94
97
  style: { padding: 0 },
95
- onPress
98
+ onPress,
99
+ disabled
96
100
  },
97
101
  /* @__PURE__ */ React.createElement(reactCore.CalendarIcon, { name: "calendar-sharp", type: "ionicon", size: "centi" })
98
102
  )
@@ -110,6 +114,7 @@ const DatePicker = ({
110
114
  value,
111
115
  type,
112
116
  year: getYear,
117
+ disabled,
113
118
  format: "dd/MM/yyyy",
114
119
  month: getMonth,
115
120
  requestShowCalendar: show,
@@ -129,6 +134,7 @@ const DatePicker = ({
129
134
  value,
130
135
  type,
131
136
  year: getYear,
137
+ disabled,
132
138
  format: "dd/MM/yyyy",
133
139
  month: getMonth,
134
140
  requestShowCalendar: show,
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","sources":["../../../../../src/components/molecules/DatePicker/DatePicker.tsx"],"sourcesContent":["import {\n Button,\n Calendar,\n DatePicker as DatePickerCore,\n DatePickerProps,\n DateRange,\n Masks,\n SelectionType,\n CalendarIcon,\n} from '@tecsinapse/react-core';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { Dropdown } from '../../atoms/Dropdown';\nimport { InputMask } from '../../atoms/InputMask';\nimport { parse, isValid } from 'date-fns';\n\nexport type WebDatePickerProps<T extends SelectionType> = Omit<\n DatePickerProps<T>,\n | 'CalendarComponent'\n | 'renderCalendar'\n | 'requestCloseCalendar'\n | 'requestShowCalendar'\n> & {\n callbackAfterValidated?: (valid: boolean, message?: string) => void;\n invalidDateLabel?: string;\n};\n\nexport const DatePicker = <T extends SelectionType>({\n value,\n type,\n locale,\n onChange,\n callbackAfterValidated,\n placeholder,\n label,\n invalidDateLabel = 'Invalid date',\n ...rest\n}: WebDatePickerProps<T>): JSX.Element => {\n const [visible, setVisible] = useState(false);\n const [controlledInput, setControlledInput] = useState<string>();\n const show = useCallback(() => setVisible(true), []);\n const close = useCallback(() => setVisible(false), []);\n const [error, setError] = useState<boolean>(false);\n\n const getYear = useMemo(() => {\n if (value) {\n if (type === 'range') {\n if ((value as DateRange).lowest !== undefined)\n return new Date((value as DateRange).lowest).getFullYear();\n } else {\n return new Date(value as Date).getFullYear();\n }\n }\n return undefined;\n }, [value]);\n\n const getMonth = useMemo(() => {\n if (value) {\n if (type === 'range') {\n if ((value as DateRange).lowest !== undefined)\n return new Date((value as DateRange).lowest).getMonth();\n } else {\n return new Date(value as Date).getMonth();\n }\n }\n return undefined;\n }, [value]);\n\n const checksFullRange = useCallback(() => {\n if (type === 'range' && !(value as DateRange)?.highest)\n onChange?.(undefined);\n }, [value]);\n\n const controlComponent = (onPress, displayValue) => {\n return (\n <InputMask\n onBlur={() => {\n if (\n (controlledInput ?? []).length < 8 &&\n (controlledInput ?? []).length > 0\n ) {\n setError(true);\n callbackAfterValidated?.(false, invalidDateLabel);\n }\n if (controlledInput?.length === 8) {\n const auxData = parse(controlledInput, 'ddMMyyyy', new Date(), {\n locale,\n });\n const isValidDate = isValid(auxData);\n callbackAfterValidated?.(isValidDate, invalidDateLabel);\n\n if (isValidDate && auxData !== value) {\n setError(false);\n onChange?.(auxData as typeof value);\n }\n }\n if (controlledInput?.length === 0) {\n setError(true);\n callbackAfterValidated?.(false, invalidDateLabel);\n }\n }}\n mask={Masks.DATE}\n value={displayValue ?? ''}\n hint={error ? invalidDateLabel : undefined}\n variant={error ? 'error' : 'default'}\n onChange={input => {\n setControlledInput(input);\n if ((error && input.length < 8) || isValid(value)) {\n callbackAfterValidated?.(true);\n setError(false);\n }\n }}\n placeholder={placeholder}\n label={label}\n rightComponent={\n <Button\n effect={'none'}\n variant={'text'}\n style={{ padding: 0 }}\n onPress={onPress}\n >\n <CalendarIcon name=\"calendar-sharp\" type=\"ionicon\" size=\"centi\" />\n </Button>\n }\n />\n );\n };\n\n if (type === 'day') {\n return (\n <DatePickerCore\n {...rest}\n CalendarComponent={Calendar}\n onChange={onChange}\n locale={locale}\n value={value}\n type={type}\n year={getYear}\n format={'dd/MM/yyyy'}\n month={getMonth}\n requestShowCalendar={show}\n requestCloseCalendar={close}\n renderCalendar={calendar => (\n <Dropdown visible={visible} setVisible={setVisible}>\n {calendar}\n </Dropdown>\n )}\n controlComponent={controlComponent}\n />\n );\n } else {\n return (\n <DatePickerCore\n {...rest}\n CalendarComponent={Calendar}\n onChange={onChange}\n locale={locale}\n value={value}\n type={type}\n year={getYear}\n format={'dd/MM/yyyy'}\n month={getMonth}\n requestShowCalendar={show}\n requestCloseCalendar={close}\n placeholder={placeholder}\n label={label}\n renderCalendar={(calendar, handleBlur) => (\n <Dropdown\n visible={visible}\n setVisible={setVisible}\n onClickAway={() => {\n handleBlur?.();\n checksFullRange();\n }}\n >\n {calendar}\n </Dropdown>\n )}\n />\n );\n }\n};\n"],"names":["useState","useCallback","useMemo","parse","isValid","Masks","Button","CalendarIcon","DatePickerCore","Calendar","Dropdown"],"mappings":"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"}
1
+ {"version":3,"file":"DatePicker.js","sources":["../../../../../src/components/molecules/DatePicker/DatePicker.tsx"],"sourcesContent":["import {\n Calendar,\n DatePicker as DatePickerCore,\n DatePickerProps,\n DateRange,\n Masks,\n SelectionType,\n CalendarIcon,\n PressableSurface,\n useTheme,\n} from '@tecsinapse/react-core';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { Dropdown } from '../../atoms/Dropdown';\nimport { InputMask } from '../../atoms/InputMask';\nimport { parse, isValid } from 'date-fns';\n\nexport type WebDatePickerProps<T extends SelectionType> = Omit<\n DatePickerProps<T>,\n | 'CalendarComponent'\n | 'renderCalendar'\n | 'requestCloseCalendar'\n | 'requestShowCalendar'\n> & {\n callbackAfterValidated?: (valid: boolean, message?: string) => void;\n invalidDateLabel?: string;\n};\n\nexport const DatePicker = <T extends SelectionType>({\n value,\n type,\n locale,\n onChange,\n callbackAfterValidated,\n placeholder,\n disabled,\n label,\n invalidDateLabel = 'Invalid date',\n ...rest\n}: WebDatePickerProps<T>): JSX.Element => {\n const [visible, setVisible] = useState(false);\n const [controlledInput, setControlledInput] = useState<string>();\n const show = useCallback(() => setVisible(true), []);\n const close = useCallback(() => setVisible(false), []);\n const [error, setError] = useState<boolean>(false);\n const theme = useTheme();\n\n const getYear = useMemo(() => {\n if (value) {\n if (type === 'range') {\n if ((value as DateRange).lowest !== undefined)\n return new Date((value as DateRange).lowest).getFullYear();\n } else {\n return new Date(value as Date).getFullYear();\n }\n }\n return undefined;\n }, [value]);\n\n const getMonth = useMemo(() => {\n if (value) {\n if (type === 'range') {\n if ((value as DateRange).lowest !== undefined)\n return new Date((value as DateRange).lowest).getMonth();\n } else {\n return new Date(value as Date).getMonth();\n }\n }\n return undefined;\n }, [value]);\n\n const checksFullRange = useCallback(() => {\n if (type === 'range' && !(value as DateRange)?.highest)\n onChange?.(undefined);\n }, [value]);\n\n const controlComponent = (onPress, displayValue) => {\n return (\n <InputMask\n onBlur={() => {\n if (\n (controlledInput ?? []).length < 8 &&\n (controlledInput ?? []).length > 0\n ) {\n setError(true);\n callbackAfterValidated?.(false, invalidDateLabel);\n }\n if (controlledInput?.length === 8) {\n const auxData = parse(controlledInput, 'ddMMyyyy', new Date(), {\n locale,\n });\n const isValidDate = isValid(auxData);\n callbackAfterValidated?.(isValidDate, invalidDateLabel);\n\n if (isValidDate && auxData !== value) {\n setError(false);\n onChange?.(auxData as typeof value);\n }\n }\n if (controlledInput?.length === 0) {\n setError(true);\n callbackAfterValidated?.(false, invalidDateLabel);\n }\n }}\n disabled={disabled}\n mask={Masks.DATE}\n value={displayValue ?? ''}\n hint={error ? invalidDateLabel : undefined}\n variant={error ? 'error' : 'default'}\n onChange={input => {\n setControlledInput(input);\n if ((error && input.length < 8) || isValid(value)) {\n callbackAfterValidated?.(true);\n setError(false);\n }\n }}\n placeholder={placeholder}\n label={label}\n placeholderTextColor={\n disabled ? theme.color.secondary.light : undefined\n }\n rightComponent={\n <PressableSurface\n effect={'none'}\n style={{ padding: 0 }}\n onPress={onPress}\n disabled={disabled}\n >\n <CalendarIcon name=\"calendar-sharp\" type=\"ionicon\" size=\"centi\" />\n </PressableSurface>\n }\n />\n );\n };\n\n if (type === 'day') {\n return (\n <DatePickerCore\n {...rest}\n CalendarComponent={Calendar}\n onChange={onChange}\n locale={locale}\n value={value}\n type={type}\n year={getYear}\n disabled={disabled}\n format={'dd/MM/yyyy'}\n month={getMonth}\n requestShowCalendar={show}\n requestCloseCalendar={close}\n renderCalendar={calendar => (\n <Dropdown visible={visible} setVisible={setVisible}>\n {calendar}\n </Dropdown>\n )}\n controlComponent={controlComponent}\n />\n );\n } else {\n return (\n <DatePickerCore\n {...rest}\n CalendarComponent={Calendar}\n onChange={onChange}\n locale={locale}\n value={value}\n type={type}\n year={getYear}\n disabled={disabled}\n format={'dd/MM/yyyy'}\n month={getMonth}\n requestShowCalendar={show}\n requestCloseCalendar={close}\n placeholder={placeholder}\n label={label}\n renderCalendar={(calendar, handleBlur) => (\n <Dropdown\n visible={visible}\n setVisible={setVisible}\n onClickAway={() => {\n handleBlur?.();\n checksFullRange();\n }}\n >\n {calendar}\n </Dropdown>\n )}\n />\n );\n }\n};\n"],"names":["useState","useCallback","useTheme","useMemo","parse","isValid","Masks","PressableSurface","CalendarIcon","DatePickerCore","Calendar","Dropdown"],"mappings":"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"}
@@ -47,7 +47,7 @@ const OptionsContainer = styled("div")`
47
47
  }
48
48
  ::-webkit-scrollbar-thumb:hover {
49
49
  background-color: ${({ theme }) => theme.color.primary.light};
50
- },
50
+ }
51
51
  `;
52
52
  const SearchBarContainer = styled("div")`
53
53
  padding-left: ${({ theme }) => theme.spacing.mili};
@@ -1 +1 @@
1
- {"version":3,"file":"styled.js","sources":["../../../../../../src/components/molecules/Select/Dropdown/styled.ts"],"sourcesContent":["import styled from '@emotion/styled';\nimport { hex2rgba, StyleProps } from '@tecsinapse/react-core';\nimport { SelectProps } from '../Select';\nimport { css } from '@emotion/react';\n\ntype InjectedProps = Partial<\n StyleProps &\n SelectProps<unknown, 'single' | 'multi'> & { lengthOptions: number }\n>;\n\nconst anchorBottom = ({\n theme,\n anchor,\n}: StyleProps & Omit<InjectedProps, 'theme'>) =>\n anchor === 'bottom' &&\n css`\n margin-top: ${theme.spacing.centi};\n top: 100%;\n `;\n\nconst anchorTop = ({\n theme,\n anchor,\n}: StyleProps & Omit<InjectedProps, 'theme'>) =>\n anchor === 'top' &&\n css`\n margin-bottom: ${theme.spacing.centi};\n bottom: 100%;\n `;\n\nexport const StyledContainerDropdown = styled('div')<InjectedProps>`\n width: 100%;\n background-color: ${({ theme }: StyleProps) =>\n theme.miscellaneous.surfaceColor};\n border-radius: ${({ theme }: StyleProps) => theme.borderRadius.mili};\n box-shadow: 0 2px 8px\n ${({ theme }: StyleProps) => hex2rgba(theme.miscellaneous.shadow, 0.05)};\n position: absolute;\n padding-top: ${({\n theme,\n hideSearchBar,\n }: StyleProps & Partial<SelectProps<unknown, 'single' | 'multi'>>) =>\n !hideSearchBar ? `${theme.spacing.deca}` : '0px'};\n padding-bottom: ${({ theme }: StyleProps) => theme.spacing.mili};\n z-index: ${({ theme }: StyleProps) => theme.zIndex.select};\n ${anchorTop}\n ${anchorBottom}\n`;\n\nexport const OptionsContainer = styled('div')<InjectedProps>`\n max-height: 250px;\n top: 100%;\n overflow-y: ${({ lengthOptions = 0 }: InjectedProps) =>\n lengthOptions > 5 ? 'scroll' : 'hidden'};\n ::-webkit-scrollbar {\n width: 8px;\n }\n ::-webkit-scrollbar-thumb {\n border-radius: ${({ theme }: StyleProps) => theme.borderRadius.centi};\n background-color: ${({ theme }: StyleProps) => theme.color.secondary.light};\n }\n ::-webkit-scrollbar-thumb:hover {\n background-color: ${({ theme }: StyleProps) => theme.color.primary.light};\n },\n`;\n\nexport const SearchBarContainer = styled('div')<Partial<StyleProps>>`\n padding-left: ${({ theme }) => theme.spacing.mili};\n width: 100%;\n`;\n\nexport const PaddedContainer = styled('div')<Partial<StyleProps>>`\n padding: ${({ theme }) => `${theme.spacing.mili} ${theme.spacing.deca}`};\n`;\n\nexport const StyledContainerCheckAll = styled(PaddedContainer)<\n Partial<StyleProps>\n>`\n flex-direction: row;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n cursor: pointer;\n &:hover {\n background-color: ${({ theme }) => theme.color.primary.xlight};\n }\n &:hover span {\n color: ${({ theme }) => theme.color.primary.medium};\n }\n`;\n\nexport const StyledSpan = styled('span')<Partial<StyleProps>>`\n color: ${({ theme }) => theme.font.color.dark};\n padding: ${({ theme }) => `${theme.spacing.mili} 0px`};\n`;\n\nexport const StyledContainerTextLabel = styled('div')<Partial<StyleProps>>`\n padding-left: ${({ theme }) => theme.spacing.mili};\n width: 100%;\n display: flex;\n overflow: hidden;\n`;\n"],"names":["css","hex2rgba"],"mappings":";;;;;;AAUA,MAAM,eAAe,CAAC;AAAA,EACpB,KAAA;AAAA,EACA,MAAA;AACF,CAAA,KACE,WAAW,QACX,IAAAA,SAAA,CAAA;AAAA,gBACgB,EAAA,KAAA,CAAM,QAAQ,KAAK,CAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAIrC,MAAM,YAAY,CAAC;AAAA,EACjB,KAAA;AAAA,EACA,MAAA;AACF,CAAA,KACE,WAAW,KACX,IAAAA,SAAA,CAAA;AAAA,mBACmB,EAAA,KAAA,CAAM,QAAQ,KAAK,CAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAI3B,MAAA,uBAAA,GAA0B,OAAO,KAAK,CAAA,CAAA;AAAA;AAAA,oBAAA,EAE7B,CAAC,EAAE,KAAA,EACrB,KAAA,KAAA,CAAM,cAAc,YAAY,CAAA;AAAA,iBAAA,EACjB,CAAC,EAAE,KAAA,EAAwB,KAAA,KAAA,CAAM,aAAa,IAAI,CAAA;AAAA;AAAA,IAE/D,EAAA,CAAC,EAAE,KAAM,EAAA,KAAkBC,mBAAS,KAAM,CAAA,aAAA,CAAc,MAAQ,EAAA,IAAI,CAAC,CAAA;AAAA;AAAA,eAAA,EAE1D,CAAC;AAAA,EACd,KAAA;AAAA,EACA,aAAA;AACF,CAAA,KACE,CAAC,aAAgB,GAAA,CAAA,EAAG,MAAM,OAAQ,CAAA,IAAI,KAAK,KAAK,CAAA;AAAA,kBAAA,EAChC,CAAC,EAAE,KAAA,EAAwB,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,WAAA,EACpD,CAAC,EAAE,KAAA,EAAwB,KAAA,KAAA,CAAM,OAAO,MAAM,CAAA;AAAA,EAAA,EACvD,SAAS,CAAA;AAAA,EAAA,EACT,YAAY,CAAA;AAAA,EAAA;AAGH,MAAA,gBAAA,GAAmB,OAAO,KAAK,CAAA,CAAA;AAAA;AAAA;AAAA,cAG5B,EAAA,CAAC,EAAE,aAAgB,GAAA,CAAA,OAC/B,aAAgB,GAAA,CAAA,GAAI,WAAW,QAAQ,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAA,EAKtB,CAAC,EAAE,KAAA,EAAwB,KAAA,KAAA,CAAM,aAAa,KAAK,CAAA;AAAA,sBAAA,EAChD,CAAC,EAAE,KAAA,OAAwB,KAAM,CAAA,KAAA,CAAM,UAAU,KAAK,CAAA;AAAA;AAAA;AAAA,sBAAA,EAGtD,CAAC,EAAE,KAAA,OAAwB,KAAM,CAAA,KAAA,CAAM,QAAQ,KAAK,CAAA;AAAA;AAAA,EAAA;AAI/D,MAAA,kBAAA,GAAqB,OAAO,KAAK,CAAA,CAAA;AAAA,gBAAA,EAC5B,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA;AAAA,EAAA;AAItC,MAAA,eAAA,GAAkB,OAAO,KAAK,CAAA,CAAA;AAAA,WAAA,EAC9B,CAAC,EAAE,KAAM,EAAA,KAAM,CAAG,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAI,CAAI,CAAA,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAI,CAAE,CAAA,CAAA;AAAA,EAAA;AAG5D,MAAA,uBAAA,GAA0B,OAAO,eAAe,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAA,EASrC,CAAC,EAAE,KAAA,OAAY,KAAM,CAAA,KAAA,CAAM,QAAQ,MAAM,CAAA;AAAA;AAAA;AAAA,WAAA,EAGpD,CAAC,EAAE,KAAA,OAAY,KAAM,CAAA,KAAA,CAAM,QAAQ,MAAM,CAAA;AAAA;AAAA,EAAA;AAIzC,MAAA,UAAA,GAAa,OAAO,MAAM,CAAA,CAAA;AAAA,SAAA,EAC5B,CAAC,EAAE,KAAA,OAAY,KAAM,CAAA,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,WAClC,EAAA,CAAC,EAAE,KAAM,EAAA,KAAM,GAAG,KAAM,CAAA,OAAA,CAAQ,IAAI,CAAM,IAAA,CAAA,CAAA;AAAA,EAAA;AAG1C,MAAA,wBAAA,GAA2B,OAAO,KAAK,CAAA,CAAA;AAAA,gBAAA,EAClC,CAAC,EAAE,KAAA,EAAY,KAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;"}
1
+ {"version":3,"file":"styled.js","sources":["../../../../../../src/components/molecules/Select/Dropdown/styled.ts"],"sourcesContent":["import styled from '@emotion/styled';\nimport { hex2rgba, StyleProps } from '@tecsinapse/react-core';\nimport { SelectProps } from '../Select';\nimport { css } from '@emotion/react';\n\ntype InjectedProps = Partial<\n StyleProps &\n SelectProps<unknown, 'single' | 'multi'> & { lengthOptions: number }\n>;\n\nconst anchorBottom = ({\n theme,\n anchor,\n}: StyleProps & Omit<InjectedProps, 'theme'>) =>\n anchor === 'bottom' &&\n css`\n margin-top: ${theme.spacing.centi};\n top: 100%;\n `;\n\nconst anchorTop = ({\n theme,\n anchor,\n}: StyleProps & Omit<InjectedProps, 'theme'>) =>\n anchor === 'top' &&\n css`\n margin-bottom: ${theme.spacing.centi};\n bottom: 100%;\n `;\n\nexport const StyledContainerDropdown = styled('div')<InjectedProps>`\n width: 100%;\n background-color: ${({ theme }: StyleProps) =>\n theme.miscellaneous.surfaceColor};\n border-radius: ${({ theme }: StyleProps) => theme.borderRadius.mili};\n box-shadow: 0 2px 8px\n ${({ theme }: StyleProps) => hex2rgba(theme.miscellaneous.shadow, 0.05)};\n position: absolute;\n padding-top: ${({\n theme,\n hideSearchBar,\n }: StyleProps & Partial<SelectProps<unknown, 'single' | 'multi'>>) =>\n !hideSearchBar ? `${theme.spacing.deca}` : '0px'};\n padding-bottom: ${({ theme }: StyleProps) => theme.spacing.mili};\n z-index: ${({ theme }: StyleProps) => theme.zIndex.select};\n ${anchorTop}\n ${anchorBottom}\n`;\n\nexport const OptionsContainer = styled('div')<InjectedProps>`\n max-height: 250px;\n top: 100%;\n overflow-y: ${({ lengthOptions = 0 }: InjectedProps) =>\n lengthOptions > 5 ? 'scroll' : 'hidden'};\n ::-webkit-scrollbar {\n width: 8px;\n }\n ::-webkit-scrollbar-thumb {\n border-radius: ${({ theme }: StyleProps) => theme.borderRadius.centi};\n background-color: ${({ theme }: StyleProps) => theme.color.secondary.light};\n }\n ::-webkit-scrollbar-thumb:hover {\n background-color: ${({ theme }: StyleProps) => theme.color.primary.light};\n }\n`;\n\nexport const SearchBarContainer = styled('div')<Partial<StyleProps>>`\n padding-left: ${({ theme }) => theme.spacing.mili};\n width: 100%;\n`;\n\nexport const PaddedContainer = styled('div')<Partial<StyleProps>>`\n padding: ${({ theme }) => `${theme.spacing.mili} ${theme.spacing.deca}`};\n`;\n\nexport const StyledContainerCheckAll = styled(PaddedContainer)<\n Partial<StyleProps>\n>`\n flex-direction: row;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n cursor: pointer;\n &:hover {\n background-color: ${({ theme }) => theme.color.primary.xlight};\n }\n &:hover span {\n color: ${({ theme }) => theme.color.primary.medium};\n }\n`;\n\nexport const StyledSpan = styled('span')<Partial<StyleProps>>`\n color: ${({ theme }) => theme.font.color.dark};\n padding: ${({ theme }) => `${theme.spacing.mili} 0px`};\n`;\n\nexport const StyledContainerTextLabel = styled('div')<Partial<StyleProps>>`\n padding-left: ${({ theme }) => theme.spacing.mili};\n width: 100%;\n display: flex;\n overflow: hidden;\n`;\n"],"names":["css","hex2rgba"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { TextProps } from '@tecsinapse/react-core';
2
2
  import React from 'react';
3
+ import { MultiLabels } from './types';
3
4
  export interface SelectProps<Data, Type extends 'single' | 'multi'> extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {
4
5
  options: ((searchInput?: string) => Promise<Data[]>) | Data[];
5
6
  onSelect: (option: Type extends 'single' ? Data | undefined : Data[]) => never | void;
@@ -16,6 +17,7 @@ export interface SelectProps<Data, Type extends 'single' | 'multi'> extends Omit
16
17
  label?: string;
17
18
  anchor?: 'top' | 'bottom';
18
19
  displayTextProps?: TextProps;
20
+ multiLabels?: MultiLabels;
19
21
  }
20
- declare const Select: <Data, Type extends "single" | "multi">({ value, options, keyExtractor, onSelect, type, labelExtractor, placeholder, onSearch, searchBarPlaceholder, hideSearchBar, label, disabled, anchor, displayTextProps, selectAllLabel, ...rest }: SelectProps<Data, Type>) => JSX.Element;
22
+ declare const Select: <Data, Type extends "single" | "multi">({ value, options, keyExtractor, onSelect, type, labelExtractor, placeholder, onSearch, searchBarPlaceholder, hideSearchBar, label, disabled, anchor, displayTextProps, selectAllLabel, multiLabels, ...rest }: SelectProps<Data, Type>) => JSX.Element;
21
23
  export default Select;
@@ -18,13 +18,14 @@ const Select = ({
18
18
  labelExtractor,
19
19
  placeholder,
20
20
  onSearch,
21
- searchBarPlaceholder = "Busque a op\xE7\xE3o desejada",
21
+ searchBarPlaceholder = "Search for option",
22
22
  hideSearchBar = true,
23
23
  label,
24
24
  disabled = false,
25
25
  anchor = "bottom",
26
26
  displayTextProps,
27
- selectAllLabel = "Selecionar todos",
27
+ selectAllLabel = "Select all",
28
+ multiLabels,
28
29
  ...rest
29
30
  }) => {
30
31
  const [dropDownVisible, setDropDownVisible] = React.useState(false);
@@ -32,6 +33,7 @@ const Select = ({
32
33
  const refDropDown = React.useRef(null);
33
34
  const transitionRef = React.useRef(null);
34
35
  useClickAwayListener.useClickAwayListener(refDropDown, setDropDownVisible);
36
+ const instanceid = React.useId();
35
37
  React.useEffect(() => {
36
38
  if (typeof options !== "function") {
37
39
  setSelectOptions(options);
@@ -47,7 +49,8 @@ const Select = ({
47
49
  selectOptions,
48
50
  _placeholder,
49
51
  keyExtractor,
50
- labelExtractor
52
+ labelExtractor,
53
+ multiLabels
51
54
  );
52
55
  const handleLazyFocus = React.useCallback(async () => {
53
56
  if (!dropDownVisible && typeof options === "function") {
@@ -108,25 +111,34 @@ const Select = ({
108
111
  rightComponent: styled.RightComponent
109
112
  },
110
113
  /* @__PURE__ */ React.createElement(reactCore.Text, { ...displayTextProps, fontWeight: "bold" }, displayValue)
111
- )), /* @__PURE__ */ React.createElement(reactTransitionGroup.Transition, { in: dropDownVisible, timeout: 300, nodeRef: transitionRef }, (state) => /* @__PURE__ */ React.createElement(
112
- Dropdown,
114
+ )), /* @__PURE__ */ React.createElement(
115
+ reactTransitionGroup.Transition,
113
116
  {
114
- ref: transitionRef,
115
- options: selectOptions ?? [],
116
- onSelect,
117
- value,
118
- type,
119
- keyExtractor,
120
- labelExtractor,
121
- hideSearchBar,
122
- searchBarPlaceholder,
123
- onSearch: handleOnSearch,
124
- style: { ...animations.defaultStyles, ...animations.transition[anchor][state] },
125
- setDropDownVisible,
126
- anchor,
127
- selectAllLabel
128
- }
129
- )));
117
+ in: dropDownVisible,
118
+ timeout: 300,
119
+ nodeRef: transitionRef,
120
+ key: instanceid
121
+ },
122
+ (state) => /* @__PURE__ */ React.createElement(
123
+ Dropdown,
124
+ {
125
+ ref: transitionRef,
126
+ options: selectOptions ?? [],
127
+ onSelect,
128
+ value,
129
+ type,
130
+ keyExtractor,
131
+ labelExtractor,
132
+ hideSearchBar,
133
+ searchBarPlaceholder,
134
+ onSearch: handleOnSearch,
135
+ style: { ...animations.defaultStyles, ...animations.transition[anchor][state] },
136
+ setDropDownVisible,
137
+ anchor,
138
+ selectAllLabel
139
+ }
140
+ )
141
+ ));
130
142
  };
131
143
 
132
144
  module.exports = Select;
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../../../../src/components/molecules/Select/Select.tsx"],"sourcesContent":["import {\n PressableInputContainer,\n Text,\n TextProps,\n} from '@tecsinapse/react-core';\nimport React, { useEffect, useState } from 'react';\nimport { Transition } from 'react-transition-group';\nimport { useClickAwayListener } from '../../../hooks';\nimport { defaultStyles, transition } from './animations';\nimport { Dropdown } from './Dropdown';\nimport { getDisplayValue } from './functions';\nimport {\n RightComponent,\n StyledContainer,\n StyledInputContainer,\n} from './styled';\n\nexport interface SelectProps<Data, Type extends 'single' | 'multi'>\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {\n options: ((searchInput?: string) => Promise<Data[]>) | Data[];\n onSelect: (\n option: Type extends 'single' ? Data | undefined : Data[]\n ) => never | void;\n value: Type extends 'single' ? Data | undefined : Data[];\n type: Type;\n keyExtractor: (t: Data, index?: number) => string;\n labelExtractor: (t: Data) => string;\n placeholder?: string;\n onSearch?:\n | ((searchArg: string) => void)\n | ((searchInput?: string) => Promise<Data[]>)\n | never;\n searchBarPlaceholder?: string;\n hideSearchBar?: boolean;\n selectAllLabel?: string;\n disabled?: boolean;\n label?: string;\n anchor?: 'top' | 'bottom';\n displayTextProps?: TextProps;\n}\n\n/** NOTE: For better performance, you should memoize options and handlers */\nconst Select = <Data, Type extends 'single' | 'multi'>({\n value,\n options,\n keyExtractor,\n onSelect,\n type,\n labelExtractor,\n placeholder,\n onSearch,\n searchBarPlaceholder = 'Busque a opção desejada',\n hideSearchBar = true,\n label,\n disabled = false,\n anchor = 'bottom',\n displayTextProps,\n selectAllLabel = 'Selecionar todos',\n ...rest\n}: SelectProps<Data, Type>): JSX.Element => {\n const [dropDownVisible, setDropDownVisible] = React.useState<boolean>(false);\n const [selectOptions, setSelectOptions] = useState<Data[]>([]);\n const refDropDown = React.useRef(null);\n const transitionRef = React.useRef(null);\n useClickAwayListener(refDropDown, setDropDownVisible);\n\n useEffect(() => {\n if (typeof options !== 'function') {\n setSelectOptions(options);\n }\n }, [options]);\n\n // TODO: Add Skeleton to modal height when loading is true\n\n const onlyLabel = label && !placeholder;\n const hasValue =\n type === 'single' ? !!value : ((value || []) as []).length > 0;\n const _placeholder = onlyLabel ? label : placeholder;\n const _label = hasValue ? label : undefined;\n\n const displayValue = getDisplayValue<Data>(\n type,\n value,\n selectOptions,\n _placeholder,\n keyExtractor,\n labelExtractor\n );\n\n const handleLazyFocus = React.useCallback(async () => {\n if (!dropDownVisible && typeof options === 'function') {\n try {\n const result = await options();\n if (result) {\n setSelectOptions(result ?? []);\n }\n } catch (e) {\n // TODO: Catch error\n }\n }\n }, [options, setSelectOptions, dropDownVisible]);\n\n const handleOnSearch = React.useCallback(\n async (searchInput: string | undefined) => {\n if (searchInput !== undefined && onSearch && dropDownVisible) {\n try {\n //TODO: Remove code duplicated below (Select in react-native-kit)\n const result = await onSearch(searchInput);\n if (result) {\n if (type === 'single') {\n if (\n value &&\n !result.find(\n v => keyExtractor(value as Data) === keyExtractor(v)\n )\n ) {\n setSelectOptions([value as Data, ...result]);\n } else setSelectOptions(result);\n } else {\n if ((value as Data[]).length > 0) {\n const selectedValues =\n (value as Data[]).filter(\n v =>\n !result.find(\n current =>\n keyExtractor(v as Data) === keyExtractor(current)\n )\n ) || [];\n setSelectOptions([...selectedValues, ...result]);\n } else {\n setSelectOptions(result);\n }\n }\n }\n } catch (e) {\n // TODO: Catch error\n }\n }\n },\n [onSearch, value, keyExtractor, dropDownVisible, setSelectOptions]\n );\n\n const handlePressInput = async () => {\n await handleLazyFocus();\n };\n\n const onPress = React.useCallback(\n () => setDropDownVisible(prev => !prev),\n [setDropDownVisible]\n );\n //TODO: when component is wrapper by GridITem and Text of label has prop \"numberOfLines={1}\", this component incresing witht based on options selects, breaking layout of Grid, we must fix this problem.\n return (\n <StyledContainer ref={refDropDown} {...rest}>\n <StyledInputContainer onFocus={handlePressInput}>\n <PressableInputContainer\n label={_label}\n onPress={onPress}\n disabled={disabled}\n rightComponent={RightComponent}\n >\n <Text {...displayTextProps} fontWeight={'bold'}>\n {displayValue}\n </Text>\n </PressableInputContainer>\n </StyledInputContainer>\n <Transition in={dropDownVisible} timeout={300} nodeRef={transitionRef}>\n {state => (\n <Dropdown\n ref={transitionRef}\n options={selectOptions ?? []}\n onSelect={onSelect}\n value={value}\n type={type}\n keyExtractor={keyExtractor}\n labelExtractor={labelExtractor}\n hideSearchBar={hideSearchBar}\n searchBarPlaceholder={searchBarPlaceholder}\n onSearch={handleOnSearch}\n style={{ ...defaultStyles, ...transition[anchor][state] }}\n setDropDownVisible={setDropDownVisible}\n anchor={anchor}\n selectAllLabel={selectAllLabel}\n />\n )}\n </Transition>\n </StyledContainer>\n );\n};\n\nexport default Select;\n"],"names":["useState","useClickAwayListener","useEffect","getDisplayValue","StyledContainer","StyledInputContainer","PressableInputContainer","RightComponent","Text","Transition","defaultStyles","transition"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","sources":["../../../../../src/components/molecules/Select/Select.tsx"],"sourcesContent":["import {\n PressableInputContainer,\n Text,\n TextProps,\n} from '@tecsinapse/react-core';\nimport React, { useEffect, useId, useState } from 'react';\nimport { Transition } from 'react-transition-group';\nimport { useClickAwayListener } from '../../../hooks';\nimport { defaultStyles, transition } from './animations';\nimport { Dropdown } from './Dropdown';\nimport { getDisplayValue } from './functions';\nimport {\n RightComponent,\n StyledContainer,\n StyledInputContainer,\n} from './styled';\nimport { MultiLabels } from './types';\n\nexport interface SelectProps<Data, Type extends 'single' | 'multi'>\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {\n options: ((searchInput?: string) => Promise<Data[]>) | Data[];\n onSelect: (\n option: Type extends 'single' ? Data | undefined : Data[]\n ) => never | void;\n value: Type extends 'single' ? Data | undefined : Data[];\n type: Type;\n keyExtractor: (t: Data, index?: number) => string;\n labelExtractor: (t: Data) => string;\n placeholder?: string;\n onSearch?:\n | ((searchArg: string) => void)\n | ((searchInput?: string) => Promise<Data[]>)\n | never;\n searchBarPlaceholder?: string;\n hideSearchBar?: boolean;\n selectAllLabel?: string;\n disabled?: boolean;\n label?: string;\n anchor?: 'top' | 'bottom';\n displayTextProps?: TextProps;\n multiLabels?: MultiLabels;\n}\n\n/** NOTE: For better performance, you should memoize options and handlers */\nconst Select = <Data, Type extends 'single' | 'multi'>({\n value,\n options,\n keyExtractor,\n onSelect,\n type,\n labelExtractor,\n placeholder,\n onSearch,\n searchBarPlaceholder = 'Search for option',\n hideSearchBar = true,\n label,\n disabled = false,\n anchor = 'bottom',\n displayTextProps,\n selectAllLabel = 'Select all',\n multiLabels,\n ...rest\n}: SelectProps<Data, Type>): JSX.Element => {\n const [dropDownVisible, setDropDownVisible] = React.useState<boolean>(false);\n const [selectOptions, setSelectOptions] = useState<Data[]>([]);\n const refDropDown = React.useRef(null);\n const transitionRef = React.useRef(null);\n useClickAwayListener(refDropDown, setDropDownVisible);\n const instanceid = useId();\n\n useEffect(() => {\n if (typeof options !== 'function') {\n setSelectOptions(options);\n }\n }, [options]);\n\n // TODO: Add Skeleton to modal height when loading is true\n\n const onlyLabel = label && !placeholder;\n const hasValue =\n type === 'single' ? !!value : ((value || []) as []).length > 0;\n const _placeholder = onlyLabel ? label : placeholder;\n const _label = hasValue ? label : undefined;\n\n const displayValue = getDisplayValue<Data>(\n type,\n value,\n selectOptions,\n _placeholder,\n keyExtractor,\n labelExtractor,\n multiLabels\n );\n\n const handleLazyFocus = React.useCallback(async () => {\n if (!dropDownVisible && typeof options === 'function') {\n try {\n const result = await options();\n if (result) {\n setSelectOptions(result ?? []);\n }\n } catch (e) {\n // TODO: Catch error\n }\n }\n }, [options, setSelectOptions, dropDownVisible]);\n\n const handleOnSearch = React.useCallback(\n async (searchInput: string | undefined) => {\n if (searchInput !== undefined && onSearch && dropDownVisible) {\n try {\n //TODO: Remove code duplicated below (Select in react-native-kit)\n const result = await onSearch(searchInput);\n if (result) {\n if (type === 'single') {\n if (\n value &&\n !result.find(\n v => keyExtractor(value as Data) === keyExtractor(v)\n )\n ) {\n setSelectOptions([value as Data, ...result]);\n } else setSelectOptions(result);\n } else {\n if ((value as Data[]).length > 0) {\n const selectedValues =\n (value as Data[]).filter(\n v =>\n !result.find(\n current =>\n keyExtractor(v as Data) === keyExtractor(current)\n )\n ) || [];\n setSelectOptions([...selectedValues, ...result]);\n } else {\n setSelectOptions(result);\n }\n }\n }\n } catch (e) {\n // TODO: Catch error\n }\n }\n },\n [onSearch, value, keyExtractor, dropDownVisible, setSelectOptions]\n );\n\n const handlePressInput = async () => {\n await handleLazyFocus();\n };\n\n const onPress = React.useCallback(\n () => setDropDownVisible(prev => !prev),\n [setDropDownVisible]\n );\n\n //TODO: when component is wrapper by GridITem and Text of label has prop \"numberOfLines={1}\", this component incresing witht based on options selects, breaking layout of Grid, we must fix this problem.\n return (\n <StyledContainer ref={refDropDown} {...rest}>\n <StyledInputContainer onFocus={handlePressInput}>\n <PressableInputContainer\n label={_label}\n onPress={onPress}\n disabled={disabled}\n rightComponent={RightComponent}\n >\n <Text {...displayTextProps} fontWeight={'bold'}>\n {displayValue}\n </Text>\n </PressableInputContainer>\n </StyledInputContainer>\n <Transition\n in={dropDownVisible}\n timeout={300}\n nodeRef={transitionRef}\n key={instanceid}\n >\n {state => (\n <Dropdown\n ref={transitionRef}\n options={selectOptions ?? []}\n onSelect={onSelect}\n value={value}\n type={type}\n keyExtractor={keyExtractor}\n labelExtractor={labelExtractor}\n hideSearchBar={hideSearchBar}\n searchBarPlaceholder={searchBarPlaceholder}\n onSearch={handleOnSearch}\n style={{ ...defaultStyles, ...transition[anchor][state] }}\n setDropDownVisible={setDropDownVisible}\n anchor={anchor}\n selectAllLabel={selectAllLabel}\n />\n )}\n </Transition>\n </StyledContainer>\n );\n};\n\nexport default Select;\n"],"names":["useState","useClickAwayListener","useId","useEffect","getDisplayValue","StyledContainer","StyledInputContainer","PressableInputContainer","RightComponent","Text","Transition","defaultStyles","transition"],"mappings":"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"}
@@ -1 +1,2 @@
1
- export declare const getDisplayValue: <Data>(type: 'multi' | 'single', value: Data | Data[] | undefined, options: Data[], placeholder: string | undefined, keyExtractor: (option: Data, idx?: number) => string, labelExtractor: (option: Data) => string) => string | undefined;
1
+ import { MultiLabels } from './types';
2
+ export declare const getDisplayValue: <Data>(type: 'multi' | 'single', value: Data | Data[] | undefined, options: Data[], placeholder: string | undefined, keyExtractor: (option: Data, idx?: number) => string, labelExtractor: (option: Data) => string, multiLabels?: MultiLabels) => string | undefined;
@@ -1,19 +1,41 @@
1
1
  'use strict';
2
2
 
3
- const getDisplayValue = (type, value, options, placeholder, keyExtractor, labelExtractor) => {
3
+ const getMultiLabel = (value, options, multiLabels) => {
4
+ if (value.length > 0 && value.length === options.length) {
5
+ return multiLabels?.allSelected ?? "All items selected";
6
+ }
7
+ return multiLabels?.selection ? multiLabels?.selection?.(value.length) : `${value.length} selected items`;
8
+ };
9
+ const getSingleLabel = (value, options, keyExtractor, placeholder, labelExtractor) => {
10
+ const selectedOption = options.find(
11
+ (option, index) => keyExtractor(option, index) == keyExtractor(value, index)
12
+ );
13
+ return selectedOption ? labelExtractor(selectedOption) : placeholder;
14
+ };
15
+ const getDisplayValue = (type, value, options, placeholder, keyExtractor, labelExtractor, multiLabels) => {
4
16
  if (type === "multi") {
5
- if (value.length === 0)
17
+ if (value === void 0 || value.length === 0)
6
18
  return placeholder;
7
- else {
8
- return value.reduce((acc, option) => acc + labelExtractor(option) + ", ", "").slice(0, -2);
19
+ if (value.length === 1) {
20
+ return getSingleLabel(
21
+ value?.[0],
22
+ options,
23
+ keyExtractor,
24
+ placeholder,
25
+ labelExtractor
26
+ );
9
27
  }
28
+ return getMultiLabel(value, options, multiLabels);
10
29
  } else {
11
30
  if (value === void 0)
12
31
  return placeholder;
13
- const selectedOption = options.find(
14
- (option, index) => keyExtractor(option, index) == keyExtractor(value, index)
32
+ return getSingleLabel(
33
+ value,
34
+ options,
35
+ keyExtractor,
36
+ placeholder,
37
+ labelExtractor
15
38
  );
16
- return selectedOption ? labelExtractor(selectedOption) : placeholder;
17
39
  }
18
40
  };
19
41
 
@@ -1 +1 @@
1
- {"version":3,"file":"functions.js","sources":["../../../../../src/components/molecules/Select/functions.ts"],"sourcesContent":["export const getDisplayValue = <Data>(\n type: 'multi' | 'single',\n value: Data | Data[] | undefined,\n options: Data[],\n placeholder: string | undefined,\n keyExtractor: (option: Data, idx?: number) => string,\n labelExtractor: (option: Data) => string\n): string | undefined => {\n if (type === 'multi') {\n if ((value as Data[]).length === 0) return placeholder;\n else {\n return (value as Data[])\n .reduce((acc, option) => acc + labelExtractor(option) + ', ', '')\n .slice(0, -2);\n }\n } else {\n if (value === undefined) return placeholder;\n const selectedOption = options.find(\n (option, index) =>\n keyExtractor(option, index) == keyExtractor(value as Data, index)\n );\n return selectedOption ? labelExtractor(selectedOption) : placeholder;\n }\n};\n"],"names":[],"mappings":";;AAAO,MAAM,kBAAkB,CAC7B,IAAA,EACA,OACA,OACA,EAAA,WAAA,EACA,cACA,cACuB,KAAA;AACvB,EAAA,IAAI,SAAS,OAAS,EAAA;AACpB,IAAA,IAAK,MAAiB,MAAW,KAAA,CAAA;AAAG,MAAO,OAAA,WAAA,CAAA;AAAA,SACtC;AACH,MAAA,OAAQ,KACL,CAAA,MAAA,CAAO,CAAC,GAAA,EAAK,WAAW,GAAM,GAAA,cAAA,CAAe,MAAM,CAAA,GAAI,IAAM,EAAA,EAAE,CAC/D,CAAA,KAAA,CAAM,GAAG,CAAE,CAAA,CAAA,CAAA;AAAA,KAChB;AAAA,GACK,MAAA;AACL,IAAA,IAAI,KAAU,KAAA,KAAA,CAAA;AAAW,MAAO,OAAA,WAAA,CAAA;AAChC,IAAA,MAAM,iBAAiB,OAAQ,CAAA,IAAA;AAAA,MAC7B,CAAC,QAAQ,KACP,KAAA,YAAA,CAAa,QAAQ,KAAK,CAAA,IAAK,YAAa,CAAA,KAAA,EAAe,KAAK,CAAA;AAAA,KACpE,CAAA;AACA,IAAO,OAAA,cAAA,GAAiB,cAAe,CAAA,cAAc,CAAI,GAAA,WAAA,CAAA;AAAA,GAC3D;AACF;;;;"}
1
+ {"version":3,"file":"functions.js","sources":["../../../../../src/components/molecules/Select/functions.ts"],"sourcesContent":["import { MultiLabels } from './types';\n\nconst getMultiLabel = <Data>(\n value: Data | Data[] | undefined,\n options: Data[],\n multiLabels?: MultiLabels\n) => {\n if (\n (value as Data[]).length > 0 &&\n (value as Data[]).length === options.length\n ) {\n return multiLabels?.allSelected ?? 'All items selected';\n }\n return multiLabels?.selection\n ? multiLabels?.selection?.((value as Data[]).length)\n : `${(value as Data[]).length} selected items`;\n};\n\nconst getSingleLabel = <Data>(\n value: Data | undefined,\n options: Data[],\n keyExtractor: (option: Data, idx?: number) => string,\n placeholder: string | undefined,\n labelExtractor: (option: Data) => string\n) => {\n const selectedOption = options.find(\n (option, index) =>\n keyExtractor(option, index) == keyExtractor(value as Data, index)\n );\n return selectedOption ? labelExtractor(selectedOption) : placeholder;\n};\n\nexport const getDisplayValue = <Data>(\n type: 'multi' | 'single',\n value: Data | Data[] | undefined,\n options: Data[],\n placeholder: string | undefined,\n keyExtractor: (option: Data, idx?: number) => string,\n labelExtractor: (option: Data) => string,\n multiLabels?: MultiLabels\n): string | undefined => {\n if (type === 'multi') {\n if (value === undefined || (value as Data[]).length === 0)\n return placeholder;\n if ((value as Data[]).length === 1) {\n return getSingleLabel(\n value?.[0],\n options,\n keyExtractor,\n placeholder,\n labelExtractor\n );\n }\n return getMultiLabel(value, options, multiLabels);\n } else {\n if (value === undefined) return placeholder;\n return getSingleLabel(\n value as Data,\n options,\n keyExtractor,\n placeholder,\n labelExtractor\n );\n }\n};\n"],"names":[],"mappings":";;AAEA,MAAM,aAAgB,GAAA,CACpB,KACA,EAAA,OAAA,EACA,WACG,KAAA;AACH,EAAA,IACG,MAAiB,MAAS,GAAA,CAAA,IAC1B,KAAiB,CAAA,MAAA,KAAW,QAAQ,MACrC,EAAA;AACA,IAAA,OAAO,aAAa,WAAe,IAAA,oBAAA,CAAA;AAAA,GACrC;AACA,EAAO,OAAA,WAAA,EAAa,YAChB,WAAa,EAAA,SAAA,GAAa,MAAiB,MAAM,CAAA,GACjD,CAAI,EAAA,KAAA,CAAiB,MAAM,CAAA,eAAA,CAAA,CAAA;AACjC,CAAA,CAAA;AAEA,MAAM,iBAAiB,CACrB,KAAA,EACA,OACA,EAAA,YAAA,EACA,aACA,cACG,KAAA;AACH,EAAA,MAAM,iBAAiB,OAAQ,CAAA,IAAA;AAAA,IAC7B,CAAC,QAAQ,KACP,KAAA,YAAA,CAAa,QAAQ,KAAK,CAAA,IAAK,YAAa,CAAA,KAAA,EAAe,KAAK,CAAA;AAAA,GACpE,CAAA;AACA,EAAO,OAAA,cAAA,GAAiB,cAAe,CAAA,cAAc,CAAI,GAAA,WAAA,CAAA;AAC3D,CAAA,CAAA;AAEa,MAAA,eAAA,GAAkB,CAC7B,IACA,EAAA,KAAA,EACA,SACA,WACA,EAAA,YAAA,EACA,gBACA,WACuB,KAAA;AACvB,EAAA,IAAI,SAAS,OAAS,EAAA;AACpB,IAAI,IAAA,KAAA,KAAU,KAAc,CAAA,IAAA,KAAA,CAAiB,MAAW,KAAA,CAAA;AACtD,MAAO,OAAA,WAAA,CAAA;AACT,IAAK,IAAA,KAAA,CAAiB,WAAW,CAAG,EAAA;AAClC,MAAO,OAAA,cAAA;AAAA,QACL,QAAQ,CAAC,CAAA;AAAA,QACT,OAAA;AAAA,QACA,YAAA;AAAA,QACA,WAAA;AAAA,QACA,cAAA;AAAA,OACF,CAAA;AAAA,KACF;AACA,IAAO,OAAA,aAAA,CAAc,KAAO,EAAA,OAAA,EAAS,WAAW,CAAA,CAAA;AAAA,GAC3C,MAAA;AACL,IAAA,IAAI,KAAU,KAAA,KAAA,CAAA;AAAW,MAAO,OAAA,WAAA,CAAA;AAChC,IAAO,OAAA,cAAA;AAAA,MACL,KAAA;AAAA,MACA,OAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,KACF,CAAA;AAAA,GACF;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/Select/styled.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { Icon, StyleProps } from '@tecsinapse/react-core';\nimport React from 'react';\n\nexport const StyledContainer = styled('div')<Partial<StyleProps>>`\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n width: 100%;\n position: relative;\n`;\n\nexport const StyledInputContainer = styled('div')<Partial<StyleProps>>`\n width: 100%;\n`;\n\nexport const RightComponent = (\n <Icon\n name=\"chevron-down\"\n type=\"material-community\"\n size=\"centi\"\n style={{ marginRight: 12 }}\n />\n);\n"],"names":["Icon"],"mappings":";;;;;;AAIa,MAAA,eAAA,GAAkB,OAAO,KAAK,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAS9B,MAAA,oBAAA,GAAuB,OAAO,KAAK,CAAA,CAAA;AAAA;AAAA,EAAA;AAIzC,MAAM,cACX,mBAAA,KAAA,CAAA,aAAA;AAAA,EAACA,cAAA;AAAA,EAAA;AAAA,IACC,IAAK,EAAA,cAAA;AAAA,IACL,IAAK,EAAA,oBAAA;AAAA,IACL,IAAK,EAAA,OAAA;AAAA,IACL,KAAA,EAAO,EAAE,WAAA,EAAa,EAAG,EAAA;AAAA,GAAA;AAC3B;;;;;;"}
1
+ {"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/Select/styled.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { Icon, StyleProps, Text } from '@tecsinapse/react-core';\nimport React from 'react';\n\nexport const StyledContainer = styled('div')<Partial<StyleProps>>`\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n width: 100%;\n position: relative;\n`;\n\nexport const StyledInputContainer = styled('div')<Partial<StyleProps>>`\n width: 100%;\n`;\n\nexport const RightComponent = (\n <Icon\n name=\"chevron-down\"\n type=\"material-community\"\n size=\"centi\"\n style={{ marginRight: 12 }}\n />\n);\n"],"names":["Icon"],"mappings":";;;;;;AAIa,MAAA,eAAA,GAAkB,OAAO,KAAK,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAS9B,MAAA,oBAAA,GAAuB,OAAO,KAAK,CAAA,CAAA;AAAA;AAAA,EAAA;AAIzC,MAAM,cACX,mBAAA,KAAA,CAAA,aAAA;AAAA,EAACA,cAAA;AAAA,EAAA;AAAA,IACC,IAAK,EAAA,cAAA;AAAA,IACL,IAAK,EAAA,oBAAA;AAAA,IACL,IAAK,EAAA,OAAA;AAAA,IACL,KAAA,EAAO,EAAE,WAAA,EAAa,EAAG,EAAA;AAAA,GAAA;AAC3B;;;;;;"}
@@ -0,0 +1,4 @@
1
+ export type MultiLabels = {
2
+ allSelected?: string;
3
+ selection?: (items: number) => string;
4
+ };
@@ -4,4 +4,4 @@ export type WebDatePickerProps<T extends SelectionType> = Omit<DatePickerProps<T
4
4
  callbackAfterValidated?: (valid: boolean, message?: string) => void;
5
5
  invalidDateLabel?: string;
6
6
  };
7
- export declare const DatePicker: <T extends SelectionType>({ value, type, locale, onChange, callbackAfterValidated, placeholder, label, invalidDateLabel, ...rest }: WebDatePickerProps<T>) => JSX.Element;
7
+ export declare const DatePicker: <T extends SelectionType>({ value, type, locale, onChange, callbackAfterValidated, placeholder, disabled, label, invalidDateLabel, ...rest }: WebDatePickerProps<T>) => JSX.Element;
@@ -1,4 +1,4 @@
1
- import { DatePicker as DatePicker$1, Calendar, Masks, Button, CalendarIcon } from '@tecsinapse/react-core';
1
+ import { useTheme, DatePicker as DatePicker$1, Calendar, Masks, PressableSurface, CalendarIcon } from '@tecsinapse/react-core';
2
2
  import React, { useState, useCallback, useMemo } from 'react';
3
3
  import { Dropdown } from '../../atoms/Dropdown/index.js';
4
4
  import InputMask from '../../atoms/InputMask/InputMask.js';
@@ -11,6 +11,7 @@ const DatePicker = ({
11
11
  onChange,
12
12
  callbackAfterValidated,
13
13
  placeholder,
14
+ disabled,
14
15
  label,
15
16
  invalidDateLabel = "Invalid date",
16
17
  ...rest
@@ -20,6 +21,7 @@ const DatePicker = ({
20
21
  const show = useCallback(() => setVisible(true), []);
21
22
  const close = useCallback(() => setVisible(false), []);
22
23
  const [error, setError] = useState(false);
24
+ const theme = useTheme();
23
25
  const getYear = useMemo(() => {
24
26
  if (value) {
25
27
  if (type === "range") {
@@ -71,6 +73,7 @@ const DatePicker = ({
71
73
  callbackAfterValidated?.(false, invalidDateLabel);
72
74
  }
73
75
  },
76
+ disabled,
74
77
  mask: Masks.DATE,
75
78
  value: displayValue ?? "",
76
79
  hint: error ? invalidDateLabel : void 0,
@@ -84,13 +87,14 @@ const DatePicker = ({
84
87
  },
85
88
  placeholder,
86
89
  label,
90
+ placeholderTextColor: disabled ? theme.color.secondary.light : void 0,
87
91
  rightComponent: /* @__PURE__ */ React.createElement(
88
- Button,
92
+ PressableSurface,
89
93
  {
90
94
  effect: "none",
91
- variant: "text",
92
95
  style: { padding: 0 },
93
- onPress
96
+ onPress,
97
+ disabled
94
98
  },
95
99
  /* @__PURE__ */ React.createElement(CalendarIcon, { name: "calendar-sharp", type: "ionicon", size: "centi" })
96
100
  )
@@ -108,6 +112,7 @@ const DatePicker = ({
108
112
  value,
109
113
  type,
110
114
  year: getYear,
115
+ disabled,
111
116
  format: "dd/MM/yyyy",
112
117
  month: getMonth,
113
118
  requestShowCalendar: show,
@@ -127,6 +132,7 @@ const DatePicker = ({
127
132
  value,
128
133
  type,
129
134
  year: getYear,
135
+ disabled,
130
136
  format: "dd/MM/yyyy",
131
137
  month: getMonth,
132
138
  requestShowCalendar: show,
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","sources":["../../../../../src/components/molecules/DatePicker/DatePicker.tsx"],"sourcesContent":["import {\n Button,\n Calendar,\n DatePicker as DatePickerCore,\n DatePickerProps,\n DateRange,\n Masks,\n SelectionType,\n CalendarIcon,\n} from '@tecsinapse/react-core';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { Dropdown } from '../../atoms/Dropdown';\nimport { InputMask } from '../../atoms/InputMask';\nimport { parse, isValid } from 'date-fns';\n\nexport type WebDatePickerProps<T extends SelectionType> = Omit<\n DatePickerProps<T>,\n | 'CalendarComponent'\n | 'renderCalendar'\n | 'requestCloseCalendar'\n | 'requestShowCalendar'\n> & {\n callbackAfterValidated?: (valid: boolean, message?: string) => void;\n invalidDateLabel?: string;\n};\n\nexport const DatePicker = <T extends SelectionType>({\n value,\n type,\n locale,\n onChange,\n callbackAfterValidated,\n placeholder,\n label,\n invalidDateLabel = 'Invalid date',\n ...rest\n}: WebDatePickerProps<T>): JSX.Element => {\n const [visible, setVisible] = useState(false);\n const [controlledInput, setControlledInput] = useState<string>();\n const show = useCallback(() => setVisible(true), []);\n const close = useCallback(() => setVisible(false), []);\n const [error, setError] = useState<boolean>(false);\n\n const getYear = useMemo(() => {\n if (value) {\n if (type === 'range') {\n if ((value as DateRange).lowest !== undefined)\n return new Date((value as DateRange).lowest).getFullYear();\n } else {\n return new Date(value as Date).getFullYear();\n }\n }\n return undefined;\n }, [value]);\n\n const getMonth = useMemo(() => {\n if (value) {\n if (type === 'range') {\n if ((value as DateRange).lowest !== undefined)\n return new Date((value as DateRange).lowest).getMonth();\n } else {\n return new Date(value as Date).getMonth();\n }\n }\n return undefined;\n }, [value]);\n\n const checksFullRange = useCallback(() => {\n if (type === 'range' && !(value as DateRange)?.highest)\n onChange?.(undefined);\n }, [value]);\n\n const controlComponent = (onPress, displayValue) => {\n return (\n <InputMask\n onBlur={() => {\n if (\n (controlledInput ?? []).length < 8 &&\n (controlledInput ?? []).length > 0\n ) {\n setError(true);\n callbackAfterValidated?.(false, invalidDateLabel);\n }\n if (controlledInput?.length === 8) {\n const auxData = parse(controlledInput, 'ddMMyyyy', new Date(), {\n locale,\n });\n const isValidDate = isValid(auxData);\n callbackAfterValidated?.(isValidDate, invalidDateLabel);\n\n if (isValidDate && auxData !== value) {\n setError(false);\n onChange?.(auxData as typeof value);\n }\n }\n if (controlledInput?.length === 0) {\n setError(true);\n callbackAfterValidated?.(false, invalidDateLabel);\n }\n }}\n mask={Masks.DATE}\n value={displayValue ?? ''}\n hint={error ? invalidDateLabel : undefined}\n variant={error ? 'error' : 'default'}\n onChange={input => {\n setControlledInput(input);\n if ((error && input.length < 8) || isValid(value)) {\n callbackAfterValidated?.(true);\n setError(false);\n }\n }}\n placeholder={placeholder}\n label={label}\n rightComponent={\n <Button\n effect={'none'}\n variant={'text'}\n style={{ padding: 0 }}\n onPress={onPress}\n >\n <CalendarIcon name=\"calendar-sharp\" type=\"ionicon\" size=\"centi\" />\n </Button>\n }\n />\n );\n };\n\n if (type === 'day') {\n return (\n <DatePickerCore\n {...rest}\n CalendarComponent={Calendar}\n onChange={onChange}\n locale={locale}\n value={value}\n type={type}\n year={getYear}\n format={'dd/MM/yyyy'}\n month={getMonth}\n requestShowCalendar={show}\n requestCloseCalendar={close}\n renderCalendar={calendar => (\n <Dropdown visible={visible} setVisible={setVisible}>\n {calendar}\n </Dropdown>\n )}\n controlComponent={controlComponent}\n />\n );\n } else {\n return (\n <DatePickerCore\n {...rest}\n CalendarComponent={Calendar}\n onChange={onChange}\n locale={locale}\n value={value}\n type={type}\n year={getYear}\n format={'dd/MM/yyyy'}\n month={getMonth}\n requestShowCalendar={show}\n requestCloseCalendar={close}\n placeholder={placeholder}\n label={label}\n renderCalendar={(calendar, handleBlur) => (\n <Dropdown\n visible={visible}\n setVisible={setVisible}\n onClickAway={() => {\n handleBlur?.();\n checksFullRange();\n }}\n >\n {calendar}\n </Dropdown>\n )}\n />\n );\n }\n};\n"],"names":["DatePickerCore"],"mappings":"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"}
1
+ {"version":3,"file":"DatePicker.js","sources":["../../../../../src/components/molecules/DatePicker/DatePicker.tsx"],"sourcesContent":["import {\n Calendar,\n DatePicker as DatePickerCore,\n DatePickerProps,\n DateRange,\n Masks,\n SelectionType,\n CalendarIcon,\n PressableSurface,\n useTheme,\n} from '@tecsinapse/react-core';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { Dropdown } from '../../atoms/Dropdown';\nimport { InputMask } from '../../atoms/InputMask';\nimport { parse, isValid } from 'date-fns';\n\nexport type WebDatePickerProps<T extends SelectionType> = Omit<\n DatePickerProps<T>,\n | 'CalendarComponent'\n | 'renderCalendar'\n | 'requestCloseCalendar'\n | 'requestShowCalendar'\n> & {\n callbackAfterValidated?: (valid: boolean, message?: string) => void;\n invalidDateLabel?: string;\n};\n\nexport const DatePicker = <T extends SelectionType>({\n value,\n type,\n locale,\n onChange,\n callbackAfterValidated,\n placeholder,\n disabled,\n label,\n invalidDateLabel = 'Invalid date',\n ...rest\n}: WebDatePickerProps<T>): JSX.Element => {\n const [visible, setVisible] = useState(false);\n const [controlledInput, setControlledInput] = useState<string>();\n const show = useCallback(() => setVisible(true), []);\n const close = useCallback(() => setVisible(false), []);\n const [error, setError] = useState<boolean>(false);\n const theme = useTheme();\n\n const getYear = useMemo(() => {\n if (value) {\n if (type === 'range') {\n if ((value as DateRange).lowest !== undefined)\n return new Date((value as DateRange).lowest).getFullYear();\n } else {\n return new Date(value as Date).getFullYear();\n }\n }\n return undefined;\n }, [value]);\n\n const getMonth = useMemo(() => {\n if (value) {\n if (type === 'range') {\n if ((value as DateRange).lowest !== undefined)\n return new Date((value as DateRange).lowest).getMonth();\n } else {\n return new Date(value as Date).getMonth();\n }\n }\n return undefined;\n }, [value]);\n\n const checksFullRange = useCallback(() => {\n if (type === 'range' && !(value as DateRange)?.highest)\n onChange?.(undefined);\n }, [value]);\n\n const controlComponent = (onPress, displayValue) => {\n return (\n <InputMask\n onBlur={() => {\n if (\n (controlledInput ?? []).length < 8 &&\n (controlledInput ?? []).length > 0\n ) {\n setError(true);\n callbackAfterValidated?.(false, invalidDateLabel);\n }\n if (controlledInput?.length === 8) {\n const auxData = parse(controlledInput, 'ddMMyyyy', new Date(), {\n locale,\n });\n const isValidDate = isValid(auxData);\n callbackAfterValidated?.(isValidDate, invalidDateLabel);\n\n if (isValidDate && auxData !== value) {\n setError(false);\n onChange?.(auxData as typeof value);\n }\n }\n if (controlledInput?.length === 0) {\n setError(true);\n callbackAfterValidated?.(false, invalidDateLabel);\n }\n }}\n disabled={disabled}\n mask={Masks.DATE}\n value={displayValue ?? ''}\n hint={error ? invalidDateLabel : undefined}\n variant={error ? 'error' : 'default'}\n onChange={input => {\n setControlledInput(input);\n if ((error && input.length < 8) || isValid(value)) {\n callbackAfterValidated?.(true);\n setError(false);\n }\n }}\n placeholder={placeholder}\n label={label}\n placeholderTextColor={\n disabled ? theme.color.secondary.light : undefined\n }\n rightComponent={\n <PressableSurface\n effect={'none'}\n style={{ padding: 0 }}\n onPress={onPress}\n disabled={disabled}\n >\n <CalendarIcon name=\"calendar-sharp\" type=\"ionicon\" size=\"centi\" />\n </PressableSurface>\n }\n />\n );\n };\n\n if (type === 'day') {\n return (\n <DatePickerCore\n {...rest}\n CalendarComponent={Calendar}\n onChange={onChange}\n locale={locale}\n value={value}\n type={type}\n year={getYear}\n disabled={disabled}\n format={'dd/MM/yyyy'}\n month={getMonth}\n requestShowCalendar={show}\n requestCloseCalendar={close}\n renderCalendar={calendar => (\n <Dropdown visible={visible} setVisible={setVisible}>\n {calendar}\n </Dropdown>\n )}\n controlComponent={controlComponent}\n />\n );\n } else {\n return (\n <DatePickerCore\n {...rest}\n CalendarComponent={Calendar}\n onChange={onChange}\n locale={locale}\n value={value}\n type={type}\n year={getYear}\n disabled={disabled}\n format={'dd/MM/yyyy'}\n month={getMonth}\n requestShowCalendar={show}\n requestCloseCalendar={close}\n placeholder={placeholder}\n label={label}\n renderCalendar={(calendar, handleBlur) => (\n <Dropdown\n visible={visible}\n setVisible={setVisible}\n onClickAway={() => {\n handleBlur?.();\n checksFullRange();\n }}\n >\n {calendar}\n </Dropdown>\n )}\n />\n );\n }\n};\n"],"names":["DatePickerCore"],"mappings":"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"}
@@ -45,7 +45,7 @@ const OptionsContainer = styled("div")`
45
45
  }
46
46
  ::-webkit-scrollbar-thumb:hover {
47
47
  background-color: ${({ theme }) => theme.color.primary.light};
48
- },
48
+ }
49
49
  `;
50
50
  const SearchBarContainer = styled("div")`
51
51
  padding-left: ${({ theme }) => theme.spacing.mili};
@@ -1 +1 @@
1
- {"version":3,"file":"styled.js","sources":["../../../../../../src/components/molecules/Select/Dropdown/styled.ts"],"sourcesContent":["import styled from '@emotion/styled';\nimport { hex2rgba, StyleProps } from '@tecsinapse/react-core';\nimport { SelectProps } from '../Select';\nimport { css } from '@emotion/react';\n\ntype InjectedProps = Partial<\n StyleProps &\n SelectProps<unknown, 'single' | 'multi'> & { lengthOptions: number }\n>;\n\nconst anchorBottom = ({\n theme,\n anchor,\n}: StyleProps & Omit<InjectedProps, 'theme'>) =>\n anchor === 'bottom' &&\n css`\n margin-top: ${theme.spacing.centi};\n top: 100%;\n `;\n\nconst anchorTop = ({\n theme,\n anchor,\n}: StyleProps & Omit<InjectedProps, 'theme'>) =>\n anchor === 'top' &&\n css`\n margin-bottom: ${theme.spacing.centi};\n bottom: 100%;\n `;\n\nexport const StyledContainerDropdown = styled('div')<InjectedProps>`\n width: 100%;\n background-color: ${({ theme }: StyleProps) =>\n theme.miscellaneous.surfaceColor};\n border-radius: ${({ theme }: StyleProps) => theme.borderRadius.mili};\n box-shadow: 0 2px 8px\n ${({ theme }: StyleProps) => hex2rgba(theme.miscellaneous.shadow, 0.05)};\n position: absolute;\n padding-top: ${({\n theme,\n hideSearchBar,\n }: StyleProps & Partial<SelectProps<unknown, 'single' | 'multi'>>) =>\n !hideSearchBar ? `${theme.spacing.deca}` : '0px'};\n padding-bottom: ${({ theme }: StyleProps) => theme.spacing.mili};\n z-index: ${({ theme }: StyleProps) => theme.zIndex.select};\n ${anchorTop}\n ${anchorBottom}\n`;\n\nexport const OptionsContainer = styled('div')<InjectedProps>`\n max-height: 250px;\n top: 100%;\n overflow-y: ${({ lengthOptions = 0 }: InjectedProps) =>\n lengthOptions > 5 ? 'scroll' : 'hidden'};\n ::-webkit-scrollbar {\n width: 8px;\n }\n ::-webkit-scrollbar-thumb {\n border-radius: ${({ theme }: StyleProps) => theme.borderRadius.centi};\n background-color: ${({ theme }: StyleProps) => theme.color.secondary.light};\n }\n ::-webkit-scrollbar-thumb:hover {\n background-color: ${({ theme }: StyleProps) => theme.color.primary.light};\n },\n`;\n\nexport const SearchBarContainer = styled('div')<Partial<StyleProps>>`\n padding-left: ${({ theme }) => theme.spacing.mili};\n width: 100%;\n`;\n\nexport const PaddedContainer = styled('div')<Partial<StyleProps>>`\n padding: ${({ theme }) => `${theme.spacing.mili} ${theme.spacing.deca}`};\n`;\n\nexport const StyledContainerCheckAll = styled(PaddedContainer)<\n Partial<StyleProps>\n>`\n flex-direction: row;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n cursor: pointer;\n &:hover {\n background-color: ${({ theme }) => theme.color.primary.xlight};\n }\n &:hover span {\n color: ${({ theme }) => theme.color.primary.medium};\n }\n`;\n\nexport const StyledSpan = styled('span')<Partial<StyleProps>>`\n color: ${({ theme }) => theme.font.color.dark};\n padding: ${({ theme }) => `${theme.spacing.mili} 0px`};\n`;\n\nexport const StyledContainerTextLabel = styled('div')<Partial<StyleProps>>`\n padding-left: ${({ theme }) => theme.spacing.mili};\n width: 100%;\n display: flex;\n overflow: hidden;\n`;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"styled.js","sources":["../../../../../../src/components/molecules/Select/Dropdown/styled.ts"],"sourcesContent":["import styled from '@emotion/styled';\nimport { hex2rgba, StyleProps } from '@tecsinapse/react-core';\nimport { SelectProps } from '../Select';\nimport { css } from '@emotion/react';\n\ntype InjectedProps = Partial<\n StyleProps &\n SelectProps<unknown, 'single' | 'multi'> & { lengthOptions: number }\n>;\n\nconst anchorBottom = ({\n theme,\n anchor,\n}: StyleProps & Omit<InjectedProps, 'theme'>) =>\n anchor === 'bottom' &&\n css`\n margin-top: ${theme.spacing.centi};\n top: 100%;\n `;\n\nconst anchorTop = ({\n theme,\n anchor,\n}: StyleProps & Omit<InjectedProps, 'theme'>) =>\n anchor === 'top' &&\n css`\n margin-bottom: ${theme.spacing.centi};\n bottom: 100%;\n `;\n\nexport const StyledContainerDropdown = styled('div')<InjectedProps>`\n width: 100%;\n background-color: ${({ theme }: StyleProps) =>\n theme.miscellaneous.surfaceColor};\n border-radius: ${({ theme }: StyleProps) => theme.borderRadius.mili};\n box-shadow: 0 2px 8px\n ${({ theme }: StyleProps) => hex2rgba(theme.miscellaneous.shadow, 0.05)};\n position: absolute;\n padding-top: ${({\n theme,\n hideSearchBar,\n }: StyleProps & Partial<SelectProps<unknown, 'single' | 'multi'>>) =>\n !hideSearchBar ? `${theme.spacing.deca}` : '0px'};\n padding-bottom: ${({ theme }: StyleProps) => theme.spacing.mili};\n z-index: ${({ theme }: StyleProps) => theme.zIndex.select};\n ${anchorTop}\n ${anchorBottom}\n`;\n\nexport const OptionsContainer = styled('div')<InjectedProps>`\n max-height: 250px;\n top: 100%;\n overflow-y: ${({ lengthOptions = 0 }: InjectedProps) =>\n lengthOptions > 5 ? 'scroll' : 'hidden'};\n ::-webkit-scrollbar {\n width: 8px;\n }\n ::-webkit-scrollbar-thumb {\n border-radius: ${({ theme }: StyleProps) => theme.borderRadius.centi};\n background-color: ${({ theme }: StyleProps) => theme.color.secondary.light};\n }\n ::-webkit-scrollbar-thumb:hover {\n background-color: ${({ theme }: StyleProps) => theme.color.primary.light};\n }\n`;\n\nexport const SearchBarContainer = styled('div')<Partial<StyleProps>>`\n padding-left: ${({ theme }) => theme.spacing.mili};\n width: 100%;\n`;\n\nexport const PaddedContainer = styled('div')<Partial<StyleProps>>`\n padding: ${({ theme }) => `${theme.spacing.mili} ${theme.spacing.deca}`};\n`;\n\nexport const StyledContainerCheckAll = styled(PaddedContainer)<\n Partial<StyleProps>\n>`\n flex-direction: row;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n cursor: pointer;\n &:hover {\n background-color: ${({ theme }) => theme.color.primary.xlight};\n }\n &:hover span {\n color: ${({ theme }) => theme.color.primary.medium};\n }\n`;\n\nexport const StyledSpan = styled('span')<Partial<StyleProps>>`\n color: ${({ theme }) => theme.font.color.dark};\n padding: ${({ theme }) => `${theme.spacing.mili} 0px`};\n`;\n\nexport const StyledContainerTextLabel = styled('div')<Partial<StyleProps>>`\n padding-left: ${({ theme }) => theme.spacing.mili};\n width: 100%;\n display: flex;\n overflow: hidden;\n`;\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { TextProps } from '@tecsinapse/react-core';
2
2
  import React from 'react';
3
+ import { MultiLabels } from './types';
3
4
  export interface SelectProps<Data, Type extends 'single' | 'multi'> extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {
4
5
  options: ((searchInput?: string) => Promise<Data[]>) | Data[];
5
6
  onSelect: (option: Type extends 'single' ? Data | undefined : Data[]) => never | void;
@@ -16,6 +17,7 @@ export interface SelectProps<Data, Type extends 'single' | 'multi'> extends Omit
16
17
  label?: string;
17
18
  anchor?: 'top' | 'bottom';
18
19
  displayTextProps?: TextProps;
20
+ multiLabels?: MultiLabels;
19
21
  }
20
- declare const Select: <Data, Type extends "single" | "multi">({ value, options, keyExtractor, onSelect, type, labelExtractor, placeholder, onSearch, searchBarPlaceholder, hideSearchBar, label, disabled, anchor, displayTextProps, selectAllLabel, ...rest }: SelectProps<Data, Type>) => JSX.Element;
22
+ declare const Select: <Data, Type extends "single" | "multi">({ value, options, keyExtractor, onSelect, type, labelExtractor, placeholder, onSearch, searchBarPlaceholder, hideSearchBar, label, disabled, anchor, displayTextProps, selectAllLabel, multiLabels, ...rest }: SelectProps<Data, Type>) => JSX.Element;
21
23
  export default Select;
@@ -1,5 +1,5 @@
1
1
  import { PressableInputContainer, Text } from '@tecsinapse/react-core';
2
- import React, { useState, useEffect } from 'react';
2
+ import React, { useState, useId, useEffect } from 'react';
3
3
  import { Transition } from 'react-transition-group';
4
4
  import { useClickAwayListener } from '../../../hooks/useClickAwayListener.js';
5
5
  import { defaultStyles, transition } from './animations.js';
@@ -16,13 +16,14 @@ const Select = ({
16
16
  labelExtractor,
17
17
  placeholder,
18
18
  onSearch,
19
- searchBarPlaceholder = "Busque a op\xE7\xE3o desejada",
19
+ searchBarPlaceholder = "Search for option",
20
20
  hideSearchBar = true,
21
21
  label,
22
22
  disabled = false,
23
23
  anchor = "bottom",
24
24
  displayTextProps,
25
- selectAllLabel = "Selecionar todos",
25
+ selectAllLabel = "Select all",
26
+ multiLabels,
26
27
  ...rest
27
28
  }) => {
28
29
  const [dropDownVisible, setDropDownVisible] = React.useState(false);
@@ -30,6 +31,7 @@ const Select = ({
30
31
  const refDropDown = React.useRef(null);
31
32
  const transitionRef = React.useRef(null);
32
33
  useClickAwayListener(refDropDown, setDropDownVisible);
34
+ const instanceid = useId();
33
35
  useEffect(() => {
34
36
  if (typeof options !== "function") {
35
37
  setSelectOptions(options);
@@ -45,7 +47,8 @@ const Select = ({
45
47
  selectOptions,
46
48
  _placeholder,
47
49
  keyExtractor,
48
- labelExtractor
50
+ labelExtractor,
51
+ multiLabels
49
52
  );
50
53
  const handleLazyFocus = React.useCallback(async () => {
51
54
  if (!dropDownVisible && typeof options === "function") {
@@ -106,25 +109,34 @@ const Select = ({
106
109
  rightComponent: RightComponent
107
110
  },
108
111
  /* @__PURE__ */ React.createElement(Text, { ...displayTextProps, fontWeight: "bold" }, displayValue)
109
- )), /* @__PURE__ */ React.createElement(Transition, { in: dropDownVisible, timeout: 300, nodeRef: transitionRef }, (state) => /* @__PURE__ */ React.createElement(
110
- Dropdown,
112
+ )), /* @__PURE__ */ React.createElement(
113
+ Transition,
111
114
  {
112
- ref: transitionRef,
113
- options: selectOptions ?? [],
114
- onSelect,
115
- value,
116
- type,
117
- keyExtractor,
118
- labelExtractor,
119
- hideSearchBar,
120
- searchBarPlaceholder,
121
- onSearch: handleOnSearch,
122
- style: { ...defaultStyles, ...transition[anchor][state] },
123
- setDropDownVisible,
124
- anchor,
125
- selectAllLabel
126
- }
127
- )));
115
+ in: dropDownVisible,
116
+ timeout: 300,
117
+ nodeRef: transitionRef,
118
+ key: instanceid
119
+ },
120
+ (state) => /* @__PURE__ */ React.createElement(
121
+ Dropdown,
122
+ {
123
+ ref: transitionRef,
124
+ options: selectOptions ?? [],
125
+ onSelect,
126
+ value,
127
+ type,
128
+ keyExtractor,
129
+ labelExtractor,
130
+ hideSearchBar,
131
+ searchBarPlaceholder,
132
+ onSearch: handleOnSearch,
133
+ style: { ...defaultStyles, ...transition[anchor][state] },
134
+ setDropDownVisible,
135
+ anchor,
136
+ selectAllLabel
137
+ }
138
+ )
139
+ ));
128
140
  };
129
141
 
130
142
  export { Select as default };
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../../../../src/components/molecules/Select/Select.tsx"],"sourcesContent":["import {\n PressableInputContainer,\n Text,\n TextProps,\n} from '@tecsinapse/react-core';\nimport React, { useEffect, useState } from 'react';\nimport { Transition } from 'react-transition-group';\nimport { useClickAwayListener } from '../../../hooks';\nimport { defaultStyles, transition } from './animations';\nimport { Dropdown } from './Dropdown';\nimport { getDisplayValue } from './functions';\nimport {\n RightComponent,\n StyledContainer,\n StyledInputContainer,\n} from './styled';\n\nexport interface SelectProps<Data, Type extends 'single' | 'multi'>\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {\n options: ((searchInput?: string) => Promise<Data[]>) | Data[];\n onSelect: (\n option: Type extends 'single' ? Data | undefined : Data[]\n ) => never | void;\n value: Type extends 'single' ? Data | undefined : Data[];\n type: Type;\n keyExtractor: (t: Data, index?: number) => string;\n labelExtractor: (t: Data) => string;\n placeholder?: string;\n onSearch?:\n | ((searchArg: string) => void)\n | ((searchInput?: string) => Promise<Data[]>)\n | never;\n searchBarPlaceholder?: string;\n hideSearchBar?: boolean;\n selectAllLabel?: string;\n disabled?: boolean;\n label?: string;\n anchor?: 'top' | 'bottom';\n displayTextProps?: TextProps;\n}\n\n/** NOTE: For better performance, you should memoize options and handlers */\nconst Select = <Data, Type extends 'single' | 'multi'>({\n value,\n options,\n keyExtractor,\n onSelect,\n type,\n labelExtractor,\n placeholder,\n onSearch,\n searchBarPlaceholder = 'Busque a opção desejada',\n hideSearchBar = true,\n label,\n disabled = false,\n anchor = 'bottom',\n displayTextProps,\n selectAllLabel = 'Selecionar todos',\n ...rest\n}: SelectProps<Data, Type>): JSX.Element => {\n const [dropDownVisible, setDropDownVisible] = React.useState<boolean>(false);\n const [selectOptions, setSelectOptions] = useState<Data[]>([]);\n const refDropDown = React.useRef(null);\n const transitionRef = React.useRef(null);\n useClickAwayListener(refDropDown, setDropDownVisible);\n\n useEffect(() => {\n if (typeof options !== 'function') {\n setSelectOptions(options);\n }\n }, [options]);\n\n // TODO: Add Skeleton to modal height when loading is true\n\n const onlyLabel = label && !placeholder;\n const hasValue =\n type === 'single' ? !!value : ((value || []) as []).length > 0;\n const _placeholder = onlyLabel ? label : placeholder;\n const _label = hasValue ? label : undefined;\n\n const displayValue = getDisplayValue<Data>(\n type,\n value,\n selectOptions,\n _placeholder,\n keyExtractor,\n labelExtractor\n );\n\n const handleLazyFocus = React.useCallback(async () => {\n if (!dropDownVisible && typeof options === 'function') {\n try {\n const result = await options();\n if (result) {\n setSelectOptions(result ?? []);\n }\n } catch (e) {\n // TODO: Catch error\n }\n }\n }, [options, setSelectOptions, dropDownVisible]);\n\n const handleOnSearch = React.useCallback(\n async (searchInput: string | undefined) => {\n if (searchInput !== undefined && onSearch && dropDownVisible) {\n try {\n //TODO: Remove code duplicated below (Select in react-native-kit)\n const result = await onSearch(searchInput);\n if (result) {\n if (type === 'single') {\n if (\n value &&\n !result.find(\n v => keyExtractor(value as Data) === keyExtractor(v)\n )\n ) {\n setSelectOptions([value as Data, ...result]);\n } else setSelectOptions(result);\n } else {\n if ((value as Data[]).length > 0) {\n const selectedValues =\n (value as Data[]).filter(\n v =>\n !result.find(\n current =>\n keyExtractor(v as Data) === keyExtractor(current)\n )\n ) || [];\n setSelectOptions([...selectedValues, ...result]);\n } else {\n setSelectOptions(result);\n }\n }\n }\n } catch (e) {\n // TODO: Catch error\n }\n }\n },\n [onSearch, value, keyExtractor, dropDownVisible, setSelectOptions]\n );\n\n const handlePressInput = async () => {\n await handleLazyFocus();\n };\n\n const onPress = React.useCallback(\n () => setDropDownVisible(prev => !prev),\n [setDropDownVisible]\n );\n //TODO: when component is wrapper by GridITem and Text of label has prop \"numberOfLines={1}\", this component incresing witht based on options selects, breaking layout of Grid, we must fix this problem.\n return (\n <StyledContainer ref={refDropDown} {...rest}>\n <StyledInputContainer onFocus={handlePressInput}>\n <PressableInputContainer\n label={_label}\n onPress={onPress}\n disabled={disabled}\n rightComponent={RightComponent}\n >\n <Text {...displayTextProps} fontWeight={'bold'}>\n {displayValue}\n </Text>\n </PressableInputContainer>\n </StyledInputContainer>\n <Transition in={dropDownVisible} timeout={300} nodeRef={transitionRef}>\n {state => (\n <Dropdown\n ref={transitionRef}\n options={selectOptions ?? []}\n onSelect={onSelect}\n value={value}\n type={type}\n keyExtractor={keyExtractor}\n labelExtractor={labelExtractor}\n hideSearchBar={hideSearchBar}\n searchBarPlaceholder={searchBarPlaceholder}\n onSearch={handleOnSearch}\n style={{ ...defaultStyles, ...transition[anchor][state] }}\n setDropDownVisible={setDropDownVisible}\n anchor={anchor}\n selectAllLabel={selectAllLabel}\n />\n )}\n </Transition>\n </StyledContainer>\n );\n};\n\nexport default Select;\n"],"names":[],"mappings":";;;;;;;;;AA0CA,MAAM,SAAS,CAAwC;AAAA,EACrD,KAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,oBAAuB,GAAA,+BAAA;AAAA,EACvB,aAAgB,GAAA,IAAA;AAAA,EAChB,KAAA;AAAA,EACA,QAAW,GAAA,KAAA;AAAA,EACX,MAAS,GAAA,QAAA;AAAA,EACT,gBAAA;AAAA,EACA,cAAiB,GAAA,kBAAA;AAAA,EACjB,GAAG,IAAA;AACL,CAA4C,KAAA;AAC1C,EAAA,MAAM,CAAC,eAAiB,EAAA,kBAAkB,CAAI,GAAA,KAAA,CAAM,SAAkB,KAAK,CAAA,CAAA;AAC3E,EAAA,MAAM,CAAC,aAAe,EAAA,gBAAgB,CAAI,GAAA,QAAA,CAAiB,EAAE,CAAA,CAAA;AAC7D,EAAM,MAAA,WAAA,GAAc,KAAM,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AACrC,EAAM,MAAA,aAAA,GAAgB,KAAM,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AACvC,EAAA,oBAAA,CAAqB,aAAa,kBAAkB,CAAA,CAAA;AAEpD,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,OAAO,YAAY,UAAY,EAAA;AACjC,MAAA,gBAAA,CAAiB,OAAO,CAAA,CAAA;AAAA,KAC1B;AAAA,GACF,EAAG,CAAC,OAAO,CAAC,CAAA,CAAA;AAIZ,EAAM,MAAA,SAAA,GAAY,SAAS,CAAC,WAAA,CAAA;AAC5B,EAAM,MAAA,QAAA,GACJ,SAAS,QAAW,GAAA,CAAC,CAAC,KAAU,GAAA,CAAA,KAAA,IAAS,EAAC,EAAU,MAAS,GAAA,CAAA,CAAA;AAC/D,EAAM,MAAA,YAAA,GAAe,YAAY,KAAQ,GAAA,WAAA,CAAA;AACzC,EAAM,MAAA,MAAA,GAAS,WAAW,KAAQ,GAAA,KAAA,CAAA,CAAA;AAElC,EAAA,MAAM,YAAe,GAAA,eAAA;AAAA,IACnB,IAAA;AAAA,IACA,KAAA;AAAA,IACA,aAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,cAAA;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,eAAA,GAAkB,KAAM,CAAA,WAAA,CAAY,YAAY;AACpD,IAAA,IAAI,CAAC,eAAA,IAAmB,OAAO,OAAA,KAAY,UAAY,EAAA;AACrD,MAAI,IAAA;AACF,QAAM,MAAA,MAAA,GAAS,MAAM,OAAQ,EAAA,CAAA;AAC7B,QAAA,IAAI,MAAQ,EAAA;AACV,UAAiB,gBAAA,CAAA,MAAA,IAAU,EAAE,CAAA,CAAA;AAAA,SAC/B;AAAA,eACO,CAAG,EAAA;AAAA,OAEZ;AAAA,KACF;AAAA,GACC,EAAA,CAAC,OAAS,EAAA,gBAAA,EAAkB,eAAe,CAAC,CAAA,CAAA;AAE/C,EAAA,MAAM,iBAAiB,KAAM,CAAA,WAAA;AAAA,IAC3B,OAAO,WAAoC,KAAA;AACzC,MAAI,IAAA,WAAA,KAAgB,KAAa,CAAA,IAAA,QAAA,IAAY,eAAiB,EAAA;AAC5D,QAAI,IAAA;AAEF,UAAM,MAAA,MAAA,GAAS,MAAM,QAAA,CAAS,WAAW,CAAA,CAAA;AACzC,UAAA,IAAI,MAAQ,EAAA;AACV,YAAA,IAAI,SAAS,QAAU,EAAA;AACrB,cACE,IAAA,KAAA,IACA,CAAC,MAAO,CAAA,IAAA;AAAA,gBACN,CAAK,CAAA,KAAA,YAAA,CAAa,KAAa,CAAA,KAAM,aAAa,CAAC,CAAA;AAAA,eAErD,EAAA;AACA,gBAAA,gBAAA,CAAiB,CAAC,KAAA,EAAe,GAAG,MAAM,CAAC,CAAA,CAAA;AAAA,eAC7C;AAAO,gBAAA,gBAAA,CAAiB,MAAM,CAAA,CAAA;AAAA,aACzB,MAAA;AACL,cAAK,IAAA,KAAA,CAAiB,SAAS,CAAG,EAAA;AAChC,gBAAA,MAAM,iBACH,KAAiB,CAAA,MAAA;AAAA,kBAChB,CAAA,CAAA,KACE,CAAC,MAAO,CAAA,IAAA;AAAA,oBACN,CACE,OAAA,KAAA,YAAA,CAAa,CAAS,CAAA,KAAM,aAAa,OAAO,CAAA;AAAA,mBACpD;AAAA,qBACC,EAAC,CAAA;AACR,gBAAA,gBAAA,CAAiB,CAAC,GAAG,cAAgB,EAAA,GAAG,MAAM,CAAC,CAAA,CAAA;AAAA,eAC1C,MAAA;AACL,gBAAA,gBAAA,CAAiB,MAAM,CAAA,CAAA;AAAA,eACzB;AAAA,aACF;AAAA,WACF;AAAA,iBACO,CAAG,EAAA;AAAA,SAEZ;AAAA,OACF;AAAA,KACF;AAAA,IACA,CAAC,QAAA,EAAU,KAAO,EAAA,YAAA,EAAc,iBAAiB,gBAAgB,CAAA;AAAA,GACnE,CAAA;AAEA,EAAA,MAAM,mBAAmB,YAAY;AACnC,IAAA,MAAM,eAAgB,EAAA,CAAA;AAAA,GACxB,CAAA;AAEA,EAAA,MAAM,UAAU,KAAM,CAAA,WAAA;AAAA,IACpB,MAAM,kBAAA,CAAmB,CAAQ,IAAA,KAAA,CAAC,IAAI,CAAA;AAAA,IACtC,CAAC,kBAAkB,CAAA;AAAA,GACrB,CAAA;AAEA,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,mBAAgB,GAAK,EAAA,WAAA,EAAc,GAAG,IACrC,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,oBAAqB,EAAA,EAAA,OAAA,EAAS,gBAC7B,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,uBAAA;AAAA,IAAA;AAAA,MACC,KAAO,EAAA,MAAA;AAAA,MACP,OAAA;AAAA,MACA,QAAA;AAAA,MACA,cAAgB,EAAA,cAAA;AAAA,KAAA;AAAA,wCAEf,IAAM,EAAA,EAAA,GAAG,gBAAkB,EAAA,UAAA,EAAY,UACrC,YACH,CAAA;AAAA,GAEJ,CACA,kBAAA,KAAA,CAAA,aAAA,CAAC,UAAW,EAAA,EAAA,EAAA,EAAI,iBAAiB,OAAS,EAAA,GAAA,EAAK,OAAS,EAAA,aAAA,EAAA,EACrD,CACC,KAAA,qBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAK,EAAA,aAAA;AAAA,MACL,OAAA,EAAS,iBAAiB,EAAC;AAAA,MAC3B,QAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,oBAAA;AAAA,MACA,QAAU,EAAA,cAAA;AAAA,MACV,KAAA,EAAO,EAAE,GAAG,aAAA,EAAe,GAAG,UAAW,CAAA,MAAM,CAAE,CAAA,KAAK,CAAE,EAAA;AAAA,MACxD,kBAAA;AAAA,MACA,MAAA;AAAA,MACA,cAAA;AAAA,KAAA;AAAA,GAGN,CACF,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"Select.js","sources":["../../../../../src/components/molecules/Select/Select.tsx"],"sourcesContent":["import {\n PressableInputContainer,\n Text,\n TextProps,\n} from '@tecsinapse/react-core';\nimport React, { useEffect, useId, useState } from 'react';\nimport { Transition } from 'react-transition-group';\nimport { useClickAwayListener } from '../../../hooks';\nimport { defaultStyles, transition } from './animations';\nimport { Dropdown } from './Dropdown';\nimport { getDisplayValue } from './functions';\nimport {\n RightComponent,\n StyledContainer,\n StyledInputContainer,\n} from './styled';\nimport { MultiLabels } from './types';\n\nexport interface SelectProps<Data, Type extends 'single' | 'multi'>\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {\n options: ((searchInput?: string) => Promise<Data[]>) | Data[];\n onSelect: (\n option: Type extends 'single' ? Data | undefined : Data[]\n ) => never | void;\n value: Type extends 'single' ? Data | undefined : Data[];\n type: Type;\n keyExtractor: (t: Data, index?: number) => string;\n labelExtractor: (t: Data) => string;\n placeholder?: string;\n onSearch?:\n | ((searchArg: string) => void)\n | ((searchInput?: string) => Promise<Data[]>)\n | never;\n searchBarPlaceholder?: string;\n hideSearchBar?: boolean;\n selectAllLabel?: string;\n disabled?: boolean;\n label?: string;\n anchor?: 'top' | 'bottom';\n displayTextProps?: TextProps;\n multiLabels?: MultiLabels;\n}\n\n/** NOTE: For better performance, you should memoize options and handlers */\nconst Select = <Data, Type extends 'single' | 'multi'>({\n value,\n options,\n keyExtractor,\n onSelect,\n type,\n labelExtractor,\n placeholder,\n onSearch,\n searchBarPlaceholder = 'Search for option',\n hideSearchBar = true,\n label,\n disabled = false,\n anchor = 'bottom',\n displayTextProps,\n selectAllLabel = 'Select all',\n multiLabels,\n ...rest\n}: SelectProps<Data, Type>): JSX.Element => {\n const [dropDownVisible, setDropDownVisible] = React.useState<boolean>(false);\n const [selectOptions, setSelectOptions] = useState<Data[]>([]);\n const refDropDown = React.useRef(null);\n const transitionRef = React.useRef(null);\n useClickAwayListener(refDropDown, setDropDownVisible);\n const instanceid = useId();\n\n useEffect(() => {\n if (typeof options !== 'function') {\n setSelectOptions(options);\n }\n }, [options]);\n\n // TODO: Add Skeleton to modal height when loading is true\n\n const onlyLabel = label && !placeholder;\n const hasValue =\n type === 'single' ? !!value : ((value || []) as []).length > 0;\n const _placeholder = onlyLabel ? label : placeholder;\n const _label = hasValue ? label : undefined;\n\n const displayValue = getDisplayValue<Data>(\n type,\n value,\n selectOptions,\n _placeholder,\n keyExtractor,\n labelExtractor,\n multiLabels\n );\n\n const handleLazyFocus = React.useCallback(async () => {\n if (!dropDownVisible && typeof options === 'function') {\n try {\n const result = await options();\n if (result) {\n setSelectOptions(result ?? []);\n }\n } catch (e) {\n // TODO: Catch error\n }\n }\n }, [options, setSelectOptions, dropDownVisible]);\n\n const handleOnSearch = React.useCallback(\n async (searchInput: string | undefined) => {\n if (searchInput !== undefined && onSearch && dropDownVisible) {\n try {\n //TODO: Remove code duplicated below (Select in react-native-kit)\n const result = await onSearch(searchInput);\n if (result) {\n if (type === 'single') {\n if (\n value &&\n !result.find(\n v => keyExtractor(value as Data) === keyExtractor(v)\n )\n ) {\n setSelectOptions([value as Data, ...result]);\n } else setSelectOptions(result);\n } else {\n if ((value as Data[]).length > 0) {\n const selectedValues =\n (value as Data[]).filter(\n v =>\n !result.find(\n current =>\n keyExtractor(v as Data) === keyExtractor(current)\n )\n ) || [];\n setSelectOptions([...selectedValues, ...result]);\n } else {\n setSelectOptions(result);\n }\n }\n }\n } catch (e) {\n // TODO: Catch error\n }\n }\n },\n [onSearch, value, keyExtractor, dropDownVisible, setSelectOptions]\n );\n\n const handlePressInput = async () => {\n await handleLazyFocus();\n };\n\n const onPress = React.useCallback(\n () => setDropDownVisible(prev => !prev),\n [setDropDownVisible]\n );\n\n //TODO: when component is wrapper by GridITem and Text of label has prop \"numberOfLines={1}\", this component incresing witht based on options selects, breaking layout of Grid, we must fix this problem.\n return (\n <StyledContainer ref={refDropDown} {...rest}>\n <StyledInputContainer onFocus={handlePressInput}>\n <PressableInputContainer\n label={_label}\n onPress={onPress}\n disabled={disabled}\n rightComponent={RightComponent}\n >\n <Text {...displayTextProps} fontWeight={'bold'}>\n {displayValue}\n </Text>\n </PressableInputContainer>\n </StyledInputContainer>\n <Transition\n in={dropDownVisible}\n timeout={300}\n nodeRef={transitionRef}\n key={instanceid}\n >\n {state => (\n <Dropdown\n ref={transitionRef}\n options={selectOptions ?? []}\n onSelect={onSelect}\n value={value}\n type={type}\n keyExtractor={keyExtractor}\n labelExtractor={labelExtractor}\n hideSearchBar={hideSearchBar}\n searchBarPlaceholder={searchBarPlaceholder}\n onSearch={handleOnSearch}\n style={{ ...defaultStyles, ...transition[anchor][state] }}\n setDropDownVisible={setDropDownVisible}\n anchor={anchor}\n selectAllLabel={selectAllLabel}\n />\n )}\n </Transition>\n </StyledContainer>\n );\n};\n\nexport default Select;\n"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
- export declare const getDisplayValue: <Data>(type: 'multi' | 'single', value: Data | Data[] | undefined, options: Data[], placeholder: string | undefined, keyExtractor: (option: Data, idx?: number) => string, labelExtractor: (option: Data) => string) => string | undefined;
1
+ import { MultiLabels } from './types';
2
+ export declare const getDisplayValue: <Data>(type: 'multi' | 'single', value: Data | Data[] | undefined, options: Data[], placeholder: string | undefined, keyExtractor: (option: Data, idx?: number) => string, labelExtractor: (option: Data) => string, multiLabels?: MultiLabels) => string | undefined;
@@ -1,17 +1,39 @@
1
- const getDisplayValue = (type, value, options, placeholder, keyExtractor, labelExtractor) => {
1
+ const getMultiLabel = (value, options, multiLabels) => {
2
+ if (value.length > 0 && value.length === options.length) {
3
+ return multiLabels?.allSelected ?? "All items selected";
4
+ }
5
+ return multiLabels?.selection ? multiLabels?.selection?.(value.length) : `${value.length} selected items`;
6
+ };
7
+ const getSingleLabel = (value, options, keyExtractor, placeholder, labelExtractor) => {
8
+ const selectedOption = options.find(
9
+ (option, index) => keyExtractor(option, index) == keyExtractor(value, index)
10
+ );
11
+ return selectedOption ? labelExtractor(selectedOption) : placeholder;
12
+ };
13
+ const getDisplayValue = (type, value, options, placeholder, keyExtractor, labelExtractor, multiLabels) => {
2
14
  if (type === "multi") {
3
- if (value.length === 0)
15
+ if (value === void 0 || value.length === 0)
4
16
  return placeholder;
5
- else {
6
- return value.reduce((acc, option) => acc + labelExtractor(option) + ", ", "").slice(0, -2);
17
+ if (value.length === 1) {
18
+ return getSingleLabel(
19
+ value?.[0],
20
+ options,
21
+ keyExtractor,
22
+ placeholder,
23
+ labelExtractor
24
+ );
7
25
  }
26
+ return getMultiLabel(value, options, multiLabels);
8
27
  } else {
9
28
  if (value === void 0)
10
29
  return placeholder;
11
- const selectedOption = options.find(
12
- (option, index) => keyExtractor(option, index) == keyExtractor(value, index)
30
+ return getSingleLabel(
31
+ value,
32
+ options,
33
+ keyExtractor,
34
+ placeholder,
35
+ labelExtractor
13
36
  );
14
- return selectedOption ? labelExtractor(selectedOption) : placeholder;
15
37
  }
16
38
  };
17
39
 
@@ -1 +1 @@
1
- {"version":3,"file":"functions.js","sources":["../../../../../src/components/molecules/Select/functions.ts"],"sourcesContent":["export const getDisplayValue = <Data>(\n type: 'multi' | 'single',\n value: Data | Data[] | undefined,\n options: Data[],\n placeholder: string | undefined,\n keyExtractor: (option: Data, idx?: number) => string,\n labelExtractor: (option: Data) => string\n): string | undefined => {\n if (type === 'multi') {\n if ((value as Data[]).length === 0) return placeholder;\n else {\n return (value as Data[])\n .reduce((acc, option) => acc + labelExtractor(option) + ', ', '')\n .slice(0, -2);\n }\n } else {\n if (value === undefined) return placeholder;\n const selectedOption = options.find(\n (option, index) =>\n keyExtractor(option, index) == keyExtractor(value as Data, index)\n );\n return selectedOption ? labelExtractor(selectedOption) : placeholder;\n }\n};\n"],"names":[],"mappings":"AAAO,MAAM,kBAAkB,CAC7B,IAAA,EACA,OACA,OACA,EAAA,WAAA,EACA,cACA,cACuB,KAAA;AACvB,EAAA,IAAI,SAAS,OAAS,EAAA;AACpB,IAAA,IAAK,MAAiB,MAAW,KAAA,CAAA;AAAG,MAAO,OAAA,WAAA,CAAA;AAAA,SACtC;AACH,MAAA,OAAQ,KACL,CAAA,MAAA,CAAO,CAAC,GAAA,EAAK,WAAW,GAAM,GAAA,cAAA,CAAe,MAAM,CAAA,GAAI,IAAM,EAAA,EAAE,CAC/D,CAAA,KAAA,CAAM,GAAG,CAAE,CAAA,CAAA,CAAA;AAAA,KAChB;AAAA,GACK,MAAA;AACL,IAAA,IAAI,KAAU,KAAA,KAAA,CAAA;AAAW,MAAO,OAAA,WAAA,CAAA;AAChC,IAAA,MAAM,iBAAiB,OAAQ,CAAA,IAAA;AAAA,MAC7B,CAAC,QAAQ,KACP,KAAA,YAAA,CAAa,QAAQ,KAAK,CAAA,IAAK,YAAa,CAAA,KAAA,EAAe,KAAK,CAAA;AAAA,KACpE,CAAA;AACA,IAAO,OAAA,cAAA,GAAiB,cAAe,CAAA,cAAc,CAAI,GAAA,WAAA,CAAA;AAAA,GAC3D;AACF;;;;"}
1
+ {"version":3,"file":"functions.js","sources":["../../../../../src/components/molecules/Select/functions.ts"],"sourcesContent":["import { MultiLabels } from './types';\n\nconst getMultiLabel = <Data>(\n value: Data | Data[] | undefined,\n options: Data[],\n multiLabels?: MultiLabels\n) => {\n if (\n (value as Data[]).length > 0 &&\n (value as Data[]).length === options.length\n ) {\n return multiLabels?.allSelected ?? 'All items selected';\n }\n return multiLabels?.selection\n ? multiLabels?.selection?.((value as Data[]).length)\n : `${(value as Data[]).length} selected items`;\n};\n\nconst getSingleLabel = <Data>(\n value: Data | undefined,\n options: Data[],\n keyExtractor: (option: Data, idx?: number) => string,\n placeholder: string | undefined,\n labelExtractor: (option: Data) => string\n) => {\n const selectedOption = options.find(\n (option, index) =>\n keyExtractor(option, index) == keyExtractor(value as Data, index)\n );\n return selectedOption ? labelExtractor(selectedOption) : placeholder;\n};\n\nexport const getDisplayValue = <Data>(\n type: 'multi' | 'single',\n value: Data | Data[] | undefined,\n options: Data[],\n placeholder: string | undefined,\n keyExtractor: (option: Data, idx?: number) => string,\n labelExtractor: (option: Data) => string,\n multiLabels?: MultiLabels\n): string | undefined => {\n if (type === 'multi') {\n if (value === undefined || (value as Data[]).length === 0)\n return placeholder;\n if ((value as Data[]).length === 1) {\n return getSingleLabel(\n value?.[0],\n options,\n keyExtractor,\n placeholder,\n labelExtractor\n );\n }\n return getMultiLabel(value, options, multiLabels);\n } else {\n if (value === undefined) return placeholder;\n return getSingleLabel(\n value as Data,\n options,\n keyExtractor,\n placeholder,\n labelExtractor\n );\n }\n};\n"],"names":[],"mappings":"AAEA,MAAM,aAAgB,GAAA,CACpB,KACA,EAAA,OAAA,EACA,WACG,KAAA;AACH,EAAA,IACG,MAAiB,MAAS,GAAA,CAAA,IAC1B,KAAiB,CAAA,MAAA,KAAW,QAAQ,MACrC,EAAA;AACA,IAAA,OAAO,aAAa,WAAe,IAAA,oBAAA,CAAA;AAAA,GACrC;AACA,EAAO,OAAA,WAAA,EAAa,YAChB,WAAa,EAAA,SAAA,GAAa,MAAiB,MAAM,CAAA,GACjD,CAAI,EAAA,KAAA,CAAiB,MAAM,CAAA,eAAA,CAAA,CAAA;AACjC,CAAA,CAAA;AAEA,MAAM,iBAAiB,CACrB,KAAA,EACA,OACA,EAAA,YAAA,EACA,aACA,cACG,KAAA;AACH,EAAA,MAAM,iBAAiB,OAAQ,CAAA,IAAA;AAAA,IAC7B,CAAC,QAAQ,KACP,KAAA,YAAA,CAAa,QAAQ,KAAK,CAAA,IAAK,YAAa,CAAA,KAAA,EAAe,KAAK,CAAA;AAAA,GACpE,CAAA;AACA,EAAO,OAAA,cAAA,GAAiB,cAAe,CAAA,cAAc,CAAI,GAAA,WAAA,CAAA;AAC3D,CAAA,CAAA;AAEa,MAAA,eAAA,GAAkB,CAC7B,IACA,EAAA,KAAA,EACA,SACA,WACA,EAAA,YAAA,EACA,gBACA,WACuB,KAAA;AACvB,EAAA,IAAI,SAAS,OAAS,EAAA;AACpB,IAAI,IAAA,KAAA,KAAU,KAAc,CAAA,IAAA,KAAA,CAAiB,MAAW,KAAA,CAAA;AACtD,MAAO,OAAA,WAAA,CAAA;AACT,IAAK,IAAA,KAAA,CAAiB,WAAW,CAAG,EAAA;AAClC,MAAO,OAAA,cAAA;AAAA,QACL,QAAQ,CAAC,CAAA;AAAA,QACT,OAAA;AAAA,QACA,YAAA;AAAA,QACA,WAAA;AAAA,QACA,cAAA;AAAA,OACF,CAAA;AAAA,KACF;AACA,IAAO,OAAA,aAAA,CAAc,KAAO,EAAA,OAAA,EAAS,WAAW,CAAA,CAAA;AAAA,GAC3C,MAAA;AACL,IAAA,IAAI,KAAU,KAAA,KAAA,CAAA;AAAW,MAAO,OAAA,WAAA,CAAA;AAChC,IAAO,OAAA,cAAA;AAAA,MACL,KAAA;AAAA,MACA,OAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,KACF,CAAA;AAAA,GACF;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/Select/styled.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { Icon, StyleProps } from '@tecsinapse/react-core';\nimport React from 'react';\n\nexport const StyledContainer = styled('div')<Partial<StyleProps>>`\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n width: 100%;\n position: relative;\n`;\n\nexport const StyledInputContainer = styled('div')<Partial<StyleProps>>`\n width: 100%;\n`;\n\nexport const RightComponent = (\n <Icon\n name=\"chevron-down\"\n type=\"material-community\"\n size=\"centi\"\n style={{ marginRight: 12 }}\n />\n);\n"],"names":[],"mappings":";;;;AAIa,MAAA,eAAA,GAAkB,OAAO,KAAK,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAS9B,MAAA,oBAAA,GAAuB,OAAO,KAAK,CAAA,CAAA;AAAA;AAAA,EAAA;AAIzC,MAAM,cACX,mBAAA,KAAA,CAAA,aAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,IAAK,EAAA,cAAA;AAAA,IACL,IAAK,EAAA,oBAAA;AAAA,IACL,IAAK,EAAA,OAAA;AAAA,IACL,KAAA,EAAO,EAAE,WAAA,EAAa,EAAG,EAAA;AAAA,GAAA;AAC3B;;;;"}
1
+ {"version":3,"file":"styled.js","sources":["../../../../../src/components/molecules/Select/styled.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { Icon, StyleProps, Text } from '@tecsinapse/react-core';\nimport React from 'react';\n\nexport const StyledContainer = styled('div')<Partial<StyleProps>>`\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n width: 100%;\n position: relative;\n`;\n\nexport const StyledInputContainer = styled('div')<Partial<StyleProps>>`\n width: 100%;\n`;\n\nexport const RightComponent = (\n <Icon\n name=\"chevron-down\"\n type=\"material-community\"\n size=\"centi\"\n style={{ marginRight: 12 }}\n />\n);\n"],"names":[],"mappings":";;;;AAIa,MAAA,eAAA,GAAkB,OAAO,KAAK,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA;AAS9B,MAAA,oBAAA,GAAuB,OAAO,KAAK,CAAA,CAAA;AAAA;AAAA,EAAA;AAIzC,MAAM,cACX,mBAAA,KAAA,CAAA,aAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,IAAK,EAAA,cAAA;AAAA,IACL,IAAK,EAAA,oBAAA;AAAA,IACL,IAAK,EAAA,OAAA;AAAA,IACL,KAAA,EAAO,EAAE,WAAA,EAAa,EAAG,EAAA;AAAA,GAAA;AAC3B;;;;"}
@@ -0,0 +1,4 @@
1
+ export type MultiLabels = {
2
+ allSelected?: string;
3
+ selection?: (items: number) => string;
4
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tecsinapse/react-web-kit",
3
3
  "description": "TecSinapse React components",
4
- "version": "2.1.2",
4
+ "version": "2.1.4",
5
5
  "license": "MIT",
6
6
  "main": "dist/cjs/index.js",
7
7
  "module": "dist/esm/index.js",
@@ -23,7 +23,7 @@
23
23
  "@emotion/native": "~11.10.0",
24
24
  "@emotion/react": "~11.10.0",
25
25
  "@emotion/styled": "~11.10.0",
26
- "@tecsinapse/react-core": "2.0.4",
26
+ "@tecsinapse/react-core": "2.0.5",
27
27
  "@types/react-native": "^0.71.0",
28
28
  "date-fns": "~2.29.3",
29
29
  "react-native-vector-icons": "~9.2.0",
@@ -43,5 +43,5 @@
43
43
  "react-dom": "^18.0.0",
44
44
  "react-native-web": ">=0.18.0 <1"
45
45
  },
46
- "gitHead": "490ebda1a93d15a4d55e651eb3f4091241f30f3c"
46
+ "gitHead": "2e7aaccf7b464353ded61ee5a45b4e67d429b9b7"
47
47
  }