@moysklad/uikit 30.4.0 → 31.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -4
- package/dist/colorVariables.css +23 -1
- package/dist/components/AutoComplete/AutoComplete.js +2 -2
- package/dist/components/BentoBlock/BentoBlock.d.ts +15 -0
- package/dist/components/BentoBlock/BentoBlock.js +20 -0
- package/dist/components/BentoBlock/BentoBlock.module.js +9 -0
- package/dist/components/BentoBlock/BentoBlock_module.css +50 -0
- package/dist/components/BentoBlock/consts.d.ts +14 -0
- package/dist/components/BentoBlock/consts.js +15 -0
- package/dist/components/Button/Button.d.ts +5 -2
- package/dist/components/Button/Button.js +28 -19
- package/dist/components/Button/Button_module.css +16 -14
- package/dist/components/Checkbox/Checkbox.js +1 -1
- package/dist/components/DateRange/ArrowButton/ArrowButton.module.js +6 -0
- package/dist/components/DateRange/ArrowButton/ArrowButton_module.css +26 -0
- package/dist/components/DateRange/ArrowButton/index.d.ts +8 -0
- package/dist/components/DateRange/ArrowButton/index.js +23 -0
- package/dist/components/DateRange/Calendar/index.d.ts +12 -0
- package/dist/components/DateRange/Calendar/index.js +22 -0
- package/dist/components/DateRange/DateRange.d.ts +6 -0
- package/dist/components/DateRange/DateRange.js +51 -0
- package/dist/components/DateRange/DateRangeDefaultTrigger/DateRangeDefaultTrigger.d.ts +44 -0
- package/dist/components/DateRange/DateRangeDefaultTrigger/DateRangeDefaultTrigger.js +128 -0
- package/dist/components/DateRange/DateRangeDefaultTrigger/DateRangeDefaultTrigger.module.js +19 -0
- package/dist/components/DateRange/DateRangeDefaultTrigger/DateRangeDefaultTrigger_module.css +170 -0
- package/dist/components/DateRange/DateRangeDefaultTrigger.module.js +12 -0
- package/dist/components/DateRange/DateRangeDefaultTrigger_module.css +43 -0
- package/dist/components/DateRange/DateRangeInput/DateRangeInput.d.ts +4 -0
- package/dist/components/DateRange/DateRangeInput/DateRangeInput.js +69 -0
- package/dist/components/DateRange/Day/Day.module.js +16 -0
- package/dist/components/DateRange/Day/Day_module.css +80 -0
- package/dist/components/DateRange/Day/index.d.ts +12 -0
- package/dist/components/DateRange/Day/index.js +39 -0
- package/dist/components/DateRange/DropdownContent/DropdownContent.module.js +10 -0
- package/dist/components/DateRange/DropdownContent/DropdownContent_module.css +34 -0
- package/dist/components/DateRange/DropdownContent/index.d.ts +24 -0
- package/dist/components/DateRange/DropdownContent/index.js +132 -0
- package/dist/components/DateRange/InputContent/InputContent.module.js +9 -0
- package/dist/components/DateRange/InputContent/InputContent_module.css +31 -0
- package/dist/components/DateRange/InputContent/index.d.ts +12 -0
- package/dist/components/DateRange/InputContent/index.js +59 -0
- package/dist/components/DateRange/Month/Month.module.js +7 -0
- package/dist/components/DateRange/Month/Month_module.css +17 -0
- package/dist/components/DateRange/Month/index.d.ts +15 -0
- package/dist/components/DateRange/Month/index.js +158 -0
- package/dist/components/DateRange/Month/utils.d.ts +2 -0
- package/dist/components/DateRange/Month/utils.js +8 -0
- package/dist/components/DateRange/MonthHeader/MonthHeader.module.js +5 -0
- package/dist/components/DateRange/MonthHeader/MonthHeader_module.css +10 -0
- package/dist/components/DateRange/MonthHeader/index.d.ts +5 -0
- package/dist/components/DateRange/MonthHeader/index.js +26 -0
- package/dist/components/DateRange/MonthList/MonthList.module.js +7 -0
- package/dist/components/DateRange/MonthList/MonthList_module.css +25 -0
- package/dist/components/DateRange/MonthList/index.d.ts +11 -0
- package/dist/components/DateRange/MonthList/index.js +91 -0
- package/dist/components/DateRange/PeriodVariantList/PeriodVariantList.module.js +9 -0
- package/dist/components/DateRange/PeriodVariantList/PeriodVariantList_module.css +18 -0
- package/dist/components/DateRange/PeriodVariantList/index.d.ts +18 -0
- package/dist/components/DateRange/PeriodVariantList/index.js +83 -0
- package/dist/components/DateRange/SideMenu/SideMenu.module.js +6 -0
- package/dist/components/DateRange/SideMenu/SideMenu_module.css +18 -0
- package/dist/components/DateRange/SideMenu/index.d.ts +13 -0
- package/dist/components/DateRange/SideMenu/index.js +73 -0
- package/dist/components/DateRange/TooltipedText/index.d.ts +8 -0
- package/dist/components/DateRange/TooltipedText/index.js +30 -0
- package/dist/components/DateRange/Year/Year.module.js +11 -0
- package/dist/components/DateRange/Year/Year_module.css +60 -0
- package/dist/components/DateRange/Year/index.d.ts +8 -0
- package/dist/components/DateRange/Year/index.js +47 -0
- package/dist/components/DateRange/YearsList/YearsList.module.js +5 -0
- package/dist/components/DateRange/YearsList/YearsList_module.css +15 -0
- package/dist/components/DateRange/YearsList/index.d.ts +12 -0
- package/dist/components/DateRange/YearsList/index.js +47 -0
- package/dist/components/DateRange/consts.d.ts +20 -0
- package/dist/components/DateRange/consts.js +81 -0
- package/dist/components/DateRange/formatDateRangeValue.d.ts +24 -0
- package/dist/components/DateRange/formatDateRangeValue.js +116 -0
- package/dist/components/DateRange/hooks/useCalendar.d.ts +13 -0
- package/dist/components/DateRange/hooks/useCalendar.js +88 -0
- package/dist/components/DateRange/hooks/useDateRange.d.ts +392 -0
- package/dist/components/DateRange/hooks/useDateRange.js +36 -0
- package/dist/components/DateRange/hooks/useDateRangeDropdown.d.ts +47 -0
- package/dist/components/DateRange/hooks/useDateRangeDropdown.js +117 -0
- package/dist/components/DateRange/hooks/useDateRangeValue.d.ts +56 -0
- package/dist/components/DateRange/hooks/useDateRangeValue.js +173 -0
- package/dist/components/DateRange/hooks/useMaskInput.d.ts +18 -0
- package/dist/components/DateRange/hooks/useMaskInput.js +169 -0
- package/dist/components/DateRange/hooks/useMonthList.d.ts +12 -0
- package/dist/components/DateRange/hooks/useMonthList.js +80 -0
- package/dist/components/DateRange/hooks/useSideMenu.d.ts +14 -0
- package/dist/components/DateRange/hooks/useSideMenu.js +113 -0
- package/dist/components/DateRange/index.d.ts +1 -0
- package/dist/components/DateRange/index.js +1 -0
- package/dist/components/DateRange/locale/en-US.d.ts +2 -0
- package/dist/components/DateRange/locale/en-US.js +82 -0
- package/dist/components/DateRange/locale/index.d.ts +4 -0
- package/dist/components/DateRange/locale/index.js +3 -0
- package/dist/components/DateRange/locale/ru-RU.d.ts +2 -0
- package/dist/components/DateRange/locale/ru-RU.js +82 -0
- package/dist/components/DateRange/locale/types.d.ts +9 -0
- package/dist/components/DateRange/locale/types.js +7 -0
- package/dist/components/DateRange/locale/useLocale.d.ts +8 -0
- package/dist/components/DateRange/locale/useLocale.js +31 -0
- package/dist/components/DateRange/props.d.ts +39 -0
- package/dist/components/DateRange/props.js +0 -0
- package/dist/components/DateRange/types.d.ts +126 -0
- package/dist/components/DateRange/types.js +13 -0
- package/dist/components/DateRange/utils.d.ts +33 -0
- package/dist/components/DateRange/utils.js +105 -0
- package/dist/components/Datepicker/Datepicker.d.ts +3 -1
- package/dist/components/Datepicker/Datepicker.js +4 -2
- package/dist/components/EditableDate/DropdownContent/DropdownContent.d.ts +9 -0
- package/dist/components/EditableDate/DropdownContent/DropdownContent.js +36 -0
- package/dist/components/EditableDate/EditableDate.d.ts +9 -0
- package/dist/components/EditableDate/EditableDate.js +142 -0
- package/dist/components/EditableDate/EditableDate.module.js +7 -0
- package/dist/components/EditableDate/EditableDate_module.css +32 -0
- package/dist/components/EditableTitle/EditableTitle.d.ts +7 -2
- package/dist/components/EditableTitle/EditableTitle.js +63 -31
- package/dist/components/EditableTitle/EditableTitle.module.js +1 -0
- package/dist/components/EditableTitle/EditableTitle_module.css +6 -0
- package/dist/components/EmptyState/EmptyState.d.ts +1 -1
- package/dist/components/EmptyStateLarge/EmptyStateLarge_module.css +2 -2
- package/dist/components/Help/Help_module.css +1 -1
- package/dist/components/Informer/Informer.d.ts +37 -0
- package/dist/components/Informer/Informer.js +36 -0
- package/dist/components/Informer/Informer.module.js +7 -0
- package/dist/components/Informer/Informer_module.css +24 -0
- package/dist/components/Input/Input.js +10 -5
- package/dist/components/Input/components/InfoBlock.d.ts +3 -1
- package/dist/components/Input/components/InfoBlock.js +7 -4
- package/dist/components/InputUnit/InputUnit.js +4 -4
- package/dist/components/LabelValue/LabelValue.d.ts +14 -10
- package/dist/components/LabelValue/LabelValue.js +46 -25
- package/dist/components/LabelValue/LabelValue.module.js +10 -4
- package/dist/components/LabelValue/LabelValue_module.css +53 -19
- package/dist/components/LabelValue/ValueBlock/ValueBlock.d.ts +2 -0
- package/dist/components/LabelValue/ValueBlock/ValueBlock.js +82 -0
- package/dist/components/LabelValue/ValueBlockWrapper.d.ts +5 -0
- package/dist/components/LabelValue/ValueBlockWrapper.js +13 -0
- package/dist/components/LabelValue/ValueIcon.d.ts +4 -0
- package/dist/components/LabelValue/ValueIcon.js +9 -0
- package/dist/components/LabelValue/ValueText.d.ts +10 -0
- package/dist/components/LabelValue/ValueText.js +24 -0
- package/dist/components/LabelValue/ValueTextWithHint.d.ts +12 -0
- package/dist/components/LabelValue/ValueTextWithHint.js +29 -0
- package/dist/components/LabelValue/hooks/useValueBlock.d.ts +29 -0
- package/dist/components/LabelValue/hooks/useValueBlock.js +72 -0
- package/dist/components/LabelValue/{ValueBlock/index.d.ts → types.d.ts} +8 -4
- package/dist/components/LabelValue/types.js +0 -0
- package/dist/components/LabelValueDate/LabelValueDate.js +2 -2
- package/dist/components/LabelValueFile/DeleteButton/DeleteButton.d.ts +9 -0
- package/dist/components/LabelValueFile/DeleteButton/DeleteButton.js +17 -0
- package/dist/components/LabelValueFile/FilePreviewIcon/FilePreviewIcon.d.ts +7 -0
- package/dist/components/LabelValueFile/FilePreviewIcon/FilePreviewIcon.js +15 -0
- package/dist/components/LabelValueFile/FilePreviewIcon/FilePreviewIcon.module.js +6 -0
- package/dist/components/LabelValueFile/FilePreviewIcon/FilePreviewIcon_module.css +10 -0
- package/dist/components/LabelValueFile/ImagePreview/ImagePreview.d.ts +8 -0
- package/dist/components/LabelValueFile/ImagePreview/ImagePreview.js +53 -0
- package/dist/components/LabelValueFile/ImagePreview/ImagePreview.module.js +6 -0
- package/dist/components/LabelValueFile/ImagePreview/ImagePreview_module.css +13 -0
- package/dist/components/LabelValueFile/LabelValueFile.d.ts +7 -0
- package/dist/components/LabelValueFile/LabelValueFile.js +42 -0
- package/dist/components/LabelValueFile/LabelValueFile.module.js +12 -0
- package/dist/components/LabelValueFile/LabelValueFile_module.css +57 -0
- package/dist/components/LabelValueFile/ValueBlock/ValueBlock.d.ts +15 -0
- package/dist/components/LabelValueFile/ValueBlock/ValueBlock.js +130 -0
- package/dist/components/LabelValueFile/ValueBlock/ValueBlock.module.js +7 -0
- package/dist/components/LabelValueFile/ValueBlock/ValueBlock_module.css +17 -0
- package/dist/components/LabelValueInput/DropdownConnent/DropdownContent.d.ts +2 -0
- package/dist/components/LabelValueInput/DropdownConnent/DropdownContent.js +2 -0
- package/dist/components/LabelValueLink/LabelValueLink.d.ts +2 -0
- package/dist/components/LabelValueLink/LabelValueLink.js +76 -0
- package/dist/components/LabelValueLink/LabelValueLink.module.js +6 -0
- package/dist/components/LabelValueLink/LabelValueLink_module.css +11 -0
- package/dist/components/LabelValueLink/ValueBlock/LabelValueLinkValueBlock.d.ts +2 -0
- package/dist/components/LabelValueLink/ValueBlock/LabelValueLinkValueBlock.js +117 -0
- package/dist/components/LabelValueLink/ValueBlock/LabelValueLinkValueBlock.module.js +6 -0
- package/dist/components/LabelValueLink/ValueBlock/LabelValueLinkValueBlock_module.css +8 -0
- package/dist/components/LabelValueLink/normalizeLinkValue.d.ts +1 -0
- package/dist/components/LabelValueLink/normalizeLinkValue.js +10 -0
- package/dist/components/LabelValueLink/useLinkDropdownValue.d.ts +15 -0
- package/dist/components/LabelValueLink/useLinkDropdownValue.js +26 -0
- package/dist/components/LabelValueSelect/Input/index.js +1 -1
- package/dist/components/LabelValueSelect/LabelValueSelect.d.ts +4 -2
- package/dist/components/Layout/Layout.d.ts +13 -0
- package/dist/components/Layout/Layout.js +41 -0
- package/dist/components/Layout/Layout.module.js +15 -0
- package/dist/components/Layout/Layout_module.css +77 -0
- package/dist/components/Link/Link.d.ts +5 -6
- package/dist/components/Link/Link.js +35 -9
- package/dist/components/Link/Link.module.js +1 -0
- package/dist/components/Link/Link_module.css +9 -0
- package/dist/components/MentionsTextfield/Mentions/style.css +2 -6
- package/dist/components/MentionsTextfield/MentionsTextfield.js +2 -1
- package/dist/components/Multiselect/AllSelectedChip/AllSelectedChip.d.ts +8 -0
- package/dist/components/Multiselect/AllSelectedChip/AllSelectedChip.js +13 -0
- package/dist/components/Multiselect/AllSelectedChip/AllSelectedChip.module.js +5 -0
- package/dist/components/Multiselect/AllSelectedChip/AllSelectedChip_module.css +9 -0
- package/dist/components/Multiselect/DropdownContent/MultiselectDropdownContent.d.ts +12 -1
- package/dist/components/Multiselect/DropdownContent/MultiselectDropdownContent.js +20 -15
- package/dist/components/Multiselect/Input/Input.d.ts +6 -2
- package/dist/components/Multiselect/Input/Input.js +18 -4
- package/dist/components/Multiselect/Multiselect.d.ts +4 -2
- package/dist/components/Multiselect/Multiselect.js +14 -2
- package/dist/components/Multiselect/ShortDropdownContent/ShortDropdownContent.js +2 -1
- package/dist/components/Multiselect/TextField/MultiselectTextField.d.ts +5 -1
- package/dist/components/Multiselect/TextField/MultiselectTextField.js +15 -2
- package/dist/components/Multiselect/lib/consts.d.ts +1 -1
- package/dist/components/Multiselect/lib/consts.js +1 -1
- package/dist/components/Multiselect/lib/helpers.d.ts +24 -0
- package/dist/components/Multiselect/lib/helpers.js +15 -0
- package/dist/components/Multiselect/types.d.ts +2 -0
- package/dist/components/Panel/Panel.d.ts +34 -0
- package/dist/components/Panel/Panel.js +39 -0
- package/dist/components/Panel/Panel.module.js +6 -0
- package/dist/components/Panel/Panel_module.css +17 -0
- package/dist/components/Radiobutton/Radiobutton.js +1 -1
- package/dist/components/Radiobutton/Radiobutton_module.css +5 -0
- package/dist/components/SearchInput/SearchInput_module.css +1 -1
- package/dist/components/Select/ArchivedInputValue/ArchivedInputValue.d.ts +3 -4
- package/dist/components/Select/ArchivedInputValue/ArchivedInputValue.js +19 -24
- package/dist/components/Select/ArchivedInputValue/ArchivedInputValue.module.js +1 -2
- package/dist/components/Select/ArchivedInputValue/ArchivedInputValue_module.css +5 -12
- package/dist/components/Select/Combobox/Combobox.d.ts +3 -1
- package/dist/components/Select/Combobox/Combobox.js +19 -8
- package/dist/components/Select/Combobox/Combobox.module.js +4 -3
- package/dist/components/Select/Combobox/Combobox_module.css +15 -9
- package/dist/components/Select/OptionsList/OptionsList.d.ts +3 -1
- package/dist/components/Select/OptionsList/OptionsList.js +37 -21
- package/dist/components/Select/OptionsList/OptionsList.module.js +2 -0
- package/dist/components/Select/OptionsList/OptionsList_module.css +15 -0
- package/dist/components/Select/Select.d.ts +2 -3
- package/dist/components/Select/Select.js +17 -7
- package/dist/components/Select/Select_module.css +5 -0
- package/dist/components/Select/ShortVariant/ShortVariant.js +1 -1
- package/dist/components/StatusBadge/StatusBadge.d.ts +28 -0
- package/dist/components/StatusBadge/StatusBadge.js +167 -0
- package/dist/components/StatusBadge/StatusBadge.module.js +37 -0
- package/dist/components/StatusBadge/StatusBadge_module.css +149 -0
- package/dist/components/StatusBadge/utils/StatusBadgeColor.d.ts +21 -0
- package/dist/components/StatusBadge/utils/StatusBadgeColor.js +20 -0
- package/dist/components/StatusBadge/utils/getStatusBadgeColor.d.ts +2 -0
- package/dist/components/StatusBadge/utils/getStatusBadgeColor.js +8 -0
- package/dist/components/Textfield/Textfield.d.ts +7 -2
- package/dist/components/Textfield/Textfield.js +2 -1
- package/dist/components/Textfield/components/Container/Container.d.ts +2 -0
- package/dist/components/Textfield/components/Container/Container.js +17 -6
- package/dist/components/Textfield/components/Container/Container.module.js +2 -1
- package/dist/components/Textfield/components/Container/Container_module.css +4 -0
- package/dist/components/Toggle/Toggle.js +1 -1
- package/dist/components/ViewersStack/ViewersStack.js +5 -3
- package/dist/components/_shared/CustomDatepickerDropdownContent/CustomDatepickerDropdownContent.d.ts +12 -0
- package/dist/components/{LabelValueDate/DropdownContent/index.js → _shared/CustomDatepickerDropdownContent/CustomDatepickerDropdownContent.js} +10 -10
- package/dist/components/_shared/CustomDatepickerDropdownContent/CustomDatepickerDropdownContent.module.js +9 -0
- package/dist/components/{LabelValueDate/DropdownContent/DropdownContent_module.css → _shared/CustomDatepickerDropdownContent/CustomDatepickerDropdownContent_module.css} +6 -6
- package/dist/components/_shared/FieldLabel/FieldLabel.d.ts +18 -0
- package/dist/components/{FieldLabel → _shared/FieldLabel}/FieldLabel.js +19 -12
- package/dist/components/_shared/FieldLabel/FieldLabel.module.js +11 -0
- package/dist/components/{FieldLabel → _shared/FieldLabel}/FieldLabel_module.css +8 -8
- package/dist/components/{FieldLabel → _shared/FieldLabel}/components/HelpButton.d.ts +1 -1
- package/dist/components/{FieldLabel → _shared/FieldLabel}/components/HelpButton.js +2 -2
- package/dist/components/{FieldLabel → _shared/FieldLabel}/components/HelpButton.module.js +1 -1
- package/dist/components/{FieldLabel → _shared/FieldLabel}/components/HelpButton_module.css +1 -1
- package/dist/components/{FieldRow → _shared/FieldRow}/FieldRow.d.ts +1 -1
- package/dist/components/{FieldRow → _shared/FieldRow}/FieldRow.js +1 -1
- package/dist/components/{FieldRow → _shared/FieldRow}/FieldRow.module.js +3 -3
- package/dist/components/{FieldRow → _shared/FieldRow}/FieldRow_module.css +3 -3
- package/dist/components/{Info → _shared/Info}/Info.d.ts +3 -1
- package/dist/components/{Info → _shared/Info}/Info.js +9 -6
- package/dist/components/_shared/Info/Info.module.js +9 -0
- package/dist/components/{Info → _shared/Info}/Info_module.css +6 -6
- package/dist/components/_shared/Info/types/index.d.ts +6 -0
- package/dist/components/_shared/Info/types/index.js +5 -0
- package/dist/components/{InputClear → _shared/InputClear}/InputClear.d.ts +1 -1
- package/dist/components/{InputClear → _shared/InputClear}/InputClear.js +2 -2
- package/dist/components/{InputClear → _shared/InputClear}/InputClear.module.js +3 -3
- package/dist/components/{InputClear → _shared/InputClear}/InputClear_module.css +5 -5
- package/dist/components/_shared/utils/polymorphicClickableTypes.d.ts +17 -0
- package/dist/components/_shared/utils/polymorphicClickableTypes.js +7 -0
- package/dist/data-grid/Filters/DateRangeFilter/DropdownContent/index.js +3 -3
- package/dist/data-grid/Filters/DateRangeFilter/InputContent/index.js +29 -26
- package/dist/data-grid/Filters/DateRangeFilter/PeriodVariantList/index.js +5 -3
- package/dist/data-grid/Filters/DateRangeFilter/Year/index.js +3 -3
- package/dist/data-grid/Filters/DateRangeFilter/consts.js +6 -6
- package/dist/data-grid/Filters/DateRangeFilter/hooks/useMaskInput.js +6 -6
- package/dist/data-grid/Filters/DateRangeFilter/hooks/useSideMenu.js +1 -4
- package/dist/data-grid/Filters/DateRangeFilter/types.d.ts +68 -56
- package/dist/data-grid/Filters/FiltersContainer/FiltersContainer.js +2 -1
- package/dist/data-grid/Filters/FiltersContainer/utils/useRenderParams.d.ts +1 -0
- package/dist/data-grid/Filters/FiltersContainer/utils/useRenderParams.js +14 -6
- package/dist/data-grid/Filters/MultiselectFilter/MultiselectFilter.js +2 -2
- package/dist/data-grid/Filters/OutlineInput/OutlineInput.js +2 -2
- package/dist/data-grid/Filters/OutlineInput/OutlineInput_module.css +1 -1
- package/dist/data-grid/Table/Table_module.css +0 -1
- package/dist/data-grid/cells/ImageCell/ImageMiniature/ImageMiniature_module.css +1 -1
- package/dist/data-grid/cells/components/TableNumberInput/TableNumberInput.d.ts +1 -0
- package/dist/data-grid/cells/components/TableNumberInput/TableNumberInput.js +17 -5
- package/dist/data-grid/cells/components/TableSelect/TableSelect.js +3 -2
- package/dist/data-grid/headers/components/Dropdown/Dropdown.d.ts +3 -0
- package/dist/data-grid/headers/components/HeaderBuilder/HeaderBuilder.js +1 -0
- package/dist/data-grid/index.d.ts +0 -4
- package/dist/data-grid/locale/en-US.js +68 -56
- package/dist/data-grid/locale/ru-RU.js +68 -56
- package/dist/data-grid/locale/useLocale.d.ts +6 -1
- package/dist/data-grid/locale/useLocale.js +14 -5
- package/dist/hooks/useIsElementOverflowing/index.d.ts +1 -0
- package/dist/hooks/useIsElementOverflowing/index.js +8 -2
- package/dist/hooks/useOverflowHint/index.d.ts +7 -0
- package/dist/hooks/useOverflowHint/index.js +16 -0
- package/dist/hooks/useTextField/useTextField.d.ts +1 -1
- package/dist/icon/components/MsLogo12Icon.d.ts +8 -0
- package/dist/icon/components/MsLogo12Icon.js +28 -0
- package/dist/icon/components/MsLogo16Icon.d.ts +8 -0
- package/dist/icon/components/MsLogo16Icon.js +26 -0
- package/dist/icon/components/MsLogo20Icon.d.ts +8 -0
- package/dist/icon/components/MsLogo20Icon.js +28 -0
- package/dist/icon/components/Phone12Icon.d.ts +8 -0
- package/dist/icon/components/Phone12Icon.js +18 -0
- package/dist/icon/components/Phone16Icon.d.ts +8 -0
- package/dist/icon/components/Phone16Icon.js +17 -0
- package/dist/icon/components/Phone20Icon.d.ts +8 -0
- package/dist/icon/components/Phone20Icon.js +18 -0
- package/dist/icon/index.d.ts +6 -0
- package/dist/icon/index.js +6 -0
- package/dist/index.d.ts +9 -1
- package/dist/index.js +8 -0
- package/dist/utils/checkIsArchivedValue.d.ts +2 -0
- package/dist/utils/checkIsArchivedValue.js +5 -0
- package/dist/utils/utils.d.ts +1 -0
- package/dist/utils/utils.js +1 -0
- package/package.json +70 -13
- package/dist/components/FieldLabel/FieldLabel.d.ts +0 -17
- package/dist/components/FieldLabel/FieldLabel.module.js +0 -11
- package/dist/components/Info/Info.module.js +0 -9
- package/dist/components/LabelValue/ValueBlock/index.js +0 -138
- package/dist/components/LabelValue/hooks/useTooltip.d.ts +0 -8
- package/dist/components/LabelValue/hooks/useTooltip.js +0 -16
- package/dist/components/LabelValueDate/DropdownContent/DropdownContent.module.js +0 -9
- package/dist/components/LabelValueDate/DropdownContent/index.d.ts +0 -12
- package/dist/components/MentionsTextfield/OptionForStory/OptionForStory.d.ts +0 -7
- package/dist/components/MentionsTextfield/OptionForStory/OptionForStory.js +0 -27
- package/dist/components/MentionsTextfield/OptionForStory/OptionForStory.module.js +0 -8
- package/dist/components/MentionsTextfield/OptionForStory/OptionForStory_module.css +0 -25
- package/dist/components/MentionsTextfield/OptionForStory/index.d.ts +0 -1
- package/dist/components/MentionsTextfield/OptionForStory/index.js +0 -1
- package/dist/components/Textfield/components/Label/Label.d.ts +0 -11
- package/dist/components/Textfield/components/Label/Label.js +0 -38
- package/dist/components/Textfield/components/Label/Label.module.js +0 -7
- package/dist/components/Textfield/components/Label/Label_module.css +0 -17
- package/dist/components/Textfield/components/Label/index.d.ts +0 -1
- package/dist/components/Textfield/components/Label/index.js +0 -1
- /package/dist/components/{FieldLabel → _shared/FieldLabel}/FieldLabel.constants.d.ts +0 -0
- /package/dist/components/{FieldLabel → _shared/FieldLabel}/FieldLabel.constants.js +0 -0
- /package/dist/components/{FieldLabel → _shared/FieldLabel}/components/index.d.ts +0 -0
- /package/dist/components/{FieldLabel → _shared/FieldLabel}/components/index.js +0 -0
|
@@ -10,8 +10,10 @@ import { Loading } from "../../Select/Loading/Loading.js";
|
|
|
10
10
|
import { Text, TextColor } from "../../Text/Text.js";
|
|
11
11
|
import { useDebounceCallback } from "../../../hooks/useDebounceCallback/useDebounceCallback.js";
|
|
12
12
|
import { Add16Icon, RemoveClose12Icon } from "../../../icon/index.js";
|
|
13
|
+
import { AllSelectedChip } from "../AllSelectedChip/AllSelectedChip.js";
|
|
13
14
|
import { useAsyncDropdownContext } from "../AsyncDropdownContext/AsyncDropdownContextProvider.js";
|
|
14
15
|
import { minChipsWidth, selectAllCheckboxDefaultText } from "../lib/consts.js";
|
|
16
|
+
import { canSelectAllItems, getDefaultAllSelectedChipText, isAllItemsSelected } from "../lib/helpers.js";
|
|
15
17
|
import { useChipsKeyDown } from "../lib/useChipsKeyDown.js";
|
|
16
18
|
import { useItemKeyDown } from "../lib/useItemKeyDown.js";
|
|
17
19
|
import { SelectAllCheckbox } from "../SelectAllCheckbox/SelectAllCheckbox.js";
|
|
@@ -26,7 +28,6 @@ const MultiselectDropdownContent = (props)=>{
|
|
|
26
28
|
const asyncDropdownContext = useAsyncDropdownContext();
|
|
27
29
|
const selectedItems = (asyncDropdownContext?.selectedValues ?? props.items).filter((item)=>props.values.includes(item.value));
|
|
28
30
|
const [filteredItems, setFilteredItems] = useState(asyncDropdownContext?.cachedItems ?? props.items);
|
|
29
|
-
const [filteredSelectedItems, setFilteredSelectedItems] = useState(selectedItems);
|
|
30
31
|
const [searchInputValue, setSearchInputValue] = useState(asyncDropdownContext?.cachedInputValue ?? '');
|
|
31
32
|
const searchInputValueRef = useRef(searchInputValue);
|
|
32
33
|
searchInputValueRef.current = searchInputValue;
|
|
@@ -46,14 +47,12 @@ const MultiselectDropdownContent = (props)=>{
|
|
|
46
47
|
const handleSearch = (inputValue)=>{
|
|
47
48
|
setSearchInputValue(inputValue);
|
|
48
49
|
if (!inputValue.trim()) {
|
|
49
|
-
setFilteredSelectedItems(selectedItems);
|
|
50
50
|
if (props.onSearch) {
|
|
51
51
|
setFilteredItems([]);
|
|
52
52
|
handleAsyncSearchDebounced(inputValue);
|
|
53
53
|
} else setFilteredItems(props.items);
|
|
54
54
|
return;
|
|
55
55
|
}
|
|
56
|
-
setFilteredSelectedItems(selectedItems.filter((item)=>item.label.toLowerCase().includes(inputValue.trim().toLowerCase())));
|
|
57
56
|
if (props.onSearch) {
|
|
58
57
|
setFilteredItems([]);
|
|
59
58
|
handleAsyncSearchDebounced(inputValue);
|
|
@@ -61,15 +60,13 @@ const MultiselectDropdownContent = (props)=>{
|
|
|
61
60
|
}
|
|
62
61
|
setFilteredItems(props.items.filter((item)=>item.label.toLowerCase().includes(inputValue.trim().toLowerCase())));
|
|
63
62
|
};
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
useEffect(()=>{
|
|
69
|
-
updateFilteredSelectedItems(searchInputValue);
|
|
63
|
+
const filteredSelectedItems = useMemo(()=>{
|
|
64
|
+
const trimmedSearchInputValue = searchInputValue.trim().toLowerCase();
|
|
65
|
+
if (!trimmedSearchInputValue) return selectedItems;
|
|
66
|
+
return selectedItems.filter((item)=>item.label.toLowerCase().includes(trimmedSearchInputValue));
|
|
70
67
|
}, [
|
|
71
|
-
|
|
72
|
-
|
|
68
|
+
searchInputValue,
|
|
69
|
+
selectedItems
|
|
73
70
|
]);
|
|
74
71
|
useEffect(()=>{
|
|
75
72
|
if (props.onSearch) return;
|
|
@@ -90,13 +87,16 @@ const MultiselectDropdownContent = (props)=>{
|
|
|
90
87
|
const isManySelected = useMemo(()=>filteredSelectedItems.length > 9, [
|
|
91
88
|
filteredSelectedItems
|
|
92
89
|
]);
|
|
90
|
+
const availableItems = asyncDropdownContext?.cachedItems ?? props.items;
|
|
91
|
+
const isAllSelected = props.showSelectAllCheckbox && isAllItemsSelected(availableItems, props.values);
|
|
93
92
|
const selectAllCheckboxText = useMemo(()=>props.selectAllCheckboxText ?? selectAllCheckboxDefaultText, [
|
|
94
93
|
props.selectAllCheckboxText
|
|
95
94
|
]);
|
|
96
95
|
const isShowSelectAllCheckbox = useMemo(()=>{
|
|
97
96
|
if (!props.showSelectAllCheckbox) return false;
|
|
98
|
-
return selectAllCheckboxText.toLowerCase().includes(searchInputValue.trim().toLowerCase());
|
|
97
|
+
return canSelectAllItems(availableItems) && selectAllCheckboxText.toLowerCase().includes(searchInputValue.trim().toLowerCase());
|
|
99
98
|
}, [
|
|
99
|
+
availableItems,
|
|
100
100
|
props.showSelectAllCheckbox,
|
|
101
101
|
searchInputValue,
|
|
102
102
|
selectAllCheckboxText
|
|
@@ -237,10 +237,15 @@ const MultiselectDropdownContent = (props)=>{
|
|
|
237
237
|
})
|
|
238
238
|
})
|
|
239
239
|
});
|
|
240
|
-
const chips = !!filteredSelectedItems.length && /*#__PURE__*/ jsxs("div", {
|
|
240
|
+
const chips = (isAllSelected || !!filteredSelectedItems.length) && /*#__PURE__*/ jsxs("div", {
|
|
241
241
|
className: cn(MultiselectDropdownContent_module.chipsContainer, props.chipsContainerClassName),
|
|
242
242
|
children: [
|
|
243
|
-
|
|
243
|
+
isAllSelected && /*#__PURE__*/ jsx(AllSelectedChip, {
|
|
244
|
+
label: props.getAllSelectedChipText?.(availableItems.length) ?? getDefaultAllSelectedChipText(availableItems.length, props.allSelectedChipTextVariant),
|
|
245
|
+
className: cn(MultiselectDropdownContent_module.chip, MultiselectDropdownContent_module.moreElementsChip),
|
|
246
|
+
testId: props.testId ? `${props.testId}-all-selected` : void 0
|
|
247
|
+
}),
|
|
248
|
+
!isAllSelected && !isManySelected && filteredSelectedItems.map((item, index)=>/*#__PURE__*/ jsx(TooltipedChip, {
|
|
244
249
|
tooltipDelay: props.tooltipDelay,
|
|
245
250
|
ref: (ref)=>chipRefs.current[index] = ref,
|
|
246
251
|
minWidth: minChipsWidth,
|
|
@@ -253,7 +258,7 @@ const MultiselectDropdownContent = (props)=>{
|
|
|
253
258
|
renderSelectedItem: props.renderSelectedItem,
|
|
254
259
|
item: item
|
|
255
260
|
}, item.value)),
|
|
256
|
-
isManySelected && /*#__PURE__*/ jsx(Chip, {
|
|
261
|
+
!isAllSelected && isManySelected && /*#__PURE__*/ jsx(Chip, {
|
|
257
262
|
isActive: true,
|
|
258
263
|
onClick: ()=>{},
|
|
259
264
|
icon: /*#__PURE__*/ jsx("div", {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type AriaAttributes } from 'react';
|
|
2
|
-
import { type InputValue, type RenderSelectedItem } from '../types';
|
|
2
|
+
import { type AllSelectedChipTextVariant, type GetAllSelectedChipText, type InputValue, type RenderSelectedItem } from '../types';
|
|
3
3
|
export interface InputProps {
|
|
4
4
|
id?: HTMLInputElement['id'];
|
|
5
5
|
placeholder?: string;
|
|
@@ -12,7 +12,7 @@ export interface InputProps {
|
|
|
12
12
|
* используется для форматирования строки невлезающих элементов в input
|
|
13
13
|
*
|
|
14
14
|
* @param elementsCount количество оставшихся элементов которые не влезли
|
|
15
|
-
* @example (count) =>
|
|
15
|
+
* @example (count) => `еще ${count}`
|
|
16
16
|
*/
|
|
17
17
|
getOtherText?: (elementsCount: number) => string;
|
|
18
18
|
/**
|
|
@@ -23,6 +23,10 @@ export interface InputProps {
|
|
|
23
23
|
className?: string;
|
|
24
24
|
testId?: string;
|
|
25
25
|
disabled?: boolean;
|
|
26
|
+
canShowAllSelectedChip?: boolean;
|
|
27
|
+
isAllSelected?: boolean;
|
|
28
|
+
allSelectedChipTextVariant?: AllSelectedChipTextVariant;
|
|
29
|
+
getAllSelectedChipText?: GetAllSelectedChipText;
|
|
26
30
|
wrapSelectedItems?: boolean;
|
|
27
31
|
renderSelectedItem?: RenderSelectedItem;
|
|
28
32
|
triggerAriaProps?: Pick<AriaAttributes, 'aria-controls' | 'aria-expanded' | 'aria-haspopup'>;
|
|
@@ -4,8 +4,10 @@ import { cn } from "../../../common/css/cn.js";
|
|
|
4
4
|
import { Chip } from "../../Chip/Chip.js";
|
|
5
5
|
import { Text, TextColor } from "../../Text/Text.js";
|
|
6
6
|
import { Down12Icon } from "../../../icon/index.js";
|
|
7
|
+
import { AllSelectedChip } from "../AllSelectedChip/AllSelectedChip.js";
|
|
7
8
|
import { useAsyncDropdownContext } from "../AsyncDropdownContext/AsyncDropdownContextProvider.js";
|
|
8
9
|
import { chipsContainerGap, minChipsWidth } from "../lib/consts.js";
|
|
10
|
+
import { getAllSelectedChipState, getDefaultAllSelectedChipText } from "../lib/helpers.js";
|
|
9
11
|
import { useChipsKeyDown } from "../lib/useChipsKeyDown.js";
|
|
10
12
|
import { TooltipedChip, chipStyles } from "../TooltipedChip/TooltipedChip.js";
|
|
11
13
|
import Input_module from "./Input.module.js";
|
|
@@ -13,6 +15,12 @@ const Input = /*#__PURE__*/ forwardRef((props, refProp)=>{
|
|
|
13
15
|
const chipsContainerRef = useRef(null);
|
|
14
16
|
const asyncDropdownContext = useAsyncDropdownContext();
|
|
15
17
|
const selectedItems = asyncDropdownContext?.selectedValues ?? props.selectedItems;
|
|
18
|
+
const allSelectedChipState = getAllSelectedChipState({
|
|
19
|
+
asyncItems: asyncDropdownContext?.cachedItems,
|
|
20
|
+
canShowAllSelectedChip: props.canShowAllSelectedChip,
|
|
21
|
+
isAllSelected: props.isAllSelected,
|
|
22
|
+
selectedItems
|
|
23
|
+
});
|
|
16
24
|
const [displayedSelectedItems, setDisplayedSelectedItems] = useState([]);
|
|
17
25
|
const otherChipRef = useRef(null);
|
|
18
26
|
const [otherElementsCount, setOtherElementsCount] = useState(0);
|
|
@@ -48,6 +56,7 @@ const Input = /*#__PURE__*/ forwardRef((props, refProp)=>{
|
|
|
48
56
|
props.onItemDelete?.(item.value);
|
|
49
57
|
if (ifFirstItem) containerRef.current?.focus();
|
|
50
58
|
});
|
|
59
|
+
const hasVisibleValue = allSelectedChipState.isAllSelected || displayedSelectedItems.length;
|
|
51
60
|
return /*#__PURE__*/ jsxs("div", {
|
|
52
61
|
...props.triggerAriaProps,
|
|
53
62
|
id: props.id,
|
|
@@ -77,7 +86,7 @@ const Input = /*#__PURE__*/ forwardRef((props, refProp)=>{
|
|
|
77
86
|
},
|
|
78
87
|
"aria-disabled": props.disabled,
|
|
79
88
|
children: [
|
|
80
|
-
props.placeholder && !
|
|
89
|
+
props.placeholder && !hasVisibleValue && /*#__PURE__*/ jsx(Text.Body, {
|
|
81
90
|
className: Input_module.placeholder,
|
|
82
91
|
colorToken: TextColor.tertiary,
|
|
83
92
|
children: props.placeholder
|
|
@@ -90,7 +99,12 @@ const Input = /*#__PURE__*/ forwardRef((props, refProp)=>{
|
|
|
90
99
|
},
|
|
91
100
|
"data-test-id": props.testId ? `${props.testId}-values` : '',
|
|
92
101
|
children: [
|
|
93
|
-
|
|
102
|
+
allSelectedChipState.isAllSelected ? /*#__PURE__*/ jsx(AllSelectedChip, {
|
|
103
|
+
label: props.getAllSelectedChipText?.(allSelectedChipState.itemsCount) ?? getDefaultAllSelectedChipText(allSelectedChipState.itemsCount, props.allSelectedChipTextVariant),
|
|
104
|
+
disabled: props.disabled,
|
|
105
|
+
className: cn(chipStyles.chip, chipStyles.multiselectChip),
|
|
106
|
+
testId: props.testId ? `${props.testId}-all-selected` : void 0
|
|
107
|
+
}) : displayedSelectedItems.map((item, i)=>/*#__PURE__*/ jsx(TooltipedChip, {
|
|
94
108
|
ref: (ref)=>chipRefs.current[i] = ref,
|
|
95
109
|
text: item.label,
|
|
96
110
|
minWidth: minChipsWidth,
|
|
@@ -106,7 +120,7 @@ const Input = /*#__PURE__*/ forwardRef((props, refProp)=>{
|
|
|
106
120
|
renderSelectedItem: props.renderSelectedItem,
|
|
107
121
|
item: item
|
|
108
122
|
}, item.value)),
|
|
109
|
-
!props.wrapSelectedItems && /*#__PURE__*/ jsx(Chip, {
|
|
123
|
+
!allSelectedChipState.isAllSelected && !props.wrapSelectedItems && /*#__PURE__*/ jsx(Chip, {
|
|
110
124
|
ref: otherChipRef,
|
|
111
125
|
className: cn(chipStyles.chip, chipStyles.multiselectChip),
|
|
112
126
|
isActive: true,
|
|
@@ -117,7 +131,7 @@ const Input = /*#__PURE__*/ forwardRef((props, refProp)=>{
|
|
|
117
131
|
},
|
|
118
132
|
disabled: props.disabled,
|
|
119
133
|
testId: `${props.testId}-is-many-selected`,
|
|
120
|
-
children: props.getOtherText?.(otherElementsCount) ??
|
|
134
|
+
children: props.getOtherText?.(otherElementsCount) ?? `еще ${otherElementsCount}...`
|
|
121
135
|
})
|
|
122
136
|
]
|
|
123
137
|
}),
|
|
@@ -2,7 +2,7 @@ import { type Key, type MutableRefObject, type ReactElement, type ReactNode, typ
|
|
|
2
2
|
import { type InputProps } from './Input/Input';
|
|
3
3
|
import { type MultiselectDropdownContentProps } from './DropdownContent/MultiselectDropdownContent';
|
|
4
4
|
import { type ShortDropdownContentProps } from './ShortDropdownContent/ShortDropdownContent';
|
|
5
|
-
import { type DropdownItem, type RenderSelectedItem } from './types';
|
|
5
|
+
import { type AllSelectedChipTextVariant, type DropdownItem, type GetAllSelectedChipText, type RenderSelectedItem } from './types';
|
|
6
6
|
type SharedProps<T extends Key, DTO = unknown> = Pick<InputProps, 'placeholder' | 'getOtherText' | 'tooltipDelay'> & {
|
|
7
7
|
id?: HTMLElement['id'];
|
|
8
8
|
label?: string;
|
|
@@ -30,6 +30,8 @@ type SharedProps<T extends Key, DTO = unknown> = Pick<InputProps, 'placeholder'
|
|
|
30
30
|
onSearch?: (value: string) => Promise<DropdownItem<T>[]>;
|
|
31
31
|
renderItem?: (item: DropdownItem<T, DTO>) => ReactNode;
|
|
32
32
|
renderSelectedItem?: RenderSelectedItem;
|
|
33
|
+
allSelectedChipTextVariant?: AllSelectedChipTextVariant;
|
|
34
|
+
getAllSelectedChipText?: GetAllSelectedChipText;
|
|
33
35
|
};
|
|
34
36
|
type DefaultProps<T extends Key, DTO = any> = MultiselectDropdownContentProps<T, DTO> & {
|
|
35
37
|
variant?: 'default' | 'textarea';
|
|
@@ -46,4 +48,4 @@ export { useChipsKeyDown } from './lib/useChipsKeyDown';
|
|
|
46
48
|
export { SelectedItemArchive, type SelectedItemArchiveProps, } from './SelectedItem/SelectedItemArchive';
|
|
47
49
|
export { ShortDropdownContent, type ShortDropdownContentProps, } from './ShortDropdownContent/ShortDropdownContent';
|
|
48
50
|
export { chipStyles, TooltipedChip, type TooltipedChipProps, } from './TooltipedChip/TooltipedChip';
|
|
49
|
-
export { type DropdownItem } from './types';
|
|
51
|
+
export { type AllSelectedChipTextVariant, type DropdownItem, type GetAllSelectedChipText, } from './types';
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef, useCallback } from "react";
|
|
3
3
|
import { cn } from "../../common/css/cn.js";
|
|
4
|
+
import { FieldRow } from "../_shared/FieldRow/FieldRow.js";
|
|
5
|
+
import { Info } from "../_shared/Info/Info.js";
|
|
4
6
|
import { Input } from "./Input/Input.js";
|
|
5
7
|
import { useId } from "../../hooks/useId/index.js";
|
|
6
8
|
import { Dropdown, useDropdown } from "../Dropdown/Dropdown.js";
|
|
7
|
-
import { FieldRow } from "../FieldRow/FieldRow.js";
|
|
8
|
-
import { Info } from "../Info/Info.js";
|
|
9
9
|
import { Label } from "../Label/Label.js";
|
|
10
10
|
import { AsyncDropdownContextProvider, useAsyncDropdownContext } from "./AsyncDropdownContext/AsyncDropdownContextProvider.js";
|
|
11
11
|
import { MultiselectDropdownContent } from "./DropdownContent/MultiselectDropdownContent.js";
|
|
12
|
+
import { isAllItemsSelected } from "./lib/helpers.js";
|
|
12
13
|
import { useUpdateEffect } from "./lib/useUpdateEffect.js";
|
|
13
14
|
import { ShortDropdownContent } from "./ShortDropdownContent/ShortDropdownContent.js";
|
|
14
15
|
import { MultiselectTextField } from "./TextField/MultiselectTextField.js";
|
|
@@ -39,6 +40,7 @@ const Multiselect = /*#__PURE__*/ forwardRef((props, ref)=>{
|
|
|
39
40
|
props.onCreateButtonClick(searchInputValue);
|
|
40
41
|
if (props.closeDropdownOnCreateButtonClick) handleClose();
|
|
41
42
|
};
|
|
43
|
+
const isAllSelected = props.showSelectAllCheckbox && isAllItemsSelected(props.items, props.values);
|
|
42
44
|
return /*#__PURE__*/ jsxs("div", {
|
|
43
45
|
ref: ref,
|
|
44
46
|
className: cn(Multiselect_module.container, props.className ?? ''),
|
|
@@ -80,6 +82,10 @@ const Multiselect = /*#__PURE__*/ forwardRef((props, ref)=>{
|
|
|
80
82
|
getOtherText: props.getOtherText,
|
|
81
83
|
tooltipDelay: props.tooltipDelay,
|
|
82
84
|
disabled: props.disabled,
|
|
85
|
+
canShowAllSelectedChip: props.showSelectAllCheckbox,
|
|
86
|
+
isAllSelected: isAllSelected,
|
|
87
|
+
allSelectedChipTextVariant: props.allSelectedChipTextVariant,
|
|
88
|
+
getAllSelectedChipText: props.getAllSelectedChipText,
|
|
83
89
|
wrapSelectedItems: props.wrapSelectedItems,
|
|
84
90
|
renderSelectedItem: props.renderSelectedItem,
|
|
85
91
|
triggerAriaProps: triggerAriaProps
|
|
@@ -96,6 +102,10 @@ const Multiselect = /*#__PURE__*/ forwardRef((props, ref)=>{
|
|
|
96
102
|
onItemDelete: handleItemDelete,
|
|
97
103
|
tooltipDelay: props.tooltipDelay,
|
|
98
104
|
disabled: props.disabled,
|
|
105
|
+
canShowAllSelectedChip: props.showSelectAllCheckbox,
|
|
106
|
+
isAllSelected: isAllSelected,
|
|
107
|
+
allSelectedChipTextVariant: props.allSelectedChipTextVariant,
|
|
108
|
+
getAllSelectedChipText: props.getAllSelectedChipText,
|
|
99
109
|
renderSelectedItem: props.renderSelectedItem,
|
|
100
110
|
triggerAriaProps: triggerAriaProps
|
|
101
111
|
}),
|
|
@@ -117,6 +127,8 @@ const Multiselect = /*#__PURE__*/ forwardRef((props, ref)=>{
|
|
|
117
127
|
onChange: props.onChange,
|
|
118
128
|
values: props.values,
|
|
119
129
|
getManyItemsChipText: props.getManyItemsChipText,
|
|
130
|
+
allSelectedChipTextVariant: props.allSelectedChipTextVariant,
|
|
131
|
+
getAllSelectedChipText: props.getAllSelectedChipText,
|
|
120
132
|
getNotFoundText: props.getNotFoundText,
|
|
121
133
|
showCreateButton: props.showCreateButton,
|
|
122
134
|
getCreateButtonText: props.getCreateButtonText,
|
|
@@ -4,6 +4,7 @@ import { Button } from "../../Button/Button.js";
|
|
|
4
4
|
import { Checkbox } from "../../Checkbox/Checkbox.js";
|
|
5
5
|
import { Add16Icon } from "../../../icon/index.js";
|
|
6
6
|
import { selectAllCheckboxDefaultText } from "../lib/consts.js";
|
|
7
|
+
import { canSelectAllItems } from "../lib/helpers.js";
|
|
7
8
|
import { useItemKeyDown } from "../lib/useItemKeyDown.js";
|
|
8
9
|
import { SelectAllCheckbox } from "../SelectAllCheckbox/SelectAllCheckbox.js";
|
|
9
10
|
import { TooltipedOptionText } from "../TooltipedOptionText/TooltipedOptionText.js";
|
|
@@ -20,7 +21,7 @@ const ShortDropdownContent = (props)=>{
|
|
|
20
21
|
className: ShortDropdownContent_module.itemsList,
|
|
21
22
|
"data-test-id": props.testId ? `${props.testId}-items-list` : '',
|
|
22
23
|
children: [
|
|
23
|
-
props.showSelectAllCheckbox && /*#__PURE__*/ jsx(SelectAllCheckbox, {
|
|
24
|
+
props.showSelectAllCheckbox && canSelectAllItems(props.items) && /*#__PURE__*/ jsx(SelectAllCheckbox, {
|
|
24
25
|
values: props.values,
|
|
25
26
|
items: props.items,
|
|
26
27
|
onChange: props.onChange,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type AriaAttributes, type Ref } from 'react';
|
|
2
|
-
import { type InputValue, type RenderSelectedItem } from '../types';
|
|
2
|
+
import { type AllSelectedChipTextVariant, type GetAllSelectedChipText, type InputValue, type RenderSelectedItem } from '../types';
|
|
3
3
|
interface MultiselectTextFieldProps {
|
|
4
4
|
id?: HTMLTextAreaElement['id'];
|
|
5
5
|
selectedItems: InputValue[];
|
|
@@ -12,6 +12,10 @@ interface MultiselectTextFieldProps {
|
|
|
12
12
|
onItemDelete?: (value: InputValue['value']) => void;
|
|
13
13
|
tooltipDelay?: number;
|
|
14
14
|
disabled?: boolean;
|
|
15
|
+
canShowAllSelectedChip?: boolean;
|
|
16
|
+
isAllSelected?: boolean;
|
|
17
|
+
allSelectedChipTextVariant?: AllSelectedChipTextVariant;
|
|
18
|
+
getAllSelectedChipText?: GetAllSelectedChipText;
|
|
15
19
|
renderSelectedItem?: RenderSelectedItem;
|
|
16
20
|
triggerAriaProps?: Pick<AriaAttributes, 'aria-controls' | 'aria-expanded' | 'aria-haspopup'>;
|
|
17
21
|
}
|
|
@@ -3,10 +3,12 @@ import { useEffect, useRef, useState } from "react";
|
|
|
3
3
|
import { cn } from "../../../common/css/cn.js";
|
|
4
4
|
import { mergeRefs } from "../../../common/react/mergeRefs.js";
|
|
5
5
|
import { Textfield } from "../../Textfield/Textfield.js";
|
|
6
|
+
import { AllSelectedChip } from "../AllSelectedChip/AllSelectedChip.js";
|
|
6
7
|
import { useAsyncDropdownContext } from "../AsyncDropdownContext/AsyncDropdownContextProvider.js";
|
|
7
8
|
import { minChipsWidth } from "../lib/consts.js";
|
|
9
|
+
import { getAllSelectedChipState, getDefaultAllSelectedChipText } from "../lib/helpers.js";
|
|
8
10
|
import { useChipsKeyDown } from "../lib/useChipsKeyDown.js";
|
|
9
|
-
import { TooltipedChip } from "../TooltipedChip/TooltipedChip.js";
|
|
11
|
+
import { TooltipedChip, chipStyles } from "../TooltipedChip/TooltipedChip.js";
|
|
10
12
|
import MultiselectTextField_module from "./MultiselectTextField.module.js";
|
|
11
13
|
const minHeight = 90;
|
|
12
14
|
const defaultPadding = {
|
|
@@ -23,6 +25,12 @@ const MultiselectTextField = (props)=>{
|
|
|
23
25
|
]);
|
|
24
26
|
const asyncDropdownContext = useAsyncDropdownContext();
|
|
25
27
|
const selectedItems = asyncDropdownContext?.selectedValues ?? props.selectedItems;
|
|
28
|
+
const allSelectedChipState = getAllSelectedChipState({
|
|
29
|
+
asyncItems: asyncDropdownContext?.cachedItems,
|
|
30
|
+
canShowAllSelectedChip: props.canShowAllSelectedChip,
|
|
31
|
+
isAllSelected: props.isAllSelected,
|
|
32
|
+
selectedItems
|
|
33
|
+
});
|
|
26
34
|
const [height, setHeight] = useState(`${minHeight}px`);
|
|
27
35
|
const [padding, setPadding] = useState(defaultPadding);
|
|
28
36
|
const chipsContainerStyle = {
|
|
@@ -96,7 +104,12 @@ const MultiselectTextField = (props)=>{
|
|
|
96
104
|
/*#__PURE__*/ jsx("div", {
|
|
97
105
|
className: MultiselectTextField_module.chipsContainer,
|
|
98
106
|
style: chipsContainerStyle,
|
|
99
|
-
children:
|
|
107
|
+
children: allSelectedChipState.isAllSelected ? /*#__PURE__*/ jsx(AllSelectedChip, {
|
|
108
|
+
label: props.getAllSelectedChipText?.(allSelectedChipState.itemsCount) ?? getDefaultAllSelectedChipText(allSelectedChipState.itemsCount, props.allSelectedChipTextVariant),
|
|
109
|
+
disabled: props.disabled,
|
|
110
|
+
className: cn(chipStyles.chip, chipStyles.multiselectChip, MultiselectTextField_module.chip),
|
|
111
|
+
testId: props.testId ? `${props.testId}-all-selected` : void 0
|
|
112
|
+
}) : selectedItems.map((item, index)=>/*#__PURE__*/ jsx(TooltipedChip, {
|
|
100
113
|
minWidth: minChipsWidth,
|
|
101
114
|
text: item.label,
|
|
102
115
|
ref: (ref)=>chipRefs.current[index] = ref,
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export declare const minChipsWidth = 64;
|
|
2
2
|
export declare const chipsContainerGap = 4;
|
|
3
|
-
export declare const selectAllCheckboxDefaultText = "\u0412\
|
|
3
|
+
export declare const selectAllCheckboxDefaultText = "\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type Key } from 'react';
|
|
2
|
+
import type { AllSelectedChipTextVariant } from '../types';
|
|
3
|
+
type AllSelectedChipStateParams<T extends Key> = {
|
|
4
|
+
asyncItems?: {
|
|
5
|
+
value: T;
|
|
6
|
+
}[];
|
|
7
|
+
canShowAllSelectedChip?: boolean;
|
|
8
|
+
isAllSelected?: boolean;
|
|
9
|
+
selectedItems: {
|
|
10
|
+
value: T;
|
|
11
|
+
}[];
|
|
12
|
+
};
|
|
13
|
+
export declare const canSelectAllItems: <T extends Key>(items: {
|
|
14
|
+
value: T;
|
|
15
|
+
}[]) => boolean;
|
|
16
|
+
export declare const isAllItemsSelected: <T extends Key>(items: {
|
|
17
|
+
value: T;
|
|
18
|
+
}[], values: T[]) => boolean;
|
|
19
|
+
export declare const getAllSelectedChipState: <T extends Key>({ asyncItems, canShowAllSelectedChip, isAllSelected, selectedItems, }: AllSelectedChipStateParams<T>) => {
|
|
20
|
+
isAllSelected: boolean;
|
|
21
|
+
itemsCount: number;
|
|
22
|
+
};
|
|
23
|
+
export declare const getDefaultAllSelectedChipText: (itemsCount: number, variant?: AllSelectedChipTextVariant) => string;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const canSelectAllItems = (items)=>items.length > 1;
|
|
2
|
+
const isAllItemsSelected = (items, values)=>canSelectAllItems(items) && items.every((item)=>values.includes(item.value));
|
|
3
|
+
const getAllSelectedChipState = ({ asyncItems, canShowAllSelectedChip, isAllSelected, selectedItems })=>{
|
|
4
|
+
const selectedItemValues = selectedItems.map((item)=>item.value);
|
|
5
|
+
const isAllSelectedInAsyncContext = canShowAllSelectedChip && !!asyncItems && isAllItemsSelected(asyncItems, selectedItemValues);
|
|
6
|
+
return {
|
|
7
|
+
isAllSelected: Boolean(isAllSelected || isAllSelectedInAsyncContext),
|
|
8
|
+
itemsCount: asyncItems?.length || selectedItems.length
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
const getDefaultAllSelectedChipText = (itemsCount, variant = 'full')=>{
|
|
12
|
+
if ('short' === variant) return 'Выбраны все';
|
|
13
|
+
return `Выбраны все ${itemsCount}`;
|
|
14
|
+
};
|
|
15
|
+
export { canSelectAllItems, getAllSelectedChipState, getDefaultAllSelectedChipText, isAllItemsSelected };
|
|
@@ -9,6 +9,8 @@ export interface DropdownItem<T extends Key, DTO = unknown> {
|
|
|
9
9
|
label: string;
|
|
10
10
|
dto?: DTO;
|
|
11
11
|
}
|
|
12
|
+
export type GetAllSelectedChipText = (itemsCount: number) => string;
|
|
13
|
+
export type AllSelectedChipTextVariant = 'full' | 'short';
|
|
12
14
|
export type RenderSelectedItemProps = {
|
|
13
15
|
element: ReactNode;
|
|
14
16
|
chipRef: ForwardedRef<HTMLButtonElement> | undefined;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type HTMLAttributes, type Key, type ReactNode } from 'react';
|
|
2
|
+
import { type IHasTestId } from '../../common';
|
|
3
|
+
export interface PanelItem {
|
|
4
|
+
id: Key;
|
|
5
|
+
element: ReactNode;
|
|
6
|
+
width: number;
|
|
7
|
+
}
|
|
8
|
+
export interface PanelProps extends HTMLAttributes<HTMLDivElement>, IHasTestId {
|
|
9
|
+
items: PanelItem[];
|
|
10
|
+
/**
|
|
11
|
+
* maximum - 40
|
|
12
|
+
*
|
|
13
|
+
* @default 6
|
|
14
|
+
*/
|
|
15
|
+
columnsCount?: number;
|
|
16
|
+
/**
|
|
17
|
+
* @default 12
|
|
18
|
+
*/
|
|
19
|
+
rowGap?: number;
|
|
20
|
+
/**
|
|
21
|
+
* @default 20
|
|
22
|
+
*/
|
|
23
|
+
columnGap?: number;
|
|
24
|
+
/**
|
|
25
|
+
* @default 38
|
|
26
|
+
*/
|
|
27
|
+
minRowHeight?: number;
|
|
28
|
+
}
|
|
29
|
+
declare const ForwardedRefPanel: import("react").ForwardRefExoticComponent<PanelProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
30
|
+
declare const Empty: (props: HTMLAttributes<HTMLDivElement>) => import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
export declare const Panel: typeof ForwardedRefPanel & {
|
|
32
|
+
EmptyItem: typeof Empty;
|
|
33
|
+
};
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from "react";
|
|
3
|
+
import { cn, getOptionalTestId } from "../../common/index.js";
|
|
4
|
+
import Panel_module from "./Panel.module.js";
|
|
5
|
+
const ForwardedRefPanel = /*#__PURE__*/ forwardRef(({ items, columnsCount: columnsCountProp = 6, rowGap = 12, columnGap = 20, minRowHeight = 38, testId, ...restProps }, ref)=>{
|
|
6
|
+
const columnsCount = Math.min(columnsCountProp, 40);
|
|
7
|
+
const containerStyles = {
|
|
8
|
+
'--panel-columns-count': columnsCount,
|
|
9
|
+
'--panel-row-gap': `${rowGap}px`,
|
|
10
|
+
'--panel-column-gap': `${columnGap}px`,
|
|
11
|
+
'--panel-min-row-height': `${minRowHeight}px`
|
|
12
|
+
};
|
|
13
|
+
const getItemStyles = (bentoItem)=>({
|
|
14
|
+
'--panel-item-width': Math.min(Math.round(bentoItem.width), columnsCount)
|
|
15
|
+
});
|
|
16
|
+
return /*#__PURE__*/ jsx("div", {
|
|
17
|
+
...restProps,
|
|
18
|
+
ref: ref,
|
|
19
|
+
className: cn(Panel_module.container, restProps.className),
|
|
20
|
+
style: {
|
|
21
|
+
...restProps.style,
|
|
22
|
+
...containerStyles
|
|
23
|
+
},
|
|
24
|
+
"data-test-id": testId,
|
|
25
|
+
children: items.map((panelItem)=>/*#__PURE__*/ jsx("div", {
|
|
26
|
+
className: Panel_module.item,
|
|
27
|
+
style: getItemStyles(panelItem),
|
|
28
|
+
"data-test-id": getOptionalTestId(testId, `item-${panelItem.id}`),
|
|
29
|
+
children: panelItem.element
|
|
30
|
+
}, panelItem.id))
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
ForwardedRefPanel.displayName = 'Panel';
|
|
34
|
+
const Empty = (props)=>/*#__PURE__*/ jsx("div", {
|
|
35
|
+
...props
|
|
36
|
+
});
|
|
37
|
+
const Panel = ForwardedRefPanel;
|
|
38
|
+
Panel.EmptyItem = Empty;
|
|
39
|
+
export { Panel };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
.container-iTBnxl {
|
|
2
|
+
--panel-columns-count: 6;
|
|
3
|
+
--panel-row-gap: 12px;
|
|
4
|
+
--panel-column-gap: 20px;
|
|
5
|
+
--panel-min-row-height: 38px;
|
|
6
|
+
grid-template-columns: repeat(var(--panel-columns-count), minmax(50px, 1fr));
|
|
7
|
+
grid-auto-rows: minmax(var(--panel-min-row-height), auto);
|
|
8
|
+
gap: var(--panel-row-gap) var(--panel-column-gap);
|
|
9
|
+
display: grid;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.item-mDdH69 {
|
|
13
|
+
--panel-item-width: 1;
|
|
14
|
+
grid-column: auto/span var(--panel-item-width);
|
|
15
|
+
overflow: hidden;
|
|
16
|
+
}
|
|
17
|
+
|
|
@@ -2,9 +2,9 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { forwardRef, useMemo } from "react";
|
|
3
3
|
import { cn } from "../../common/css/cn.js";
|
|
4
4
|
import { getOptionalTestId } from "../../common/testId/index.js";
|
|
5
|
+
import { Info } from "../_shared/Info/Info.js";
|
|
5
6
|
import { Indicator } from "../Indicator/Indicator.js";
|
|
6
7
|
import { getIndicatorProps } from "../Indicator/Indicator.helpers.js";
|
|
7
|
-
import { Info } from "../Info/Info.js";
|
|
8
8
|
import { RadiobuttonContent } from "./components/RadiobuttonContent.js";
|
|
9
9
|
import { RadiobuttonHelp } from "./components/RadiobuttonHelp.js";
|
|
10
10
|
import Radiobutton_module from "./Radiobutton.module.js";
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { type ReactElement, type ReactNode } from 'react';
|
|
2
|
-
import type { ISelectOption } from '../types';
|
|
3
2
|
interface ArchivedInputValueProps {
|
|
4
|
-
value: ISelectOption;
|
|
5
3
|
input: ReactNode;
|
|
6
4
|
isShowIcon: boolean;
|
|
7
|
-
|
|
5
|
+
inputHintText?: string;
|
|
8
6
|
disabled?: boolean;
|
|
7
|
+
testId?: string;
|
|
9
8
|
}
|
|
10
|
-
export declare const ArchivedInputValue: (
|
|
9
|
+
export declare const ArchivedInputValue: ({ input, isShowIcon, inputHintText, disabled, testId, }: ArchivedInputValueProps) => ReactElement;
|
|
11
10
|
export {};
|
|
@@ -5,40 +5,35 @@ import { Hint } from "../../Hint/Hint.js";
|
|
|
5
5
|
import { Text, TextColor } from "../../Text/Text.js";
|
|
6
6
|
import { Archived16Icon } from "../../../icon/index.js";
|
|
7
7
|
import ArchivedInputValue_module from "./ArchivedInputValue.module.js";
|
|
8
|
-
const ArchivedInputValue = ({ input,
|
|
8
|
+
const ArchivedInputValue = ({ input, isShowIcon, inputHintText = 'В архиве', disabled, testId })=>{
|
|
9
9
|
const [visible, setVisible] = useState(false);
|
|
10
10
|
const handleVisibleChange = (show)=>{
|
|
11
|
-
setVisible(isShowIcon &&
|
|
11
|
+
setVisible(isShowIcon && show);
|
|
12
12
|
};
|
|
13
|
-
return /*#__PURE__*/
|
|
14
|
-
children:
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
})
|
|
25
|
-
}),
|
|
26
|
-
children: input
|
|
13
|
+
return /*#__PURE__*/ jsx(Fragment, {
|
|
14
|
+
children: /*#__PURE__*/ jsx(Hint, {
|
|
15
|
+
visible: visible,
|
|
16
|
+
onVisibleChange: handleVisibleChange,
|
|
17
|
+
mouseEnterDelay: 0.3,
|
|
18
|
+
overlay: /*#__PURE__*/ jsx(Fragment, {
|
|
19
|
+
children: /*#__PURE__*/ jsx(Text.Body, {
|
|
20
|
+
colorToken: TextColor.invert,
|
|
21
|
+
preline: true,
|
|
22
|
+
children: inputHintText
|
|
23
|
+
})
|
|
27
24
|
}),
|
|
28
|
-
|
|
29
|
-
className: ArchivedInputValue_module.
|
|
25
|
+
children: /*#__PURE__*/ jsxs("div", {
|
|
26
|
+
className: ArchivedInputValue_module.textContainer,
|
|
30
27
|
children: [
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
children: value.label
|
|
34
|
-
}),
|
|
35
|
-
/*#__PURE__*/ jsx("div", {
|
|
28
|
+
input,
|
|
29
|
+
isShowIcon && /*#__PURE__*/ jsx("div", {
|
|
36
30
|
className: cn(ArchivedInputValue_module.rightIcon, disabled && ArchivedInputValue_module.rightIconDisabled),
|
|
31
|
+
"data-test-id": testId ? `${testId}-archived-icon` : void 0,
|
|
37
32
|
children: /*#__PURE__*/ jsx(Archived16Icon, {})
|
|
38
33
|
})
|
|
39
34
|
]
|
|
40
35
|
})
|
|
41
|
-
|
|
36
|
+
})
|
|
42
37
|
});
|
|
43
38
|
};
|
|
44
39
|
export { ArchivedInputValue };
|