@apia/components 1.0.4 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +110 -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 +17 -0
- package/dist/components/Toolbar/index.d.ts.map +1 -0
- package/dist/components/Toolbar/index.js +26 -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 +40 -0
- package/dist/components/Toolbar/types.d.ts.map +1 -0
- package/dist/components/accordion/Accordion.d.ts +20 -0
- package/dist/components/accordion/Accordion.d.ts.map +1 -0
- package/dist/components/accordion/Accordion.js +60 -0
- package/dist/components/accordion/Accordion.js.map +1 -0
- package/dist/components/accordion/AccordionItem.d.ts +19 -0
- package/dist/components/accordion/AccordionItem.d.ts.map +1 -0
- package/dist/components/accordion/AccordionItem.js +22 -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 +77 -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 +79 -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 +118 -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 +160 -0
- package/dist/components/modals/Modal.d.ts.map +1 -0
- package/dist/components/modals/Modal.js +17 -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 +75 -0
- package/dist/components/modals/Overlay.js.map +1 -0
- package/dist/components/modals/StaticModal.js +175 -0
- package/dist/components/modals/StaticModal.js.map +1 -0
- package/dist/components/modals/WindowModal.js +214 -0
- package/dist/components/modals/WindowModal.js.map +1 -0
- package/dist/components/modals/hooks/useEscapeKey.js +32 -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 -1531
- package/dist/index.js +59 -7898
- 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 +76 -0
- package/dist/objects/ApiaUtil/index.js.map +1 -0
- package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.d.ts +24 -0
- package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.d.ts.map +1 -0
- package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.js +110 -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 +8 -0
- package/dist/objects/ApiaUtil/modals/OpenModal.d.ts.map +1 -0
- package/dist/objects/ApiaUtil/modals/OpenModal.js +19 -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 +29 -39
- package/LICENSE.md +0 -21
- package/README.md +0 -3
- package/cleanDist.json +0 -3
- package/entries.json +0 -1
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { jsxs, Fragment, jsx } from '@apia/theme/jsx-runtime';
|
|
2
|
+
import React__default from 'react';
|
|
3
|
+
import { useTabsContext } from '../util.js';
|
|
4
|
+
import { isIconName, Icon } from '@apia/icons';
|
|
5
|
+
import { getLabel } from '@apia/util';
|
|
6
|
+
import { IconButton } from '../../components/forms/buttons/IconButton.js';
|
|
7
|
+
import { SimpleButton } from '../../components/forms/buttons/SimpleButton.js';
|
|
8
|
+
|
|
9
|
+
function makeIcon(name) {
|
|
10
|
+
return function IconComponent() {
|
|
11
|
+
return /* @__PURE__ */ jsx(Icon, { title: "", name });
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
const DefaultTabsLabelRenderer = ({ tab }) => {
|
|
15
|
+
const { onCloseTab } = useTabsContext();
|
|
16
|
+
const ActualIcon = React__default.useMemo(() => {
|
|
17
|
+
if (tab.icon) {
|
|
18
|
+
if (isIconName(tab.icon)) {
|
|
19
|
+
return makeIcon(tab.icon);
|
|
20
|
+
}
|
|
21
|
+
return tab.icon;
|
|
22
|
+
}
|
|
23
|
+
return function C() {
|
|
24
|
+
return null;
|
|
25
|
+
};
|
|
26
|
+
}, [tab.icon]);
|
|
27
|
+
const handleClose = React__default.useCallback(
|
|
28
|
+
(ev) => {
|
|
29
|
+
ev.preventDefault();
|
|
30
|
+
ev.stopPropagation();
|
|
31
|
+
onCloseTab(tab);
|
|
32
|
+
},
|
|
33
|
+
[onCloseTab, tab]
|
|
34
|
+
);
|
|
35
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
36
|
+
tab.isIconTab ? /* @__PURE__ */ jsx(
|
|
37
|
+
IconButton,
|
|
38
|
+
{
|
|
39
|
+
className: "tabs__item__button",
|
|
40
|
+
as: "div",
|
|
41
|
+
icon: tab.icon,
|
|
42
|
+
variant: "null",
|
|
43
|
+
iconSize: "Sm",
|
|
44
|
+
size: "Lg"
|
|
45
|
+
}
|
|
46
|
+
) : /* @__PURE__ */ jsxs(SimpleButton, { className: "tabs__item__button", as: "div", variant: "null", children: [
|
|
47
|
+
/* @__PURE__ */ jsx(ActualIcon, {}),
|
|
48
|
+
tab.label
|
|
49
|
+
] }),
|
|
50
|
+
tab.isClosable && /* @__PURE__ */ jsx(
|
|
51
|
+
IconButton,
|
|
52
|
+
{
|
|
53
|
+
as: "div",
|
|
54
|
+
onMouseDown: (e) => {
|
|
55
|
+
e.stopPropagation();
|
|
56
|
+
e.preventDefault();
|
|
57
|
+
},
|
|
58
|
+
onClick: handleClose,
|
|
59
|
+
className: "tabs__item__close",
|
|
60
|
+
icon: "Close",
|
|
61
|
+
variant: "null",
|
|
62
|
+
title: getLabel("lblCloseSpecificTab", { text: { TOK1: tab.label } }).text,
|
|
63
|
+
size: "Lg",
|
|
64
|
+
iconSize: "Sm"
|
|
65
|
+
}
|
|
66
|
+
)
|
|
67
|
+
] });
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export { DefaultTabsLabelRenderer };
|
|
71
|
+
//# sourceMappingURL=DefaultTabsLabelRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultTabsLabelRenderer.js","sources":["../../../src/tabs/renderers/DefaultTabsLabelRenderer.tsx"],"sourcesContent":["import React, { MouseEvent } from 'react';\nimport { TTabRenderer } from '../types';\nimport { useTabsContext } from '../util';\nimport { Icon, TIconName, isIconName } from '@apia/icons';\nimport { IconButton, SimpleButton } from '../../components';\nimport { getLabel } from '@apia/util';\n\nfunction makeIcon(name: TIconName) {\n return function IconComponent() {\n return <Icon title=\"\" name={name} />;\n };\n}\n\nexport const DefaultTabsLabelRenderer: TTabRenderer = ({ tab }) => {\n const { onCloseTab } = useTabsContext();\n const ActualIcon = React.useMemo(() => {\n if (tab.icon) {\n if (isIconName(tab.icon)) {\n return makeIcon(tab.icon);\n }\n return tab.icon;\n }\n return function C() {\n return null;\n };\n }, [tab.icon]);\n\n const handleClose = React.useCallback(\n (ev: MouseEvent) => {\n ev.preventDefault();\n ev.stopPropagation();\n onCloseTab(tab);\n },\n [onCloseTab, tab],\n );\n\n return (\n <>\n {tab.isIconTab ? (\n <IconButton\n className=\"tabs__item__button\"\n as=\"div\"\n icon={tab.icon as TIconName}\n variant=\"null\"\n iconSize=\"Sm\"\n size=\"Lg\"\n />\n ) : (\n <SimpleButton className=\"tabs__item__button\" as=\"div\" variant=\"null\">\n <ActualIcon />\n {tab.label}\n </SimpleButton>\n )}\n\n {tab.isClosable && (\n <IconButton\n as=\"div\"\n onMouseDown={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n onClick={handleClose}\n className=\"tabs__item__close\"\n icon=\"Close\"\n variant=\"null\"\n title={\n getLabel('lblCloseSpecificTab', { text: { TOK1: tab.label } }).text\n }\n size=\"Lg\"\n iconSize=\"Sm\"\n />\n )}\n </>\n );\n};\n"],"names":["React"],"mappings":";;;;;;;;AAOA,SAAS,SAAS,IAAiB,EAAA;AACjC,EAAA,OAAO,SAAS,aAAgB,GAAA;AAC9B,IAAA,uBAAQ,GAAA,CAAA,IAAA,EAAA,EAAK,KAAM,EAAA,EAAA,EAAG,IAAY,EAAA,CAAA,CAAA;AAAA,GACpC,CAAA;AACF,CAAA;AAEO,MAAM,wBAAyC,GAAA,CAAC,EAAE,GAAA,EAAU,KAAA;AACjE,EAAM,MAAA,EAAE,UAAW,EAAA,GAAI,cAAe,EAAA,CAAA;AACtC,EAAM,MAAA,UAAA,GAAaA,cAAM,CAAA,OAAA,CAAQ,MAAM;AACrC,IAAA,IAAI,IAAI,IAAM,EAAA;AACZ,MAAI,IAAA,UAAA,CAAW,GAAI,CAAA,IAAI,CAAG,EAAA;AACxB,QAAO,OAAA,QAAA,CAAS,IAAI,IAAI,CAAA,CAAA;AAAA,OAC1B;AACA,MAAA,OAAO,GAAI,CAAA,IAAA,CAAA;AAAA,KACb;AACA,IAAA,OAAO,SAAS,CAAI,GAAA;AAClB,MAAO,OAAA,IAAA,CAAA;AAAA,KACT,CAAA;AAAA,GACC,EAAA,CAAC,GAAI,CAAA,IAAI,CAAC,CAAA,CAAA;AAEb,EAAA,MAAM,cAAcA,cAAM,CAAA,WAAA;AAAA,IACxB,CAAC,EAAmB,KAAA;AAClB,MAAA,EAAA,CAAG,cAAe,EAAA,CAAA;AAClB,MAAA,EAAA,CAAG,eAAgB,EAAA,CAAA;AACnB,MAAA,UAAA,CAAW,GAAG,CAAA,CAAA;AAAA,KAChB;AAAA,IACA,CAAC,YAAY,GAAG,CAAA;AAAA,GAClB,CAAA;AAEA,EAAA,uBAEK,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,IAAA,GAAA,CAAI,SACH,mBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,SAAU,EAAA,oBAAA;AAAA,QACV,EAAG,EAAA,KAAA;AAAA,QACH,MAAM,GAAI,CAAA,IAAA;AAAA,QACV,OAAQ,EAAA,MAAA;AAAA,QACR,QAAS,EAAA,IAAA;AAAA,QACT,IAAK,EAAA,IAAA;AAAA,OAAA;AAAA,KACP,wBAEC,YAAa,EAAA,EAAA,SAAA,EAAU,sBAAqB,EAAG,EAAA,KAAA,EAAM,SAAQ,MAC5D,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,UAAW,EAAA,EAAA,CAAA;AAAA,MACX,GAAI,CAAA,KAAA;AAAA,KACP,EAAA,CAAA;AAAA,IAGD,IAAI,UACH,oBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,EAAG,EAAA,KAAA;AAAA,QACH,WAAA,EAAa,CAAC,CAAM,KAAA;AAClB,UAAA,CAAA,CAAE,eAAgB,EAAA,CAAA;AAClB,UAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AAAA,SACnB;AAAA,QACA,OAAS,EAAA,WAAA;AAAA,QACT,SAAU,EAAA,mBAAA;AAAA,QACV,IAAK,EAAA,OAAA;AAAA,QACL,OAAQ,EAAA,MAAA;AAAA,QACR,KAAA,EACE,QAAS,CAAA,qBAAA,EAAuB,EAAE,IAAA,EAAM,EAAE,IAAA,EAAM,GAAI,CAAA,KAAA,EAAQ,EAAC,CAAE,CAAA,IAAA;AAAA,QAEjE,IAAK,EAAA,IAAA;AAAA,QACL,QAAS,EAAA,IAAA;AAAA,OAAA;AAAA,KACX;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React__default from 'react';
|
|
2
|
+
import { TTab, TTabsListState, TTabs } from './types.js';
|
|
3
|
+
import { PropsStore, TId } from '@apia/util';
|
|
4
|
+
|
|
5
|
+
declare class TabsController<AdditionalPropsType extends Record<string, unknown> = Record<string, unknown>, TabType extends TTab<AdditionalPropsType> = TTab<AdditionalPropsType>> {
|
|
6
|
+
#private;
|
|
7
|
+
private props;
|
|
8
|
+
propsStore: PropsStore<TTab<AdditionalPropsType>>;
|
|
9
|
+
stateKey: string;
|
|
10
|
+
get stateStore(): PropsStore<TTabsListState>;
|
|
11
|
+
get activeTabs(): TId[];
|
|
12
|
+
get tabsList(): TId[];
|
|
13
|
+
constructor(name: string, props: TTabs<AdditionalPropsType>, initialTabs?: TabType[]);
|
|
14
|
+
/**
|
|
15
|
+
* Obviamente agrega un tab al listado de tabs
|
|
16
|
+
*/
|
|
17
|
+
append(tab: Omit<TabType, 'tabAdditionalProps'> & Partial<Pick<TabType, 'tabAdditionalProps'>>): void;
|
|
18
|
+
closeAll(closeFixedTabsAsWell?: boolean, force?: boolean): Promise<void>;
|
|
19
|
+
closeToRight(targetId: TId): Promise<void>;
|
|
20
|
+
closeToLeft(targetId: TId): Promise<void>;
|
|
21
|
+
closeOthers(targetId: TId): Promise<void>;
|
|
22
|
+
closeTab(tabId: TId, force?: boolean): Promise<boolean>;
|
|
23
|
+
focusNextTab(): TId | null;
|
|
24
|
+
focusPreviousTab(): TId | null;
|
|
25
|
+
focusTab(tabId: TId): void;
|
|
26
|
+
getTabById(tabId: TId): TTab<AdditionalPropsType>;
|
|
27
|
+
getTabElement(tabId: TId): Element | null;
|
|
28
|
+
handleKeyDown(ev: React__default.KeyboardEvent): void;
|
|
29
|
+
openNextTab(): TId | null;
|
|
30
|
+
openPreviousTab(): TId | null;
|
|
31
|
+
get state(): TTabsListState;
|
|
32
|
+
/**
|
|
33
|
+
* Se utiliza para hacer que el tab aparezca visible en el listado
|
|
34
|
+
*
|
|
35
|
+
* @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.
|
|
36
|
+
*/
|
|
37
|
+
openTab(tabId: TId, justThis?: boolean): void;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export { TabsController as default };
|
|
41
|
+
//# sourceMappingURL=tabsController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabsController.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -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 ApiaUtil.instance.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 ApiaUtil.instance.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';\nimport uniqueId from 'lodash-es/uniqueId';\nimport React from 'react';\nimport { TTab, TTabs, TTabsListState } from './types';\nimport {\n PropsStore,\n TId,\n getLabel,\n getSpecificParent,\n isChild,\n} from '@apia/util';\nimport { ApiaUtil } from '../objects/ApiaUtil';\n\nexport default class TabsController<\n AdditionalPropsType extends Record<string, unknown> = Record<string, unknown>,\n TabType extends TTab<AdditionalPropsType> = TTab<AdditionalPropsType>,\n> {\n propsStore: PropsStore<TTab<AdditionalPropsType>>;\n\n stateKey = 'state';\n\n get stateStore() {\n return this.propsStore as unknown as PropsStore<TTabsListState>;\n }\n\n get activeTabs() {\n return clone(this.state.openTabs);\n }\n\n get tabsList() {\n return clone(this.state.tabs);\n }\n\n constructor(\n name: string,\n private props: TTabs<AdditionalPropsType>,\n initialTabs?: TabType[],\n ) {\n this.propsStore = new PropsStore<TTab<AdditionalPropsType>>({\n logCommands: { propsStore: `tabs_${name}` },\n });\n this.#setState({\n focusedTab: null,\n openTabs: [],\n tabs: initialTabs?.map((current) => current.id) ?? [],\n });\n if (initialTabs && initialTabs.length > 0) this.focusTab(initialTabs[0].id);\n }\n\n #innerAppend(tab: TabType) {\n this.#setState({ tabs: [...this.state.tabs, tab.id] });\n this.propsStore.updateField(tab.id, tab);\n if (tab.isOpen) {\n this.openTab(tab.id);\n this.focusTab(tab.id);\n }\n }\n\n /**\n * Obviamente agrega un tab al listado de tabs\n */\n append(\n tab: Omit<TabType, 'tabAdditionalProps'> &\n Partial<Pick<TabType, 'tabAdditionalProps'>>,\n ) {\n if (this.propsStore.getFieldProps(tab.id)) {\n void ApiaUtil.instance.dialogs\n .confirm({\n children: getLabel('msgTabIsOpen').text,\n title: getLabel('titMsgWarning').text,\n })\n .then((hasConfirmed) => {\n if (hasConfirmed)\n this.#innerAppend({\n ...tab,\n id: `${tab.id}_${uniqueId()}`,\n tabAdditionalProps: tab.tabAdditionalProps ?? {},\n } as TabType);\n });\n } else\n this.#innerAppend({\n ...tab,\n tabAdditionalProps: tab.tabAdditionalProps ?? {},\n } as TabType);\n }\n\n async closeAll(closeFixedTabsAsWell = false, force = false) {\n for (let i = this.tabsList.length - 1; i >= 0; i--) {\n const current = this.tabsList[i];\n if (\n !this.propsStore.getFieldProps(current).isFixed ||\n closeFixedTabsAsWell\n )\n await this.closeTab(current, force);\n }\n }\n\n async closeToRight(targetId: TId) {\n const targetIndex = this.tabsList.indexOf(targetId);\n for (let i = this.tabsList.length - 1; i > targetIndex; i--) {\n const current = this.tabsList[i];\n if (\n !this.propsStore.getFieldProps(current).isFixed &&\n current !== targetId\n )\n await this.closeTab(current);\n }\n }\n\n async closeToLeft(targetId: TId) {\n const targetIndex = this.tabsList.indexOf(targetId);\n if (targetIndex > -1) {\n for (let i = targetIndex - 1; i >= 0; i--) {\n const current = this.tabsList[i];\n if (!this.propsStore.getFieldProps(current).isFixed) {\n await this.closeTab(current);\n }\n }\n }\n }\n\n async closeOthers(targetId: TId) {\n for (let i = this.tabsList.length - 1; i >= 0; i--) {\n const current = this.tabsList[i];\n if (\n !this.propsStore.getFieldProps(current).isFixed &&\n current !== targetId\n )\n await this.closeTab(current);\n }\n }\n\n async closeTab(tabId: TId, force = false) {\n const tabProps = this.propsStore.getFieldProps(tabId);\n if (\n !tabProps.isClosable ||\n (!force &&\n this.props.onRequestClose &&\n !(await this.props.onRequestClose(tabProps)))\n )\n return false;\n\n const { onBeforeClose } = tabProps;\n if (onBeforeClose) {\n const canClose = await onBeforeClose();\n const message =\n canClose === false ? getLabel('msgPerDatIng').text : canClose;\n if (message !== true && !force) {\n const hasConfirmed = await ApiaUtil.instance.dialogs.confirm({\n children: message,\n title: getLabel('lbl_atention').text,\n });\n if (!hasConfirmed) return false;\n }\n }\n\n let newOpenTab: null | TId = null;\n if (this.state.openTabs.includes(tabId)) {\n const tabIndex = this.tabsList.findIndex((current) => current === tabId);\n newOpenTab =\n tabIndex > 0 ? this.tabsList[tabIndex - 1] : this.tabsList[1];\n }\n\n this.#setState({\n tabs: this.state.tabs.filter((current) => current !== tabId),\n });\n this.props.onCloseTab?.(tabProps);\n this.propsStore.removeField(tabId);\n\n if (newOpenTab) {\n this.openTab(newOpenTab);\n this.focusTab(newOpenTab);\n }\n\n return true;\n }\n\n focusNextTab() {\n const { tabs } = this.state;\n const focusedIndex = tabs.findIndex(\n (current) => current === this.state.focusedTab,\n );\n\n if (focusedIndex === tabs.length - 1 || focusedIndex === -1) return null;\n\n const newFocusIndex: number = focusedIndex + 1;\n this.focusTab(tabs[newFocusIndex]);\n\n return tabs[newFocusIndex];\n }\n\n focusPreviousTab() {\n const { tabs } = this.state;\n const focusedIndex = tabs.findIndex(\n (current) => current === this.state.focusedTab,\n );\n\n if (focusedIndex <= 0) return null;\n\n const newFocusIndex: number = focusedIndex - 1;\n this.focusTab(tabs[newFocusIndex]);\n\n return tabs[newFocusIndex];\n }\n\n focusTab(tabId: TId) {\n if (this.state.focusedTab)\n this.propsStore.updateField(this.state.focusedTab, { isFocused: false });\n this.#setState({ focusedTab: tabId });\n this.propsStore.updateField(tabId, { isFocused: true });\n const tabProps = this.propsStore.getFieldProps(tabId);\n tabProps?.onFocus?.(tabProps);\n }\n\n getTabById(tabId: TId) {\n return this.propsStore.getFieldProps(tabId);\n }\n\n getTabElement(tabId: TId) {\n return document.querySelector(`#tabpanel-${this.props.id}-${tabId}`);\n }\n\n handleKeyDown(ev: React.KeyboardEvent) {\n if (\n !isChild(\n ev.target as HTMLElement,\n (current) => current.id === `tabsList-${this.props.id}`,\n )\n )\n return;\n\n switch (ev.code) {\n case 'ArrowDown':\n case 'ArrowRight': {\n if (\n (this.props.orientation === 'horizontal' &&\n ev.code === 'ArrowDown') ||\n (this.props.orientation === 'vertical' && ev.code === 'ArrowRight')\n )\n return;\n\n this.focusNextTab();\n\n break;\n }\n case 'ArrowUp':\n case 'ArrowLeft': {\n if (\n (this.props.orientation === 'horizontal' && ev.code === 'ArrowUp') ||\n (this.props.orientation === 'vertical' && ev.code === 'ArrowLeft')\n )\n return;\n\n this.focusPreviousTab();\n\n break;\n }\n case 'Delete': {\n const tabId = getSpecificParent(\n ev.target as HTMLElement,\n (current) => !!current.getAttribute('data-id'),\n )?.getAttribute('data-id');\n\n if (tabId) {\n if (!this.propsStore.getFieldProps(tabId).isClosable) return;\n\n void this.closeTab(tabId);\n }\n break;\n }\n case 'Enter':\n case 'Space': {\n const tabId = getSpecificParent(\n ev.target as HTMLElement,\n (current) => !!current.getAttribute('data-id'),\n )?.getAttribute('data-id');\n\n if (tabId) {\n this.openTab(tabId);\n }\n\n break;\n }\n case 'End': {\n this.focusTab(this.state.tabs[this.state.tabs.length - 1]);\n break;\n }\n case 'Home': {\n this.focusTab(this.state.tabs[0]);\n break;\n }\n default: {\n break;\n }\n }\n }\n\n openNextTab() {\n const { tabs } = this.state;\n const openIndex = tabs.findIndex(\n (current) => current === this.state.openTabs[0],\n );\n\n if (openIndex >= this.tabsList.length) return null;\n\n const newOpenIndex: number = openIndex + 1;\n this.openTab(tabs[newOpenIndex]);\n\n return tabs[newOpenIndex];\n }\n\n openPreviousTab() {\n const { tabs } = this.state;\n const openIndex = tabs.findIndex(\n (current) => current === this.state.openTabs[0],\n );\n\n if (openIndex <= 0) return null;\n\n const newOpenIndex: number = openIndex - 1;\n this.openTab(tabs[newOpenIndex]);\n\n return tabs[newOpenIndex];\n }\n\n get state() {\n return this.propsStore.getFieldProps<TTabsListState>(this.stateKey);\n }\n\n #setState(state: Partial<TTabsListState>) {\n this.propsStore.updateField<TTabsListState>(this.stateKey, state);\n }\n\n /**\n * Se utiliza para hacer que el tab aparezca visible en el listado\n *\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.\n */\n openTab(tabId: TId, justThis = true) {\n const tabProps = this.propsStore.getFieldProps(tabId);\n if (!tabProps) {\n console.warn(`There is no tab with such id: ${tabId}`);\n } else {\n window.dispatchEvent(\n new CustomEvent('tabOpen', {\n detail: { tabId, justThis },\n }),\n );\n\n if (justThis) {\n window.requestAnimationFrame(() => {\n window.scrollTo(0, 0);\n });\n this.state.openTabs.forEach((current) =>\n this.propsStore.updateField(current, { isOpen: false }),\n );\n }\n this.propsStore.updateField(tabId, { isOpen: true });\n this.#setState({\n openTabs: justThis ? [tabId] : [...this.state.openTabs, tabId],\n });\n this.focusTab(tabId);\n this.props.onOpenTab?.(tabProps);\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -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';\nimport { shallowEqual } from 'react-redux';\nimport { TTabsListState } from './types';\nimport { useTabsContext } from './util';\nimport { TId, usePropsSelector } from '@apia/util';\n\nexport default function useTabsList() {\n const { handler } = useTabsContext();\n\n const tabsIds = usePropsSelector<TId[], TTabsListState>('state', {\n propsStore: handler.stateStore,\n selector: (props) => props.tabs,\n comparator: shallowEqual,\n });\n\n const tabs = React.useMemo(() => {\n return handler.getTabById !== undefined && tabsIds\n ? tabsIds.map((current) => handler.getTabById(current))\n : [];\n }, [handler, tabsIds]);\n\n return tabs;\n}\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';\nimport { TTabsContext } from './types';\n\nexport const TabsContext = React.createContext<TTabsContext>(\n {} as TTabsContext,\n);\n\nexport function makeTabsContext<\n AdditionalPropsType extends Record<string, unknown> = Record<string, unknown>,\n>() {\n return React.createContext<TTabsContext<AdditionalPropsType>>(\n {} as TTabsContext<AdditionalPropsType>,\n );\n}\n\nexport function defaultOnRequestClose() {\n return new Promise((resolve) => {\n resolve(true);\n });\n}\n\nexport function useTabsContext() {\n return React.useContext(TabsContext);\n}\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;;;;"}
|