@apia/components 2.0.6 → 2.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/IconsList/Icon.js.map +1 -1
- package/dist/components/IconsList/IconWrapper.js.map +1 -1
- package/dist/components/IconsList/KeyHandler.js.map +1 -1
- package/dist/components/IconsList/context.js.map +1 -1
- package/dist/components/IconsList/index.js.map +1 -1
- package/dist/components/IconsList/renderers/DefaultIconRenderer.js.map +1 -1
- package/dist/components/IconsList/store/context.js.map +1 -1
- package/dist/components/IconsList/store/distinctors.js.map +1 -1
- package/dist/components/IconsList/store/keysMaker.js.map +1 -1
- package/dist/components/IconsList/store/operations.js.map +1 -1
- package/dist/components/IconsList/store/state.js.map +1 -1
- package/dist/components/IconsList/store/useStore.js.map +1 -1
- package/dist/components/IconsList/styles.js.map +1 -1
- package/dist/components/IconsList/util.js.map +1 -1
- package/dist/components/ListBox/Combobox.js.map +1 -1
- package/dist/components/ListBox/listbox.js.map +1 -1
- package/dist/components/ListBox/operations.js.map +1 -1
- package/dist/components/ListBox/useIndexedChildren.js.map +1 -1
- package/dist/components/ListBox/useListboxAutofocus.js.map +1 -1
- package/dist/components/ListBox/useListboxContextValue.js.map +1 -1
- package/dist/components/ListBox/useShoutSelectionChange.js.map +1 -1
- package/dist/components/ListBox/useStore.js.map +1 -1
- package/dist/components/ListBox/useUpdateRowCount.js.map +1 -1
- package/dist/components/SortableList/SortableListHandler.js +1 -1
- package/dist/components/SortableList/SortableListHandler.js.map +1 -1
- package/dist/components/SortableList/SortableListItem.js.map +1 -1
- package/dist/components/SortableList/index.js.map +1 -1
- package/dist/components/Toolbar/ToolbarController.js.map +1 -1
- package/dist/components/Toolbar/ToolbarIconButton.js.map +1 -1
- package/dist/components/Toolbar/ToolbarInput.js.map +1 -1
- package/dist/components/Toolbar/ToolbarSelect.js.map +1 -1
- package/dist/components/Toolbar/ToolbarSeparator.js.map +1 -1
- package/dist/components/Toolbar/ToolbarTextButton.js.map +1 -1
- package/dist/components/Toolbar/index.js.map +1 -1
- package/dist/components/Toolbar/styles.js.map +1 -1
- package/dist/components/accordion/Accordion.d.ts +1 -0
- package/dist/components/accordion/Accordion.js +6 -0
- package/dist/components/accordion/Accordion.js.map +1 -1
- package/dist/components/accordion/AccordionItem.d.ts +2 -1
- package/dist/components/accordion/AccordionItem.js +5 -1
- package/dist/components/accordion/AccordionItem.js.map +1 -1
- package/dist/components/accordion/AccordionItemButton.js.map +1 -1
- package/dist/components/accordion/AccordionItemContent.js.map +1 -1
- package/dist/components/accordion/KeyHandler.js +64 -59
- package/dist/components/accordion/KeyHandler.js.map +1 -1
- package/dist/components/accordion/context.js.map +1 -1
- package/dist/components/accordion/defaultElements/Checkbox.js.map +1 -1
- package/dist/components/accordion/defaultElements/DefaultAccordionItemButton.js +1 -3
- package/dist/components/accordion/defaultElements/DefaultAccordionItemButton.js.map +1 -1
- package/dist/components/accordion/defaultElements/useIsChecked.js.map +1 -1
- package/dist/components/accordion/handler.d.ts +1 -1
- package/dist/components/accordion/handler.js +11 -3
- package/dist/components/accordion/handler.js.map +1 -1
- package/dist/components/apia/ApiaDateFilter.js.map +1 -1
- package/dist/components/apia/ApiaFilter.js.map +1 -1
- package/dist/components/buttons/useOtherTagButton.js.map +1 -1
- package/dist/components/collapsiblePanel/index.js.map +1 -1
- package/dist/components/collapsiblePanel/styles.js.map +1 -1
- package/dist/components/dialogs/AlertModal.js.map +1 -1
- package/dist/components/dialogs/ConfirmModal.js.map +1 -1
- package/dist/components/forms/Captcha.js.map +1 -1
- package/dist/components/forms/Checkbox.js.map +1 -1
- package/dist/components/forms/DateInput.js.map +1 -1
- package/dist/components/forms/FieldErrorMessage.js.map +1 -1
- package/dist/components/forms/FieldLabel.js.map +1 -1
- package/dist/components/forms/IconInput.js.map +1 -1
- package/dist/components/forms/NumberInput.js.map +1 -1
- package/dist/components/forms/RequiredMark.js.map +1 -1
- package/dist/components/forms/buttons/BaseButton.js.map +1 -1
- package/dist/components/forms/buttons/IconButton.js.map +1 -1
- package/dist/components/forms/buttons/SimpleButton.js.map +1 -1
- package/dist/components/forms/util/style.js.map +1 -1
- package/dist/components/importComponent.js +1 -1
- package/dist/components/importComponent.js.map +1 -1
- package/dist/components/loaders/LinearLoader.js.map +1 -1
- package/dist/components/loaders/LoaderSpinner.js.map +1 -1
- package/dist/components/loaders/ProgressBar.js.map +1 -1
- package/dist/components/modals/CalendarModal.js.map +1 -1
- package/dist/components/modals/Modal.d.ts +28 -2
- package/dist/components/modals/Modal.js +3 -1
- package/dist/components/modals/Modal.js.map +1 -1
- package/dist/components/modals/ModalContext.js.map +1 -1
- package/dist/components/modals/Overlay.js.map +1 -1
- package/dist/components/modals/StaticModal.js.map +1 -1
- package/dist/components/modals/WindowModal.js +225 -4
- package/dist/components/modals/WindowModal.js.map +1 -1
- package/dist/components/modals/hooks/useEscapeKey.js +36 -0
- package/dist/components/modals/hooks/useEscapeKey.js.map +1 -0
- package/dist/components/modals/hooks/useInitialFocus.js +37 -0
- package/dist/components/modals/hooks/useInitialFocus.js.map +1 -0
- package/dist/components/modals/hooks/useModal.js.map +1 -1
- package/dist/components/modals/hooks/useStyleState.js +44 -0
- package/dist/components/modals/hooks/useStyleState.js.map +1 -0
- package/dist/components/modals/layout/Confirm.js.map +1 -1
- package/dist/components/modals/layout/DialogButtonBar.js.map +1 -1
- package/dist/components/modals/layout/DialogHeader.js +1 -2
- package/dist/components/modals/layout/DialogHeader.js.map +1 -1
- package/dist/components/responsive/AutoEllipsis.js.map +1 -1
- package/dist/components/responsive/makeResponsiveComponent.js.map +1 -1
- package/dist/components/waiAriaHelpers/typeAhead.js.map +1 -1
- package/dist/globalFocus.js +2 -2
- package/dist/globalFocus.js.map +1 -1
- package/dist/hooks/useBodyScrollLock.js +2 -2
- package/dist/hooks/useBodyScrollLock.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/objects/ApiaUtil/dialogs/ApiaUtilDialogs.js +3 -3
- package/dist/objects/ApiaUtil/dialogs/ApiaUtilDialogs.js.map +1 -1
- package/dist/objects/ApiaUtil/index.js +1 -1
- package/dist/objects/ApiaUtil/index.js.map +1 -1
- package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.js +2 -2
- package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.js.map +1 -1
- package/dist/objects/ApiaUtil/modals/ApiaUtilModals.js +3 -3
- package/dist/objects/ApiaUtil/modals/ApiaUtilModals.js.map +1 -1
- package/dist/objects/ApiaUtil/modals/OpenModal.d.ts +31 -1
- package/dist/objects/ApiaUtil/modals/OpenModal.js +18 -0
- package/dist/objects/ApiaUtil/modals/OpenModal.js.map +1 -1
- package/dist/objects/ApiaUtil/mouse/ApiaUtilMouse.js.map +1 -1
- package/dist/objects/ApiaUtil/notifications/ApiaUtilNotifications.js.map +1 -1
- package/dist/objects/ApiaUtil/parsers/ApiaUtilParsers.js.map +1 -1
- package/dist/objects/ApiaUtil/tabs/ApiaUtilCurrentTab.js.map +1 -1
- package/dist/objects/ApiaUtil/tabs/ApiaUtilTabsController.js +1 -1
- package/dist/objects/ApiaUtil/tabs/ApiaUtilTabsController.js.map +1 -1
- package/dist/objects/ApiaUtil/tabs/util.js.map +1 -1
- package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltip.js +1 -1
- package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltip.js.map +1 -1
- package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltips.js.map +1 -1
- package/dist/objects/ApiaUtil/tooltips/AutomaticTooltip.js +1 -1
- package/dist/objects/ApiaUtil/tooltips/AutomaticTooltip.js.map +1 -1
- package/dist/objects/ApiaUtil/tooltips/tooltip/Tooltip.js.map +1 -1
- package/dist/objects/ApiaUtil/tooltips/tooltip/util.js.map +1 -1
- package/dist/tabs/Content.js.map +1 -1
- package/dist/tabs/ContextMenu.js +1 -2
- package/dist/tabs/ContextMenu.js.map +1 -1
- package/dist/tabs/Item.js +1 -2
- package/dist/tabs/Item.js.map +1 -1
- package/dist/tabs/Tabs.js.map +1 -1
- package/dist/tabs/TabsList.js.map +1 -1
- package/dist/tabs/renderers/DefaultTabsLabelRenderer.js.map +1 -1
- package/dist/tabs/tabsController.js.map +1 -1
- package/dist/tabs/useTabsList.js.map +1 -1
- package/dist/tabs/util.js.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultAccordionItemButton.js","sources":["../../../../src/components/accordion/defaultElements/DefaultAccordionItemButton.tsx"],"sourcesContent":["import { Box } from '@apia/theme';\nimport { Icon, type TIconName } from '@apia/icons';\nimport { useAccordionContext } from '../context';\nimport { ISimpleButton, SimpleButton } from '../../forms';\nimport { Checkbox } from './Checkbox';\nimport { useIsChecked } from './useIsChecked';\nimport { KeyboardEvent, MouseEvent, ReactNode, useCallback } from 'react';\nimport { AutoEllipsis } from '../../responsive';\n\nexport interface IAccordionItemButton {\n ariaLabel: string;\n /**\n * Si checked !== undefined => se mostrará un checkbox.\n */\n checked?: boolean;\n /**\n * Solamente se utiliza en conjunto con el checkbox y permite evitar que el\n * usuario pueda marcar o desmarcar el checkbox.\n */\n className?: string;\n disableSelection?: boolean;\n domButtonProps?: ISimpleButton;\n label: string;\n /**\n * Evento que se dispara cuando el usuario hace click en el checkbox o\n * presiona espacio sobre el botón del acordeón.\n */\n onChange?: (checked: boolean) => unknown;\n onClick?: (ev: MouseEvent) => unknown;\n onUserPressEnter?: (ev: KeyboardEvent) => unknown;\n rightButtons?: ReactNode;\n rightIcons?: TIconName[] | TIconName;\n tabIndex?: number;\n /**\n * Si no se pasa title se usará ariaLabel.\n */\n title?: string;\n}\n\nexport const DefaultAccordionItemButton = (props: IAccordionItemButton) => {\n const handler = useAccordionContext();\n const { isExpanded } = handler.hooks.useItemStateSelector((props) => props);\n const id = handler.hooks.useItemId();\n const [isChecked, setIsChecked] = useIsChecked(props);\n const handleClick = useCallback(\n (ev: MouseEvent) => {\n props.onClick?.(ev);\n if (!ev.isDefaultPrevented())
|
|
1
|
+
{"version":3,"file":"DefaultAccordionItemButton.js","sources":["../../../../src/components/accordion/defaultElements/DefaultAccordionItemButton.tsx"],"sourcesContent":["import { Box } from '@apia/theme';\r\nimport { Icon, type TIconName } from '@apia/icons';\r\nimport { useAccordionContext } from '../context';\r\nimport { ISimpleButton, SimpleButton } from '../../forms';\r\nimport { Checkbox } from './Checkbox';\r\nimport { useIsChecked } from './useIsChecked';\r\nimport { KeyboardEvent, MouseEvent, ReactNode, useCallback } from 'react';\r\nimport { AutoEllipsis } from '../../responsive';\r\n\r\nexport interface IAccordionItemButton {\r\n ariaLabel: string;\r\n /**\r\n * Si checked !== undefined => se mostrará un checkbox.\r\n */\r\n checked?: boolean;\r\n /**\r\n * Solamente se utiliza en conjunto con el checkbox y permite evitar que el\r\n * usuario pueda marcar o desmarcar el checkbox.\r\n */\r\n className?: string;\r\n disableSelection?: boolean;\r\n domButtonProps?: ISimpleButton;\r\n label: string;\r\n /**\r\n * Evento que se dispara cuando el usuario hace click en el checkbox o\r\n * presiona espacio sobre el botón del acordeón.\r\n */\r\n onChange?: (checked: boolean) => unknown;\r\n onClick?: (ev: MouseEvent) => unknown;\r\n onUserPressEnter?: (ev: KeyboardEvent) => unknown;\r\n rightButtons?: ReactNode;\r\n rightIcons?: TIconName[] | TIconName;\r\n tabIndex?: number;\r\n /**\r\n * Si no se pasa title se usará ariaLabel.\r\n */\r\n title?: string;\r\n}\r\n\r\nexport const DefaultAccordionItemButton = (props: IAccordionItemButton) => {\r\n const handler = useAccordionContext();\r\n const { isExpanded } = handler.hooks.useItemStateSelector((props) => props);\r\n const id = handler.hooks.useItemId();\r\n const [isChecked, setIsChecked] = useIsChecked(props);\r\n const handleClick = useCallback(\r\n (ev: MouseEvent) => {\r\n props.onClick?.(ev);\r\n if (!ev.isDefaultPrevented()) handler.toggleItem(id);\r\n },\r\n [handler, id, props],\r\n );\r\n const handleKeyDown = useCallback(\r\n (ev: KeyboardEvent) => {\r\n if (ev.code === 'Enter') {\r\n props.onUserPressEnter?.(ev);\r\n if (!ev.isDefaultPrevented() && props.rightButtons)\r\n handler.udpateItem(id, (current) => ({\r\n isExpanded: !current.isExpanded,\r\n }));\r\n }\r\n },\r\n [handler, id, props],\r\n );\r\n\r\n return (\r\n <SimpleButton\r\n {...props.domButtonProps}\r\n className={`accordion__item__button ${props.className ?? ''} ${\r\n props.domButtonProps?.className ?? ''\r\n }`}\r\n onClick={handleClick}\r\n onKeyDown={handleKeyDown}\r\n aria-expanded={isExpanded}\r\n aria-controls={`accordion__${handler.id}__${id}`}\r\n title={props.title}\r\n aria-label={props.ariaLabel}\r\n tabIndex={props.tabIndex}\r\n >\r\n <Box className=\"accordion__item__button__leftGroup\">\r\n {props.checked !== undefined && (\r\n <Checkbox\r\n checked={isChecked}\r\n disabled={props.disableSelection}\r\n onChange={setIsChecked}\r\n />\r\n )}\r\n <Box as=\"h3\" className=\"accordion__item__button__label\">\r\n <AutoEllipsis overrideStyles={() => ({ textAlign: 'left' })}>\r\n {props.label ?? props.title ?? props.ariaLabel}\r\n </AutoEllipsis>\r\n </Box>\r\n </Box>\r\n <Box className=\"accordion__item__button__rightGroup\">\r\n {props.rightButtons}\r\n <Icon\r\n name={isExpanded ? 'ArrowUpThin' : 'ArrowDownThin'}\r\n title={props.title ?? props.ariaLabel}\r\n size={23}\r\n />\r\n </Box>\r\n </SimpleButton>\r\n );\r\n};\r\n"],"names":["props"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIsChecked.js","sources":["../../../../src/components/accordion/defaultElements/useIsChecked.ts"],"sourcesContent":["import { useRef } from 'react';\nimport { useAccordionContext } from '../context';\nimport { IAccordionItemButton } from './DefaultAccordionItemButton';\n\nexport function useIsChecked(\n props: IAccordionItemButton,\n): [boolean, (isChecked: boolean) => void] {\n const handler = useAccordionContext();\n const isChecked = handler.hooks.useItemStateSelector(\n (current) => current.isChecked,\n );\n const id = handler.hooks.useItemId();\n\n const previousPropsChecked = useRef(props.checked);\n if (\n previousPropsChecked.current !== props.checked &&\n props.checked !== undefined\n ) {\n previousPropsChecked.current = props.checked;\n handler.udpateItem(id, { isChecked: props.checked });\n }\n\n return [\n isChecked,\n (isChecked) => {\n handler.udpateItem(id, { isChecked });\n props.onChange?.(isChecked);\n },\n ];\n}\n"],"names":["isChecked"],"mappings":";;;AAIO,SAAS,aACd,KACyC,EAAA;AACzC,EAAA,MAAM,UAAU,mBAAoB,EAAA,CAAA;AACpC,EAAM,MAAA,SAAA,GAAY,QAAQ,KAAM,CAAA,oBAAA;AAAA,IAC9B,CAAC,YAAY,OAAQ,CAAA,SAAA;AAAA,GACvB,CAAA;AACA,EAAM,MAAA,EAAA,GAAK,OAAQ,CAAA,KAAA,CAAM,SAAU,EAAA,CAAA;AAEnC,EAAM,MAAA,oBAAA,GAAuB,MAAO,CAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AACjD,EAAA,IACE,qBAAqB,OAAY,KAAA,KAAA,CAAM,OACvC,IAAA,KAAA,CAAM,YAAY,KAClB,CAAA,EAAA;AACA,IAAA,oBAAA,CAAqB,UAAU,KAAM,CAAA,OAAA,CAAA;AACrC,IAAA,OAAA,CAAQ,WAAW,EAAI,EAAA,EAAE,SAAW,EAAA,KAAA,CAAM,SAAS,CAAA,CAAA;AAAA,GACrD;AAEA,EAAO,OAAA;AAAA,IACL,SAAA;AAAA,IACA,CAACA,UAAc,KAAA;AACb,MAAA,OAAA,CAAQ,UAAW,CAAA,EAAA,EAAI,EAAE,SAAA,EAAAA,YAAW,CAAA,CAAA;AACpC,MAAA,KAAA,CAAM,WAAWA,UAAS,CAAA,CAAA;AAAA,KAC5B;AAAA,GACF,CAAA;AACF;;;;"}
|
|
1
|
+
{"version":3,"file":"useIsChecked.js","sources":["../../../../src/components/accordion/defaultElements/useIsChecked.ts"],"sourcesContent":["import { useRef } from 'react';\r\nimport { useAccordionContext } from '../context';\r\nimport { IAccordionItemButton } from './DefaultAccordionItemButton';\r\n\r\nexport function useIsChecked(\r\n props: IAccordionItemButton,\r\n): [boolean, (isChecked: boolean) => void] {\r\n const handler = useAccordionContext();\r\n const isChecked = handler.hooks.useItemStateSelector(\r\n (current) => current.isChecked,\r\n );\r\n const id = handler.hooks.useItemId();\r\n\r\n const previousPropsChecked = useRef(props.checked);\r\n if (\r\n previousPropsChecked.current !== props.checked &&\r\n props.checked !== undefined\r\n ) {\r\n previousPropsChecked.current = props.checked;\r\n handler.udpateItem(id, { isChecked: props.checked });\r\n }\r\n\r\n return [\r\n isChecked,\r\n (isChecked) => {\r\n handler.udpateItem(id, { isChecked });\r\n props.onChange?.(isChecked);\r\n },\r\n ];\r\n}\r\n"],"names":["isChecked"],"mappings":";;;AAIO,SAAS,aACd,KACyC,EAAA;AACzC,EAAA,MAAM,UAAU,mBAAoB,EAAA,CAAA;AACpC,EAAM,MAAA,SAAA,GAAY,QAAQ,KAAM,CAAA,oBAAA;AAAA,IAC9B,CAAC,YAAY,OAAQ,CAAA,SAAA;AAAA,GACvB,CAAA;AACA,EAAM,MAAA,EAAA,GAAK,OAAQ,CAAA,KAAA,CAAM,SAAU,EAAA,CAAA;AAEnC,EAAM,MAAA,oBAAA,GAAuB,MAAO,CAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AACjD,EAAA,IACE,qBAAqB,OAAY,KAAA,KAAA,CAAM,OACvC,IAAA,KAAA,CAAM,YAAY,KAClB,CAAA,EAAA;AACA,IAAA,oBAAA,CAAqB,UAAU,KAAM,CAAA,OAAA,CAAA;AACrC,IAAA,OAAA,CAAQ,WAAW,EAAI,EAAA,EAAE,SAAW,EAAA,KAAA,CAAM,SAAS,CAAA,CAAA;AAAA,GACrD;AAEA,EAAO,OAAA;AAAA,IACL,SAAA;AAAA,IACA,CAACA,UAAc,KAAA;AACb,MAAA,OAAA,CAAQ,UAAW,CAAA,EAAA,EAAI,EAAE,SAAA,EAAAA,YAAW,CAAA,CAAA;AACpC,MAAA,KAAA,CAAM,WAAWA,UAAS,CAAA,CAAA;AAAA,KAC5B;AAAA,GACF,CAAA;AACF;;;;"}
|
|
@@ -14,7 +14,7 @@ declare class AccordionHandler {
|
|
|
14
14
|
propsListeners: TPropsListener[];
|
|
15
15
|
constructor(id: string, props: IAccordionProps);
|
|
16
16
|
registerItem(itemId: TId, initialState: TItemState): void;
|
|
17
|
-
toggleItem(itemId: TId,
|
|
17
|
+
toggleItem(itemId: TId, expanded?: boolean): void;
|
|
18
18
|
unregisterItem(itemId: TId): void;
|
|
19
19
|
/**
|
|
20
20
|
* Permite actualizar parcialmente el estado de un item
|
|
@@ -91,8 +91,16 @@ class AccordionHandler {
|
|
|
91
91
|
if (!this.itemsState[itemId])
|
|
92
92
|
this.itemsState[itemId] = initialState;
|
|
93
93
|
}
|
|
94
|
-
toggleItem(itemId,
|
|
95
|
-
this.itemsState[itemId].isExpanded
|
|
94
|
+
toggleItem(itemId, expanded) {
|
|
95
|
+
const isExpanded = expanded ?? !this.itemsState[itemId].isExpanded;
|
|
96
|
+
if (this.props.singleExpand && isExpanded) {
|
|
97
|
+
Object.keys(this.itemsState).forEach((current) => {
|
|
98
|
+
if (current !== itemId) {
|
|
99
|
+
this.udpateItem(current, { isExpanded: false });
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
this.udpateItem(itemId, { isExpanded });
|
|
96
104
|
}
|
|
97
105
|
unregisterItem(itemId) {
|
|
98
106
|
delete this.itemsState[itemId];
|
|
@@ -109,7 +117,7 @@ class AccordionHandler {
|
|
|
109
117
|
);
|
|
110
118
|
}
|
|
111
119
|
updateProps(props) {
|
|
112
|
-
this.props = props;
|
|
120
|
+
this.props = { ...this.props, ...props };
|
|
113
121
|
this.propsListeners.forEach((current) => current(props));
|
|
114
122
|
}
|
|
115
123
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sources":["../../../src/components/accordion/handler.tsx"],"sourcesContent":["import { TId } from '@apia/util';\nimport { ReactNode, useContext, useEffect, useMemo, useState } from 'react';\nimport { AccordionContext, AccordionItemContext } from './context';\nimport { TItemState, TItemStateListener, TPropsListener } from './types';\nimport { shallowEqual } from '@apia/store';\nimport { IAccordionProps } from './Accordion';\n\ntype TSelectionComparator<T> = (prev: T, next: T) => boolean;\n\ntype TItemUpdater =\n | Partial<TItemState>\n | ((currentProps: TItemState) => Partial<TItemState>);\n\nfunction makeItemStateSelectorHook(handler: AccordionHandler) {\n return function useItemStateSelector<T>(\n selector: (props: TItemState) => T,\n comparator: TSelectionComparator<T> = shallowEqual,\n ) {\n const id = handler.hooks.useItemId();\n const [state, setState] = useState<T>(selector(handler.itemsState[id]));\n\n handler.hooks.useItemStateUpdate((props) => {\n const newState = selector(props);\n if (!comparator(state, newState)) {\n setState(newState);\n }\n });\n\n return state;\n };\n}\n\nfunction makePropsSelectorHook(handler: AccordionHandler) {\n return function usePropsSelector<T>(\n selector: (props: IAccordionProps) => T,\n comparator: TSelectionComparator<T> = shallowEqual,\n ) {\n const [state, setState] = useState<T>(selector(handler.props));\n\n handler.hooks.usePropsUpdate((props) => {\n const newState = selector(props);\n if (!comparator(state, newState)) {\n setState(newState);\n }\n });\n\n return state;\n };\n}\n\nexport class AccordionHandler {\n itemsState: Record<TId, TItemState> = {};\n itemsStateListeners: Record<TId, TItemStateListener[]> = {};\n\n propsListeners: TPropsListener[] = [];\n\n constructor(public id: string
|
|
1
|
+
{"version":3,"file":"handler.js","sources":["../../../src/components/accordion/handler.tsx"],"sourcesContent":["import { TId } from '@apia/util';\r\nimport { ReactNode, useContext, useEffect, useMemo, useState } from 'react';\r\nimport { AccordionContext, AccordionItemContext } from './context';\r\nimport { TItemState, TItemStateListener, TPropsListener } from './types';\r\nimport { shallowEqual } from '@apia/store';\r\nimport { IAccordionProps } from './Accordion';\r\n\r\ntype TSelectionComparator<T> = (prev: T, next: T) => boolean;\r\n\r\ntype TItemUpdater =\r\n | Partial<TItemState>\r\n | ((currentProps: TItemState) => Partial<TItemState>);\r\n\r\nfunction makeItemStateSelectorHook(handler: AccordionHandler) {\r\n return function useItemStateSelector<T>(\r\n selector: (props: TItemState) => T,\r\n comparator: TSelectionComparator<T> = shallowEqual,\r\n ) {\r\n const id = handler.hooks.useItemId();\r\n const [state, setState] = useState<T>(selector(handler.itemsState[id]));\r\n\r\n handler.hooks.useItemStateUpdate((props) => {\r\n const newState = selector(props);\r\n if (!comparator(state, newState)) {\r\n setState(newState);\r\n }\r\n });\r\n\r\n return state;\r\n };\r\n}\r\n\r\nfunction makePropsSelectorHook(handler: AccordionHandler) {\r\n return function usePropsSelector<T>(\r\n selector: (props: IAccordionProps) => T,\r\n comparator: TSelectionComparator<T> = shallowEqual,\r\n ) {\r\n const [state, setState] = useState<T>(selector(handler.props));\r\n\r\n handler.hooks.usePropsUpdate((props) => {\r\n const newState = selector(props);\r\n if (!comparator(state, newState)) {\r\n setState(newState);\r\n }\r\n });\r\n\r\n return state;\r\n };\r\n}\r\n\r\nexport class AccordionHandler {\r\n itemsState: Record<TId, TItemState> = {};\r\n itemsStateListeners: Record<TId, TItemStateListener[]> = {};\r\n\r\n propsListeners: TPropsListener[] = [];\r\n\r\n constructor(\r\n public id: string,\r\n public props: IAccordionProps,\r\n ) {}\r\n\r\n registerItem(itemId: TId, initialState: TItemState) {\r\n if (!this.itemsState[itemId]) this.itemsState[itemId] = initialState;\r\n }\r\n\r\n toggleItem(itemId: TId, expanded?: boolean) {\r\n const isExpanded = expanded ?? !this.itemsState[itemId].isExpanded;\r\n if (this.props.singleExpand && isExpanded) {\r\n Object.keys(this.itemsState).forEach((current) => {\r\n if (current !== itemId) {\r\n this.udpateItem(current, { isExpanded: false });\r\n }\r\n });\r\n }\r\n this.udpateItem(itemId, { isExpanded });\r\n }\r\n\r\n unregisterItem(itemId: TId) {\r\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\r\n delete this.itemsState[itemId];\r\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\r\n delete this.itemsStateListeners[itemId];\r\n }\r\n\r\n /**\r\n * Permite actualizar parcialmente el estado de un item\r\n */\r\n udpateItem(itemId: TId, updater: TItemUpdater) {\r\n const newProps =\r\n updater instanceof Function ? updater(this.itemsState[itemId]) : updater;\r\n\r\n Object.assign(this.itemsState[itemId], newProps);\r\n this.itemsStateListeners[itemId].forEach((current) =>\r\n current(this.itemsState[itemId]),\r\n );\r\n }\r\n\r\n updateProps(props: IAccordionProps) {\r\n this.props = { ...this.props, ...props };\r\n this.propsListeners.forEach((current) => current(props));\r\n }\r\n\r\n hooks = {\r\n useAccordionContextProvider: () => {\r\n const Provider = useMemo(\r\n () =>\r\n ({ children }: { children: ReactNode }) => (\r\n <AccordionContext.Provider value={this}>\r\n {children}\r\n </AccordionContext.Provider>\r\n ),\r\n [],\r\n );\r\n return Provider;\r\n },\r\n useItemContextProvider: (itemId: TId) => {\r\n const Provider = useMemo(\r\n () =>\r\n ({ children }: { children: ReactNode }) => (\r\n <AccordionItemContext.Provider value={itemId}>\r\n {children}\r\n </AccordionItemContext.Provider>\r\n ),\r\n [itemId],\r\n );\r\n return Provider;\r\n },\r\n useItemId: () => {\r\n const id = useContext(AccordionItemContext);\r\n if (id === null) throw new Error('There is no AccordionItemContext');\r\n return id;\r\n },\r\n useItemStateSelector: makeItemStateSelectorHook(this),\r\n useItemStateUpdate: (cb: TItemStateListener) => {\r\n const itemId = this.hooks.useItemId();\r\n useEffect(() => {\r\n if (!this.itemsStateListeners[itemId])\r\n this.itemsStateListeners[itemId] = [];\r\n this.itemsStateListeners[itemId].push(cb);\r\n\r\n return () => {\r\n this.itemsStateListeners[itemId] = this.itemsStateListeners[\r\n itemId\r\n ].filter((current) => current != cb);\r\n };\r\n }, [cb, itemId]);\r\n },\r\n usePropsSelector: makePropsSelectorHook(this),\r\n usePropsUpdate: (cb: TPropsListener) => {\r\n useEffect(() => {\r\n this.propsListeners.push(cb);\r\n return () => {\r\n this.propsListeners = this.propsListeners.filter(\r\n (current) => current !== cb,\r\n );\r\n };\r\n }, [cb]);\r\n },\r\n };\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiaDateFilter.js","sources":["../../../src/components/apia/ApiaDateFilter.tsx"],"sourcesContent":["import { useUpdateEffect } from 'ahooks';\nimport * as React from 'react';\nimport { IApiaFilter } from './ApiaFilter';\nimport { DateInput, getFieldErrorStyles } from '../forms';\n\nconst NoMemoApiaDateFilter = (\n { filter, onChange, onBlur, onPressEnter }: IApiaFilter,\n ref: React.Ref<HTMLInputElement | HTMLSelectElement>,\n) => {\n const [value, setValue] = React.useState<string>(String(filter.currentValue));\n const [lastDispatchedValue, setLastDispatchedValue] = React.useState<string>(\n String(filter.currentValue),\n );\n\n const handleClick = React.useCallback((ev: React.MouseEvent) => {\n ev.stopPropagation();\n }, []);\n\n useUpdateEffect(() => {\n setValue(filter.currentValue as string);\n }, [filter.currentValue]);\n\n return (\n <DateInput\n value={value}\n sx={getFieldErrorStyles(!filter.error)}\n aria-label={filter.toolTip}\n ref={ref as React.Ref<HTMLInputElement>}\n placeholder={filter.placeholder}\n onChange={(ev) => {\n if (onChange) {\n const result = onChange(String(ev));\n if (result === true) {\n setValue(ev);\n return true;\n }\n return result as string | false | void;\n }\n return false;\n }}\n onClick={handleClick}\n onBlur={() => {\n if (value !== lastDispatchedValue && onBlur) {\n setLastDispatchedValue(value);\n setValue(value);\n onBlur(value);\n }\n }}\n onKeyDown={(ev) => {\n if (ev.key.toLowerCase() === 'enter' && onPressEnter) {\n setLastDispatchedValue(value);\n onPressEnter(value);\n }\n }}\n />\n );\n};\n\nexport const ApiaDateFilter = React.forwardRef(NoMemoApiaDateFilter);\n"],"names":[],"mappings":";;;;;;AAKA,MAAM,oBAAA,GAAuB,CAC3B,EAAE,MAAA,EAAQ,UAAU,MAAQ,EAAA,YAAA,IAC5B,GACG,KAAA;AACH,EAAM,MAAA,CAAC,OAAO,QAAQ,CAAA,GAAI,MAAM,QAAiB,CAAA,MAAA,CAAO,MAAO,CAAA,YAAY,CAAC,CAAA,CAAA;AAC5E,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAI,KAAM,CAAA,QAAA;AAAA,IAC1D,MAAA,CAAO,OAAO,YAAY,CAAA;AAAA,GAC5B,CAAA;AAEA,EAAA,MAAM,WAAc,GAAA,KAAA,CAAM,WAAY,CAAA,CAAC,EAAyB,KAAA;AAC9D,IAAA,EAAA,CAAG,eAAgB,EAAA,CAAA;AAAA,GACrB,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,QAAA,CAAS,OAAO,YAAsB,CAAA,CAAA;AAAA,GACrC,EAAA,CAAC,MAAO,CAAA,YAAY,CAAC,CAAA,CAAA;AAExB,EACE,uBAAA,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,EAAI,EAAA,mBAAA,CAAoB,CAAC,MAAA,CAAO,KAAK,CAAA;AAAA,MACrC,cAAY,MAAO,CAAA,OAAA;AAAA,MACnB,GAAA;AAAA,MACA,aAAa,MAAO,CAAA,WAAA;AAAA,MACpB,QAAA,EAAU,CAAC,EAAO,KAAA;AAChB,QAAA,IAAI,QAAU,EAAA;AACZ,UAAA,MAAM,MAAS,GAAA,QAAA,CAAS,MAAO,CAAA,EAAE,CAAC,CAAA,CAAA;AAClC,UAAA,IAAI,WAAW,IAAM,EAAA;AACnB,YAAA,QAAA,CAAS,EAAE,CAAA,CAAA;AACX,YAAO,OAAA,IAAA,CAAA;AAAA,WACT;AACA,UAAO,OAAA,MAAA,CAAA;AAAA,SACT;AACA,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,MACA,OAAS,EAAA,WAAA;AAAA,MACT,QAAQ,MAAM;AACZ,QAAI,IAAA,KAAA,KAAU,uBAAuB,MAAQ,EAAA;AAC3C,UAAA,sBAAA,CAAuB,KAAK,CAAA,CAAA;AAC5B,UAAA,QAAA,CAAS,KAAK,CAAA,CAAA;AACd,UAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AAAA,SACd;AAAA,OACF;AAAA,MACA,SAAA,EAAW,CAAC,EAAO,KAAA;AACjB,QAAA,IAAI,EAAG,CAAA,GAAA,CAAI,WAAY,EAAA,KAAM,WAAW,YAAc,EAAA;AACpD,UAAA,sBAAA,CAAuB,KAAK,CAAA,CAAA;AAC5B,UAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAAA,SACpB;AAAA,OACF;AAAA,KAAA;AAAA,GACF,CAAA;AAEJ,CAAA,CAAA;AAEa,MAAA,cAAA,GAAiB,KAAM,CAAA,UAAA,CAAW,oBAAoB;;;;"}
|
|
1
|
+
{"version":3,"file":"ApiaDateFilter.js","sources":["../../../src/components/apia/ApiaDateFilter.tsx"],"sourcesContent":["import { useUpdateEffect } from 'ahooks';\r\nimport * as React from 'react';\r\nimport { IApiaFilter } from './ApiaFilter';\r\nimport { DateInput, getFieldErrorStyles } from '../forms';\r\n\r\nconst NoMemoApiaDateFilter = (\r\n { filter, onChange, onBlur, onPressEnter }: IApiaFilter,\r\n ref: React.Ref<HTMLInputElement | HTMLSelectElement>,\r\n) => {\r\n const [value, setValue] = React.useState<string>(String(filter.currentValue));\r\n const [lastDispatchedValue, setLastDispatchedValue] = React.useState<string>(\r\n String(filter.currentValue),\r\n );\r\n\r\n const handleClick = React.useCallback((ev: React.MouseEvent) => {\r\n ev.stopPropagation();\r\n }, []);\r\n\r\n useUpdateEffect(() => {\r\n setValue(filter.currentValue as string);\r\n }, [filter.currentValue]);\r\n\r\n return (\r\n <DateInput\r\n value={value}\r\n sx={getFieldErrorStyles(!filter.error)}\r\n aria-label={filter.toolTip}\r\n ref={ref as React.Ref<HTMLInputElement>}\r\n placeholder={filter.placeholder}\r\n onChange={(ev) => {\r\n if (onChange) {\r\n const result = onChange(String(ev));\r\n if (result === true) {\r\n setValue(ev);\r\n return true;\r\n }\r\n return result as string | false | void;\r\n }\r\n return false;\r\n }}\r\n onClick={handleClick}\r\n onBlur={() => {\r\n if (value !== lastDispatchedValue && onBlur) {\r\n setLastDispatchedValue(value);\r\n setValue(value);\r\n onBlur(value);\r\n }\r\n }}\r\n onKeyDown={(ev) => {\r\n if (ev.key.toLowerCase() === 'enter' && onPressEnter) {\r\n setLastDispatchedValue(value);\r\n onPressEnter(value);\r\n }\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport const ApiaDateFilter = React.forwardRef(NoMemoApiaDateFilter);\r\n"],"names":[],"mappings":";;;;;;AAKA,MAAM,oBAAA,GAAuB,CAC3B,EAAE,MAAA,EAAQ,UAAU,MAAQ,EAAA,YAAA,IAC5B,GACG,KAAA;AACH,EAAM,MAAA,CAAC,OAAO,QAAQ,CAAA,GAAI,MAAM,QAAiB,CAAA,MAAA,CAAO,MAAO,CAAA,YAAY,CAAC,CAAA,CAAA;AAC5E,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAI,KAAM,CAAA,QAAA;AAAA,IAC1D,MAAA,CAAO,OAAO,YAAY,CAAA;AAAA,GAC5B,CAAA;AAEA,EAAA,MAAM,WAAc,GAAA,KAAA,CAAM,WAAY,CAAA,CAAC,EAAyB,KAAA;AAC9D,IAAA,EAAA,CAAG,eAAgB,EAAA,CAAA;AAAA,GACrB,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,QAAA,CAAS,OAAO,YAAsB,CAAA,CAAA;AAAA,GACrC,EAAA,CAAC,MAAO,CAAA,YAAY,CAAC,CAAA,CAAA;AAExB,EACE,uBAAA,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,EAAI,EAAA,mBAAA,CAAoB,CAAC,MAAA,CAAO,KAAK,CAAA;AAAA,MACrC,cAAY,MAAO,CAAA,OAAA;AAAA,MACnB,GAAA;AAAA,MACA,aAAa,MAAO,CAAA,WAAA;AAAA,MACpB,QAAA,EAAU,CAAC,EAAO,KAAA;AAChB,QAAA,IAAI,QAAU,EAAA;AACZ,UAAA,MAAM,MAAS,GAAA,QAAA,CAAS,MAAO,CAAA,EAAE,CAAC,CAAA,CAAA;AAClC,UAAA,IAAI,WAAW,IAAM,EAAA;AACnB,YAAA,QAAA,CAAS,EAAE,CAAA,CAAA;AACX,YAAO,OAAA,IAAA,CAAA;AAAA,WACT;AACA,UAAO,OAAA,MAAA,CAAA;AAAA,SACT;AACA,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,MACA,OAAS,EAAA,WAAA;AAAA,MACT,QAAQ,MAAM;AACZ,QAAI,IAAA,KAAA,KAAU,uBAAuB,MAAQ,EAAA;AAC3C,UAAA,sBAAA,CAAuB,KAAK,CAAA,CAAA;AAC5B,UAAA,QAAA,CAAS,KAAK,CAAA,CAAA;AACd,UAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AAAA,SACd;AAAA,OACF;AAAA,MACA,SAAA,EAAW,CAAC,EAAO,KAAA;AACjB,QAAA,IAAI,EAAG,CAAA,GAAA,CAAI,WAAY,EAAA,KAAM,WAAW,YAAc,EAAA;AACpD,UAAA,sBAAA,CAAuB,KAAK,CAAA,CAAA;AAC5B,UAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAAA,SACpB;AAAA,OACF;AAAA,KAAA;AAAA,GACF,CAAA;AAEJ,CAAA,CAAA;AAEa,MAAA,cAAA,GAAiB,KAAM,CAAA,UAAA,CAAW,oBAAoB;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiaFilter.js","sources":["../../../src/components/apia/ApiaFilter.tsx"],"sourcesContent":["import { TApiaFilter, TApiaFilterValue } from '@apia/util';\nimport { ForwardedRef } from 'react';\nimport * as React from 'react';\nimport { Input, Select } from '@apia/theme';\nimport { getVariant } from '@apia/theme';\nimport {\n TNumberInputChangeEvent,\n NumberInput,\n getFieldErrorStyles,\n} from '../forms';\nimport { ApiaDateFilter } from './ApiaDateFilter';\n\nexport interface IApiaFilter {\n filter: TApiaFilter;\n onBlur?: (ev: TApiaFilterValue) => void;\n onChange?: (\n ev: TApiaFilterValue,\n ) => void | boolean | string | Promise<boolean | string>;\n onPressEnter?: (ev: TApiaFilterValue) => void;\n}\n\nconst NoMemoApiaFilter = (\n { filter, onChange, onBlur, onPressEnter }: IApiaFilter,\n ref: React.Ref<HTMLInputElement | HTMLSelectElement>,\n) => {\n const [value, setValue] = React.useState<TApiaFilterValue>(\n filter.currentValue ?? '',\n );\n\n const handleClick = React.useCallback((ev: React.MouseEvent) => {\n ev.stopPropagation();\n }, []);\n\n const [lastEmittedValue, setLastEmittedValue] =\n React.useState<TApiaFilterValue>(filter.currentValue);\n\n const filterCurrentValue = filter?.currentValue;\n React.useEffect(() => {\n if (filterCurrentValue === '') {\n setValue(String(filterCurrentValue));\n setLastEmittedValue(String(filterCurrentValue));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filter?.deleteFiltersTimestamp]);\n\n if (filter) {\n const handleChange = (\n ev: React.ChangeEvent<HTMLInputElement | HTMLSelectElement>,\n ) => {\n if (\n (onChange && onChange(String(ev.target.value)) !== false) ||\n !onChange\n )\n setValue(String(ev.target.value));\n };\n const handleNumberChange = (ev: TNumberInputChangeEvent) => {\n if ((onChange && onChange(String(ev.value)) !== false) || !onChange)\n setValue(String(ev.value));\n };\n const handleBlur = (\n ev:\n | React.ChangeEvent<HTMLInputElement | HTMLSelectElement>\n | React.KeyboardEvent,\n ) => {\n if (onBlur && lastEmittedValue !== value) {\n setLastEmittedValue(value);\n onBlur((ev.target as HTMLInputElement).value);\n }\n };\n\n const sortedOptions = filter.sortCombo\n ? [...(filter.options ?? [])].sort((a, b) => (a.label > b.label ? 1 : -1))\n : filter.options;\n const options = sortedOptions?.map((option) => {\n return (\n <option value={option.value} key={option.value ?? option.label ?? ' '}>\n {option.label}\n </option>\n );\n });\n\n if (filter.type === 'date' || filter.type === 'D')\n return (\n <ApiaDateFilter\n filter={filter}\n onChange={onChange}\n onBlur={onBlur}\n onPressEnter={onPressEnter}\n ref={ref}\n />\n );\n\n if (filter.type === 'apiaNumber') {\n return (\n <NumberInput\n aria-readonly={filter.readonly}\n readOnly={filter.readonly}\n value={value as string}\n placeholder={filter.placeholder}\n onChange={handleNumberChange}\n onKeyDown={(ev) => {\n if (ev.key.toLowerCase() === 'enter') {\n handleBlur(ev);\n if (onPressEnter)\n onPressEnter((ev.target as HTMLInputElement).value);\n }\n }}\n onClick={handleClick}\n {...getVariant('input')}\n className={`filter ${filter.error ? 'requiredFilter__Border' : ''}`}\n title={filter.title ?? filter.toolTip ?? String(filter.id)}\n ref={ref as ForwardedRef<HTMLInputElement>}\n aria-label={filter.title ?? filter.toolTip ?? String(filter.id)}\n name={filter.id as string}\n />\n );\n }\n\n return filter.options ? (\n <Select\n aria-readonly={filter.readonly}\n disabled={filter.readonly}\n onChange={handleChange}\n onBlur={handleBlur}\n value={value}\n className={`\"filter\" ${filter.error ? 'requiredFilter__Border' : ''}`}\n title={filter.title ?? filter.toolTip ?? String(filter.id)}\n ref={ref as ForwardedRef<HTMLSelectElement>}\n aria-label={filter.title ?? filter.toolTip ?? String(filter.id)}\n onClick={handleClick}\n sx={getFieldErrorStyles(!filter.error)}\n name={filter.id as string}\n >\n {options}\n </Select>\n ) : (\n <Input\n aria-readonly={filter.readonly}\n readOnly={filter.readonly}\n value={value}\n type={(filter.type === 'N' ? 'number' : filter.type) ?? 'text'}\n placeholder={filter.placeholder}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={(ev) => {\n if (ev.key.toLowerCase() === 'enter') {\n handleBlur(ev);\n if (onPressEnter)\n onPressEnter((ev.target as HTMLInputElement).value);\n }\n }}\n onClick={handleClick}\n {...getVariant('input')}\n className={`filter ${filter.error ? 'requiredFilter__Border' : ''}`}\n title={filter.title ?? filter.toolTip ?? String(filter.id)}\n ref={ref as ForwardedRef<HTMLInputElement>}\n aria-label={filter.title ?? filter.toolTip ?? String(filter.id)}\n name={filter.id as string}\n />\n );\n }\n return null;\n};\n\nexport const ApiaFilter = React.memo(React.forwardRef(NoMemoApiaFilter));\n"],"names":[],"mappings":";;;;;;;AAqBA,MAAM,gBAAA,GAAmB,CACvB,EAAE,MAAA,EAAQ,UAAU,MAAQ,EAAA,YAAA,IAC5B,GACG,KAAA;AACH,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,KAAM,CAAA,QAAA;AAAA,IAC9B,OAAO,YAAgB,IAAA,EAAA;AAAA,GACzB,CAAA;AAEA,EAAA,MAAM,WAAc,GAAA,KAAA,CAAM,WAAY,CAAA,CAAC,EAAyB,KAAA;AAC9D,IAAA,EAAA,CAAG,eAAgB,EAAA,CAAA;AAAA,GACrB,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,MAAM,CAAC,gBAAkB,EAAA,mBAAmB,IAC1C,KAAM,CAAA,QAAA,CAA2B,OAAO,YAAY,CAAA,CAAA;AAEtD,EAAA,MAAM,qBAAqB,MAAQ,EAAA,YAAA,CAAA;AACnC,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,uBAAuB,EAAI,EAAA;AAC7B,MAAS,QAAA,CAAA,MAAA,CAAO,kBAAkB,CAAC,CAAA,CAAA;AACnC,MAAoB,mBAAA,CAAA,MAAA,CAAO,kBAAkB,CAAC,CAAA,CAAA;AAAA,KAChD;AAAA,GAEC,EAAA,CAAC,MAAQ,EAAA,sBAAsB,CAAC,CAAA,CAAA;AAEnC,EAAA,IAAI,MAAQ,EAAA;AACV,IAAM,MAAA,YAAA,GAAe,CACnB,EACG,KAAA;AACH,MACG,IAAA,QAAA,IAAY,SAAS,MAAO,CAAA,EAAA,CAAG,OAAO,KAAK,CAAC,CAAM,KAAA,KAAA,IACnD,CAAC,QAAA;AAED,QAAA,QAAA,CAAS,MAAO,CAAA,EAAA,CAAG,MAAO,CAAA,KAAK,CAAC,CAAA,CAAA;AAAA,KACpC,CAAA;AACA,IAAM,MAAA,kBAAA,GAAqB,CAAC,EAAgC,KAAA;AAC1D,MAAK,IAAA,QAAA,IAAY,SAAS,MAAO,CAAA,EAAA,CAAG,KAAK,CAAC,CAAA,KAAM,SAAU,CAAC,QAAA;AACzD,QAAS,QAAA,CAAA,MAAA,CAAO,EAAG,CAAA,KAAK,CAAC,CAAA,CAAA;AAAA,KAC7B,CAAA;AACA,IAAM,MAAA,UAAA,GAAa,CACjB,EAGG,KAAA;AACH,MAAI,IAAA,MAAA,IAAU,qBAAqB,KAAO,EAAA;AACxC,QAAA,mBAAA,CAAoB,KAAK,CAAA,CAAA;AACzB,QAAQ,MAAA,CAAA,EAAA,CAAG,OAA4B,KAAK,CAAA,CAAA;AAAA,OAC9C;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,aAAA,GAAgB,OAAO,SACzB,GAAA,CAAC,GAAI,MAAO,CAAA,OAAA,IAAW,EAAG,CAAA,CAAE,KAAK,CAAC,CAAA,EAAG,MAAO,CAAE,CAAA,KAAA,GAAQ,EAAE,KAAQ,GAAA,CAAA,GAAI,CAAG,CAAA,CAAA,GACvE,MAAO,CAAA,OAAA,CAAA;AACX,IAAA,MAAM,OAAU,GAAA,aAAA,EAAe,GAAI,CAAA,CAAC,MAAW,KAAA;AAC7C,MACE,uBAAA,GAAA,CAAC,QAAO,EAAA,EAAA,KAAA,EAAO,MAAO,CAAA,KAAA,EACnB,QAAO,EAAA,MAAA,CAAA,KAAA,EAAA,EADwB,MAAO,CAAA,KAAA,IAAS,MAAO,CAAA,KAAA,IAAS,GAElE,CAAA,CAAA;AAAA,KAEH,CAAA,CAAA;AAED,IAAA,IAAI,MAAO,CAAA,IAAA,KAAS,MAAU,IAAA,MAAA,CAAO,IAAS,KAAA,GAAA;AAC5C,MACE,uBAAA,GAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,MAAA;AAAA,UACA,QAAA;AAAA,UACA,MAAA;AAAA,UACA,YAAA;AAAA,UACA,GAAA;AAAA,SAAA;AAAA,OACF,CAAA;AAGJ,IAAI,IAAA,MAAA,CAAO,SAAS,YAAc,EAAA;AAChC,MACE,uBAAA,GAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UACC,iBAAe,MAAO,CAAA,QAAA;AAAA,UACtB,UAAU,MAAO,CAAA,QAAA;AAAA,UACjB,KAAA;AAAA,UACA,aAAa,MAAO,CAAA,WAAA;AAAA,UACpB,QAAU,EAAA,kBAAA;AAAA,UACV,SAAA,EAAW,CAAC,EAAO,KAAA;AACjB,YAAA,IAAI,EAAG,CAAA,GAAA,CAAI,WAAY,EAAA,KAAM,OAAS,EAAA;AACpC,cAAA,UAAA,CAAW,EAAE,CAAA,CAAA;AACb,cAAI,IAAA,YAAA;AACF,gBAAc,YAAA,CAAA,EAAA,CAAG,OAA4B,KAAK,CAAA,CAAA;AAAA,aACtD;AAAA,WACF;AAAA,UACA,OAAS,EAAA,WAAA;AAAA,UACR,GAAG,WAAW,OAAO,CAAA;AAAA,UACtB,SAAW,EAAA,CAAA,OAAA,EAAU,MAAO,CAAA,KAAA,GAAQ,2BAA2B,EAAE,CAAA,CAAA;AAAA,UACjE,OAAO,MAAO,CAAA,KAAA,IAAS,OAAO,OAAW,IAAA,MAAA,CAAO,OAAO,EAAE,CAAA;AAAA,UACzD,GAAA;AAAA,UACA,cAAY,MAAO,CAAA,KAAA,IAAS,OAAO,OAAW,IAAA,MAAA,CAAO,OAAO,EAAE,CAAA;AAAA,UAC9D,MAAM,MAAO,CAAA,EAAA;AAAA,SAAA;AAAA,OACf,CAAA;AAAA,KAEJ;AAEA,IAAA,OAAO,OAAO,OACZ,mBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,iBAAe,MAAO,CAAA,QAAA;AAAA,QACtB,UAAU,MAAO,CAAA,QAAA;AAAA,QACjB,QAAU,EAAA,YAAA;AAAA,QACV,MAAQ,EAAA,UAAA;AAAA,QACR,KAAA;AAAA,QACA,SAAW,EAAA,CAAA,SAAA,EAAY,MAAO,CAAA,KAAA,GAAQ,2BAA2B,EAAE,CAAA,CAAA;AAAA,QACnE,OAAO,MAAO,CAAA,KAAA,IAAS,OAAO,OAAW,IAAA,MAAA,CAAO,OAAO,EAAE,CAAA;AAAA,QACzD,GAAA;AAAA,QACA,cAAY,MAAO,CAAA,KAAA,IAAS,OAAO,OAAW,IAAA,MAAA,CAAO,OAAO,EAAE,CAAA;AAAA,QAC9D,OAAS,EAAA,WAAA;AAAA,QACT,EAAI,EAAA,mBAAA,CAAoB,CAAC,MAAA,CAAO,KAAK,CAAA;AAAA,QACrC,MAAM,MAAO,CAAA,EAAA;AAAA,QAEZ,QAAA,EAAA,OAAA;AAAA,OAAA;AAAA,KAGH,mBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,iBAAe,MAAO,CAAA,QAAA;AAAA,QACtB,UAAU,MAAO,CAAA,QAAA;AAAA,QACjB,KAAA;AAAA,QACA,OAAO,MAAO,CAAA,IAAA,KAAS,GAAM,GAAA,QAAA,GAAW,OAAO,IAAS,KAAA,MAAA;AAAA,QACxD,aAAa,MAAO,CAAA,WAAA;AAAA,QACpB,QAAU,EAAA,YAAA;AAAA,QACV,MAAQ,EAAA,UAAA;AAAA,QACR,SAAA,EAAW,CAAC,EAAO,KAAA;AACjB,UAAA,IAAI,EAAG,CAAA,GAAA,CAAI,WAAY,EAAA,KAAM,OAAS,EAAA;AACpC,YAAA,UAAA,CAAW,EAAE,CAAA,CAAA;AACb,YAAI,IAAA,YAAA;AACF,cAAc,YAAA,CAAA,EAAA,CAAG,OAA4B,KAAK,CAAA,CAAA;AAAA,WACtD;AAAA,SACF;AAAA,QACA,OAAS,EAAA,WAAA;AAAA,QACR,GAAG,WAAW,OAAO,CAAA;AAAA,QACtB,SAAW,EAAA,CAAA,OAAA,EAAU,MAAO,CAAA,KAAA,GAAQ,2BAA2B,EAAE,CAAA,CAAA;AAAA,QACjE,OAAO,MAAO,CAAA,KAAA,IAAS,OAAO,OAAW,IAAA,MAAA,CAAO,OAAO,EAAE,CAAA;AAAA,QACzD,GAAA;AAAA,QACA,cAAY,MAAO,CAAA,KAAA,IAAS,OAAO,OAAW,IAAA,MAAA,CAAO,OAAO,EAAE,CAAA;AAAA,QAC9D,MAAM,MAAO,CAAA,EAAA;AAAA,OAAA;AAAA,KACf,CAAA;AAAA,GAEJ;AACA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA,CAAA;AAEO,MAAM,aAAa,KAAM,CAAA,IAAA,CAAK,KAAM,CAAA,UAAA,CAAW,gBAAgB,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"ApiaFilter.js","sources":["../../../src/components/apia/ApiaFilter.tsx"],"sourcesContent":["import { TApiaFilter, TApiaFilterValue } from '@apia/util';\r\nimport { ForwardedRef } from 'react';\r\nimport * as React from 'react';\r\nimport { Input, Select } from '@apia/theme';\r\nimport { getVariant } from '@apia/theme';\r\nimport {\r\n TNumberInputChangeEvent,\r\n NumberInput,\r\n getFieldErrorStyles,\r\n} from '../forms';\r\nimport { ApiaDateFilter } from './ApiaDateFilter';\r\n\r\nexport interface IApiaFilter {\r\n filter: TApiaFilter;\r\n onBlur?: (ev: TApiaFilterValue) => void;\r\n onChange?: (\r\n ev: TApiaFilterValue,\r\n ) => void | boolean | string | Promise<boolean | string>;\r\n onPressEnter?: (ev: TApiaFilterValue) => void;\r\n}\r\n\r\nconst NoMemoApiaFilter = (\r\n { filter, onChange, onBlur, onPressEnter }: IApiaFilter,\r\n ref: React.Ref<HTMLInputElement | HTMLSelectElement>,\r\n) => {\r\n const [value, setValue] = React.useState<TApiaFilterValue>(\r\n filter.currentValue ?? '',\r\n );\r\n\r\n const handleClick = React.useCallback((ev: React.MouseEvent) => {\r\n ev.stopPropagation();\r\n }, []);\r\n\r\n const [lastEmittedValue, setLastEmittedValue] =\r\n React.useState<TApiaFilterValue>(filter.currentValue);\r\n\r\n const filterCurrentValue = filter?.currentValue;\r\n React.useEffect(() => {\r\n if (filterCurrentValue === '') {\r\n setValue(String(filterCurrentValue));\r\n setLastEmittedValue(String(filterCurrentValue));\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [filter?.deleteFiltersTimestamp]);\r\n\r\n if (filter) {\r\n const handleChange = (\r\n ev: React.ChangeEvent<HTMLInputElement | HTMLSelectElement>,\r\n ) => {\r\n if (\r\n (onChange && onChange(String(ev.target.value)) !== false) ||\r\n !onChange\r\n )\r\n setValue(String(ev.target.value));\r\n };\r\n const handleNumberChange = (ev: TNumberInputChangeEvent) => {\r\n if ((onChange && onChange(String(ev.value)) !== false) || !onChange)\r\n setValue(String(ev.value));\r\n };\r\n const handleBlur = (\r\n ev:\r\n | React.ChangeEvent<HTMLInputElement | HTMLSelectElement>\r\n | React.KeyboardEvent,\r\n ) => {\r\n if (onBlur && lastEmittedValue !== value) {\r\n setLastEmittedValue(value);\r\n onBlur((ev.target as HTMLInputElement).value);\r\n }\r\n };\r\n\r\n const sortedOptions = filter.sortCombo\r\n ? [...(filter.options ?? [])].sort((a, b) => (a.label > b.label ? 1 : -1))\r\n : filter.options;\r\n const options = sortedOptions?.map((option) => {\r\n return (\r\n <option value={option.value} key={option.value ?? option.label ?? ' '}>\r\n {option.label}\r\n </option>\r\n );\r\n });\r\n\r\n if (filter.type === 'date' || filter.type === 'D')\r\n return (\r\n <ApiaDateFilter\r\n filter={filter}\r\n onChange={onChange}\r\n onBlur={onBlur}\r\n onPressEnter={onPressEnter}\r\n ref={ref}\r\n />\r\n );\r\n\r\n if (filter.type === 'apiaNumber') {\r\n return (\r\n <NumberInput\r\n aria-readonly={filter.readonly}\r\n readOnly={filter.readonly}\r\n value={value as string}\r\n placeholder={filter.placeholder}\r\n onChange={handleNumberChange}\r\n onKeyDown={(ev) => {\r\n if (ev.key.toLowerCase() === 'enter') {\r\n handleBlur(ev);\r\n if (onPressEnter)\r\n onPressEnter((ev.target as HTMLInputElement).value);\r\n }\r\n }}\r\n onClick={handleClick}\r\n {...getVariant('input')}\r\n className={`filter ${filter.error ? 'requiredFilter__Border' : ''}`}\r\n title={filter.title ?? filter.toolTip ?? String(filter.id)}\r\n ref={ref as ForwardedRef<HTMLInputElement>}\r\n aria-label={filter.title ?? filter.toolTip ?? String(filter.id)}\r\n name={filter.id as string}\r\n />\r\n );\r\n }\r\n\r\n return filter.options ? (\r\n <Select\r\n aria-readonly={filter.readonly}\r\n disabled={filter.readonly}\r\n onChange={handleChange}\r\n onBlur={handleBlur}\r\n value={value}\r\n className={`\"filter\" ${filter.error ? 'requiredFilter__Border' : ''}`}\r\n title={filter.title ?? filter.toolTip ?? String(filter.id)}\r\n ref={ref as ForwardedRef<HTMLSelectElement>}\r\n aria-label={filter.title ?? filter.toolTip ?? String(filter.id)}\r\n onClick={handleClick}\r\n sx={getFieldErrorStyles(!filter.error)}\r\n name={filter.id as string}\r\n >\r\n {options}\r\n </Select>\r\n ) : (\r\n <Input\r\n aria-readonly={filter.readonly}\r\n readOnly={filter.readonly}\r\n value={value}\r\n type={(filter.type === 'N' ? 'number' : filter.type) ?? 'text'}\r\n placeholder={filter.placeholder}\r\n onChange={handleChange}\r\n onBlur={handleBlur}\r\n onKeyDown={(ev) => {\r\n if (ev.key.toLowerCase() === 'enter') {\r\n handleBlur(ev);\r\n if (onPressEnter)\r\n onPressEnter((ev.target as HTMLInputElement).value);\r\n }\r\n }}\r\n onClick={handleClick}\r\n {...getVariant('input')}\r\n className={`filter ${filter.error ? 'requiredFilter__Border' : ''}`}\r\n title={filter.title ?? filter.toolTip ?? String(filter.id)}\r\n ref={ref as ForwardedRef<HTMLInputElement>}\r\n aria-label={filter.title ?? filter.toolTip ?? String(filter.id)}\r\n name={filter.id as string}\r\n />\r\n );\r\n }\r\n return null;\r\n};\r\n\r\nexport const ApiaFilter = React.memo(React.forwardRef(NoMemoApiaFilter));\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOtherTagButton.js","sources":["../../../src/components/buttons/useOtherTagButton.ts"],"sourcesContent":["import { getSpecificParent } from '@apia/util';\nimport uniqueId from 'lodash-es/uniqueId';\nimport React from 'react';\n\n/**\n * Este hook está pensado para crear un botón utilizando un tag cualquiera.\n *\n * @example\n *\n * const buttonProps = useOtherTagButton(React.useMemo(()=>({\n * onClick(ev) { console.log(ev.target) },\n * onKeyDown(ev) { console.log(ev.code) }\n * }),[])\n *\n * return <div {...buttonProps}>Esto es un botón</div>\n */\nexport function useOtherTagButton(\n props?: Partial<{\n className?: string;\n onClick: React.MouseEventHandler;\n onKeyDown: React.KeyboardEventHandler;\n }>,\n) {\n const specificClass = React.useMemo(() => `otherTag${uniqueId()}`, []);\n\n const actualOnClick = React.useCallback(\n (ev: React.MouseEvent) => {\n props?.onClick?.(ev);\n },\n [props],\n );\n const actualOnKeyDown = React.useCallback(\n (ev: React.KeyboardEvent) => {\n props?.onKeyDown?.(ev);\n if (ev.code === 'Enter' || ev.code === 'Space') {\n ev.preventDefault();\n const button = getSpecificParent(ev.target as HTMLElement, (current) =>\n current.classList.contains(specificClass),\n );\n if (button) button.click();\n }\n },\n [props, specificClass],\n );\n\n return {\n className: `${specificClass} ${props?.className ?? ''}`,\n onClick: actualOnClick,\n onKeyDown: actualOnKeyDown,\n role: 'button',\n tabIndex: 0,\n };\n}\n"],"names":["React"],"mappings":";;;;AAgBO,SAAS,kBACd,KAKA,EAAA;AACA,EAAM,MAAA,aAAA,GAAgBA,eAAM,OAAQ,CAAA,MAAM,WAAW,QAAS,EAAC,CAAI,CAAA,EAAA,EAAE,CAAA,CAAA;AAErE,EAAA,MAAM,gBAAgBA,cAAM,CAAA,WAAA;AAAA,IAC1B,CAAC,EAAyB,KAAA;AACxB,MAAA,KAAA,EAAO,UAAU,EAAE,CAAA,CAAA;AAAA,KACrB;AAAA,IACA,CAAC,KAAK,CAAA;AAAA,GACR,CAAA;AACA,EAAA,MAAM,kBAAkBA,cAAM,CAAA,WAAA;AAAA,IAC5B,CAAC,EAA4B,KAAA;AAC3B,MAAA,KAAA,EAAO,YAAY,EAAE,CAAA,CAAA;AACrB,MAAA,IAAI,EAAG,CAAA,IAAA,KAAS,OAAW,IAAA,EAAA,CAAG,SAAS,OAAS,EAAA;AAC9C,QAAA,EAAA,CAAG,cAAe,EAAA,CAAA;AAClB,QAAA,MAAM,MAAS,GAAA,iBAAA;AAAA,UAAkB,EAAG,CAAA,MAAA;AAAA,UAAuB,CAAC,OAAA,KAC1D,OAAQ,CAAA,SAAA,CAAU,SAAS,aAAa,CAAA;AAAA,SAC1C,CAAA;AACA,QAAI,IAAA,MAAA;AAAQ,UAAA,MAAA,CAAO,KAAM,EAAA,CAAA;AAAA,OAC3B;AAAA,KACF;AAAA,IACA,CAAC,OAAO,aAAa,CAAA;AAAA,GACvB,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,WAAW,CAAG,EAAA,aAAa,CAAI,CAAA,EAAA,KAAA,EAAO,aAAa,EAAE,CAAA,CAAA;AAAA,IACrD,OAAS,EAAA,aAAA;AAAA,IACT,SAAW,EAAA,eAAA;AAAA,IACX,IAAM,EAAA,QAAA;AAAA,IACN,QAAU,EAAA,CAAA;AAAA,GACZ,CAAA;AACF;;;;"}
|
|
1
|
+
{"version":3,"file":"useOtherTagButton.js","sources":["../../../src/components/buttons/useOtherTagButton.ts"],"sourcesContent":["import { getSpecificParent } from '@apia/util';\r\nimport uniqueId from 'lodash-es/uniqueId';\r\nimport React from 'react';\r\n\r\n/**\r\n * Este hook está pensado para crear un botón utilizando un tag cualquiera.\r\n *\r\n * @example\r\n *\r\n * const buttonProps = useOtherTagButton(React.useMemo(()=>({\r\n * onClick(ev) { console.log(ev.target) },\r\n * onKeyDown(ev) { console.log(ev.code) }\r\n * }),[])\r\n *\r\n * return <div {...buttonProps}>Esto es un botón</div>\r\n */\r\nexport function useOtherTagButton(\r\n props?: Partial<{\r\n className?: string;\r\n onClick: React.MouseEventHandler;\r\n onKeyDown: React.KeyboardEventHandler;\r\n }>,\r\n) {\r\n const specificClass = React.useMemo(() => `otherTag${uniqueId()}`, []);\r\n\r\n const actualOnClick = React.useCallback(\r\n (ev: React.MouseEvent) => {\r\n props?.onClick?.(ev);\r\n },\r\n [props],\r\n );\r\n const actualOnKeyDown = React.useCallback(\r\n (ev: React.KeyboardEvent) => {\r\n props?.onKeyDown?.(ev);\r\n if (ev.code === 'Enter' || ev.code === 'Space') {\r\n ev.preventDefault();\r\n const button = getSpecificParent(ev.target as HTMLElement, (current) =>\r\n current.classList.contains(specificClass),\r\n );\r\n if (button) button.click();\r\n }\r\n },\r\n [props, specificClass],\r\n );\r\n\r\n return {\r\n className: `${specificClass} ${props?.className ?? ''}`,\r\n onClick: actualOnClick,\r\n onKeyDown: actualOnKeyDown,\r\n role: 'button',\r\n tabIndex: 0,\r\n };\r\n}\r\n"],"names":["React"],"mappings":";;;;AAgBO,SAAS,kBACd,KAKA,EAAA;AACA,EAAM,MAAA,aAAA,GAAgBA,eAAM,OAAQ,CAAA,MAAM,WAAW,QAAS,EAAC,CAAI,CAAA,EAAA,EAAE,CAAA,CAAA;AAErE,EAAA,MAAM,gBAAgBA,cAAM,CAAA,WAAA;AAAA,IAC1B,CAAC,EAAyB,KAAA;AACxB,MAAA,KAAA,EAAO,UAAU,EAAE,CAAA,CAAA;AAAA,KACrB;AAAA,IACA,CAAC,KAAK,CAAA;AAAA,GACR,CAAA;AACA,EAAA,MAAM,kBAAkBA,cAAM,CAAA,WAAA;AAAA,IAC5B,CAAC,EAA4B,KAAA;AAC3B,MAAA,KAAA,EAAO,YAAY,EAAE,CAAA,CAAA;AACrB,MAAA,IAAI,EAAG,CAAA,IAAA,KAAS,OAAW,IAAA,EAAA,CAAG,SAAS,OAAS,EAAA;AAC9C,QAAA,EAAA,CAAG,cAAe,EAAA,CAAA;AAClB,QAAA,MAAM,MAAS,GAAA,iBAAA;AAAA,UAAkB,EAAG,CAAA,MAAA;AAAA,UAAuB,CAAC,OAAA,KAC1D,OAAQ,CAAA,SAAA,CAAU,SAAS,aAAa,CAAA;AAAA,SAC1C,CAAA;AACA,QAAI,IAAA,MAAA;AAAQ,UAAA,MAAA,CAAO,KAAM,EAAA,CAAA;AAAA,OAC3B;AAAA,KACF;AAAA,IACA,CAAC,OAAO,aAAa,CAAA;AAAA,GACvB,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,WAAW,CAAG,EAAA,aAAa,CAAI,CAAA,EAAA,KAAA,EAAO,aAAa,EAAE,CAAA,CAAA;AAAA,IACrD,OAAS,EAAA,aAAA;AAAA,IACT,SAAW,EAAA,eAAA;AAAA,IACX,IAAM,EAAA,QAAA;AAAA,IACN,QAAU,EAAA,CAAA;AAAA,GACZ,CAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/collapsiblePanel/index.tsx"],"sourcesContent":["import React from 'react';\nimport { Box, Button } from '@apia/theme';\nimport uniqueId from 'lodash-es/uniqueId';\nimport isFunction from 'lodash-es/isFunction';\nimport {\n customEvents,\n persistentStorage,\n enableChildrenFocus,\n disableChildrenFocus as disableChildrenFocusMethod,\n useUpdateEffect,\n} from '@apia/util';\nimport { getVariant, injectStyles } from '@apia/theme';\nimport AnimateHeight from 'react-animate-height';\nimport { styles } from './styles';\nimport { ICollapsiblePanel } from './types';\nimport { Icon } from '@apia/icons';\n\ninjectStyles('layout.common.components.collapsiblePanel', styles);\n\nexport const CollapsiblePanel = React.forwardRef<\n HTMLDivElement,\n ICollapsiblePanel\n>(\n (\n {\n children,\n className,\n closedIcon = 'ArrowDownThin',\n collapsed,\n defaultCollapsed,\n disableChildrenFocus,\n iconSize = '20px',\n id,\n onClose,\n onOpen,\n openIcon = 'ArrowRightThin',\n label,\n rememberCollapsedState,\n titleButtons,\n minHeight = 0,\n 'aria-hidden': ariaHidden,\n },\n outerRef,\n ) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const prefix = React.useMemo(() => (id ? '' : uniqueId()), []);\n const actualId = `${prefix}_${id ?? 'collapsiblePanel'}`;\n\n const [isCollapsed, setIsCollapsed] = React.useState<boolean>(\n rememberCollapsedState\n ? ((persistentStorage[`collapsiblePanel${actualId}`] ??\n defaultCollapsed ??\n collapsed) as boolean)\n : defaultCollapsed ??\n collapsed ??\n (persistentStorage[`collapsiblePanel${actualId}`] as boolean),\n );\n\n const [ref, setRef] = React.useState<HTMLDivElement | null>(null);\n\n const callOnOpen = React.useCallback(\n (updateState: unknown, ev?: React.MouseEvent) => {\n const onOpenResult = onOpen ? onOpen(ev) : null;\n if (onOpenResult) {\n void onOpenResult.then((result) => {\n if (result) if (updateState) setIsCollapsed((current) => !current);\n });\n } else if (updateState) setIsCollapsed((current) => !current);\n },\n [onOpen],\n );\n\n useUpdateEffect(() => {\n if (collapsed !== undefined) setIsCollapsed(collapsed);\n if (collapsed === false) callOnOpen(false);\n }, [collapsed]);\n\n useUpdateEffect(() => {\n if (isCollapsed) {\n if (onClose) onClose();\n persistentStorage[`collapsiblePanel${actualId}`] = true;\n if (ref && disableChildrenFocus)\n disableChildrenFocusMethod(\n ref.querySelector('.collapsiblePanel__content') as HTMLElement,\n );\n } else {\n persistentStorage[`collapsiblePanel${actualId}`] = false;\n if (ref && disableChildrenFocus)\n enableChildrenFocus(\n ref.querySelector('.collapsiblePanel__content') as HTMLElement,\n );\n }\n }, [isCollapsed]);\n\n React.useEffect(() => {\n const handleCustomFocus = () => setIsCollapsed(false);\n ref\n ?.querySelector('.collapsiblePanel__content')\n ?.addEventListener(customEvents.focus, handleCustomFocus);\n return () => {\n ref\n ?.querySelector('.collapsiblePanel__content')\n ?.removeEventListener(customEvents.focus, handleCustomFocus);\n };\n }, [id, isCollapsed, onClose, onOpen, ref]);\n\n return (\n <Box\n className={`collapsiblePanel ${className ?? ''}`}\n {...getVariant('layout.common.components.collapsiblePanel')}\n ref={(el: HTMLDivElement) => {\n if (isFunction(outerRef)) outerRef(el);\n setRef(el);\n }}\n >\n <Box className=\"collapsiblePanel__label\">\n <Button\n {...getVariant('inherit')}\n aria-expanded={!isCollapsed}\n onClick={(ev) => callOnOpen(true, ev)}\n type=\"button\"\n className=\"collapsiblePanel__label__button\"\n >\n {isCollapsed ? (\n <Icon title=\"\" icon={openIcon} size={iconSize} />\n ) : (\n <Icon title=\"\" icon={closedIcon} size={iconSize} />\n )}\n <span className=\"title\">{label}</span>\n </Button>\n {titleButtons}\n </Box>\n <AnimateHeight\n id={actualId}\n duration={150}\n height={isCollapsed ? minHeight : 'auto'}\n sx={{ '&>div': { display: 'block ' } }}\n aria-hidden={ariaHidden ?? isCollapsed}\n className=\"collapsiblePanel__content\"\n >\n {children}\n </AnimateHeight>\n </Box>\n );\n },\n);\n\nCollapsiblePanel.displayName = 'CollapsiblePanel';\n"],"names":["React","disableChildrenFocus","disableChildrenFocusMethod"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/collapsiblePanel/index.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Box, Button } from '@apia/theme';\r\nimport uniqueId from 'lodash-es/uniqueId';\r\nimport isFunction from 'lodash-es/isFunction';\r\nimport {\r\n customEvents,\r\n persistentStorage,\r\n enableChildrenFocus,\r\n disableChildrenFocus as disableChildrenFocusMethod,\r\n useUpdateEffect,\r\n} from '@apia/util';\r\nimport { getVariant, injectStyles } from '@apia/theme';\r\nimport AnimateHeight from 'react-animate-height';\r\nimport { styles } from './styles';\r\nimport { ICollapsiblePanel } from './types';\r\nimport { Icon } from '@apia/icons';\r\n\r\ninjectStyles('layout.common.components.collapsiblePanel', styles);\r\n\r\nexport const CollapsiblePanel = React.forwardRef<\r\n HTMLDivElement,\r\n ICollapsiblePanel\r\n>(\r\n (\r\n {\r\n children,\r\n className,\r\n closedIcon = 'ArrowDownThin',\r\n collapsed,\r\n defaultCollapsed,\r\n disableChildrenFocus,\r\n iconSize = '20px',\r\n id,\r\n onClose,\r\n onOpen,\r\n openIcon = 'ArrowRightThin',\r\n label,\r\n rememberCollapsedState,\r\n titleButtons,\r\n minHeight = 0,\r\n 'aria-hidden': ariaHidden,\r\n },\r\n outerRef,\r\n ) => {\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n const prefix = React.useMemo(() => (id ? '' : uniqueId()), []);\r\n const actualId = `${prefix}_${id ?? 'collapsiblePanel'}`;\r\n\r\n const [isCollapsed, setIsCollapsed] = React.useState<boolean>(\r\n rememberCollapsedState\r\n ? ((persistentStorage[`collapsiblePanel${actualId}`] ??\r\n defaultCollapsed ??\r\n collapsed) as boolean)\r\n : defaultCollapsed ??\r\n collapsed ??\r\n (persistentStorage[`collapsiblePanel${actualId}`] as boolean),\r\n );\r\n\r\n const [ref, setRef] = React.useState<HTMLDivElement | null>(null);\r\n\r\n const callOnOpen = React.useCallback(\r\n (updateState: unknown, ev?: React.MouseEvent) => {\r\n const onOpenResult = onOpen ? onOpen(ev) : null;\r\n if (onOpenResult) {\r\n void onOpenResult.then((result) => {\r\n if (result) if (updateState) setIsCollapsed((current) => !current);\r\n });\r\n } else if (updateState) setIsCollapsed((current) => !current);\r\n },\r\n [onOpen],\r\n );\r\n\r\n useUpdateEffect(() => {\r\n if (collapsed !== undefined) setIsCollapsed(collapsed);\r\n if (collapsed === false) callOnOpen(false);\r\n }, [collapsed]);\r\n\r\n useUpdateEffect(() => {\r\n if (isCollapsed) {\r\n if (onClose) onClose();\r\n persistentStorage[`collapsiblePanel${actualId}`] = true;\r\n if (ref && disableChildrenFocus)\r\n disableChildrenFocusMethod(\r\n ref.querySelector('.collapsiblePanel__content') as HTMLElement,\r\n );\r\n } else {\r\n persistentStorage[`collapsiblePanel${actualId}`] = false;\r\n if (ref && disableChildrenFocus)\r\n enableChildrenFocus(\r\n ref.querySelector('.collapsiblePanel__content') as HTMLElement,\r\n );\r\n }\r\n }, [isCollapsed]);\r\n\r\n React.useEffect(() => {\r\n const handleCustomFocus = () => setIsCollapsed(false);\r\n ref\r\n ?.querySelector('.collapsiblePanel__content')\r\n ?.addEventListener(customEvents.focus, handleCustomFocus);\r\n return () => {\r\n ref\r\n ?.querySelector('.collapsiblePanel__content')\r\n ?.removeEventListener(customEvents.focus, handleCustomFocus);\r\n };\r\n }, [id, isCollapsed, onClose, onOpen, ref]);\r\n\r\n return (\r\n <Box\r\n className={`collapsiblePanel ${className ?? ''}`}\r\n {...getVariant('layout.common.components.collapsiblePanel')}\r\n ref={(el: HTMLDivElement) => {\r\n if (isFunction(outerRef)) outerRef(el);\r\n setRef(el);\r\n }}\r\n >\r\n <Box className=\"collapsiblePanel__label\">\r\n <Button\r\n {...getVariant('inherit')}\r\n aria-expanded={!isCollapsed}\r\n onClick={(ev) => callOnOpen(true, ev)}\r\n type=\"button\"\r\n className=\"collapsiblePanel__label__button\"\r\n >\r\n {isCollapsed ? (\r\n <Icon title=\"\" icon={openIcon} size={iconSize} />\r\n ) : (\r\n <Icon title=\"\" icon={closedIcon} size={iconSize} />\r\n )}\r\n <span className=\"title\">{label}</span>\r\n </Button>\r\n {titleButtons}\r\n </Box>\r\n <AnimateHeight\r\n id={actualId}\r\n duration={150}\r\n height={isCollapsed ? minHeight : 'auto'}\r\n sx={{ '&>div': { display: 'block ' } }}\r\n aria-hidden={ariaHidden ?? isCollapsed}\r\n className=\"collapsiblePanel__content\"\r\n >\r\n {children}\r\n </AnimateHeight>\r\n </Box>\r\n );\r\n },\r\n);\r\n\r\nCollapsiblePanel.displayName = 'CollapsiblePanel';\r\n"],"names":["React","disableChildrenFocus","disableChildrenFocusMethod"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sources":["../../../src/components/collapsiblePanel/styles.ts"],"sourcesContent":["import { ThemeUICSSObject } from '@apia/theme';\n\nexport const styles: ThemeUICSSObject = {};\n"],"names":[],"mappings":"AAEO,MAAM,SAA2B;;;;"}
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../../src/components/collapsiblePanel/styles.ts"],"sourcesContent":["import { ThemeUICSSObject } from '@apia/theme';\r\n\r\nexport const styles: ThemeUICSSObject = {};\r\n"],"names":[],"mappings":"AAEO,MAAM,SAA2B;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlertModal.js","sources":["../../../src/components/dialogs/AlertModal.tsx"],"sourcesContent":["import { useCallback, useMemo } from 'react';\nimport { Confirm, Modal, useModal } from '../modals';\n\nexport interface IAlert {\n children: React.ReactNode;\n onClose: () => void;\n title?: string;\n}\n\nexport const AlertModal = ({ children, onClose, title }: IAlert) => {\n const { hide, ...modalProps } = useModal({\n isDefaultOpen: true,\n onExited: onClose,\n });\n\n return (\n <Modal\n {...modalProps}\n sx={useMemo(\n () => ({\n '.modal__content .confirm__content': {\n overflow: 'visible',\n },\n }),\n [],\n )}\n initialFocusGetter={useCallback((ref: HTMLElement) => {\n return ref?.querySelector('.confirm__confirmButton') as HTMLElement;\n }, [])}\n title={title}\n >\n <Confirm\n onConfirm={useCallback(() => {\n hide();\n }, [hide])}\n >\n {children}\n </Confirm>\n </Modal>\n );\n};\n"],"names":[],"mappings":";;;;;;AASO,MAAM,aAAa,CAAC,EAAE,QAAU,EAAA,OAAA,EAAS,OAAoB,KAAA;AAClE,EAAA,MAAM,EAAE,IAAA,EAAM,GAAG,UAAA,KAAe,QAAS,CAAA;AAAA,IACvC,aAAe,EAAA,IAAA;AAAA,IACf,QAAU,EAAA,OAAA;AAAA,GACX,CAAA,CAAA;AAED,EACE,uBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,UAAA;AAAA,MACJ,EAAI,EAAA,OAAA;AAAA,QACF,OAAO;AAAA,UACL,mCAAqC,EAAA;AAAA,YACnC,QAAU,EAAA,SAAA;AAAA,WACZ;AAAA,SACF,CAAA;AAAA,QACA,EAAC;AAAA,OACH;AAAA,MACA,kBAAA,EAAoB,WAAY,CAAA,CAAC,GAAqB,KAAA;AACpD,QAAO,OAAA,GAAA,EAAK,cAAc,yBAAyB,CAAA,CAAA;AAAA,OACrD,EAAG,EAAE,CAAA;AAAA,MACL,KAAA;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,YAAY,MAAM;AAC3B,YAAK,IAAA,EAAA,CAAA;AAAA,WACP,EAAG,CAAC,IAAI,CAAC,CAAA;AAAA,UAER,QAAA;AAAA,SAAA;AAAA,OACH;AAAA,KAAA;AAAA,GACF,CAAA;AAEJ;;;;"}
|
|
1
|
+
{"version":3,"file":"AlertModal.js","sources":["../../../src/components/dialogs/AlertModal.tsx"],"sourcesContent":["import { useCallback, useMemo } from 'react';\r\nimport { Confirm, Modal, useModal } from '../modals';\r\n\r\nexport interface IAlert {\r\n children: React.ReactNode;\r\n onClose: () => void;\r\n title?: string;\r\n}\r\n\r\nexport const AlertModal = ({ children, onClose, title }: IAlert) => {\r\n const { hide, ...modalProps } = useModal({\r\n isDefaultOpen: true,\r\n onExited: onClose,\r\n });\r\n\r\n return (\r\n <Modal\r\n {...modalProps}\r\n sx={useMemo(\r\n () => ({\r\n '.modal__content .confirm__content': {\r\n overflow: 'visible',\r\n },\r\n }),\r\n [],\r\n )}\r\n initialFocusGetter={useCallback((ref: HTMLElement) => {\r\n return ref?.querySelector('.confirm__confirmButton') as HTMLElement;\r\n }, [])}\r\n title={title}\r\n >\r\n <Confirm\r\n onConfirm={useCallback(() => {\r\n hide();\r\n }, [hide])}\r\n >\r\n {children}\r\n </Confirm>\r\n </Modal>\r\n );\r\n};\r\n"],"names":[],"mappings":";;;;;;AASO,MAAM,aAAa,CAAC,EAAE,QAAU,EAAA,OAAA,EAAS,OAAoB,KAAA;AAClE,EAAA,MAAM,EAAE,IAAA,EAAM,GAAG,UAAA,KAAe,QAAS,CAAA;AAAA,IACvC,aAAe,EAAA,IAAA;AAAA,IACf,QAAU,EAAA,OAAA;AAAA,GACX,CAAA,CAAA;AAED,EACE,uBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,UAAA;AAAA,MACJ,EAAI,EAAA,OAAA;AAAA,QACF,OAAO;AAAA,UACL,mCAAqC,EAAA;AAAA,YACnC,QAAU,EAAA,SAAA;AAAA,WACZ;AAAA,SACF,CAAA;AAAA,QACA,EAAC;AAAA,OACH;AAAA,MACA,kBAAA,EAAoB,WAAY,CAAA,CAAC,GAAqB,KAAA;AACpD,QAAO,OAAA,GAAA,EAAK,cAAc,yBAAyB,CAAA,CAAA;AAAA,OACrD,EAAG,EAAE,CAAA;AAAA,MACL,KAAA;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,YAAY,MAAM;AAC3B,YAAK,IAAA,EAAA,CAAA;AAAA,WACP,EAAG,CAAC,IAAI,CAAC,CAAA;AAAA,UAER,QAAA;AAAA,SAAA;AAAA,OACH;AAAA,KAAA;AAAA,GACF,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmModal.js","sources":["../../../src/components/dialogs/ConfirmModal.tsx"],"sourcesContent":["import { Modal, useModal } from '../modals';\nimport { TApiaButtonType } from '../types';\nimport { ReactNode, Ref, useCallback, useRef } from 'react';\nimport { Confirm } from '../modals/layout/Confirm';\n\nexport interface IConfirm {\n additionalButtons?: ReactNode;\n additionalButtonsOnRight?: ReactNode;\n cancelButtonText?: string;\n children: ReactNode;\n className?: string;\n confirmButtonText?: string;\n confirmButtonVariant?: TApiaButtonType;\n contentRef?: Ref<HTMLDivElement>;\n disabled?: boolean;\n hideCancelButton?: boolean;\n hideConfirmButton?: boolean;\n isLoading?: boolean;\n onConfirm?: () => unknown;\n onCancel?: () => unknown;\n title?: string;\n variant?: string;\n}\n\nexport const ConfirmModal = ({\n onConfirm,\n onCancel,\n title,\n ...props\n}: IConfirm): JSX.Element => {\n const hasConfirmed = useRef(false);\n\n const { hide, ...modalProps } = useModal({\n isDefaultOpen: true,\n onExited: () => {\n if (hasConfirmed.current) onConfirm?.();\n else onCancel?.();\n },\n });\n\n const handleCancel = useCallback(() => {\n hide();\n }, [hide]);\n\n const handleConfirm = useCallback(() => {\n hasConfirmed.current = true;\n hide();\n }, [hide]);\n\n return (\n <Modal\n {...modalProps}\n initialFocusGetter={useCallback(\n (current: HTMLElement) =>\n current.querySelector<HTMLElement>('.confirm__confirmButton'),\n [],\n )}\n title={title}\n >\n <Confirm {...props} onCancel={handleCancel} onConfirm={handleConfirm} />\n </Modal>\n );\n};\n"],"names":[],"mappings":";;;;;;AAwBO,MAAM,eAAe,CAAC;AAAA,EAC3B,SAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG,KAAA;AACL,CAA6B,KAAA;AAC3B,EAAM,MAAA,YAAA,GAAe,OAAO,KAAK,CAAA,CAAA;AAEjC,EAAA,MAAM,EAAE,IAAA,EAAM,GAAG,UAAA,KAAe,QAAS,CAAA;AAAA,IACvC,aAAe,EAAA,IAAA;AAAA,IACf,UAAU,MAAM;AACd,MAAA,IAAI,YAAa,CAAA,OAAA;AAAS,QAAY,SAAA,IAAA,CAAA;AAAA;AACjC,QAAW,QAAA,IAAA,CAAA;AAAA,KAClB;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,YAAA,GAAe,YAAY,MAAM;AACrC,IAAK,IAAA,EAAA,CAAA;AAAA,GACP,EAAG,CAAC,IAAI,CAAC,CAAA,CAAA;AAET,EAAM,MAAA,aAAA,GAAgB,YAAY,MAAM;AACtC,IAAA,YAAA,CAAa,OAAU,GAAA,IAAA,CAAA;AACvB,IAAK,IAAA,EAAA,CAAA;AAAA,GACP,EAAG,CAAC,IAAI,CAAC,CAAA,CAAA;AAET,EACE,uBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,UAAA;AAAA,MACJ,kBAAoB,EAAA,WAAA;AAAA,QAClB,CAAC,OAAA,KACC,OAAQ,CAAA,aAAA,CAA2B,yBAAyB,CAAA;AAAA,QAC9D,EAAC;AAAA,OACH;AAAA,MACA,KAAA;AAAA,MAEA,8BAAC,OAAS,EAAA,EAAA,GAAG,OAAO,QAAU,EAAA,YAAA,EAAc,WAAW,aAAe,EAAA,CAAA;AAAA,KAAA;AAAA,GACxE,CAAA;AAEJ;;;;"}
|
|
1
|
+
{"version":3,"file":"ConfirmModal.js","sources":["../../../src/components/dialogs/ConfirmModal.tsx"],"sourcesContent":["import { Modal, useModal } from '../modals';\r\nimport { TApiaButtonType } from '../types';\r\nimport { ReactNode, Ref, useCallback, useRef } from 'react';\r\nimport { Confirm } from '../modals/layout/Confirm';\r\n\r\nexport interface IConfirm {\r\n additionalButtons?: ReactNode;\r\n additionalButtonsOnRight?: ReactNode;\r\n cancelButtonText?: string;\r\n children: ReactNode;\r\n className?: string;\r\n confirmButtonText?: string;\r\n confirmButtonVariant?: TApiaButtonType;\r\n contentRef?: Ref<HTMLDivElement>;\r\n disabled?: boolean;\r\n hideCancelButton?: boolean;\r\n hideConfirmButton?: boolean;\r\n isLoading?: boolean;\r\n onConfirm?: () => unknown;\r\n onCancel?: () => unknown;\r\n title?: string;\r\n variant?: string;\r\n}\r\n\r\nexport const ConfirmModal = ({\r\n onConfirm,\r\n onCancel,\r\n title,\r\n ...props\r\n}: IConfirm): JSX.Element => {\r\n const hasConfirmed = useRef(false);\r\n\r\n const { hide, ...modalProps } = useModal({\r\n isDefaultOpen: true,\r\n onExited: () => {\r\n if (hasConfirmed.current) onConfirm?.();\r\n else onCancel?.();\r\n },\r\n });\r\n\r\n const handleCancel = useCallback(() => {\r\n hide();\r\n }, [hide]);\r\n\r\n const handleConfirm = useCallback(() => {\r\n hasConfirmed.current = true;\r\n hide();\r\n }, [hide]);\r\n\r\n return (\r\n <Modal\r\n {...modalProps}\r\n initialFocusGetter={useCallback(\r\n (current: HTMLElement) =>\r\n current.querySelector<HTMLElement>('.confirm__confirmButton'),\r\n [],\r\n )}\r\n title={title}\r\n >\r\n <Confirm {...props} onCancel={handleCancel} onConfirm={handleConfirm} />\r\n </Modal>\r\n );\r\n};\r\n"],"names":[],"mappings":";;;;;;AAwBO,MAAM,eAAe,CAAC;AAAA,EAC3B,SAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG,KAAA;AACL,CAA6B,KAAA;AAC3B,EAAM,MAAA,YAAA,GAAe,OAAO,KAAK,CAAA,CAAA;AAEjC,EAAA,MAAM,EAAE,IAAA,EAAM,GAAG,UAAA,KAAe,QAAS,CAAA;AAAA,IACvC,aAAe,EAAA,IAAA;AAAA,IACf,UAAU,MAAM;AACd,MAAA,IAAI,YAAa,CAAA,OAAA;AAAS,QAAY,SAAA,IAAA,CAAA;AAAA;AACjC,QAAW,QAAA,IAAA,CAAA;AAAA,KAClB;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,YAAA,GAAe,YAAY,MAAM;AACrC,IAAK,IAAA,EAAA,CAAA;AAAA,GACP,EAAG,CAAC,IAAI,CAAC,CAAA,CAAA;AAET,EAAM,MAAA,aAAA,GAAgB,YAAY,MAAM;AACtC,IAAA,YAAA,CAAa,OAAU,GAAA,IAAA,CAAA;AACvB,IAAK,IAAA,EAAA,CAAA;AAAA,GACP,EAAG,CAAC,IAAI,CAAC,CAAA,CAAA;AAET,EACE,uBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,UAAA;AAAA,MACJ,kBAAoB,EAAA,WAAA;AAAA,QAClB,CAAC,OAAA,KACC,OAAQ,CAAA,aAAA,CAA2B,yBAAyB,CAAA;AAAA,QAC9D,EAAC;AAAA,OACH;AAAA,MACA,KAAA;AAAA,MAEA,8BAAC,OAAS,EAAA,EAAA,GAAG,OAAO,QAAU,EAAA,YAAA,EAAc,WAAW,aAAe,EAAA,CAAA;AAAA,KAAA;AAAA,GACxE,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Captcha.js","sources":["../../../src/components/forms/Captcha.tsx"],"sourcesContent":["import { Flex, Image, Input } from '@apia/theme';\nimport { useState } from 'react';\nimport { IconButton } from './buttons';\nimport { getVariant } from '@apia/theme';\nimport { getLabel } from '@apia/util';\n\nexport const Captcha = ({\n name,\n imageUrl,\n onChange,\n value,\n className,\n}: {\n name: string;\n className?: string;\n imageUrl: string;\n onChange: React.ChangeEventHandler<HTMLInputElement>;\n value: string;\n}) => {\n const [imgSrc, setImgSrc] = useState<string>(`${imageUrl}?t=${Date.now()}`);\n\n const handleSyncClick = () => {\n // IMG reload\n setImgSrc(`${imageUrl}?t=${Date.now()}`);\n };\n\n return (\n <Flex\n sx={{\n flexDirection: 'column',\n }}\n className=\"captcha__field\"\n {...getVariant('layout.common.forms.captcha')}\n >\n <Flex className=\"captcha__imageContainer\">\n <Image alt=\"\" src={imgSrc} />\n </Flex>\n <Flex className={`captcha__inputContainer ${className ?? ''}`}>\n <Input\n autoComplete=\"off\"\n name={name}\n onChange={onChange}\n value={value}\n />\n\n <Flex className=\"captcha__buttons\">\n <IconButton\n icon=\"Refresh\"\n type=\"button\"\n aria-label={getLabel('lblCaptchaActivateAudio').text}\n onClick={handleSyncClick}\n ></IconButton>\n <IconButton\n icon=\"Volume\"\n type=\"button\"\n aria-label={getLabel('lblCaptchaActivateAudio').text}\n onClick={() => {}}\n ></IconButton>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n"],"names":[],"mappings":";;;;;;AAMO,MAAM,UAAU,CAAC;AAAA,EACtB,IAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AACF,CAMM,KAAA;AACJ,EAAM,MAAA,CAAC,MAAQ,EAAA,SAAS,CAAI,GAAA,QAAA,CAAiB,CAAG,EAAA,QAAQ,CAAM,GAAA,EAAA,IAAA,CAAK,GAAI,EAAC,CAAE,CAAA,CAAA,CAAA;AAE1E,EAAA,MAAM,kBAAkB,MAAM;AAE5B,IAAA,SAAA,CAAU,GAAG,QAAQ,CAAA,GAAA,EAAM,IAAK,CAAA,GAAA,EAAK,CAAE,CAAA,CAAA,CAAA;AAAA,GACzC,CAAA;AAEA,EACE,uBAAA,IAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,EAAI,EAAA;AAAA,QACF,aAAe,EAAA,QAAA;AAAA,OACjB;AAAA,MACA,SAAU,EAAA,gBAAA;AAAA,MACT,GAAG,WAAW,6BAA6B,CAAA;AAAA,MAE5C,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,IAAA,EAAA,EAAK,WAAU,yBACd,EAAA,QAAA,kBAAA,GAAA,CAAC,SAAM,GAAI,EAAA,EAAA,EAAG,GAAK,EAAA,MAAA,EAAQ,CAC7B,EAAA,CAAA;AAAA,6BACC,IAAK,EAAA,EAAA,SAAA,EAAW,CAA2B,wBAAA,EAAA,SAAA,IAAa,EAAE,CACzD,CAAA,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,YAAa,EAAA,KAAA;AAAA,cACb,IAAA;AAAA,cACA,QAAA;AAAA,cACA,KAAA;AAAA,aAAA;AAAA,WACF;AAAA,0BAEA,IAAA,CAAC,IAAK,EAAA,EAAA,SAAA,EAAU,kBACd,EAAA,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,IAAK,EAAA,SAAA;AAAA,gBACL,IAAK,EAAA,QAAA;AAAA,gBACL,YAAA,EAAY,QAAS,CAAA,yBAAyB,CAAE,CAAA,IAAA;AAAA,gBAChD,OAAS,EAAA,eAAA;AAAA,eAAA;AAAA,aACV;AAAA,4BACD,GAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,IAAK,EAAA,QAAA;AAAA,gBACL,IAAK,EAAA,QAAA;AAAA,gBACL,YAAA,EAAY,QAAS,CAAA,yBAAyB,CAAE,CAAA,IAAA;AAAA,gBAChD,SAAS,MAAM;AAAA,iBAAC;AAAA,eAAA;AAAA,aACjB;AAAA,WACH,EAAA,CAAA;AAAA,SACF,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GACF,CAAA;AAEJ;;;;"}
|
|
1
|
+
{"version":3,"file":"Captcha.js","sources":["../../../src/components/forms/Captcha.tsx"],"sourcesContent":["import { Flex, Image, Input } from '@apia/theme';\r\nimport { useState } from 'react';\r\nimport { IconButton } from './buttons';\r\nimport { getVariant } from '@apia/theme';\r\nimport { getLabel } from '@apia/util';\r\n\r\nexport const Captcha = ({\r\n name,\r\n imageUrl,\r\n onChange,\r\n value,\r\n className,\r\n}: {\r\n name: string;\r\n className?: string;\r\n imageUrl: string;\r\n onChange: React.ChangeEventHandler<HTMLInputElement>;\r\n value: string;\r\n}) => {\r\n const [imgSrc, setImgSrc] = useState<string>(`${imageUrl}?t=${Date.now()}`);\r\n\r\n const handleSyncClick = () => {\r\n // IMG reload\r\n setImgSrc(`${imageUrl}?t=${Date.now()}`);\r\n };\r\n\r\n return (\r\n <Flex\r\n sx={{\r\n flexDirection: 'column',\r\n }}\r\n className=\"captcha__field\"\r\n {...getVariant('layout.common.forms.captcha')}\r\n >\r\n <Flex className=\"captcha__imageContainer\">\r\n <Image alt=\"\" src={imgSrc} />\r\n </Flex>\r\n <Flex className={`captcha__inputContainer ${className ?? ''}`}>\r\n <Input\r\n autoComplete=\"off\"\r\n name={name}\r\n onChange={onChange}\r\n value={value}\r\n />\r\n\r\n <Flex className=\"captcha__buttons\">\r\n <IconButton\r\n icon=\"Refresh\"\r\n type=\"button\"\r\n aria-label={getLabel('lblCaptchaActivateAudio').text}\r\n onClick={handleSyncClick}\r\n ></IconButton>\r\n <IconButton\r\n icon=\"Volume\"\r\n type=\"button\"\r\n aria-label={getLabel('lblCaptchaActivateAudio').text}\r\n onClick={() => {}}\r\n ></IconButton>\r\n </Flex>\r\n </Flex>\r\n </Flex>\r\n );\r\n};\r\n"],"names":[],"mappings":";;;;;;AAMO,MAAM,UAAU,CAAC;AAAA,EACtB,IAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AACF,CAMM,KAAA;AACJ,EAAM,MAAA,CAAC,MAAQ,EAAA,SAAS,CAAI,GAAA,QAAA,CAAiB,CAAG,EAAA,QAAQ,CAAM,GAAA,EAAA,IAAA,CAAK,GAAI,EAAC,CAAE,CAAA,CAAA,CAAA;AAE1E,EAAA,MAAM,kBAAkB,MAAM;AAE5B,IAAA,SAAA,CAAU,GAAG,QAAQ,CAAA,GAAA,EAAM,IAAK,CAAA,GAAA,EAAK,CAAE,CAAA,CAAA,CAAA;AAAA,GACzC,CAAA;AAEA,EACE,uBAAA,IAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,EAAI,EAAA;AAAA,QACF,aAAe,EAAA,QAAA;AAAA,OACjB;AAAA,MACA,SAAU,EAAA,gBAAA;AAAA,MACT,GAAG,WAAW,6BAA6B,CAAA;AAAA,MAE5C,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,IAAA,EAAA,EAAK,WAAU,yBACd,EAAA,QAAA,kBAAA,GAAA,CAAC,SAAM,GAAI,EAAA,EAAA,EAAG,GAAK,EAAA,MAAA,EAAQ,CAC7B,EAAA,CAAA;AAAA,6BACC,IAAK,EAAA,EAAA,SAAA,EAAW,CAA2B,wBAAA,EAAA,SAAA,IAAa,EAAE,CACzD,CAAA,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,YAAa,EAAA,KAAA;AAAA,cACb,IAAA;AAAA,cACA,QAAA;AAAA,cACA,KAAA;AAAA,aAAA;AAAA,WACF;AAAA,0BAEA,IAAA,CAAC,IAAK,EAAA,EAAA,SAAA,EAAU,kBACd,EAAA,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,IAAK,EAAA,SAAA;AAAA,gBACL,IAAK,EAAA,QAAA;AAAA,gBACL,YAAA,EAAY,QAAS,CAAA,yBAAyB,CAAE,CAAA,IAAA;AAAA,gBAChD,OAAS,EAAA,eAAA;AAAA,eAAA;AAAA,aACV;AAAA,4BACD,GAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,IAAK,EAAA,QAAA;AAAA,gBACL,IAAK,EAAA,QAAA;AAAA,gBACL,YAAA,EAAY,QAAS,CAAA,yBAAyB,CAAE,CAAA,IAAA;AAAA,gBAChD,SAAS,MAAM;AAAA,iBAAC;AAAA,eAAA;AAAA,aACjB;AAAA,WACH,EAAA,CAAA;AAAA,SACF,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GACF,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.js","sources":["../../../src/components/forms/Checkbox.tsx"],"sourcesContent":["import {\n Button,\n ButtonProps,\n Input,\n InputProps,\n ThemeUIStyleObject,\n} from '@apia/theme';\nimport { TModify, getSpecificParent, useUpdateEffect } from '@apia/util';\nimport {\n ChangeEventHandler,\n forwardRef,\n MouseEventHandler,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { getVariant } from '@apia/theme';\nimport { Icon } from '@apia/icons';\n\nexport type TCheckbox = TModify<\n ButtonProps,\n {\n background?: string;\n checked?: boolean;\n color?: string;\n defaultChecked?: boolean;\n indeterminate?: boolean;\n native?: boolean;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n readOnly?: boolean;\n required?: boolean;\n type?: string;\n }\n>;\n\nexport const Checkbox = forwardRef<HTMLButtonElement, TCheckbox>(\n (\n {\n onChange,\n required,\n disabled,\n readOnly,\n name,\n native,\n indeterminate,\n ...props\n },\n ref,\n ) => {\n const [isChecked, setIsChecked] = useState(\n props.defaultChecked ?? props.checked ?? false,\n );\n\n const checkbox = useRef<HTMLInputElement>(null);\n\n useUpdateEffect(\n () => setIsChecked(props.checked ?? false),\n [props.checked],\n );\n\n const sx = useMemo(\n () => ({\n bg: props.background ?? undefined,\n color: props.color ?? undefined,\n '&[aria-checked=\"false\"]': {\n bg: props.background ?? undefined,\n color: 'transparent',\n },\n }),\n [props.background, props.color],\n );\n\n useEffect(() => {\n if (checkbox.current && indeterminate !== undefined)\n checkbox.current.indeterminate = indeterminate;\n }, [indeterminate]);\n\n const nativeSx = useMemo(\n () => ({ variant: 'forms.checkbox' } as ThemeUIStyleObject),\n [],\n );\n\n return native ? (\n // eslint-disable-next-line react/forbid-elements\n <input\n type=\"checkbox\"\n onClick={props.onClick as unknown as MouseEventHandler}\n aria-checked={isChecked}\n sx={nativeSx}\n ref={checkbox}\n disabled={disabled}\n name={name}\n checked={isChecked}\n onChange={(ev) => {\n if (props.checked === undefined) setIsChecked(ev.target.checked);\n if (onChange) onChange(ev);\n }}\n required={required}\n className={` ${props.className ?? ''} nativeCheckbox `}\n {...(props as unknown as InputProps)}\n />\n ) : (\n <>\n <Button\n {...props}\n onClick={(ev) => {\n if (readOnly) {\n return;\n }\n if (\n getSpecificParent(\n ev.target as HTMLElement,\n (current) => (current as HTMLInputElement).type === 'button',\n )\n ) {\n if (props.onClick) props.onClick(ev);\n checkbox.current?.click();\n }\n }}\n type=\"button\"\n {...getVariant('forms.customCheckbox')}\n role=\"checkbox\"\n aria-checked={isChecked}\n sx={sx}\n ref={ref}\n disabled={disabled}\n >\n <Icon title=\"\" name=\"Check\" size=\"32px\" />\n </Button>\n <Input\n type=\"checkbox\"\n sx={{ display: 'none' }}\n ref={checkbox}\n onClick={(ev) => {\n ev.stopPropagation();\n }}\n name={name}\n checked={isChecked}\n onChange={(ev) => {\n if (props.checked === undefined) setIsChecked(ev.target.checked);\n if (onChange) onChange(ev);\n }}\n required={required}\n disabled={disabled}\n />\n </>\n );\n },\n);\n\nCheckbox.displayName = 'Checkbox';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Checkbox.js","sources":["../../../src/components/forms/Checkbox.tsx"],"sourcesContent":["import {\r\n Button,\r\n ButtonProps,\r\n Input,\r\n InputProps,\r\n ThemeUIStyleObject,\r\n} from '@apia/theme';\r\nimport { TModify, getSpecificParent, useUpdateEffect } from '@apia/util';\r\nimport {\r\n ChangeEventHandler,\r\n forwardRef,\r\n MouseEventHandler,\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n useState,\r\n} from 'react';\r\nimport { getVariant } from '@apia/theme';\r\nimport { Icon } from '@apia/icons';\r\n\r\nexport type TCheckbox = TModify<\r\n ButtonProps,\r\n {\r\n background?: string;\r\n checked?: boolean;\r\n color?: string;\r\n defaultChecked?: boolean;\r\n indeterminate?: boolean;\r\n native?: boolean;\r\n onChange?: ChangeEventHandler<HTMLInputElement>;\r\n readOnly?: boolean;\r\n required?: boolean;\r\n type?: string;\r\n }\r\n>;\r\n\r\nexport const Checkbox = forwardRef<HTMLButtonElement, TCheckbox>(\r\n (\r\n {\r\n onChange,\r\n required,\r\n disabled,\r\n readOnly,\r\n name,\r\n native,\r\n indeterminate,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [isChecked, setIsChecked] = useState(\r\n props.defaultChecked ?? props.checked ?? false,\r\n );\r\n\r\n const checkbox = useRef<HTMLInputElement>(null);\r\n\r\n useUpdateEffect(\r\n () => setIsChecked(props.checked ?? false),\r\n [props.checked],\r\n );\r\n\r\n const sx = useMemo(\r\n () => ({\r\n bg: props.background ?? undefined,\r\n color: props.color ?? undefined,\r\n '&[aria-checked=\"false\"]': {\r\n bg: props.background ?? undefined,\r\n color: 'transparent',\r\n },\r\n }),\r\n [props.background, props.color],\r\n );\r\n\r\n useEffect(() => {\r\n if (checkbox.current && indeterminate !== undefined)\r\n checkbox.current.indeterminate = indeterminate;\r\n }, [indeterminate]);\r\n\r\n const nativeSx = useMemo(\r\n () => ({ variant: 'forms.checkbox' } as ThemeUIStyleObject),\r\n [],\r\n );\r\n\r\n return native ? (\r\n // eslint-disable-next-line react/forbid-elements\r\n <input\r\n type=\"checkbox\"\r\n onClick={props.onClick as unknown as MouseEventHandler}\r\n aria-checked={isChecked}\r\n sx={nativeSx}\r\n ref={checkbox}\r\n disabled={disabled}\r\n name={name}\r\n checked={isChecked}\r\n onChange={(ev) => {\r\n if (props.checked === undefined) setIsChecked(ev.target.checked);\r\n if (onChange) onChange(ev);\r\n }}\r\n required={required}\r\n className={` ${props.className ?? ''} nativeCheckbox `}\r\n {...(props as unknown as InputProps)}\r\n />\r\n ) : (\r\n <>\r\n <Button\r\n {...props}\r\n onClick={(ev) => {\r\n if (readOnly) {\r\n return;\r\n }\r\n if (\r\n getSpecificParent(\r\n ev.target as HTMLElement,\r\n (current) => (current as HTMLInputElement).type === 'button',\r\n )\r\n ) {\r\n if (props.onClick) props.onClick(ev);\r\n checkbox.current?.click();\r\n }\r\n }}\r\n type=\"button\"\r\n {...getVariant('forms.customCheckbox')}\r\n role=\"checkbox\"\r\n aria-checked={isChecked}\r\n sx={sx}\r\n ref={ref}\r\n disabled={disabled}\r\n >\r\n <Icon title=\"\" name=\"Check\" size=\"32px\" />\r\n </Button>\r\n <Input\r\n type=\"checkbox\"\r\n sx={{ display: 'none' }}\r\n ref={checkbox}\r\n onClick={(ev) => {\r\n ev.stopPropagation();\r\n }}\r\n name={name}\r\n checked={isChecked}\r\n onChange={(ev) => {\r\n if (props.checked === undefined) setIsChecked(ev.target.checked);\r\n if (onChange) onChange(ev);\r\n }}\r\n required={required}\r\n disabled={disabled}\r\n />\r\n </>\r\n );\r\n },\r\n);\r\n\r\nCheckbox.displayName = 'Checkbox';\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateInput.js","sources":["../../../src/components/forms/DateInput.tsx"],"sourcesContent":["import { getVariant, Box, Close, InputProps } from '@apia/theme';\nimport {\n getDateFormat,\n isChild,\n TDateFormat,\n TModify,\n useUpdateEffect,\n} from '@apia/util';\nimport dayjs from 'dayjs';\nimport uniqueId from 'lodash-es/uniqueId';\nimport React from 'react';\nimport { icons } from '@apia/icons';\nimport globalFocus from '../../globalFocus';\nimport { useModal } from '../modals';\nimport { CalendarModal } from '../modals/CalendarModal';\nimport { FieldErrorMessage } from './FieldErrorMessage';\nimport { IconInput, IIconInput } from './IconInput';\nimport { getFieldErrorStyles } from './util/style';\n\ndeclare global {\n interface Window {\n LANG_CODE: string;\n MSG_INVALID_DATE: string;\n MSG_FEC_FIN_MAY_FEC_INI: string;\n LBL_PICK_DATE: string;\n }\n}\n\nconst DEFAULT_LOCALE = window.LANG_CODE;\nconst DEFAULT_MASK_PLACEHOLDER = '_';\n\nconst dateFormat: TDateFormat = getDateFormat();\n\nconst getMaskForDateFormat = (): string => {\n if (dateFormat === 'YYYY/MM/DD') return '9999/99/99';\n return '99/99/9999';\n};\n\nexport type TDateProps = TModify<\n InputProps,\n {\n allowPickBeforeToday?: boolean;\n error?: string | null;\n /**\n * Con esta propiedad se puede proveer una función que será utilizada para\n * determinar qué máscara debe utilizar el input\n */\n getCustomMask?: () => string;\n isLoading?: boolean;\n /**\n * Recibe la nueva fecha. En caso de devolver\n * false desde este método, el nuevo valor no\n * se persistirá.\n */\n onChange?: (newValue: string) => boolean | string | void;\n /**\n * Es llamado cada vez que alguien presiona el botón de eliminar fecha.\n */\n onDelete?: () => void;\n onError?: (error: string | null) => unknown;\n /**\n * Con esta propiedad se puede proveer una función que recibirá como\n * parámetro el valor actual del cmapo y debe devolver el valor a mostrar.\n */\n renderLabel?: (value: string) => string;\n value?: string;\n }\n> &\n Pick<IIconInput, 'buttonProps'>;\n\nexport const DateInput = React.forwardRef<HTMLInputElement, TDateProps>(\n (\n {\n allowPickBeforeToday,\n buttonProps: outerButtonProps,\n className,\n error,\n getCustomMask,\n isLoading,\n onBlur,\n onChange,\n onDelete,\n onError,\n renderLabel,\n value: outerValue,\n ...props\n },\n ref,\n ) => {\n const id = React.useMemo(uniqueId, []);\n const [inputValue, setInputValue] = React.useState(outerValue ?? '');\n const [calValue, setCalValue] = React.useState<Date>();\n const boxRef = React.useRef<HTMLElement | null>(null);\n const { show, hide, ...modalProps } = useModal({\n preFetcher() {\n globalFocus.focus = () =>\n boxRef.current?.querySelector('.iconButton') as HTMLElement;\n return new Promise((resolve) => {\n let currentSelectedDate = dayjs(inputValue, dateFormat);\n if (!currentSelectedDate.isValid())\n currentSelectedDate = dayjs(new Date());\n setCalValue(currentSelectedDate.toDate());\n resolve();\n });\n },\n });\n const [stateError, setError] = React.useState<null | string>(error ?? null);\n\n const lastEmittedValue = React.useRef(outerValue ?? '');\n useUpdateEffect(() => {\n setInputValue(outerValue ?? '');\n lastEmittedValue.current = outerValue as string;\n }, [outerValue]);\n\n useUpdateEffect(() => {\n setError(error ?? null);\n }, [error]);\n\n useUpdateEffect(() => {\n if (onError) onError(stateError);\n }, [stateError]);\n\n const shoutOnChange = React.useCallback(\n (newValue: string) => {\n if (newValue !== lastEmittedValue.current && onChange) {\n lastEmittedValue.current = newValue;\n return onChange(newValue);\n }\n return true;\n },\n [onChange],\n );\n\n const setCalendarValue = React.useCallback(\n (value: string, nocheck?: boolean) => {\n if (value === '') {\n void shoutOnChange('');\n setInputValue('');\n return;\n }\n let newDate: dayjs.Dayjs;\n if (value !== '') {\n // format cal needs: Tue Feb 09 2021 00:00:00 GMT-0300\n newDate = dayjs(value, dateFormat);\n if (!newDate.isValid()) newDate = dayjs(new Date());\n } else {\n newDate = dayjs(new Date());\n }\n const formattedDate = newDate.format(dateFormat);\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n if (formattedDate !== inputValue && nocheck !== true) {\n void shoutOnChange('');\n setInputValue('');\n setError(window.MSG_INVALID_DATE);\n } else if (allowPickBeforeToday === false && newDate.isBefore(today)) {\n void shoutOnChange('');\n setInputValue('');\n setError(window.MSG_FEC_FIN_MAY_FEC_INI);\n } else {\n const shoutResult = shoutOnChange(value === '' ? '' : formattedDate);\n if (shoutResult === false) {\n setInputValue(shoutResult || '');\n setError(null);\n } else if (typeof shoutResult === 'string') {\n setInputValue('');\n setError(shoutResult);\n } else {\n setInputValue(formattedDate);\n setError(null);\n }\n }\n },\n [allowPickBeforeToday, inputValue, shoutOnChange],\n );\n\n const selectDate = React.useCallback(\n (val: Date): void => {\n hide();\n const newValue = dayjs(val).format(dateFormat);\n setCalendarValue(newValue, true);\n },\n [hide, setCalendarValue],\n );\n\n const onCloseCalendarModal = React.useCallback(() => {\n hide();\n }, [hide]);\n\n const handleBlur = React.useCallback(\n (ev: React.FocusEvent<HTMLInputElement>) => {\n if (\n onBlur &&\n !isChild(ev.relatedTarget as HTMLElement, (current) => {\n return (\n current.id === `DateModal${id}` || current.id === `DateInput${id}`\n );\n })\n ) {\n onBlur(ev);\n }\n },\n [id, onBlur],\n );\n\n const inputProps = React.useMemo(\n () => ({\n ...props,\n className: 'dateInput',\n value: renderLabel ? renderLabel(inputValue) : inputValue,\n ref,\n onChange: (ev: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(ev.target.value);\n if (\n getMaskForDateFormat().replaceAll('9', DEFAULT_MASK_PLACEHOLDER) !==\n ev.target.value &&\n ev.target.value !== ''\n )\n setError(null);\n },\n onBlur: (ev: React.FocusEvent<HTMLInputElement>) => {\n if (!(props.readOnly || getCustomMask))\n setCalendarValue(ev.target.value);\n handleBlur(ev);\n },\n onKeyDown: (ev: React.KeyboardEvent) => {\n if (ev.key === 'Enter') setCalendarValue(inputValue);\n },\n }),\n [\n getCustomMask,\n handleBlur,\n inputValue,\n props,\n ref,\n renderLabel,\n setCalendarValue,\n ],\n );\n\n const buttonProps = React.useMemo(\n () => ({\n disabled: props.disabled ?? props.readOnly,\n 'aria-label': window.LBL_PICK_DATE,\n ...outerButtonProps,\n }),\n [outerButtonProps, props.disabled, props.readOnly],\n );\n\n const additionalButtons = React.useMemo(\n () => (\n <Close\n className=\"delete_date_button\"\n onClick={() => {\n setCalendarValue('');\n onDelete?.();\n (\n document.querySelector(\n `#DateInput${id} input`,\n ) as HTMLInputElement\n )?.focus();\n }}\n type=\"button\"\n />\n ),\n [id, onDelete, setCalendarValue],\n );\n\n return (\n <>\n <CalendarModal\n {...modalProps}\n calValue={calValue}\n locale={DEFAULT_LOCALE}\n handleClickDay={selectDate}\n onCancel={onCloseCalendarModal}\n id={`DateModal${id}`}\n />\n <Box\n {...getVariant('forms.dateInput')}\n className={`${className ?? ''} dateInput`}\n id={`DateInput${id}`}\n ref={boxRef}\n >\n <IconInput\n additionalButtons={\n inputValue &&\n inputValue !==\n getMaskForDateFormat().replaceAll(\n '9',\n DEFAULT_MASK_PLACEHOLDER,\n ) &&\n !props.readOnly &&\n !props.disabled\n ? additionalButtons\n : undefined\n }\n isLoading={isLoading}\n maskPlaceholder={DEFAULT_MASK_PLACEHOLDER}\n mask={getCustomMask ? getCustomMask() : getMaskForDateFormat()}\n icon={icons.Calendar}\n onBlur={handleBlur}\n buttonProps={buttonProps}\n inputProps={inputProps}\n readOnly={props.readOnly}\n sx={getFieldErrorStyles(stateError === null)}\n onClick={show}\n />\n {stateError && <FieldErrorMessage>{stateError}</FieldErrorMessage>}\n </Box>\n </>\n );\n },\n);\n\nDateInput.displayName = 'DateInput';\n"],"names":["React"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DateInput.js","sources":["../../../src/components/forms/DateInput.tsx"],"sourcesContent":["import { getVariant, Box, Close, InputProps } from '@apia/theme';\r\nimport {\r\n getDateFormat,\r\n isChild,\r\n TDateFormat,\r\n TModify,\r\n useUpdateEffect,\r\n} from '@apia/util';\r\nimport dayjs from 'dayjs';\r\nimport uniqueId from 'lodash-es/uniqueId';\r\nimport React from 'react';\r\nimport { icons } from '@apia/icons';\r\nimport globalFocus from '../../globalFocus';\r\nimport { useModal } from '../modals';\r\nimport { CalendarModal } from '../modals/CalendarModal';\r\nimport { FieldErrorMessage } from './FieldErrorMessage';\r\nimport { IconInput, IIconInput } from './IconInput';\r\nimport { getFieldErrorStyles } from './util/style';\r\n\r\ndeclare global {\r\n interface Window {\r\n LANG_CODE: string;\r\n MSG_INVALID_DATE: string;\r\n MSG_FEC_FIN_MAY_FEC_INI: string;\r\n LBL_PICK_DATE: string;\r\n }\r\n}\r\n\r\nconst DEFAULT_LOCALE = window.LANG_CODE;\r\nconst DEFAULT_MASK_PLACEHOLDER = '_';\r\n\r\nconst dateFormat: TDateFormat = getDateFormat();\r\n\r\nconst getMaskForDateFormat = (): string => {\r\n if (dateFormat === 'YYYY/MM/DD') return '9999/99/99';\r\n return '99/99/9999';\r\n};\r\n\r\nexport type TDateProps = TModify<\r\n InputProps,\r\n {\r\n allowPickBeforeToday?: boolean;\r\n error?: string | null;\r\n /**\r\n * Con esta propiedad se puede proveer una función que será utilizada para\r\n * determinar qué máscara debe utilizar el input\r\n */\r\n getCustomMask?: () => string;\r\n isLoading?: boolean;\r\n /**\r\n * Recibe la nueva fecha. En caso de devolver\r\n * false desde este método, el nuevo valor no\r\n * se persistirá.\r\n */\r\n onChange?: (newValue: string) => boolean | string | void;\r\n /**\r\n * Es llamado cada vez que alguien presiona el botón de eliminar fecha.\r\n */\r\n onDelete?: () => void;\r\n onError?: (error: string | null) => unknown;\r\n /**\r\n * Con esta propiedad se puede proveer una función que recibirá como\r\n * parámetro el valor actual del cmapo y debe devolver el valor a mostrar.\r\n */\r\n renderLabel?: (value: string) => string;\r\n value?: string;\r\n }\r\n> &\r\n Pick<IIconInput, 'buttonProps'>;\r\n\r\nexport const DateInput = React.forwardRef<HTMLInputElement, TDateProps>(\r\n (\r\n {\r\n allowPickBeforeToday,\r\n buttonProps: outerButtonProps,\r\n className,\r\n error,\r\n getCustomMask,\r\n isLoading,\r\n onBlur,\r\n onChange,\r\n onDelete,\r\n onError,\r\n renderLabel,\r\n value: outerValue,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const id = React.useMemo(uniqueId, []);\r\n const [inputValue, setInputValue] = React.useState(outerValue ?? '');\r\n const [calValue, setCalValue] = React.useState<Date>();\r\n const boxRef = React.useRef<HTMLElement | null>(null);\r\n const { show, hide, ...modalProps } = useModal({\r\n preFetcher() {\r\n globalFocus.focus = () =>\r\n boxRef.current?.querySelector('.iconButton') as HTMLElement;\r\n return new Promise((resolve) => {\r\n let currentSelectedDate = dayjs(inputValue, dateFormat);\r\n if (!currentSelectedDate.isValid())\r\n currentSelectedDate = dayjs(new Date());\r\n setCalValue(currentSelectedDate.toDate());\r\n resolve();\r\n });\r\n },\r\n });\r\n const [stateError, setError] = React.useState<null | string>(error ?? null);\r\n\r\n const lastEmittedValue = React.useRef(outerValue ?? '');\r\n useUpdateEffect(() => {\r\n setInputValue(outerValue ?? '');\r\n lastEmittedValue.current = outerValue as string;\r\n }, [outerValue]);\r\n\r\n useUpdateEffect(() => {\r\n setError(error ?? null);\r\n }, [error]);\r\n\r\n useUpdateEffect(() => {\r\n if (onError) onError(stateError);\r\n }, [stateError]);\r\n\r\n const shoutOnChange = React.useCallback(\r\n (newValue: string) => {\r\n if (newValue !== lastEmittedValue.current && onChange) {\r\n lastEmittedValue.current = newValue;\r\n return onChange(newValue);\r\n }\r\n return true;\r\n },\r\n [onChange],\r\n );\r\n\r\n const setCalendarValue = React.useCallback(\r\n (value: string, nocheck?: boolean) => {\r\n if (value === '') {\r\n void shoutOnChange('');\r\n setInputValue('');\r\n return;\r\n }\r\n let newDate: dayjs.Dayjs;\r\n if (value !== '') {\r\n // format cal needs: Tue Feb 09 2021 00:00:00 GMT-0300\r\n newDate = dayjs(value, dateFormat);\r\n if (!newDate.isValid()) newDate = dayjs(new Date());\r\n } else {\r\n newDate = dayjs(new Date());\r\n }\r\n const formattedDate = newDate.format(dateFormat);\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n if (formattedDate !== inputValue && nocheck !== true) {\r\n void shoutOnChange('');\r\n setInputValue('');\r\n setError(window.MSG_INVALID_DATE);\r\n } else if (allowPickBeforeToday === false && newDate.isBefore(today)) {\r\n void shoutOnChange('');\r\n setInputValue('');\r\n setError(window.MSG_FEC_FIN_MAY_FEC_INI);\r\n } else {\r\n const shoutResult = shoutOnChange(value === '' ? '' : formattedDate);\r\n if (shoutResult === false) {\r\n setInputValue(shoutResult || '');\r\n setError(null);\r\n } else if (typeof shoutResult === 'string') {\r\n setInputValue('');\r\n setError(shoutResult);\r\n } else {\r\n setInputValue(formattedDate);\r\n setError(null);\r\n }\r\n }\r\n },\r\n [allowPickBeforeToday, inputValue, shoutOnChange],\r\n );\r\n\r\n const selectDate = React.useCallback(\r\n (val: Date): void => {\r\n hide();\r\n const newValue = dayjs(val).format(dateFormat);\r\n setCalendarValue(newValue, true);\r\n },\r\n [hide, setCalendarValue],\r\n );\r\n\r\n const onCloseCalendarModal = React.useCallback(() => {\r\n hide();\r\n }, [hide]);\r\n\r\n const handleBlur = React.useCallback(\r\n (ev: React.FocusEvent<HTMLInputElement>) => {\r\n if (\r\n onBlur &&\r\n !isChild(ev.relatedTarget as HTMLElement, (current) => {\r\n return (\r\n current.id === `DateModal${id}` || current.id === `DateInput${id}`\r\n );\r\n })\r\n ) {\r\n onBlur(ev);\r\n }\r\n },\r\n [id, onBlur],\r\n );\r\n\r\n const inputProps = React.useMemo(\r\n () => ({\r\n ...props,\r\n className: 'dateInput',\r\n value: renderLabel ? renderLabel(inputValue) : inputValue,\r\n ref,\r\n onChange: (ev: React.ChangeEvent<HTMLInputElement>) => {\r\n setInputValue(ev.target.value);\r\n if (\r\n getMaskForDateFormat().replaceAll('9', DEFAULT_MASK_PLACEHOLDER) !==\r\n ev.target.value &&\r\n ev.target.value !== ''\r\n )\r\n setError(null);\r\n },\r\n onBlur: (ev: React.FocusEvent<HTMLInputElement>) => {\r\n if (!(props.readOnly || getCustomMask))\r\n setCalendarValue(ev.target.value);\r\n handleBlur(ev);\r\n },\r\n onKeyDown: (ev: React.KeyboardEvent) => {\r\n if (ev.key === 'Enter') setCalendarValue(inputValue);\r\n },\r\n }),\r\n [\r\n getCustomMask,\r\n handleBlur,\r\n inputValue,\r\n props,\r\n ref,\r\n renderLabel,\r\n setCalendarValue,\r\n ],\r\n );\r\n\r\n const buttonProps = React.useMemo(\r\n () => ({\r\n disabled: props.disabled ?? props.readOnly,\r\n 'aria-label': window.LBL_PICK_DATE,\r\n ...outerButtonProps,\r\n }),\r\n [outerButtonProps, props.disabled, props.readOnly],\r\n );\r\n\r\n const additionalButtons = React.useMemo(\r\n () => (\r\n <Close\r\n className=\"delete_date_button\"\r\n onClick={() => {\r\n setCalendarValue('');\r\n onDelete?.();\r\n (\r\n document.querySelector(\r\n `#DateInput${id} input`,\r\n ) as HTMLInputElement\r\n )?.focus();\r\n }}\r\n type=\"button\"\r\n />\r\n ),\r\n [id, onDelete, setCalendarValue],\r\n );\r\n\r\n return (\r\n <>\r\n <CalendarModal\r\n {...modalProps}\r\n calValue={calValue}\r\n locale={DEFAULT_LOCALE}\r\n handleClickDay={selectDate}\r\n onCancel={onCloseCalendarModal}\r\n id={`DateModal${id}`}\r\n />\r\n <Box\r\n {...getVariant('forms.dateInput')}\r\n className={`${className ?? ''} dateInput`}\r\n id={`DateInput${id}`}\r\n ref={boxRef}\r\n >\r\n <IconInput\r\n additionalButtons={\r\n inputValue &&\r\n inputValue !==\r\n getMaskForDateFormat().replaceAll(\r\n '9',\r\n DEFAULT_MASK_PLACEHOLDER,\r\n ) &&\r\n !props.readOnly &&\r\n !props.disabled\r\n ? additionalButtons\r\n : undefined\r\n }\r\n isLoading={isLoading}\r\n maskPlaceholder={DEFAULT_MASK_PLACEHOLDER}\r\n mask={getCustomMask ? getCustomMask() : getMaskForDateFormat()}\r\n icon={icons.Calendar}\r\n onBlur={handleBlur}\r\n buttonProps={buttonProps}\r\n inputProps={inputProps}\r\n readOnly={props.readOnly}\r\n sx={getFieldErrorStyles(stateError === null)}\r\n onClick={show}\r\n />\r\n {stateError && <FieldErrorMessage>{stateError}</FieldErrorMessage>}\r\n </Box>\r\n </>\r\n );\r\n },\r\n);\r\n\r\nDateInput.displayName = 'DateInput';\r\n"],"names":["React"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldErrorMessage.js","sources":["../../../src/components/forms/FieldErrorMessage.tsx"],"sourcesContent":["import { customEvents } from '@apia/util';\nimport * as React from 'react';\nimport { Box } from '@apia/theme';\n\nexport interface IFieldErrorMessage {\n children: React.ReactNode | string;\n name?: string;\n}\n\nexport const FieldErrorMessage = ({ children, name }: IFieldErrorMessage) => {\n const [ref, setRef] = React.useState<null | HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (children) {\n const event = new CustomEvent(customEvents.focus, { bubbles: true });\n ref?.dispatchEvent(event);\n }\n }, [children, ref]);\n\n if (children) {\n return (\n <Box\n ref={setRef}\n role=\"alert\"\n data-testid={name ? `err_${name}` : null}\n sx={{\n mb: '0',\n color: 'danger',\n pt: '2',\n }}\n >\n {children}\n </Box>\n );\n }\n return null;\n};\n"],"names":[],"mappings":";;;;;AASO,MAAM,iBAAoB,GAAA,CAAC,EAAE,QAAA,EAAU,MAA+B,KAAA;AAC3E,EAAA,MAAM,CAAC,GAAK,EAAA,MAAM,CAAI,GAAA,KAAA,CAAM,SAAgC,IAAI,CAAA,CAAA;AAEhE,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,QAAU,EAAA;AACZ,MAAM,MAAA,KAAA,GAAQ,IAAI,WAAY,CAAA,YAAA,CAAa,OAAO,EAAE,OAAA,EAAS,MAAM,CAAA,CAAA;AACnE,MAAA,GAAA,EAAK,cAAc,KAAK,CAAA,CAAA;AAAA,KAC1B;AAAA,GACC,EAAA,CAAC,QAAU,EAAA,GAAG,CAAC,CAAA,CAAA;AAElB,EAAA,IAAI,QAAU,EAAA;AACZ,IACE,uBAAA,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,MAAA;AAAA,QACL,IAAK,EAAA,OAAA;AAAA,QACL,aAAa,EAAA,IAAA,GAAO,CAAO,IAAA,EAAA,IAAI,CAAK,CAAA,GAAA,IAAA;AAAA,QACpC,EAAI,EAAA;AAAA,UACF,EAAI,EAAA,GAAA;AAAA,UACJ,KAAO,EAAA,QAAA;AAAA,UACP,EAAI,EAAA,GAAA;AAAA,SACN;AAAA,QAEC,QAAA;AAAA,OAAA;AAAA,KACH,CAAA;AAAA,GAEJ;AACA,EAAO,OAAA,IAAA,CAAA;AACT;;;;"}
|
|
1
|
+
{"version":3,"file":"FieldErrorMessage.js","sources":["../../../src/components/forms/FieldErrorMessage.tsx"],"sourcesContent":["import { customEvents } from '@apia/util';\r\nimport * as React from 'react';\r\nimport { Box } from '@apia/theme';\r\n\r\nexport interface IFieldErrorMessage {\r\n children: React.ReactNode | string;\r\n name?: string;\r\n}\r\n\r\nexport const FieldErrorMessage = ({ children, name }: IFieldErrorMessage) => {\r\n const [ref, setRef] = React.useState<null | HTMLDivElement>(null);\r\n\r\n React.useEffect(() => {\r\n if (children) {\r\n const event = new CustomEvent(customEvents.focus, { bubbles: true });\r\n ref?.dispatchEvent(event);\r\n }\r\n }, [children, ref]);\r\n\r\n if (children) {\r\n return (\r\n <Box\r\n ref={setRef}\r\n role=\"alert\"\r\n data-testid={name ? `err_${name}` : null}\r\n sx={{\r\n mb: '0',\r\n color: 'danger',\r\n pt: '2',\r\n }}\r\n >\r\n {children}\r\n </Box>\r\n );\r\n }\r\n return null;\r\n};\r\n"],"names":[],"mappings":";;;;;AASO,MAAM,iBAAoB,GAAA,CAAC,EAAE,QAAA,EAAU,MAA+B,KAAA;AAC3E,EAAA,MAAM,CAAC,GAAK,EAAA,MAAM,CAAI,GAAA,KAAA,CAAM,SAAgC,IAAI,CAAA,CAAA;AAEhE,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,QAAU,EAAA;AACZ,MAAM,MAAA,KAAA,GAAQ,IAAI,WAAY,CAAA,YAAA,CAAa,OAAO,EAAE,OAAA,EAAS,MAAM,CAAA,CAAA;AACnE,MAAA,GAAA,EAAK,cAAc,KAAK,CAAA,CAAA;AAAA,KAC1B;AAAA,GACC,EAAA,CAAC,QAAU,EAAA,GAAG,CAAC,CAAA,CAAA;AAElB,EAAA,IAAI,QAAU,EAAA;AACZ,IACE,uBAAA,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,MAAA;AAAA,QACL,IAAK,EAAA,OAAA;AAAA,QACL,aAAa,EAAA,IAAA,GAAO,CAAO,IAAA,EAAA,IAAI,CAAK,CAAA,GAAA,IAAA;AAAA,QACpC,EAAI,EAAA;AAAA,UACF,EAAI,EAAA,GAAA;AAAA,UACJ,KAAO,EAAA,QAAA;AAAA,UACP,EAAI,EAAA,GAAA;AAAA,SACN;AAAA,QAEC,QAAA;AAAA,OAAA;AAAA,KACH,CAAA;AAAA,GAEJ;AACA,EAAO,OAAA,IAAA,CAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldLabel.js","sources":["../../../src/components/forms/FieldLabel.tsx"],"sourcesContent":["import { injectStyles, getVariant, Box, BoxProps } from '@apia/theme';\nimport { forwardRef } from 'react';\nimport { RequiredMark } from './RequiredMark';\n\nexport type TFieldLabel = {\n avoidSemicolon?: boolean;\n /**\n * Permite mostrar un mensaje de error debajo del campo\n */\n error?: string;\n hideRequiredMark?: boolean;\n label: string;\n /**\n * La propiedad required se utiliza para mostrar el * de requerido.\n *\n * @see requiredMarkPosition\n * @see hideRequiredMark\n */\n required?: boolean;\n requiredMarkPosition?: 'before' | 'after';\n} & BoxProps;\n\ninjectStyles('layout.common.components.fieldLabel', {\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n\n '.fieldLabel__label': {\n fontWeight: 'bold',\n },\n});\n\nexport const FieldLabel = forwardRef<HTMLDivElement, TFieldLabel>(\n (\n {\n as,\n avoidSemicolon,\n children,\n error,\n hideRequiredMark,\n label,\n required,\n requiredMarkPosition = 'after',\n ...props\n },\n ref,\n ) => {\n return (\n <Box\n as={as ?? 'label'}\n {...props}\n className={`fieldLabel ${props.className ?? ''}`}\n {...getVariant('layout.common.components.fieldLabel')}\n aria-label={props['aria-label'] ?? label}\n ref={ref}\n >\n <Box className=\"fieldLabel__label\">\n {requiredMarkPosition === 'before' && (\n <RequiredMark\n isRequired={required}\n isReadonly={hideRequiredMark}\n isFormReadonly={hideRequiredMark}\n />\n )}\n {label}\n {requiredMarkPosition === 'after' && (\n <RequiredMark\n isRequired={required}\n isReadonly={hideRequiredMark}\n isFormReadonly={hideRequiredMark}\n />\n )}\n {!avoidSemicolon && ':'}\n </Box>\n <Box>{children}</Box>\n {error && <Box className=\"fieldLabel__error\">{error}</Box>}\n </Box>\n );\n },\n);\n\nFieldLabel.displayName = 'FieldLabel';\n"],"names":[],"mappings":";;;;;AAsBA,YAAA,CAAa,qCAAuC,EAAA;AAAA,EAClD,OAAS,EAAA,MAAA;AAAA,EACT,aAAe,EAAA,QAAA;AAAA,EACf,GAAK,EAAA,CAAA;AAAA,EAEL,oBAAsB,EAAA;AAAA,IACpB,UAAY,EAAA,MAAA;AAAA,GACd;AACF,CAAC,CAAA,CAAA;AAEM,MAAM,UAAa,GAAA,UAAA;AAAA,EACxB,CACE;AAAA,IACE,EAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,gBAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,oBAAuB,GAAA,OAAA;AAAA,IACvB,GAAG,KAAA;AAAA,KAEL,GACG,KAAA;AACH,IACE,uBAAA,IAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,IAAI,EAAM,IAAA,OAAA;AAAA,QACT,GAAG,KAAA;AAAA,QACJ,SAAW,EAAA,CAAA,WAAA,EAAc,KAAM,CAAA,SAAA,IAAa,EAAE,CAAA,CAAA;AAAA,QAC7C,GAAG,WAAW,qCAAqC,CAAA;AAAA,QACpD,YAAA,EAAY,KAAM,CAAA,YAAY,CAAK,IAAA,KAAA;AAAA,QACnC,GAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAC,IAAA,CAAA,GAAA,EAAA,EAAI,WAAU,mBACZ,EAAA,QAAA,EAAA;AAAA,YAAA,oBAAA,KAAyB,QACxB,oBAAA,GAAA;AAAA,cAAC,YAAA;AAAA,cAAA;AAAA,gBACC,UAAY,EAAA,QAAA;AAAA,gBACZ,UAAY,EAAA,gBAAA;AAAA,gBACZ,cAAgB,EAAA,gBAAA;AAAA,eAAA;AAAA,aAClB;AAAA,YAED,KAAA;AAAA,YACA,yBAAyB,OACxB,oBAAA,GAAA;AAAA,cAAC,YAAA;AAAA,cAAA;AAAA,gBACC,UAAY,EAAA,QAAA;AAAA,gBACZ,UAAY,EAAA,gBAAA;AAAA,gBACZ,cAAgB,EAAA,gBAAA;AAAA,eAAA;AAAA,aAClB;AAAA,YAED,CAAC,cAAkB,IAAA,GAAA;AAAA,WACtB,EAAA,CAAA;AAAA,0BACA,GAAA,CAAC,OAAK,QAAS,EAAA,CAAA;AAAA,UACd,KAAS,oBAAA,GAAA,CAAC,GAAI,EAAA,EAAA,SAAA,EAAU,qBAAqB,QAAM,EAAA,KAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA;AAAA,KACtD,CAAA;AAAA,GAEJ;AACF,EAAA;AAEA,UAAA,CAAW,WAAc,GAAA,YAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"FieldLabel.js","sources":["../../../src/components/forms/FieldLabel.tsx"],"sourcesContent":["import { injectStyles, getVariant, Box, BoxProps } from '@apia/theme';\r\nimport { forwardRef } from 'react';\r\nimport { RequiredMark } from './RequiredMark';\r\n\r\nexport type TFieldLabel = {\r\n avoidSemicolon?: boolean;\r\n /**\r\n * Permite mostrar un mensaje de error debajo del campo\r\n */\r\n error?: string;\r\n hideRequiredMark?: boolean;\r\n label: string;\r\n /**\r\n * La propiedad required se utiliza para mostrar el * de requerido.\r\n *\r\n * @see requiredMarkPosition\r\n * @see hideRequiredMark\r\n */\r\n required?: boolean;\r\n requiredMarkPosition?: 'before' | 'after';\r\n} & BoxProps;\r\n\r\ninjectStyles('layout.common.components.fieldLabel', {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: 1,\r\n\r\n '.fieldLabel__label': {\r\n fontWeight: 'bold',\r\n },\r\n});\r\n\r\nexport const FieldLabel = forwardRef<HTMLDivElement, TFieldLabel>(\r\n (\r\n {\r\n as,\r\n avoidSemicolon,\r\n children,\r\n error,\r\n hideRequiredMark,\r\n label,\r\n required,\r\n requiredMarkPosition = 'after',\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n return (\r\n <Box\r\n as={as ?? 'label'}\r\n {...props}\r\n className={`fieldLabel ${props.className ?? ''}`}\r\n {...getVariant('layout.common.components.fieldLabel')}\r\n aria-label={props['aria-label'] ?? label}\r\n ref={ref}\r\n >\r\n <Box className=\"fieldLabel__label\">\r\n {requiredMarkPosition === 'before' && (\r\n <RequiredMark\r\n isRequired={required}\r\n isReadonly={hideRequiredMark}\r\n isFormReadonly={hideRequiredMark}\r\n />\r\n )}\r\n {label}\r\n {requiredMarkPosition === 'after' && (\r\n <RequiredMark\r\n isRequired={required}\r\n isReadonly={hideRequiredMark}\r\n isFormReadonly={hideRequiredMark}\r\n />\r\n )}\r\n {!avoidSemicolon && ':'}\r\n </Box>\r\n <Box>{children}</Box>\r\n {error && <Box className=\"fieldLabel__error\">{error}</Box>}\r\n </Box>\r\n );\r\n },\r\n);\r\n\r\nFieldLabel.displayName = 'FieldLabel';\r\n"],"names":[],"mappings":";;;;;AAsBA,YAAA,CAAa,qCAAuC,EAAA;AAAA,EAClD,OAAS,EAAA,MAAA;AAAA,EACT,aAAe,EAAA,QAAA;AAAA,EACf,GAAK,EAAA,CAAA;AAAA,EAEL,oBAAsB,EAAA;AAAA,IACpB,UAAY,EAAA,MAAA;AAAA,GACd;AACF,CAAC,CAAA,CAAA;AAEM,MAAM,UAAa,GAAA,UAAA;AAAA,EACxB,CACE;AAAA,IACE,EAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,gBAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,oBAAuB,GAAA,OAAA;AAAA,IACvB,GAAG,KAAA;AAAA,KAEL,GACG,KAAA;AACH,IACE,uBAAA,IAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,IAAI,EAAM,IAAA,OAAA;AAAA,QACT,GAAG,KAAA;AAAA,QACJ,SAAW,EAAA,CAAA,WAAA,EAAc,KAAM,CAAA,SAAA,IAAa,EAAE,CAAA,CAAA;AAAA,QAC7C,GAAG,WAAW,qCAAqC,CAAA;AAAA,QACpD,YAAA,EAAY,KAAM,CAAA,YAAY,CAAK,IAAA,KAAA;AAAA,QACnC,GAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAC,IAAA,CAAA,GAAA,EAAA,EAAI,WAAU,mBACZ,EAAA,QAAA,EAAA;AAAA,YAAA,oBAAA,KAAyB,QACxB,oBAAA,GAAA;AAAA,cAAC,YAAA;AAAA,cAAA;AAAA,gBACC,UAAY,EAAA,QAAA;AAAA,gBACZ,UAAY,EAAA,gBAAA;AAAA,gBACZ,cAAgB,EAAA,gBAAA;AAAA,eAAA;AAAA,aAClB;AAAA,YAED,KAAA;AAAA,YACA,yBAAyB,OACxB,oBAAA,GAAA;AAAA,cAAC,YAAA;AAAA,cAAA;AAAA,gBACC,UAAY,EAAA,QAAA;AAAA,gBACZ,UAAY,EAAA,gBAAA;AAAA,gBACZ,cAAgB,EAAA,gBAAA;AAAA,eAAA;AAAA,aAClB;AAAA,YAED,CAAC,cAAkB,IAAA,GAAA;AAAA,WACtB,EAAA,CAAA;AAAA,0BACA,GAAA,CAAC,OAAK,QAAS,EAAA,CAAA;AAAA,UACd,KAAS,oBAAA,GAAA,CAAC,GAAI,EAAA,EAAA,SAAA,EAAU,qBAAqB,QAAM,EAAA,KAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA;AAAA,KACtD,CAAA;AAAA,GAEJ;AACF,EAAA;AAEA,UAAA,CAAW,WAAc,GAAA,YAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IconInput.js","sources":["../../../src/components/forms/IconInput.tsx"],"sourcesContent":["import { getVariant, Box, Input, InputProps } from '@apia/theme';\nimport { isChild, useCombinedRefs } from '@apia/util';\nimport React from 'react';\nimport { TIconName, TIconType } from '@apia/icons';\nimport { IconButton } from './buttons';\n\nexport interface IField {\n className?: string;\n disabled?: boolean;\n isLoading?: boolean;\n readOnly?: boolean;\n}\n\nexport interface IIconInput extends IField {\n additionalButtons?: React.ReactNode;\n additionalButtonsPosition?: 'before' | 'after';\n buttonProps?: Partial<React.ComponentProps<typeof IconButton>>;\n buttonRef?: React.RefObject<HTMLButtonElement>;\n hideButton?: boolean;\n icon?: TIconType | TIconName;\n inputProps?: Partial<InputProps>;\n inputRef?: React.RefObject<HTMLInputElement>;\n onClick?: (ev: React.MouseEvent) => void;\n onBlur?: React.FocusEventHandler;\n [key: string]: unknown;\n}\n\nexport const IconInput = ({\n additionalButtons,\n additionalButtonsPosition = 'before',\n buttonProps,\n buttonRef,\n className,\n disabled,\n hideButton,\n icon = 'Search',\n inputProps,\n inputRef,\n isLoading,\n mask,\n onClick,\n onBlur,\n readOnly,\n ...rest\n}: IIconInput) => {\n const { sx: inputSx, ...actualInputProps } = inputProps ?? {};\n const innerButtonRef = React.useRef<HTMLButtonElement>(null);\n const assignButtonRef = useCombinedRefs(buttonRef, innerButtonRef);\n\n const innerInputRef = React.useRef<HTMLInputElement>(null);\n const assignInputRef = useCombinedRefs(inputRef, innerInputRef);\n\n const parentRef = React.useRef<HTMLElement | null>(null);\n const handleBlur = React.useCallback(\n (ev: React.FocusEvent) => {\n if (\n onBlur &&\n (!ev.relatedTarget ||\n (ev.relatedTarget &&\n !isChild(\n ev.relatedTarget as HTMLElement,\n (current) => current === parentRef.current,\n )))\n )\n onBlur(ev);\n },\n [onBlur],\n );\n\n return (\n <Box\n {...getVariant('forms.iconInput')}\n className={`${className ?? ''} iconInput`}\n ref={parentRef}\n onBlur={handleBlur}\n >\n <Input\n disabled={isLoading ?? disabled}\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-explicit-any\n ref={assignInputRef as any}\n readOnly={readOnly}\n sx={{ variant: 'forms.input', ...inputSx }}\n data-variant=\"forms.input\"\n {...rest}\n {...actualInputProps}\n />\n {additionalButtonsPosition === 'before' && additionalButtons}\n {!hideButton && (\n <IconButton\n onClick={onClick}\n icon={icon}\n disabled={readOnly ?? disabled}\n isLoading={isLoading}\n ref={assignButtonRef as React.Ref<HTMLButtonElement>}\n {...buttonProps}\n />\n )}\n {additionalButtonsPosition === 'after' && additionalButtons}\n </Box>\n );\n};\n"],"names":["React"],"mappings":";;;;;;AA2BO,MAAM,YAAY,CAAC;AAAA,EACxB,iBAAA;AAAA,EACA,yBAA4B,GAAA,QAAA;AAAA,EAC5B,WAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,IAAO,GAAA,QAAA;AAAA,EACP,UAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG,IAAA;AACL,CAAkB,KAAA;AAChB,EAAA,MAAM,EAAE,EAAI,EAAA,OAAA,EAAS,GAAG,gBAAiB,EAAA,GAAI,cAAc,EAAC,CAAA;AAC5D,EAAM,MAAA,cAAA,GAAiBA,cAAM,CAAA,MAAA,CAA0B,IAAI,CAAA,CAAA;AAC3D,EAAM,MAAA,eAAA,GAAkB,eAAgB,CAAA,SAAA,EAAW,cAAc,CAAA,CAAA;AAEjE,EAAM,MAAA,aAAA,GAAgBA,cAAM,CAAA,MAAA,CAAyB,IAAI,CAAA,CAAA;AACzD,EAAM,MAAA,cAAA,GAAiB,eAAgB,CAAA,QAAA,EAAU,aAAa,CAAA,CAAA;AAE9D,EAAM,MAAA,SAAA,GAAYA,cAAM,CAAA,MAAA,CAA2B,IAAI,CAAA,CAAA;AACvD,EAAA,MAAM,aAAaA,cAAM,CAAA,WAAA;AAAA,IACvB,CAAC,EAAyB,KAAA;AACxB,MAAA,IACE,WACC,CAAC,EAAA,CAAG,aACF,IAAA,EAAA,CAAG,iBACF,CAAC,OAAA;AAAA,QACC,EAAG,CAAA,aAAA;AAAA,QACH,CAAC,OAAY,KAAA,OAAA,KAAY,SAAU,CAAA,OAAA;AAAA,OACrC,CAAA;AAEJ,QAAA,MAAA,CAAO,EAAE,CAAA,CAAA;AAAA,KACb;AAAA,IACA,CAAC,MAAM,CAAA;AAAA,GACT,CAAA;AAEA,EACE,uBAAA,IAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACE,GAAG,WAAW,iBAAiB,CAAA;AAAA,MAChC,SAAA,EAAW,CAAG,EAAA,SAAA,IAAa,EAAE,CAAA,UAAA,CAAA;AAAA,MAC7B,GAAK,EAAA,SAAA;AAAA,MACL,MAAQ,EAAA,UAAA;AAAA,MAER,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,UAAU,SAAa,IAAA,QAAA;AAAA,YAEvB,GAAK,EAAA,cAAA;AAAA,YACL,QAAA;AAAA,YACA,EAAI,EAAA,EAAE,OAAS,EAAA,aAAA,EAAe,GAAG,OAAQ,EAAA;AAAA,YACzC,cAAa,EAAA,aAAA;AAAA,YACZ,GAAG,IAAA;AAAA,YACH,GAAG,gBAAA;AAAA,WAAA;AAAA,SACN;AAAA,QACC,8BAA8B,QAAY,IAAA,iBAAA;AAAA,QAC1C,CAAC,UACA,oBAAA,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,OAAA;AAAA,YACA,IAAA;AAAA,YACA,UAAU,QAAY,IAAA,QAAA;AAAA,YACtB,SAAA;AAAA,YACA,GAAK,EAAA,eAAA;AAAA,YACJ,GAAG,WAAA;AAAA,WAAA;AAAA,SACN;AAAA,QAED,8BAA8B,OAAW,IAAA,iBAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GAC5C,CAAA;AAEJ;;;;"}
|
|
1
|
+
{"version":3,"file":"IconInput.js","sources":["../../../src/components/forms/IconInput.tsx"],"sourcesContent":["import { getVariant, Box, Input, InputProps } from '@apia/theme';\r\nimport { isChild, useCombinedRefs } from '@apia/util';\r\nimport React from 'react';\r\nimport { TIconName, TIconType } from '@apia/icons';\r\nimport { IconButton } from './buttons';\r\n\r\nexport interface IField {\r\n className?: string;\r\n disabled?: boolean;\r\n isLoading?: boolean;\r\n readOnly?: boolean;\r\n}\r\n\r\nexport interface IIconInput extends IField {\r\n additionalButtons?: React.ReactNode;\r\n additionalButtonsPosition?: 'before' | 'after';\r\n buttonProps?: Partial<React.ComponentProps<typeof IconButton>>;\r\n buttonRef?: React.RefObject<HTMLButtonElement>;\r\n hideButton?: boolean;\r\n icon?: TIconType | TIconName;\r\n inputProps?: Partial<InputProps>;\r\n inputRef?: React.RefObject<HTMLInputElement>;\r\n onClick?: (ev: React.MouseEvent) => void;\r\n onBlur?: React.FocusEventHandler;\r\n [key: string]: unknown;\r\n}\r\n\r\nexport const IconInput = ({\r\n additionalButtons,\r\n additionalButtonsPosition = 'before',\r\n buttonProps,\r\n buttonRef,\r\n className,\r\n disabled,\r\n hideButton,\r\n icon = 'Search',\r\n inputProps,\r\n inputRef,\r\n isLoading,\r\n mask,\r\n onClick,\r\n onBlur,\r\n readOnly,\r\n ...rest\r\n}: IIconInput) => {\r\n const { sx: inputSx, ...actualInputProps } = inputProps ?? {};\r\n const innerButtonRef = React.useRef<HTMLButtonElement>(null);\r\n const assignButtonRef = useCombinedRefs(buttonRef, innerButtonRef);\r\n\r\n const innerInputRef = React.useRef<HTMLInputElement>(null);\r\n const assignInputRef = useCombinedRefs(inputRef, innerInputRef);\r\n\r\n const parentRef = React.useRef<HTMLElement | null>(null);\r\n const handleBlur = React.useCallback(\r\n (ev: React.FocusEvent) => {\r\n if (\r\n onBlur &&\r\n (!ev.relatedTarget ||\r\n (ev.relatedTarget &&\r\n !isChild(\r\n ev.relatedTarget as HTMLElement,\r\n (current) => current === parentRef.current,\r\n )))\r\n )\r\n onBlur(ev);\r\n },\r\n [onBlur],\r\n );\r\n\r\n return (\r\n <Box\r\n {...getVariant('forms.iconInput')}\r\n className={`${className ?? ''} iconInput`}\r\n ref={parentRef}\r\n onBlur={handleBlur}\r\n >\r\n <Input\r\n disabled={isLoading ?? disabled}\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-explicit-any\r\n ref={assignInputRef as any}\r\n readOnly={readOnly}\r\n sx={{ variant: 'forms.input', ...inputSx }}\r\n data-variant=\"forms.input\"\r\n {...rest}\r\n {...actualInputProps}\r\n />\r\n {additionalButtonsPosition === 'before' && additionalButtons}\r\n {!hideButton && (\r\n <IconButton\r\n onClick={onClick}\r\n icon={icon}\r\n disabled={readOnly ?? disabled}\r\n isLoading={isLoading}\r\n ref={assignButtonRef as React.Ref<HTMLButtonElement>}\r\n {...buttonProps}\r\n />\r\n )}\r\n {additionalButtonsPosition === 'after' && additionalButtons}\r\n </Box>\r\n );\r\n};\r\n"],"names":["React"],"mappings":";;;;;;AA2BO,MAAM,YAAY,CAAC;AAAA,EACxB,iBAAA;AAAA,EACA,yBAA4B,GAAA,QAAA;AAAA,EAC5B,WAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,IAAO,GAAA,QAAA;AAAA,EACP,UAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG,IAAA;AACL,CAAkB,KAAA;AAChB,EAAA,MAAM,EAAE,EAAI,EAAA,OAAA,EAAS,GAAG,gBAAiB,EAAA,GAAI,cAAc,EAAC,CAAA;AAC5D,EAAM,MAAA,cAAA,GAAiBA,cAAM,CAAA,MAAA,CAA0B,IAAI,CAAA,CAAA;AAC3D,EAAM,MAAA,eAAA,GAAkB,eAAgB,CAAA,SAAA,EAAW,cAAc,CAAA,CAAA;AAEjE,EAAM,MAAA,aAAA,GAAgBA,cAAM,CAAA,MAAA,CAAyB,IAAI,CAAA,CAAA;AACzD,EAAM,MAAA,cAAA,GAAiB,eAAgB,CAAA,QAAA,EAAU,aAAa,CAAA,CAAA;AAE9D,EAAM,MAAA,SAAA,GAAYA,cAAM,CAAA,MAAA,CAA2B,IAAI,CAAA,CAAA;AACvD,EAAA,MAAM,aAAaA,cAAM,CAAA,WAAA;AAAA,IACvB,CAAC,EAAyB,KAAA;AACxB,MAAA,IACE,WACC,CAAC,EAAA,CAAG,aACF,IAAA,EAAA,CAAG,iBACF,CAAC,OAAA;AAAA,QACC,EAAG,CAAA,aAAA;AAAA,QACH,CAAC,OAAY,KAAA,OAAA,KAAY,SAAU,CAAA,OAAA;AAAA,OACrC,CAAA;AAEJ,QAAA,MAAA,CAAO,EAAE,CAAA,CAAA;AAAA,KACb;AAAA,IACA,CAAC,MAAM,CAAA;AAAA,GACT,CAAA;AAEA,EACE,uBAAA,IAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACE,GAAG,WAAW,iBAAiB,CAAA;AAAA,MAChC,SAAA,EAAW,CAAG,EAAA,SAAA,IAAa,EAAE,CAAA,UAAA,CAAA;AAAA,MAC7B,GAAK,EAAA,SAAA;AAAA,MACL,MAAQ,EAAA,UAAA;AAAA,MAER,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,UAAU,SAAa,IAAA,QAAA;AAAA,YAEvB,GAAK,EAAA,cAAA;AAAA,YACL,QAAA;AAAA,YACA,EAAI,EAAA,EAAE,OAAS,EAAA,aAAA,EAAe,GAAG,OAAQ,EAAA;AAAA,YACzC,cAAa,EAAA,aAAA;AAAA,YACZ,GAAG,IAAA;AAAA,YACH,GAAG,gBAAA;AAAA,WAAA;AAAA,SACN;AAAA,QACC,8BAA8B,QAAY,IAAA,iBAAA;AAAA,QAC1C,CAAC,UACA,oBAAA,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,OAAA;AAAA,YACA,IAAA;AAAA,YACA,UAAU,QAAY,IAAA,QAAA;AAAA,YACtB,SAAA;AAAA,YACA,GAAK,EAAA,eAAA;AAAA,YACJ,GAAG,WAAA;AAAA,WAAA;AAAA,SACN;AAAA,QAED,8BAA8B,OAAW,IAAA,iBAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GAC5C,CAAA;AAEJ;;;;"}
|