@apia/components 2.0.9 → 2.0.11
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 +42 -0
- package/dist/components/IconsList/Icon.js.map +1 -0
- package/dist/components/IconsList/IconWrapper.js +24 -0
- package/dist/components/IconsList/IconWrapper.js.map +1 -0
- package/dist/components/IconsList/KeyHandler.js +147 -0
- package/dist/components/IconsList/KeyHandler.js.map +1 -0
- package/dist/components/IconsList/context.js +14 -0
- package/dist/components/IconsList/context.js.map +1 -0
- package/dist/components/IconsList/index.d.ts +12 -0
- package/dist/components/IconsList/index.d.ts.map +1 -0
- package/dist/components/IconsList/index.js +119 -0
- package/dist/components/IconsList/index.js.map +1 -0
- package/dist/components/IconsList/renderers/DefaultIconRenderer.d.ts +7 -0
- package/dist/components/IconsList/renderers/DefaultIconRenderer.d.ts.map +1 -0
- package/dist/components/IconsList/renderers/DefaultIconRenderer.js +30 -0
- package/dist/components/IconsList/renderers/DefaultIconRenderer.js.map +1 -0
- package/dist/components/IconsList/store/context.js +9 -0
- package/dist/components/IconsList/store/context.js.map +1 -0
- package/dist/components/IconsList/store/distinctors.js +42 -0
- package/dist/components/IconsList/store/distinctors.js.map +1 -0
- package/dist/components/IconsList/store/keysMaker.js +8 -0
- package/dist/components/IconsList/store/keysMaker.js.map +1 -0
- package/dist/components/IconsList/store/operations.js +138 -0
- package/dist/components/IconsList/store/operations.js.map +1 -0
- package/dist/components/IconsList/store/state.js +9 -0
- package/dist/components/IconsList/store/state.js.map +1 -0
- package/dist/components/IconsList/store/useStore.js +52 -0
- package/dist/components/IconsList/store/useStore.js.map +1 -0
- package/dist/components/IconsList/styles.js +48 -0
- package/dist/components/IconsList/styles.js.map +1 -0
- package/dist/components/IconsList/types.d.ts +98 -0
- package/dist/components/IconsList/types.d.ts.map +1 -0
- package/dist/components/IconsList/util.js +46 -0
- package/dist/components/IconsList/util.js.map +1 -0
- package/dist/components/ListBox/Combobox.js +52 -0
- package/dist/components/ListBox/Combobox.js.map +1 -0
- package/dist/components/ListBox/ListboxContext.d.ts +35 -0
- package/dist/components/ListBox/ListboxContext.d.ts.map +1 -0
- package/dist/components/ListBox/ListboxContext.js +6 -0
- package/dist/components/ListBox/ListboxContext.js.map +1 -0
- package/dist/components/ListBox/ListboxItem.d.ts +17 -0
- package/dist/components/ListBox/ListboxItem.d.ts.map +1 -0
- package/dist/components/ListBox/ListboxItem.js +67 -0
- package/dist/components/ListBox/ListboxItem.js.map +1 -0
- package/dist/components/ListBox/ListboxKeyhandler.js +154 -0
- package/dist/components/ListBox/ListboxKeyhandler.js.map +1 -0
- package/dist/components/ListBox/common.d.ts +46 -0
- package/dist/components/ListBox/common.d.ts.map +1 -0
- package/dist/components/ListBox/common.js +118 -0
- package/dist/components/ListBox/common.js.map +1 -0
- package/dist/components/ListBox/index.d.ts +21 -0
- package/dist/components/ListBox/index.d.ts.map +1 -0
- package/dist/components/ListBox/index.js +71 -0
- package/dist/components/ListBox/index.js.map +1 -0
- package/dist/components/ListBox/listbox.js +46 -0
- package/dist/components/ListBox/listbox.js.map +1 -0
- package/dist/components/ListBox/operations.js +330 -0
- package/dist/components/ListBox/operations.js.map +1 -0
- package/dist/components/ListBox/useIndexedChildren.js +25 -0
- package/dist/components/ListBox/useIndexedChildren.js.map +1 -0
- package/dist/components/ListBox/useListboxAutofocus.js +48 -0
- package/dist/components/ListBox/useListboxAutofocus.js.map +1 -0
- package/dist/components/ListBox/useListboxContextValue.js +8 -0
- package/dist/components/ListBox/useListboxContextValue.js.map +1 -0
- package/dist/components/ListBox/useShoutSelectionChange.js +26 -0
- package/dist/components/ListBox/useShoutSelectionChange.js.map +1 -0
- package/dist/components/ListBox/useStore.js +36 -0
- package/dist/components/ListBox/useStore.js.map +1 -0
- package/dist/components/ListBox/useUpdateRowCount.js +19 -0
- package/dist/components/ListBox/useUpdateRowCount.js.map +1 -0
- package/dist/components/SortableList/SortableListHandler.js +161 -0
- package/dist/components/SortableList/SortableListHandler.js.map +1 -0
- package/dist/components/SortableList/SortableListItem.d.ts +14 -0
- package/dist/components/SortableList/SortableListItem.d.ts.map +1 -0
- package/dist/components/SortableList/SortableListItem.js +24 -0
- package/dist/components/SortableList/SortableListItem.js.map +1 -0
- package/dist/components/SortableList/index.d.ts +21 -0
- package/dist/components/SortableList/index.d.ts.map +1 -0
- package/dist/components/SortableList/index.js +53 -0
- package/dist/components/SortableList/index.js.map +1 -0
- package/dist/components/Toolbar/ToolbarController.d.ts +24 -0
- package/dist/components/Toolbar/ToolbarController.d.ts.map +1 -0
- package/dist/components/Toolbar/ToolbarController.js +50 -0
- package/dist/components/Toolbar/ToolbarController.js.map +1 -0
- package/dist/components/Toolbar/ToolbarIconButton.d.ts +7 -0
- package/dist/components/Toolbar/ToolbarIconButton.d.ts.map +1 -0
- package/dist/components/Toolbar/ToolbarIconButton.js +108 -0
- package/dist/components/Toolbar/ToolbarIconButton.js.map +1 -0
- package/dist/components/Toolbar/ToolbarInput.d.ts +7 -0
- package/dist/components/Toolbar/ToolbarInput.d.ts.map +1 -0
- package/dist/components/Toolbar/ToolbarInput.js +13 -0
- package/dist/components/Toolbar/ToolbarInput.js.map +1 -0
- package/dist/components/Toolbar/ToolbarSelect.d.ts +7 -0
- package/dist/components/Toolbar/ToolbarSelect.d.ts.map +1 -0
- package/dist/components/Toolbar/ToolbarSelect.js +17 -0
- package/dist/components/Toolbar/ToolbarSelect.js.map +1 -0
- package/dist/components/Toolbar/ToolbarSeparator.d.ts +6 -0
- package/dist/components/Toolbar/ToolbarSeparator.d.ts.map +1 -0
- package/dist/components/Toolbar/ToolbarSeparator.js +9 -0
- package/dist/components/Toolbar/ToolbarSeparator.js.map +1 -0
- package/dist/components/Toolbar/ToolbarTextButton.d.ts +9 -0
- package/dist/components/Toolbar/ToolbarTextButton.d.ts.map +1 -0
- package/dist/components/Toolbar/ToolbarTextButton.js +18 -0
- package/dist/components/Toolbar/ToolbarTextButton.js.map +1 -0
- package/dist/components/Toolbar/index.d.ts +19 -0
- package/dist/components/Toolbar/index.d.ts.map +1 -0
- package/dist/components/Toolbar/index.js +23 -0
- package/dist/components/Toolbar/index.js.map +1 -0
- package/dist/components/Toolbar/styles.js +84 -0
- package/dist/components/Toolbar/styles.js.map +1 -0
- package/dist/components/Toolbar/types.d.ts +39 -0
- package/dist/components/Toolbar/types.d.ts.map +1 -0
- package/dist/components/accordion/Accordion.d.ts +21 -0
- package/dist/components/accordion/Accordion.d.ts.map +1 -0
- package/dist/components/accordion/Accordion.js +66 -0
- package/dist/components/accordion/Accordion.js.map +1 -0
- package/dist/components/accordion/AccordionItem.d.ts +20 -0
- package/dist/components/accordion/AccordionItem.d.ts.map +1 -0
- package/dist/components/accordion/AccordionItem.js +26 -0
- package/dist/components/accordion/AccordionItem.js.map +1 -0
- package/dist/components/accordion/AccordionItemButton.d.ts +10 -0
- package/dist/components/accordion/AccordionItemButton.d.ts.map +1 -0
- package/dist/components/accordion/AccordionItemButton.js +8 -0
- package/dist/components/accordion/AccordionItemButton.js.map +1 -0
- package/dist/components/accordion/AccordionItemContent.d.ts +7 -0
- package/dist/components/accordion/AccordionItemContent.d.ts.map +1 -0
- package/dist/components/accordion/AccordionItemContent.js +50 -0
- package/dist/components/accordion/AccordionItemContent.js.map +1 -0
- package/dist/components/accordion/KeyHandler.js +82 -0
- package/dist/components/accordion/KeyHandler.js.map +1 -0
- package/dist/components/accordion/context.d.ts +10 -0
- package/dist/components/accordion/context.d.ts.map +1 -0
- package/dist/components/accordion/context.js +13 -0
- package/dist/components/accordion/context.js.map +1 -0
- package/dist/components/accordion/defaultElements/Checkbox.js +22 -0
- package/dist/components/accordion/defaultElements/Checkbox.js.map +1 -0
- package/dist/components/accordion/defaultElements/DefaultAccordionItemButton.d.ts +40 -0
- package/dist/components/accordion/defaultElements/DefaultAccordionItemButton.d.ts.map +1 -0
- package/dist/components/accordion/defaultElements/DefaultAccordionItemButton.js +77 -0
- package/dist/components/accordion/defaultElements/DefaultAccordionItemButton.js.map +1 -0
- package/dist/components/accordion/defaultElements/useIsChecked.js +25 -0
- package/dist/components/accordion/defaultElements/useIsChecked.js.map +1 -0
- package/dist/components/accordion/handler.d.ts +40 -0
- package/dist/components/accordion/handler.d.ts.map +1 -0
- package/dist/components/accordion/handler.js +126 -0
- package/dist/components/accordion/handler.js.map +1 -0
- package/dist/components/accordion/index.d.ts +8 -0
- package/dist/components/accordion/index.d.ts.map +1 -0
- package/dist/components/accordion/types.d.ts +11 -0
- package/dist/components/accordion/types.d.ts.map +1 -0
- package/dist/components/apia/ApiaDateFilter.js +57 -0
- package/dist/components/apia/ApiaDateFilter.js.map +1 -0
- package/dist/components/apia/ApiaFilter.d.ts +13 -0
- package/dist/components/apia/ApiaFilter.d.ts.map +1 -0
- package/dist/components/apia/ApiaFilter.js +128 -0
- package/dist/components/apia/ApiaFilter.js.map +1 -0
- package/dist/components/buttons/useOtherTagButton.d.ts +28 -0
- package/dist/components/buttons/useOtherTagButton.d.ts.map +1 -0
- package/dist/components/buttons/useOtherTagButton.js +38 -0
- package/dist/components/buttons/useOtherTagButton.js.map +1 -0
- package/dist/components/collapsiblePanel/index.d.ts +7 -0
- package/dist/components/collapsiblePanel/index.d.ts.map +1 -0
- package/dist/components/collapsiblePanel/index.js +130 -0
- package/dist/components/collapsiblePanel/index.js.map +1 -0
- package/dist/components/collapsiblePanel/styles.js +4 -0
- package/dist/components/collapsiblePanel/styles.js.map +1 -0
- package/dist/components/collapsiblePanel/types.d.ts +23 -0
- package/dist/components/collapsiblePanel/types.d.ts.map +1 -0
- package/dist/components/dialogs/AlertModal.d.ts +11 -0
- package/dist/components/dialogs/AlertModal.d.ts.map +1 -0
- package/dist/components/dialogs/AlertModal.js +42 -0
- package/dist/components/dialogs/AlertModal.js.map +1 -0
- package/dist/components/dialogs/ConfirmModal.d.ts +25 -0
- package/dist/components/dialogs/ConfirmModal.d.ts.map +1 -0
- package/dist/components/dialogs/ConfirmModal.js +45 -0
- package/dist/components/dialogs/ConfirmModal.js.map +1 -0
- package/dist/components/forms/Captcha.d.ts +12 -0
- package/dist/components/forms/Captcha.d.ts.map +1 -0
- package/dist/components/forms/Captcha.js +66 -0
- package/dist/components/forms/Captcha.js.map +1 -0
- package/dist/components/forms/Checkbox.d.ts +21 -0
- package/dist/components/forms/Checkbox.d.ts.map +1 -0
- package/dist/components/forms/Checkbox.js +124 -0
- package/dist/components/forms/Checkbox.js.map +1 -0
- package/dist/components/forms/DateInput.d.ts +44 -0
- package/dist/components/forms/DateInput.d.ts.map +1 -0
- package/dist/components/forms/DateInput.js +246 -0
- package/dist/components/forms/DateInput.js.map +1 -0
- package/dist/components/forms/FieldErrorMessage.d.ts +10 -0
- package/dist/components/forms/FieldErrorMessage.d.ts.map +1 -0
- package/dist/components/forms/FieldErrorMessage.js +34 -0
- package/dist/components/forms/FieldErrorMessage.js.map +1 -0
- package/dist/components/forms/FieldLabel.d.ts +40 -0
- package/dist/components/forms/FieldLabel.d.ts.map +1 -0
- package/dist/components/forms/FieldLabel.js +66 -0
- package/dist/components/forms/FieldLabel.js.map +1 -0
- package/dist/components/forms/IconInput.d.ts +28 -0
- package/dist/components/forms/IconInput.d.ts.map +1 -0
- package/dist/components/forms/IconInput.js +80 -0
- package/dist/components/forms/IconInput.js.map +1 -0
- package/dist/components/forms/NumberInput.d.ts +37 -0
- package/dist/components/forms/NumberInput.d.ts.map +1 -0
- package/dist/components/forms/NumberInput.js +149 -0
- package/dist/components/forms/NumberInput.js.map +1 -0
- package/dist/components/forms/RequiredMark.d.ts +14 -0
- package/dist/components/forms/RequiredMark.d.ts.map +1 -0
- package/dist/components/forms/RequiredMark.js +13 -0
- package/dist/components/forms/RequiredMark.js.map +1 -0
- package/dist/components/forms/buttons/BaseButton.d.ts +24 -0
- package/dist/components/forms/buttons/BaseButton.d.ts.map +1 -0
- package/dist/components/forms/buttons/BaseButton.js +58 -0
- package/dist/components/forms/buttons/BaseButton.js.map +1 -0
- package/dist/components/forms/buttons/IconButton.d.ts +37 -0
- package/dist/components/forms/buttons/IconButton.d.ts.map +1 -0
- package/dist/components/forms/buttons/IconButton.js +79 -0
- package/dist/components/forms/buttons/IconButton.js.map +1 -0
- package/dist/components/forms/buttons/SimpleButton.d.ts +21 -0
- package/dist/components/forms/buttons/SimpleButton.d.ts.map +1 -0
- package/dist/components/forms/buttons/SimpleButton.js +94 -0
- package/dist/components/forms/buttons/SimpleButton.js.map +1 -0
- package/dist/components/forms/util/style.d.ts +7 -0
- package/dist/components/forms/util/style.d.ts.map +1 -0
- package/dist/components/forms/util/style.js +17 -0
- package/dist/components/forms/util/style.js.map +1 -0
- package/dist/components/importComponent.d.ts +11 -0
- package/dist/components/importComponent.d.ts.map +1 -0
- package/dist/components/importComponent.js +25 -0
- package/dist/components/importComponent.js.map +1 -0
- package/dist/components/loaders/LinearLoader.d.ts +6 -0
- package/dist/components/loaders/LinearLoader.d.ts.map +1 -0
- package/dist/components/loaders/LinearLoader.js +33 -0
- package/dist/components/loaders/LinearLoader.js.map +1 -0
- package/dist/components/loaders/LoaderSpinner.d.ts +10 -0
- package/dist/components/loaders/LoaderSpinner.d.ts.map +1 -0
- package/dist/components/loaders/LoaderSpinner.js +26 -0
- package/dist/components/loaders/LoaderSpinner.js.map +1 -0
- package/dist/components/loaders/ProgressBar.d.ts +11 -0
- package/dist/components/loaders/ProgressBar.d.ts.map +1 -0
- package/dist/components/loaders/ProgressBar.js +39 -0
- package/dist/components/loaders/ProgressBar.js.map +1 -0
- package/dist/components/modals/CalendarModal.d.ts +13 -0
- package/dist/components/modals/CalendarModal.d.ts.map +1 -0
- package/dist/components/modals/CalendarModal.js +43 -0
- package/dist/components/modals/CalendarModal.js.map +1 -0
- package/dist/components/modals/Modal.d.ts +178 -0
- package/dist/components/modals/Modal.d.ts.map +1 -0
- package/dist/components/modals/Modal.js +19 -0
- package/dist/components/modals/Modal.js.map +1 -0
- package/dist/components/modals/ModalContext.d.ts +9 -0
- package/dist/components/modals/ModalContext.d.ts.map +1 -0
- package/dist/components/modals/ModalContext.js +12 -0
- package/dist/components/modals/ModalContext.js.map +1 -0
- package/dist/components/modals/Overlay.d.ts +21 -0
- package/dist/components/modals/Overlay.d.ts.map +1 -0
- package/dist/components/modals/Overlay.js +70 -0
- package/dist/components/modals/Overlay.js.map +1 -0
- package/dist/components/modals/StaticModal.js +203 -0
- package/dist/components/modals/StaticModal.js.map +1 -0
- package/dist/components/modals/WindowModal.js +229 -0
- package/dist/components/modals/WindowModal.js.map +1 -0
- 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.d.ts +97 -0
- package/dist/components/modals/hooks/useModal.d.ts.map +1 -0
- package/dist/components/modals/hooks/useModal.js +73 -0
- package/dist/components/modals/hooks/useModal.js.map +1 -0
- 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.d.ts +7 -0
- package/dist/components/modals/layout/Confirm.d.ts.map +1 -0
- package/dist/components/modals/layout/Confirm.js +96 -0
- package/dist/components/modals/layout/Confirm.js.map +1 -0
- package/dist/components/modals/layout/DialogButtonBar.d.ts +10 -0
- package/dist/components/modals/layout/DialogButtonBar.d.ts.map +1 -0
- package/dist/components/modals/layout/DialogButtonBar.js +19 -0
- package/dist/components/modals/layout/DialogButtonBar.js.map +1 -0
- package/dist/components/modals/layout/DialogHeader.d.ts +18 -0
- package/dist/components/modals/layout/DialogHeader.d.ts.map +1 -0
- package/dist/components/modals/layout/DialogHeader.js +117 -0
- package/dist/components/modals/layout/DialogHeader.js.map +1 -0
- package/dist/components/responsive/AutoEllipsis.d.ts +21 -0
- package/dist/components/responsive/AutoEllipsis.d.ts.map +1 -0
- package/dist/components/responsive/AutoEllipsis.js +128 -0
- package/dist/components/responsive/AutoEllipsis.js.map +1 -0
- package/dist/components/responsive/makeResponsiveComponent.d.ts +38 -0
- package/dist/components/responsive/makeResponsiveComponent.d.ts.map +1 -0
- package/dist/components/responsive/makeResponsiveComponent.js +88 -0
- package/dist/components/responsive/makeResponsiveComponent.js.map +1 -0
- package/dist/components/types.d.ts +5 -0
- package/dist/components/types.d.ts.map +1 -0
- package/dist/components/waiAriaHelpers/typeAhead.d.ts +44 -0
- package/dist/components/waiAriaHelpers/typeAhead.d.ts.map +1 -0
- package/dist/components/waiAriaHelpers/typeAhead.js +75 -0
- package/dist/components/waiAriaHelpers/typeAhead.js.map +1 -0
- package/dist/globalFocus.js +95 -0
- package/dist/globalFocus.js.map +1 -0
- package/dist/hooks/useBodyScrollLock.js +106 -0
- package/dist/hooks/useBodyScrollLock.js.map +1 -0
- package/dist/index.d.ts +69 -1658
- package/dist/index.js +58 -7198
- package/dist/index.js.map +1 -1
- package/dist/objects/ApiaUtil/dialogs/ApiaUtilDialogs.d.ts +18 -0
- package/dist/objects/ApiaUtil/dialogs/ApiaUtilDialogs.d.ts.map +1 -0
- package/dist/objects/ApiaUtil/dialogs/ApiaUtilDialogs.js +116 -0
- package/dist/objects/ApiaUtil/dialogs/ApiaUtilDialogs.js.map +1 -0
- package/dist/objects/ApiaUtil/index.d.ts +27 -0
- package/dist/objects/ApiaUtil/index.d.ts.map +1 -0
- package/dist/objects/ApiaUtil/index.js +89 -0
- package/dist/objects/ApiaUtil/index.js.map +1 -0
- package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.d.ts +23 -0
- package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.d.ts.map +1 -0
- package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.js +108 -0
- package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.js.map +1 -0
- package/dist/objects/ApiaUtil/modals/ApiaUtilModals.d.ts +17 -0
- package/dist/objects/ApiaUtil/modals/ApiaUtilModals.d.ts.map +1 -0
- package/dist/objects/ApiaUtil/modals/ApiaUtilModals.js +111 -0
- package/dist/objects/ApiaUtil/modals/ApiaUtilModals.js.map +1 -0
- package/dist/objects/ApiaUtil/modals/OpenModal.d.ts +38 -0
- package/dist/objects/ApiaUtil/modals/OpenModal.d.ts.map +1 -0
- package/dist/objects/ApiaUtil/modals/OpenModal.js +37 -0
- package/dist/objects/ApiaUtil/modals/OpenModal.js.map +1 -0
- package/dist/objects/ApiaUtil/mouse/ApiaUtilMouse.d.ts +19 -0
- package/dist/objects/ApiaUtil/mouse/ApiaUtilMouse.d.ts.map +1 -0
- package/dist/objects/ApiaUtil/mouse/ApiaUtilMouse.js +26 -0
- package/dist/objects/ApiaUtil/mouse/ApiaUtilMouse.js.map +1 -0
- package/dist/objects/ApiaUtil/notifications/ApiaUtilNotifications.d.ts +14 -0
- package/dist/objects/ApiaUtil/notifications/ApiaUtilNotifications.d.ts.map +1 -0
- package/dist/objects/ApiaUtil/notifications/ApiaUtilNotifications.js +33 -0
- package/dist/objects/ApiaUtil/notifications/ApiaUtilNotifications.js.map +1 -0
- package/dist/objects/ApiaUtil/parsers/ApiaUtilParsers.d.ts +23 -0
- package/dist/objects/ApiaUtil/parsers/ApiaUtilParsers.d.ts.map +1 -0
- package/dist/objects/ApiaUtil/parsers/ApiaUtilParsers.js +79 -0
- package/dist/objects/ApiaUtil/parsers/ApiaUtilParsers.js.map +1 -0
- package/dist/objects/ApiaUtil/tabs/ApiaUtilCurrentTab.d.ts +33 -0
- package/dist/objects/ApiaUtil/tabs/ApiaUtilCurrentTab.d.ts.map +1 -0
- package/dist/objects/ApiaUtil/tabs/ApiaUtilCurrentTab.js +50 -0
- package/dist/objects/ApiaUtil/tabs/ApiaUtilCurrentTab.js.map +1 -0
- package/dist/objects/ApiaUtil/tabs/ApiaUtilTabsController.d.ts +20 -0
- package/dist/objects/ApiaUtil/tabs/ApiaUtilTabsController.d.ts.map +1 -0
- package/dist/objects/ApiaUtil/tabs/ApiaUtilTabsController.js +37 -0
- package/dist/objects/ApiaUtil/tabs/ApiaUtilTabsController.js.map +1 -0
- package/dist/objects/ApiaUtil/tabs/util.js +17 -0
- package/dist/objects/ApiaUtil/tabs/util.js.map +1 -0
- package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltip.d.ts +11 -0
- package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltip.d.ts.map +1 -0
- package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltip.js +17 -0
- package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltip.js.map +1 -0
- package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltips.d.ts +22 -0
- package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltips.d.ts.map +1 -0
- package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltips.js +104 -0
- package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltips.js.map +1 -0
- package/dist/objects/ApiaUtil/tooltips/AutomaticTooltip.d.ts +13 -0
- package/dist/objects/ApiaUtil/tooltips/AutomaticTooltip.d.ts.map +1 -0
- package/dist/objects/ApiaUtil/tooltips/AutomaticTooltip.js +79 -0
- package/dist/objects/ApiaUtil/tooltips/AutomaticTooltip.js.map +1 -0
- package/dist/objects/ApiaUtil/tooltips/tooltip/Tooltip.js +62 -0
- package/dist/objects/ApiaUtil/tooltips/tooltip/Tooltip.js.map +1 -0
- package/dist/objects/ApiaUtil/tooltips/tooltip/types.d.ts +117 -0
- package/dist/objects/ApiaUtil/tooltips/tooltip/types.d.ts.map +1 -0
- package/dist/objects/ApiaUtil/tooltips/tooltip/util.js +273 -0
- package/dist/objects/ApiaUtil/tooltips/tooltip/util.js.map +1 -0
- package/dist/objects/ScreenLocker/index.d.ts +37 -0
- package/dist/objects/ScreenLocker/index.d.ts.map +1 -0
- package/dist/objects/ScreenLocker/index.js +92 -0
- package/dist/objects/ScreenLocker/index.js.map +1 -0
- package/dist/tabs/Content.d.ts +7 -0
- package/dist/tabs/Content.d.ts.map +1 -0
- package/dist/tabs/Content.js +52 -0
- package/dist/tabs/Content.js.map +1 -0
- package/dist/tabs/ContextMenu.js +77 -0
- package/dist/tabs/ContextMenu.js.map +1 -0
- package/dist/tabs/Item.js +64 -0
- package/dist/tabs/Item.js.map +1 -0
- package/dist/tabs/Tabs.d.ts +8 -0
- package/dist/tabs/Tabs.d.ts.map +1 -0
- package/dist/tabs/Tabs.js +78 -0
- package/dist/tabs/Tabs.js.map +1 -0
- package/dist/tabs/TabsList.d.ts +8 -0
- package/dist/tabs/TabsList.d.ts.map +1 -0
- package/dist/tabs/TabsList.js +138 -0
- package/dist/tabs/TabsList.js.map +1 -0
- package/dist/tabs/renderers/DefaultTabsLabelRenderer.d.ts +6 -0
- package/dist/tabs/renderers/DefaultTabsLabelRenderer.d.ts.map +1 -0
- package/dist/tabs/renderers/DefaultTabsLabelRenderer.js +71 -0
- package/dist/tabs/renderers/DefaultTabsLabelRenderer.js.map +1 -0
- package/dist/tabs/tabsController.d.ts +41 -0
- package/dist/tabs/tabsController.d.ts.map +1 -0
- package/dist/tabs/tabsController.js +303 -0
- package/dist/tabs/tabsController.js.map +1 -0
- package/dist/tabs/types.d.ts +115 -0
- package/dist/tabs/types.d.ts.map +1 -0
- package/dist/tabs/useTabsList.js +20 -0
- package/dist/tabs/useTabsList.js.map +1 -0
- package/dist/tabs/util.js +11 -0
- package/dist/tabs/util.js.map +1 -0
- package/package.json +8 -8
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
import clone from 'lodash-es/clone';
|
|
2
|
+
import uniqueId from 'lodash-es/uniqueId';
|
|
3
|
+
import { PropsStore, getLabel, isChild, getSpecificParent } from '@apia/util';
|
|
4
|
+
import { ApiaUtil } from '../objects/ApiaUtil/index.js';
|
|
5
|
+
|
|
6
|
+
var __defProp = Object.defineProperty;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __publicField = (obj, key, value) => {
|
|
9
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
10
|
+
return value;
|
|
11
|
+
};
|
|
12
|
+
var __accessCheck = (obj, member, msg) => {
|
|
13
|
+
if (!member.has(obj))
|
|
14
|
+
throw TypeError("Cannot " + msg);
|
|
15
|
+
};
|
|
16
|
+
var __privateAdd = (obj, member, value) => {
|
|
17
|
+
if (member.has(obj))
|
|
18
|
+
throw TypeError("Cannot add the same private member more than once");
|
|
19
|
+
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
20
|
+
};
|
|
21
|
+
var __privateMethod = (obj, member, method) => {
|
|
22
|
+
__accessCheck(obj, member, "access private method");
|
|
23
|
+
return method;
|
|
24
|
+
};
|
|
25
|
+
var _innerAppend, innerAppend_fn, _setState, setState_fn;
|
|
26
|
+
class TabsController {
|
|
27
|
+
constructor(name, props, initialTabs) {
|
|
28
|
+
this.props = props;
|
|
29
|
+
__privateAdd(this, _innerAppend);
|
|
30
|
+
__privateAdd(this, _setState);
|
|
31
|
+
__publicField(this, "propsStore");
|
|
32
|
+
__publicField(this, "stateKey", "state");
|
|
33
|
+
this.propsStore = new PropsStore({
|
|
34
|
+
logCommands: { propsStore: `tabs_${name}` }
|
|
35
|
+
});
|
|
36
|
+
__privateMethod(this, _setState, setState_fn).call(this, {
|
|
37
|
+
focusedTab: null,
|
|
38
|
+
openTabs: [],
|
|
39
|
+
tabs: initialTabs?.map((current) => current.id) ?? []
|
|
40
|
+
});
|
|
41
|
+
if (initialTabs && initialTabs.length > 0)
|
|
42
|
+
this.focusTab(initialTabs[0].id);
|
|
43
|
+
}
|
|
44
|
+
get stateStore() {
|
|
45
|
+
return this.propsStore;
|
|
46
|
+
}
|
|
47
|
+
get activeTabs() {
|
|
48
|
+
return clone(this.state.openTabs);
|
|
49
|
+
}
|
|
50
|
+
get tabsList() {
|
|
51
|
+
return clone(this.state.tabs);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Obviamente agrega un tab al listado de tabs
|
|
55
|
+
*/
|
|
56
|
+
append(tab) {
|
|
57
|
+
if (this.propsStore.getFieldProps(tab.id)) {
|
|
58
|
+
void new ApiaUtil().dialogs.confirm({
|
|
59
|
+
children: getLabel("msgTabIsOpen").text,
|
|
60
|
+
title: getLabel("titMsgWarning").text
|
|
61
|
+
}).then((hasConfirmed) => {
|
|
62
|
+
if (hasConfirmed)
|
|
63
|
+
__privateMethod(this, _innerAppend, innerAppend_fn).call(this, {
|
|
64
|
+
...tab,
|
|
65
|
+
id: `${tab.id}_${uniqueId()}`,
|
|
66
|
+
tabAdditionalProps: tab.tabAdditionalProps ?? {}
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
} else
|
|
70
|
+
__privateMethod(this, _innerAppend, innerAppend_fn).call(this, {
|
|
71
|
+
...tab,
|
|
72
|
+
tabAdditionalProps: tab.tabAdditionalProps ?? {}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
async closeAll(closeFixedTabsAsWell = false, force = false) {
|
|
76
|
+
for (let i = this.tabsList.length - 1; i >= 0; i--) {
|
|
77
|
+
const current = this.tabsList[i];
|
|
78
|
+
if (!this.propsStore.getFieldProps(current).isFixed || closeFixedTabsAsWell)
|
|
79
|
+
await this.closeTab(current, force);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async closeToRight(targetId) {
|
|
83
|
+
const targetIndex = this.tabsList.indexOf(targetId);
|
|
84
|
+
for (let i = this.tabsList.length - 1; i > targetIndex; i--) {
|
|
85
|
+
const current = this.tabsList[i];
|
|
86
|
+
if (!this.propsStore.getFieldProps(current).isFixed && current !== targetId)
|
|
87
|
+
await this.closeTab(current);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async closeToLeft(targetId) {
|
|
91
|
+
const targetIndex = this.tabsList.indexOf(targetId);
|
|
92
|
+
if (targetIndex > -1) {
|
|
93
|
+
for (let i = targetIndex - 1; i >= 0; i--) {
|
|
94
|
+
const current = this.tabsList[i];
|
|
95
|
+
if (!this.propsStore.getFieldProps(current).isFixed) {
|
|
96
|
+
await this.closeTab(current);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
async closeOthers(targetId) {
|
|
102
|
+
for (let i = this.tabsList.length - 1; i >= 0; i--) {
|
|
103
|
+
const current = this.tabsList[i];
|
|
104
|
+
if (!this.propsStore.getFieldProps(current).isFixed && current !== targetId)
|
|
105
|
+
await this.closeTab(current);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async closeTab(tabId, force = false) {
|
|
109
|
+
const tabProps = this.propsStore.getFieldProps(tabId);
|
|
110
|
+
if (!tabProps.isClosable || !force && this.props.onRequestClose && !await this.props.onRequestClose(tabProps))
|
|
111
|
+
return false;
|
|
112
|
+
const { onBeforeClose } = tabProps;
|
|
113
|
+
if (onBeforeClose) {
|
|
114
|
+
const canClose = await onBeforeClose();
|
|
115
|
+
const message = canClose === false ? getLabel("msgPerDatIng").text : canClose;
|
|
116
|
+
if (message !== true && !force) {
|
|
117
|
+
const hasConfirmed = await new ApiaUtil().dialogs.confirm({
|
|
118
|
+
children: message,
|
|
119
|
+
title: getLabel("lbl_atention").text
|
|
120
|
+
});
|
|
121
|
+
if (!hasConfirmed)
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
let newOpenTab = null;
|
|
126
|
+
if (this.state.openTabs.includes(tabId)) {
|
|
127
|
+
const tabIndex = this.tabsList.findIndex((current) => current === tabId);
|
|
128
|
+
newOpenTab = tabIndex > 0 ? this.tabsList[tabIndex - 1] : this.tabsList[1];
|
|
129
|
+
}
|
|
130
|
+
__privateMethod(this, _setState, setState_fn).call(this, {
|
|
131
|
+
tabs: this.state.tabs.filter((current) => current !== tabId)
|
|
132
|
+
});
|
|
133
|
+
this.props.onCloseTab?.(tabProps);
|
|
134
|
+
this.propsStore.removeField(tabId);
|
|
135
|
+
if (newOpenTab) {
|
|
136
|
+
this.openTab(newOpenTab);
|
|
137
|
+
this.focusTab(newOpenTab);
|
|
138
|
+
}
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
focusNextTab() {
|
|
142
|
+
const { tabs } = this.state;
|
|
143
|
+
const focusedIndex = tabs.findIndex(
|
|
144
|
+
(current) => current === this.state.focusedTab
|
|
145
|
+
);
|
|
146
|
+
if (focusedIndex === tabs.length - 1 || focusedIndex === -1)
|
|
147
|
+
return null;
|
|
148
|
+
const newFocusIndex = focusedIndex + 1;
|
|
149
|
+
this.focusTab(tabs[newFocusIndex]);
|
|
150
|
+
return tabs[newFocusIndex];
|
|
151
|
+
}
|
|
152
|
+
focusPreviousTab() {
|
|
153
|
+
const { tabs } = this.state;
|
|
154
|
+
const focusedIndex = tabs.findIndex(
|
|
155
|
+
(current) => current === this.state.focusedTab
|
|
156
|
+
);
|
|
157
|
+
if (focusedIndex <= 0)
|
|
158
|
+
return null;
|
|
159
|
+
const newFocusIndex = focusedIndex - 1;
|
|
160
|
+
this.focusTab(tabs[newFocusIndex]);
|
|
161
|
+
return tabs[newFocusIndex];
|
|
162
|
+
}
|
|
163
|
+
focusTab(tabId) {
|
|
164
|
+
if (this.state.focusedTab)
|
|
165
|
+
this.propsStore.updateField(this.state.focusedTab, { isFocused: false });
|
|
166
|
+
__privateMethod(this, _setState, setState_fn).call(this, { focusedTab: tabId });
|
|
167
|
+
this.propsStore.updateField(tabId, { isFocused: true });
|
|
168
|
+
const tabProps = this.propsStore.getFieldProps(tabId);
|
|
169
|
+
tabProps?.onFocus?.(tabProps);
|
|
170
|
+
}
|
|
171
|
+
getTabById(tabId) {
|
|
172
|
+
return this.propsStore.getFieldProps(tabId);
|
|
173
|
+
}
|
|
174
|
+
getTabElement(tabId) {
|
|
175
|
+
return document.querySelector(`#tabpanel-${this.props.id}-${tabId}`);
|
|
176
|
+
}
|
|
177
|
+
handleKeyDown(ev) {
|
|
178
|
+
if (!isChild(
|
|
179
|
+
ev.target,
|
|
180
|
+
(current) => current.id === `tabsList-${this.props.id}`
|
|
181
|
+
))
|
|
182
|
+
return;
|
|
183
|
+
switch (ev.code) {
|
|
184
|
+
case "ArrowDown":
|
|
185
|
+
case "ArrowRight": {
|
|
186
|
+
if (this.props.orientation === "horizontal" && ev.code === "ArrowDown" || this.props.orientation === "vertical" && ev.code === "ArrowRight")
|
|
187
|
+
return;
|
|
188
|
+
this.focusNextTab();
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
case "ArrowUp":
|
|
192
|
+
case "ArrowLeft": {
|
|
193
|
+
if (this.props.orientation === "horizontal" && ev.code === "ArrowUp" || this.props.orientation === "vertical" && ev.code === "ArrowLeft")
|
|
194
|
+
return;
|
|
195
|
+
this.focusPreviousTab();
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
case "Delete": {
|
|
199
|
+
const tabId = getSpecificParent(
|
|
200
|
+
ev.target,
|
|
201
|
+
(current) => !!current.getAttribute("data-id")
|
|
202
|
+
)?.getAttribute("data-id");
|
|
203
|
+
if (tabId) {
|
|
204
|
+
if (!this.propsStore.getFieldProps(tabId).isClosable)
|
|
205
|
+
return;
|
|
206
|
+
void this.closeTab(tabId);
|
|
207
|
+
}
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
case "Enter":
|
|
211
|
+
case "Space": {
|
|
212
|
+
const tabId = getSpecificParent(
|
|
213
|
+
ev.target,
|
|
214
|
+
(current) => !!current.getAttribute("data-id")
|
|
215
|
+
)?.getAttribute("data-id");
|
|
216
|
+
if (tabId) {
|
|
217
|
+
this.openTab(tabId);
|
|
218
|
+
}
|
|
219
|
+
break;
|
|
220
|
+
}
|
|
221
|
+
case "End": {
|
|
222
|
+
this.focusTab(this.state.tabs[this.state.tabs.length - 1]);
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
case "Home": {
|
|
226
|
+
this.focusTab(this.state.tabs[0]);
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
openNextTab() {
|
|
232
|
+
const { tabs } = this.state;
|
|
233
|
+
const openIndex = tabs.findIndex(
|
|
234
|
+
(current) => current === this.state.openTabs[0]
|
|
235
|
+
);
|
|
236
|
+
if (openIndex >= this.tabsList.length)
|
|
237
|
+
return null;
|
|
238
|
+
const newOpenIndex = openIndex + 1;
|
|
239
|
+
this.openTab(tabs[newOpenIndex]);
|
|
240
|
+
return tabs[newOpenIndex];
|
|
241
|
+
}
|
|
242
|
+
openPreviousTab() {
|
|
243
|
+
const { tabs } = this.state;
|
|
244
|
+
const openIndex = tabs.findIndex(
|
|
245
|
+
(current) => current === this.state.openTabs[0]
|
|
246
|
+
);
|
|
247
|
+
if (openIndex <= 0)
|
|
248
|
+
return null;
|
|
249
|
+
const newOpenIndex = openIndex - 1;
|
|
250
|
+
this.openTab(tabs[newOpenIndex]);
|
|
251
|
+
return tabs[newOpenIndex];
|
|
252
|
+
}
|
|
253
|
+
get state() {
|
|
254
|
+
return this.propsStore.getFieldProps(this.stateKey);
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Se utiliza para hacer que el tab aparezca visible en el listado
|
|
258
|
+
*
|
|
259
|
+
* @param justThis Normalmente las tabs se abren de a una, pero si este parámetro se pasa en false, es posible abrir más de una a la vez.
|
|
260
|
+
*/
|
|
261
|
+
openTab(tabId, justThis = true) {
|
|
262
|
+
const tabProps = this.propsStore.getFieldProps(tabId);
|
|
263
|
+
if (!tabProps) {
|
|
264
|
+
console.warn(`There is no tab with such id: ${tabId}`);
|
|
265
|
+
} else {
|
|
266
|
+
window.dispatchEvent(
|
|
267
|
+
new CustomEvent("tabOpen", {
|
|
268
|
+
detail: { tabId, justThis }
|
|
269
|
+
})
|
|
270
|
+
);
|
|
271
|
+
if (justThis) {
|
|
272
|
+
window.requestAnimationFrame(() => {
|
|
273
|
+
window.scrollTo(0, 0);
|
|
274
|
+
});
|
|
275
|
+
this.state.openTabs.forEach(
|
|
276
|
+
(current) => this.propsStore.updateField(current, { isOpen: false })
|
|
277
|
+
);
|
|
278
|
+
}
|
|
279
|
+
this.propsStore.updateField(tabId, { isOpen: true });
|
|
280
|
+
__privateMethod(this, _setState, setState_fn).call(this, {
|
|
281
|
+
openTabs: justThis ? [tabId] : [...this.state.openTabs, tabId]
|
|
282
|
+
});
|
|
283
|
+
this.focusTab(tabId);
|
|
284
|
+
this.props.onOpenTab?.(tabProps);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
_innerAppend = new WeakSet();
|
|
289
|
+
innerAppend_fn = function(tab) {
|
|
290
|
+
__privateMethod(this, _setState, setState_fn).call(this, { tabs: [...this.state.tabs, tab.id] });
|
|
291
|
+
this.propsStore.updateField(tab.id, tab);
|
|
292
|
+
if (tab.isOpen) {
|
|
293
|
+
this.openTab(tab.id);
|
|
294
|
+
this.focusTab(tab.id);
|
|
295
|
+
}
|
|
296
|
+
};
|
|
297
|
+
_setState = new WeakSet();
|
|
298
|
+
setState_fn = function(state) {
|
|
299
|
+
this.propsStore.updateField(this.stateKey, state);
|
|
300
|
+
};
|
|
301
|
+
|
|
302
|
+
export { TabsController as default };
|
|
303
|
+
//# sourceMappingURL=tabsController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabsController.js","sources":["../../src/tabs/tabsController.ts"],"sourcesContent":["import clone from 'lodash-es/clone';\r\nimport uniqueId from 'lodash-es/uniqueId';\r\nimport React from 'react';\r\nimport { TTab, TTabs, TTabsListState } from './types';\r\nimport {\r\n PropsStore,\r\n TId,\r\n getLabel,\r\n getSpecificParent,\r\n isChild,\r\n} from '@apia/util';\r\nimport { ApiaUtil } from '../objects/ApiaUtil';\r\n\r\nexport default class TabsController<\r\n AdditionalPropsType extends Record<string, unknown> = Record<string, unknown>,\r\n TabType extends TTab<AdditionalPropsType> = TTab<AdditionalPropsType>,\r\n> {\r\n propsStore: PropsStore<TTab<AdditionalPropsType>>;\r\n\r\n stateKey = 'state';\r\n\r\n get stateStore() {\r\n return this.propsStore as unknown as PropsStore<TTabsListState>;\r\n }\r\n\r\n get activeTabs() {\r\n return clone(this.state.openTabs);\r\n }\r\n\r\n get tabsList() {\r\n return clone(this.state.tabs);\r\n }\r\n\r\n constructor(\r\n name: string,\r\n private props: TTabs<AdditionalPropsType>,\r\n initialTabs?: TabType[],\r\n ) {\r\n this.propsStore = new PropsStore<TTab<AdditionalPropsType>>({\r\n logCommands: { propsStore: `tabs_${name}` },\r\n });\r\n this.#setState({\r\n focusedTab: null,\r\n openTabs: [],\r\n tabs: initialTabs?.map((current) => current.id) ?? [],\r\n });\r\n if (initialTabs && initialTabs.length > 0) this.focusTab(initialTabs[0].id);\r\n }\r\n\r\n #innerAppend(tab: TabType) {\r\n this.#setState({ tabs: [...this.state.tabs, tab.id] });\r\n this.propsStore.updateField(tab.id, tab);\r\n if (tab.isOpen) {\r\n this.openTab(tab.id);\r\n this.focusTab(tab.id);\r\n }\r\n }\r\n\r\n /**\r\n * Obviamente agrega un tab al listado de tabs\r\n */\r\n append(\r\n tab: Omit<TabType, 'tabAdditionalProps'> &\r\n Partial<Pick<TabType, 'tabAdditionalProps'>>,\r\n ) {\r\n if (this.propsStore.getFieldProps(tab.id)) {\r\n void new ApiaUtil().dialogs\r\n .confirm({\r\n children: getLabel('msgTabIsOpen').text,\r\n title: getLabel('titMsgWarning').text,\r\n })\r\n .then((hasConfirmed) => {\r\n if (hasConfirmed)\r\n this.#innerAppend({\r\n ...tab,\r\n id: `${tab.id}_${uniqueId()}`,\r\n tabAdditionalProps: tab.tabAdditionalProps ?? {},\r\n } as TabType);\r\n });\r\n } else\r\n this.#innerAppend({\r\n ...tab,\r\n tabAdditionalProps: tab.tabAdditionalProps ?? {},\r\n } as TabType);\r\n }\r\n\r\n async closeAll(closeFixedTabsAsWell = false, force = false) {\r\n for (let i = this.tabsList.length - 1; i >= 0; i--) {\r\n const current = this.tabsList[i];\r\n if (\r\n !this.propsStore.getFieldProps(current).isFixed ||\r\n closeFixedTabsAsWell\r\n )\r\n await this.closeTab(current, force);\r\n }\r\n }\r\n\r\n async closeToRight(targetId: TId) {\r\n const targetIndex = this.tabsList.indexOf(targetId);\r\n for (let i = this.tabsList.length - 1; i > targetIndex; i--) {\r\n const current = this.tabsList[i];\r\n if (\r\n !this.propsStore.getFieldProps(current).isFixed &&\r\n current !== targetId\r\n )\r\n await this.closeTab(current);\r\n }\r\n }\r\n\r\n async closeToLeft(targetId: TId) {\r\n const targetIndex = this.tabsList.indexOf(targetId);\r\n if (targetIndex > -1) {\r\n for (let i = targetIndex - 1; i >= 0; i--) {\r\n const current = this.tabsList[i];\r\n if (!this.propsStore.getFieldProps(current).isFixed) {\r\n await this.closeTab(current);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async closeOthers(targetId: TId) {\r\n for (let i = this.tabsList.length - 1; i >= 0; i--) {\r\n const current = this.tabsList[i];\r\n if (\r\n !this.propsStore.getFieldProps(current).isFixed &&\r\n current !== targetId\r\n )\r\n await this.closeTab(current);\r\n }\r\n }\r\n\r\n async closeTab(tabId: TId, force = false) {\r\n const tabProps = this.propsStore.getFieldProps(tabId);\r\n if (\r\n !tabProps.isClosable ||\r\n (!force &&\r\n this.props.onRequestClose &&\r\n !(await this.props.onRequestClose(tabProps)))\r\n )\r\n return false;\r\n\r\n const { onBeforeClose } = tabProps;\r\n if (onBeforeClose) {\r\n const canClose = await onBeforeClose();\r\n const message =\r\n canClose === false ? getLabel('msgPerDatIng').text : canClose;\r\n if (message !== true && !force) {\r\n const hasConfirmed = await new ApiaUtil().dialogs.confirm({\r\n children: message,\r\n title: getLabel('lbl_atention').text,\r\n });\r\n if (!hasConfirmed) return false;\r\n }\r\n }\r\n\r\n let newOpenTab: null | TId = null;\r\n if (this.state.openTabs.includes(tabId)) {\r\n const tabIndex = this.tabsList.findIndex((current) => current === tabId);\r\n newOpenTab =\r\n tabIndex > 0 ? this.tabsList[tabIndex - 1] : this.tabsList[1];\r\n }\r\n\r\n this.#setState({\r\n tabs: this.state.tabs.filter((current) => current !== tabId),\r\n });\r\n this.props.onCloseTab?.(tabProps);\r\n this.propsStore.removeField(tabId);\r\n\r\n if (newOpenTab) {\r\n this.openTab(newOpenTab);\r\n this.focusTab(newOpenTab);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n focusNextTab() {\r\n const { tabs } = this.state;\r\n const focusedIndex = tabs.findIndex(\r\n (current) => current === this.state.focusedTab,\r\n );\r\n\r\n if (focusedIndex === tabs.length - 1 || focusedIndex === -1) return null;\r\n\r\n const newFocusIndex: number = focusedIndex + 1;\r\n this.focusTab(tabs[newFocusIndex]);\r\n\r\n return tabs[newFocusIndex];\r\n }\r\n\r\n focusPreviousTab() {\r\n const { tabs } = this.state;\r\n const focusedIndex = tabs.findIndex(\r\n (current) => current === this.state.focusedTab,\r\n );\r\n\r\n if (focusedIndex <= 0) return null;\r\n\r\n const newFocusIndex: number = focusedIndex - 1;\r\n this.focusTab(tabs[newFocusIndex]);\r\n\r\n return tabs[newFocusIndex];\r\n }\r\n\r\n focusTab(tabId: TId) {\r\n if (this.state.focusedTab)\r\n this.propsStore.updateField(this.state.focusedTab, { isFocused: false });\r\n this.#setState({ focusedTab: tabId });\r\n this.propsStore.updateField(tabId, { isFocused: true });\r\n const tabProps = this.propsStore.getFieldProps(tabId);\r\n tabProps?.onFocus?.(tabProps);\r\n }\r\n\r\n getTabById(tabId: TId) {\r\n return this.propsStore.getFieldProps(tabId);\r\n }\r\n\r\n getTabElement(tabId: TId) {\r\n return document.querySelector(`#tabpanel-${this.props.id}-${tabId}`);\r\n }\r\n\r\n handleKeyDown(ev: React.KeyboardEvent) {\r\n if (\r\n !isChild(\r\n ev.target as HTMLElement,\r\n (current) => current.id === `tabsList-${this.props.id}`,\r\n )\r\n )\r\n return;\r\n\r\n switch (ev.code) {\r\n case 'ArrowDown':\r\n case 'ArrowRight': {\r\n if (\r\n (this.props.orientation === 'horizontal' &&\r\n ev.code === 'ArrowDown') ||\r\n (this.props.orientation === 'vertical' && ev.code === 'ArrowRight')\r\n )\r\n return;\r\n\r\n this.focusNextTab();\r\n\r\n break;\r\n }\r\n case 'ArrowUp':\r\n case 'ArrowLeft': {\r\n if (\r\n (this.props.orientation === 'horizontal' && ev.code === 'ArrowUp') ||\r\n (this.props.orientation === 'vertical' && ev.code === 'ArrowLeft')\r\n )\r\n return;\r\n\r\n this.focusPreviousTab();\r\n\r\n break;\r\n }\r\n case 'Delete': {\r\n const tabId = getSpecificParent(\r\n ev.target as HTMLElement,\r\n (current) => !!current.getAttribute('data-id'),\r\n )?.getAttribute('data-id');\r\n\r\n if (tabId) {\r\n if (!this.propsStore.getFieldProps(tabId).isClosable) return;\r\n\r\n void this.closeTab(tabId);\r\n }\r\n break;\r\n }\r\n case 'Enter':\r\n case 'Space': {\r\n const tabId = getSpecificParent(\r\n ev.target as HTMLElement,\r\n (current) => !!current.getAttribute('data-id'),\r\n )?.getAttribute('data-id');\r\n\r\n if (tabId) {\r\n this.openTab(tabId);\r\n }\r\n\r\n break;\r\n }\r\n case 'End': {\r\n this.focusTab(this.state.tabs[this.state.tabs.length - 1]);\r\n break;\r\n }\r\n case 'Home': {\r\n this.focusTab(this.state.tabs[0]);\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n openNextTab() {\r\n const { tabs } = this.state;\r\n const openIndex = tabs.findIndex(\r\n (current) => current === this.state.openTabs[0],\r\n );\r\n\r\n if (openIndex >= this.tabsList.length) return null;\r\n\r\n const newOpenIndex: number = openIndex + 1;\r\n this.openTab(tabs[newOpenIndex]);\r\n\r\n return tabs[newOpenIndex];\r\n }\r\n\r\n openPreviousTab() {\r\n const { tabs } = this.state;\r\n const openIndex = tabs.findIndex(\r\n (current) => current === this.state.openTabs[0],\r\n );\r\n\r\n if (openIndex <= 0) return null;\r\n\r\n const newOpenIndex: number = openIndex - 1;\r\n this.openTab(tabs[newOpenIndex]);\r\n\r\n return tabs[newOpenIndex];\r\n }\r\n\r\n get state() {\r\n return this.propsStore.getFieldProps<TTabsListState>(this.stateKey);\r\n }\r\n\r\n #setState(state: Partial<TTabsListState>) {\r\n this.propsStore.updateField<TTabsListState>(this.stateKey, state);\r\n }\r\n\r\n /**\r\n * Se utiliza para hacer que el tab aparezca visible en el listado\r\n *\r\n * @param justThis Normalmente las tabs se abren de a una, pero si este parámetro se pasa en false, es posible abrir más de una a la vez.\r\n */\r\n openTab(tabId: TId, justThis = true) {\r\n const tabProps = this.propsStore.getFieldProps(tabId);\r\n if (!tabProps) {\r\n console.warn(`There is no tab with such id: ${tabId}`);\r\n } else {\r\n window.dispatchEvent(\r\n new CustomEvent('tabOpen', {\r\n detail: { tabId, justThis },\r\n }),\r\n );\r\n\r\n if (justThis) {\r\n window.requestAnimationFrame(() => {\r\n window.scrollTo(0, 0);\r\n });\r\n this.state.openTabs.forEach((current) =>\r\n this.propsStore.updateField(current, { isOpen: false }),\r\n );\r\n }\r\n this.propsStore.updateField(tabId, { isOpen: true });\r\n this.#setState({\r\n openTabs: justThis ? [tabId] : [...this.state.openTabs, tabId],\r\n });\r\n this.focusTab(tabId);\r\n this.props.onOpenTab?.(tabProps);\r\n }\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,CAAA;AAaA,MAAqB,cAGnB,CAAA;AAAA,EAiBA,WAAA,CACE,IACQ,EAAA,KAAA,EACR,WACA,EAAA;AAFQ,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AAcV,IAAA,YAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;AAwRA,IAAA,YAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;AAxTA,IAAA,aAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;AAEA,IAAW,aAAA,CAAA,IAAA,EAAA,UAAA,EAAA,OAAA,CAAA,CAAA;AAmBT,IAAK,IAAA,CAAA,UAAA,GAAa,IAAI,UAAsC,CAAA;AAAA,MAC1D,WAAa,EAAA,EAAE,UAAY,EAAA,CAAA,KAAA,EAAQ,IAAI,CAAG,CAAA,EAAA;AAAA,KAC3C,CAAA,CAAA;AACD,IAAA,eAAA,CAAA,IAAA,EAAK,wBAAL,IAAe,CAAA,IAAA,EAAA;AAAA,MACb,UAAY,EAAA,IAAA;AAAA,MACZ,UAAU,EAAC;AAAA,MACX,IAAA,EAAM,aAAa,GAAI,CAAA,CAAC,YAAY,OAAQ,CAAA,EAAE,KAAK,EAAC;AAAA,KACtD,CAAA,CAAA;AACA,IAAI,IAAA,WAAA,IAAe,YAAY,MAAS,GAAA,CAAA;AAAG,MAAA,IAAA,CAAK,QAAS,CAAA,WAAA,CAAY,CAAC,CAAA,CAAE,EAAE,CAAA,CAAA;AAAA,GAC5E;AAAA,EA1BA,IAAI,UAAa,GAAA;AACf,IAAA,OAAO,IAAK,CAAA,UAAA,CAAA;AAAA,GACd;AAAA,EAEA,IAAI,UAAa,GAAA;AACf,IAAO,OAAA,KAAA,CAAM,IAAK,CAAA,KAAA,CAAM,QAAQ,CAAA,CAAA;AAAA,GAClC;AAAA,EAEA,IAAI,QAAW,GAAA;AACb,IAAO,OAAA,KAAA,CAAM,IAAK,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAAA,GAC9B;AAAA;AAAA;AAAA;AAAA,EA8BA,OACE,GAEA,EAAA;AACA,IAAA,IAAI,IAAK,CAAA,UAAA,CAAW,aAAc,CAAA,GAAA,CAAI,EAAE,CAAG,EAAA;AACzC,MAAA,KAAK,IAAI,QAAA,EAAW,CAAA,OAAA,CACjB,OAAQ,CAAA;AAAA,QACP,QAAA,EAAU,QAAS,CAAA,cAAc,CAAE,CAAA,IAAA;AAAA,QACnC,KAAA,EAAO,QAAS,CAAA,eAAe,CAAE,CAAA,IAAA;AAAA,OAClC,CAAA,CACA,IAAK,CAAA,CAAC,YAAiB,KAAA;AACtB,QAAI,IAAA,YAAA;AACF,UAAA,eAAA,CAAA,IAAA,EAAK,8BAAL,IAAkB,CAAA,IAAA,EAAA;AAAA,YAChB,GAAG,GAAA;AAAA,YACH,IAAI,CAAG,EAAA,GAAA,CAAI,EAAE,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA;AAAA,YAC3B,kBAAA,EAAoB,GAAI,CAAA,kBAAA,IAAsB,EAAC;AAAA,WACjD,CAAA,CAAA;AAAA,OACH,CAAA,CAAA;AAAA,KACL;AACE,MAAA,eAAA,CAAA,IAAA,EAAK,8BAAL,IAAkB,CAAA,IAAA,EAAA;AAAA,QAChB,GAAG,GAAA;AAAA,QACH,kBAAA,EAAoB,GAAI,CAAA,kBAAA,IAAsB,EAAC;AAAA,OACjD,CAAA,CAAA;AAAA,GACJ;AAAA,EAEA,MAAM,QAAA,CAAS,oBAAuB,GAAA,KAAA,EAAO,QAAQ,KAAO,EAAA;AAC1D,IAAA,KAAA,IAAS,IAAI,IAAK,CAAA,QAAA,CAAS,SAAS,CAAG,EAAA,CAAA,IAAK,GAAG,CAAK,EAAA,EAAA;AAClD,MAAM,MAAA,OAAA,GAAU,IAAK,CAAA,QAAA,CAAS,CAAC,CAAA,CAAA;AAC/B,MAAA,IACE,CAAC,IAAK,CAAA,UAAA,CAAW,aAAc,CAAA,OAAO,EAAE,OACxC,IAAA,oBAAA;AAEA,QAAM,MAAA,IAAA,CAAK,QAAS,CAAA,OAAA,EAAS,KAAK,CAAA,CAAA;AAAA,KACtC;AAAA,GACF;AAAA,EAEA,MAAM,aAAa,QAAe,EAAA;AAChC,IAAA,MAAM,WAAc,GAAA,IAAA,CAAK,QAAS,CAAA,OAAA,CAAQ,QAAQ,CAAA,CAAA;AAClD,IAAA,KAAA,IAAS,IAAI,IAAK,CAAA,QAAA,CAAS,SAAS,CAAG,EAAA,CAAA,GAAI,aAAa,CAAK,EAAA,EAAA;AAC3D,MAAM,MAAA,OAAA,GAAU,IAAK,CAAA,QAAA,CAAS,CAAC,CAAA,CAAA;AAC/B,MAAA,IACE,CAAC,IAAK,CAAA,UAAA,CAAW,cAAc,OAAO,CAAA,CAAE,WACxC,OAAY,KAAA,QAAA;AAEZ,QAAM,MAAA,IAAA,CAAK,SAAS,OAAO,CAAA,CAAA;AAAA,KAC/B;AAAA,GACF;AAAA,EAEA,MAAM,YAAY,QAAe,EAAA;AAC/B,IAAA,MAAM,WAAc,GAAA,IAAA,CAAK,QAAS,CAAA,OAAA,CAAQ,QAAQ,CAAA,CAAA;AAClD,IAAA,IAAI,cAAc,CAAI,CAAA,EAAA;AACpB,MAAA,KAAA,IAAS,CAAI,GAAA,WAAA,GAAc,CAAG,EAAA,CAAA,IAAK,GAAG,CAAK,EAAA,EAAA;AACzC,QAAM,MAAA,OAAA,GAAU,IAAK,CAAA,QAAA,CAAS,CAAC,CAAA,CAAA;AAC/B,QAAA,IAAI,CAAC,IAAK,CAAA,UAAA,CAAW,aAAc,CAAA,OAAO,EAAE,OAAS,EAAA;AACnD,UAAM,MAAA,IAAA,CAAK,SAAS,OAAO,CAAA,CAAA;AAAA,SAC7B;AAAA,OACF;AAAA,KACF;AAAA,GACF;AAAA,EAEA,MAAM,YAAY,QAAe,EAAA;AAC/B,IAAA,KAAA,IAAS,IAAI,IAAK,CAAA,QAAA,CAAS,SAAS,CAAG,EAAA,CAAA,IAAK,GAAG,CAAK,EAAA,EAAA;AAClD,MAAM,MAAA,OAAA,GAAU,IAAK,CAAA,QAAA,CAAS,CAAC,CAAA,CAAA;AAC/B,MAAA,IACE,CAAC,IAAK,CAAA,UAAA,CAAW,cAAc,OAAO,CAAA,CAAE,WACxC,OAAY,KAAA,QAAA;AAEZ,QAAM,MAAA,IAAA,CAAK,SAAS,OAAO,CAAA,CAAA;AAAA,KAC/B;AAAA,GACF;AAAA,EAEA,MAAM,QAAA,CAAS,KAAY,EAAA,KAAA,GAAQ,KAAO,EAAA;AACxC,IAAA,MAAM,QAAW,GAAA,IAAA,CAAK,UAAW,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AACpD,IAAA,IACE,CAAC,QAAA,CAAS,UACT,IAAA,CAAC,KACA,IAAA,IAAA,CAAK,KAAM,CAAA,cAAA,IACX,CAAE,MAAM,IAAK,CAAA,KAAA,CAAM,eAAe,QAAQ,CAAA;AAE5C,MAAO,OAAA,KAAA,CAAA;AAET,IAAM,MAAA,EAAE,eAAkB,GAAA,QAAA,CAAA;AAC1B,IAAA,IAAI,aAAe,EAAA;AACjB,MAAM,MAAA,QAAA,GAAW,MAAM,aAAc,EAAA,CAAA;AACrC,MAAA,MAAM,UACJ,QAAa,KAAA,KAAA,GAAQ,QAAS,CAAA,cAAc,EAAE,IAAO,GAAA,QAAA,CAAA;AACvD,MAAI,IAAA,OAAA,KAAY,IAAQ,IAAA,CAAC,KAAO,EAAA;AAC9B,QAAA,MAAM,eAAe,MAAM,IAAI,QAAS,EAAA,CAAE,QAAQ,OAAQ,CAAA;AAAA,UACxD,QAAU,EAAA,OAAA;AAAA,UACV,KAAA,EAAO,QAAS,CAAA,cAAc,CAAE,CAAA,IAAA;AAAA,SACjC,CAAA,CAAA;AACD,QAAA,IAAI,CAAC,YAAA;AAAc,UAAO,OAAA,KAAA,CAAA;AAAA,OAC5B;AAAA,KACF;AAEA,IAAA,IAAI,UAAyB,GAAA,IAAA,CAAA;AAC7B,IAAA,IAAI,IAAK,CAAA,KAAA,CAAM,QAAS,CAAA,QAAA,CAAS,KAAK,CAAG,EAAA;AACvC,MAAA,MAAM,WAAW,IAAK,CAAA,QAAA,CAAS,UAAU,CAAC,OAAA,KAAY,YAAY,KAAK,CAAA,CAAA;AACvE,MACE,UAAA,GAAA,QAAA,GAAW,IAAI,IAAK,CAAA,QAAA,CAAS,WAAW,CAAC,CAAA,GAAI,IAAK,CAAA,QAAA,CAAS,CAAC,CAAA,CAAA;AAAA,KAChE;AAEA,IAAA,eAAA,CAAA,IAAA,EAAK,wBAAL,IAAe,CAAA,IAAA,EAAA;AAAA,MACb,IAAA,EAAM,KAAK,KAAM,CAAA,IAAA,CAAK,OAAO,CAAC,OAAA,KAAY,YAAY,KAAK,CAAA;AAAA,KAC7D,CAAA,CAAA;AACA,IAAK,IAAA,CAAA,KAAA,CAAM,aAAa,QAAQ,CAAA,CAAA;AAChC,IAAK,IAAA,CAAA,UAAA,CAAW,YAAY,KAAK,CAAA,CAAA;AAEjC,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,IAAA,CAAK,QAAQ,UAAU,CAAA,CAAA;AACvB,MAAA,IAAA,CAAK,SAAS,UAAU,CAAA,CAAA;AAAA,KAC1B;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,YAAe,GAAA;AACb,IAAM,MAAA,EAAE,IAAK,EAAA,GAAI,IAAK,CAAA,KAAA,CAAA;AACtB,IAAA,MAAM,eAAe,IAAK,CAAA,SAAA;AAAA,MACxB,CAAC,OAAA,KAAY,OAAY,KAAA,IAAA,CAAK,KAAM,CAAA,UAAA;AAAA,KACtC,CAAA;AAEA,IAAA,IAAI,YAAiB,KAAA,IAAA,CAAK,MAAS,GAAA,CAAA,IAAK,YAAiB,KAAA,CAAA,CAAA;AAAI,MAAO,OAAA,IAAA,CAAA;AAEpE,IAAA,MAAM,gBAAwB,YAAe,GAAA,CAAA,CAAA;AAC7C,IAAK,IAAA,CAAA,QAAA,CAAS,IAAK,CAAA,aAAa,CAAC,CAAA,CAAA;AAEjC,IAAA,OAAO,KAAK,aAAa,CAAA,CAAA;AAAA,GAC3B;AAAA,EAEA,gBAAmB,GAAA;AACjB,IAAM,MAAA,EAAE,IAAK,EAAA,GAAI,IAAK,CAAA,KAAA,CAAA;AACtB,IAAA,MAAM,eAAe,IAAK,CAAA,SAAA;AAAA,MACxB,CAAC,OAAA,KAAY,OAAY,KAAA,IAAA,CAAK,KAAM,CAAA,UAAA;AAAA,KACtC,CAAA;AAEA,IAAA,IAAI,YAAgB,IAAA,CAAA;AAAG,MAAO,OAAA,IAAA,CAAA;AAE9B,IAAA,MAAM,gBAAwB,YAAe,GAAA,CAAA,CAAA;AAC7C,IAAK,IAAA,CAAA,QAAA,CAAS,IAAK,CAAA,aAAa,CAAC,CAAA,CAAA;AAEjC,IAAA,OAAO,KAAK,aAAa,CAAA,CAAA;AAAA,GAC3B;AAAA,EAEA,SAAS,KAAY,EAAA;AACnB,IAAA,IAAI,KAAK,KAAM,CAAA,UAAA;AACb,MAAK,IAAA,CAAA,UAAA,CAAW,YAAY,IAAK,CAAA,KAAA,CAAM,YAAY,EAAE,SAAA,EAAW,OAAO,CAAA,CAAA;AACzE,IAAA,eAAA,CAAA,IAAA,EAAK,SAAL,EAAA,WAAA,CAAA,CAAA,IAAA,CAAA,IAAA,EAAe,EAAE,UAAA,EAAY,KAAM,EAAA,CAAA,CAAA;AACnC,IAAA,IAAA,CAAK,WAAW,WAAY,CAAA,KAAA,EAAO,EAAE,SAAA,EAAW,MAAM,CAAA,CAAA;AACtD,IAAA,MAAM,QAAW,GAAA,IAAA,CAAK,UAAW,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AACpD,IAAA,QAAA,EAAU,UAAU,QAAQ,CAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,WAAW,KAAY,EAAA;AACrB,IAAO,OAAA,IAAA,CAAK,UAAW,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAAA,GAC5C;AAAA,EAEA,cAAc,KAAY,EAAA;AACxB,IAAO,OAAA,QAAA,CAAS,cAAc,CAAa,UAAA,EAAA,IAAA,CAAK,MAAM,EAAE,CAAA,CAAA,EAAI,KAAK,CAAE,CAAA,CAAA,CAAA;AAAA,GACrE;AAAA,EAEA,cAAc,EAAyB,EAAA;AACrC,IAAA,IACE,CAAC,OAAA;AAAA,MACC,EAAG,CAAA,MAAA;AAAA,MACH,CAAC,OAAY,KAAA,OAAA,CAAQ,OAAO,CAAY,SAAA,EAAA,IAAA,CAAK,MAAM,EAAE,CAAA,CAAA;AAAA,KACvD;AAEA,MAAA,OAAA;AAEF,IAAA,QAAQ,GAAG,IAAM;AAAA,MACf,KAAK,WAAA,CAAA;AAAA,MACL,KAAK,YAAc,EAAA;AACjB,QAAA,IACG,IAAK,CAAA,KAAA,CAAM,WAAgB,KAAA,YAAA,IAC1B,EAAG,CAAA,IAAA,KAAS,WACb,IAAA,IAAA,CAAK,KAAM,CAAA,WAAA,KAAgB,UAAc,IAAA,EAAA,CAAG,IAAS,KAAA,YAAA;AAEtD,UAAA,OAAA;AAEF,QAAA,IAAA,CAAK,YAAa,EAAA,CAAA;AAElB,QAAA,MAAA;AAAA,OACF;AAAA,MACA,KAAK,SAAA,CAAA;AAAA,MACL,KAAK,WAAa,EAAA;AAChB,QAAA,IACG,IAAK,CAAA,KAAA,CAAM,WAAgB,KAAA,YAAA,IAAgB,EAAG,CAAA,IAAA,KAAS,SACvD,IAAA,IAAA,CAAK,KAAM,CAAA,WAAA,KAAgB,UAAc,IAAA,EAAA,CAAG,IAAS,KAAA,WAAA;AAEtD,UAAA,OAAA;AAEF,QAAA,IAAA,CAAK,gBAAiB,EAAA,CAAA;AAEtB,QAAA,MAAA;AAAA,OACF;AAAA,MACA,KAAK,QAAU,EAAA;AACb,QAAA,MAAM,KAAQ,GAAA,iBAAA;AAAA,UACZ,EAAG,CAAA,MAAA;AAAA,UACH,CAAC,OAAY,KAAA,CAAC,CAAC,OAAA,CAAQ,aAAa,SAAS,CAAA;AAAA,SAC/C,EAAG,aAAa,SAAS,CAAA,CAAA;AAEzB,QAAA,IAAI,KAAO,EAAA;AACT,UAAA,IAAI,CAAC,IAAA,CAAK,UAAW,CAAA,aAAA,CAAc,KAAK,CAAE,CAAA,UAAA;AAAY,YAAA,OAAA;AAEtD,UAAK,KAAA,IAAA,CAAK,SAAS,KAAK,CAAA,CAAA;AAAA,SAC1B;AACA,QAAA,MAAA;AAAA,OACF;AAAA,MACA,KAAK,OAAA,CAAA;AAAA,MACL,KAAK,OAAS,EAAA;AACZ,QAAA,MAAM,KAAQ,GAAA,iBAAA;AAAA,UACZ,EAAG,CAAA,MAAA;AAAA,UACH,CAAC,OAAY,KAAA,CAAC,CAAC,OAAA,CAAQ,aAAa,SAAS,CAAA;AAAA,SAC/C,EAAG,aAAa,SAAS,CAAA,CAAA;AAEzB,QAAA,IAAI,KAAO,EAAA;AACT,UAAA,IAAA,CAAK,QAAQ,KAAK,CAAA,CAAA;AAAA,SACpB;AAEA,QAAA,MAAA;AAAA,OACF;AAAA,MACA,KAAK,KAAO,EAAA;AACV,QAAK,IAAA,CAAA,QAAA,CAAS,KAAK,KAAM,CAAA,IAAA,CAAK,KAAK,KAAM,CAAA,IAAA,CAAK,MAAS,GAAA,CAAC,CAAC,CAAA,CAAA;AACzD,QAAA,MAAA;AAAA,OACF;AAAA,MACA,KAAK,MAAQ,EAAA;AACX,QAAA,IAAA,CAAK,QAAS,CAAA,IAAA,CAAK,KAAM,CAAA,IAAA,CAAK,CAAC,CAAC,CAAA,CAAA;AAChC,QAAA,MAAA;AAAA,OACF;AAGA,KACF;AAAA,GACF;AAAA,EAEA,WAAc,GAAA;AACZ,IAAM,MAAA,EAAE,IAAK,EAAA,GAAI,IAAK,CAAA,KAAA,CAAA;AACtB,IAAA,MAAM,YAAY,IAAK,CAAA,SAAA;AAAA,MACrB,CAAC,OAAY,KAAA,OAAA,KAAY,IAAK,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA;AAAA,KAChD,CAAA;AAEA,IAAI,IAAA,SAAA,IAAa,KAAK,QAAS,CAAA,MAAA;AAAQ,MAAO,OAAA,IAAA,CAAA;AAE9C,IAAA,MAAM,eAAuB,SAAY,GAAA,CAAA,CAAA;AACzC,IAAK,IAAA,CAAA,OAAA,CAAQ,IAAK,CAAA,YAAY,CAAC,CAAA,CAAA;AAE/B,IAAA,OAAO,KAAK,YAAY,CAAA,CAAA;AAAA,GAC1B;AAAA,EAEA,eAAkB,GAAA;AAChB,IAAM,MAAA,EAAE,IAAK,EAAA,GAAI,IAAK,CAAA,KAAA,CAAA;AACtB,IAAA,MAAM,YAAY,IAAK,CAAA,SAAA;AAAA,MACrB,CAAC,OAAY,KAAA,OAAA,KAAY,IAAK,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA;AAAA,KAChD,CAAA;AAEA,IAAA,IAAI,SAAa,IAAA,CAAA;AAAG,MAAO,OAAA,IAAA,CAAA;AAE3B,IAAA,MAAM,eAAuB,SAAY,GAAA,CAAA,CAAA;AACzC,IAAK,IAAA,CAAA,OAAA,CAAQ,IAAK,CAAA,YAAY,CAAC,CAAA,CAAA;AAE/B,IAAA,OAAO,KAAK,YAAY,CAAA,CAAA;AAAA,GAC1B;AAAA,EAEA,IAAI,KAAQ,GAAA;AACV,IAAA,OAAO,IAAK,CAAA,UAAA,CAAW,aAA8B,CAAA,IAAA,CAAK,QAAQ,CAAA,CAAA;AAAA,GACpE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAAA,CAAQ,KAAY,EAAA,QAAA,GAAW,IAAM,EAAA;AACnC,IAAA,MAAM,QAAW,GAAA,IAAA,CAAK,UAAW,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AACpD,IAAA,IAAI,CAAC,QAAU,EAAA;AACb,MAAQ,OAAA,CAAA,IAAA,CAAK,CAAiC,8BAAA,EAAA,KAAK,CAAE,CAAA,CAAA,CAAA;AAAA,KAChD,MAAA;AACL,MAAO,MAAA,CAAA,aAAA;AAAA,QACL,IAAI,YAAY,SAAW,EAAA;AAAA,UACzB,MAAA,EAAQ,EAAE,KAAA,EAAO,QAAS,EAAA;AAAA,SAC3B,CAAA;AAAA,OACH,CAAA;AAEA,MAAA,IAAI,QAAU,EAAA;AACZ,QAAA,MAAA,CAAO,sBAAsB,MAAM;AACjC,UAAO,MAAA,CAAA,QAAA,CAAS,GAAG,CAAC,CAAA,CAAA;AAAA,SACrB,CAAA,CAAA;AACD,QAAA,IAAA,CAAK,MAAM,QAAS,CAAA,OAAA;AAAA,UAAQ,CAAC,YAC3B,IAAK,CAAA,UAAA,CAAW,YAAY,OAAS,EAAA,EAAE,MAAQ,EAAA,KAAA,EAAO,CAAA;AAAA,SACxD,CAAA;AAAA,OACF;AACA,MAAA,IAAA,CAAK,WAAW,WAAY,CAAA,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAM,CAAA,CAAA;AACnD,MAAA,eAAA,CAAA,IAAA,EAAK,wBAAL,IAAe,CAAA,IAAA,EAAA;AAAA,QACb,QAAA,EAAU,QAAW,GAAA,CAAC,KAAK,CAAA,GAAI,CAAC,GAAG,IAAA,CAAK,KAAM,CAAA,QAAA,EAAU,KAAK,CAAA;AAAA,OAC/D,CAAA,CAAA;AACA,MAAA,IAAA,CAAK,SAAS,KAAK,CAAA,CAAA;AACnB,MAAK,IAAA,CAAA,KAAA,CAAM,YAAY,QAAQ,CAAA,CAAA;AAAA,KACjC;AAAA,GACF;AACF,CAAA;AA5TE,YAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAAA,cAAA,GAAY,SAAC,GAAc,EAAA;AACzB,EAAK,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,WAAA,CAAA,CAAL,IAAe,CAAA,IAAA,EAAA,EAAE,IAAM,EAAA,CAAC,GAAG,IAAA,CAAK,KAAM,CAAA,IAAA,EAAM,GAAI,CAAA,EAAE,CAAE,EAAA,CAAA,CAAA;AACpD,EAAA,IAAA,CAAK,UAAW,CAAA,WAAA,CAAY,GAAI,CAAA,EAAA,EAAI,GAAG,CAAA,CAAA;AACvC,EAAA,IAAI,IAAI,MAAQ,EAAA;AACd,IAAK,IAAA,CAAA,OAAA,CAAQ,IAAI,EAAE,CAAA,CAAA;AACnB,IAAK,IAAA,CAAA,QAAA,CAAS,IAAI,EAAE,CAAA,CAAA;AAAA,GACtB;AACF,CAAA,CAAA;AAiRA,SAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAAA,WAAA,GAAS,SAAC,KAAgC,EAAA;AACxC,EAAA,IAAA,CAAK,UAAW,CAAA,WAAA,CAA4B,IAAK,CAAA,QAAA,EAAU,KAAK,CAAA,CAAA;AAClE,CAAA;;;;"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import React__default from 'react';
|
|
2
|
+
import TabsController from './tabsController.js';
|
|
3
|
+
import { TIconName, TIconType } from '@apia/icons';
|
|
4
|
+
import { TId } from '@apia/util';
|
|
5
|
+
|
|
6
|
+
type TTab<AdditionalPropsType extends Record<string, unknown> = Record<string, unknown>> = {
|
|
7
|
+
addEvent?: (ev: 'onFocusTab', cb: (ev: {
|
|
8
|
+
stop: () => void;
|
|
9
|
+
}) => unknown) => unknown;
|
|
10
|
+
content: React__default.FunctionComponent<{
|
|
11
|
+
tab: TTab<AdditionalPropsType>;
|
|
12
|
+
}>;
|
|
13
|
+
icon?: TIconName | TIconType;
|
|
14
|
+
/**
|
|
15
|
+
* El id es importante ya que se utiliza por temas de accesibilidad. Es
|
|
16
|
+
* importante asegurarse de que sea único.
|
|
17
|
+
*/
|
|
18
|
+
id: TId;
|
|
19
|
+
isClosable?: boolean;
|
|
20
|
+
isDisabled?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Los tabs que estén marcados como fixed aparecerán al inicio del listado.
|
|
23
|
+
*/
|
|
24
|
+
isFixed?: boolean;
|
|
25
|
+
isFocused?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Si se marca como iconTab, se oculta el label y solamente se muestra el
|
|
28
|
+
* ícono.
|
|
29
|
+
*/
|
|
30
|
+
isIconTab?: boolean;
|
|
31
|
+
isLoading?: boolean;
|
|
32
|
+
isOpen?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Si un tab se marca como lazy, el iframe no se inicializará hasta que no
|
|
35
|
+
* sea abierta por primera vez.
|
|
36
|
+
*/
|
|
37
|
+
lazy?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Cuando se cierra un tab que tiene un método onBeforeClose, el mismo será
|
|
40
|
+
* llamado y deberá devolver un boolean o un string. Si devuelve true, se
|
|
41
|
+
* cierra. Si devuelve false, se muestra un cartel de confirmación genérico y
|
|
42
|
+
* si se devuelve un string, se muestra un cartel de confirmación con el
|
|
43
|
+
* string devuelto. En caso de que el usuario confirme el cuadro de diálogo,
|
|
44
|
+
* el tab será cerrado de todas formas. Es decir, no hay forma de evitar que
|
|
45
|
+
* el tab sea cerrado si el usuario decide continuar con la acción. Para
|
|
46
|
+
* evitar que un tab sea cerrado, debe pasarse isClosable=false
|
|
47
|
+
*/
|
|
48
|
+
onBeforeClose?: () => boolean | string | Promise<boolean | string>;
|
|
49
|
+
/**
|
|
50
|
+
* Este callback será llamado cada vez que el tab sea abierto
|
|
51
|
+
*/
|
|
52
|
+
onFocus?: (ev: TTab<AdditionalPropsType>) => unknown;
|
|
53
|
+
/**
|
|
54
|
+
* Es el texto que se va a mostrar en el tab
|
|
55
|
+
*/
|
|
56
|
+
label: string;
|
|
57
|
+
labelRenderer?: TTabRenderer;
|
|
58
|
+
/**
|
|
59
|
+
* Se pueden pasar propiedades adicionales que serán recibidas en cada
|
|
60
|
+
* evento, de forma de poder compartir piezas de información útiles en las
|
|
61
|
+
* distintas partes de la aplicación.
|
|
62
|
+
*/
|
|
63
|
+
tabAdditionalProps: AdditionalPropsType;
|
|
64
|
+
tabId: TId;
|
|
65
|
+
title?: string;
|
|
66
|
+
};
|
|
67
|
+
type TTabs<AdditionalPropsType extends Record<string, unknown> = Record<string, unknown>> = {
|
|
68
|
+
getHandler?: (handler: TabsController<AdditionalPropsType>) => unknown;
|
|
69
|
+
/**
|
|
70
|
+
* Este id se utiliza para asignar un prefijo a los ids de los distintos
|
|
71
|
+
* grupos de tabs, de forma que aún habiendo dos tabs con mismo id en
|
|
72
|
+
* distintos grupos, el id generado sea distinto.
|
|
73
|
+
*/
|
|
74
|
+
id: TId;
|
|
75
|
+
/**
|
|
76
|
+
* Permite abrir varias tabs al mismo tiempo
|
|
77
|
+
*/
|
|
78
|
+
isMultiple?: boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Este evento es llamado cada vez que un tab fue cerrado. En caso de que el
|
|
81
|
+
* callback onRequestClose haya sido provisto, el orden de llamado es:
|
|
82
|
+
* onRequestClose === true ? onCloseTab : doNothing
|
|
83
|
+
*/
|
|
84
|
+
onCloseTab?: (tab: TTab<AdditionalPropsType>) => unknown;
|
|
85
|
+
/**
|
|
86
|
+
* Este evento es llamado cada vez que un tab es abierto por acción del
|
|
87
|
+
* usuario, es decir, cuando se hace click en su label y éste es mostrado.
|
|
88
|
+
*/
|
|
89
|
+
onOpenTab?: (tab: TTab<AdditionalPropsType>) => unknown;
|
|
90
|
+
/**
|
|
91
|
+
* Este callback es llamado cada vez que se hace click en el botón cerrar. Se
|
|
92
|
+
* utiliza para permitir o denegar el cierre del tab, por lo que debe
|
|
93
|
+
* retornar un boolean o una promesa de booleano. Es útil por ejemplo para
|
|
94
|
+
* abrir un cuadro de diálogo de confirmación antes de continuar.
|
|
95
|
+
*/
|
|
96
|
+
onRequestClose?: (tab: TTab<AdditionalPropsType>) => boolean | Promise<boolean>;
|
|
97
|
+
orientation?: 'horizontal' | 'vertical';
|
|
98
|
+
/**
|
|
99
|
+
* Esta prop solo será tomada en cuenta al montar. Para agregar tabs luego,
|
|
100
|
+
* es necesario hacer uso de getHandler.
|
|
101
|
+
*/
|
|
102
|
+
initialTabs?: TTab<AdditionalPropsType>[];
|
|
103
|
+
};
|
|
104
|
+
type TTabRenderer<AdditionalPropsType extends Record<string, unknown> = Record<string, unknown>> = (props: {
|
|
105
|
+
tab: TTab<AdditionalPropsType>;
|
|
106
|
+
}) => React__default.ReactElement;
|
|
107
|
+
type TTabsListState = {
|
|
108
|
+
focusedTab: TId | null;
|
|
109
|
+
openTabs: TId[];
|
|
110
|
+
tabs: TId[];
|
|
111
|
+
timestamp: number;
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
export type { TTab, TTabRenderer, TTabs, TTabsListState };
|
|
115
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React__default from 'react';
|
|
2
|
+
import { shallowEqual } from 'react-redux';
|
|
3
|
+
import { useTabsContext } from './util.js';
|
|
4
|
+
import { usePropsSelector } from '@apia/util';
|
|
5
|
+
|
|
6
|
+
function useTabsList() {
|
|
7
|
+
const { handler } = useTabsContext();
|
|
8
|
+
const tabsIds = usePropsSelector("state", {
|
|
9
|
+
propsStore: handler.stateStore,
|
|
10
|
+
selector: (props) => props.tabs,
|
|
11
|
+
comparator: shallowEqual
|
|
12
|
+
});
|
|
13
|
+
const tabs = React__default.useMemo(() => {
|
|
14
|
+
return handler.getTabById !== void 0 && tabsIds ? tabsIds.map((current) => handler.getTabById(current)) : [];
|
|
15
|
+
}, [handler, tabsIds]);
|
|
16
|
+
return tabs;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { useTabsList as default };
|
|
20
|
+
//# sourceMappingURL=useTabsList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTabsList.js","sources":["../../src/tabs/useTabsList.ts"],"sourcesContent":["import React from 'react';\r\nimport { shallowEqual } from 'react-redux';\r\nimport { TTabsListState } from './types';\r\nimport { useTabsContext } from './util';\r\nimport { TId, usePropsSelector } from '@apia/util';\r\n\r\nexport default function useTabsList() {\r\n const { handler } = useTabsContext();\r\n\r\n const tabsIds = usePropsSelector<TId[], TTabsListState>('state', {\r\n propsStore: handler.stateStore,\r\n selector: (props) => props.tabs,\r\n comparator: shallowEqual,\r\n });\r\n\r\n const tabs = React.useMemo(() => {\r\n return handler.getTabById !== undefined && tabsIds\r\n ? tabsIds.map((current) => handler.getTabById(current))\r\n : [];\r\n }, [handler, tabsIds]);\r\n\r\n return tabs;\r\n}\r\n"],"names":["React"],"mappings":";;;;;AAMA,SAAwB,WAAc,GAAA;AACpC,EAAM,MAAA,EAAE,OAAQ,EAAA,GAAI,cAAe,EAAA,CAAA;AAEnC,EAAM,MAAA,OAAA,GAAU,iBAAwC,OAAS,EAAA;AAAA,IAC/D,YAAY,OAAQ,CAAA,UAAA;AAAA,IACpB,QAAA,EAAU,CAAC,KAAA,KAAU,KAAM,CAAA,IAAA;AAAA,IAC3B,UAAY,EAAA,YAAA;AAAA,GACb,CAAA,CAAA;AAED,EAAM,MAAA,IAAA,GAAOA,cAAM,CAAA,OAAA,CAAQ,MAAM;AAC/B,IAAA,OAAO,OAAQ,CAAA,UAAA,KAAe,KAAa,CAAA,IAAA,OAAA,GACvC,OAAQ,CAAA,GAAA,CAAI,CAAC,OAAA,KAAY,OAAQ,CAAA,UAAA,CAAW,OAAO,CAAC,IACpD,EAAC,CAAA;AAAA,GACJ,EAAA,CAAC,OAAS,EAAA,OAAO,CAAC,CAAA,CAAA;AAErB,EAAO,OAAA,IAAA,CAAA;AACT;;;;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React__default from 'react';
|
|
2
|
+
|
|
3
|
+
const TabsContext = React__default.createContext(
|
|
4
|
+
{}
|
|
5
|
+
);
|
|
6
|
+
function useTabsContext() {
|
|
7
|
+
return React__default.useContext(TabsContext);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { TabsContext, useTabsContext };
|
|
11
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sources":["../../src/tabs/util.ts"],"sourcesContent":["import React from 'react';\r\nimport { TTabsContext } from './types';\r\n\r\nexport const TabsContext = React.createContext<TTabsContext>(\r\n {} as TTabsContext,\r\n);\r\n\r\nexport function makeTabsContext<\r\n AdditionalPropsType extends Record<string, unknown> = Record<string, unknown>,\r\n>() {\r\n return React.createContext<TTabsContext<AdditionalPropsType>>(\r\n {} as TTabsContext<AdditionalPropsType>,\r\n );\r\n}\r\n\r\nexport function defaultOnRequestClose() {\r\n return new Promise((resolve) => {\r\n resolve(true);\r\n });\r\n}\r\n\r\nexport function useTabsContext() {\r\n return React.useContext(TabsContext);\r\n}\r\n"],"names":["React"],"mappings":";;AAGO,MAAM,cAAcA,cAAM,CAAA,aAAA;AAAA,EAC/B,EAAC;AACH,EAAA;AAgBO,SAAS,cAAiB,GAAA;AAC/B,EAAO,OAAAA,cAAA,CAAM,WAAW,WAAW,CAAA,CAAA;AACrC;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apia/components",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.11",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"author": "Alexis Leite <alexisleite@live.com>",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -13,12 +13,12 @@
|
|
|
13
13
|
"libWatch": "rollup --watch --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.tsx,WATCH:true"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@apia/dom-store": "^2.0.
|
|
17
|
-
"@apia/icons": "^2.0.
|
|
18
|
-
"@apia/notifications": "^2.0.
|
|
19
|
-
"@apia/store": "^2.0.
|
|
20
|
-
"@apia/theme": "^2.0.
|
|
21
|
-
"@apia/util": "^2.0.
|
|
16
|
+
"@apia/dom-store": "^2.0.11",
|
|
17
|
+
"@apia/icons": "^2.0.11",
|
|
18
|
+
"@apia/notifications": "^2.0.11",
|
|
19
|
+
"@apia/store": "^2.0.11",
|
|
20
|
+
"@apia/theme": "^2.0.11",
|
|
21
|
+
"@apia/util": "^2.0.11",
|
|
22
22
|
"@theme-ui/color": "0.16.2",
|
|
23
23
|
"@theme-ui/match-media": "0.16.2",
|
|
24
24
|
"react-animate-height": "^3.2.2",
|
|
@@ -47,5 +47,5 @@
|
|
|
47
47
|
"access": "public",
|
|
48
48
|
"registry": "https://registry.npmjs.org/"
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "2baba9f15d947ff574605579b8593604886f690f"
|
|
51
51
|
}
|