intelicoreact 2.0.18 → 2.0.20
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/es/Atomic/FormElements/ActionAlert/ActionAlert.js +44 -0
- package/dist/es/Atomic/FormElements/ActionAlert/ActionAlert.js.map +1 -0
- package/dist/es/Atomic/FormElements/ActionAlert/ActionAlert.styles.css +39 -0
- package/dist/es/Atomic/FormElements/ActionAlert/index.js +7 -0
- package/dist/es/Atomic/FormElements/ActionAlert/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/AdvancedStatus/AdvancedStatus.js +35 -0
- package/dist/es/Atomic/FormElements/AdvancedStatus/AdvancedStatus.js.map +1 -0
- package/dist/es/Atomic/FormElements/AdvancedStatus/AdvancedStatus.styles.css +84 -0
- package/dist/es/Atomic/FormElements/AdvancedStatus/index.js +7 -0
- package/dist/es/Atomic/FormElements/AdvancedStatus/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/Calendar/Calendar.js +154 -0
- package/dist/es/Atomic/FormElements/Calendar/Calendar.js.map +1 -0
- package/dist/es/Atomic/FormElements/Calendar/Calendar.styles.css +142 -0
- package/dist/es/Atomic/FormElements/CheckboxInput/CheckboxInput.js +45 -0
- package/dist/es/Atomic/FormElements/CheckboxInput/CheckboxInput.js.map +1 -0
- package/dist/es/Atomic/FormElements/CheckboxInput/CheckboxInput.styles.css +105 -0
- package/dist/es/Atomic/FormElements/CheckboxInput/index.js +7 -0
- package/dist/es/Atomic/FormElements/CheckboxInput/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/CheckboxesLine/CheckboxesLine.js +32 -0
- package/dist/es/Atomic/FormElements/CheckboxesLine/CheckboxesLine.js.map +1 -0
- package/dist/es/Atomic/FormElements/CheckboxesLine/CheckboxesLine.styles.css +26 -0
- package/dist/es/Atomic/FormElements/CheckboxesLine/index.js +7 -0
- package/dist/es/Atomic/FormElements/CheckboxesLine/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/Datepicker/Datepicker.js +307 -0
- package/dist/es/Atomic/FormElements/Datepicker/Datepicker.js.map +1 -0
- package/dist/es/Atomic/FormElements/Datepicker/Datepicker.styles.css +0 -0
- package/dist/es/Atomic/FormElements/Datepicker/components/DatepickerCalendar.js +95 -0
- package/dist/es/Atomic/FormElements/Datepicker/components/DatepickerCalendar.js.map +1 -0
- package/dist/es/Atomic/FormElements/Dropdown/Dropdown.js +472 -0
- package/dist/es/Atomic/FormElements/Dropdown/Dropdown.js.map +1 -0
- package/dist/es/Atomic/FormElements/Dropdown/Dropdown.styles.css +529 -0
- package/dist/es/Atomic/FormElements/Dropdown/_utils.js +68 -0
- package/dist/es/Atomic/FormElements/Dropdown/_utils.js.map +1 -0
- package/dist/es/Atomic/FormElements/Dropdown/components/DropdownLoader.js +23 -0
- package/dist/es/Atomic/FormElements/Dropdown/components/DropdownLoader.js.map +1 -0
- package/dist/es/Atomic/FormElements/Dropdown/components/DropdownLoader.styles.css +61 -0
- package/dist/es/Atomic/FormElements/Dropdown/index.js +7 -0
- package/dist/es/Atomic/FormElements/Dropdown/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/Dropdown/useDropdown.js +118 -0
- package/dist/es/Atomic/FormElements/Dropdown/useDropdown.js.map +1 -0
- package/dist/es/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.js +373 -0
- package/dist/es/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.js.map +1 -0
- package/dist/es/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.styles.css +411 -0
- package/dist/es/Atomic/FormElements/FileLoader/FileLoader.js +55 -0
- package/dist/es/Atomic/FormElements/FileLoader/FileLoader.js.map +1 -0
- package/dist/es/Atomic/FormElements/FileLoader/FileLoader.styles.css +127 -0
- package/dist/es/Atomic/FormElements/FileLoader/partial/LoadZone.js +86 -0
- package/dist/es/Atomic/FormElements/FileLoader/partial/LoadZone.js.map +1 -0
- package/dist/es/Atomic/FormElements/FileLoader/partial/LoadedContent.js +52 -0
- package/dist/es/Atomic/FormElements/FileLoader/partial/LoadedContent.js.map +1 -0
- package/dist/es/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.js +174 -0
- package/dist/es/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.js.map +1 -0
- package/dist/es/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.styles.css +88 -0
- package/dist/es/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.js +137 -0
- package/dist/es/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.js.map +1 -0
- package/dist/es/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.styles.css +101 -0
- package/dist/es/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.js +150 -0
- package/dist/es/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.js.map +1 -0
- package/dist/es/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.styles.css +14 -0
- package/dist/es/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.js +75 -0
- package/dist/es/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.js.map +1 -0
- package/dist/es/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.styles.css +54 -0
- package/dist/es/Atomic/FormElements/FormattedRawSSN/index.js +7 -0
- package/dist/es/Atomic/FormElements/FormattedRawSSN/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/Input/Input.js +119 -0
- package/dist/es/Atomic/FormElements/Input/Input.js.map +1 -0
- package/dist/es/Atomic/FormElements/Input/Input.styles.css +125 -0
- package/dist/es/Atomic/FormElements/Input/hooks/useErrorBlink.js +57 -0
- package/dist/es/Atomic/FormElements/Input/hooks/useErrorBlink.js.map +1 -0
- package/dist/es/Atomic/FormElements/Input/hooks/useInputFocus.js +34 -0
- package/dist/es/Atomic/FormElements/Input/hooks/useInputFocus.js.map +1 -0
- package/dist/es/Atomic/FormElements/Input/hooks/useInputHover.js +16 -0
- package/dist/es/Atomic/FormElements/Input/hooks/useInputHover.js.map +1 -0
- package/dist/es/Atomic/FormElements/Input/hooks/useInputValueProcessing.js +126 -0
- package/dist/es/Atomic/FormElements/Input/hooks/useInputValueProcessing.js.map +1 -0
- package/dist/es/Atomic/FormElements/Input/hooks/useKeyboardHandling.js +32 -0
- package/dist/es/Atomic/FormElements/Input/hooks/useKeyboardHandling.js.map +1 -0
- package/dist/es/Atomic/FormElements/Input/index.js +7 -0
- package/dist/es/Atomic/FormElements/Input/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/InputCalendar/InputCalendar.js +89 -0
- package/dist/es/Atomic/FormElements/InputCalendar/InputCalendar.js.map +1 -0
- package/dist/es/Atomic/FormElements/InputCalendar/InputCalendar.styles.css +20 -0
- package/dist/es/Atomic/FormElements/InputColor/InputColor.js +52 -0
- package/dist/es/Atomic/FormElements/InputColor/InputColor.js.map +1 -0
- package/dist/es/Atomic/FormElements/InputColor/InputColor.styles.css +17 -0
- package/dist/es/Atomic/FormElements/InputColor/index.js +7 -0
- package/dist/es/Atomic/FormElements/InputColor/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/InputCurrency/InputCurrency.js +133 -0
- package/dist/es/Atomic/FormElements/InputCurrency/InputCurrency.js.map +1 -0
- package/dist/es/Atomic/FormElements/InputCurrency/InputCurrency.styles.css +13 -0
- package/dist/es/Atomic/FormElements/InputDateRange/InputDateRange.js +215 -0
- package/dist/es/Atomic/FormElements/InputDateRange/InputDateRange.js.map +1 -0
- package/dist/es/Atomic/FormElements/InputDateRange/InputDateRange.styles.css +594 -0
- package/dist/es/Atomic/FormElements/InputDateRange/components/DateInput.js +45 -0
- package/dist/es/Atomic/FormElements/InputDateRange/components/DateInput.js.map +1 -0
- package/dist/es/Atomic/FormElements/InputDateRange/components/Datepicker.js +422 -0
- package/dist/es/Atomic/FormElements/InputDateRange/components/Datepicker.js.map +1 -0
- package/dist/es/Atomic/FormElements/InputDateRange/components/OpenedPart.js +171 -0
- package/dist/es/Atomic/FormElements/InputDateRange/components/OpenedPart.js.map +1 -0
- package/dist/es/Atomic/FormElements/InputDateRange/components/SelectItem.js +22 -0
- package/dist/es/Atomic/FormElements/InputDateRange/components/SelectItem.js.map +1 -0
- package/dist/es/Atomic/FormElements/InputDateRange/dependencies.js +166 -0
- package/dist/es/Atomic/FormElements/InputDateRange/dependencies.js.map +1 -0
- package/dist/es/Atomic/FormElements/InputLink/InputLink.js +64 -0
- package/dist/es/Atomic/FormElements/InputLink/InputLink.js.map +1 -0
- package/dist/es/Atomic/FormElements/InputLink/InputLink.styles.css +46 -0
- package/dist/es/Atomic/FormElements/InputLink/index.js +7 -0
- package/dist/es/Atomic/FormElements/InputLink/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/InputMask/InputMask.js +7 -0
- package/dist/es/Atomic/FormElements/InputMask/InputMask.js.map +1 -0
- package/dist/es/Atomic/FormElements/InputMask3/InputMask3.js +486 -0
- package/dist/es/Atomic/FormElements/InputMask3/InputMask3.js.map +1 -0
- package/dist/es/Atomic/FormElements/InputMask3/InputMask3.styles.css +133 -0
- package/dist/es/Atomic/FormElements/InputMask3/config.js +18 -0
- package/dist/es/Atomic/FormElements/InputMask3/config.js.map +1 -0
- package/dist/es/Atomic/FormElements/InputMask3/functions.js +43 -0
- package/dist/es/Atomic/FormElements/InputMask3/functions.js.map +1 -0
- package/dist/es/Atomic/FormElements/InputWithAction/InputWithAction.js +74 -0
- package/dist/es/Atomic/FormElements/InputWithAction/InputWithAction.js.map +1 -0
- package/dist/es/Atomic/FormElements/InputWithAction/InputWithAction.styles.css +88 -0
- package/dist/es/Atomic/FormElements/InputWithAction/index.js +7 -0
- package/dist/es/Atomic/FormElements/InputWithAction/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/InputsRow/InputsRow.js +118 -0
- package/dist/es/Atomic/FormElements/InputsRow/InputsRow.js.map +1 -0
- package/dist/es/Atomic/FormElements/InputsRow/InputsRow.styles.css +32 -0
- package/dist/es/Atomic/FormElements/InputsRow/index.js +7 -0
- package/dist/es/Atomic/FormElements/InputsRow/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/Label/Label.js +73 -0
- package/dist/es/Atomic/FormElements/Label/Label.js.map +1 -0
- package/dist/es/Atomic/FormElements/Label/Label.styles.css +30 -0
- package/dist/es/Atomic/FormElements/Label/index.js +7 -0
- package/dist/es/Atomic/FormElements/Label/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/MobileCalendar/MobileCalendar.js +339 -0
- package/dist/es/Atomic/FormElements/MobileCalendar/MobileCalendar.js.map +1 -0
- package/dist/es/Atomic/FormElements/MobileCalendar/MobileCalendar.styles.css +74 -0
- package/dist/es/Atomic/FormElements/MultiSelect/MultiSelect.js +40 -0
- package/dist/es/Atomic/FormElements/MultiSelect/MultiSelect.js.map +1 -0
- package/dist/es/Atomic/FormElements/MultiSelect/MultiSelect.styles.css +14 -0
- package/dist/es/Atomic/FormElements/NumericInput/NumericInput.js +204 -0
- package/dist/es/Atomic/FormElements/NumericInput/NumericInput.js.map +1 -0
- package/dist/es/Atomic/FormElements/NumericInput/NumericInput.styles.css +129 -0
- package/dist/es/Atomic/FormElements/RadioGroup/RadioGroup.js +44 -0
- package/dist/es/Atomic/FormElements/RadioGroup/RadioGroup.js.map +1 -0
- package/dist/es/Atomic/FormElements/RadioGroup/RadioGroup.styles.css +20 -0
- package/dist/es/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.js +57 -0
- package/dist/es/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.js.map +1 -0
- package/dist/es/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.styles.css +23 -0
- package/dist/es/Atomic/FormElements/RadioInput/RadioInput.js +35 -0
- package/dist/es/Atomic/FormElements/RadioInput/RadioInput.js.map +1 -0
- package/dist/es/Atomic/FormElements/RadioInput/RadioInput.styles.css +70 -0
- package/dist/es/Atomic/FormElements/RadioInput/index.js +7 -0
- package/dist/es/Atomic/FormElements/RadioInput/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.js +42 -0
- package/dist/es/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.js.map +1 -0
- package/dist/es/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.styles.css +123 -0
- package/dist/es/Atomic/FormElements/RangeCalendar/RangeCalendar.js +98 -0
- package/dist/es/Atomic/FormElements/RangeCalendar/RangeCalendar.js.map +1 -0
- package/dist/es/Atomic/FormElements/RangeCalendar/RangeCalendar.styles.css +103 -0
- package/dist/es/Atomic/FormElements/RangeInputs/RangeInputs.js +128 -0
- package/dist/es/Atomic/FormElements/RangeInputs/RangeInputs.js.map +1 -0
- package/dist/es/Atomic/FormElements/RangeInputs/RangeInputs.styles.css +50 -0
- package/dist/es/Atomic/FormElements/RangeInputs/index.js +7 -0
- package/dist/es/Atomic/FormElements/RangeInputs/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/RangeList/RangeList.js +147 -0
- package/dist/es/Atomic/FormElements/RangeList/RangeList.js.map +1 -0
- package/dist/es/Atomic/FormElements/RangeList/RangeList.styles.css +143 -0
- package/dist/es/Atomic/FormElements/RangeList/index.js +7 -0
- package/dist/es/Atomic/FormElements/RangeList/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/RangeList/partial/RangeListRow.js +40 -0
- package/dist/es/Atomic/FormElements/RangeList/partial/RangeListRow.js.map +1 -0
- package/dist/es/Atomic/FormElements/RangeSlider/RangeSlider.js +342 -0
- package/dist/es/Atomic/FormElements/RangeSlider/RangeSlider.js.map +1 -0
- package/dist/es/Atomic/FormElements/RangeSlider/RangeSlider.styles.css +134 -0
- package/dist/es/Atomic/FormElements/RangeSlider2/RangeSlider2.interface.js +23 -0
- package/dist/es/Atomic/FormElements/RangeSlider2/RangeSlider2.interface.js.map +1 -0
- package/dist/es/Atomic/FormElements/RangeSlider2/RangeSlider2.js +590 -0
- package/dist/es/Atomic/FormElements/RangeSlider2/RangeSlider2.js.map +1 -0
- package/dist/es/Atomic/FormElements/RangeSlider2/RangeSlider2.styles.css +360 -0
- package/dist/es/Atomic/FormElements/SwitchableRow/SwitchableRow.js +29 -0
- package/dist/es/Atomic/FormElements/SwitchableRow/SwitchableRow.js.map +1 -0
- package/dist/es/Atomic/FormElements/SwitchableRow/SwitchableRow.styles.css +14 -0
- package/dist/es/Atomic/FormElements/Switcher/Switcher.js +36 -0
- package/dist/es/Atomic/FormElements/Switcher/Switcher.js.map +1 -0
- package/dist/es/Atomic/FormElements/Switcher/Switcher.styles.css +83 -0
- package/dist/es/Atomic/FormElements/Switcher/index.js +7 -0
- package/dist/es/Atomic/FormElements/Switcher/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.js +36 -0
- package/dist/es/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.js.map +1 -0
- package/dist/es/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.styles.css +21 -0
- package/dist/es/Atomic/FormElements/SwitcherHide/SwitcherHide.js +31 -0
- package/dist/es/Atomic/FormElements/SwitcherHide/SwitcherHide.js.map +1 -0
- package/dist/es/Atomic/FormElements/SwitcherHide/index.js +7 -0
- package/dist/es/Atomic/FormElements/SwitcherHide/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/SwitcherRadio/SwitcherRadio.js +43 -0
- package/dist/es/Atomic/FormElements/SwitcherRadio/SwitcherRadio.js.map +1 -0
- package/dist/es/Atomic/FormElements/SwitcherRadio/SwitcherRadio.styles.css +22 -0
- package/dist/es/Atomic/FormElements/SwitcherRadio/index.js +7 -0
- package/dist/es/Atomic/FormElements/SwitcherRadio/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/SwitcherRange/SwitcherRange.js +33 -0
- package/dist/es/Atomic/FormElements/SwitcherRange/SwitcherRange.js.map +1 -0
- package/dist/es/Atomic/FormElements/SwitcherRange/index.js +7 -0
- package/dist/es/Atomic/FormElements/SwitcherRange/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.js +56 -0
- package/dist/es/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.js.map +1 -0
- package/dist/es/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.js +99 -0
- package/dist/es/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.js.map +1 -0
- package/dist/es/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.styles.css +55 -0
- package/dist/es/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.js +49 -0
- package/dist/es/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.js.map +1 -0
- package/dist/es/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.styles.css +38 -0
- package/dist/es/Atomic/FormElements/TagListToDropdown/TagListToDropdown.js +82 -0
- package/dist/es/Atomic/FormElements/TagListToDropdown/TagListToDropdown.js.map +1 -0
- package/dist/es/Atomic/FormElements/TagsDropdown/TagsDropdown.js +800 -0
- package/dist/es/Atomic/FormElements/TagsDropdown/TagsDropdown.js.map +1 -0
- package/dist/es/Atomic/FormElements/TagsDropdown/TagsDropdown.styles.css +707 -0
- package/dist/es/Atomic/FormElements/Text/Text.js +67 -0
- package/dist/es/Atomic/FormElements/Text/Text.js.map +1 -0
- package/dist/es/Atomic/FormElements/Text/Text.styles.css +12 -0
- package/dist/es/Atomic/FormElements/Text/index.js +7 -0
- package/dist/es/Atomic/FormElements/Text/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/TextSwitcher/TextSwitcher.js +35 -0
- package/dist/es/Atomic/FormElements/TextSwitcher/TextSwitcher.js.map +1 -0
- package/dist/es/Atomic/FormElements/TextSwitcher/TextSwitcher.styles.css +84 -0
- package/dist/es/Atomic/FormElements/Textarea/Textarea.js +73 -0
- package/dist/es/Atomic/FormElements/Textarea/Textarea.js.map +1 -0
- package/dist/es/Atomic/FormElements/Textarea/Textarea.styles.css +102 -0
- package/dist/es/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js +124 -0
- package/dist/es/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js.map +1 -0
- package/dist/es/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.styles.css +46 -0
- package/dist/es/Atomic/FormElements/TieredCheckboxes/index.js +7 -0
- package/dist/es/Atomic/FormElements/TieredCheckboxes/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.js +36 -0
- package/dist/es/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.js.map +1 -0
- package/dist/es/Atomic/FormElements/TimeRange/TimeRange.js +55 -0
- package/dist/es/Atomic/FormElements/TimeRange/TimeRange.js.map +1 -0
- package/dist/es/Atomic/FormElements/TimeRange/TimeRange.styles.css +18 -0
- package/dist/es/Atomic/FormElements/TimeRange/index.js +7 -0
- package/dist/es/Atomic/FormElements/TimeRange/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/UserContacts/UserContacts.js +115 -0
- package/dist/es/Atomic/FormElements/UserContacts/UserContacts.js.map +1 -0
- package/dist/es/Atomic/FormElements/UserContacts/UserContacts.styles.css +15 -0
- package/dist/es/Atomic/FormElements/UserContacts/index.js +7 -0
- package/dist/es/Atomic/FormElements/UserContacts/index.js.map +1 -0
- package/dist/es/Atomic/FormElements/VariantsListRadio/VariantsListRadio.js +52 -0
- package/dist/es/Atomic/FormElements/VariantsListRadio/VariantsListRadio.js.map +1 -0
- package/dist/es/Atomic/FormElements/VariantsListRadio/VariantsListRadio.styles.css +213 -0
- package/dist/es/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.js +61 -0
- package/dist/es/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.js.map +1 -0
- package/dist/es/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.js +62 -0
- package/dist/es/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.js.map +1 -0
- package/dist/es/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.styles.css +70 -0
- package/dist/es/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.js +82 -0
- package/dist/es/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.js.map +1 -0
- package/dist/es/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.styles.css +70 -0
- package/dist/es/Atomic/Layout/Header/Header.js +87 -0
- package/dist/es/Atomic/Layout/Header/Header.js.map +1 -0
- package/dist/es/Atomic/Layout/Header/Header.styles.css +82 -0
- package/dist/es/Atomic/Layout/MainMenu/MainMenu.js +134 -0
- package/dist/es/Atomic/Layout/MainMenu/MainMenu.js.map +1 -0
- package/dist/es/Atomic/Layout/MainMenu/MainMenu.styles.css +205 -0
- package/dist/es/Atomic/Layout/Spinner/Spinner.js +32 -0
- package/dist/es/Atomic/Layout/Spinner/Spinner.js.map +1 -0
- package/dist/es/Atomic/Layout/Spinner/Spinner.styles.css +82 -0
- package/dist/es/Atomic/Layout/Spinner/index.js +7 -0
- package/dist/es/Atomic/Layout/Spinner/index.js.map +1 -0
- package/dist/es/Atomic/UI/Accordion/Accordion.js +48 -0
- package/dist/es/Atomic/UI/Accordion/Accordion.js.map +1 -0
- package/dist/es/Atomic/UI/Accordion/Accordion.styles.css +133 -0
- package/dist/es/Atomic/UI/Accordion/AccordionItem.js +110 -0
- package/dist/es/Atomic/UI/Accordion/AccordionItem.js.map +1 -0
- package/dist/es/Atomic/UI/Accordion/index.js +7 -0
- package/dist/es/Atomic/UI/Accordion/index.js.map +1 -0
- package/dist/es/Atomic/UI/AccordionTable/AccordionTable.js +167 -0
- package/dist/es/Atomic/UI/AccordionTable/AccordionTable.js.map +1 -0
- package/dist/es/Atomic/UI/AccordionTable/AccordionTable.styles.css +228 -0
- package/dist/es/Atomic/UI/AccordionText/AccordionText.js +47 -0
- package/dist/es/Atomic/UI/AccordionText/AccordionText.js.map +1 -0
- package/dist/es/Atomic/UI/AccordionText/AccordionText.styles.css +48 -0
- package/dist/es/Atomic/UI/AdvancedTag/AdvTag.js +148 -0
- package/dist/es/Atomic/UI/AdvancedTag/AdvTag.js.map +1 -0
- package/dist/es/Atomic/UI/AdvancedTag/AdvancedTags.js +40 -0
- package/dist/es/Atomic/UI/AdvancedTag/AdvancedTags.js.map +1 -0
- package/dist/es/Atomic/UI/AdvancedTag/AdvancedTags.styles.css +106 -0
- package/dist/es/Atomic/UI/AdvancedTag/index.js +8 -0
- package/dist/es/Atomic/UI/AdvancedTag/index.js.map +1 -0
- package/dist/es/Atomic/UI/Alert/Alert.js +54 -0
- package/dist/es/Atomic/UI/Alert/Alert.js.map +1 -0
- package/dist/es/Atomic/UI/Alert/Alert.styles.css +65 -0
- package/dist/es/Atomic/UI/Alert/index.js +7 -0
- package/dist/es/Atomic/UI/Alert/index.js.map +1 -0
- package/dist/es/Atomic/UI/Arrow/Arrow.js +107 -0
- package/dist/es/Atomic/UI/Arrow/Arrow.js.map +1 -0
- package/dist/es/Atomic/UI/Arrow/Arrow.styles.css +14 -0
- package/dist/es/Atomic/UI/Box/Box.js +33 -0
- package/dist/es/Atomic/UI/Box/Box.js.map +1 -0
- package/dist/es/Atomic/UI/Box/Box.styles.css +62 -0
- package/dist/es/Atomic/UI/Button/Button.js +35 -0
- package/dist/es/Atomic/UI/Button/Button.js.map +1 -0
- package/dist/es/Atomic/UI/Button/Button.styles.css +124 -0
- package/dist/es/Atomic/UI/ButtonsBar/ButtonsBar.js +49 -0
- package/dist/es/Atomic/UI/ButtonsBar/ButtonsBar.js.map +1 -0
- package/dist/es/Atomic/UI/ButtonsBar/ButtonsBar.styles.css +7 -0
- package/dist/es/Atomic/UI/ButtonsBar/index.js +7 -0
- package/dist/es/Atomic/UI/ButtonsBar/index.js.map +1 -0
- package/dist/es/Atomic/UI/Chart/Chart.js +96 -0
- package/dist/es/Atomic/UI/Chart/Chart.js.map +1 -0
- package/dist/es/Atomic/UI/Chart/Chart.styles.css +45 -0
- package/dist/es/Atomic/UI/Chart/index.js +7 -0
- package/dist/es/Atomic/UI/Chart/index.js.map +1 -0
- package/dist/es/Atomic/UI/Chart/partial/Chart.constants.js +89 -0
- package/dist/es/Atomic/UI/Chart/partial/Chart.constants.js.map +1 -0
- package/dist/es/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.js +80 -0
- package/dist/es/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.js.map +1 -0
- package/dist/es/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.styles.css +16 -0
- package/dist/es/Atomic/UI/Chart/partial/datasetSetters.js +78 -0
- package/dist/es/Atomic/UI/Chart/partial/datasetSetters.js.map +1 -0
- package/dist/es/Atomic/UI/Chart/partial/optionsConstructor.js +259 -0
- package/dist/es/Atomic/UI/Chart/partial/optionsConstructor.js.map +1 -0
- package/dist/es/Atomic/UI/Chart/partial/optionsSetters.js +35 -0
- package/dist/es/Atomic/UI/Chart/partial/optionsSetters.js.map +1 -0
- package/dist/es/Atomic/UI/Chart/partial/utils.js +37 -0
- package/dist/es/Atomic/UI/Chart/partial/utils.js.map +1 -0
- package/dist/es/Atomic/UI/CircleProgressBar/CircleProgressBar.js +85 -0
- package/dist/es/Atomic/UI/CircleProgressBar/CircleProgressBar.js.map +1 -0
- package/dist/es/Atomic/UI/CircleProgressBar/CircleProgressBar.styles.css +31 -0
- package/dist/es/Atomic/UI/DateTime/DateTime.js +45 -0
- package/dist/es/Atomic/UI/DateTime/DateTime.js.map +1 -0
- package/dist/es/Atomic/UI/DateTime/DateTime.styles.css +33 -0
- package/dist/es/Atomic/UI/DebugContainer/DebugContainer.js +45 -0
- package/dist/es/Atomic/UI/DebugContainer/DebugContainer.js.map +1 -0
- package/dist/es/Atomic/UI/DebugContainer/DebugContainer.styles.css +32 -0
- package/dist/es/Atomic/UI/DebugContainer/useDebugContainer.js +16 -0
- package/dist/es/Atomic/UI/DebugContainer/useDebugContainer.js.map +1 -0
- package/dist/es/Atomic/UI/DoubleString/DoubleString.js +77 -0
- package/dist/es/Atomic/UI/DoubleString/DoubleString.js.map +1 -0
- package/dist/es/Atomic/UI/DoubleString/DoubleString.styles.css +42 -0
- package/dist/es/Atomic/UI/DoubleString/index.js +7 -0
- package/dist/es/Atomic/UI/DoubleString/index.js.map +1 -0
- package/dist/es/Atomic/UI/Hint/Hint.js +216 -0
- package/dist/es/Atomic/UI/Hint/Hint.js.map +1 -0
- package/dist/es/Atomic/UI/Hint/Hint.styles.css +107 -0
- package/dist/es/Atomic/UI/Hint/index.js +7 -0
- package/dist/es/Atomic/UI/Hint/index.js.map +1 -0
- package/dist/es/Atomic/UI/Hint/partials/_constants.js +11 -0
- package/dist/es/Atomic/UI/Hint/partials/_constants.js.map +1 -0
- package/dist/es/Atomic/UI/Hint/partials/_utils.js +35 -0
- package/dist/es/Atomic/UI/Hint/partials/_utils.js.map +1 -0
- package/dist/es/Atomic/UI/Modal/Modal.js +178 -0
- package/dist/es/Atomic/UI/Modal/Modal.js.map +1 -0
- package/dist/es/Atomic/UI/Modal/Modal.styles.css +337 -0
- package/dist/es/Atomic/UI/Modal/ModalHOC.js +64 -0
- package/dist/es/Atomic/UI/Modal/ModalHOC.js.map +1 -0
- package/dist/es/Atomic/UI/Modal/ModalMobile.styles.css +60 -0
- package/dist/es/Atomic/UI/Modal/index.js +13 -0
- package/dist/es/Atomic/UI/Modal/index.js.map +1 -0
- package/dist/es/Atomic/UI/Modal/partials/ModalFooter.js +19 -0
- package/dist/es/Atomic/UI/Modal/partials/ModalFooter.js.map +1 -0
- package/dist/es/Atomic/UI/Modal/partials/ModalTitle.js +43 -0
- package/dist/es/Atomic/UI/Modal/partials/ModalTitle.js.map +1 -0
- package/dist/es/Atomic/UI/Modal/partials/_constants.js +26 -0
- package/dist/es/Atomic/UI/Modal/partials/_constants.js.map +1 -0
- package/dist/es/Atomic/UI/Modal/partials/_utils.js +45 -0
- package/dist/es/Atomic/UI/Modal/partials/_utils.js.map +1 -0
- package/dist/es/Atomic/UI/Modal/partials/useMobileModal.js +146 -0
- package/dist/es/Atomic/UI/Modal/partials/useMobileModal.js.map +1 -0
- package/dist/es/Atomic/UI/MonoAccordion/MonoAccordion.js +59 -0
- package/dist/es/Atomic/UI/MonoAccordion/MonoAccordion.js.map +1 -0
- package/dist/es/Atomic/UI/MonoAccordion/MonoAccordion.styles.css +110 -0
- package/dist/es/Atomic/UI/MonoAccordion/index.js +7 -0
- package/dist/es/Atomic/UI/MonoAccordion/index.js.map +1 -0
- package/dist/es/Atomic/UI/NavLine/NavLine.js +209 -0
- package/dist/es/Atomic/UI/NavLine/NavLine.js.map +1 -0
- package/dist/es/Atomic/UI/NavLine/NavLine.styles.css +187 -0
- package/dist/es/Atomic/UI/NavLine/index.js +7 -0
- package/dist/es/Atomic/UI/NavLine/index.js.map +1 -0
- package/dist/es/Atomic/UI/PageTitle/PageTitle.js +49 -0
- package/dist/es/Atomic/UI/PageTitle/PageTitle.js.map +1 -0
- package/dist/es/Atomic/UI/PageTitle/PageTitle.styles.css +89 -0
- package/dist/es/Atomic/UI/PageTitle/index.js +7 -0
- package/dist/es/Atomic/UI/PageTitle/index.js.map +1 -0
- package/dist/es/Atomic/UI/PieChart/PieChart.js +41 -0
- package/dist/es/Atomic/UI/PieChart/PieChart.js.map +1 -0
- package/dist/es/Atomic/UI/PieChart/PieChart.styles.css +44 -0
- package/dist/es/Atomic/UI/Price/Price.js +20 -0
- package/dist/es/Atomic/UI/Price/Price.js.map +1 -0
- package/dist/es/Atomic/UI/Price/index.js +7 -0
- package/dist/es/Atomic/UI/Price/index.js.map +1 -0
- package/dist/es/Atomic/UI/PriceRange/PriceRange.js +33 -0
- package/dist/es/Atomic/UI/PriceRange/PriceRange.js.map +1 -0
- package/dist/es/Atomic/UI/PriceRange/index.js +7 -0
- package/dist/es/Atomic/UI/PriceRange/index.js.map +1 -0
- package/dist/es/Atomic/UI/ProgressLine/ProgressLine.js +74 -0
- package/dist/es/Atomic/UI/ProgressLine/ProgressLine.js.map +1 -0
- package/dist/es/Atomic/UI/ProgressLine/ProgressLine.styles.css +243 -0
- package/dist/es/Atomic/UI/ProgressLine/index.js +7 -0
- package/dist/es/Atomic/UI/ProgressLine/index.js.map +1 -0
- package/dist/es/Atomic/UI/Status/Status.js +48 -0
- package/dist/es/Atomic/UI/Status/Status.js.map +1 -0
- package/dist/es/Atomic/UI/Status/Status.styles.css +98 -0
- package/dist/es/Atomic/UI/Status/index.js +7 -0
- package/dist/es/Atomic/UI/Status/index.js.map +1 -0
- package/dist/es/Atomic/UI/Table/Partials/TdCell.js +67 -0
- package/dist/es/Atomic/UI/Table/Partials/TdCell.js.map +1 -0
- package/dist/es/Atomic/UI/Table/Partials/TdHeader.js +43 -0
- package/dist/es/Atomic/UI/Table/Partials/TdHeader.js.map +1 -0
- package/dist/es/Atomic/UI/Table/Partials/TdRow.js +56 -0
- package/dist/es/Atomic/UI/Table/Partials/TdRow.js.map +1 -0
- package/dist/es/Atomic/UI/Table/Table.js +36 -0
- package/dist/es/Atomic/UI/Table/Table.js.map +1 -0
- package/dist/es/Atomic/UI/Table/Table.styles.css +63 -0
- package/dist/es/Atomic/UI/Table/TdTypes/TdActions.js +56 -0
- package/dist/es/Atomic/UI/Table/TdTypes/TdActions.js.map +1 -0
- package/dist/es/Atomic/UI/Table/TdTypes/TdPriority.js +29 -0
- package/dist/es/Atomic/UI/Table/TdTypes/TdPriority.js.map +1 -0
- package/dist/es/Atomic/UI/Table/TdTypes/TdRange.js +14 -0
- package/dist/es/Atomic/UI/Table/TdTypes/TdRange.js.map +1 -0
- package/dist/es/Atomic/UI/Table/TdTypes/TdTypes.styles.css +29 -0
- package/dist/es/Atomic/UI/Table/TdTypes/TdWeight.js +43 -0
- package/dist/es/Atomic/UI/Table/TdTypes/TdWeight.js.map +1 -0
- package/dist/es/Atomic/UI/Tag/Tag.js +110 -0
- package/dist/es/Atomic/UI/Tag/Tag.js.map +1 -0
- package/dist/es/Atomic/UI/Tag/Tag.styles.css +148 -0
- package/dist/es/Atomic/UI/Tag/index.js +7 -0
- package/dist/es/Atomic/UI/Tag/index.js.map +1 -0
- package/dist/es/Atomic/UI/TagList/TagList.js +152 -0
- package/dist/es/Atomic/UI/TagList/TagList.js.map +1 -0
- package/dist/es/Atomic/UI/TagList/TagList.styles.css +59 -0
- package/dist/es/Atomic/UI/UserBox/UserBox.js +49 -0
- package/dist/es/Atomic/UI/UserBox/UserBox.js.map +1 -0
- package/dist/es/Atomic/UI/UserBox/UserBox.styles.css +64 -0
- package/dist/es/Atomic/UI/UserBox/index.js +7 -0
- package/dist/es/Atomic/UI/UserBox/index.js.map +1 -0
- package/dist/es/Atomic/UI/WizardStepper/constructor.js +12 -0
- package/dist/es/Atomic/UI/WizardStepper/constructor.js.map +1 -0
- package/dist/es/Atomic/UI/WizardStepper/index.js +7 -0
- package/dist/es/Atomic/UI/WizardStepper/index.js.map +1 -0
- package/dist/es/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.js +52 -0
- package/dist/es/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.js.map +1 -0
- package/dist/es/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.styles.css +23 -0
- package/dist/es/Atomic/UI/WizardStepper/ui/StateIcon/index.js +7 -0
- package/dist/es/Atomic/UI/WizardStepper/ui/StateIcon/index.js.map +1 -0
- package/dist/es/Atomic/UI/WizardStepper/ui/StepRow/StepRow.js +67 -0
- package/dist/es/Atomic/UI/WizardStepper/ui/StepRow/StepRow.js.map +1 -0
- package/dist/es/Atomic/UI/WizardStepper/ui/StepRow/StepRow.styles.css +60 -0
- package/dist/es/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.js +43 -0
- package/dist/es/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.js.map +1 -0
- package/dist/es/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.styles.css +64 -0
- package/dist/es/Atomic/UI/WizardStepper/ui/StepWrapper/index.js +7 -0
- package/dist/es/Atomic/UI/WizardStepper/ui/StepWrapper/index.js.map +1 -0
- package/dist/es/Atomic/UI/WizardStepper/ui/icons.js +124 -0
- package/dist/es/Atomic/UI/WizardStepper/ui/icons.js.map +1 -0
- package/dist/es/Atomic/UI/WizardStepper/ui/index.js +7 -0
- package/dist/es/Atomic/UI/WizardStepper/ui/index.js.map +1 -0
- package/dist/es/Classes/AbortableFetch.js +271 -0
- package/dist/es/Classes/AbortableFetch.js.map +1 -0
- package/dist/es/Classes/AnimatedHandler.js +27 -0
- package/dist/es/Classes/AnimatedHandler.js.map +1 -0
- package/dist/es/Classes/RESTAPI/index.js +112 -0
- package/dist/es/Classes/RESTAPI/index.js.map +1 -0
- package/dist/es/Classes/RESTAPI/partials/AbortableFetch.js +330 -0
- package/dist/es/Classes/RESTAPI/partials/AbortableFetch.js.map +1 -0
- package/dist/es/Classes/RESTAPI/partials/ApiBase.js +38 -0
- package/dist/es/Classes/RESTAPI/partials/ApiBase.js.map +1 -0
- package/dist/es/Classes/RESTAPI/partials/ApiRequestCreators.js +151 -0
- package/dist/es/Classes/RESTAPI/partials/ApiRequestCreators.js.map +1 -0
- package/dist/es/Classes/RESTAPI/partials/ApiUtils.js +142 -0
- package/dist/es/Classes/RESTAPI/partials/ApiUtils.js.map +1 -0
- package/dist/es/Classes/RESTAPI/partials/CredentialsProcessing.js +212 -0
- package/dist/es/Classes/RESTAPI/partials/CredentialsProcessing.js.map +1 -0
- package/dist/es/Classes/RESTAPI/partials/Utils.js +70 -0
- package/dist/es/Classes/RESTAPI/partials/Utils.js.map +1 -0
- package/dist/es/Classes/RESTAPI/partials/_utils.js +144 -0
- package/dist/es/Classes/RESTAPI/partials/_utils.js.map +1 -0
- package/dist/es/Classes/RESTAPI/partials/sse.js +127 -0
- package/dist/es/Classes/RESTAPI/partials/sse.js.map +1 -0
- package/dist/es/Constants/index.constants.js +78 -0
- package/dist/es/Constants/index.constants.js.map +1 -0
- package/dist/es/Functions/Portal.js +21 -0
- package/dist/es/Functions/Portal.js.map +1 -0
- package/dist/es/Functions/customEventListener.js +67 -0
- package/dist/es/Functions/customEventListener.js.map +1 -0
- package/dist/es/Functions/dateTime.js +113 -0
- package/dist/es/Functions/dateTime.js.map +1 -0
- package/dist/es/Functions/fieldValueFormatters.js +193 -0
- package/dist/es/Functions/fieldValueFormatters.js.map +1 -0
- package/dist/es/Functions/guards/assertions.js +265 -0
- package/dist/es/Functions/guards/assertions.js.map +1 -0
- package/dist/es/Functions/guards/safeValue.js +66 -0
- package/dist/es/Functions/guards/safeValue.js.map +1 -0
- package/dist/es/Functions/guards/typeGuards.js +397 -0
- package/dist/es/Functions/guards/typeGuards.js.map +1 -0
- package/dist/es/Functions/hooks/useFormFieldsChangesManager.js +84 -0
- package/dist/es/Functions/hooks/useFormFieldsChangesManager.js.map +1 -0
- package/dist/es/Functions/locale/createTranslator.js +23 -0
- package/dist/es/Functions/locale/createTranslator.js.map +1 -0
- package/dist/es/Functions/operations.js +88 -0
- package/dist/es/Functions/operations.js.map +1 -0
- package/dist/es/Functions/presets/inputMaskPresets.js +82 -0
- package/dist/es/Functions/presets/inputMaskPresets.js.map +1 -0
- package/dist/es/Functions/presets/inputPresets.js +50 -0
- package/dist/es/Functions/presets/inputPresets.js.map +1 -0
- package/dist/es/Functions/presets/mobileKeyboardTypesPresets.js +11 -0
- package/dist/es/Functions/presets/mobileKeyboardTypesPresets.js.map +1 -0
- package/dist/es/Functions/sdk/runtime-sdk/client.js +161 -0
- package/dist/es/Functions/sdk/runtime-sdk/client.js.map +1 -0
- package/dist/es/Functions/sdk/runtime-sdk/config.js +77 -0
- package/dist/es/Functions/sdk/runtime-sdk/config.js.map +1 -0
- package/dist/es/Functions/sdk/runtime-sdk/queue.js +131 -0
- package/dist/es/Functions/sdk/runtime-sdk/queue.js.map +1 -0
- package/dist/es/Functions/sdk/runtime-sdk/transport.js +114 -0
- package/dist/es/Functions/sdk/runtime-sdk/transport.js.map +1 -0
- package/dist/es/Functions/useBodyScrollLock.js +15 -0
- package/dist/es/Functions/useBodyScrollLock.js.map +1 -0
- package/dist/es/Functions/useClickOutside.js +17 -0
- package/dist/es/Functions/useClickOutside.js.map +1 -0
- package/dist/es/Functions/useDebounce.js +18 -0
- package/dist/es/Functions/useDebounce.js.map +1 -0
- package/dist/es/Functions/useFieldFocus.js +62 -0
- package/dist/es/Functions/useFieldFocus.js.map +1 -0
- package/dist/es/Functions/useFormTools/form-drivers/ArrayWithObjects.js +29 -0
- package/dist/es/Functions/useFormTools/form-drivers/ArrayWithObjects.js.map +1 -0
- package/dist/es/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js +95 -0
- package/dist/es/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js.map +1 -0
- package/dist/es/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js +49 -0
- package/dist/es/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js.map +1 -0
- package/dist/es/Functions/useFormTools/functions/General.js +87 -0
- package/dist/es/Functions/useFormTools/functions/General.js.map +1 -0
- package/dist/es/Functions/useFormTools/functions/RenderFields.js +70 -0
- package/dist/es/Functions/useFormTools/functions/RenderFields.js.map +1 -0
- package/dist/es/Functions/useFormTools/index.js +464 -0
- package/dist/es/Functions/useFormTools/index.js.map +1 -0
- package/dist/es/Functions/useInputHighlightError.js +50 -0
- package/dist/es/Functions/useInputHighlightError.js.map +1 -0
- package/dist/es/Functions/useIsMobile/index.js +7 -0
- package/dist/es/Functions/useIsMobile/index.js.map +1 -0
- package/dist/es/Functions/useIsMobile/useIsMobile.js +32 -0
- package/dist/es/Functions/useIsMobile/useIsMobile.js.map +1 -0
- package/dist/es/Functions/useKeyPress/useHandleKeyPress.js +38 -0
- package/dist/es/Functions/useKeyPress/useHandleKeyPress.js.map +1 -0
- package/dist/es/Functions/useKeyPress/useKeyPress.js +54 -0
- package/dist/es/Functions/useKeyPress/useKeyPress.js.map +1 -0
- package/dist/es/Functions/useLocalStorage.js +28 -0
- package/dist/es/Functions/useLocalStorage.js.map +1 -0
- package/dist/es/Functions/useLocationParams.js +27 -0
- package/dist/es/Functions/useLocationParams.js.map +1 -0
- package/dist/es/Functions/useMediaQuery.js +14 -0
- package/dist/es/Functions/useMediaQuery.js.map +1 -0
- package/dist/es/Functions/useMetaInfo.js +33 -0
- package/dist/es/Functions/useMetaInfo.js.map +1 -0
- package/dist/es/Functions/useMouseUpOutside.js +17 -0
- package/dist/es/Functions/useMouseUpOutside.js.map +1 -0
- package/dist/es/Functions/useOnlineStatus.js +23 -0
- package/dist/es/Functions/useOnlineStatus.js.map +1 -0
- package/dist/es/Functions/usePasswordChecker.js +116 -0
- package/dist/es/Functions/usePasswordChecker.js.map +1 -0
- package/dist/es/Functions/usePrevious.js +13 -0
- package/dist/es/Functions/usePrevious.js.map +1 -0
- package/dist/es/Functions/useResize.js +24 -0
- package/dist/es/Functions/useResize.js.map +1 -0
- package/dist/es/Functions/useScrollTo.js +17 -0
- package/dist/es/Functions/useScrollTo.js.map +1 -0
- package/dist/es/Functions/useToggle.js +15 -0
- package/dist/es/Functions/useToggle.js.map +1 -0
- package/dist/es/Functions/utils/disableDefaultBehavior/disableDefaultBehavior.js +9 -0
- package/dist/es/Functions/utils/disableDefaultBehavior/disableDefaultBehavior.js.map +1 -0
- package/dist/es/Functions/utils/getLimitedMask/getLimitedMask.js +39 -0
- package/dist/es/Functions/utils/getLimitedMask/getLimitedMask.js.map +1 -0
- package/dist/es/Functions/utils.js +288 -0
- package/dist/es/Functions/utils.js.map +1 -0
- package/dist/es/Langs.js +166 -0
- package/dist/es/Langs.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/AffiliateNetworks.js +33 -0
- package/dist/es/Molecular/CustomIcons/components/AffiliateNetworks.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/AlertCircle.js +30 -0
- package/dist/es/Molecular/CustomIcons/components/AlertCircle.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/AppStore.js +34 -0
- package/dist/es/Molecular/CustomIcons/components/AppStore.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Arrow.js +43 -0
- package/dist/es/Molecular/CustomIcons/components/Arrow.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/ArrowDown.js +21 -0
- package/dist/es/Molecular/CustomIcons/components/ArrowDown.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/ArrowLeft.js +21 -0
- package/dist/es/Molecular/CustomIcons/components/ArrowLeft.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/ArrowRight.js +21 -0
- package/dist/es/Molecular/CustomIcons/components/ArrowRight.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/ArrowUp.js +21 -0
- package/dist/es/Molecular/CustomIcons/components/ArrowUp.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Bell.js +19 -0
- package/dist/es/Molecular/CustomIcons/components/Bell.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Button.js +19 -0
- package/dist/es/Molecular/CustomIcons/components/Button.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Campaigns.js +20 -0
- package/dist/es/Molecular/CustomIcons/components/Campaigns.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Check.js +15 -0
- package/dist/es/Molecular/CustomIcons/components/Check.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Check2.js +19 -0
- package/dist/es/Molecular/CustomIcons/components/Check2.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/ChevronDown.js +19 -0
- package/dist/es/Molecular/CustomIcons/components/ChevronDown.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/ChevronDownDisabled.js +19 -0
- package/dist/es/Molecular/CustomIcons/components/ChevronDownDisabled.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/ChevronLeft.js +19 -0
- package/dist/es/Molecular/CustomIcons/components/ChevronLeft.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/ChevronRight.js +19 -0
- package/dist/es/Molecular/CustomIcons/components/ChevronRight.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/ChevronUp.js +19 -0
- package/dist/es/Molecular/CustomIcons/components/ChevronUp.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/ChevronUpDown.js +33 -0
- package/dist/es/Molecular/CustomIcons/components/ChevronUpDown.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Close.js +20 -0
- package/dist/es/Molecular/CustomIcons/components/Close.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/ColumnsOrder.js +53 -0
- package/dist/es/Molecular/CustomIcons/components/ColumnsOrder.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Delete.js +20 -0
- package/dist/es/Molecular/CustomIcons/components/Delete.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Edit.js +19 -0
- package/dist/es/Molecular/CustomIcons/components/Edit.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Email.js +36 -0
- package/dist/es/Molecular/CustomIcons/components/Email.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/FinturfLogo.js +33 -0
- package/dist/es/Molecular/CustomIcons/components/FinturfLogo.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/FinturfLogo2.js +41 -0
- package/dist/es/Molecular/CustomIcons/components/FinturfLogo2.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Flows.js +19 -0
- package/dist/es/Molecular/CustomIcons/components/Flows.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Gift.js +21 -0
- package/dist/es/Molecular/CustomIcons/components/Gift.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/GoogleAuth.js +34 -0
- package/dist/es/Molecular/CustomIcons/components/GoogleAuth.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/GooglePlay.js +34 -0
- package/dist/es/Molecular/CustomIcons/components/GooglePlay.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/HelpCircle.js +22 -0
- package/dist/es/Molecular/CustomIcons/components/HelpCircle.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/HelpCircle2.js +23 -0
- package/dist/es/Molecular/CustomIcons/components/HelpCircle2.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/HelpCircleFilled.js +22 -0
- package/dist/es/Molecular/CustomIcons/components/HelpCircleFilled.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Home.js +22 -0
- package/dist/es/Molecular/CustomIcons/components/Home.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Home2.js +25 -0
- package/dist/es/Molecular/CustomIcons/components/Home2.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Key.js +24 -0
- package/dist/es/Molecular/CustomIcons/components/Key.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Landers.js +23 -0
- package/dist/es/Molecular/CustomIcons/components/Landers.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Lock.js +19 -0
- package/dist/es/Molecular/CustomIcons/components/Lock.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Mail.js +28 -0
- package/dist/es/Molecular/CustomIcons/components/Mail.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Mastercard.js +81 -0
- package/dist/es/Molecular/CustomIcons/components/Mastercard.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Minus.js +34 -0
- package/dist/es/Molecular/CustomIcons/components/Minus.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Offers.js +20 -0
- package/dist/es/Molecular/CustomIcons/components/Offers.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Pause.js +34 -0
- package/dist/es/Molecular/CustomIcons/components/Pause.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/PayPal.js +54 -0
- package/dist/es/Molecular/CustomIcons/components/PayPal.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/PayPalLightLarge.js +39 -0
- package/dist/es/Molecular/CustomIcons/components/PayPalLightLarge.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Phone.js +33 -0
- package/dist/es/Molecular/CustomIcons/components/Phone.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Play.js +34 -0
- package/dist/es/Molecular/CustomIcons/components/Play.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Plus.js +34 -0
- package/dist/es/Molecular/CustomIcons/components/Plus.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Profile.js +24 -0
- package/dist/es/Molecular/CustomIcons/components/Profile.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/QRCode.js +35 -0
- package/dist/es/Molecular/CustomIcons/components/QRCode.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Rectangle.js +19 -0
- package/dist/es/Molecular/CustomIcons/components/Rectangle.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Revert.js +22 -0
- package/dist/es/Molecular/CustomIcons/components/Revert.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Star.js +18 -0
- package/dist/es/Molecular/CustomIcons/components/Star.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Star2.js +20 -0
- package/dist/es/Molecular/CustomIcons/components/Star2.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/TrafficSources.js +19 -0
- package/dist/es/Molecular/CustomIcons/components/TrafficSources.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Trash.js +19 -0
- package/dist/es/Molecular/CustomIcons/components/Trash.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/TrashRed.js +19 -0
- package/dist/es/Molecular/CustomIcons/components/TrashRed.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Triggers.js +19 -0
- package/dist/es/Molecular/CustomIcons/components/Triggers.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/User.js +21 -0
- package/dist/es/Molecular/CustomIcons/components/User.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/Visa.js +41 -0
- package/dist/es/Molecular/CustomIcons/components/Visa.js.map +1 -0
- package/dist/es/Molecular/CustomIcons/components/X.js +19 -0
- package/dist/es/Molecular/CustomIcons/components/X.js.map +1 -0
- package/dist/es/Molecular/FormElement/FormElement.js +37 -0
- package/dist/es/Molecular/FormElement/FormElement.js.map +1 -0
- package/dist/es/Molecular/FormElement/FormElement.styles.css +21 -0
- package/dist/es/Molecular/FormWithDependOn/FormWithDependOn.js +111 -0
- package/dist/es/Molecular/FormWithDependOn/FormWithDependOn.js.map +1 -0
- package/dist/es/Molecular/FormWithDependOn/partials/_utils.js +33 -0
- package/dist/es/Molecular/FormWithDependOn/partials/_utils.js.map +1 -0
- package/dist/es/Molecular/InputAddress/InputAddress.js +352 -0
- package/dist/es/Molecular/InputAddress/InputAddress.js.map +1 -0
- package/dist/es/Molecular/InputAddress/InputAddress.styles.css +353 -0
- package/dist/es/Molecular/InputCustomFetch/InputCustomFetch.js +355 -0
- package/dist/es/Molecular/InputCustomFetch/InputCustomFetch.js.map +1 -0
- package/dist/es/Molecular/InputCustomFetch/InputCustomFetch.styles.css +358 -0
- package/dist/es/Molecular/InputCustomFetch/lib/hooks/useDebouncedCallback.js +27 -0
- package/dist/es/Molecular/InputCustomFetch/lib/hooks/useDebouncedCallback.js.map +1 -0
- package/dist/es/Molecular/InputCustomFetch/lib/hooks/useFetchWithAbort.js +50 -0
- package/dist/es/Molecular/InputCustomFetch/lib/hooks/useFetchWithAbort.js.map +1 -0
- package/dist/es/Molecular/InputCustomFetch/lib/utils.js +24 -0
- package/dist/es/Molecular/InputCustomFetch/lib/utils.js.map +1 -0
- package/dist/es/Molecular/InputPassword/InputPassword.js +47 -0
- package/dist/es/Molecular/InputPassword/InputPassword.js.map +1 -0
- package/dist/es/Molecular/InputPassword/InputPassword.styles.css +23 -0
- package/dist/es/_virtual/_rolldown/runtime.js +1 -15
- package/dist/es/charts.js +2 -3
- package/dist/es/classes.js +1 -1
- package/dist/es/form.js +68 -93
- package/dist/es/hooks.js +12 -17
- package/dist/es/icons.js +126 -6
- package/dist/es/index.js +145 -70
- package/dist/es/layout.js +3 -3
- package/dist/es/presets.js +6 -6
- package/dist/es/router-ui.js +5 -8
- package/dist/es/sdk.js +3 -1
- package/dist/es/types/index.js +0 -2
- package/dist/es/ui.js +30 -39
- package/dist/es/utils.js +5 -6
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_utils.js","names":[],"sources":["../../../../../../src/Atomic/UI/Modal/partials/_utils.ts"],"sourcesContent":["import type { ISuspendProcessing } from '../../../../Functions/useKeyPress/useKeyPress';\nimport type TWithEventManagementAsObj from '../../../../types/declaration/TWithEventManagementAsObj';\nimport type { IModalProps } from '../Modal.interface';\nimport type { ICustomEvent, ModalEventsInnerKeys } from './_constants';\n\nimport { isISuspendProcessing } from '../../../../Functions/useKeyPress/useKeyPress';\nimport { getIsOnlyAnObject } from '../../../../Functions/utils';\nimport { EVENTS } from './_constants';\n\n// ? Геттер объекта конфигурации для включения/выключения функционала управления ивентами\n// ? Гарантирует возврат структуры с ПОЛНЫМ набором возможных опций\nexport function getWithEventManagementStructure(\n modalId: number | string | null | undefined,\n withEventManagement?: IModalProps['withEventManagement'],\n): TWithEventManagementAsObj<'Modal', true> {\n // ! Тут ДОЛЖНЫ БЫТЬ перечислены все варианты из типа TWithEventManagementAsObj<'Modal'> (БЕЗ пропсов ICommon)\n // ! Именно поэтому типизация используется с isHard-опцией и через satisfies\n const output = {\n isWithSubmitAndCloseManagement: false,\n } satisfies TWithEventManagementAsObj<'Modal', true>;\n\n // ? Итерируемся по описанным вариантам\n for (const key in output) {\n // ? Если в модалку НЕ передан id, то система НЕ сможет работать корректно\n if (!modalId) {\n output[key as keyof typeof output] = false;\n }\n else {\n // ? Приcваиваем значения пропам заданной структуры исходя из withEventManagement\n // ? - если withEventManagement объект, то это соответствующая пропа (если такая есть)\n // ? - либо это приведённое к логическому типу значение withEventManagement\n output[key as keyof typeof output] = (\n getIsOnlyAnObject(withEventManagement)\n ? ((withEventManagement as TWithEventManagementAsObj<'Modal'>)[key as keyof TWithEventManagementAsObj<'Modal'>] ?? false)\n : !!withEventManagement\n );\n }\n }\n\n return output;\n}\n\n// ? Геттер колбека для задиспатченных ивентов\n// ? (сделано через геттер чтобы не дублироваться для Modal и ModalHOC,\n// ? если пишется для одного места, то в гетере нет смысла, можно все писать в useEffect)\nexport function getOnKeyPress({\n id: modalId,\n onSubmit,\n onClose,\n suspendProcessing,\n}: {\n id: number | string | null | undefined;\n onSubmit?: () => unknown;\n onClose?: () => unknown;\n suspendProcessing?: ISuspendProcessing | null;\n}): ((ev: Event) => void) | null {\n if (!modalId) return null;\n\n return function onKeyPress(ev: Event): void {\n // ? Приведение типизации\n const customEvent = ev as CustomEvent;\n // ? Достаем детали задиспатченного ивента\n const { id: eventId, realEvent } = customEvent.detail || {};\n // ? Достаем из справочника константную инфу об кастомном ивенте\n const constantInfoAboutCustomEvent = (\n Object.values(EVENTS).find(ev => ev.name === customEvent.type || ev.shortName === customEvent.type) || {}\n ) as ICustomEvent<ModalEventsInnerKeys>;\n // ? Выясняем ключ для системы suspendProcessing\n const middlewareKey = constantInfoAboutCustomEvent.middlewareKey || 'incorrectKey';\n\n const safelySuspendProcessing = (isISuspendProcessing(suspendProcessing) ? suspendProcessing : {}) as ISuspendProcessing;\n\n // ? Делаем что-либо если\n // ? - если есть modalId (модалка идентифицирована)\n // ? - если есть eventId (при диспатче кастомного ивента на уровне проекта указали кому адресован ивент)\n // ? - если eventId === modalId (задиспатченый ивент предназначен этой модалке)\n // ? - если нет оснований приостановить обработку (есть колбек и его запуск вернул true, т.е. \"да, приостановить\")\n if (modalId && eventId && eventId === modalId && !(safelySuspendProcessing[middlewareKey]?.(realEvent))) {\n // ? В ev.type приходит ПОЛНОЕ имя ивента (так написан диспатчер)\n switch (customEvent.type) {\n case EVENTS.iGotAnEnterKeyPress.name: {\n onSubmit?.();\n break;\n }\n case EVENTS.iGotAnEscKeyPress.name: {\n onClose?.();\n break;\n }\n default: { break; }\n }\n }\n };\n}\n\n// ? Диспатчер ивентов (для экспорта, для удобства и корректности диспатчей на местах)\n// ? eventName - определяет ивент, который вы хотите запустить\n// ? uniqueId - планируется что это будет ключ модалки (ключ ветки в ModalStore)\n// ? target - передавайте тоже самое, что/если прокидывали в пропу withEventManagement.listenersTarget\nexport function dispatchEventForModalManagement(\n realEvent: globalThis.KeyboardEvent,\n nameOfCustomEvent: string,\n uniqueIdOfRecipient: number | string,\n target?: HTMLElement | Document,\n): void {\n const { repeat, altKey, ctrlKey, shiftKey, metaKey } = realEvent;\n const isPressingWithoutAuxiliaryKeys = !altKey && !ctrlKey && !shiftKey && !metaKey;\n\n if (!repeat && isPressingWithoutAuxiliaryKeys) {\n const event = Object.values(EVENTS).find(ev => ev.name === nameOfCustomEvent || ev.shortName === nameOfCustomEvent);\n if (event && uniqueIdOfRecipient) {\n (target ?? document).dispatchEvent(new CustomEvent(event.name, { ...event.options, detail: { id: uniqueIdOfRecipient, realEvent } }));\n }\n }\n}\n"],"mappings":";;;;AAWA,SAAgB,gCACd,SACA,qBAC0C;CAG1C,MAAM,SAAS,EACb,gCAAgC,MAClC;CAGA,KAAK,MAAM,OAAO,QAEhB,IAAI,CAAC,SACH,OAAO,OAA8B;MAMrC,OAAO,OACL,kBAAkB,mBAAmB,IAC/B,oBAA2D,QAAoD,QACjH,CAAC,CAAC;CAKZ,OAAO;AACT;AAKA,SAAgB,cAAc,EAC5B,IAAI,SACJ,UACA,SACA,qBAM+B;CAC/B,IAAI,CAAC,SAAS,OAAO;CAErB,OAAO,SAAS,WAAW,IAAiB;EAE1C,MAAM,cAAc;EAEpB,MAAM,EAAE,IAAI,SAAS,cAAc,YAAY,UAAU,CAAC;EAM1D,MAAM,iBAHJ,OAAO,OAAO,MAAM,CAAC,CAAC,MAAK,OAAM,GAAG,SAAS,YAAY,QAAQ,GAAG,cAAc,YAAY,IAAI,KAAK,CAAC,EAAA,CAGvD,iBAAiB;EAEpE,MAAM,0BAA2B,qBAAqB,iBAAiB,IAAI,oBAAoB,CAAC;EAOhG,IAAI,WAAW,WAAW,YAAY,WAAW,CAAE,wBAAwB,cAAc,GAAG,SAAS,GAEnG,QAAQ,YAAY,MAApB;GACE,KAAK,OAAO,oBAAoB;IAC9B,WAAW;IACX;GAEF,KAAK,OAAO,kBAAkB;IAC5B,UAAU;IACV;GAEF,SAAW;EACb;CAEJ;AACF;AAMA,SAAgB,gCACd,WACA,mBACA,qBACA,QACM;CACN,MAAM,EAAE,QAAQ,QAAQ,SAAS,UAAU,YAAY;CAGvD,IAAI,CAAC,UAFkC,CAAC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,SAE7B;EAC7C,MAAM,QAAQ,OAAO,OAAO,MAAM,CAAC,CAAC,MAAK,OAAM,GAAG,SAAS,qBAAqB,GAAG,cAAc,iBAAiB;EAClH,IAAI,SAAS,qBACX,CAAC,UAAU,SAAA,CAAU,cAAc,IAAI,YAAY,MAAM,MAAM;GAAE,GAAG,MAAM;GAAS,QAAQ;IAAE,IAAI;IAAqB;GAAU;EAAE,CAAC,CAAC;CAExI;AACF"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import useIsMobile from "../../../../Functions/useIsMobile/useIsMobile.js";
|
|
2
|
+
import { useCallback, useEffect, useLayoutEffect, useRef, useState } from "react";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
//#region src/Atomic/UI/Modal/partials/useMobileModal.tsx
|
|
5
|
+
var SCROLL_DIRECTION = {
|
|
6
|
+
UP: "up",
|
|
7
|
+
DOWN: "down"
|
|
8
|
+
};
|
|
9
|
+
function useMobileModal({ modalRef, withMobileLogic = false, withFixedFooter = false, isOpen = false }) {
|
|
10
|
+
const modalMobileContainerRef = useRef(null);
|
|
11
|
+
const modalMobileHeaderRef = useRef(null);
|
|
12
|
+
const modalMobileFooterRef = useRef(null);
|
|
13
|
+
const modalMobileBodyRef = useRef(null);
|
|
14
|
+
const { isMobile } = useIsMobile();
|
|
15
|
+
const [modalHeight, setModalHeight] = useState(0);
|
|
16
|
+
const [modalsLogic, setModalsLogic] = useState({
|
|
17
|
+
IS_HEADER_HIDDEN: false,
|
|
18
|
+
IS_HEADER_STICKY: false,
|
|
19
|
+
IS_FOOTER_HIDDEN: false,
|
|
20
|
+
IS_FOOTER_STICKY: withFixedFooter
|
|
21
|
+
});
|
|
22
|
+
const [modalsLogicProps, setModalsLogicProps] = useState({
|
|
23
|
+
headerHeight: 0,
|
|
24
|
+
footerHeight: 0
|
|
25
|
+
});
|
|
26
|
+
const [scrollDirection, setScrollDirection] = useState(SCROLL_DIRECTION.UP);
|
|
27
|
+
const [scrollTopPrev, setScrollTopPrev] = useState(0);
|
|
28
|
+
const [scrollTop, setScrollTop] = useState(0);
|
|
29
|
+
const [scrollHeight, setScrollHeight] = useState(1);
|
|
30
|
+
const [, setContainerScrollHeight] = useState(1);
|
|
31
|
+
useLayoutEffect(() => {
|
|
32
|
+
const el = modalMobileContainerRef?.current;
|
|
33
|
+
if (!el) return void 0;
|
|
34
|
+
const handleContainerScroll = () => {
|
|
35
|
+
setScrollTop((scrollTop) => {
|
|
36
|
+
if (scrollTop !== el.scrollTop) setScrollTopPrev(scrollTop);
|
|
37
|
+
return el.scrollTop;
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
el.addEventListener("scroll", handleContainerScroll);
|
|
41
|
+
return () => el.removeEventListener("scroll", handleContainerScroll);
|
|
42
|
+
}, [modalMobileContainerRef?.current]);
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
setScrollDirection((prevScrollDirection) => scrollTop < scrollTopPrev ? SCROLL_DIRECTION.UP : scrollTop > scrollTopPrev ? SCROLL_DIRECTION.DOWN : prevScrollDirection);
|
|
45
|
+
}, [scrollTop, scrollTopPrev]);
|
|
46
|
+
useLayoutEffect(() => {
|
|
47
|
+
if (isOpen) {
|
|
48
|
+
const modalStyle = modalRef?.current ? modalRef?.current.style || window.getComputedStyle(modalRef?.current) : {};
|
|
49
|
+
const computedModalHeight = modalRef?.current ? modalHeight + Number.parseFloat(modalStyle?.marginTop || "0") : 0;
|
|
50
|
+
const windowHeight = document.documentElement.clientHeight || window.screen.availHeight || window.screen.height;
|
|
51
|
+
if (modalMobileContainerRef?.current) if (computedModalHeight <= windowHeight) {
|
|
52
|
+
modalMobileContainerRef.current.style.display = "flex";
|
|
53
|
+
modalMobileContainerRef.current.style.alignItems = "flex-end";
|
|
54
|
+
} else {
|
|
55
|
+
modalMobileContainerRef.current?.style?.removeProperty("display");
|
|
56
|
+
modalMobileContainerRef.current?.style?.removeProperty("align-items");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}, [
|
|
60
|
+
modalsLogicProps,
|
|
61
|
+
isOpen,
|
|
62
|
+
isMobile,
|
|
63
|
+
modalHeight
|
|
64
|
+
]);
|
|
65
|
+
useLayoutEffect(() => {
|
|
66
|
+
if (isMobile && isOpen) {
|
|
67
|
+
const newModalHeight = modalRef?.current?.getBoundingClientRect()?.height;
|
|
68
|
+
if (newModalHeight && modalHeight !== newModalHeight) setModalHeight(newModalHeight);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
if (isMobile && withMobileLogic) {
|
|
73
|
+
const { footerHeight, headerHeight } = modalsLogicProps;
|
|
74
|
+
setModalsLogic((prevStickyLogic) => ({
|
|
75
|
+
IS_HEADER_HIDDEN: scrollDirection === SCROLL_DIRECTION.DOWN || scrollTop === 0,
|
|
76
|
+
IS_HEADER_STICKY: scrollDirection === SCROLL_DIRECTION.UP && scrollTop !== 0 && (scrollTop >= headerHeight || prevStickyLogic.IS_HEADER_STICKY),
|
|
77
|
+
IS_FOOTER_HIDDEN: !withFixedFooter && (scrollDirection === SCROLL_DIRECTION.UP || scrollHeight === Math.round(scrollTop)),
|
|
78
|
+
IS_FOOTER_STICKY: withFixedFooter && scrollHeight > 1 || scrollDirection === SCROLL_DIRECTION.DOWN && (scrollHeight - Math.round(scrollTop) >= footerHeight || prevStickyLogic.IS_FOOTER_STICKY)
|
|
79
|
+
}));
|
|
80
|
+
}
|
|
81
|
+
}, [
|
|
82
|
+
scrollTop,
|
|
83
|
+
scrollHeight,
|
|
84
|
+
isMobile,
|
|
85
|
+
withMobileLogic,
|
|
86
|
+
scrollDirection,
|
|
87
|
+
modalsLogicProps,
|
|
88
|
+
modalHeight,
|
|
89
|
+
window.innerHeight
|
|
90
|
+
]);
|
|
91
|
+
useLayoutEffect(() => {
|
|
92
|
+
if (modalMobileHeaderRef?.current?.getBoundingClientRect()?.height !== void 0) setModalsLogicProps((state) => ({
|
|
93
|
+
...state,
|
|
94
|
+
headerHeight: modalMobileHeaderRef?.current?.getBoundingClientRect()?.height ?? 0
|
|
95
|
+
}));
|
|
96
|
+
}, [modalMobileHeaderRef?.current?.getBoundingClientRect()?.height]);
|
|
97
|
+
useLayoutEffect(() => {
|
|
98
|
+
if (modalMobileFooterRef?.current?.getBoundingClientRect()?.height !== void 0) setModalsLogicProps((state) => ({
|
|
99
|
+
...state,
|
|
100
|
+
footerHeight: modalMobileFooterRef?.current?.getBoundingClientRect()?.height ?? 0
|
|
101
|
+
}));
|
|
102
|
+
}, [modalMobileFooterRef?.current?.getBoundingClientRect()?.height]);
|
|
103
|
+
useEffect(() => {
|
|
104
|
+
if (modalMobileContainerRef?.current) {
|
|
105
|
+
setContainerScrollHeight(modalMobileContainerRef?.current?.scrollHeight);
|
|
106
|
+
setScrollHeight(modalMobileContainerRef?.current?.scrollHeight - window.innerHeight);
|
|
107
|
+
}
|
|
108
|
+
}, [
|
|
109
|
+
scrollTop,
|
|
110
|
+
modalMobileContainerRef?.current,
|
|
111
|
+
window.innerHeight
|
|
112
|
+
]);
|
|
113
|
+
useEffect(() => {
|
|
114
|
+
const handleWindowResize = () => {
|
|
115
|
+
setContainerScrollHeight((containerScrollHeight) => {
|
|
116
|
+
setScrollHeight(containerScrollHeight - window.innerHeight);
|
|
117
|
+
return containerScrollHeight;
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
window.addEventListener("resize", handleWindowResize);
|
|
121
|
+
return () => window.removeEventListener("resize", handleWindowResize);
|
|
122
|
+
}, []);
|
|
123
|
+
return {
|
|
124
|
+
modalMobileContainerRef,
|
|
125
|
+
modalMobileHeaderRef,
|
|
126
|
+
modalMobileBodyRef,
|
|
127
|
+
modalMobileFooterRef,
|
|
128
|
+
MODALS_LOGIC: modalsLogic,
|
|
129
|
+
SCROLL_DIRECTION,
|
|
130
|
+
scrollTop,
|
|
131
|
+
scrollHeight,
|
|
132
|
+
renderModal: useCallback((modal) => {
|
|
133
|
+
if (!isMobile || !withMobileLogic) return modal;
|
|
134
|
+
return /* @__PURE__ */ jsx("div", {
|
|
135
|
+
className: "modal-mobile-container",
|
|
136
|
+
ref: modalMobileContainerRef,
|
|
137
|
+
children: modal
|
|
138
|
+
});
|
|
139
|
+
}, [isMobile, withMobileLogic]),
|
|
140
|
+
isMobile
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
//#endregion
|
|
144
|
+
export { useMobileModal as default };
|
|
145
|
+
|
|
146
|
+
//# sourceMappingURL=useMobileModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMobileModal.js","names":[],"sources":["../../../../../../src/Atomic/UI/Modal/partials/useMobileModal.tsx"],"sourcesContent":["import type { MutableRefObject, ReactNode } from 'react';\nimport { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';\n\nimport useIsMobile from '../../../../Functions/useIsMobile/useIsMobile';\n\ntype ScrollDirection = 'up' | 'down';\n\ninterface ModalsLogic {\n IS_HEADER_HIDDEN: boolean;\n IS_HEADER_STICKY: boolean;\n IS_FOOTER_HIDDEN: boolean;\n IS_FOOTER_STICKY: boolean;\n}\n\ninterface UseMobileModalProps {\n modalRef?: React.RefObject<HTMLDivElement>;\n withMobileLogic?: boolean;\n withFixedFooter?: boolean;\n isOpen?: boolean;\n}\n\ninterface UseMobileModalReturn {\n modalMobileContainerRef: MutableRefObject<HTMLDivElement | null>;\n modalMobileHeaderRef: MutableRefObject<HTMLDivElement | null>;\n modalMobileBodyRef: MutableRefObject<HTMLDivElement | null>;\n modalMobileFooterRef: MutableRefObject<HTMLDivElement | null>;\n MODALS_LOGIC: ModalsLogic;\n SCROLL_DIRECTION: { UP: ScrollDirection; DOWN: ScrollDirection };\n scrollTop: number;\n scrollHeight: number;\n renderModal: (modal: ReactNode) => ReactNode;\n isMobile: boolean;\n}\n\nconst SCROLL_DIRECTION = {\n UP: 'up' as ScrollDirection,\n DOWN: 'down' as ScrollDirection,\n};\n\nexport default function useMobileModal({\n modalRef,\n withMobileLogic = false,\n withFixedFooter = false,\n isOpen = false,\n}: UseMobileModalProps): UseMobileModalReturn {\n const modalMobileContainerRef = useRef<HTMLDivElement>(null);\n const modalMobileHeaderRef = useRef<HTMLDivElement>(null);\n const modalMobileFooterRef = useRef<HTMLDivElement>(null);\n const modalMobileBodyRef = useRef<HTMLDivElement>(null);\n\n const { isMobile } = useIsMobile();\n\n const [modalHeight, setModalHeight] = useState(0);\n const [modalsLogic, setModalsLogic] = useState<ModalsLogic>({\n IS_HEADER_HIDDEN: false,\n IS_HEADER_STICKY: false,\n IS_FOOTER_HIDDEN: false,\n IS_FOOTER_STICKY: withFixedFooter,\n });\n const [modalsLogicProps, setModalsLogicProps] = useState({\n headerHeight: 0,\n footerHeight: 0,\n });\n\n const [scrollDirection, setScrollDirection] = useState(SCROLL_DIRECTION.UP);\n const [scrollTopPrev, setScrollTopPrev] = useState(0);\n const [scrollTop, setScrollTop] = useState(0);\n const [scrollHeight, setScrollHeight] = useState(1);\n const [, setContainerScrollHeight] = useState(1);\n\n /* MODALS LOGIC | BEGIN */\n // Count ScrollTop\n useLayoutEffect(() => {\n const el = modalMobileContainerRef?.current;\n if (!el) return undefined;\n /*\n * ? Именованный хендлер + cleanup обязательны: раньше на каждый прогон эффекта\n * ? вешалась НОВАЯ анонимная подписка без снятия — дубли обработчиков скролла\n * ? и ретейн замыканий после анмаунта (вклад в listener-утечку adminka 2026-07).\n */\n const handleContainerScroll = (): void => {\n setScrollTop((scrollTop) => {\n if (scrollTop !== el.scrollTop) setScrollTopPrev(scrollTop);\n return el.scrollTop;\n });\n };\n el.addEventListener('scroll', handleContainerScroll);\n return () => el.removeEventListener('scroll', handleContainerScroll);\n }, [modalMobileContainerRef?.current]);\n // Count ScrollDirection\n useEffect(() => {\n setScrollDirection(prevScrollDirection =>\n scrollTop < scrollTopPrev\n ? SCROLL_DIRECTION.UP\n : scrollTop > scrollTopPrev\n ? SCROLL_DIRECTION.DOWN\n : prevScrollDirection,\n );\n }, [scrollTop, scrollTopPrev]);\n // Dynamic Modal Positioning\n useLayoutEffect(() => {\n if (isOpen) {\n const modalStyle = modalRef?.current\n ? modalRef?.current.style\n || window.getComputedStyle(modalRef?.current)\n : {} as CSSStyleDeclaration;\n const computedModalHeight = modalRef?.current\n ? modalHeight + Number.parseFloat(modalStyle?.marginTop || '0')\n : 0;\n const windowHeight\n = document.documentElement.clientHeight\n || window.screen.availHeight\n || window.screen.height;\n if (modalMobileContainerRef?.current) {\n if (computedModalHeight <= windowHeight) {\n modalMobileContainerRef.current.style.display = 'flex';\n modalMobileContainerRef.current.style.alignItems = 'flex-end';\n }\n else {\n modalMobileContainerRef.current?.style?.removeProperty('display');\n modalMobileContainerRef.current?.style?.removeProperty('align-items');\n }\n }\n }\n }, [modalsLogicProps, isOpen, isMobile, modalHeight]);\n\n // Calculating\n useLayoutEffect(() => {\n if (isMobile && isOpen) {\n const newModalHeight = modalRef?.current?.getBoundingClientRect()?.height;\n if (newModalHeight && modalHeight !== newModalHeight) {\n setModalHeight(newModalHeight);\n }\n }\n });\n useEffect(() => {\n if (isMobile && withMobileLogic) {\n const { footerHeight, headerHeight } = modalsLogicProps;\n setModalsLogic(prevStickyLogic => ({\n IS_HEADER_HIDDEN:\n scrollDirection === SCROLL_DIRECTION.DOWN || scrollTop === 0,\n IS_HEADER_STICKY:\n scrollDirection === SCROLL_DIRECTION.UP\n && scrollTop !== 0\n && (scrollTop >= headerHeight || prevStickyLogic.IS_HEADER_STICKY),\n IS_FOOTER_HIDDEN:\n !withFixedFooter\n && (scrollDirection === SCROLL_DIRECTION.UP\n || scrollHeight === Math.round(scrollTop)),\n IS_FOOTER_STICKY:\n (withFixedFooter && scrollHeight > 1)\n || (scrollDirection === SCROLL_DIRECTION.DOWN\n && (scrollHeight - Math.round(scrollTop) >= footerHeight\n || prevStickyLogic.IS_FOOTER_STICKY)),\n }));\n }\n }, [\n scrollTop,\n scrollHeight,\n isMobile,\n withMobileLogic,\n scrollDirection,\n modalsLogicProps,\n modalHeight,\n window.innerHeight,\n ]);\n useLayoutEffect(() => {\n if (\n modalMobileHeaderRef?.current?.getBoundingClientRect()?.height\n !== undefined\n ) {\n setModalsLogicProps(state => ({\n ...state,\n headerHeight: modalMobileHeaderRef?.current?.getBoundingClientRect()?.height ?? 0,\n }));\n }\n }, [modalMobileHeaderRef?.current?.getBoundingClientRect()?.height]);\n useLayoutEffect(() => {\n if (\n modalMobileFooterRef?.current?.getBoundingClientRect()?.height\n !== undefined\n ) {\n setModalsLogicProps(state => ({\n ...state,\n footerHeight: modalMobileFooterRef?.current?.getBoundingClientRect()?.height ?? 0,\n }));\n }\n }, [modalMobileFooterRef?.current?.getBoundingClientRect()?.height]);\n useEffect(() => {\n if (modalMobileContainerRef?.current) {\n setContainerScrollHeight(modalMobileContainerRef?.current?.scrollHeight);\n setScrollHeight(\n modalMobileContainerRef?.current?.scrollHeight - window.innerHeight,\n );\n }\n }, [scrollTop, modalMobileContainerRef?.current, window.innerHeight]);\n useEffect(() => {\n // ? Cleanup обязателен: анонимная resize-подписка на window жила после анмаунта\n // ? модалки навсегда (по подписке на каждый показ модалки).\n const handleWindowResize = (): void => {\n setContainerScrollHeight((containerScrollHeight) => {\n setScrollHeight(containerScrollHeight - window.innerHeight);\n return containerScrollHeight;\n });\n };\n window.addEventListener('resize', handleWindowResize);\n return () => window.removeEventListener('resize', handleWindowResize);\n }, []);\n /* MODALS LOGIC | END */\n\n const renderModal = useCallback(\n (modal: ReactNode): ReactNode => {\n if (!isMobile || !withMobileLogic) return modal;\n\n return (\n <div className=\"modal-mobile-container\" ref={modalMobileContainerRef}>\n {modal}\n </div>\n );\n },\n [isMobile, withMobileLogic],\n );\n\n return {\n modalMobileContainerRef,\n modalMobileHeaderRef,\n modalMobileBodyRef,\n modalMobileFooterRef,\n MODALS_LOGIC: modalsLogic,\n SCROLL_DIRECTION,\n scrollTop,\n scrollHeight,\n renderModal,\n isMobile,\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import '../../../styles/base.css';
|
|
2
|
+
import './MonoAccordion.styles.css';/* empty css */
|
|
3
|
+
import cn from "classnames";
|
|
4
|
+
import { useEffect, useRef, useState } from "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/Atomic/UI/MonoAccordion/MonoAccordion.js
|
|
7
|
+
var RC = "mono-accordion";
|
|
8
|
+
var MonoAccordion = ({ titleJSX, icon, children, isOpen, onClick, className, disabled, testId = "mono-accordion", datasetProp = {} }) => {
|
|
9
|
+
const [maxHeight, setMaxHeight] = useState();
|
|
10
|
+
const titleRef = useRef();
|
|
11
|
+
const containerRef = useRef();
|
|
12
|
+
const setHeight = (value) => {
|
|
13
|
+
if (value !== void 0) setMaxHeight((state) => `${value}px`);
|
|
14
|
+
else setMaxHeight((state) => `${Array.from(containerRef.current?.childNodes)?.reduce?.((acc, el) => acc + el.offsetHeight, 0)}px`);
|
|
15
|
+
};
|
|
16
|
+
const handleClick = (e) => {
|
|
17
|
+
if (!Array.from(titleRef.current.childNodes).some((el) => el.contains(e.target))) {
|
|
18
|
+
onClick(e);
|
|
19
|
+
e?.preventDefault();
|
|
20
|
+
e?.stopPropagation();
|
|
21
|
+
} else return e;
|
|
22
|
+
};
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
if (!isOpen) setHeight(0);
|
|
25
|
+
else setHeight();
|
|
26
|
+
}, [isOpen, children]);
|
|
27
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
28
|
+
...datasetProp,
|
|
29
|
+
"data-testid": testId,
|
|
30
|
+
className: cn(RC, className, {
|
|
31
|
+
[`${RC}_is-open`]: isOpen,
|
|
32
|
+
[`${RC}_disabled`]: disabled
|
|
33
|
+
}),
|
|
34
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
35
|
+
className: `${RC}__head`,
|
|
36
|
+
onClick: handleClick,
|
|
37
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
38
|
+
ref: titleRef,
|
|
39
|
+
className: `${RC}__tile-container`,
|
|
40
|
+
children: titleJSX
|
|
41
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
42
|
+
className: `${RC}__icon-container`,
|
|
43
|
+
children: icon
|
|
44
|
+
})]
|
|
45
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
46
|
+
ref: containerRef,
|
|
47
|
+
style: { maxHeight },
|
|
48
|
+
className: cn(`${RC}__container`),
|
|
49
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
50
|
+
className: `${RC}__content-wrapper`,
|
|
51
|
+
children
|
|
52
|
+
})
|
|
53
|
+
})]
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
//#endregion
|
|
57
|
+
export { MonoAccordion as default };
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=MonoAccordion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MonoAccordion.js","names":[],"sources":["../../../../../src/Atomic/UI/MonoAccordion/MonoAccordion.js"],"sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\n\nimport cn from \"classnames\";\n\nimport \"./MonoAccordion.scss\";\n\nconst RC = \"mono-accordion\";\n\nconst MonoAccordion = ({\n titleJSX,\n icon,\n children,\n isOpen,\n onClick,\n className,\n disabled,\n testId = \"mono-accordion\",\n datasetProp = {},\n}) => {\n const [maxHeight, setMaxHeight] = useState();\n const titleRef = useRef();\n const containerRef = useRef();\n\n const setHeight = (value) => {\n if (value !== undefined) setMaxHeight((state) => `${value}px`);\n else\n setMaxHeight(\n (state) =>\n `${Array.from(containerRef.current?.childNodes)?.reduce?.((acc, el) => acc + el.offsetHeight, 0)}px`,\n );\n };\n\n const handleClick = (e) => {\n if (\n !Array.from(titleRef.current.childNodes).some((el) =>\n el.contains(e.target),\n )\n ) {\n onClick(e);\n e?.preventDefault();\n e?.stopPropagation();\n } else return e;\n };\n\n useEffect(() => {\n if (!isOpen) setHeight(0);\n else setHeight();\n }, [isOpen, children]);\n\n return (\n <div\n {...datasetProp}\n data-testid={testId}\n className={cn(RC, className, {\n [`${RC}_is-open`]: isOpen,\n [`${RC}_disabled`]: disabled,\n })}\n >\n <div\n className={`${RC}__head`}\n onClick={handleClick}\n >\n <div ref={titleRef} className={`${RC}__tile-container`}>\n {titleJSX}\n </div>\n <span className={`${RC}__icon-container`}>{icon}</span>\n </div>\n\n <div\n ref={containerRef}\n style={{ maxHeight }}\n className={cn(`${RC}__container`)}\n >\n <div className={`${RC}__content-wrapper`}>{children}</div>\n </div>\n </div>\n );\n};\n\nexport default MonoAccordion;\n"],"mappings":";;;;;AAMA,IAAM,KAAK;AAEX,IAAM,iBAAiB,EACrB,UACA,MACA,UACA,QACA,SACA,WACA,UACA,SAAS,kBACT,cAAc,CAAC,QACX;CACJ,MAAM,CAAC,WAAW,gBAAgB,SAAS;CAC3C,MAAM,WAAW,OAAO;CACxB,MAAM,eAAe,OAAO;CAE5B,MAAM,aAAa,UAAU;EAC3B,IAAI,UAAU,KAAA,GAAW,cAAc,UAAU,GAAG,MAAK,GAAI;OAE3D,cACG,UACC,GAAG,MAAM,KAAK,aAAa,SAAS,UAAU,CAAA,EAAG,UAAU,KAAK,OAAO,MAAM,GAAG,cAAc,CAAC,EAAC,GACpG;CACJ;CAEA,MAAM,eAAe,MAAM;EACzB,IACE,CAAC,MAAM,KAAK,SAAS,QAAQ,UAAU,CAAA,CAAE,MAAM,OAC7C,GAAG,SAAS,EAAE,MAAM,CACtB,GACA;GACA,QAAQ,CAAC;GACT,GAAG,eAAe;GAClB,GAAG,gBAAgB;EACrB,OAAO,OAAO;CAChB;CAEA,gBAAgB;EACd,IAAI,CAAC,QAAQ,UAAU,CAAC;OACnB,UAAU;CACjB,GAAG,CAAC,QAAQ,QAAQ,CAAC;CAErB,OACE,qBAAC,OAAA;EACE,GAAG;EACJ,eAAa;EACb,WAAW,GAAG,IAAI,WAAW;IAC1B,GAAG,GAAE,YAAa;IAClB,GAAG,GAAE,aAAc;EACtB,CAAC;EAED,UAAA,CAAA,qBAAC,OAAA;GACC,WAAW,GAAG,GAAE;GAChB,SAAS;GAET,UAAA,CAAA,oBAAC,OAAA;IAAI,KAAK;IAAU,WAAW,GAAG,GAAE;IACjC,UAAA;GAAA,CACH,GACA,oBAAC,QAAA;IAAK,WAAW,GAAG,GAAE;IAAqB,UAAA;GAAA,CAAK,CAAA;EAAA,CAClD,GAEA,oBAAC,OAAA;GACC,KAAK;GACL,OAAO,EAAE,UAAU;GACnB,WAAW,GAAG,GAAG,GAAE,YAAa;GAEhC,UAAA,oBAAC,OAAA;IAAI,WAAW,GAAG,GAAE;IAAsB;GAAA,CAAS;EAAA,CACtD,CAAA;CAAA,CACF;AAEJ"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/* COLORS*/
|
|
2
|
+
/*GRID*/
|
|
3
|
+
/*FONTS*/
|
|
4
|
+
/*Z-INDEX*/
|
|
5
|
+
/*OTHER*/
|
|
6
|
+
/* THEME COLORS */
|
|
7
|
+
/* COLORS */
|
|
8
|
+
/* GRID */
|
|
9
|
+
/* FONTS */
|
|
10
|
+
:export {
|
|
11
|
+
primaryColor: #3f51b5;
|
|
12
|
+
secondaryColor: #f50057;
|
|
13
|
+
successColor: #4caf50;
|
|
14
|
+
warningColor: #ff9800;
|
|
15
|
+
errorColor: #f44336;
|
|
16
|
+
infoColor: #2196f3;
|
|
17
|
+
backgroundColor: #ffffff;
|
|
18
|
+
textColor: #212121;
|
|
19
|
+
textSecondaryColor: #757575;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.mono-accordion {
|
|
23
|
+
height: fit-content;
|
|
24
|
+
}
|
|
25
|
+
.mono-accordion__head {
|
|
26
|
+
display: flex;
|
|
27
|
+
justify-content: space-between;
|
|
28
|
+
align-items: center;
|
|
29
|
+
height: fit-content;
|
|
30
|
+
padding: 10px 15px;
|
|
31
|
+
cursor: pointer;
|
|
32
|
+
}
|
|
33
|
+
.mono-accordion__head:hover {
|
|
34
|
+
background-color: #f8f8fa;
|
|
35
|
+
}
|
|
36
|
+
.mono-accordion__icon-container {
|
|
37
|
+
display: flex;
|
|
38
|
+
flex-flow: row nowrap;
|
|
39
|
+
justify-content: center;
|
|
40
|
+
align-items: center;
|
|
41
|
+
width: fit-content;
|
|
42
|
+
height: 100%;
|
|
43
|
+
}
|
|
44
|
+
.mono-accordion__tile-container {
|
|
45
|
+
flex-grow: 1;
|
|
46
|
+
}
|
|
47
|
+
.mono-accordion__container {
|
|
48
|
+
display: flex;
|
|
49
|
+
overflow: hidden;
|
|
50
|
+
flex-direction: column;
|
|
51
|
+
justify-content: center;
|
|
52
|
+
align-items: flex-start;
|
|
53
|
+
font-size: 13px;
|
|
54
|
+
transition: all 0.25s ease-out;
|
|
55
|
+
}
|
|
56
|
+
.mono-accordion__container scrollbar {
|
|
57
|
+
-moz-appearance: none !important;
|
|
58
|
+
}
|
|
59
|
+
.mono-accordion__container scrollbarbutton {
|
|
60
|
+
-moz-appearance: none !important;
|
|
61
|
+
}
|
|
62
|
+
.mono-accordion__container thumb {
|
|
63
|
+
-moz-appearance: none !important;
|
|
64
|
+
}
|
|
65
|
+
.mono-accordion__container scrollcorner {
|
|
66
|
+
-moz-appearance: none !important;
|
|
67
|
+
resize: both;
|
|
68
|
+
}
|
|
69
|
+
.mono-accordion__container::-webkit-scrollbar {
|
|
70
|
+
width: 8px;
|
|
71
|
+
}
|
|
72
|
+
.mono-accordion__container::-webkit-scrollbar-thumb {
|
|
73
|
+
-webkit-border-radius: 3px;
|
|
74
|
+
border-radius: 3px;
|
|
75
|
+
background: #52aeff;
|
|
76
|
+
}
|
|
77
|
+
.mono-accordion__container::-webkit-scrollbar-thumb:hover {
|
|
78
|
+
background: #3e62ff;
|
|
79
|
+
}
|
|
80
|
+
.mono-accordion__container::-webkit-scrollbar:horizontal {
|
|
81
|
+
height: 8px;
|
|
82
|
+
}
|
|
83
|
+
.mono-accordion__container::-webkit-scrollbar-track:horizontal {
|
|
84
|
+
background: #F4F6FF;
|
|
85
|
+
}
|
|
86
|
+
.mono-accordion__container::-webkit-scrollbar-thumb:horizontal {
|
|
87
|
+
-webkit-border-radius: 6px;
|
|
88
|
+
border-radius: 6px;
|
|
89
|
+
background: #BAC2C9;
|
|
90
|
+
background-clip: padding-box;
|
|
91
|
+
border: 4px solid rgba(0, 0, 0, 0);
|
|
92
|
+
}
|
|
93
|
+
.mono-accordion__container::-webkit-scrollbar-thumb:horizontal:hover {
|
|
94
|
+
background: #9AA0B9;
|
|
95
|
+
border: 2px solid rgba(0, 0, 0, 0);
|
|
96
|
+
background-clip: padding-box;
|
|
97
|
+
}
|
|
98
|
+
.mono-accordion__content-wrapper {
|
|
99
|
+
padding: 0 15px;
|
|
100
|
+
}
|
|
101
|
+
.mono-accordion_open .mono-accordion__container {
|
|
102
|
+
padding: 10px 15px;
|
|
103
|
+
transition: all 0.25s ease-out;
|
|
104
|
+
}
|
|
105
|
+
.mono-accordion_open .mono-accordion__content-wrapper {
|
|
106
|
+
pointer-events: initial;
|
|
107
|
+
}
|
|
108
|
+
.mono-accordion_disabled {
|
|
109
|
+
pointer-events: none;
|
|
110
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/Atomic/UI/MonoAccordion/index.ts"],"sourcesContent":["import MonoAccordion from './MonoAccordion';\n\nexport default MonoAccordion;\nexport type { IMonoAccordionProps } from './MonoAccordion.interface';\n"],"mappings":";;AAEA,IAAA,wBAAe"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import '../../../styles/base.css';
|
|
2
|
+
import { KEYBOARD_KEY_CODES } from "../../../Constants/index.constants.js";
|
|
3
|
+
import './NavLine.styles.css';/* empty css */
|
|
4
|
+
import cn from "classnames";
|
|
5
|
+
import { createRef, useCallback, useEffect, useRef, useState } from "react";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import * as Icons from "react-feather";
|
|
8
|
+
import { NavLink } from "react-router-dom";
|
|
9
|
+
//#region src/Atomic/UI/NavLine/NavLine.tsx
|
|
10
|
+
var CN = "nav-line";
|
|
11
|
+
/**
|
|
12
|
+
* Проверяет и нормализует ref
|
|
13
|
+
* @param ref - React ref объект или функция обратного вызова
|
|
14
|
+
* @returns Нормализованный ref или null
|
|
15
|
+
*/
|
|
16
|
+
function checkedRef(ref) {
|
|
17
|
+
if (!ref) return null;
|
|
18
|
+
return typeof ref === "function" ? (node) => ref(node) : ref;
|
|
19
|
+
}
|
|
20
|
+
var NavLine = ({ root = "", activeTab, variant, onChange, className, items, children, isLocal = false, mode, isNavigateByKeys, isTabLoading, scrollMode = false, testId = CN }) => {
|
|
21
|
+
const [navLineItems, setNavLineItems] = useState([]);
|
|
22
|
+
const wrapperRef = useRef(null);
|
|
23
|
+
const wrapperInnerRef = useRef(null);
|
|
24
|
+
const [showScrollButtons, setShowScrollButtons] = useState(false);
|
|
25
|
+
const [canScrollLeft, setCanScrollLeft] = useState(false);
|
|
26
|
+
const [canScrollRight, setCanScrollRight] = useState(false);
|
|
27
|
+
const [isScrollBlocked, setIsScrollBlocked] = useState(false);
|
|
28
|
+
const checkScroll = useCallback(() => {
|
|
29
|
+
const inner = wrapperInnerRef.current;
|
|
30
|
+
if (!inner) return;
|
|
31
|
+
const hasOverflow = inner.scrollWidth > inner.clientWidth;
|
|
32
|
+
const canScrollLeft = inner.scrollLeft > 0;
|
|
33
|
+
const canScrollRight = inner.scrollLeft < inner.scrollWidth - inner.clientWidth;
|
|
34
|
+
setShowScrollButtons(hasOverflow);
|
|
35
|
+
setCanScrollLeft(canScrollLeft);
|
|
36
|
+
setCanScrollRight(canScrollRight);
|
|
37
|
+
}, []);
|
|
38
|
+
const scroll = useCallback((direction) => {
|
|
39
|
+
if (isScrollBlocked || !wrapperInnerRef.current) return;
|
|
40
|
+
setIsScrollBlocked(true);
|
|
41
|
+
const offset = direction === "left" ? -100 : 100;
|
|
42
|
+
try {
|
|
43
|
+
wrapperInnerRef.current.scrollBy({
|
|
44
|
+
left: offset,
|
|
45
|
+
behavior: "smooth"
|
|
46
|
+
});
|
|
47
|
+
} catch (error) {
|
|
48
|
+
console.error("scrollBy is not supported", error);
|
|
49
|
+
if (wrapperInnerRef.current) wrapperInnerRef.current.scrollLeft += offset;
|
|
50
|
+
}
|
|
51
|
+
setTimeout(() => {
|
|
52
|
+
setIsScrollBlocked(false);
|
|
53
|
+
checkScroll();
|
|
54
|
+
}, 300);
|
|
55
|
+
}, [isScrollBlocked, checkScroll]);
|
|
56
|
+
const handleWheel = useCallback((e) => {
|
|
57
|
+
if (!scrollMode) return;
|
|
58
|
+
e.preventDefault();
|
|
59
|
+
if (e.deltaY > 0) scroll("right");
|
|
60
|
+
else scroll("left");
|
|
61
|
+
}, [scroll, scrollMode]);
|
|
62
|
+
const onTabChange = useCallback((item) => {
|
|
63
|
+
if (!item.disabled && !(mode === "create" && item.tabId !== "general")) onChange(item.tabId);
|
|
64
|
+
}, [mode, onChange]);
|
|
65
|
+
const navigateByKeys = useCallback((event) => {
|
|
66
|
+
if (event.repeat) return;
|
|
67
|
+
const activeTabIndex = items.findIndex((tab) => tab.tabId === activeTab);
|
|
68
|
+
const nextTabID = items[activeTabIndex + 1]?.tabId;
|
|
69
|
+
const prevTabID = items[activeTabIndex - 1]?.tabId;
|
|
70
|
+
if (event.keyCode === KEYBOARD_KEY_CODES.ARROW_RIGHT && nextTabID) onChange(nextTabID);
|
|
71
|
+
else if (event.keyCode === KEYBOARD_KEY_CODES.ARROW_LEFT && prevTabID) onChange(prevTabID);
|
|
72
|
+
}, [
|
|
73
|
+
activeTab,
|
|
74
|
+
items,
|
|
75
|
+
onChange
|
|
76
|
+
]);
|
|
77
|
+
useEffect(() => {
|
|
78
|
+
setNavLineItems(items.map((item) => ({
|
|
79
|
+
...item,
|
|
80
|
+
ref: createRef()
|
|
81
|
+
})));
|
|
82
|
+
}, [items]);
|
|
83
|
+
useEffect(() => {
|
|
84
|
+
if (isNavigateByKeys && !isTabLoading) document.addEventListener("keydown", navigateByKeys);
|
|
85
|
+
return () => document.removeEventListener("keydown", navigateByKeys);
|
|
86
|
+
}, [
|
|
87
|
+
isNavigateByKeys,
|
|
88
|
+
isTabLoading,
|
|
89
|
+
navigateByKeys
|
|
90
|
+
]);
|
|
91
|
+
useEffect(() => {
|
|
92
|
+
if (!scrollMode) return;
|
|
93
|
+
const inner = wrapperInnerRef.current;
|
|
94
|
+
if (!inner) return;
|
|
95
|
+
const resizeObserver = new ResizeObserver(checkScroll);
|
|
96
|
+
resizeObserver.observe(inner);
|
|
97
|
+
inner.addEventListener("scroll", checkScroll);
|
|
98
|
+
inner.addEventListener("wheel", handleWheel, { passive: false });
|
|
99
|
+
checkScroll();
|
|
100
|
+
return () => {
|
|
101
|
+
resizeObserver.disconnect();
|
|
102
|
+
inner.removeEventListener("scroll", checkScroll);
|
|
103
|
+
inner.removeEventListener("wheel", handleWheel);
|
|
104
|
+
};
|
|
105
|
+
}, [
|
|
106
|
+
scrollMode,
|
|
107
|
+
checkScroll,
|
|
108
|
+
handleWheel
|
|
109
|
+
]);
|
|
110
|
+
const renderNavItem = (item) => {
|
|
111
|
+
const Icon = item.icon ? Icons[item.icon] : null;
|
|
112
|
+
const isDisabled = item.disabled || mode === "create" && item.tabId !== "general";
|
|
113
|
+
const commonProps = {
|
|
114
|
+
"title": item.title,
|
|
115
|
+
"className": cn({ "nav-line__item": !variant }, { "nav-line--simple__item": variant === "simple" }, { active: activeTab === item.tabId }, { disabled: isDisabled }, { "nav-line__item--hidden": item.isHidden }),
|
|
116
|
+
"role": "tab",
|
|
117
|
+
"aria-selected": activeTab === item.tabId,
|
|
118
|
+
"aria-disabled": isDisabled,
|
|
119
|
+
"tabIndex": isDisabled ? -1 : 0
|
|
120
|
+
};
|
|
121
|
+
const content = /* @__PURE__ */ jsxs("div", {
|
|
122
|
+
className: "nav-line__content",
|
|
123
|
+
children: [
|
|
124
|
+
Icon && /* @__PURE__ */ jsx("div", {
|
|
125
|
+
className: "nav-line__item--icon",
|
|
126
|
+
"aria-hidden": "true",
|
|
127
|
+
children: /* @__PURE__ */ jsx(Icon, {})
|
|
128
|
+
}),
|
|
129
|
+
/* @__PURE__ */ jsx("span", {
|
|
130
|
+
className: cn({ "nav-line__item--label": variant !== "simple" }),
|
|
131
|
+
children: item.label
|
|
132
|
+
}),
|
|
133
|
+
item.count !== void 0 && /* @__PURE__ */ jsxs("span", {
|
|
134
|
+
className: "nav-line-count",
|
|
135
|
+
"aria-label": `${item.count} items`,
|
|
136
|
+
children: [
|
|
137
|
+
"(",
|
|
138
|
+
item.count,
|
|
139
|
+
")"
|
|
140
|
+
]
|
|
141
|
+
})
|
|
142
|
+
]
|
|
143
|
+
});
|
|
144
|
+
if (isLocal) return /* @__PURE__ */ jsx("span", {
|
|
145
|
+
...commonProps,
|
|
146
|
+
ref: checkedRef(item.ref),
|
|
147
|
+
onClick: () => !isDisabled && onTabChange(item),
|
|
148
|
+
onKeyPress: (e) => {
|
|
149
|
+
if (!isDisabled && (e.key === "Enter" || e.key === " ")) {
|
|
150
|
+
e.preventDefault();
|
|
151
|
+
onTabChange(item);
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
children: content
|
|
155
|
+
}, `tab__${item.tabId}`);
|
|
156
|
+
return /* @__PURE__ */ jsx(NavLink, {
|
|
157
|
+
...commonProps,
|
|
158
|
+
to: `${root}${item?.linkChapter || item.tabId}/`,
|
|
159
|
+
onClick: (e) => {
|
|
160
|
+
if (isDisabled) e.preventDefault();
|
|
161
|
+
},
|
|
162
|
+
children: content
|
|
163
|
+
}, `tab__${item.tabId}`);
|
|
164
|
+
};
|
|
165
|
+
return /* @__PURE__ */ jsx("div", {
|
|
166
|
+
className: "nav-line-wrapper",
|
|
167
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
168
|
+
"data-testid": testId,
|
|
169
|
+
className: cn({ [CN]: !variant }, { [`${CN}--simple`]: variant === "simple" }, { [`${CN}--scroll-mode`]: scrollMode }, className),
|
|
170
|
+
ref: wrapperRef,
|
|
171
|
+
children: [
|
|
172
|
+
scrollMode && showScrollButtons && /* @__PURE__ */ jsx("button", {
|
|
173
|
+
type: "button",
|
|
174
|
+
"data-testid": "nav-line-scroll-prev",
|
|
175
|
+
className: "nav-line--simple__arrow nav-line--simple__arrow--prev",
|
|
176
|
+
onClick: () => scroll("left"),
|
|
177
|
+
"aria-label": "Scroll previous",
|
|
178
|
+
disabled: !canScrollLeft,
|
|
179
|
+
children: /* @__PURE__ */ jsx(Icons.ChevronLeft, {})
|
|
180
|
+
}),
|
|
181
|
+
/* @__PURE__ */ jsx("div", {
|
|
182
|
+
ref: wrapperInnerRef,
|
|
183
|
+
className: cn({ "nav-line__inner": !variant }, { "nav-line--simple__inner": variant === "simple" }),
|
|
184
|
+
role: "tablist",
|
|
185
|
+
"aria-orientation": "horizontal",
|
|
186
|
+
children: navLineItems.map(renderNavItem)
|
|
187
|
+
}),
|
|
188
|
+
scrollMode && showScrollButtons && /* @__PURE__ */ jsx("button", {
|
|
189
|
+
type: "button",
|
|
190
|
+
"data-testid": "nav-line-scroll-next",
|
|
191
|
+
className: "nav-line--simple__arrow nav-line--simple__arrow--next",
|
|
192
|
+
onClick: () => scroll("right"),
|
|
193
|
+
"aria-label": "Scroll next",
|
|
194
|
+
disabled: !canScrollRight,
|
|
195
|
+
children: /* @__PURE__ */ jsx(Icons.ChevronRight, {})
|
|
196
|
+
}),
|
|
197
|
+
children && /* @__PURE__ */ jsx("div", {
|
|
198
|
+
className: "nav-line__body",
|
|
199
|
+
role: "tabpanel",
|
|
200
|
+
children
|
|
201
|
+
})
|
|
202
|
+
]
|
|
203
|
+
})
|
|
204
|
+
});
|
|
205
|
+
};
|
|
206
|
+
//#endregion
|
|
207
|
+
export { NavLine as default };
|
|
208
|
+
|
|
209
|
+
//# sourceMappingURL=NavLine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavLine.js","names":[],"sources":["../../../../../src/Atomic/UI/NavLine/NavLine.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport type { HTMLElementOrAnchor, RefType } from '../../../types/base.types';\nimport type { INavLineItem, INavLineProps } from './NavLine.interface';\nimport cn from 'classnames';\nimport React, { createRef, useCallback, useEffect, useRef, useState } from 'react';\n\nimport * as Icons from 'react-feather';\n\nimport { NavLink } from 'react-router-dom';\n\nimport { KEYBOARD_KEY_CODES } from '../../../Constants/index.constants';\n\nimport './NavLine.scss';\n\nconst CN = 'nav-line';\n\n/**\n * Проверяет и нормализует ref\n * @param ref - React ref объект или функция обратного вызова\n * @returns Нормализованный ref или null\n */\nfunction checkedRef<T extends HTMLElementOrAnchor = HTMLElement>(ref: RefType<T>): RefType<T> {\n if (!ref) return null;\n return typeof ref === 'function' ? (node: T) => ref(node) : ref;\n}\n\nconst NavLine: React.FC<INavLineProps> = ({\n root = '',\n activeTab,\n variant,\n onChange,\n className,\n items,\n children,\n isLocal = false,\n mode,\n isNavigateByKeys,\n isTabLoading,\n scrollMode = false,\n testId = CN,\n}) => {\n const [navLineItems, setNavLineItems] = useState<\n Array<INavLineItem & { ref: React.RefObject<HTMLElement> }>\n >([]);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const wrapperInnerRef = useRef<HTMLDivElement>(null);\n const [showScrollButtons, setShowScrollButtons] = useState(false);\n const [canScrollLeft, setCanScrollLeft] = useState(false);\n const [canScrollRight, setCanScrollRight] = useState(false);\n const [isScrollBlocked, setIsScrollBlocked] = useState(false);\n\n const checkScroll = useCallback(() => {\n const inner = wrapperInnerRef.current;\n if (!inner) return;\n\n const hasOverflow = inner.scrollWidth > inner.clientWidth;\n const canScrollLeft = inner.scrollLeft > 0;\n const canScrollRight = inner.scrollLeft < inner.scrollWidth - inner.clientWidth;\n\n setShowScrollButtons(hasOverflow);\n setCanScrollLeft(canScrollLeft);\n setCanScrollRight(canScrollRight);\n }, []);\n\n const scroll = useCallback(\n (direction: 'left' | 'right') => {\n if (isScrollBlocked || !wrapperInnerRef.current) return;\n\n setIsScrollBlocked(true);\n const scrollAmount = 100;\n const offset = direction === 'left' ? -scrollAmount : scrollAmount;\n\n try {\n wrapperInnerRef.current.scrollBy({\n left: offset,\n behavior: 'smooth',\n });\n }\n catch (error) {\n console.error('scrollBy is not supported', error);\n // Fallback для браузеров, не поддерживающих scrollBy\n if (wrapperInnerRef.current) {\n wrapperInnerRef.current.scrollLeft += offset;\n }\n }\n\n setTimeout(() => {\n setIsScrollBlocked(false);\n checkScroll();\n }, 300);\n },\n [isScrollBlocked, checkScroll],\n );\n\n const handleWheel = useCallback(\n (e: WheelEvent) => {\n if (!scrollMode) return;\n e.preventDefault();\n\n if (e.deltaY > 0) {\n scroll('right');\n }\n else {\n scroll('left');\n }\n },\n [scroll, scrollMode],\n );\n\n const onTabChange = useCallback(\n (item: INavLineItem) => {\n if (!item.disabled && !(mode === 'create' && item.tabId !== 'general')) {\n onChange(item.tabId);\n }\n },\n [mode, onChange],\n );\n\n const navigateByKeys = useCallback(\n (event: KeyboardEvent) => {\n if (event.repeat) return;\n\n const activeTabIndex = items.findIndex(tab => tab.tabId === activeTab);\n const nextTabID = items[activeTabIndex + 1]?.tabId;\n const prevTabID = items[activeTabIndex - 1]?.tabId;\n\n if (event.keyCode === KEYBOARD_KEY_CODES.ARROW_RIGHT && nextTabID) {\n onChange(nextTabID);\n }\n else if (event.keyCode === KEYBOARD_KEY_CODES.ARROW_LEFT && prevTabID) {\n onChange(prevTabID);\n }\n },\n [activeTab, items, onChange],\n );\n\n // Инициализация табов с ref\n useEffect(() => {\n setNavLineItems(\n items.map(item => ({\n ...item,\n ref: createRef<HTMLElement>(),\n })),\n );\n }, [items]);\n\n // Обработка клавиатурной навигации\n useEffect(() => {\n if (isNavigateByKeys && !isTabLoading) {\n document.addEventListener('keydown', navigateByKeys);\n }\n\n return () => document.removeEventListener('keydown', navigateByKeys);\n }, [isNavigateByKeys, isTabLoading, navigateByKeys]);\n\n // Настройка скролла\n useEffect(() => {\n if (!scrollMode) return;\n\n const inner = wrapperInnerRef.current;\n if (!inner) return;\n\n const resizeObserver = new ResizeObserver(checkScroll);\n resizeObserver.observe(inner);\n\n inner.addEventListener('scroll', checkScroll);\n inner.addEventListener('wheel', handleWheel, { passive: false });\n\n checkScroll();\n\n return () => {\n resizeObserver.disconnect();\n inner.removeEventListener('scroll', checkScroll);\n inner.removeEventListener('wheel', handleWheel);\n };\n }, [scrollMode, checkScroll, handleWheel]);\n\n const renderNavItem = (item: INavLineItem & { ref: React.RefObject<HTMLElement> }): ReactNode => {\n const Icon = item.icon ? Icons[item.icon as keyof typeof Icons] : null;\n const isDisabled = item.disabled || (mode === 'create' && item.tabId !== 'general');\n\n const commonProps = {\n 'title': item.title,\n 'className': cn(\n { 'nav-line__item': !variant },\n { 'nav-line--simple__item': variant === 'simple' },\n { active: activeTab === item.tabId },\n { disabled: isDisabled },\n { 'nav-line__item--hidden': item.isHidden },\n ),\n 'role': 'tab',\n 'aria-selected': activeTab === item.tabId,\n 'aria-disabled': isDisabled,\n 'tabIndex': isDisabled ? -1 : 0,\n };\n\n const content = (\n <div className=\"nav-line__content\">\n {Icon && (\n <div className=\"nav-line__item--icon\" aria-hidden=\"true\">\n <Icon />\n </div>\n )}\n <span className={cn({ 'nav-line__item--label': variant !== 'simple' })}>{item.label}</span>\n {item.count !== undefined && (\n <span className=\"nav-line-count\" aria-label={`${item.count} items`}>\n (\n {item.count}\n )\n </span>\n )}\n </div>\n );\n if (isLocal) {\n return (\n <span\n key={`tab__${item.tabId}`}\n {...commonProps}\n ref={checkedRef(item.ref)}\n onClick={() => !isDisabled && onTabChange(item)}\n onKeyPress={(e: React.KeyboardEvent) => {\n if (!isDisabled && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n onTabChange(item);\n }\n }}\n >\n {content}\n </span>\n );\n }\n\n return (\n <NavLink\n key={`tab__${item.tabId}`}\n {...commonProps}\n to={`${root}${item?.linkChapter || item.tabId}/`}\n onClick={(e) => {\n if (isDisabled) {\n e.preventDefault();\n }\n }}\n >\n {content}\n </NavLink>\n );\n };\n\n return (\n <div className=\"nav-line-wrapper\">\n <div\n data-testid={testId}\n className={cn(\n { [CN]: !variant },\n { [`${CN}--simple`]: variant === 'simple' },\n { [`${CN}--scroll-mode`]: scrollMode },\n className,\n )}\n ref={wrapperRef}\n >\n {scrollMode && showScrollButtons && (\n <button\n type=\"button\"\n data-testid=\"nav-line-scroll-prev\"\n className=\"nav-line--simple__arrow nav-line--simple__arrow--prev\"\n onClick={() => scroll('left')}\n aria-label=\"Scroll previous\"\n disabled={!canScrollLeft}\n >\n <Icons.ChevronLeft />\n </button>\n )}\n\n <div\n ref={wrapperInnerRef}\n className={cn({ 'nav-line__inner': !variant }, { 'nav-line--simple__inner': variant === 'simple' })}\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n >\n {navLineItems.map(renderNavItem)}\n </div>\n\n {scrollMode && showScrollButtons && (\n <button\n type=\"button\"\n data-testid=\"nav-line-scroll-next\"\n className=\"nav-line--simple__arrow nav-line--simple__arrow--next\"\n onClick={() => scroll('right')}\n aria-label=\"Scroll next\"\n disabled={!canScrollRight}\n >\n <Icons.ChevronRight />\n </button>\n )}\n\n {children && (\n <div className=\"nav-line__body\" role=\"tabpanel\">\n {children}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default NavLine;\n"],"mappings":";;;;;;;;AAcA,IAAM,KAAK;;;;;;AAOX,SAAS,WAAwD,KAA6B;CAC5F,IAAI,CAAC,KAAK,OAAO;CACjB,OAAO,OAAO,QAAQ,cAAc,SAAY,IAAI,IAAI,IAAI;AAC9D;AAEA,IAAM,WAAoC,EACxC,OAAO,IACP,WACA,SACA,UACA,WACA,OACA,UACA,UAAU,OACV,MACA,kBACA,cACA,aAAa,OACb,SAAS,SACL;CACJ,MAAM,CAAC,cAAc,mBAAmB,SAEtC,CAAC,CAAC;CACJ,MAAM,aAAa,OAAuB,IAAI;CAC9C,MAAM,kBAAkB,OAAuB,IAAI;CACnD,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,KAAK;CAChE,MAAM,CAAC,eAAe,oBAAoB,SAAS,KAAK;CACxD,MAAM,CAAC,gBAAgB,qBAAqB,SAAS,KAAK;CAC1D,MAAM,CAAC,iBAAiB,sBAAsB,SAAS,KAAK;CAE5D,MAAM,cAAc,kBAAkB;EACpC,MAAM,QAAQ,gBAAgB;EAC9B,IAAI,CAAC,OAAO;EAEZ,MAAM,cAAc,MAAM,cAAc,MAAM;EAC9C,MAAM,gBAAgB,MAAM,aAAa;EACzC,MAAM,iBAAiB,MAAM,aAAa,MAAM,cAAc,MAAM;EAEpE,qBAAqB,WAAW;EAChC,iBAAiB,aAAa;EAC9B,kBAAkB,cAAc;CAClC,GAAG,CAAC,CAAC;CAEL,MAAM,SAAS,aACZ,cAAgC;EAC/B,IAAI,mBAAmB,CAAC,gBAAgB,SAAS;EAEjD,mBAAmB,IAAI;EAEvB,MAAM,SAAS,cAAc,SAAS,OAAgB;EAEtD,IAAI;GACF,gBAAgB,QAAQ,SAAS;IAC/B,MAAM;IACN,UAAU;GACZ,CAAC;EACH,SACO,OAAO;GACZ,QAAQ,MAAM,6BAA6B,KAAK;GAEhD,IAAI,gBAAgB,SAClB,gBAAgB,QAAQ,cAAc;EAE1C;EAEA,iBAAiB;GACf,mBAAmB,KAAK;GACxB,YAAY;EACd,GAAG,GAAG;CACR,GACA,CAAC,iBAAiB,WAAW,CAC/B;CAEA,MAAM,cAAc,aACjB,MAAkB;EACjB,IAAI,CAAC,YAAY;EACjB,EAAE,eAAe;EAEjB,IAAI,EAAE,SAAS,GACb,OAAO,OAAO;OAGd,OAAO,MAAM;CAEjB,GACA,CAAC,QAAQ,UAAU,CACrB;CAEA,MAAM,cAAc,aACjB,SAAuB;EACtB,IAAI,CAAC,KAAK,YAAY,EAAE,SAAS,YAAY,KAAK,UAAU,YAC1D,SAAS,KAAK,KAAK;CAEvB,GACA,CAAC,MAAM,QAAQ,CACjB;CAEA,MAAM,iBAAiB,aACpB,UAAyB;EACxB,IAAI,MAAM,QAAQ;EAElB,MAAM,iBAAiB,MAAM,WAAU,QAAO,IAAI,UAAU,SAAS;EACrE,MAAM,YAAY,MAAM,iBAAiB,EAAE,EAAE;EAC7C,MAAM,YAAY,MAAM,iBAAiB,EAAE,EAAE;EAE7C,IAAI,MAAM,YAAY,mBAAmB,eAAe,WACtD,SAAS,SAAS;OAEf,IAAI,MAAM,YAAY,mBAAmB,cAAc,WAC1D,SAAS,SAAS;CAEtB,GACA;EAAC;EAAW;EAAO;CAAQ,CAC7B;CAGA,gBAAgB;EACd,gBACE,MAAM,KAAI,UAAS;GACjB,GAAG;GACH,KAAK,UAAuB;EAC9B,EAAE,CACJ;CACF,GAAG,CAAC,KAAK,CAAC;CAGV,gBAAgB;EACd,IAAI,oBAAoB,CAAC,cACvB,SAAS,iBAAiB,WAAW,cAAc;EAGrD,aAAa,SAAS,oBAAoB,WAAW,cAAc;CACrE,GAAG;EAAC;EAAkB;EAAc;CAAc,CAAC;CAGnD,gBAAgB;EACd,IAAI,CAAC,YAAY;EAEjB,MAAM,QAAQ,gBAAgB;EAC9B,IAAI,CAAC,OAAO;EAEZ,MAAM,iBAAiB,IAAI,eAAe,WAAW;EACrD,eAAe,QAAQ,KAAK;EAE5B,MAAM,iBAAiB,UAAU,WAAW;EAC5C,MAAM,iBAAiB,SAAS,aAAa,EAAE,SAAS,MAAM,CAAC;EAE/D,YAAY;EAEZ,aAAa;GACX,eAAe,WAAW;GAC1B,MAAM,oBAAoB,UAAU,WAAW;GAC/C,MAAM,oBAAoB,SAAS,WAAW;EAChD;CACF,GAAG;EAAC;EAAY;EAAa;CAAW,CAAC;CAEzC,MAAM,iBAAiB,SAA0E;EAC/F,MAAM,OAAO,KAAK,OAAO,MAAM,KAAK,QAA8B;EAClE,MAAM,aAAa,KAAK,YAAa,SAAS,YAAY,KAAK,UAAU;EAEzE,MAAM,cAAc;GAClB,SAAS,KAAK;GACd,aAAa,GACX,EAAE,kBAAkB,CAAC,QAAQ,GAC7B,EAAE,0BAA0B,YAAY,SAAS,GACjD,EAAE,QAAQ,cAAc,KAAK,MAAM,GACnC,EAAE,UAAU,WAAW,GACvB,EAAE,0BAA0B,KAAK,SAAS,CAC5C;GACA,QAAQ;GACR,iBAAiB,cAAc,KAAK;GACpC,iBAAiB;GACjB,YAAY,aAAa,KAAK;EAChC;EAEA,MAAM,UACJ,qBAAC,OAAD;GAAK,WAAU;aAAf;IACG,QACC,oBAAC,OAAD;KAAK,WAAU;KAAuB,eAAY;eAChD,oBAAC,MAAD,CAAO,CAAA;IACJ,CAAA;IAEP,oBAAC,QAAD;KAAM,WAAW,GAAG,EAAE,yBAAyB,YAAY,SAAS,CAAC;eAAI,KAAK;IAAY,CAAA;IACzF,KAAK,UAAU,KAAA,KACd,qBAAC,QAAD;KAAM,WAAU;KAAiB,cAAY,GAAG,KAAK,MAAM;eAA3D;MAAoE;MAEjE,KAAK;MAAM;KAER;;GAEL;;EAEP,IAAI,SACF,OACE,oBAAC,QAAD;GAEE,GAAI;GACJ,KAAK,WAAW,KAAK,GAAG;GACxB,eAAe,CAAC,cAAc,YAAY,IAAI;GAC9C,aAAa,MAA2B;IACtC,IAAI,CAAC,eAAe,EAAE,QAAQ,WAAW,EAAE,QAAQ,MAAM;KACvD,EAAE,eAAe;KACjB,YAAY,IAAI;IAClB;GACF;aAEC;EACG,GAZC,QAAQ,KAAK,OAYd;EAIV,OACE,oBAAC,SAAD;GAEE,GAAI;GACJ,IAAI,GAAG,OAAO,MAAM,eAAe,KAAK,MAAM;GAC9C,UAAU,MAAM;IACd,IAAI,YACF,EAAE,eAAe;GAErB;aAEC;EACM,GAVF,QAAQ,KAAK,OAUX;CAEb;CAEA,OACE,oBAAC,OAAD;EAAK,WAAU;YACb,qBAAC,OAAD;GACE,eAAa;GACb,WAAW,GACT,GAAG,KAAK,CAAC,QAAQ,GACjB,GAAG,GAAG,GAAG,YAAY,YAAY,SAAS,GAC1C,GAAG,GAAG,GAAG,iBAAiB,WAAW,GACrC,SACF;GACA,KAAK;aARP;IAUG,cAAc,qBACb,oBAAC,UAAD;KACE,MAAK;KACL,eAAY;KACZ,WAAU;KACV,eAAe,OAAO,MAAM;KAC5B,cAAW;KACX,UAAU,CAAC;eAEX,oBAAC,MAAM,aAAP,CAAoB,CAAA;IACd,CAAA;IAGV,oBAAC,OAAD;KACE,KAAK;KACL,WAAW,GAAG,EAAE,mBAAmB,CAAC,QAAQ,GAAG,EAAE,2BAA2B,YAAY,SAAS,CAAC;KAClG,MAAK;KACL,oBAAiB;eAEhB,aAAa,IAAI,aAAa;IAC5B,CAAA;IAEJ,cAAc,qBACb,oBAAC,UAAD;KACE,MAAK;KACL,eAAY;KACZ,WAAU;KACV,eAAe,OAAO,OAAO;KAC7B,cAAW;KACX,UAAU,CAAC;eAEX,oBAAC,MAAM,cAAP,CAAqB,CAAA;IACf,CAAA;IAGT,YACC,oBAAC,OAAD;KAAK,WAAU;KAAiB,MAAK;KAClC;IACE,CAAA;GAEJ;;CACF,CAAA;AAET"}
|