@tecsinapse/react-native-kit 2.0.9-beta.3 → 2.2.0

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/atoms/Modal/useLazyModalManager.d.ts +2 -2
  2. package/dist/cjs/components/atoms/Modal/useLazyModalManager.js +2 -2
  3. package/dist/cjs/components/atoms/Modal/useLazyModalManager.js.map +1 -1
  4. package/dist/cjs/components/atoms/Modal/useModalManager.js +2 -2
  5. package/dist/cjs/components/atoms/Modal/useModalManager.js.map +1 -1
  6. package/dist/cjs/components/molecules/DatePicker/DatePicker.js +0 -1
  7. package/dist/cjs/components/molecules/DatePicker/DatePicker.js.map +1 -1
  8. package/dist/cjs/components/molecules/DateTimePicker/DateTimePicker.js +0 -1
  9. package/dist/cjs/components/molecules/DateTimePicker/DateTimePicker.js.map +1 -1
  10. package/dist/cjs/components/molecules/Select/Modal.js +0 -1
  11. package/dist/cjs/components/molecules/Select/Modal.js.map +1 -1
  12. package/dist/cjs/components/molecules/Select/Select.js +0 -1
  13. package/dist/cjs/components/molecules/Select/Select.js.map +1 -1
  14. package/dist/esm/components/atoms/Modal/useLazyModalManager.d.ts +2 -2
  15. package/dist/esm/components/atoms/Modal/useLazyModalManager.js +3 -3
  16. package/dist/esm/components/atoms/Modal/useLazyModalManager.js.map +1 -1
  17. package/dist/esm/components/atoms/Modal/useModalManager.js +3 -3
  18. package/dist/esm/components/atoms/Modal/useModalManager.js.map +1 -1
  19. package/dist/esm/components/molecules/DatePicker/DatePicker.js +0 -1
  20. package/dist/esm/components/molecules/DatePicker/DatePicker.js.map +1 -1
  21. package/dist/esm/components/molecules/DateTimePicker/DateTimePicker.js +0 -1
  22. package/dist/esm/components/molecules/DateTimePicker/DateTimePicker.js.map +1 -1
  23. package/dist/esm/components/molecules/Select/Modal.js +0 -1
  24. package/dist/esm/components/molecules/Select/Modal.js.map +1 -1
  25. package/dist/esm/components/molecules/Select/Select.js +0 -1
  26. package/dist/esm/components/molecules/Select/Select.js.map +1 -1
  27. package/package.json +5 -9
@@ -1,5 +1,5 @@
1
- import { ReactElement } from 'react';
2
- import { IBaseModal } from './ui/types';
1
+ import { ReactElement } from "react";
2
+ import { IBaseModal } from "./ui/types";
3
3
  export declare const useLazyModalManager: (modalId?: string) => {
4
4
  requestUpdate: () => void;
5
5
  sync: (modal: ReactElement<IBaseModal>) => null;
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var uuid = require('uuid');
5
4
  var ModalGroupManager = require('./ModalGroupManager.js');
6
5
 
7
6
  const useLazyModalManager = (modalId) => {
8
- const [id] = React.useState(modalId ?? uuid.v4());
7
+ const uid = React.useId();
8
+ const [id] = React.useState(modalId ?? uid);
9
9
  const requestUpdate = React.useCallback(() => ModalGroupManager.modalLifecycle.update(), []);
10
10
  const sync = React.useCallback(
11
11
  (modal) => {
@@ -1 +1 @@
1
- {"version":3,"file":"useLazyModalManager.js","sources":["../../../../../src/components/atoms/Modal/useLazyModalManager.ts"],"sourcesContent":["import { ReactElement, useCallback, useEffect, useState } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\nimport { modalLifecycle } from './ModalGroupManager';\nimport { IBaseModal } from './ui/types';\n\n/**\n * Use this hook to tell the modal lifecycle handler that you want to add\n * a new modal component.\n *\n * @returns\n * @param modalId\n */\nexport const useLazyModalManager = (modalId?: string) => {\n const [id] = useState(modalId ?? uuidv4());\n\n const requestUpdate = useCallback(() => modalLifecycle.update(), []);\n\n const sync = useCallback(\n (modal: ReactElement<IBaseModal>) => {\n modalLifecycle.sync(id, () => modal);\n return null;\n },\n [id]\n );\n\n const show = useCallback(() => {\n modalLifecycle.show(id);\n }, [id]);\n\n const close = useCallback(() => {\n modalLifecycle.close(id);\n }, [id]);\n\n useEffect(() => {\n return () => modalLifecycle.destroy(id);\n }, []);\n\n return {\n requestUpdate,\n sync,\n show,\n close,\n };\n};\n"],"names":["useState","uuidv4","useCallback","modalLifecycle","useEffect"],"mappings":";;;;;;AAYa,MAAA,mBAAA,GAAsB,CAAC,OAAqB,KAAA;AACvD,EAAA,MAAM,CAAC,EAAE,CAAA,GAAIA,cAAS,CAAA,OAAA,IAAWC,SAAQ,CAAA,CAAA;AAEzC,EAAA,MAAM,gBAAgBC,iBAAY,CAAA,MAAMC,iCAAe,MAAO,EAAA,EAAG,EAAE,CAAA,CAAA;AAEnE,EAAA,MAAM,IAAO,GAAAD,iBAAA;AAAA,IACX,CAAC,KAAoC,KAAA;AACnC,MAAeC,gCAAA,CAAA,IAAA,CAAK,EAAI,EAAA,MAAM,KAAK,CAAA,CAAA;AACnC,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAAA,IACA,CAAC,EAAE,CAAA;AAAA,GACL,CAAA;AAEA,EAAM,MAAA,IAAA,GAAOD,kBAAY,MAAM;AAC7B,IAAAC,gCAAA,CAAe,KAAK,EAAE,CAAA,CAAA;AAAA,GACxB,EAAG,CAAC,EAAE,CAAC,CAAA,CAAA;AAEP,EAAM,MAAA,KAAA,GAAQD,kBAAY,MAAM;AAC9B,IAAAC,gCAAA,CAAe,MAAM,EAAE,CAAA,CAAA;AAAA,GACzB,EAAG,CAAC,EAAE,CAAC,CAAA,CAAA;AAEP,EAAAC,eAAA,CAAU,MAAM;AACd,IAAO,OAAA,MAAMD,gCAAe,CAAA,OAAA,CAAQ,EAAE,CAAA,CAAA;AAAA,GACxC,EAAG,EAAE,CAAA,CAAA;AAEL,EAAO,OAAA;AAAA,IACL,aAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,GACF,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"useLazyModalManager.js","sources":["../../../../../src/components/atoms/Modal/useLazyModalManager.ts"],"sourcesContent":["import { ReactElement, useCallback, useEffect, useId, useState } from \"react\";\nimport { modalLifecycle } from \"./ModalGroupManager\";\nimport { IBaseModal } from \"./ui/types\";\n\n/**\n * Use this hook to tell the modal lifecycle handler that you want to add\n * a new modal component.\n *\n * @returns\n * @param modalId\n */\nexport const useLazyModalManager = (modalId?: string) => {\n const uid = useId();\n const [id] = useState(modalId ?? uid);\n\n const requestUpdate = useCallback(() => modalLifecycle.update(), []);\n\n const sync = useCallback(\n (modal: ReactElement<IBaseModal>) => {\n modalLifecycle.sync(id, () => modal);\n return null;\n },\n [id]\n );\n\n const show = useCallback(() => {\n modalLifecycle.show(id);\n }, [id]);\n\n const close = useCallback(() => {\n modalLifecycle.close(id);\n }, [id]);\n\n useEffect(() => {\n return () => modalLifecycle.destroy(id);\n }, []);\n\n return {\n requestUpdate,\n sync,\n show,\n close,\n };\n};\n"],"names":["useId","useState","useCallback","modalLifecycle","useEffect"],"mappings":";;;;;AAWa,MAAA,mBAAA,GAAsB,CAAC,OAAqB,KAAA;AACvD,EAAA,MAAM,MAAMA,WAAM,EAAA,CAAA;AAClB,EAAA,MAAM,CAAC,EAAE,CAAI,GAAAC,cAAA,CAAS,WAAW,GAAG,CAAA,CAAA;AAEpC,EAAA,MAAM,gBAAgBC,iBAAY,CAAA,MAAMC,iCAAe,MAAO,EAAA,EAAG,EAAE,CAAA,CAAA;AAEnE,EAAA,MAAM,IAAO,GAAAD,iBAAA;AAAA,IACX,CAAC,KAAoC,KAAA;AACnC,MAAeC,gCAAA,CAAA,IAAA,CAAK,EAAI,EAAA,MAAM,KAAK,CAAA,CAAA;AACnC,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAAA,IACA,CAAC,EAAE,CAAA;AAAA,GACL,CAAA;AAEA,EAAM,MAAA,IAAA,GAAOD,kBAAY,MAAM;AAC7B,IAAAC,gCAAA,CAAe,KAAK,EAAE,CAAA,CAAA;AAAA,GACxB,EAAG,CAAC,EAAE,CAAC,CAAA,CAAA;AAEP,EAAM,MAAA,KAAA,GAAQD,kBAAY,MAAM;AAC9B,IAAAC,gCAAA,CAAe,MAAM,EAAE,CAAA,CAAA;AAAA,GACzB,EAAG,CAAC,EAAE,CAAC,CAAA,CAAA;AAEP,EAAAC,eAAA,CAAU,MAAM;AACd,IAAO,OAAA,MAAMD,gCAAe,CAAA,OAAA,CAAQ,EAAE,CAAA,CAAA;AAAA,GACxC,EAAG,EAAE,CAAA,CAAA;AAEL,EAAO,OAAA;AAAA,IACL,aAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,GACF,CAAA;AACF;;;;"}
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var uuid = require('uuid');
5
4
  var ModalGroupManager = require('./ModalGroupManager.js');
6
5
 
7
6
  const useModalManager = (modal, modalId) => {
8
- const [id] = React.useState(modalId ?? uuid.v4());
7
+ const uid = React.useId();
8
+ const [id] = React.useState(modalId ?? uid);
9
9
  ModalGroupManager.modalLifecycle.sync(id, modal);
10
10
  const show = React.useCallback(() => {
11
11
  ModalGroupManager.modalLifecycle.show(id);
@@ -1 +1 @@
1
- {"version":3,"file":"useModalManager.js","sources":["../../../../../src/components/atoms/Modal/useModalManager.ts"],"sourcesContent":["import { ReactElement, useCallback, useEffect, useState } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\nimport { modalLifecycle } from './ModalGroupManager';\nimport { IBaseModal } from './ui/types';\n\n/**\n * Use this hook to tell the modal lifecycle handler that you want to add\n * a new modal component.\n *\n * @param id\n * @param modal\n * @returns\n */\nexport const useModalManager = (\n modal: () => ReactElement<IBaseModal>,\n modalId?: string\n) => {\n const [id] = useState(modalId ?? uuidv4());\n modalLifecycle.sync(id, modal);\n\n const show = useCallback(() => {\n modalLifecycle.show(id);\n }, [id]);\n\n const close = useCallback(() => {\n modalLifecycle.close(id);\n }, [id]);\n\n useEffect(() => {\n return () => modalLifecycle.destroy(id);\n }, []);\n\n return {\n show,\n close,\n };\n};\n"],"names":["useState","uuidv4","modalLifecycle","useCallback","useEffect"],"mappings":";;;;;;AAaa,MAAA,eAAA,GAAkB,CAC7B,KAAA,EACA,OACG,KAAA;AACH,EAAA,MAAM,CAAC,EAAE,CAAA,GAAIA,cAAS,CAAA,OAAA,IAAWC,SAAQ,CAAA,CAAA;AACzC,EAAeC,gCAAA,CAAA,IAAA,CAAK,IAAI,KAAK,CAAA,CAAA;AAE7B,EAAM,MAAA,IAAA,GAAOC,kBAAY,MAAM;AAC7B,IAAAD,gCAAA,CAAe,KAAK,EAAE,CAAA,CAAA;AAAA,GACxB,EAAG,CAAC,EAAE,CAAC,CAAA,CAAA;AAEP,EAAM,MAAA,KAAA,GAAQC,kBAAY,MAAM;AAC9B,IAAAD,gCAAA,CAAe,MAAM,EAAE,CAAA,CAAA;AAAA,GACzB,EAAG,CAAC,EAAE,CAAC,CAAA,CAAA;AAEP,EAAAE,eAAA,CAAU,MAAM;AACd,IAAO,OAAA,MAAMF,gCAAe,CAAA,OAAA,CAAQ,EAAE,CAAA,CAAA;AAAA,GACxC,EAAG,EAAE,CAAA,CAAA;AAEL,EAAO,OAAA;AAAA,IACL,IAAA;AAAA,IACA,KAAA;AAAA,GACF,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"useModalManager.js","sources":["../../../../../src/components/atoms/Modal/useModalManager.ts"],"sourcesContent":["import { ReactElement, useCallback, useEffect, useId, useState } from 'react';\nimport { modalLifecycle } from './ModalGroupManager';\nimport { IBaseModal } from './ui/types';\n\n/**\n * Use this hook to tell the modal lifecycle handler that you want to add\n * a new modal component.\n *\n * @param modalId\n * @param modal\n * @returns\n */\nexport const useModalManager = (\n modal: () => ReactElement<IBaseModal>,\n modalId?: string\n) => {\n const uid = useId();\n const [id] = useState(modalId ?? uid);\n modalLifecycle.sync(id, modal);\n\n const show = useCallback(() => {\n modalLifecycle.show(id);\n }, [id]);\n\n const close = useCallback(() => {\n modalLifecycle.close(id);\n }, [id]);\n\n useEffect(() => {\n return () => modalLifecycle.destroy(id);\n }, []);\n\n return {\n show,\n close,\n };\n};\n"],"names":["useId","useState","modalLifecycle","useCallback","useEffect"],"mappings":";;;;;AAYa,MAAA,eAAA,GAAkB,CAC7B,KAAA,EACA,OACG,KAAA;AACH,EAAA,MAAM,MAAMA,WAAM,EAAA,CAAA;AAClB,EAAA,MAAM,CAAC,EAAE,CAAI,GAAAC,cAAA,CAAS,WAAW,GAAG,CAAA,CAAA;AACpC,EAAeC,gCAAA,CAAA,IAAA,CAAK,IAAI,KAAK,CAAA,CAAA;AAE7B,EAAM,MAAA,IAAA,GAAOC,kBAAY,MAAM;AAC7B,IAAAD,gCAAA,CAAe,KAAK,EAAE,CAAA,CAAA;AAAA,GACxB,EAAG,CAAC,EAAE,CAAC,CAAA,CAAA;AAEP,EAAM,MAAA,KAAA,GAAQC,kBAAY,MAAM;AAC9B,IAAAD,gCAAA,CAAe,MAAM,EAAE,CAAA,CAAA;AAAA,GACzB,EAAG,CAAC,EAAE,CAAC,CAAA,CAAA;AAEP,EAAAE,eAAA,CAAU,MAAM;AACd,IAAO,OAAA,MAAMF,gCAAe,CAAA,OAAA,CAAQ,EAAE,CAAA,CAAA;AAAA,GACxC,EAAG,EAAE,CAAA,CAAA;AAEL,EAAO,OAAA;AAAA,IACL,IAAA;AAAA,IACA,KAAA;AAAA,GACF,CAAA;AACF;;;;"}
@@ -5,7 +5,6 @@ var React = require('react');
5
5
  var date = require('../../../utils/date.js');
6
6
  require('react-native');
7
7
  var BaseModalView = require('../../atoms/Modal/ui/BaseModalView.js');
8
- require('uuid');
9
8
  var useLazyModalManager = require('../../atoms/Modal/useLazyModalManager.js');
10
9
  var Text = require('../../atoms/Text/Text.js');
11
10
  var Calendar = require('../Calendar/Calendar.js');
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","sources":["../../../../../src/components/molecules/DatePicker/DatePicker.tsx"],"sourcesContent":["import {\n DatePicker as DatePickerCore,\n DatePickerProps,\n SelectionType,\n Value,\n} from '@tecsinapse/react-core';\nimport React, { FC } from 'react';\nimport { getLocale } from '../../../utils/date';\nimport { IBaseModal, ModalView, useLazyModalManager } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { Calendar } from '../Calendar';\nimport { CalendarBoxContent } from './styled';\n\nexport type NativeDatePickerProps<T extends SelectionType> = Omit<\n DatePickerProps<T>,\n | 'CalendarComponent'\n | 'renderCalendar'\n | 'requestCloseCalendar'\n | 'requestShowCalendar'\n>;\n\nexport const DatePicker = <T extends SelectionType>({\n locale,\n onChange,\n ...rest\n}: NativeDatePickerProps<T>): JSX.Element => {\n const modal = useLazyModalManager();\n\n const handleChange = (value?: Value<T>) => {\n onChange?.(value);\n modal.requestUpdate();\n };\n\n return (\n <DatePickerCore\n {...rest}\n TextComponent={Text}\n CalendarComponent={Calendar}\n locale={locale ?? getLocale()}\n onChange={handleChange}\n requestShowCalendar={modal.show}\n requestCloseCalendar={modal.close}\n renderCalendar={(calendar, blur) =>\n modal.sync(<NativeModal onClose={blur}>{calendar}</NativeModal>)\n }\n />\n );\n};\n\nconst NativeModal: FC<IBaseModal> = ({ children, ...others }) => {\n return (\n <ModalView BoxComponent={CalendarBoxContent} {...others}>\n {children}\n </ModalView>\n );\n};\n"],"names":["useLazyModalManager","DatePickerCore","Calendar","getLocale","ModalView","CalendarBoxContent"],"mappings":";;;;;;;;;;;;;AAqBO,MAAM,aAAa,CAA0B;AAAA,EAClD,MAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG,IAAA;AACL,CAA6C,KAAA;AAC3C,EAAA,MAAM,QAAQA,uCAAoB,EAAA,CAAA;AAElC,EAAM,MAAA,YAAA,GAAe,CAAC,KAAqB,KAAA;AACzC,IAAA,QAAA,GAAW,KAAK,CAAA,CAAA;AAChB,IAAA,KAAA,CAAM,aAAc,EAAA,CAAA;AAAA,GACtB,CAAA;AAEA,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAACC,oBAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,aAAe,EAAA,IAAA;AAAA,MACf,iBAAmB,EAAAC,iBAAA;AAAA,MACnB,MAAA,EAAQ,UAAUC,cAAU,EAAA;AAAA,MAC5B,QAAU,EAAA,YAAA;AAAA,MACV,qBAAqB,KAAM,CAAA,IAAA;AAAA,MAC3B,sBAAsB,KAAM,CAAA,KAAA;AAAA,MAC5B,cAAA,EAAgB,CAAC,QAAA,EAAU,IACzB,KAAA,KAAA,CAAM,IAAK,iBAAA,KAAA,CAAA,aAAA,CAAC,WAAY,EAAA,EAAA,OAAA,EAAS,IAAO,EAAA,EAAA,QAAS,CAAc,CAAA;AAAA,KAAA;AAAA,GAEnE,CAAA;AAEJ,EAAA;AAEA,MAAM,cAA8B,CAAC,EAAE,QAAU,EAAA,GAAG,QAAa,KAAA;AAC/D,EAAA,2CACGC,uBAAU,EAAA,EAAA,YAAA,EAAcC,yBAAqB,EAAA,GAAG,UAC9C,QACH,CAAA,CAAA;AAEJ,CAAA;;;;"}
1
+ {"version":3,"file":"DatePicker.js","sources":["../../../../../src/components/molecules/DatePicker/DatePicker.tsx"],"sourcesContent":["import {\n DatePicker as DatePickerCore,\n DatePickerProps,\n SelectionType,\n Value,\n} from '@tecsinapse/react-core';\nimport React, { FC } from 'react';\nimport { getLocale } from '../../../utils/date';\nimport { IBaseModal, ModalView, useLazyModalManager } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { Calendar } from '../Calendar';\nimport { CalendarBoxContent } from './styled';\n\nexport type NativeDatePickerProps<T extends SelectionType> = Omit<\n DatePickerProps<T>,\n | 'CalendarComponent'\n | 'renderCalendar'\n | 'requestCloseCalendar'\n | 'requestShowCalendar'\n>;\n\nexport const DatePicker = <T extends SelectionType>({\n locale,\n onChange,\n ...rest\n}: NativeDatePickerProps<T>): JSX.Element => {\n const modal = useLazyModalManager();\n\n const handleChange = (value?: Value<T>) => {\n onChange?.(value);\n modal.requestUpdate();\n };\n\n return (\n <DatePickerCore\n {...rest}\n TextComponent={Text}\n CalendarComponent={Calendar}\n locale={locale ?? getLocale()}\n onChange={handleChange}\n requestShowCalendar={modal.show}\n requestCloseCalendar={modal.close}\n renderCalendar={(calendar, blur) =>\n modal.sync(<NativeModal onClose={blur}>{calendar}</NativeModal>)\n }\n />\n );\n};\n\nconst NativeModal: FC<IBaseModal> = ({ children, ...others }) => {\n return (\n <ModalView BoxComponent={CalendarBoxContent} {...others}>\n {children}\n </ModalView>\n );\n};\n"],"names":["useLazyModalManager","DatePickerCore","Calendar","getLocale","ModalView","CalendarBoxContent"],"mappings":";;;;;;;;;;;;AAqBO,MAAM,aAAa,CAA0B;AAAA,EAClD,MAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG,IAAA;AACL,CAA6C,KAAA;AAC3C,EAAA,MAAM,QAAQA,uCAAoB,EAAA,CAAA;AAElC,EAAM,MAAA,YAAA,GAAe,CAAC,KAAqB,KAAA;AACzC,IAAA,QAAA,GAAW,KAAK,CAAA,CAAA;AAChB,IAAA,KAAA,CAAM,aAAc,EAAA,CAAA;AAAA,GACtB,CAAA;AAEA,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAACC,oBAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,aAAe,EAAA,IAAA;AAAA,MACf,iBAAmB,EAAAC,iBAAA;AAAA,MACnB,MAAA,EAAQ,UAAUC,cAAU,EAAA;AAAA,MAC5B,QAAU,EAAA,YAAA;AAAA,MACV,qBAAqB,KAAM,CAAA,IAAA;AAAA,MAC3B,sBAAsB,KAAM,CAAA,KAAA;AAAA,MAC5B,cAAA,EAAgB,CAAC,QAAA,EAAU,IACzB,KAAA,KAAA,CAAM,IAAK,iBAAA,KAAA,CAAA,aAAA,CAAC,WAAY,EAAA,EAAA,OAAA,EAAS,IAAO,EAAA,EAAA,QAAS,CAAc,CAAA;AAAA,KAAA;AAAA,GAEnE,CAAA;AAEJ,EAAA;AAEA,MAAM,cAA8B,CAAC,EAAE,QAAU,EAAA,GAAG,QAAa,KAAA;AAC/D,EAAA,2CACGC,uBAAU,EAAA,EAAA,YAAA,EAAcC,yBAAqB,EAAA,GAAG,UAC9C,QACH,CAAA,CAAA;AAEJ,CAAA;;;;"}
@@ -5,7 +5,6 @@ var React = require('react');
5
5
  var date = require('../../../utils/date.js');
6
6
  require('react-native');
7
7
  var BaseModalView = require('../../atoms/Modal/ui/BaseModalView.js');
8
- require('uuid');
9
8
  var useLazyModalManager = require('../../atoms/Modal/useLazyModalManager.js');
10
9
  var Text = require('../../atoms/Text/Text.js');
11
10
  var DateTimeSelector = require('../DateTimeSelector/DateTimeSelector.js');
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimePicker.js","sources":["../../../../../src/components/molecules/DateTimePicker/DateTimePicker.tsx"],"sourcesContent":["import {\n DateTimePicker as DateTimePickerCore,\n DateTimePickerProps,\n} from '@tecsinapse/react-core';\nimport React, { FC } from 'react';\nimport { getLocale } from '../../../utils/date';\nimport { IBaseModal, ModalView, useLazyModalManager } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { DateTimeSelector } from '../DateTimeSelector';\n\nexport type NativeDateTimePickerProps = Omit<\n DateTimePickerProps,\n | 'DateTimeSelectorComponent'\n | 'renderSelector'\n | 'requestCloseSelector'\n | 'requestShowSelector'\n>;\n\nexport const DateTimePicker: FC<NativeDateTimePickerProps> = ({\n locale,\n ...rest\n}) => {\n const modal = useLazyModalManager();\n\n return (\n <DateTimePickerCore\n {...rest}\n TextComponent={Text}\n DateTimeSelectorComponent={DateTimeSelector}\n locale={locale ?? getLocale()}\n requestShowSelector={() => modal.show()}\n requestCloseSelector={() => modal.close()}\n renderSelector={(selector, blur) =>\n modal.sync(<NativeModal onClose={blur}>{selector}</NativeModal>)\n }\n />\n );\n};\n\nconst NativeModal: FC<IBaseModal> = ({ children, ...others }) => {\n return <ModalView {...others}>{children}</ModalView>;\n};\n"],"names":["useLazyModalManager","DateTimePickerCore","DateTimeSelector","getLocale","ModalView"],"mappings":";;;;;;;;;;;;AAkBO,MAAM,iBAAgD,CAAC;AAAA,EAC5D,MAAA;AAAA,EACA,GAAG,IAAA;AACL,CAAM,KAAA;AACJ,EAAA,MAAM,QAAQA,uCAAoB,EAAA,CAAA;AAElC,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAACC,wBAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,aAAe,EAAA,IAAA;AAAA,MACf,yBAA2B,EAAAC,iCAAA;AAAA,MAC3B,MAAA,EAAQ,UAAUC,cAAU,EAAA;AAAA,MAC5B,mBAAA,EAAqB,MAAM,KAAA,CAAM,IAAK,EAAA;AAAA,MACtC,oBAAA,EAAsB,MAAM,KAAA,CAAM,KAAM,EAAA;AAAA,MACxC,cAAA,EAAgB,CAAC,QAAA,EAAU,IACzB,KAAA,KAAA,CAAM,IAAK,iBAAA,KAAA,CAAA,aAAA,CAAC,WAAY,EAAA,EAAA,OAAA,EAAS,IAAO,EAAA,EAAA,QAAS,CAAc,CAAA;AAAA,KAAA;AAAA,GAEnE,CAAA;AAEJ,EAAA;AAEA,MAAM,cAA8B,CAAC,EAAE,QAAU,EAAA,GAAG,QAAa,KAAA;AAC/D,EAAA,uBAAQ,KAAA,CAAA,aAAA,CAAAC,uBAAA,EAAA,EAAW,GAAG,MAAA,EAAA,EAAS,QAAS,CAAA,CAAA;AAC1C,CAAA;;;;"}
1
+ {"version":3,"file":"DateTimePicker.js","sources":["../../../../../src/components/molecules/DateTimePicker/DateTimePicker.tsx"],"sourcesContent":["import {\n DateTimePicker as DateTimePickerCore,\n DateTimePickerProps,\n} from '@tecsinapse/react-core';\nimport React, { FC } from 'react';\nimport { getLocale } from '../../../utils/date';\nimport { IBaseModal, ModalView, useLazyModalManager } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { DateTimeSelector } from '../DateTimeSelector';\n\nexport type NativeDateTimePickerProps = Omit<\n DateTimePickerProps,\n | 'DateTimeSelectorComponent'\n | 'renderSelector'\n | 'requestCloseSelector'\n | 'requestShowSelector'\n>;\n\nexport const DateTimePicker: FC<NativeDateTimePickerProps> = ({\n locale,\n ...rest\n}) => {\n const modal = useLazyModalManager();\n\n return (\n <DateTimePickerCore\n {...rest}\n TextComponent={Text}\n DateTimeSelectorComponent={DateTimeSelector}\n locale={locale ?? getLocale()}\n requestShowSelector={() => modal.show()}\n requestCloseSelector={() => modal.close()}\n renderSelector={(selector, blur) =>\n modal.sync(<NativeModal onClose={blur}>{selector}</NativeModal>)\n }\n />\n );\n};\n\nconst NativeModal: FC<IBaseModal> = ({ children, ...others }) => {\n return <ModalView {...others}>{children}</ModalView>;\n};\n"],"names":["useLazyModalManager","DateTimePickerCore","DateTimeSelector","getLocale","ModalView"],"mappings":";;;;;;;;;;;AAkBO,MAAM,iBAAgD,CAAC;AAAA,EAC5D,MAAA;AAAA,EACA,GAAG,IAAA;AACL,CAAM,KAAA;AACJ,EAAA,MAAM,QAAQA,uCAAoB,EAAA,CAAA;AAElC,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAACC,wBAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,aAAe,EAAA,IAAA;AAAA,MACf,yBAA2B,EAAAC,iCAAA;AAAA,MAC3B,MAAA,EAAQ,UAAUC,cAAU,EAAA;AAAA,MAC5B,mBAAA,EAAqB,MAAM,KAAA,CAAM,IAAK,EAAA;AAAA,MACtC,oBAAA,EAAsB,MAAM,KAAA,CAAM,KAAM,EAAA;AAAA,MACxC,cAAA,EAAgB,CAAC,QAAA,EAAU,IACzB,KAAA,KAAA,CAAM,IAAK,iBAAA,KAAA,CAAA,aAAA,CAAC,WAAY,EAAA,EAAA,OAAA,EAAS,IAAO,EAAA,EAAA,QAAS,CAAc,CAAA;AAAA,KAAA;AAAA,GAEnE,CAAA;AAEJ,EAAA;AAEA,MAAM,cAA8B,CAAC,EAAE,QAAU,EAAA,GAAG,QAAa,KAAA;AAC/D,EAAA,uBAAQ,KAAA,CAAA,aAAA,CAAAC,uBAAA,EAAA,EAAW,GAAG,MAAA,EAAA,EAAS,QAAS,CAAA,CAAA;AAC1C,CAAA;;;;"}
@@ -8,7 +8,6 @@ var Text = require('../../atoms/Text/Text.js');
8
8
  var Header = require('../../atoms/Header/Header.js');
9
9
  var Input = require('../../atoms/Input/Input.js');
10
10
  var BaseModalView = require('../../atoms/Modal/ui/BaseModalView.js');
11
- require('uuid');
12
11
  var styled = require('./styled.js');
13
12
 
14
13
  function _interopNamespaceDefault(e) {
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sources":["../../../../../src/components/molecules/Select/Modal.tsx"],"sourcesContent":["import {\n Checkbox,\n getStatusBarHeight,\n RadioButton,\n RFValue,\n useDebouncedState,\n} from '@tecsinapse/react-core';\nimport * as React from 'react';\nimport { FlatList, ListRenderItemInfo, View } from 'react-native';\nimport { Button } from '../../atoms/Button';\nimport { Header } from '../../atoms/Header';\nimport { Input } from '../../atoms/Input';\nimport { IBaseModal, ModalView } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { SelectNativeProps } from './Select';\nimport {\n FetchIndicator,\n getStyledModal,\n ListItem,\n ModalFooter,\n SearchBarContainer,\n SelectIcon,\n TextTitleModal,\n StyledTextItemSelect,\n} from './styled';\n\ninterface LoadingProps {\n loading?: boolean;\n}\n\nconst Component = <Data, Type extends 'single' | 'multi'>({\n options,\n keyExtractor,\n labelExtractor,\n hideSearchBar,\n searchBarPlaceholder,\n focused,\n type,\n value,\n onSelect,\n onSearch,\n selectModalTitle,\n selectModalTitleComponent,\n confirmButtonText,\n loading,\n close,\n closeOnPick,\n ...others\n}: SelectNativeProps<Data, Type> & LoadingProps & IBaseModal): JSX.Element => {\n const [selectedValues, setSelectedValues] = React.useState<Data[]>([]);\n const [searchArg, setSearchArg] = useDebouncedState<string>('', onSearch);\n const ModalComponent = React.useMemo(\n () => getStyledModal(getStatusBarHeight(true)),\n []\n );\n const _closeOnPick = closeOnPick && type === 'single';\n\n // Resets the temporary state to the initial state whenever the\n // modal is reopened or the value changes\n React.useEffect(() => {\n setSelectedValues(\n (value ? (type === 'multi' ? value : [value]) : []) as Data[]\n );\n }, [value, focused, setSelectedValues]);\n\n const getData = React.useCallback(\n (options: Data[]) => {\n return options?.map((option, index) => ({\n ...option,\n _checked:\n type === 'multi'\n ? !!selectedValues.find(\n value =>\n keyExtractor(option, index) == keyExtractor(value, index)\n )\n : keyExtractor((selectedValues[0] || {}) as Data, index) ==\n keyExtractor(option, index),\n }));\n },\n [keyExtractor, selectedValues, type]\n );\n\n const data = React.useMemo(\n () => (typeof options !== 'function' ? getData(options) : []),\n [options, getData]\n );\n\n const handlePressItem = React.useCallback(\n (option: Data) => {\n setSelectedValues(selectedValues => {\n if (type === 'multi') {\n const newArr: Data[] = [];\n let found = false;\n for (const value of selectedValues) {\n if (keyExtractor(value) != keyExtractor(option)) newArr.push(value);\n else found = true;\n }\n if (!found) newArr.push(option);\n return newArr;\n }\n return keyExtractor((selectedValues[0] || {}) as Data) ===\n keyExtractor(option)\n ? []\n : [option];\n });\n },\n [selectedValues, setSelectedValues, keyExtractor, type]\n );\n\n React.useEffect(() => {\n if (_closeOnPick && selectedValues[0] && selectedValues[0] !== value) {\n handleConfirm();\n }\n }, [selectedValues[0], value, closeOnPick]);\n\n const handleConfirm = React.useCallback(() => {\n // TS Workaround since TS won't infer the ternary operator's result type correctly\n type OnSelectArg = Parameters<typeof onSelect>[0];\n onSelect(\n (type === 'single' ? selectedValues[0] : selectedValues) as OnSelectArg\n );\n close?.();\n }, [selectedValues]);\n\n const optionBuilder = React.useCallback(\n ({ item }: ListRenderItemInfo<Data & { _checked: boolean }>) => (\n <MemoizedOption\n item={item}\n type={type}\n handlePressItem={handlePressItem}\n labelExtractor={labelExtractor}\n />\n ),\n []\n );\n\n const anyChecked = data.filter(item => item._checked).length;\n const dataLengthChanged = data.length;\n\n const memoizedFlatlist = React.useMemo(\n () => (\n <FlatList\n data={data}\n keyExtractor={keyExtractor}\n fadingEdgeLength={200}\n renderItem={optionBuilder}\n />\n ),\n [selectedValues, anyChecked, dataLengthChanged]\n );\n\n const titleTextModal = selectModalTitle ? (\n <TextTitleModal\n typography=\"h4\"\n fontWeight=\"bold\"\n numberOfLines={3}\n style={{ maxWidth: RFValue(250) }}\n >\n {selectModalTitle}\n </TextTitleModal>\n ) : null;\n\n const headerContent = selectModalTitleComponent\n ? selectModalTitleComponent\n : titleTextModal;\n\n return (\n <ModalView {...others} BoxComponent={ModalComponent} showCloseBar={false}>\n <Header\n rightButton={{\n onPress: close,\n icon: {\n name: 'close',\n type: 'material-community',\n fontColor: 'light',\n },\n }}\n >\n {headerContent}\n </Header>\n\n {!hideSearchBar && (\n <SearchBarContainer>\n <Input\n placeholder={searchBarPlaceholder}\n value={searchArg}\n onChange={setSearchArg}\n leftComponent={\n <SelectIcon name=\"search\" type=\"ionicon\" size=\"centi\" />\n }\n />\n </SearchBarContainer>\n )}\n\n {loading && (\n <FetchIndicator animating={true} color={'grey'} size={'large'} />\n )}\n\n {memoizedFlatlist}\n\n {!_closeOnPick && (\n <ModalFooter>\n <Button\n variant={'filled'}\n color={'primary'}\n onPress={handleConfirm}\n disabled={loading}\n >\n <Text fontColor={'light'} fontWeight=\"bold\">\n {confirmButtonText}\n </Text>\n </Button>\n </ModalFooter>\n )}\n </ModalView>\n );\n};\n\ninterface IOption<T> {\n item: T & { _checked: boolean };\n type: 'single' | 'multi';\n labelExtractor: (option: T) => string;\n handlePressItem: (option: T) => void;\n}\n\nconst MemoizedOption = <T,>({\n handlePressItem,\n labelExtractor,\n item,\n type,\n}: IOption<T>): JSX.Element => {\n return React.useMemo(() => {\n const label = labelExtractor(item);\n return (\n <ListItem onPress={() => handlePressItem(item)}>\n <View pointerEvents={'none'}>\n {type === 'multi' ? (\n <Checkbox\n color={'primary'}\n labelPosition={'right'}\n checked={item._checked}\n >\n <StyledTextItemSelect\n fontWeight={item._checked ? 'bold' : 'regular'}\n ellipsizeMode={'tail'}\n numberOfLines={1}\n >\n {label}\n </StyledTextItemSelect>\n </Checkbox>\n ) : (\n <RadioButton\n color={'primary'}\n labelPosition={'right'}\n checked={item._checked}\n >\n <StyledTextItemSelect\n fontWeight={item._checked ? 'bold' : 'regular'}\n ellipsizeMode={'tail'}\n numberOfLines={1}\n >\n {label}\n </StyledTextItemSelect>\n </RadioButton>\n )}\n </View>\n </ListItem>\n );\n }, [item._checked]);\n};\n\nexport const Modal = Component;\n"],"names":["React","useDebouncedState","getStyledModal","getStatusBarHeight","options","value","selectedValues","FlatList","TextTitleModal","RFValue","ModalView","SearchBarContainer","SelectIcon","FetchIndicator","ModalFooter","Button","ListItem","View","Checkbox","StyledTextItemSelect","RadioButton"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,MAAM,YAAY,CAAwC;AAAA,EACxD,OAAA;AAAA,EACA,YAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,yBAAA;AAAA,EACA,iBAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,GAAG,MAAA;AACL,CAA8E,KAAA;AAC5E,EAAA,MAAM,CAAC,cAAgB,EAAA,iBAAiB,IAAIA,gBAAM,CAAA,QAAA,CAAiB,EAAE,CAAA,CAAA;AACrE,EAAA,MAAM,CAAC,SAAW,EAAA,YAAY,CAAI,GAAAC,2BAAA,CAA0B,IAAI,QAAQ,CAAA,CAAA;AACxE,EAAA,MAAM,iBAAiBD,gBAAM,CAAA,OAAA;AAAA,IAC3B,MAAME,qBAAA,CAAeC,4BAAmB,CAAA,IAAI,CAAC,CAAA;AAAA,IAC7C,EAAC;AAAA,GACH,CAAA;AACA,EAAM,MAAA,YAAA,GAAe,eAAe,IAAS,KAAA,QAAA,CAAA;AAI7C,EAAAH,gBAAA,CAAM,UAAU,MAAM;AACpB,IAAA,iBAAA;AAAA,MACG,QAAS,IAAS,KAAA,OAAA,GAAU,QAAQ,CAAC,KAAK,IAAK,EAAC;AAAA,KACnD,CAAA;AAAA,GACC,EAAA,CAAC,KAAO,EAAA,OAAA,EAAS,iBAAiB,CAAC,CAAA,CAAA;AAEtC,EAAA,MAAM,UAAUA,gBAAM,CAAA,WAAA;AAAA,IACpB,CAACI,QAAoB,KAAA;AACnB,MAAA,OAAOA,QAAS,EAAA,GAAA,CAAI,CAAC,MAAA,EAAQ,KAAW,MAAA;AAAA,QACtC,GAAG,MAAA;AAAA,QACH,QACE,EAAA,IAAA,KAAS,OACL,GAAA,CAAC,CAAC,cAAe,CAAA,IAAA;AAAA,UACf,CAAAC,WACE,YAAa,CAAA,MAAA,EAAQ,KAAK,CAAK,IAAA,YAAA,CAAaA,QAAO,KAAK,CAAA;AAAA,SAC5D,GACA,YAAc,CAAA,cAAA,CAAe,CAAC,CAAA,IAAK,EAAC,EAAY,KAAK,CAAA,IACrD,YAAa,CAAA,MAAA,EAAQ,KAAK,CAAA;AAAA,OAChC,CAAA,CAAA,CAAA;AAAA,KACJ;AAAA,IACA,CAAC,YAAc,EAAA,cAAA,EAAgB,IAAI,CAAA;AAAA,GACrC,CAAA;AAEA,EAAA,MAAM,OAAOL,gBAAM,CAAA,OAAA;AAAA,IACjB,MAAO,OAAO,OAAA,KAAY,aAAa,OAAQ,CAAA,OAAO,IAAI,EAAC;AAAA,IAC3D,CAAC,SAAS,OAAO,CAAA;AAAA,GACnB,CAAA;AAEA,EAAA,MAAM,kBAAkBA,gBAAM,CAAA,WAAA;AAAA,IAC5B,CAAC,MAAiB,KAAA;AAChB,MAAA,iBAAA,CAAkB,CAAAM,eAAkB,KAAA;AAClC,QAAA,IAAI,SAAS,OAAS,EAAA;AACpB,UAAA,MAAM,SAAiB,EAAC,CAAA;AACxB,UAAA,IAAI,KAAQ,GAAA,KAAA,CAAA;AACZ,UAAA,KAAA,MAAWD,UAASC,eAAgB,EAAA;AAClC,YAAA,IAAI,YAAaD,CAAAA,MAAK,CAAK,IAAA,YAAA,CAAa,MAAM,CAAA;AAAG,cAAA,MAAA,CAAO,KAAKA,MAAK,CAAA,CAAA;AAAA;AAC7D,cAAQ,KAAA,GAAA,IAAA,CAAA;AAAA,WACf;AACA,UAAA,IAAI,CAAC,KAAA;AAAO,YAAA,MAAA,CAAO,KAAK,MAAM,CAAA,CAAA;AAC9B,UAAO,OAAA,MAAA,CAAA;AAAA,SACT;AACA,QAAA,OAAO,YAAcC,CAAAA,eAAAA,CAAe,CAAC,CAAA,IAAK,EAAW,CACnD,KAAA,YAAA,CAAa,MAAM,CAAA,GACjB,EAAC,GACD,CAAC,MAAM,CAAA,CAAA;AAAA,OACZ,CAAA,CAAA;AAAA,KACH;AAAA,IACA,CAAC,cAAA,EAAgB,iBAAmB,EAAA,YAAA,EAAc,IAAI,CAAA;AAAA,GACxD,CAAA;AAEA,EAAAN,gBAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,gBAAgB,cAAe,CAAA,CAAC,KAAK,cAAe,CAAA,CAAC,MAAM,KAAO,EAAA;AACpE,MAAc,aAAA,EAAA,CAAA;AAAA,KAChB;AAAA,KACC,CAAC,cAAA,CAAe,CAAC,CAAG,EAAA,KAAA,EAAO,WAAW,CAAC,CAAA,CAAA;AAE1C,EAAM,MAAA,aAAA,GAAgBA,gBAAM,CAAA,WAAA,CAAY,MAAM;AAG5C,IAAA,QAAA;AAAA,MACG,IAAS,KAAA,QAAA,GAAW,cAAe,CAAA,CAAC,CAAI,GAAA,cAAA;AAAA,KAC3C,CAAA;AACA,IAAQ,KAAA,IAAA,CAAA;AAAA,GACV,EAAG,CAAC,cAAc,CAAC,CAAA,CAAA;AAEnB,EAAA,MAAM,gBAAgBA,gBAAM,CAAA,WAAA;AAAA,IAC1B,CAAC,EAAE,IAAA,EACD,qBAAAA,gBAAA,CAAA,aAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,IAAA;AAAA,QACA,eAAA;AAAA,QACA,cAAA;AAAA,OAAA;AAAA,KACF;AAAA,IAEF,EAAC;AAAA,GACH,CAAA;AAEA,EAAA,MAAM,aAAa,IAAK,CAAA,MAAA,CAAO,CAAQ,IAAA,KAAA,IAAA,CAAK,QAAQ,CAAE,CAAA,MAAA,CAAA;AACtD,EAAA,MAAM,oBAAoB,IAAK,CAAA,MAAA,CAAA;AAE/B,EAAA,MAAM,mBAAmBA,gBAAM,CAAA,OAAA;AAAA,IAC7B,sBACEA,gBAAA,CAAA,aAAA;AAAA,MAACO,oBAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,YAAA;AAAA,QACA,gBAAkB,EAAA,GAAA;AAAA,QAClB,UAAY,EAAA,aAAA;AAAA,OAAA;AAAA,KACd;AAAA,IAEF,CAAC,cAAgB,EAAA,UAAA,EAAY,iBAAiB,CAAA;AAAA,GAChD,CAAA;AAEA,EAAA,MAAM,iBAAiB,gBACrB,mBAAAP,gBAAA,CAAA,aAAA;AAAA,IAACQ,qBAAA;AAAA,IAAA;AAAA,MACC,UAAW,EAAA,IAAA;AAAA,MACX,UAAW,EAAA,MAAA;AAAA,MACX,aAAe,EAAA,CAAA;AAAA,MACf,KAAO,EAAA,EAAE,QAAU,EAAAC,iBAAA,CAAQ,GAAG,CAAE,EAAA;AAAA,KAAA;AAAA,IAE/B,gBAAA;AAAA,GAED,GAAA,IAAA,CAAA;AAEJ,EAAM,MAAA,aAAA,GAAgB,4BAClB,yBACA,GAAA,cAAA,CAAA;AAEJ,EAAA,sDACGC,uBAAW,EAAA,EAAA,GAAG,QAAQ,YAAc,EAAA,cAAA,EAAgB,cAAc,KACjE,EAAA,kBAAAV,gBAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,WAAa,EAAA;AAAA,QACX,OAAS,EAAA,KAAA;AAAA,QACT,IAAM,EAAA;AAAA,UACJ,IAAM,EAAA,OAAA;AAAA,UACN,IAAM,EAAA,oBAAA;AAAA,UACN,SAAW,EAAA,OAAA;AAAA,SACb;AAAA,OACF;AAAA,KAAA;AAAA,IAEC,aAAA;AAAA,GAGF,EAAA,CAAC,aACA,oBAAAA,gBAAA,CAAA,aAAA,CAACW,yBACC,EAAA,IAAA,kBAAAX,gBAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAa,EAAA,oBAAA;AAAA,MACb,KAAO,EAAA,SAAA;AAAA,MACP,QAAU,EAAA,YAAA;AAAA,MACV,aAAA,iDACGY,iBAAW,EAAA,EAAA,IAAA,EAAK,UAAS,IAAK,EAAA,SAAA,EAAU,MAAK,OAAQ,EAAA,CAAA;AAAA,KAAA;AAAA,GAG5D,CAGD,EAAA,OAAA,oBACEZ,gBAAA,CAAA,aAAA,CAAAa,qBAAA,EAAA,EAAe,WAAW,IAAM,EAAA,KAAA,EAAO,MAAQ,EAAA,IAAA,EAAM,SAAS,CAGhE,EAAA,gBAAA,EAEA,CAAC,YAAA,mDACCC,kBACC,EAAA,IAAA,kBAAAd,gBAAA,CAAA,aAAA;AAAA,IAACe,aAAA;AAAA,IAAA;AAAA,MACC,OAAS,EAAA,QAAA;AAAA,MACT,KAAO,EAAA,SAAA;AAAA,MACP,OAAS,EAAA,aAAA;AAAA,MACT,QAAU,EAAA,OAAA;AAAA,KAAA;AAAA,mDAET,IAAK,EAAA,EAAA,SAAA,EAAW,OAAS,EAAA,UAAA,EAAW,UAClC,iBACH,CAAA;AAAA,GAEJ,CAEJ,CAAA,CAAA;AAEJ,CAAA,CAAA;AASA,MAAM,iBAAiB,CAAK;AAAA,EAC1B,eAAA;AAAA,EACA,cAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AACF,CAA+B,KAAA;AAC7B,EAAO,OAAAf,gBAAA,CAAM,QAAQ,MAAM;AACzB,IAAM,MAAA,KAAA,GAAQ,eAAe,IAAI,CAAA,CAAA;AACjC,IAAA,uBACGA,gBAAA,CAAA,aAAA,CAAAgB,eAAA,EAAA,EAAS,OAAS,EAAA,MAAM,eAAgB,CAAA,IAAI,CAC3C,EAAA,kBAAAhB,gBAAA,CAAA,aAAA,CAACiB,gBAAK,EAAA,EAAA,aAAA,EAAe,MAClB,EAAA,EAAA,IAAA,KAAS,OACR,mBAAAjB,gBAAA,CAAA,aAAA;AAAA,MAACkB,kBAAA;AAAA,MAAA;AAAA,QACC,KAAO,EAAA,SAAA;AAAA,QACP,aAAe,EAAA,OAAA;AAAA,QACf,SAAS,IAAK,CAAA,QAAA;AAAA,OAAA;AAAA,sBAEdlB,gBAAA,CAAA,aAAA;AAAA,QAACmB,2BAAA;AAAA,QAAA;AAAA,UACC,UAAA,EAAY,IAAK,CAAA,QAAA,GAAW,MAAS,GAAA,SAAA;AAAA,UACrC,aAAe,EAAA,MAAA;AAAA,UACf,aAAe,EAAA,CAAA;AAAA,SAAA;AAAA,QAEd,KAAA;AAAA,OACH;AAAA,KAGF,mBAAAnB,gBAAA,CAAA,aAAA;AAAA,MAACoB,qBAAA;AAAA,MAAA;AAAA,QACC,KAAO,EAAA,SAAA;AAAA,QACP,aAAe,EAAA,OAAA;AAAA,QACf,SAAS,IAAK,CAAA,QAAA;AAAA,OAAA;AAAA,sBAEdpB,gBAAA,CAAA,aAAA;AAAA,QAACmB,2BAAA;AAAA,QAAA;AAAA,UACC,UAAA,EAAY,IAAK,CAAA,QAAA,GAAW,MAAS,GAAA,SAAA;AAAA,UACrC,aAAe,EAAA,MAAA;AAAA,UACf,aAAe,EAAA,CAAA;AAAA,SAAA;AAAA,QAEd,KAAA;AAAA,OACH;AAAA,KAGN,CACF,CAAA,CAAA;AAAA,GAED,EAAA,CAAC,IAAK,CAAA,QAAQ,CAAC,CAAA,CAAA;AACpB,CAAA,CAAA;AAEO,MAAM,KAAQ,GAAA;;;;"}
1
+ {"version":3,"file":"Modal.js","sources":["../../../../../src/components/molecules/Select/Modal.tsx"],"sourcesContent":["import {\n Checkbox,\n getStatusBarHeight,\n RadioButton,\n RFValue,\n useDebouncedState,\n} from '@tecsinapse/react-core';\nimport * as React from 'react';\nimport { FlatList, ListRenderItemInfo, View } from 'react-native';\nimport { Button } from '../../atoms/Button';\nimport { Header } from '../../atoms/Header';\nimport { Input } from '../../atoms/Input';\nimport { IBaseModal, ModalView } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { SelectNativeProps } from './Select';\nimport {\n FetchIndicator,\n getStyledModal,\n ListItem,\n ModalFooter,\n SearchBarContainer,\n SelectIcon,\n TextTitleModal,\n StyledTextItemSelect,\n} from './styled';\n\ninterface LoadingProps {\n loading?: boolean;\n}\n\nconst Component = <Data, Type extends 'single' | 'multi'>({\n options,\n keyExtractor,\n labelExtractor,\n hideSearchBar,\n searchBarPlaceholder,\n focused,\n type,\n value,\n onSelect,\n onSearch,\n selectModalTitle,\n selectModalTitleComponent,\n confirmButtonText,\n loading,\n close,\n closeOnPick,\n ...others\n}: SelectNativeProps<Data, Type> & LoadingProps & IBaseModal): JSX.Element => {\n const [selectedValues, setSelectedValues] = React.useState<Data[]>([]);\n const [searchArg, setSearchArg] = useDebouncedState<string>('', onSearch);\n const ModalComponent = React.useMemo(\n () => getStyledModal(getStatusBarHeight(true)),\n []\n );\n const _closeOnPick = closeOnPick && type === 'single';\n\n // Resets the temporary state to the initial state whenever the\n // modal is reopened or the value changes\n React.useEffect(() => {\n setSelectedValues(\n (value ? (type === 'multi' ? value : [value]) : []) as Data[]\n );\n }, [value, focused, setSelectedValues]);\n\n const getData = React.useCallback(\n (options: Data[]) => {\n return options?.map((option, index) => ({\n ...option,\n _checked:\n type === 'multi'\n ? !!selectedValues.find(\n value =>\n keyExtractor(option, index) == keyExtractor(value, index)\n )\n : keyExtractor((selectedValues[0] || {}) as Data, index) ==\n keyExtractor(option, index),\n }));\n },\n [keyExtractor, selectedValues, type]\n );\n\n const data = React.useMemo(\n () => (typeof options !== 'function' ? getData(options) : []),\n [options, getData]\n );\n\n const handlePressItem = React.useCallback(\n (option: Data) => {\n setSelectedValues(selectedValues => {\n if (type === 'multi') {\n const newArr: Data[] = [];\n let found = false;\n for (const value of selectedValues) {\n if (keyExtractor(value) != keyExtractor(option)) newArr.push(value);\n else found = true;\n }\n if (!found) newArr.push(option);\n return newArr;\n }\n return keyExtractor((selectedValues[0] || {}) as Data) ===\n keyExtractor(option)\n ? []\n : [option];\n });\n },\n [selectedValues, setSelectedValues, keyExtractor, type]\n );\n\n React.useEffect(() => {\n if (_closeOnPick && selectedValues[0] && selectedValues[0] !== value) {\n handleConfirm();\n }\n }, [selectedValues[0], value, closeOnPick]);\n\n const handleConfirm = React.useCallback(() => {\n // TS Workaround since TS won't infer the ternary operator's result type correctly\n type OnSelectArg = Parameters<typeof onSelect>[0];\n onSelect(\n (type === 'single' ? selectedValues[0] : selectedValues) as OnSelectArg\n );\n close?.();\n }, [selectedValues]);\n\n const optionBuilder = React.useCallback(\n ({ item }: ListRenderItemInfo<Data & { _checked: boolean }>) => (\n <MemoizedOption\n item={item}\n type={type}\n handlePressItem={handlePressItem}\n labelExtractor={labelExtractor}\n />\n ),\n []\n );\n\n const anyChecked = data.filter(item => item._checked).length;\n const dataLengthChanged = data.length;\n\n const memoizedFlatlist = React.useMemo(\n () => (\n <FlatList\n data={data}\n keyExtractor={keyExtractor}\n fadingEdgeLength={200}\n renderItem={optionBuilder}\n />\n ),\n [selectedValues, anyChecked, dataLengthChanged]\n );\n\n const titleTextModal = selectModalTitle ? (\n <TextTitleModal\n typography=\"h4\"\n fontWeight=\"bold\"\n numberOfLines={3}\n style={{ maxWidth: RFValue(250) }}\n >\n {selectModalTitle}\n </TextTitleModal>\n ) : null;\n\n const headerContent = selectModalTitleComponent\n ? selectModalTitleComponent\n : titleTextModal;\n\n return (\n <ModalView {...others} BoxComponent={ModalComponent} showCloseBar={false}>\n <Header\n rightButton={{\n onPress: close,\n icon: {\n name: 'close',\n type: 'material-community',\n fontColor: 'light',\n },\n }}\n >\n {headerContent}\n </Header>\n\n {!hideSearchBar && (\n <SearchBarContainer>\n <Input\n placeholder={searchBarPlaceholder}\n value={searchArg}\n onChange={setSearchArg}\n leftComponent={\n <SelectIcon name=\"search\" type=\"ionicon\" size=\"centi\" />\n }\n />\n </SearchBarContainer>\n )}\n\n {loading && (\n <FetchIndicator animating={true} color={'grey'} size={'large'} />\n )}\n\n {memoizedFlatlist}\n\n {!_closeOnPick && (\n <ModalFooter>\n <Button\n variant={'filled'}\n color={'primary'}\n onPress={handleConfirm}\n disabled={loading}\n >\n <Text fontColor={'light'} fontWeight=\"bold\">\n {confirmButtonText}\n </Text>\n </Button>\n </ModalFooter>\n )}\n </ModalView>\n );\n};\n\ninterface IOption<T> {\n item: T & { _checked: boolean };\n type: 'single' | 'multi';\n labelExtractor: (option: T) => string;\n handlePressItem: (option: T) => void;\n}\n\nconst MemoizedOption = <T,>({\n handlePressItem,\n labelExtractor,\n item,\n type,\n}: IOption<T>): JSX.Element => {\n return React.useMemo(() => {\n const label = labelExtractor(item);\n return (\n <ListItem onPress={() => handlePressItem(item)}>\n <View pointerEvents={'none'}>\n {type === 'multi' ? (\n <Checkbox\n color={'primary'}\n labelPosition={'right'}\n checked={item._checked}\n >\n <StyledTextItemSelect\n fontWeight={item._checked ? 'bold' : 'regular'}\n ellipsizeMode={'tail'}\n numberOfLines={1}\n >\n {label}\n </StyledTextItemSelect>\n </Checkbox>\n ) : (\n <RadioButton\n color={'primary'}\n labelPosition={'right'}\n checked={item._checked}\n >\n <StyledTextItemSelect\n fontWeight={item._checked ? 'bold' : 'regular'}\n ellipsizeMode={'tail'}\n numberOfLines={1}\n >\n {label}\n </StyledTextItemSelect>\n </RadioButton>\n )}\n </View>\n </ListItem>\n );\n }, [item._checked]);\n};\n\nexport const Modal = Component;\n"],"names":["React","useDebouncedState","getStyledModal","getStatusBarHeight","options","value","selectedValues","FlatList","TextTitleModal","RFValue","ModalView","SearchBarContainer","SelectIcon","FetchIndicator","ModalFooter","Button","ListItem","View","Checkbox","StyledTextItemSelect","RadioButton"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,MAAM,YAAY,CAAwC;AAAA,EACxD,OAAA;AAAA,EACA,YAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,yBAAA;AAAA,EACA,iBAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,GAAG,MAAA;AACL,CAA8E,KAAA;AAC5E,EAAA,MAAM,CAAC,cAAgB,EAAA,iBAAiB,IAAIA,gBAAM,CAAA,QAAA,CAAiB,EAAE,CAAA,CAAA;AACrE,EAAA,MAAM,CAAC,SAAW,EAAA,YAAY,CAAI,GAAAC,2BAAA,CAA0B,IAAI,QAAQ,CAAA,CAAA;AACxE,EAAA,MAAM,iBAAiBD,gBAAM,CAAA,OAAA;AAAA,IAC3B,MAAME,qBAAA,CAAeC,4BAAmB,CAAA,IAAI,CAAC,CAAA;AAAA,IAC7C,EAAC;AAAA,GACH,CAAA;AACA,EAAM,MAAA,YAAA,GAAe,eAAe,IAAS,KAAA,QAAA,CAAA;AAI7C,EAAAH,gBAAA,CAAM,UAAU,MAAM;AACpB,IAAA,iBAAA;AAAA,MACG,QAAS,IAAS,KAAA,OAAA,GAAU,QAAQ,CAAC,KAAK,IAAK,EAAC;AAAA,KACnD,CAAA;AAAA,GACC,EAAA,CAAC,KAAO,EAAA,OAAA,EAAS,iBAAiB,CAAC,CAAA,CAAA;AAEtC,EAAA,MAAM,UAAUA,gBAAM,CAAA,WAAA;AAAA,IACpB,CAACI,QAAoB,KAAA;AACnB,MAAA,OAAOA,QAAS,EAAA,GAAA,CAAI,CAAC,MAAA,EAAQ,KAAW,MAAA;AAAA,QACtC,GAAG,MAAA;AAAA,QACH,QACE,EAAA,IAAA,KAAS,OACL,GAAA,CAAC,CAAC,cAAe,CAAA,IAAA;AAAA,UACf,CAAAC,WACE,YAAa,CAAA,MAAA,EAAQ,KAAK,CAAK,IAAA,YAAA,CAAaA,QAAO,KAAK,CAAA;AAAA,SAC5D,GACA,YAAc,CAAA,cAAA,CAAe,CAAC,CAAA,IAAK,EAAC,EAAY,KAAK,CAAA,IACrD,YAAa,CAAA,MAAA,EAAQ,KAAK,CAAA;AAAA,OAChC,CAAA,CAAA,CAAA;AAAA,KACJ;AAAA,IACA,CAAC,YAAc,EAAA,cAAA,EAAgB,IAAI,CAAA;AAAA,GACrC,CAAA;AAEA,EAAA,MAAM,OAAOL,gBAAM,CAAA,OAAA;AAAA,IACjB,MAAO,OAAO,OAAA,KAAY,aAAa,OAAQ,CAAA,OAAO,IAAI,EAAC;AAAA,IAC3D,CAAC,SAAS,OAAO,CAAA;AAAA,GACnB,CAAA;AAEA,EAAA,MAAM,kBAAkBA,gBAAM,CAAA,WAAA;AAAA,IAC5B,CAAC,MAAiB,KAAA;AAChB,MAAA,iBAAA,CAAkB,CAAAM,eAAkB,KAAA;AAClC,QAAA,IAAI,SAAS,OAAS,EAAA;AACpB,UAAA,MAAM,SAAiB,EAAC,CAAA;AACxB,UAAA,IAAI,KAAQ,GAAA,KAAA,CAAA;AACZ,UAAA,KAAA,MAAWD,UAASC,eAAgB,EAAA;AAClC,YAAA,IAAI,YAAaD,CAAAA,MAAK,CAAK,IAAA,YAAA,CAAa,MAAM,CAAA;AAAG,cAAA,MAAA,CAAO,KAAKA,MAAK,CAAA,CAAA;AAAA;AAC7D,cAAQ,KAAA,GAAA,IAAA,CAAA;AAAA,WACf;AACA,UAAA,IAAI,CAAC,KAAA;AAAO,YAAA,MAAA,CAAO,KAAK,MAAM,CAAA,CAAA;AAC9B,UAAO,OAAA,MAAA,CAAA;AAAA,SACT;AACA,QAAA,OAAO,YAAcC,CAAAA,eAAAA,CAAe,CAAC,CAAA,IAAK,EAAW,CACnD,KAAA,YAAA,CAAa,MAAM,CAAA,GACjB,EAAC,GACD,CAAC,MAAM,CAAA,CAAA;AAAA,OACZ,CAAA,CAAA;AAAA,KACH;AAAA,IACA,CAAC,cAAA,EAAgB,iBAAmB,EAAA,YAAA,EAAc,IAAI,CAAA;AAAA,GACxD,CAAA;AAEA,EAAAN,gBAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,gBAAgB,cAAe,CAAA,CAAC,KAAK,cAAe,CAAA,CAAC,MAAM,KAAO,EAAA;AACpE,MAAc,aAAA,EAAA,CAAA;AAAA,KAChB;AAAA,KACC,CAAC,cAAA,CAAe,CAAC,CAAG,EAAA,KAAA,EAAO,WAAW,CAAC,CAAA,CAAA;AAE1C,EAAM,MAAA,aAAA,GAAgBA,gBAAM,CAAA,WAAA,CAAY,MAAM;AAG5C,IAAA,QAAA;AAAA,MACG,IAAS,KAAA,QAAA,GAAW,cAAe,CAAA,CAAC,CAAI,GAAA,cAAA;AAAA,KAC3C,CAAA;AACA,IAAQ,KAAA,IAAA,CAAA;AAAA,GACV,EAAG,CAAC,cAAc,CAAC,CAAA,CAAA;AAEnB,EAAA,MAAM,gBAAgBA,gBAAM,CAAA,WAAA;AAAA,IAC1B,CAAC,EAAE,IAAA,EACD,qBAAAA,gBAAA,CAAA,aAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,IAAA;AAAA,QACA,eAAA;AAAA,QACA,cAAA;AAAA,OAAA;AAAA,KACF;AAAA,IAEF,EAAC;AAAA,GACH,CAAA;AAEA,EAAA,MAAM,aAAa,IAAK,CAAA,MAAA,CAAO,CAAQ,IAAA,KAAA,IAAA,CAAK,QAAQ,CAAE,CAAA,MAAA,CAAA;AACtD,EAAA,MAAM,oBAAoB,IAAK,CAAA,MAAA,CAAA;AAE/B,EAAA,MAAM,mBAAmBA,gBAAM,CAAA,OAAA;AAAA,IAC7B,sBACEA,gBAAA,CAAA,aAAA;AAAA,MAACO,oBAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,YAAA;AAAA,QACA,gBAAkB,EAAA,GAAA;AAAA,QAClB,UAAY,EAAA,aAAA;AAAA,OAAA;AAAA,KACd;AAAA,IAEF,CAAC,cAAgB,EAAA,UAAA,EAAY,iBAAiB,CAAA;AAAA,GAChD,CAAA;AAEA,EAAA,MAAM,iBAAiB,gBACrB,mBAAAP,gBAAA,CAAA,aAAA;AAAA,IAACQ,qBAAA;AAAA,IAAA;AAAA,MACC,UAAW,EAAA,IAAA;AAAA,MACX,UAAW,EAAA,MAAA;AAAA,MACX,aAAe,EAAA,CAAA;AAAA,MACf,KAAO,EAAA,EAAE,QAAU,EAAAC,iBAAA,CAAQ,GAAG,CAAE,EAAA;AAAA,KAAA;AAAA,IAE/B,gBAAA;AAAA,GAED,GAAA,IAAA,CAAA;AAEJ,EAAM,MAAA,aAAA,GAAgB,4BAClB,yBACA,GAAA,cAAA,CAAA;AAEJ,EAAA,sDACGC,uBAAW,EAAA,EAAA,GAAG,QAAQ,YAAc,EAAA,cAAA,EAAgB,cAAc,KACjE,EAAA,kBAAAV,gBAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,WAAa,EAAA;AAAA,QACX,OAAS,EAAA,KAAA;AAAA,QACT,IAAM,EAAA;AAAA,UACJ,IAAM,EAAA,OAAA;AAAA,UACN,IAAM,EAAA,oBAAA;AAAA,UACN,SAAW,EAAA,OAAA;AAAA,SACb;AAAA,OACF;AAAA,KAAA;AAAA,IAEC,aAAA;AAAA,GAGF,EAAA,CAAC,aACA,oBAAAA,gBAAA,CAAA,aAAA,CAACW,yBACC,EAAA,IAAA,kBAAAX,gBAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAa,EAAA,oBAAA;AAAA,MACb,KAAO,EAAA,SAAA;AAAA,MACP,QAAU,EAAA,YAAA;AAAA,MACV,aAAA,iDACGY,iBAAW,EAAA,EAAA,IAAA,EAAK,UAAS,IAAK,EAAA,SAAA,EAAU,MAAK,OAAQ,EAAA,CAAA;AAAA,KAAA;AAAA,GAG5D,CAGD,EAAA,OAAA,oBACEZ,gBAAA,CAAA,aAAA,CAAAa,qBAAA,EAAA,EAAe,WAAW,IAAM,EAAA,KAAA,EAAO,MAAQ,EAAA,IAAA,EAAM,SAAS,CAGhE,EAAA,gBAAA,EAEA,CAAC,YAAA,mDACCC,kBACC,EAAA,IAAA,kBAAAd,gBAAA,CAAA,aAAA;AAAA,IAACe,aAAA;AAAA,IAAA;AAAA,MACC,OAAS,EAAA,QAAA;AAAA,MACT,KAAO,EAAA,SAAA;AAAA,MACP,OAAS,EAAA,aAAA;AAAA,MACT,QAAU,EAAA,OAAA;AAAA,KAAA;AAAA,mDAET,IAAK,EAAA,EAAA,SAAA,EAAW,OAAS,EAAA,UAAA,EAAW,UAClC,iBACH,CAAA;AAAA,GAEJ,CAEJ,CAAA,CAAA;AAEJ,CAAA,CAAA;AASA,MAAM,iBAAiB,CAAK;AAAA,EAC1B,eAAA;AAAA,EACA,cAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AACF,CAA+B,KAAA;AAC7B,EAAO,OAAAf,gBAAA,CAAM,QAAQ,MAAM;AACzB,IAAM,MAAA,KAAA,GAAQ,eAAe,IAAI,CAAA,CAAA;AACjC,IAAA,uBACGA,gBAAA,CAAA,aAAA,CAAAgB,eAAA,EAAA,EAAS,OAAS,EAAA,MAAM,eAAgB,CAAA,IAAI,CAC3C,EAAA,kBAAAhB,gBAAA,CAAA,aAAA,CAACiB,gBAAK,EAAA,EAAA,aAAA,EAAe,MAClB,EAAA,EAAA,IAAA,KAAS,OACR,mBAAAjB,gBAAA,CAAA,aAAA;AAAA,MAACkB,kBAAA;AAAA,MAAA;AAAA,QACC,KAAO,EAAA,SAAA;AAAA,QACP,aAAe,EAAA,OAAA;AAAA,QACf,SAAS,IAAK,CAAA,QAAA;AAAA,OAAA;AAAA,sBAEdlB,gBAAA,CAAA,aAAA;AAAA,QAACmB,2BAAA;AAAA,QAAA;AAAA,UACC,UAAA,EAAY,IAAK,CAAA,QAAA,GAAW,MAAS,GAAA,SAAA;AAAA,UACrC,aAAe,EAAA,MAAA;AAAA,UACf,aAAe,EAAA,CAAA;AAAA,SAAA;AAAA,QAEd,KAAA;AAAA,OACH;AAAA,KAGF,mBAAAnB,gBAAA,CAAA,aAAA;AAAA,MAACoB,qBAAA;AAAA,MAAA;AAAA,QACC,KAAO,EAAA,SAAA;AAAA,QACP,aAAe,EAAA,OAAA;AAAA,QACf,SAAS,IAAK,CAAA,QAAA;AAAA,OAAA;AAAA,sBAEdpB,gBAAA,CAAA,aAAA;AAAA,QAACmB,2BAAA;AAAA,QAAA;AAAA,UACC,UAAA,EAAY,IAAK,CAAA,QAAA,GAAW,MAAS,GAAA,SAAA;AAAA,UACrC,aAAe,EAAA,MAAA;AAAA,UACf,aAAe,EAAA,CAAA;AAAA,SAAA;AAAA,QAEd,KAAA;AAAA,OACH;AAAA,KAGN,CACF,CAAA,CAAA;AAAA,GAED,EAAA,CAAC,IAAK,CAAA,QAAQ,CAAC,CAAA,CAAA;AACpB,CAAA,CAAA;AAEO,MAAM,KAAQ,GAAA;;;;"}
@@ -5,7 +5,6 @@ var React = require('react');
5
5
  require('react-native');
6
6
  require('react-native-safe-area-context');
7
7
  require('../../atoms/Modal/ui/styled.js');
8
- require('uuid');
9
8
  var useLazyModalManager = require('../../atoms/Modal/useLazyModalManager.js');
10
9
  var Text = require('../../atoms/Text/Text.js');
11
10
  var Modal = require('./Modal.js');
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../../../../src/components/molecules/Select/Select.tsx"],"sourcesContent":["import {\n HintInputContainer,\n InputContainerProps,\n useInputFocus,\n} from '@tecsinapse/react-core';\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { useLazyModalManager } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { Modal } from './Modal';\nimport { SelectIcon, StyledSelectionText } from './styled';\n\nexport interface SelectNativeProps<Data, Type extends 'single' | 'multi'>\n extends Omit<InputContainerProps, 'value' | 'onChange' | 'onChangeText'> {\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 | null | undefined : Data[];\n type: Type;\n\n keyExtractor: (t: Data, index?: number) => string;\n labelExtractor: (t: Data) => string;\n groupKeyExtractor?: (t: Data) => string;\n\n hideSearchBar?: boolean;\n placeholder?: string;\n onFocus?: () => void | never;\n onBlur?: () => void | never;\n onSearch?:\n | ((searchArg: string) => void)\n | ((searchInput?: string) => Promise<Data[]>)\n | never;\n searchBarPlaceholder?: string;\n confirmButtonText?: string;\n selectModalTitle?: string;\n selectModalTitleComponent?: JSX.Element;\n closeOnPick?: boolean;\n controlComponent?: (\n onPress: () => void,\n displayValue?: string\n ) => JSX.Element;\n numberOfLines?: number;\n}\n\nfunction Select<Data, Type extends 'single' | 'multi'>({\n /** Select props */\n value,\n options,\n keyExtractor,\n groupKeyExtractor,\n onSelect,\n type,\n labelExtractor,\n placeholder,\n onFocus,\n onBlur,\n disabled,\n onSearch,\n selectModalTitle,\n selectModalTitleComponent,\n searchBarPlaceholder,\n hideSearchBar,\n confirmButtonText,\n rightComponent,\n variant = 'default',\n hintComponent,\n hint,\n style,\n controlComponent,\n closeOnPick = type === 'single',\n label,\n numberOfLines,\n ...rest\n}: SelectNativeProps<Data, Type>): JSX.Element {\n const { focused, handleBlur, handleFocus } = useInputFocus(\n onFocus,\n onBlur,\n !disabled\n );\n\n const [selectOptions, setSelectOptions] = useState<Data[]>([]);\n const modal = useLazyModalManager();\n\n // TODO: Add Skeleton to modal height when loading is true\n const [loading, setLoading] = useState<boolean>(false);\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 useEffect(() => {\n if (typeof options !== 'function') {\n setSelectOptions(options);\n }\n }, [options]);\n\n const handleLazyFocus = React.useCallback(async () => {\n if (typeof options === 'function' && !onSearch) {\n setLoading(true);\n try {\n const result = await options();\n if (result) {\n if (\n value &&\n !result.find(v => keyExtractor(value as Data) === keyExtractor(v))\n ) {\n setSelectOptions([value as Data, ...result]);\n } else setSelectOptions(result);\n }\n } catch (e) {\n // TODO: Catch error\n } finally {\n setLoading(false);\n }\n }\n }, [options, value, setSelectOptions]);\n\n const handleOnSearch = React.useCallback(\n async (searchInput: string | undefined) => {\n if (searchInput !== undefined && onSearch) {\n setLoading(true);\n modal.requestUpdate();\n try {\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) {\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 } finally {\n modal.requestUpdate();\n setLoading(false);\n }\n }\n },\n [options, value, keyExtractor]\n );\n\n const getDisplayValue = React.useCallback(() => {\n if (Array.isArray(value)) {\n if (value.length === 0) return _placeholder;\n else {\n const options =\n selectOptions.length > 0 ? selectOptions : (value as Data[]);\n return options\n ?.reduce(\n (acc, option, index) =>\n value.find(\n key => keyExtractor(option, index) == keyExtractor(key, index)\n )\n ? acc + labelExtractor(option) + ', '\n : acc,\n ''\n )\n .slice(0, -2);\n }\n } else {\n if (!value) return _placeholder;\n const selectedOption = selectOptions?.find(\n (option, index) =>\n keyExtractor(option, index) == keyExtractor(value as Data, index)\n );\n return labelExtractor(selectedOption ?? (value as Data));\n }\n }, [_placeholder, value, selectOptions]);\n\n modal.sync(\n <Modal\n options={selectOptions || []}\n focused={true}\n keyExtractor={keyExtractor}\n labelExtractor={labelExtractor}\n groupKeyExtractor={groupKeyExtractor}\n searchBarPlaceholder={searchBarPlaceholder}\n type={type}\n onSelect={onSelect}\n value={value}\n hideSearchBar={hideSearchBar}\n onSearch={handleOnSearch}\n selectModalTitle={selectModalTitle}\n selectModalTitleComponent={selectModalTitleComponent}\n confirmButtonText={confirmButtonText}\n loading={loading}\n onClose={() => {\n if (typeof options === 'function') {\n setSelectOptions([]);\n }\n handleBlur();\n }}\n closeOnPick={closeOnPick}\n />\n );\n\n const handlePressInput = async () => {\n modal.show();\n handleFocus();\n await handleLazyFocus();\n };\n\n return (\n <>\n {controlComponent ? (\n controlComponent(handlePressInput, getDisplayValue() || '')\n ) : (\n <HintInputContainer\n viewStyle={style}\n onPress={handlePressInput}\n focused={focused}\n disabled={disabled}\n LabelComponent={Text}\n variant={variant}\n hint={hint}\n hintComponent={hintComponent}\n label={_label}\n rightComponent={\n <>\n <SelectIcon name=\"chevron-down\" type=\"ionicon\" size=\"centi\" />\n {rightComponent}\n </>\n }\n {...rest}\n >\n <StyledSelectionText\n numberOfLines={numberOfLines}\n fontWeight=\"bold\"\n disabled={disabled}\n >\n {getDisplayValue() || ' '}\n </StyledSelectionText>\n </HintInputContainer>\n )}\n </>\n );\n}\n\nexport default Select;\n"],"names":["useInputFocus","useState","useLazyModalManager","useEffect","React","options","Modal","HintInputContainer","SelectIcon","StyledSelectionText"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","sources":["../../../../../src/components/molecules/Select/Select.tsx"],"sourcesContent":["import {\n HintInputContainer,\n InputContainerProps,\n useInputFocus,\n} from '@tecsinapse/react-core';\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { useLazyModalManager } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { Modal } from './Modal';\nimport { SelectIcon, StyledSelectionText } from './styled';\n\nexport interface SelectNativeProps<Data, Type extends 'single' | 'multi'>\n extends Omit<InputContainerProps, 'value' | 'onChange' | 'onChangeText'> {\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 | null | undefined : Data[];\n type: Type;\n\n keyExtractor: (t: Data, index?: number) => string;\n labelExtractor: (t: Data) => string;\n groupKeyExtractor?: (t: Data) => string;\n\n hideSearchBar?: boolean;\n placeholder?: string;\n onFocus?: () => void | never;\n onBlur?: () => void | never;\n onSearch?:\n | ((searchArg: string) => void)\n | ((searchInput?: string) => Promise<Data[]>)\n | never;\n searchBarPlaceholder?: string;\n confirmButtonText?: string;\n selectModalTitle?: string;\n selectModalTitleComponent?: JSX.Element;\n closeOnPick?: boolean;\n controlComponent?: (\n onPress: () => void,\n displayValue?: string\n ) => JSX.Element;\n numberOfLines?: number;\n}\n\nfunction Select<Data, Type extends 'single' | 'multi'>({\n /** Select props */\n value,\n options,\n keyExtractor,\n groupKeyExtractor,\n onSelect,\n type,\n labelExtractor,\n placeholder,\n onFocus,\n onBlur,\n disabled,\n onSearch,\n selectModalTitle,\n selectModalTitleComponent,\n searchBarPlaceholder,\n hideSearchBar,\n confirmButtonText,\n rightComponent,\n variant = 'default',\n hintComponent,\n hint,\n style,\n controlComponent,\n closeOnPick = type === 'single',\n label,\n numberOfLines,\n ...rest\n}: SelectNativeProps<Data, Type>): JSX.Element {\n const { focused, handleBlur, handleFocus } = useInputFocus(\n onFocus,\n onBlur,\n !disabled\n );\n\n const [selectOptions, setSelectOptions] = useState<Data[]>([]);\n const modal = useLazyModalManager();\n\n // TODO: Add Skeleton to modal height when loading is true\n const [loading, setLoading] = useState<boolean>(false);\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 useEffect(() => {\n if (typeof options !== 'function') {\n setSelectOptions(options);\n }\n }, [options]);\n\n const handleLazyFocus = React.useCallback(async () => {\n if (typeof options === 'function' && !onSearch) {\n setLoading(true);\n try {\n const result = await options();\n if (result) {\n if (\n value &&\n !result.find(v => keyExtractor(value as Data) === keyExtractor(v))\n ) {\n setSelectOptions([value as Data, ...result]);\n } else setSelectOptions(result);\n }\n } catch (e) {\n // TODO: Catch error\n } finally {\n setLoading(false);\n }\n }\n }, [options, value, setSelectOptions]);\n\n const handleOnSearch = React.useCallback(\n async (searchInput: string | undefined) => {\n if (searchInput !== undefined && onSearch) {\n setLoading(true);\n modal.requestUpdate();\n try {\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) {\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 } finally {\n modal.requestUpdate();\n setLoading(false);\n }\n }\n },\n [options, value, keyExtractor]\n );\n\n const getDisplayValue = React.useCallback(() => {\n if (Array.isArray(value)) {\n if (value.length === 0) return _placeholder;\n else {\n const options =\n selectOptions.length > 0 ? selectOptions : (value as Data[]);\n return options\n ?.reduce(\n (acc, option, index) =>\n value.find(\n key => keyExtractor(option, index) == keyExtractor(key, index)\n )\n ? acc + labelExtractor(option) + ', '\n : acc,\n ''\n )\n .slice(0, -2);\n }\n } else {\n if (!value) return _placeholder;\n const selectedOption = selectOptions?.find(\n (option, index) =>\n keyExtractor(option, index) == keyExtractor(value as Data, index)\n );\n return labelExtractor(selectedOption ?? (value as Data));\n }\n }, [_placeholder, value, selectOptions]);\n\n modal.sync(\n <Modal\n options={selectOptions || []}\n focused={true}\n keyExtractor={keyExtractor}\n labelExtractor={labelExtractor}\n groupKeyExtractor={groupKeyExtractor}\n searchBarPlaceholder={searchBarPlaceholder}\n type={type}\n onSelect={onSelect}\n value={value}\n hideSearchBar={hideSearchBar}\n onSearch={handleOnSearch}\n selectModalTitle={selectModalTitle}\n selectModalTitleComponent={selectModalTitleComponent}\n confirmButtonText={confirmButtonText}\n loading={loading}\n onClose={() => {\n if (typeof options === 'function') {\n setSelectOptions([]);\n }\n handleBlur();\n }}\n closeOnPick={closeOnPick}\n />\n );\n\n const handlePressInput = async () => {\n modal.show();\n handleFocus();\n await handleLazyFocus();\n };\n\n return (\n <>\n {controlComponent ? (\n controlComponent(handlePressInput, getDisplayValue() || '')\n ) : (\n <HintInputContainer\n viewStyle={style}\n onPress={handlePressInput}\n focused={focused}\n disabled={disabled}\n LabelComponent={Text}\n variant={variant}\n hint={hint}\n hintComponent={hintComponent}\n label={_label}\n rightComponent={\n <>\n <SelectIcon name=\"chevron-down\" type=\"ionicon\" size=\"centi\" />\n {rightComponent}\n </>\n }\n {...rest}\n >\n <StyledSelectionText\n numberOfLines={numberOfLines}\n fontWeight=\"bold\"\n disabled={disabled}\n >\n {getDisplayValue() || ' '}\n </StyledSelectionText>\n </HintInputContainer>\n )}\n </>\n );\n}\n\nexport default Select;\n"],"names":["useInputFocus","useState","useLazyModalManager","useEffect","React","options","Modal","HintInputContainer","SelectIcon","StyledSelectionText"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { ReactElement } from 'react';
2
- import { IBaseModal } from './ui/types';
1
+ import { ReactElement } from "react";
2
+ import { IBaseModal } from "./ui/types";
3
3
  export declare const useLazyModalManager: (modalId?: string) => {
4
4
  requestUpdate: () => void;
5
5
  sync: (modal: ReactElement<IBaseModal>) => null;
@@ -1,9 +1,9 @@
1
- import { useState, useCallback, useEffect } from 'react';
2
- import { v4 } from 'uuid';
1
+ import { useId, useState, useCallback, useEffect } from 'react';
3
2
  import { modalLifecycle } from './ModalGroupManager.js';
4
3
 
5
4
  const useLazyModalManager = (modalId) => {
6
- const [id] = useState(modalId ?? v4());
5
+ const uid = useId();
6
+ const [id] = useState(modalId ?? uid);
7
7
  const requestUpdate = useCallback(() => modalLifecycle.update(), []);
8
8
  const sync = useCallback(
9
9
  (modal) => {
@@ -1 +1 @@
1
- {"version":3,"file":"useLazyModalManager.js","sources":["../../../../../src/components/atoms/Modal/useLazyModalManager.ts"],"sourcesContent":["import { ReactElement, useCallback, useEffect, useState } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\nimport { modalLifecycle } from './ModalGroupManager';\nimport { IBaseModal } from './ui/types';\n\n/**\n * Use this hook to tell the modal lifecycle handler that you want to add\n * a new modal component.\n *\n * @returns\n * @param modalId\n */\nexport const useLazyModalManager = (modalId?: string) => {\n const [id] = useState(modalId ?? uuidv4());\n\n const requestUpdate = useCallback(() => modalLifecycle.update(), []);\n\n const sync = useCallback(\n (modal: ReactElement<IBaseModal>) => {\n modalLifecycle.sync(id, () => modal);\n return null;\n },\n [id]\n );\n\n const show = useCallback(() => {\n modalLifecycle.show(id);\n }, [id]);\n\n const close = useCallback(() => {\n modalLifecycle.close(id);\n }, [id]);\n\n useEffect(() => {\n return () => modalLifecycle.destroy(id);\n }, []);\n\n return {\n requestUpdate,\n sync,\n show,\n close,\n };\n};\n"],"names":["uuidv4"],"mappings":";;;;AAYa,MAAA,mBAAA,GAAsB,CAAC,OAAqB,KAAA;AACvD,EAAA,MAAM,CAAC,EAAE,CAAA,GAAI,QAAS,CAAA,OAAA,IAAWA,IAAQ,CAAA,CAAA;AAEzC,EAAA,MAAM,gBAAgB,WAAY,CAAA,MAAM,eAAe,MAAO,EAAA,EAAG,EAAE,CAAA,CAAA;AAEnE,EAAA,MAAM,IAAO,GAAA,WAAA;AAAA,IACX,CAAC,KAAoC,KAAA;AACnC,MAAe,cAAA,CAAA,IAAA,CAAK,EAAI,EAAA,MAAM,KAAK,CAAA,CAAA;AACnC,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAAA,IACA,CAAC,EAAE,CAAA;AAAA,GACL,CAAA;AAEA,EAAM,MAAA,IAAA,GAAO,YAAY,MAAM;AAC7B,IAAA,cAAA,CAAe,KAAK,EAAE,CAAA,CAAA;AAAA,GACxB,EAAG,CAAC,EAAE,CAAC,CAAA,CAAA;AAEP,EAAM,MAAA,KAAA,GAAQ,YAAY,MAAM;AAC9B,IAAA,cAAA,CAAe,MAAM,EAAE,CAAA,CAAA;AAAA,GACzB,EAAG,CAAC,EAAE,CAAC,CAAA,CAAA;AAEP,EAAA,SAAA,CAAU,MAAM;AACd,IAAO,OAAA,MAAM,cAAe,CAAA,OAAA,CAAQ,EAAE,CAAA,CAAA;AAAA,GACxC,EAAG,EAAE,CAAA,CAAA;AAEL,EAAO,OAAA;AAAA,IACL,aAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,GACF,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"useLazyModalManager.js","sources":["../../../../../src/components/atoms/Modal/useLazyModalManager.ts"],"sourcesContent":["import { ReactElement, useCallback, useEffect, useId, useState } from \"react\";\nimport { modalLifecycle } from \"./ModalGroupManager\";\nimport { IBaseModal } from \"./ui/types\";\n\n/**\n * Use this hook to tell the modal lifecycle handler that you want to add\n * a new modal component.\n *\n * @returns\n * @param modalId\n */\nexport const useLazyModalManager = (modalId?: string) => {\n const uid = useId();\n const [id] = useState(modalId ?? uid);\n\n const requestUpdate = useCallback(() => modalLifecycle.update(), []);\n\n const sync = useCallback(\n (modal: ReactElement<IBaseModal>) => {\n modalLifecycle.sync(id, () => modal);\n return null;\n },\n [id]\n );\n\n const show = useCallback(() => {\n modalLifecycle.show(id);\n }, [id]);\n\n const close = useCallback(() => {\n modalLifecycle.close(id);\n }, [id]);\n\n useEffect(() => {\n return () => modalLifecycle.destroy(id);\n }, []);\n\n return {\n requestUpdate,\n sync,\n show,\n close,\n };\n};\n"],"names":[],"mappings":";;;AAWa,MAAA,mBAAA,GAAsB,CAAC,OAAqB,KAAA;AACvD,EAAA,MAAM,MAAM,KAAM,EAAA,CAAA;AAClB,EAAA,MAAM,CAAC,EAAE,CAAI,GAAA,QAAA,CAAS,WAAW,GAAG,CAAA,CAAA;AAEpC,EAAA,MAAM,gBAAgB,WAAY,CAAA,MAAM,eAAe,MAAO,EAAA,EAAG,EAAE,CAAA,CAAA;AAEnE,EAAA,MAAM,IAAO,GAAA,WAAA;AAAA,IACX,CAAC,KAAoC,KAAA;AACnC,MAAe,cAAA,CAAA,IAAA,CAAK,EAAI,EAAA,MAAM,KAAK,CAAA,CAAA;AACnC,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAAA,IACA,CAAC,EAAE,CAAA;AAAA,GACL,CAAA;AAEA,EAAM,MAAA,IAAA,GAAO,YAAY,MAAM;AAC7B,IAAA,cAAA,CAAe,KAAK,EAAE,CAAA,CAAA;AAAA,GACxB,EAAG,CAAC,EAAE,CAAC,CAAA,CAAA;AAEP,EAAM,MAAA,KAAA,GAAQ,YAAY,MAAM;AAC9B,IAAA,cAAA,CAAe,MAAM,EAAE,CAAA,CAAA;AAAA,GACzB,EAAG,CAAC,EAAE,CAAC,CAAA,CAAA;AAEP,EAAA,SAAA,CAAU,MAAM;AACd,IAAO,OAAA,MAAM,cAAe,CAAA,OAAA,CAAQ,EAAE,CAAA,CAAA;AAAA,GACxC,EAAG,EAAE,CAAA,CAAA;AAEL,EAAO,OAAA;AAAA,IACL,aAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,GACF,CAAA;AACF;;;;"}
@@ -1,9 +1,9 @@
1
- import { useState, useCallback, useEffect } from 'react';
2
- import { v4 } from 'uuid';
1
+ import { useId, useState, useCallback, useEffect } from 'react';
3
2
  import { modalLifecycle } from './ModalGroupManager.js';
4
3
 
5
4
  const useModalManager = (modal, modalId) => {
6
- const [id] = useState(modalId ?? v4());
5
+ const uid = useId();
6
+ const [id] = useState(modalId ?? uid);
7
7
  modalLifecycle.sync(id, modal);
8
8
  const show = useCallback(() => {
9
9
  modalLifecycle.show(id);
@@ -1 +1 @@
1
- {"version":3,"file":"useModalManager.js","sources":["../../../../../src/components/atoms/Modal/useModalManager.ts"],"sourcesContent":["import { ReactElement, useCallback, useEffect, useState } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\nimport { modalLifecycle } from './ModalGroupManager';\nimport { IBaseModal } from './ui/types';\n\n/**\n * Use this hook to tell the modal lifecycle handler that you want to add\n * a new modal component.\n *\n * @param id\n * @param modal\n * @returns\n */\nexport const useModalManager = (\n modal: () => ReactElement<IBaseModal>,\n modalId?: string\n) => {\n const [id] = useState(modalId ?? uuidv4());\n modalLifecycle.sync(id, modal);\n\n const show = useCallback(() => {\n modalLifecycle.show(id);\n }, [id]);\n\n const close = useCallback(() => {\n modalLifecycle.close(id);\n }, [id]);\n\n useEffect(() => {\n return () => modalLifecycle.destroy(id);\n }, []);\n\n return {\n show,\n close,\n };\n};\n"],"names":["uuidv4"],"mappings":";;;;AAaa,MAAA,eAAA,GAAkB,CAC7B,KAAA,EACA,OACG,KAAA;AACH,EAAA,MAAM,CAAC,EAAE,CAAA,GAAI,QAAS,CAAA,OAAA,IAAWA,IAAQ,CAAA,CAAA;AACzC,EAAe,cAAA,CAAA,IAAA,CAAK,IAAI,KAAK,CAAA,CAAA;AAE7B,EAAM,MAAA,IAAA,GAAO,YAAY,MAAM;AAC7B,IAAA,cAAA,CAAe,KAAK,EAAE,CAAA,CAAA;AAAA,GACxB,EAAG,CAAC,EAAE,CAAC,CAAA,CAAA;AAEP,EAAM,MAAA,KAAA,GAAQ,YAAY,MAAM;AAC9B,IAAA,cAAA,CAAe,MAAM,EAAE,CAAA,CAAA;AAAA,GACzB,EAAG,CAAC,EAAE,CAAC,CAAA,CAAA;AAEP,EAAA,SAAA,CAAU,MAAM;AACd,IAAO,OAAA,MAAM,cAAe,CAAA,OAAA,CAAQ,EAAE,CAAA,CAAA;AAAA,GACxC,EAAG,EAAE,CAAA,CAAA;AAEL,EAAO,OAAA;AAAA,IACL,IAAA;AAAA,IACA,KAAA;AAAA,GACF,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"useModalManager.js","sources":["../../../../../src/components/atoms/Modal/useModalManager.ts"],"sourcesContent":["import { ReactElement, useCallback, useEffect, useId, useState } from 'react';\nimport { modalLifecycle } from './ModalGroupManager';\nimport { IBaseModal } from './ui/types';\n\n/**\n * Use this hook to tell the modal lifecycle handler that you want to add\n * a new modal component.\n *\n * @param modalId\n * @param modal\n * @returns\n */\nexport const useModalManager = (\n modal: () => ReactElement<IBaseModal>,\n modalId?: string\n) => {\n const uid = useId();\n const [id] = useState(modalId ?? uid);\n modalLifecycle.sync(id, modal);\n\n const show = useCallback(() => {\n modalLifecycle.show(id);\n }, [id]);\n\n const close = useCallback(() => {\n modalLifecycle.close(id);\n }, [id]);\n\n useEffect(() => {\n return () => modalLifecycle.destroy(id);\n }, []);\n\n return {\n show,\n close,\n };\n};\n"],"names":[],"mappings":";;;AAYa,MAAA,eAAA,GAAkB,CAC7B,KAAA,EACA,OACG,KAAA;AACH,EAAA,MAAM,MAAM,KAAM,EAAA,CAAA;AAClB,EAAA,MAAM,CAAC,EAAE,CAAI,GAAA,QAAA,CAAS,WAAW,GAAG,CAAA,CAAA;AACpC,EAAe,cAAA,CAAA,IAAA,CAAK,IAAI,KAAK,CAAA,CAAA;AAE7B,EAAM,MAAA,IAAA,GAAO,YAAY,MAAM;AAC7B,IAAA,cAAA,CAAe,KAAK,EAAE,CAAA,CAAA;AAAA,GACxB,EAAG,CAAC,EAAE,CAAC,CAAA,CAAA;AAEP,EAAM,MAAA,KAAA,GAAQ,YAAY,MAAM;AAC9B,IAAA,cAAA,CAAe,MAAM,EAAE,CAAA,CAAA;AAAA,GACzB,EAAG,CAAC,EAAE,CAAC,CAAA,CAAA;AAEP,EAAA,SAAA,CAAU,MAAM;AACd,IAAO,OAAA,MAAM,cAAe,CAAA,OAAA,CAAQ,EAAE,CAAA,CAAA;AAAA,GACxC,EAAG,EAAE,CAAA,CAAA;AAEL,EAAO,OAAA;AAAA,IACL,IAAA;AAAA,IACA,KAAA;AAAA,GACF,CAAA;AACF;;;;"}
@@ -3,7 +3,6 @@ import React__default from 'react';
3
3
  import { getLocale } from '../../../utils/date.js';
4
4
  import 'react-native';
5
5
  import { ModalView } from '../../atoms/Modal/ui/BaseModalView.js';
6
- import 'uuid';
7
6
  import { useLazyModalManager } from '../../atoms/Modal/useLazyModalManager.js';
8
7
  import Text from '../../atoms/Text/Text.js';
9
8
  import { Calendar } from '../Calendar/Calendar.js';
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","sources":["../../../../../src/components/molecules/DatePicker/DatePicker.tsx"],"sourcesContent":["import {\n DatePicker as DatePickerCore,\n DatePickerProps,\n SelectionType,\n Value,\n} from '@tecsinapse/react-core';\nimport React, { FC } from 'react';\nimport { getLocale } from '../../../utils/date';\nimport { IBaseModal, ModalView, useLazyModalManager } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { Calendar } from '../Calendar';\nimport { CalendarBoxContent } from './styled';\n\nexport type NativeDatePickerProps<T extends SelectionType> = Omit<\n DatePickerProps<T>,\n | 'CalendarComponent'\n | 'renderCalendar'\n | 'requestCloseCalendar'\n | 'requestShowCalendar'\n>;\n\nexport const DatePicker = <T extends SelectionType>({\n locale,\n onChange,\n ...rest\n}: NativeDatePickerProps<T>): JSX.Element => {\n const modal = useLazyModalManager();\n\n const handleChange = (value?: Value<T>) => {\n onChange?.(value);\n modal.requestUpdate();\n };\n\n return (\n <DatePickerCore\n {...rest}\n TextComponent={Text}\n CalendarComponent={Calendar}\n locale={locale ?? getLocale()}\n onChange={handleChange}\n requestShowCalendar={modal.show}\n requestCloseCalendar={modal.close}\n renderCalendar={(calendar, blur) =>\n modal.sync(<NativeModal onClose={blur}>{calendar}</NativeModal>)\n }\n />\n );\n};\n\nconst NativeModal: FC<IBaseModal> = ({ children, ...others }) => {\n return (\n <ModalView BoxComponent={CalendarBoxContent} {...others}>\n {children}\n </ModalView>\n );\n};\n"],"names":["React","DatePickerCore"],"mappings":";;;;;;;;;;;AAqBO,MAAM,aAAa,CAA0B;AAAA,EAClD,MAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG,IAAA;AACL,CAA6C,KAAA;AAC3C,EAAA,MAAM,QAAQ,mBAAoB,EAAA,CAAA;AAElC,EAAM,MAAA,YAAA,GAAe,CAAC,KAAqB,KAAA;AACzC,IAAA,QAAA,GAAW,KAAK,CAAA,CAAA;AAChB,IAAA,KAAA,CAAM,aAAc,EAAA,CAAA;AAAA,GACtB,CAAA;AAEA,EACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,IAACC,YAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,aAAe,EAAA,IAAA;AAAA,MACf,iBAAmB,EAAA,QAAA;AAAA,MACnB,MAAA,EAAQ,UAAU,SAAU,EAAA;AAAA,MAC5B,QAAU,EAAA,YAAA;AAAA,MACV,qBAAqB,KAAM,CAAA,IAAA;AAAA,MAC3B,sBAAsB,KAAM,CAAA,KAAA;AAAA,MAC5B,cAAA,EAAgB,CAAC,QAAA,EAAU,IACzB,KAAA,KAAA,CAAM,IAAK,iBAAAD,cAAA,CAAA,aAAA,CAAC,WAAY,EAAA,EAAA,OAAA,EAAS,IAAO,EAAA,EAAA,QAAS,CAAc,CAAA;AAAA,KAAA;AAAA,GAEnE,CAAA;AAEJ,EAAA;AAEA,MAAM,cAA8B,CAAC,EAAE,QAAU,EAAA,GAAG,QAAa,KAAA;AAC/D,EAAA,oDACG,SAAU,EAAA,EAAA,YAAA,EAAc,kBAAqB,EAAA,GAAG,UAC9C,QACH,CAAA,CAAA;AAEJ,CAAA;;;;"}
1
+ {"version":3,"file":"DatePicker.js","sources":["../../../../../src/components/molecules/DatePicker/DatePicker.tsx"],"sourcesContent":["import {\n DatePicker as DatePickerCore,\n DatePickerProps,\n SelectionType,\n Value,\n} from '@tecsinapse/react-core';\nimport React, { FC } from 'react';\nimport { getLocale } from '../../../utils/date';\nimport { IBaseModal, ModalView, useLazyModalManager } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { Calendar } from '../Calendar';\nimport { CalendarBoxContent } from './styled';\n\nexport type NativeDatePickerProps<T extends SelectionType> = Omit<\n DatePickerProps<T>,\n | 'CalendarComponent'\n | 'renderCalendar'\n | 'requestCloseCalendar'\n | 'requestShowCalendar'\n>;\n\nexport const DatePicker = <T extends SelectionType>({\n locale,\n onChange,\n ...rest\n}: NativeDatePickerProps<T>): JSX.Element => {\n const modal = useLazyModalManager();\n\n const handleChange = (value?: Value<T>) => {\n onChange?.(value);\n modal.requestUpdate();\n };\n\n return (\n <DatePickerCore\n {...rest}\n TextComponent={Text}\n CalendarComponent={Calendar}\n locale={locale ?? getLocale()}\n onChange={handleChange}\n requestShowCalendar={modal.show}\n requestCloseCalendar={modal.close}\n renderCalendar={(calendar, blur) =>\n modal.sync(<NativeModal onClose={blur}>{calendar}</NativeModal>)\n }\n />\n );\n};\n\nconst NativeModal: FC<IBaseModal> = ({ children, ...others }) => {\n return (\n <ModalView BoxComponent={CalendarBoxContent} {...others}>\n {children}\n </ModalView>\n );\n};\n"],"names":["React","DatePickerCore"],"mappings":";;;;;;;;;;AAqBO,MAAM,aAAa,CAA0B;AAAA,EAClD,MAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG,IAAA;AACL,CAA6C,KAAA;AAC3C,EAAA,MAAM,QAAQ,mBAAoB,EAAA,CAAA;AAElC,EAAM,MAAA,YAAA,GAAe,CAAC,KAAqB,KAAA;AACzC,IAAA,QAAA,GAAW,KAAK,CAAA,CAAA;AAChB,IAAA,KAAA,CAAM,aAAc,EAAA,CAAA;AAAA,GACtB,CAAA;AAEA,EACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,IAACC,YAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,aAAe,EAAA,IAAA;AAAA,MACf,iBAAmB,EAAA,QAAA;AAAA,MACnB,MAAA,EAAQ,UAAU,SAAU,EAAA;AAAA,MAC5B,QAAU,EAAA,YAAA;AAAA,MACV,qBAAqB,KAAM,CAAA,IAAA;AAAA,MAC3B,sBAAsB,KAAM,CAAA,KAAA;AAAA,MAC5B,cAAA,EAAgB,CAAC,QAAA,EAAU,IACzB,KAAA,KAAA,CAAM,IAAK,iBAAAD,cAAA,CAAA,aAAA,CAAC,WAAY,EAAA,EAAA,OAAA,EAAS,IAAO,EAAA,EAAA,QAAS,CAAc,CAAA;AAAA,KAAA;AAAA,GAEnE,CAAA;AAEJ,EAAA;AAEA,MAAM,cAA8B,CAAC,EAAE,QAAU,EAAA,GAAG,QAAa,KAAA;AAC/D,EAAA,oDACG,SAAU,EAAA,EAAA,YAAA,EAAc,kBAAqB,EAAA,GAAG,UAC9C,QACH,CAAA,CAAA;AAEJ,CAAA;;;;"}
@@ -3,7 +3,6 @@ import React__default from 'react';
3
3
  import { getLocale } from '../../../utils/date.js';
4
4
  import 'react-native';
5
5
  import { ModalView } from '../../atoms/Modal/ui/BaseModalView.js';
6
- import 'uuid';
7
6
  import { useLazyModalManager } from '../../atoms/Modal/useLazyModalManager.js';
8
7
  import Text from '../../atoms/Text/Text.js';
9
8
  import { DateTimeSelector } from '../DateTimeSelector/DateTimeSelector.js';
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimePicker.js","sources":["../../../../../src/components/molecules/DateTimePicker/DateTimePicker.tsx"],"sourcesContent":["import {\n DateTimePicker as DateTimePickerCore,\n DateTimePickerProps,\n} from '@tecsinapse/react-core';\nimport React, { FC } from 'react';\nimport { getLocale } from '../../../utils/date';\nimport { IBaseModal, ModalView, useLazyModalManager } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { DateTimeSelector } from '../DateTimeSelector';\n\nexport type NativeDateTimePickerProps = Omit<\n DateTimePickerProps,\n | 'DateTimeSelectorComponent'\n | 'renderSelector'\n | 'requestCloseSelector'\n | 'requestShowSelector'\n>;\n\nexport const DateTimePicker: FC<NativeDateTimePickerProps> = ({\n locale,\n ...rest\n}) => {\n const modal = useLazyModalManager();\n\n return (\n <DateTimePickerCore\n {...rest}\n TextComponent={Text}\n DateTimeSelectorComponent={DateTimeSelector}\n locale={locale ?? getLocale()}\n requestShowSelector={() => modal.show()}\n requestCloseSelector={() => modal.close()}\n renderSelector={(selector, blur) =>\n modal.sync(<NativeModal onClose={blur}>{selector}</NativeModal>)\n }\n />\n );\n};\n\nconst NativeModal: FC<IBaseModal> = ({ children, ...others }) => {\n return <ModalView {...others}>{children}</ModalView>;\n};\n"],"names":["React","DateTimePickerCore"],"mappings":";;;;;;;;;;AAkBO,MAAM,iBAAgD,CAAC;AAAA,EAC5D,MAAA;AAAA,EACA,GAAG,IAAA;AACL,CAAM,KAAA;AACJ,EAAA,MAAM,QAAQ,mBAAoB,EAAA,CAAA;AAElC,EACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,IAACC,gBAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,aAAe,EAAA,IAAA;AAAA,MACf,yBAA2B,EAAA,gBAAA;AAAA,MAC3B,MAAA,EAAQ,UAAU,SAAU,EAAA;AAAA,MAC5B,mBAAA,EAAqB,MAAM,KAAA,CAAM,IAAK,EAAA;AAAA,MACtC,oBAAA,EAAsB,MAAM,KAAA,CAAM,KAAM,EAAA;AAAA,MACxC,cAAA,EAAgB,CAAC,QAAA,EAAU,IACzB,KAAA,KAAA,CAAM,IAAK,iBAAAD,cAAA,CAAA,aAAA,CAAC,WAAY,EAAA,EAAA,OAAA,EAAS,IAAO,EAAA,EAAA,QAAS,CAAc,CAAA;AAAA,KAAA;AAAA,GAEnE,CAAA;AAEJ,EAAA;AAEA,MAAM,cAA8B,CAAC,EAAE,QAAU,EAAA,GAAG,QAAa,KAAA;AAC/D,EAAA,uBAAQA,cAAA,CAAA,aAAA,CAAA,SAAA,EAAA,EAAW,GAAG,MAAA,EAAA,EAAS,QAAS,CAAA,CAAA;AAC1C,CAAA;;;;"}
1
+ {"version":3,"file":"DateTimePicker.js","sources":["../../../../../src/components/molecules/DateTimePicker/DateTimePicker.tsx"],"sourcesContent":["import {\n DateTimePicker as DateTimePickerCore,\n DateTimePickerProps,\n} from '@tecsinapse/react-core';\nimport React, { FC } from 'react';\nimport { getLocale } from '../../../utils/date';\nimport { IBaseModal, ModalView, useLazyModalManager } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { DateTimeSelector } from '../DateTimeSelector';\n\nexport type NativeDateTimePickerProps = Omit<\n DateTimePickerProps,\n | 'DateTimeSelectorComponent'\n | 'renderSelector'\n | 'requestCloseSelector'\n | 'requestShowSelector'\n>;\n\nexport const DateTimePicker: FC<NativeDateTimePickerProps> = ({\n locale,\n ...rest\n}) => {\n const modal = useLazyModalManager();\n\n return (\n <DateTimePickerCore\n {...rest}\n TextComponent={Text}\n DateTimeSelectorComponent={DateTimeSelector}\n locale={locale ?? getLocale()}\n requestShowSelector={() => modal.show()}\n requestCloseSelector={() => modal.close()}\n renderSelector={(selector, blur) =>\n modal.sync(<NativeModal onClose={blur}>{selector}</NativeModal>)\n }\n />\n );\n};\n\nconst NativeModal: FC<IBaseModal> = ({ children, ...others }) => {\n return <ModalView {...others}>{children}</ModalView>;\n};\n"],"names":["React","DateTimePickerCore"],"mappings":";;;;;;;;;AAkBO,MAAM,iBAAgD,CAAC;AAAA,EAC5D,MAAA;AAAA,EACA,GAAG,IAAA;AACL,CAAM,KAAA;AACJ,EAAA,MAAM,QAAQ,mBAAoB,EAAA,CAAA;AAElC,EACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,IAACC,gBAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,aAAe,EAAA,IAAA;AAAA,MACf,yBAA2B,EAAA,gBAAA;AAAA,MAC3B,MAAA,EAAQ,UAAU,SAAU,EAAA;AAAA,MAC5B,mBAAA,EAAqB,MAAM,KAAA,CAAM,IAAK,EAAA;AAAA,MACtC,oBAAA,EAAsB,MAAM,KAAA,CAAM,KAAM,EAAA;AAAA,MACxC,cAAA,EAAgB,CAAC,QAAA,EAAU,IACzB,KAAA,KAAA,CAAM,IAAK,iBAAAD,cAAA,CAAA,aAAA,CAAC,WAAY,EAAA,EAAA,OAAA,EAAS,IAAO,EAAA,EAAA,QAAS,CAAc,CAAA;AAAA,KAAA;AAAA,GAEnE,CAAA;AAEJ,EAAA;AAEA,MAAM,cAA8B,CAAC,EAAE,QAAU,EAAA,GAAG,QAAa,KAAA;AAC/D,EAAA,uBAAQA,cAAA,CAAA,aAAA,CAAA,SAAA,EAAA,EAAW,GAAG,MAAA,EAAA,EAAS,QAAS,CAAA,CAAA;AAC1C,CAAA;;;;"}
@@ -6,7 +6,6 @@ import Text from '../../atoms/Text/Text.js';
6
6
  import Header from '../../atoms/Header/Header.js';
7
7
  import Input from '../../atoms/Input/Input.js';
8
8
  import { ModalView } from '../../atoms/Modal/ui/BaseModalView.js';
9
- import 'uuid';
10
9
  import { getStyledModal, TextTitleModal, SearchBarContainer, SelectIcon, FetchIndicator, ModalFooter, ListItem, StyledTextItemSelect } from './styled.js';
11
10
 
12
11
  const Component = ({
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sources":["../../../../../src/components/molecules/Select/Modal.tsx"],"sourcesContent":["import {\n Checkbox,\n getStatusBarHeight,\n RadioButton,\n RFValue,\n useDebouncedState,\n} from '@tecsinapse/react-core';\nimport * as React from 'react';\nimport { FlatList, ListRenderItemInfo, View } from 'react-native';\nimport { Button } from '../../atoms/Button';\nimport { Header } from '../../atoms/Header';\nimport { Input } from '../../atoms/Input';\nimport { IBaseModal, ModalView } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { SelectNativeProps } from './Select';\nimport {\n FetchIndicator,\n getStyledModal,\n ListItem,\n ModalFooter,\n SearchBarContainer,\n SelectIcon,\n TextTitleModal,\n StyledTextItemSelect,\n} from './styled';\n\ninterface LoadingProps {\n loading?: boolean;\n}\n\nconst Component = <Data, Type extends 'single' | 'multi'>({\n options,\n keyExtractor,\n labelExtractor,\n hideSearchBar,\n searchBarPlaceholder,\n focused,\n type,\n value,\n onSelect,\n onSearch,\n selectModalTitle,\n selectModalTitleComponent,\n confirmButtonText,\n loading,\n close,\n closeOnPick,\n ...others\n}: SelectNativeProps<Data, Type> & LoadingProps & IBaseModal): JSX.Element => {\n const [selectedValues, setSelectedValues] = React.useState<Data[]>([]);\n const [searchArg, setSearchArg] = useDebouncedState<string>('', onSearch);\n const ModalComponent = React.useMemo(\n () => getStyledModal(getStatusBarHeight(true)),\n []\n );\n const _closeOnPick = closeOnPick && type === 'single';\n\n // Resets the temporary state to the initial state whenever the\n // modal is reopened or the value changes\n React.useEffect(() => {\n setSelectedValues(\n (value ? (type === 'multi' ? value : [value]) : []) as Data[]\n );\n }, [value, focused, setSelectedValues]);\n\n const getData = React.useCallback(\n (options: Data[]) => {\n return options?.map((option, index) => ({\n ...option,\n _checked:\n type === 'multi'\n ? !!selectedValues.find(\n value =>\n keyExtractor(option, index) == keyExtractor(value, index)\n )\n : keyExtractor((selectedValues[0] || {}) as Data, index) ==\n keyExtractor(option, index),\n }));\n },\n [keyExtractor, selectedValues, type]\n );\n\n const data = React.useMemo(\n () => (typeof options !== 'function' ? getData(options) : []),\n [options, getData]\n );\n\n const handlePressItem = React.useCallback(\n (option: Data) => {\n setSelectedValues(selectedValues => {\n if (type === 'multi') {\n const newArr: Data[] = [];\n let found = false;\n for (const value of selectedValues) {\n if (keyExtractor(value) != keyExtractor(option)) newArr.push(value);\n else found = true;\n }\n if (!found) newArr.push(option);\n return newArr;\n }\n return keyExtractor((selectedValues[0] || {}) as Data) ===\n keyExtractor(option)\n ? []\n : [option];\n });\n },\n [selectedValues, setSelectedValues, keyExtractor, type]\n );\n\n React.useEffect(() => {\n if (_closeOnPick && selectedValues[0] && selectedValues[0] !== value) {\n handleConfirm();\n }\n }, [selectedValues[0], value, closeOnPick]);\n\n const handleConfirm = React.useCallback(() => {\n // TS Workaround since TS won't infer the ternary operator's result type correctly\n type OnSelectArg = Parameters<typeof onSelect>[0];\n onSelect(\n (type === 'single' ? selectedValues[0] : selectedValues) as OnSelectArg\n );\n close?.();\n }, [selectedValues]);\n\n const optionBuilder = React.useCallback(\n ({ item }: ListRenderItemInfo<Data & { _checked: boolean }>) => (\n <MemoizedOption\n item={item}\n type={type}\n handlePressItem={handlePressItem}\n labelExtractor={labelExtractor}\n />\n ),\n []\n );\n\n const anyChecked = data.filter(item => item._checked).length;\n const dataLengthChanged = data.length;\n\n const memoizedFlatlist = React.useMemo(\n () => (\n <FlatList\n data={data}\n keyExtractor={keyExtractor}\n fadingEdgeLength={200}\n renderItem={optionBuilder}\n />\n ),\n [selectedValues, anyChecked, dataLengthChanged]\n );\n\n const titleTextModal = selectModalTitle ? (\n <TextTitleModal\n typography=\"h4\"\n fontWeight=\"bold\"\n numberOfLines={3}\n style={{ maxWidth: RFValue(250) }}\n >\n {selectModalTitle}\n </TextTitleModal>\n ) : null;\n\n const headerContent = selectModalTitleComponent\n ? selectModalTitleComponent\n : titleTextModal;\n\n return (\n <ModalView {...others} BoxComponent={ModalComponent} showCloseBar={false}>\n <Header\n rightButton={{\n onPress: close,\n icon: {\n name: 'close',\n type: 'material-community',\n fontColor: 'light',\n },\n }}\n >\n {headerContent}\n </Header>\n\n {!hideSearchBar && (\n <SearchBarContainer>\n <Input\n placeholder={searchBarPlaceholder}\n value={searchArg}\n onChange={setSearchArg}\n leftComponent={\n <SelectIcon name=\"search\" type=\"ionicon\" size=\"centi\" />\n }\n />\n </SearchBarContainer>\n )}\n\n {loading && (\n <FetchIndicator animating={true} color={'grey'} size={'large'} />\n )}\n\n {memoizedFlatlist}\n\n {!_closeOnPick && (\n <ModalFooter>\n <Button\n variant={'filled'}\n color={'primary'}\n onPress={handleConfirm}\n disabled={loading}\n >\n <Text fontColor={'light'} fontWeight=\"bold\">\n {confirmButtonText}\n </Text>\n </Button>\n </ModalFooter>\n )}\n </ModalView>\n );\n};\n\ninterface IOption<T> {\n item: T & { _checked: boolean };\n type: 'single' | 'multi';\n labelExtractor: (option: T) => string;\n handlePressItem: (option: T) => void;\n}\n\nconst MemoizedOption = <T,>({\n handlePressItem,\n labelExtractor,\n item,\n type,\n}: IOption<T>): JSX.Element => {\n return React.useMemo(() => {\n const label = labelExtractor(item);\n return (\n <ListItem onPress={() => handlePressItem(item)}>\n <View pointerEvents={'none'}>\n {type === 'multi' ? (\n <Checkbox\n color={'primary'}\n labelPosition={'right'}\n checked={item._checked}\n >\n <StyledTextItemSelect\n fontWeight={item._checked ? 'bold' : 'regular'}\n ellipsizeMode={'tail'}\n numberOfLines={1}\n >\n {label}\n </StyledTextItemSelect>\n </Checkbox>\n ) : (\n <RadioButton\n color={'primary'}\n labelPosition={'right'}\n checked={item._checked}\n >\n <StyledTextItemSelect\n fontWeight={item._checked ? 'bold' : 'regular'}\n ellipsizeMode={'tail'}\n numberOfLines={1}\n >\n {label}\n </StyledTextItemSelect>\n </RadioButton>\n )}\n </View>\n </ListItem>\n );\n }, [item._checked]);\n};\n\nexport const Modal = Component;\n"],"names":["options","value","selectedValues"],"mappings":"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"}
1
+ {"version":3,"file":"Modal.js","sources":["../../../../../src/components/molecules/Select/Modal.tsx"],"sourcesContent":["import {\n Checkbox,\n getStatusBarHeight,\n RadioButton,\n RFValue,\n useDebouncedState,\n} from '@tecsinapse/react-core';\nimport * as React from 'react';\nimport { FlatList, ListRenderItemInfo, View } from 'react-native';\nimport { Button } from '../../atoms/Button';\nimport { Header } from '../../atoms/Header';\nimport { Input } from '../../atoms/Input';\nimport { IBaseModal, ModalView } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { SelectNativeProps } from './Select';\nimport {\n FetchIndicator,\n getStyledModal,\n ListItem,\n ModalFooter,\n SearchBarContainer,\n SelectIcon,\n TextTitleModal,\n StyledTextItemSelect,\n} from './styled';\n\ninterface LoadingProps {\n loading?: boolean;\n}\n\nconst Component = <Data, Type extends 'single' | 'multi'>({\n options,\n keyExtractor,\n labelExtractor,\n hideSearchBar,\n searchBarPlaceholder,\n focused,\n type,\n value,\n onSelect,\n onSearch,\n selectModalTitle,\n selectModalTitleComponent,\n confirmButtonText,\n loading,\n close,\n closeOnPick,\n ...others\n}: SelectNativeProps<Data, Type> & LoadingProps & IBaseModal): JSX.Element => {\n const [selectedValues, setSelectedValues] = React.useState<Data[]>([]);\n const [searchArg, setSearchArg] = useDebouncedState<string>('', onSearch);\n const ModalComponent = React.useMemo(\n () => getStyledModal(getStatusBarHeight(true)),\n []\n );\n const _closeOnPick = closeOnPick && type === 'single';\n\n // Resets the temporary state to the initial state whenever the\n // modal is reopened or the value changes\n React.useEffect(() => {\n setSelectedValues(\n (value ? (type === 'multi' ? value : [value]) : []) as Data[]\n );\n }, [value, focused, setSelectedValues]);\n\n const getData = React.useCallback(\n (options: Data[]) => {\n return options?.map((option, index) => ({\n ...option,\n _checked:\n type === 'multi'\n ? !!selectedValues.find(\n value =>\n keyExtractor(option, index) == keyExtractor(value, index)\n )\n : keyExtractor((selectedValues[0] || {}) as Data, index) ==\n keyExtractor(option, index),\n }));\n },\n [keyExtractor, selectedValues, type]\n );\n\n const data = React.useMemo(\n () => (typeof options !== 'function' ? getData(options) : []),\n [options, getData]\n );\n\n const handlePressItem = React.useCallback(\n (option: Data) => {\n setSelectedValues(selectedValues => {\n if (type === 'multi') {\n const newArr: Data[] = [];\n let found = false;\n for (const value of selectedValues) {\n if (keyExtractor(value) != keyExtractor(option)) newArr.push(value);\n else found = true;\n }\n if (!found) newArr.push(option);\n return newArr;\n }\n return keyExtractor((selectedValues[0] || {}) as Data) ===\n keyExtractor(option)\n ? []\n : [option];\n });\n },\n [selectedValues, setSelectedValues, keyExtractor, type]\n );\n\n React.useEffect(() => {\n if (_closeOnPick && selectedValues[0] && selectedValues[0] !== value) {\n handleConfirm();\n }\n }, [selectedValues[0], value, closeOnPick]);\n\n const handleConfirm = React.useCallback(() => {\n // TS Workaround since TS won't infer the ternary operator's result type correctly\n type OnSelectArg = Parameters<typeof onSelect>[0];\n onSelect(\n (type === 'single' ? selectedValues[0] : selectedValues) as OnSelectArg\n );\n close?.();\n }, [selectedValues]);\n\n const optionBuilder = React.useCallback(\n ({ item }: ListRenderItemInfo<Data & { _checked: boolean }>) => (\n <MemoizedOption\n item={item}\n type={type}\n handlePressItem={handlePressItem}\n labelExtractor={labelExtractor}\n />\n ),\n []\n );\n\n const anyChecked = data.filter(item => item._checked).length;\n const dataLengthChanged = data.length;\n\n const memoizedFlatlist = React.useMemo(\n () => (\n <FlatList\n data={data}\n keyExtractor={keyExtractor}\n fadingEdgeLength={200}\n renderItem={optionBuilder}\n />\n ),\n [selectedValues, anyChecked, dataLengthChanged]\n );\n\n const titleTextModal = selectModalTitle ? (\n <TextTitleModal\n typography=\"h4\"\n fontWeight=\"bold\"\n numberOfLines={3}\n style={{ maxWidth: RFValue(250) }}\n >\n {selectModalTitle}\n </TextTitleModal>\n ) : null;\n\n const headerContent = selectModalTitleComponent\n ? selectModalTitleComponent\n : titleTextModal;\n\n return (\n <ModalView {...others} BoxComponent={ModalComponent} showCloseBar={false}>\n <Header\n rightButton={{\n onPress: close,\n icon: {\n name: 'close',\n type: 'material-community',\n fontColor: 'light',\n },\n }}\n >\n {headerContent}\n </Header>\n\n {!hideSearchBar && (\n <SearchBarContainer>\n <Input\n placeholder={searchBarPlaceholder}\n value={searchArg}\n onChange={setSearchArg}\n leftComponent={\n <SelectIcon name=\"search\" type=\"ionicon\" size=\"centi\" />\n }\n />\n </SearchBarContainer>\n )}\n\n {loading && (\n <FetchIndicator animating={true} color={'grey'} size={'large'} />\n )}\n\n {memoizedFlatlist}\n\n {!_closeOnPick && (\n <ModalFooter>\n <Button\n variant={'filled'}\n color={'primary'}\n onPress={handleConfirm}\n disabled={loading}\n >\n <Text fontColor={'light'} fontWeight=\"bold\">\n {confirmButtonText}\n </Text>\n </Button>\n </ModalFooter>\n )}\n </ModalView>\n );\n};\n\ninterface IOption<T> {\n item: T & { _checked: boolean };\n type: 'single' | 'multi';\n labelExtractor: (option: T) => string;\n handlePressItem: (option: T) => void;\n}\n\nconst MemoizedOption = <T,>({\n handlePressItem,\n labelExtractor,\n item,\n type,\n}: IOption<T>): JSX.Element => {\n return React.useMemo(() => {\n const label = labelExtractor(item);\n return (\n <ListItem onPress={() => handlePressItem(item)}>\n <View pointerEvents={'none'}>\n {type === 'multi' ? (\n <Checkbox\n color={'primary'}\n labelPosition={'right'}\n checked={item._checked}\n >\n <StyledTextItemSelect\n fontWeight={item._checked ? 'bold' : 'regular'}\n ellipsizeMode={'tail'}\n numberOfLines={1}\n >\n {label}\n </StyledTextItemSelect>\n </Checkbox>\n ) : (\n <RadioButton\n color={'primary'}\n labelPosition={'right'}\n checked={item._checked}\n >\n <StyledTextItemSelect\n fontWeight={item._checked ? 'bold' : 'regular'}\n ellipsizeMode={'tail'}\n numberOfLines={1}\n >\n {label}\n </StyledTextItemSelect>\n </RadioButton>\n )}\n </View>\n </ListItem>\n );\n }, [item._checked]);\n};\n\nexport const Modal = Component;\n"],"names":["options","value","selectedValues"],"mappings":"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"}
@@ -4,7 +4,6 @@ import { useState, useEffect } from 'react';
4
4
  import 'react-native';
5
5
  import 'react-native-safe-area-context';
6
6
  import '../../atoms/Modal/ui/styled.js';
7
- import 'uuid';
8
7
  import { useLazyModalManager } from '../../atoms/Modal/useLazyModalManager.js';
9
8
  import Text from '../../atoms/Text/Text.js';
10
9
  import { Modal } from './Modal.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../../../../src/components/molecules/Select/Select.tsx"],"sourcesContent":["import {\n HintInputContainer,\n InputContainerProps,\n useInputFocus,\n} from '@tecsinapse/react-core';\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { useLazyModalManager } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { Modal } from './Modal';\nimport { SelectIcon, StyledSelectionText } from './styled';\n\nexport interface SelectNativeProps<Data, Type extends 'single' | 'multi'>\n extends Omit<InputContainerProps, 'value' | 'onChange' | 'onChangeText'> {\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 | null | undefined : Data[];\n type: Type;\n\n keyExtractor: (t: Data, index?: number) => string;\n labelExtractor: (t: Data) => string;\n groupKeyExtractor?: (t: Data) => string;\n\n hideSearchBar?: boolean;\n placeholder?: string;\n onFocus?: () => void | never;\n onBlur?: () => void | never;\n onSearch?:\n | ((searchArg: string) => void)\n | ((searchInput?: string) => Promise<Data[]>)\n | never;\n searchBarPlaceholder?: string;\n confirmButtonText?: string;\n selectModalTitle?: string;\n selectModalTitleComponent?: JSX.Element;\n closeOnPick?: boolean;\n controlComponent?: (\n onPress: () => void,\n displayValue?: string\n ) => JSX.Element;\n numberOfLines?: number;\n}\n\nfunction Select<Data, Type extends 'single' | 'multi'>({\n /** Select props */\n value,\n options,\n keyExtractor,\n groupKeyExtractor,\n onSelect,\n type,\n labelExtractor,\n placeholder,\n onFocus,\n onBlur,\n disabled,\n onSearch,\n selectModalTitle,\n selectModalTitleComponent,\n searchBarPlaceholder,\n hideSearchBar,\n confirmButtonText,\n rightComponent,\n variant = 'default',\n hintComponent,\n hint,\n style,\n controlComponent,\n closeOnPick = type === 'single',\n label,\n numberOfLines,\n ...rest\n}: SelectNativeProps<Data, Type>): JSX.Element {\n const { focused, handleBlur, handleFocus } = useInputFocus(\n onFocus,\n onBlur,\n !disabled\n );\n\n const [selectOptions, setSelectOptions] = useState<Data[]>([]);\n const modal = useLazyModalManager();\n\n // TODO: Add Skeleton to modal height when loading is true\n const [loading, setLoading] = useState<boolean>(false);\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 useEffect(() => {\n if (typeof options !== 'function') {\n setSelectOptions(options);\n }\n }, [options]);\n\n const handleLazyFocus = React.useCallback(async () => {\n if (typeof options === 'function' && !onSearch) {\n setLoading(true);\n try {\n const result = await options();\n if (result) {\n if (\n value &&\n !result.find(v => keyExtractor(value as Data) === keyExtractor(v))\n ) {\n setSelectOptions([value as Data, ...result]);\n } else setSelectOptions(result);\n }\n } catch (e) {\n // TODO: Catch error\n } finally {\n setLoading(false);\n }\n }\n }, [options, value, setSelectOptions]);\n\n const handleOnSearch = React.useCallback(\n async (searchInput: string | undefined) => {\n if (searchInput !== undefined && onSearch) {\n setLoading(true);\n modal.requestUpdate();\n try {\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) {\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 } finally {\n modal.requestUpdate();\n setLoading(false);\n }\n }\n },\n [options, value, keyExtractor]\n );\n\n const getDisplayValue = React.useCallback(() => {\n if (Array.isArray(value)) {\n if (value.length === 0) return _placeholder;\n else {\n const options =\n selectOptions.length > 0 ? selectOptions : (value as Data[]);\n return options\n ?.reduce(\n (acc, option, index) =>\n value.find(\n key => keyExtractor(option, index) == keyExtractor(key, index)\n )\n ? acc + labelExtractor(option) + ', '\n : acc,\n ''\n )\n .slice(0, -2);\n }\n } else {\n if (!value) return _placeholder;\n const selectedOption = selectOptions?.find(\n (option, index) =>\n keyExtractor(option, index) == keyExtractor(value as Data, index)\n );\n return labelExtractor(selectedOption ?? (value as Data));\n }\n }, [_placeholder, value, selectOptions]);\n\n modal.sync(\n <Modal\n options={selectOptions || []}\n focused={true}\n keyExtractor={keyExtractor}\n labelExtractor={labelExtractor}\n groupKeyExtractor={groupKeyExtractor}\n searchBarPlaceholder={searchBarPlaceholder}\n type={type}\n onSelect={onSelect}\n value={value}\n hideSearchBar={hideSearchBar}\n onSearch={handleOnSearch}\n selectModalTitle={selectModalTitle}\n selectModalTitleComponent={selectModalTitleComponent}\n confirmButtonText={confirmButtonText}\n loading={loading}\n onClose={() => {\n if (typeof options === 'function') {\n setSelectOptions([]);\n }\n handleBlur();\n }}\n closeOnPick={closeOnPick}\n />\n );\n\n const handlePressInput = async () => {\n modal.show();\n handleFocus();\n await handleLazyFocus();\n };\n\n return (\n <>\n {controlComponent ? (\n controlComponent(handlePressInput, getDisplayValue() || '')\n ) : (\n <HintInputContainer\n viewStyle={style}\n onPress={handlePressInput}\n focused={focused}\n disabled={disabled}\n LabelComponent={Text}\n variant={variant}\n hint={hint}\n hintComponent={hintComponent}\n label={_label}\n rightComponent={\n <>\n <SelectIcon name=\"chevron-down\" type=\"ionicon\" size=\"centi\" />\n {rightComponent}\n </>\n }\n {...rest}\n >\n <StyledSelectionText\n numberOfLines={numberOfLines}\n fontWeight=\"bold\"\n disabled={disabled}\n >\n {getDisplayValue() || ' '}\n </StyledSelectionText>\n </HintInputContainer>\n )}\n </>\n );\n}\n\nexport default Select;\n"],"names":["options"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","sources":["../../../../../src/components/molecules/Select/Select.tsx"],"sourcesContent":["import {\n HintInputContainer,\n InputContainerProps,\n useInputFocus,\n} from '@tecsinapse/react-core';\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { useLazyModalManager } from '../../atoms/Modal';\nimport { Text } from '../../atoms/Text';\nimport { Modal } from './Modal';\nimport { SelectIcon, StyledSelectionText } from './styled';\n\nexport interface SelectNativeProps<Data, Type extends 'single' | 'multi'>\n extends Omit<InputContainerProps, 'value' | 'onChange' | 'onChangeText'> {\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 | null | undefined : Data[];\n type: Type;\n\n keyExtractor: (t: Data, index?: number) => string;\n labelExtractor: (t: Data) => string;\n groupKeyExtractor?: (t: Data) => string;\n\n hideSearchBar?: boolean;\n placeholder?: string;\n onFocus?: () => void | never;\n onBlur?: () => void | never;\n onSearch?:\n | ((searchArg: string) => void)\n | ((searchInput?: string) => Promise<Data[]>)\n | never;\n searchBarPlaceholder?: string;\n confirmButtonText?: string;\n selectModalTitle?: string;\n selectModalTitleComponent?: JSX.Element;\n closeOnPick?: boolean;\n controlComponent?: (\n onPress: () => void,\n displayValue?: string\n ) => JSX.Element;\n numberOfLines?: number;\n}\n\nfunction Select<Data, Type extends 'single' | 'multi'>({\n /** Select props */\n value,\n options,\n keyExtractor,\n groupKeyExtractor,\n onSelect,\n type,\n labelExtractor,\n placeholder,\n onFocus,\n onBlur,\n disabled,\n onSearch,\n selectModalTitle,\n selectModalTitleComponent,\n searchBarPlaceholder,\n hideSearchBar,\n confirmButtonText,\n rightComponent,\n variant = 'default',\n hintComponent,\n hint,\n style,\n controlComponent,\n closeOnPick = type === 'single',\n label,\n numberOfLines,\n ...rest\n}: SelectNativeProps<Data, Type>): JSX.Element {\n const { focused, handleBlur, handleFocus } = useInputFocus(\n onFocus,\n onBlur,\n !disabled\n );\n\n const [selectOptions, setSelectOptions] = useState<Data[]>([]);\n const modal = useLazyModalManager();\n\n // TODO: Add Skeleton to modal height when loading is true\n const [loading, setLoading] = useState<boolean>(false);\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 useEffect(() => {\n if (typeof options !== 'function') {\n setSelectOptions(options);\n }\n }, [options]);\n\n const handleLazyFocus = React.useCallback(async () => {\n if (typeof options === 'function' && !onSearch) {\n setLoading(true);\n try {\n const result = await options();\n if (result) {\n if (\n value &&\n !result.find(v => keyExtractor(value as Data) === keyExtractor(v))\n ) {\n setSelectOptions([value as Data, ...result]);\n } else setSelectOptions(result);\n }\n } catch (e) {\n // TODO: Catch error\n } finally {\n setLoading(false);\n }\n }\n }, [options, value, setSelectOptions]);\n\n const handleOnSearch = React.useCallback(\n async (searchInput: string | undefined) => {\n if (searchInput !== undefined && onSearch) {\n setLoading(true);\n modal.requestUpdate();\n try {\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) {\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 } finally {\n modal.requestUpdate();\n setLoading(false);\n }\n }\n },\n [options, value, keyExtractor]\n );\n\n const getDisplayValue = React.useCallback(() => {\n if (Array.isArray(value)) {\n if (value.length === 0) return _placeholder;\n else {\n const options =\n selectOptions.length > 0 ? selectOptions : (value as Data[]);\n return options\n ?.reduce(\n (acc, option, index) =>\n value.find(\n key => keyExtractor(option, index) == keyExtractor(key, index)\n )\n ? acc + labelExtractor(option) + ', '\n : acc,\n ''\n )\n .slice(0, -2);\n }\n } else {\n if (!value) return _placeholder;\n const selectedOption = selectOptions?.find(\n (option, index) =>\n keyExtractor(option, index) == keyExtractor(value as Data, index)\n );\n return labelExtractor(selectedOption ?? (value as Data));\n }\n }, [_placeholder, value, selectOptions]);\n\n modal.sync(\n <Modal\n options={selectOptions || []}\n focused={true}\n keyExtractor={keyExtractor}\n labelExtractor={labelExtractor}\n groupKeyExtractor={groupKeyExtractor}\n searchBarPlaceholder={searchBarPlaceholder}\n type={type}\n onSelect={onSelect}\n value={value}\n hideSearchBar={hideSearchBar}\n onSearch={handleOnSearch}\n selectModalTitle={selectModalTitle}\n selectModalTitleComponent={selectModalTitleComponent}\n confirmButtonText={confirmButtonText}\n loading={loading}\n onClose={() => {\n if (typeof options === 'function') {\n setSelectOptions([]);\n }\n handleBlur();\n }}\n closeOnPick={closeOnPick}\n />\n );\n\n const handlePressInput = async () => {\n modal.show();\n handleFocus();\n await handleLazyFocus();\n };\n\n return (\n <>\n {controlComponent ? (\n controlComponent(handlePressInput, getDisplayValue() || '')\n ) : (\n <HintInputContainer\n viewStyle={style}\n onPress={handlePressInput}\n focused={focused}\n disabled={disabled}\n LabelComponent={Text}\n variant={variant}\n hint={hint}\n hintComponent={hintComponent}\n label={_label}\n rightComponent={\n <>\n <SelectIcon name=\"chevron-down\" type=\"ionicon\" size=\"centi\" />\n {rightComponent}\n </>\n }\n {...rest}\n >\n <StyledSelectionText\n numberOfLines={numberOfLines}\n fontWeight=\"bold\"\n disabled={disabled}\n >\n {getDisplayValue() || ' '}\n </StyledSelectionText>\n </HintInputContainer>\n )}\n </>\n );\n}\n\nexport default Select;\n"],"names":["options"],"mappings":";;;;;;;;;;;AA6CA,SAAS,MAA8C,CAAA;AAAA;AAAA,EAErD,KAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA;AAAA,EACA,iBAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,yBAAA;AAAA,EACA,oBAAA;AAAA,EACA,aAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA,OAAU,GAAA,SAAA;AAAA,EACV,aAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAc,IAAS,KAAA,QAAA;AAAA,EACvB,KAAA;AAAA,EACA,aAAA;AAAA,EACA,GAAG,IAAA;AACL,CAA+C,EAAA;AAC7C,EAAA,MAAM,EAAE,OAAA,EAAS,UAAY,EAAA,WAAA,EAAgB,GAAA,aAAA;AAAA,IAC3C,OAAA;AAAA,IACA,MAAA;AAAA,IACA,CAAC,QAAA;AAAA,GACH,CAAA;AAEA,EAAA,MAAM,CAAC,aAAe,EAAA,gBAAgB,CAAI,GAAA,QAAA,CAAiB,EAAE,CAAA,CAAA;AAC7D,EAAA,MAAM,QAAQ,mBAAoB,EAAA,CAAA;AAGlC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAkB,KAAK,CAAA,CAAA;AAErD,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,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;AAEZ,EAAM,MAAA,eAAA,GAAkB,KAAM,CAAA,WAAA,CAAY,YAAY;AACpD,IAAA,IAAI,OAAO,OAAA,KAAY,UAAc,IAAA,CAAC,QAAU,EAAA;AAC9C,MAAA,UAAA,CAAW,IAAI,CAAA,CAAA;AACf,MAAI,IAAA;AACF,QAAM,MAAA,MAAA,GAAS,MAAM,OAAQ,EAAA,CAAA;AAC7B,QAAA,IAAI,MAAQ,EAAA;AACV,UACE,IAAA,KAAA,IACA,CAAC,MAAA,CAAO,IAAK,CAAA,CAAA,CAAA,KAAK,YAAa,CAAA,KAAa,CAAM,KAAA,YAAA,CAAa,CAAC,CAAC,CACjE,EAAA;AACA,YAAA,gBAAA,CAAiB,CAAC,KAAA,EAAe,GAAG,MAAM,CAAC,CAAA,CAAA;AAAA,WAC7C;AAAO,YAAA,gBAAA,CAAiB,MAAM,CAAA,CAAA;AAAA,SAChC;AAAA,eACO,CAAG,EAAA;AAAA,OAEV,SAAA;AACA,QAAA,UAAA,CAAW,KAAK,CAAA,CAAA;AAAA,OAClB;AAAA,KACF;AAAA,GACC,EAAA,CAAC,OAAS,EAAA,KAAA,EAAO,gBAAgB,CAAC,CAAA,CAAA;AAErC,EAAA,MAAM,iBAAiB,KAAM,CAAA,WAAA;AAAA,IAC3B,OAAO,WAAoC,KAAA;AACzC,MAAI,IAAA,WAAA,KAAgB,UAAa,QAAU,EAAA;AACzC,QAAA,UAAA,CAAW,IAAI,CAAA,CAAA;AACf,QAAA,KAAA,CAAM,aAAc,EAAA,CAAA;AACpB,QAAI,IAAA;AACF,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,cAAA,IAAK,OAAkB,MAAQ,EAAA;AAC7B,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,SAEV,SAAA;AACA,UAAA,KAAA,CAAM,aAAc,EAAA,CAAA;AACpB,UAAA,UAAA,CAAW,KAAK,CAAA,CAAA;AAAA,SAClB;AAAA,OACF;AAAA,KACF;AAAA,IACA,CAAC,OAAS,EAAA,KAAA,EAAO,YAAY,CAAA;AAAA,GAC/B,CAAA;AAEA,EAAM,MAAA,eAAA,GAAkB,KAAM,CAAA,WAAA,CAAY,MAAM;AAC9C,IAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,KAAK,CAAG,EAAA;AACxB,MAAA,IAAI,MAAM,MAAW,KAAA,CAAA;AAAG,QAAO,OAAA,YAAA,CAAA;AAAA,WAC1B;AACH,QAAA,MAAMA,QACJ,GAAA,aAAA,CAAc,MAAS,GAAA,CAAA,GAAI,aAAiB,GAAA,KAAA,CAAA;AAC9C,QAAA,OAAOA,QACH,EAAA,MAAA;AAAA,UACA,CAAC,GAAA,EAAK,MAAQ,EAAA,KAAA,KACZ,KAAM,CAAA,IAAA;AAAA,YACJ,SAAO,YAAa,CAAA,MAAA,EAAQ,KAAK,CAAK,IAAA,YAAA,CAAa,KAAK,KAAK,CAAA;AAAA,WAE3D,GAAA,GAAA,GAAM,cAAe,CAAA,MAAM,IAAI,IAC/B,GAAA,GAAA;AAAA,UACN,EAAA;AAAA,SACF,CACC,KAAM,CAAA,CAAA,EAAG,CAAE,CAAA,CAAA,CAAA;AAAA,OAChB;AAAA,KACK,MAAA;AACL,MAAA,IAAI,CAAC,KAAA;AAAO,QAAO,OAAA,YAAA,CAAA;AACnB,MAAA,MAAM,iBAAiB,aAAe,EAAA,IAAA;AAAA,QACpC,CAAC,QAAQ,KACP,KAAA,YAAA,CAAa,QAAQ,KAAK,CAAA,IAAK,YAAa,CAAA,KAAA,EAAe,KAAK,CAAA;AAAA,OACpE,CAAA;AACA,MAAO,OAAA,cAAA,CAAe,kBAAmB,KAAc,CAAA,CAAA;AAAA,KACzD;AAAA,GACC,EAAA,CAAC,YAAc,EAAA,KAAA,EAAO,aAAa,CAAC,CAAA,CAAA;AAEvC,EAAM,KAAA,CAAA,IAAA;AAAA,oBACJ,KAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,iBAAiB,EAAC;AAAA,QAC3B,OAAS,EAAA,IAAA;AAAA,QACT,YAAA;AAAA,QACA,cAAA;AAAA,QACA,iBAAA;AAAA,QACA,oBAAA;AAAA,QACA,IAAA;AAAA,QACA,QAAA;AAAA,QACA,KAAA;AAAA,QACA,aAAA;AAAA,QACA,QAAU,EAAA,cAAA;AAAA,QACV,gBAAA;AAAA,QACA,yBAAA;AAAA,QACA,iBAAA;AAAA,QACA,OAAA;AAAA,QACA,SAAS,MAAM;AACb,UAAI,IAAA,OAAO,YAAY,UAAY,EAAA;AACjC,YAAA,gBAAA,CAAiB,EAAE,CAAA,CAAA;AAAA,WACrB;AACA,UAAW,UAAA,EAAA,CAAA;AAAA,SACb;AAAA,QACA,WAAA;AAAA,OAAA;AAAA,KACF;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,mBAAmB,YAAY;AACnC,IAAA,KAAA,CAAM,IAAK,EAAA,CAAA;AACX,IAAY,WAAA,EAAA,CAAA;AACZ,IAAA,MAAM,eAAgB,EAAA,CAAA;AAAA,GACxB,CAAA;AAEA,EAAA,iEAEK,gBACC,GAAA,gBAAA,CAAiB,kBAAkB,eAAgB,EAAA,IAAK,EAAE,CAE1D,mBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACC,SAAW,EAAA,KAAA;AAAA,MACX,OAAS,EAAA,gBAAA;AAAA,MACT,OAAA;AAAA,MACA,QAAA;AAAA,MACA,cAAgB,EAAA,IAAA;AAAA,MAChB,OAAA;AAAA,MACA,IAAA;AAAA,MACA,aAAA;AAAA,MACA,KAAO,EAAA,MAAA;AAAA,MACP,cAAA,kBAEI,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,UAAW,EAAA,EAAA,IAAA,EAAK,cAAe,EAAA,IAAA,EAAK,SAAU,EAAA,IAAA,EAAK,OAAQ,EAAA,CAAA,EAC3D,cACH,CAAA;AAAA,MAED,GAAG,IAAA;AAAA,KAAA;AAAA,oBAEJ,KAAA,CAAA,aAAA;AAAA,MAAC,mBAAA;AAAA,MAAA;AAAA,QACC,aAAA;AAAA,QACA,UAAW,EAAA,MAAA;AAAA,QACX,QAAA;AAAA,OAAA;AAAA,MAEC,iBAAqB,IAAA,GAAA;AAAA,KACxB;AAAA,GAGN,CAAA,CAAA;AAEJ;;;;"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tecsinapse/react-native-kit",
3
3
  "description": "TecSinapse React Native components",
4
- "version": "2.0.9-beta.3+d9db318d",
4
+ "version": "2.2.0",
5
5
  "license": "MIT",
6
6
  "main": "dist/esm/index.js",
7
7
  "module": "dist/esm/index.js",
@@ -22,8 +22,8 @@
22
22
  "dependencies": {
23
23
  "@emotion/native": "~11.10.0",
24
24
  "@emotion/react": "~11.10.0",
25
- "@tecsinapse/react-core": "2.0.8-beta.3+d9db318d",
26
- "react-native-linear-gradient": "~2.6.2"
25
+ "@tecsinapse/react-core": "2.2.0",
26
+ "react-native-linear-gradient": "~2.8.3"
27
27
  },
28
28
  "repository": {
29
29
  "type": "git",
@@ -39,11 +39,7 @@
39
39
  "react-native": "^0.71.0",
40
40
  "react-native-linear-gradient": "^2.5.6",
41
41
  "react-native-safe-area-context": "^4.0.0",
42
- "react-native-vector-icons": "^9.0.0",
43
- "uuid": "^8.3.2"
42
+ "react-native-vector-icons": "^9.2.0"
44
43
  },
45
- "devDependencies": {
46
- "@types/uuid": "^8.3.3"
47
- },
48
- "gitHead": "d9db318dbdccec2922107c12c8e01b3d7cef547f"
44
+ "gitHead": "1964ad151f85196e3bc7e1975291a2f04d6d65dd"
49
45
  }