@bigbinary/neeto-molecules 1.1.9 → 1.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AutoSaveInput/autosaveinput.scss +15 -0
- package/dist/AutoSaveInput/constants.js +13 -0
- package/dist/AutoSaveInput/index.js +124 -0
- package/dist/AutoSaveInput/utils.js +10 -0
- package/dist/Breadcrumbs/breadcrumbs.scss +33 -0
- package/dist/Breadcrumbs/index.js +31 -0
- package/dist/BrowserSupport/Callout.js +15 -0
- package/dist/BrowserSupport/ContactUs.js +21 -0
- package/dist/BrowserSupport/DownloadLink.js +17 -0
- package/dist/BrowserSupport/PartialSupportedBrowserVersion.js +17 -0
- package/dist/BrowserSupport/UnknownBrowser.js +13 -0
- package/dist/BrowserSupport/UnsupportedBrowser.js +24 -0
- package/dist/BrowserSupport/UnsupportedBrowserMessage.js +22 -0
- package/dist/BrowserSupport/UnsupportedBrowserVersion.js +27 -0
- package/dist/BrowserSupport/UnsupportedVersionMessage.js +30 -0
- package/dist/BrowserSupport/browsersupport.scss +71 -0
- package/dist/BrowserSupport/constants.js +63 -0
- package/dist/BrowserSupport/index.js +58 -0
- package/dist/BrowserSupport/utils.js +32 -0
- package/dist/CalendarView/CustomDatePicker.js +87 -0
- package/dist/CalendarView/Header.js +53 -0
- package/dist/CalendarView/constants.js +19 -0
- package/dist/CalendarView/index.js +83 -0
- package/dist/CalendarView/utils.js +50 -0
- package/dist/Codeblock/index.js +30 -0
- package/dist/{Columns.js → Columns/index.js} +13 -130
- package/dist/Columns/utils.js +20 -0
- package/dist/ConfirmationModal/constants.js +3 -0
- package/dist/{ConfirmationModal.js → ConfirmationModal/index.js} +7 -23
- package/dist/ConfirmationModal/utils.js +10 -0
- package/dist/Container/container.scss +21 -0
- package/dist/Container/index.js +23 -0
- package/dist/CopyToClipboardButton/constants.js +13 -0
- package/dist/CopyToClipboardButton/copyToClipboard.scss +22 -0
- package/dist/CopyToClipboardButton/index.js +59 -0
- package/dist/CustomDomain/index.js +98 -0
- package/dist/CustomDomainDashboard/DeleteAlert.js +28 -0
- package/dist/CustomDomainDashboard/Header.js +32 -0
- package/dist/CustomDomainDashboard/Manage/Record.js +42 -0
- package/dist/CustomDomainDashboard/Manage/StatusInfo.js +21 -0
- package/dist/CustomDomainDashboard/Manage/TagBlock.js +36 -0
- package/dist/CustomDomainDashboard/Manage/constants.js +4 -0
- package/dist/CustomDomainDashboard/Manage/index.js +124 -0
- package/dist/CustomDomainDashboard/Manage/utils.js +8 -0
- package/dist/CustomDomainDashboard/api.js +35 -0
- package/dist/CustomDomainDashboard/constants.js +2 -0
- package/dist/CustomDomainDashboard/index.js +118 -0
- package/dist/CustomDomainDashboard/useCustomDomainApi.js +71 -0
- package/dist/CustomDomainDashboard/utils.js +84 -0
- package/dist/{DateFormat.js → DateFormat/index.js} +8 -25
- package/dist/DateRangeFilter/index.js +60 -0
- package/dist/DateRangeFilter/utils.js +113 -0
- package/dist/DynamicVariables/dynamic-variables.scss +34 -0
- package/dist/DynamicVariables/index.js +59 -0
- package/dist/DynamicVariables/utils.js +37 -0
- package/dist/EmailForm/EmailForm.js +97 -0
- package/dist/EmailForm/EmailFormProvider.js +45 -0
- package/dist/EmailForm/EmailPreview.js +129 -0
- package/dist/EmailForm/ReplyToField.js +55 -0
- package/dist/EmailForm/SendToField.js +27 -0
- package/dist/EmailForm/SubjectField.js +64 -0
- package/dist/EmailForm/constants.js +33 -0
- package/dist/EmailForm/contexts/EmailForm.js +7 -0
- package/dist/EmailForm/index.js +4 -0
- package/dist/EmailForm/utils.js +10 -0
- package/dist/EmailPreview/index.js +2 -0
- package/dist/{ErrorPage.js → ErrorPage/constants.js} +36 -175
- package/dist/ErrorPage/index.js +78 -0
- package/dist/Header/Breadcrumbs.js +31 -0
- package/dist/Header/Dropdown.js +12 -0
- package/dist/Header/constants.js +6 -0
- package/dist/Header/header.scss +121 -0
- package/dist/Header/index.js +61 -0
- package/dist/IconPicker/Icon.js +34 -0
- package/dist/IconPicker/NoResults.js +12 -0
- package/dist/IconPicker/constants.js +8 -0
- package/dist/IconPicker/icon-picker.scss +1 -0
- package/dist/IconPicker/index.js +164 -0
- package/dist/ImageWithFallback/ImagePlaceholder.js +16 -0
- package/dist/ImageWithFallback/index.js +31 -0
- package/dist/IntegrationCard/Dropdown.js +45 -0
- package/dist/IntegrationCard/Status.js +25 -0
- package/dist/IntegrationCard/index.js +128 -0
- package/dist/IntegrationDisconnectAlert/index.js +36 -0
- package/dist/{IntegrationWalkthroughModal.js → IntegrationWalkthroughModal/index.js} +6 -8
- package/dist/IpRestriction/AllowedIpRanges.js +72 -0
- package/dist/IpRestriction/CurrentIp.js +26 -0
- package/dist/IpRestriction/FormRow.js +77 -0
- package/dist/IpRestriction/Row.js +86 -0
- package/dist/IpRestriction/apis/allowed_ip_ranges.js +28 -0
- package/dist/IpRestriction/apis/current_ip.js +11 -0
- package/dist/IpRestriction/apis/ip_restriction.js +16 -0
- package/dist/IpRestriction/constants.js +11 -0
- package/dist/IpRestriction/hooks/reactQuery/useAllowedIpRanges.js +34 -0
- package/dist/IpRestriction/hooks/reactQuery/useCurrentIp.js +10 -0
- package/dist/IpRestriction/hooks/reactQuery/useIpRestrictions.js +18 -0
- package/dist/IpRestriction/index.js +102 -0
- package/dist/IpRestriction/utils.js +67 -0
- package/dist/KeyboardShortcuts/Pane/HotKey.js +44 -0
- package/dist/KeyboardShortcuts/Pane/HotKeyList.js +42 -0
- package/dist/KeyboardShortcuts/Pane/constants.js +25 -0
- package/dist/KeyboardShortcuts/Pane/index.js +61 -0
- package/dist/KeyboardShortcuts/Pane/keyboard-shortcuts.scss +5 -0
- package/dist/KeyboardShortcuts/Pane/utils.js +66 -0
- package/dist/KeyboardShortcuts/hooks/useKeyboardShortcutsPaneState.js +31 -0
- package/dist/KeyboardShortcuts/index.js +9 -0
- package/dist/LoginPage/Form.js +57 -0
- package/dist/LoginPage/constants.js +12 -0
- package/dist/LoginPage/index.js +103 -0
- package/dist/MenuBar/AddNew.js +25 -0
- package/dist/MenuBar/Block.js +60 -0
- package/dist/MenuBar/Item.js +32 -0
- package/dist/MenuBar/Search.js +39 -0
- package/dist/MenuBar/SubTitle.js +23 -0
- package/dist/MenuBar/index.js +46 -0
- package/dist/MenuBar/menubar.scss +154 -0
- package/dist/Metadata/Block.js +30 -0
- package/dist/Metadata/DetailsBlock.js +86 -0
- package/dist/Metadata/constants.js +9 -0
- package/dist/Metadata/index.js +29 -0
- package/dist/Metadata/metadata.scss +15 -0
- package/dist/MoreDropdown/constants.js +25 -0
- package/dist/{MoreDropdown.js → MoreDropdown/index.js} +9 -102
- package/dist/NavigationHeader/LeftBlock.js +32 -0
- package/dist/NavigationHeader/Navigation.js +24 -0
- package/dist/NavigationHeader/RightBlock.js +68 -0
- package/dist/NavigationHeader/constants.js +11 -0
- package/dist/NavigationHeader/index.js +19 -0
- package/dist/NavigationHeader/navigation-header.scss +3 -0
- package/dist/NeetoWidget/CodeBlock.js +57 -0
- package/dist/NeetoWidget/CodeSnippet.js +119 -0
- package/dist/NeetoWidget/EmbedCode.js +281 -0
- package/dist/NeetoWidget/Main.js +19 -0
- package/dist/NeetoWidget/SelectionSwitches/TooltipSwitch.js +25 -0
- package/dist/NeetoWidget/SelectionSwitches/index.js +44 -0
- package/dist/NeetoWidget/SyntaxHighlighter.js +17 -0
- package/dist/NeetoWidget/api.js +20 -0
- package/dist/NeetoWidget/constants.js +62 -0
- package/dist/NeetoWidget/hooks/useForceUpdate.js +14 -0
- package/dist/NeetoWidget/index.js +7 -0
- package/dist/NeetoWidget/mutations.js +9 -0
- package/dist/NeetoWidget/queries.js +32 -0
- package/dist/NeetoWidget/utils.js +83 -0
- package/dist/PageLoader/index.js +81 -0
- package/dist/PageLoader/page-loader.scss +95 -0
- package/dist/PhoneNumber/CountryPicker/SingleValue.js +21 -0
- package/dist/PhoneNumber/CountryPicker/constants.js +26 -0
- package/dist/PhoneNumber/CountryPicker/index.js +59 -0
- package/dist/PhoneNumber/FormikPhoneNumberInput.js +21 -0
- package/dist/PhoneNumber/PhoneNumber.js +30 -0
- package/dist/PhoneNumber/PhoneNumberInput.js +79 -0
- package/dist/PhoneNumber/index.js +5 -0
- package/dist/PhoneNumber/utils.js +55 -0
- package/dist/PublishBlock/AlertBlock.js +14 -0
- package/dist/PublishBlock/index.js +100 -0
- package/dist/PublishBlock/publish-block.scss +25 -0
- package/dist/Rename/DummySpan.js +21 -0
- package/dist/Rename/constants.js +1 -0
- package/dist/Rename/index.js +191 -0
- package/dist/Rename/rename.scss +69 -0
- package/dist/Rename/utils.js +10 -0
- package/dist/ResponsiveDevicePicker/constants.js +19 -0
- package/dist/ResponsiveDevicePicker/index.js +36 -0
- package/dist/Schedule/DisplayAvailability.js +58 -0
- package/dist/Schedule/Fields.js +43 -0
- package/dist/Schedule/Form/ScheduleRow.js +125 -0
- package/dist/Schedule/Form/constants.js +20 -0
- package/dist/Schedule/Form/index.js +144 -0
- package/dist/Schedule/Form/utils.js +63 -0
- package/dist/Schedule/Header.js +76 -0
- package/dist/Schedule/ScheduleContext.js +8 -0
- package/dist/Schedule/constants.js +8 -0
- package/dist/Schedule/dayjsExtended/constants.js +1 -0
- package/dist/Schedule/dayjsExtended/index.js +14 -0
- package/dist/Schedule/dayjsExtended/range.js +73 -0
- package/dist/Schedule/index.js +80 -0
- package/dist/Schedule/utils.js +152 -0
- package/dist/Scrollable/constants.js +8 -0
- package/dist/Scrollable/index.js +26 -0
- package/dist/Scrollable/scrollable.scss +32 -0
- package/dist/Security/AllowedKeywords/Add.js +38 -0
- package/dist/Security/AllowedKeywords/index.js +38 -0
- package/dist/Security/PasswordBlock.js +31 -0
- package/dist/Security/RadioBlock.js +38 -0
- package/dist/Security/api.js +12 -0
- package/dist/Security/constants.js +58 -0
- package/dist/Security/index.js +68 -0
- package/dist/Security/useSecurityApi.js +22 -0
- package/dist/Security/utils.js +31 -0
- package/dist/SendToFields/FilePicker.js +34 -0
- package/dist/SendToFields/constants.js +6 -0
- package/dist/SendToFields/index.js +102 -0
- package/dist/SendToFields/utils.js +54 -0
- package/dist/Settings/Category.js +30 -0
- package/dist/Settings/Item.js +38 -0
- package/dist/Settings/index.js +37 -0
- package/dist/Settings/utils.js +4 -0
- package/dist/ShareViaEmail/EmailBodyEditor.js +22 -0
- package/dist/ShareViaEmail/FilePicker.js +43 -0
- package/dist/ShareViaEmail/Form.js +101 -0
- package/dist/ShareViaEmail/FormikDatePicker.js +24 -0
- package/dist/ShareViaEmail/constants.js +14 -0
- package/dist/ShareViaEmail/index.js +89 -0
- package/dist/ShareViaEmail/utils.js +72 -0
- package/dist/ShareViaLink/EditURL.js +74 -0
- package/dist/ShareViaLink/Link.js +105 -0
- package/dist/ShareViaLink/QRCode.js +41 -0
- package/dist/ShareViaLink/RegenerateURL.js +47 -0
- package/dist/ShareViaLink/SocialMedia.js +52 -0
- package/dist/ShareViaLink/constants.js +25 -0
- package/dist/ShareViaLink/edit-url.scss +8 -0
- package/dist/ShareViaLink/index.js +46 -0
- package/dist/ShareViaLink/utils.js +47 -0
- package/dist/Sidebar/AppSwitcher/AppLink.js +45 -0
- package/dist/Sidebar/AppSwitcher/Backdrop.js +13 -0
- package/dist/Sidebar/AppSwitcher/Body.js +65 -0
- package/dist/Sidebar/AppSwitcher/Portal.js +27 -0
- package/dist/Sidebar/AppSwitcher/appswitcher.scss +164 -0
- package/dist/Sidebar/AppSwitcher/index.js +47 -0
- package/dist/Sidebar/AppSwitcher/utils.js +25 -0
- package/dist/Sidebar/Chevron.js +14 -0
- package/dist/Sidebar/FeaturedTooltip.js +19 -0
- package/dist/Sidebar/Footer/AppSwitcherButton.js +48 -0
- package/dist/Sidebar/Footer/ProfileButton.js +30 -0
- package/dist/Sidebar/Footer/index.js +56 -0
- package/dist/Sidebar/Footer/utils.js +39 -0
- package/dist/Sidebar/Header.js +33 -0
- package/dist/Sidebar/HelpSection/HelpSectionMenu.js +52 -0
- package/dist/Sidebar/HelpSection/index.js +32 -0
- package/dist/Sidebar/Links.js +112 -0
- package/dist/Sidebar/NavIconWrapper.js +20 -0
- package/dist/Sidebar/ProfileSection/LinkSection.js +36 -0
- package/dist/Sidebar/ProfileSection/ProfileMenu.js +48 -0
- package/dist/Sidebar/ProfileSection/index.js +42 -0
- package/dist/Sidebar/constants.js +40 -0
- package/dist/Sidebar/index.js +94 -0
- package/dist/Sidebar/sidebar.scss +379 -0
- package/dist/Sidebar/utils.js +18 -0
- package/dist/SubHeader/RightBlock/Columns.js +35 -0
- package/dist/SubHeader/RightBlock/Download.js +28 -0
- package/dist/SubHeader/RightBlock/Filter.js +31 -0
- package/dist/SubHeader/RightBlock/index.js +21 -0
- package/dist/SubHeader/RightBlock/utils.js +13 -0
- package/dist/SubHeader/index.js +28 -0
- package/dist/SubHeader/subheader.scss +78 -0
- package/dist/TableWrapper/index.js +18 -0
- package/dist/ThemeSidebar/Customize/Logo.js +39 -0
- package/dist/ThemeSidebar/Customize/Properties.js +170 -0
- package/dist/ThemeSidebar/Customize/index.js +66 -0
- package/dist/ThemeSidebar/Themes/ThemeCard.js +135 -0
- package/dist/ThemeSidebar/Themes/index.js +110 -0
- package/dist/ThemeSidebar/TitleBar.js +62 -0
- package/dist/ThemeSidebar/constants.js +127 -0
- package/dist/ThemeSidebar/fields/AlignmentBlock.js +50 -0
- package/dist/ThemeSidebar/fields/Card.js +19 -0
- package/dist/ThemeSidebar/fields/ColorBlock.js +19 -0
- package/dist/ThemeSidebar/fields/FontPickerBlock.js +35 -0
- package/dist/ThemeSidebar/fields/ImageBlock/ImageUploader.js +67 -0
- package/dist/ThemeSidebar/fields/ImageBlock/ProgressBar.js +22 -0
- package/dist/ThemeSidebar/fields/ImageBlock/index.js +55 -0
- package/dist/ThemeSidebar/fields/SelectBlock.js +24 -0
- package/dist/ThemeSidebar/fields/SliderBlock.js +30 -0
- package/dist/ThemeSidebar/fields/SwitchBlock.js +17 -0
- package/dist/ThemeSidebar/fields/TextBlock.js +13 -0
- package/dist/ThemeSidebar/fields/slider.scss +199 -0
- package/dist/ThemeSidebar/hooks/useDirectUploadDropzone.js +149 -0
- package/dist/ThemeSidebar/index.js +118 -0
- package/dist/ThemeSidebar/themeSidebar.scss +45 -0
- package/dist/ThemeSidebar/utils.js +169 -0
- package/dist/TimeFormat/index.js +3 -0
- package/dist/TimezoneMismatchModal/apis/time_zone.js +9 -0
- package/dist/TimezoneMismatchModal/index.js +83 -0
- package/dist/TimezoneMismatchModal/useTimeZoneApi.js +10 -0
- package/dist/TimezoneMismatchModal/utils.js +12 -0
- package/dist/ToggleFeatureCard/ToolTipSwitch.js +31 -0
- package/dist/ToggleFeatureCard/constants.js +5 -0
- package/dist/ToggleFeatureCard/hooks/useScrollIntoView.js +11 -0
- package/dist/ToggleFeatureCard/index.js +148 -0
- package/dist/ToggleFeatureCard/toggleFeatureCard.scss +4 -0
- package/package.json +28 -35
- package/dist/AutoSaveInput.cjs.js +0 -724
- package/dist/AutoSaveInput.cjs.js.map +0 -1
- package/dist/AutoSaveInput.js +0 -718
- package/dist/AutoSaveInput.js.map +0 -1
- package/dist/Breadcrumbs.cjs.js +0 -44
- package/dist/Breadcrumbs.cjs.js.map +0 -1
- package/dist/Breadcrumbs.js +0 -38
- package/dist/Breadcrumbs.js.map +0 -1
- package/dist/BrowserSupport.cjs.js +0 -1731
- package/dist/BrowserSupport.cjs.js.map +0 -1
- package/dist/BrowserSupport.js +0 -1725
- package/dist/BrowserSupport.js.map +0 -1
- package/dist/CalendarView.cjs.js +0 -610
- package/dist/CalendarView.cjs.js.map +0 -1
- package/dist/CalendarView.js +0 -598
- package/dist/CalendarView.js.map +0 -1
- package/dist/Codeblock.cjs.js +0 -302
- package/dist/Codeblock.cjs.js.map +0 -1
- package/dist/Codeblock.js +0 -296
- package/dist/Codeblock.js.map +0 -1
- package/dist/Columns.cjs.js +0 -248
- package/dist/Columns.cjs.js.map +0 -1
- package/dist/Columns.js.map +0 -1
- package/dist/ConfirmationModal.cjs.js +0 -87
- package/dist/ConfirmationModal.cjs.js.map +0 -1
- package/dist/ConfirmationModal.js.map +0 -1
- package/dist/Container.cjs.js +0 -1277
- package/dist/Container.cjs.js.map +0 -1
- package/dist/Container.js +0 -1271
- package/dist/Container.js.map +0 -1
- package/dist/CopyToClipboardButton.cjs.js +0 -275
- package/dist/CopyToClipboardButton.cjs.js.map +0 -1
- package/dist/CopyToClipboardButton.js +0 -269
- package/dist/CopyToClipboardButton.js.map +0 -1
- package/dist/CustomDomain.cjs.js +0 -774
- package/dist/CustomDomain.cjs.js.map +0 -1
- package/dist/CustomDomain.js +0 -747
- package/dist/CustomDomain.js.map +0 -1
- package/dist/CustomDomainDashboard.cjs.js +0 -2370
- package/dist/CustomDomainDashboard.cjs.js.map +0 -1
- package/dist/CustomDomainDashboard.js +0 -2342
- package/dist/CustomDomainDashboard.js.map +0 -1
- package/dist/DateFormat.cjs.js +0 -51
- package/dist/DateFormat.cjs.js.map +0 -1
- package/dist/DateFormat.js.map +0 -1
- package/dist/DateRangeFilter.cjs.js +0 -236
- package/dist/DateRangeFilter.cjs.js.map +0 -1
- package/dist/DateRangeFilter.js +0 -229
- package/dist/DateRangeFilter.js.map +0 -1
- package/dist/DynamicVariables.cjs.js +0 -189
- package/dist/DynamicVariables.cjs.js.map +0 -1
- package/dist/DynamicVariables.js +0 -183
- package/dist/DynamicVariables.js.map +0 -1
- package/dist/EmailForm.cjs.js +0 -4295
- package/dist/EmailForm.cjs.js.map +0 -1
- package/dist/EmailForm.js +0 -4265
- package/dist/EmailForm.js.map +0 -1
- package/dist/EmailPreview.cjs.js +0 -1419
- package/dist/EmailPreview.cjs.js.map +0 -1
- package/dist/EmailPreview.js +0 -1413
- package/dist/EmailPreview.js.map +0 -1
- package/dist/ErrorPage.cjs.js +0 -226
- package/dist/ErrorPage.cjs.js.map +0 -1
- package/dist/ErrorPage.js.map +0 -1
- package/dist/Header.cjs.js +0 -188
- package/dist/Header.cjs.js.map +0 -1
- package/dist/Header.js +0 -182
- package/dist/Header.js.map +0 -1
- package/dist/IconPicker.cjs.js +0 -1308
- package/dist/IconPicker.cjs.js.map +0 -1
- package/dist/IconPicker.js +0 -1302
- package/dist/IconPicker.js.map +0 -1
- package/dist/ImageWithFallback.cjs.js +0 -247
- package/dist/ImageWithFallback.cjs.js.map +0 -1
- package/dist/ImageWithFallback.js +0 -241
- package/dist/ImageWithFallback.js.map +0 -1
- package/dist/IntegrationCard.cjs.js +0 -409
- package/dist/IntegrationCard.cjs.js.map +0 -1
- package/dist/IntegrationCard.js +0 -403
- package/dist/IntegrationCard.js.map +0 -1
- package/dist/IntegrationDisconnectAlert.cjs.js +0 -89
- package/dist/IntegrationDisconnectAlert.cjs.js.map +0 -1
- package/dist/IntegrationDisconnectAlert.js +0 -80
- package/dist/IntegrationDisconnectAlert.js.map +0 -1
- package/dist/IntegrationWalkthroughModal.cjs.js +0 -50
- package/dist/IntegrationWalkthroughModal.cjs.js.map +0 -1
- package/dist/IntegrationWalkthroughModal.js.map +0 -1
- package/dist/IpRestriction.cjs.js +0 -3931
- package/dist/IpRestriction.cjs.js.map +0 -1
- package/dist/IpRestriction.js +0 -3905
- package/dist/IpRestriction.js.map +0 -1
- package/dist/KeyboardShortcuts.cjs.js +0 -2244
- package/dist/KeyboardShortcuts.cjs.js.map +0 -1
- package/dist/KeyboardShortcuts.js +0 -2237
- package/dist/KeyboardShortcuts.js.map +0 -1
- package/dist/LoginPage.cjs.js +0 -618
- package/dist/LoginPage.cjs.js.map +0 -1
- package/dist/LoginPage.js +0 -593
- package/dist/LoginPage.js.map +0 -1
- package/dist/MenuBar.cjs.js +0 -34273
- package/dist/MenuBar.cjs.js.map +0 -1
- package/dist/MenuBar.js +0 -34267
- package/dist/MenuBar.js.map +0 -1
- package/dist/Metadata.cjs.js +0 -272
- package/dist/Metadata.cjs.js.map +0 -1
- package/dist/Metadata.js +0 -266
- package/dist/Metadata.js.map +0 -1
- package/dist/MoreDropdown.cjs.js +0 -168
- package/dist/MoreDropdown.cjs.js.map +0 -1
- package/dist/MoreDropdown.js.map +0 -1
- package/dist/NavigationHeader.cjs.js +0 -756
- package/dist/NavigationHeader.cjs.js.map +0 -1
- package/dist/NavigationHeader.js +0 -750
- package/dist/NavigationHeader.js.map +0 -1
- package/dist/NeetoWidget.cjs.js +0 -3375
- package/dist/NeetoWidget.cjs.js.map +0 -1
- package/dist/NeetoWidget.js +0 -3348
- package/dist/NeetoWidget.js.map +0 -1
- package/dist/PageLoader.cjs.js +0 -158
- package/dist/PageLoader.cjs.js.map +0 -1
- package/dist/PageLoader.js +0 -134
- package/dist/PageLoader.js.map +0 -1
- package/dist/PhoneNumber.cjs.js +0 -7021
- package/dist/PhoneNumber.cjs.js.map +0 -1
- package/dist/PhoneNumber.js +0 -6989
- package/dist/PhoneNumber.js.map +0 -1
- package/dist/PublishBlock.cjs.js +0 -224
- package/dist/PublishBlock.cjs.js.map +0 -1
- package/dist/PublishBlock.js +0 -218
- package/dist/PublishBlock.js.map +0 -1
- package/dist/Rename.cjs.js +0 -516
- package/dist/Rename.cjs.js.map +0 -1
- package/dist/Rename.js +0 -510
- package/dist/Rename.js.map +0 -1
- package/dist/ResponsiveDevicePicker.cjs.js +0 -260
- package/dist/ResponsiveDevicePicker.cjs.js.map +0 -1
- package/dist/ResponsiveDevicePicker.js +0 -254
- package/dist/ResponsiveDevicePicker.js.map +0 -1
- package/dist/Schedule.cjs.js +0 -1077
- package/dist/Schedule.cjs.js.map +0 -1
- package/dist/Schedule.js +0 -1046
- package/dist/Schedule.js.map +0 -1
- package/dist/Scrollable.cjs.js +0 -188
- package/dist/Scrollable.cjs.js.map +0 -1
- package/dist/Scrollable.js +0 -182
- package/dist/Scrollable.js.map +0 -1
- package/dist/Security.cjs.js +0 -1921
- package/dist/Security.cjs.js.map +0 -1
- package/dist/Security.js +0 -1895
- package/dist/Security.js.map +0 -1
- package/dist/SendToFields.cjs.js +0 -2524
- package/dist/SendToFields.cjs.js.map +0 -1
- package/dist/SendToFields.js +0 -2517
- package/dist/SendToFields.js.map +0 -1
- package/dist/Settings.cjs.js +0 -501
- package/dist/Settings.cjs.js.map +0 -1
- package/dist/Settings.js +0 -495
- package/dist/Settings.js.map +0 -1
- package/dist/ShareViaEmail.cjs.js +0 -4272
- package/dist/ShareViaEmail.cjs.js.map +0 -1
- package/dist/ShareViaEmail.js +0 -4246
- package/dist/ShareViaEmail.js.map +0 -1
- package/dist/ShareViaLink.cjs.js +0 -1512
- package/dist/ShareViaLink.cjs.js.map +0 -1
- package/dist/ShareViaLink.js +0 -1486
- package/dist/ShareViaLink.js.map +0 -1
- package/dist/Sidebar.cjs.js +0 -34985
- package/dist/Sidebar.cjs.js.map +0 -1
- package/dist/Sidebar.js +0 -34959
- package/dist/Sidebar.js.map +0 -1
- package/dist/SubHeader.cjs.js +0 -283
- package/dist/SubHeader.cjs.js.map +0 -1
- package/dist/SubHeader.js +0 -276
- package/dist/SubHeader.js.map +0 -1
- package/dist/TableWrapper.cjs.js +0 -87
- package/dist/TableWrapper.cjs.js.map +0 -1
- package/dist/TableWrapper.js +0 -81
- package/dist/TableWrapper.js.map +0 -1
- package/dist/ThemeSidebar.cjs.js +0 -13705
- package/dist/ThemeSidebar.cjs.js.map +0 -1
- package/dist/ThemeSidebar.js +0 -13680
- package/dist/ThemeSidebar.js.map +0 -1
- package/dist/TimeFormat.cjs.js +0 -53
- package/dist/TimeFormat.cjs.js.map +0 -1
- package/dist/TimeFormat.js +0 -47
- package/dist/TimeFormat.js.map +0 -1
- package/dist/TimezoneMismatchModal.cjs.js +0 -176
- package/dist/TimezoneMismatchModal.cjs.js.map +0 -1
- package/dist/TimezoneMismatchModal.js +0 -168
- package/dist/TimezoneMismatchModal.js.map +0 -1
- package/dist/ToggleFeatureCard.cjs.js +0 -389
- package/dist/ToggleFeatureCard.cjs.js.map +0 -1
- package/dist/ToggleFeatureCard.js +0 -383
- package/dist/ToggleFeatureCard.js.map +0 -1
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
+
import React, { useState } from "react";
|
|
3
|
+
import { isNotPresent } from "@bigbinary/neeto-commons-frontend/pure";
|
|
4
|
+
import { joinHyphenCase } from "@bigbinary/neeto-commons-frontend/utils";
|
|
5
|
+
import { Copy } from "@bigbinary/neeto-icons";
|
|
6
|
+
import { Typography, Dropdown, Button, Label, Checkbox } from "@bigbinary/neetoui";
|
|
7
|
+
import { Checkbox as FormikCheckbox } from "@bigbinary/neetoui/formik";
|
|
8
|
+
import { append, identity, without } from "ramda";
|
|
9
|
+
import { useTranslation } from "react-i18next";
|
|
10
|
+
import ScheduleRow from "./ScheduleRow";
|
|
11
|
+
import { addDefaultPeriod } from "./utils";
|
|
12
|
+
import { DAYS } from "../constants";
|
|
13
|
+
var Form = function Form(_ref) {
|
|
14
|
+
var day = _ref.day,
|
|
15
|
+
handleCopy = _ref.handleCopy,
|
|
16
|
+
values = _ref.values,
|
|
17
|
+
setFieldValue = _ref.setFieldValue,
|
|
18
|
+
index = _ref.index;
|
|
19
|
+
var _useState = useState([]),
|
|
20
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
21
|
+
deletedPeriods = _useState2[0],
|
|
22
|
+
setDeletedPeriods = _useState2[1];
|
|
23
|
+
var _useState3 = useState([]),
|
|
24
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
25
|
+
wdaysToCopy = _useState4[0],
|
|
26
|
+
setWdaysToCopy = _useState4[1];
|
|
27
|
+
var _useTranslation = useTranslation(),
|
|
28
|
+
t = _useTranslation.t;
|
|
29
|
+
var restoreDeletedPeriods = function restoreDeletedPeriods(setFieldValue) {
|
|
30
|
+
setFieldValue("wdays[".concat(index, "].periods"), deletedPeriods);
|
|
31
|
+
};
|
|
32
|
+
var uncheckCheckbox = function uncheckCheckbox(setFieldValue, values) {
|
|
33
|
+
var _values$wdays$index$p;
|
|
34
|
+
setFieldValue("wdays[".concat(index, "].available"), false);
|
|
35
|
+
setFieldValue("wdays[".concat(index, "].periods"), []);
|
|
36
|
+
if ((_values$wdays$index$p = values.wdays[index].periods[0]) !== null && _values$wdays$index$p !== void 0 && _values$wdays$index$p.id) {
|
|
37
|
+
setDeletedPeriods(values.wdays[index].periods.filter(function (item) {
|
|
38
|
+
return item.startTime && item.endTime;
|
|
39
|
+
}).map(identity));
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
var checkCheckbox = function checkCheckbox(setFieldValue) {
|
|
43
|
+
var _deletedPeriods$;
|
|
44
|
+
setFieldValue("wdays[".concat(index, "].available"), true);
|
|
45
|
+
if ((_deletedPeriods$ = deletedPeriods[0]) !== null && _deletedPeriods$ !== void 0 && _deletedPeriods$.startTime) {
|
|
46
|
+
restoreDeletedPeriods(setFieldValue);
|
|
47
|
+
} else if (isNotPresent(values.wdays[index].periods)) {
|
|
48
|
+
setFieldValue("wdays[".concat(index, "].periods"), [addDefaultPeriod(day)]);
|
|
49
|
+
} else {
|
|
50
|
+
setFieldValue("wdays[".concat(index, "].periods"), [""]);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
var handleCheckbox = function handleCheckbox(setFieldValue, values) {
|
|
54
|
+
if (values.wdays[index].available) {
|
|
55
|
+
uncheckCheckbox(setFieldValue, values);
|
|
56
|
+
} else {
|
|
57
|
+
checkCheckbox(setFieldValue);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
var handleCopyChange = function handleCopyChange(e, day) {
|
|
61
|
+
return setWdaysToCopy(e.target.checked ? append(day) : without([day]));
|
|
62
|
+
};
|
|
63
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
64
|
+
className: "neeto-ui-rounded-md neeto-ui-shadow-s neeto-ui-border-gray-300 w-full border px-6"
|
|
65
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
66
|
+
className: "my-4 flex w-full items-start space-x-4",
|
|
67
|
+
"data-cy": "working-day-container"
|
|
68
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
69
|
+
className: "mt-1 flex w-16 items-center justify-start"
|
|
70
|
+
}, /*#__PURE__*/React.createElement(FormikCheckbox, {
|
|
71
|
+
"aria-label": "wdays[".concat(index, "].available"),
|
|
72
|
+
checked: values.wdays[index].available,
|
|
73
|
+
"data-cy": joinHyphenCase(day, "weekly-hours-checkbox"),
|
|
74
|
+
id: "day",
|
|
75
|
+
name: "wdays[".concat(index, "].available"),
|
|
76
|
+
onChange: function onChange() {
|
|
77
|
+
return handleCheckbox(setFieldValue, values);
|
|
78
|
+
}
|
|
79
|
+
}), /*#__PURE__*/React.createElement(Typography, {
|
|
80
|
+
className: "ml-2 capitalize",
|
|
81
|
+
component: "span",
|
|
82
|
+
"data-cy": joinHyphenCase(day, "day-text"),
|
|
83
|
+
style: "body2",
|
|
84
|
+
weight: "semibold"
|
|
85
|
+
}, t("neetoMolecules.schedule.days.".concat(day)))), /*#__PURE__*/React.createElement(ScheduleRow, {
|
|
86
|
+
day: day,
|
|
87
|
+
setFieldValue: setFieldValue,
|
|
88
|
+
values: values,
|
|
89
|
+
wdayIndex: index
|
|
90
|
+
}), /*#__PURE__*/React.createElement(Dropdown, {
|
|
91
|
+
closeOnSelect: true,
|
|
92
|
+
buttonStyle: "secondary",
|
|
93
|
+
icon: Copy,
|
|
94
|
+
position: "right-start",
|
|
95
|
+
buttonProps: {
|
|
96
|
+
tooltipProps: {
|
|
97
|
+
content: t("neetoMolecules.schedule.copyScheduleTooltip"),
|
|
98
|
+
position: "top",
|
|
99
|
+
hideAfter: 5000
|
|
100
|
+
},
|
|
101
|
+
className: "flex-shrink-0",
|
|
102
|
+
"data-testid": joinHyphenCase(day, "copy-schedule-icon"),
|
|
103
|
+
"data-cy": joinHyphenCase(day, "copy-schedule-icon")
|
|
104
|
+
},
|
|
105
|
+
onClose: function onClose() {
|
|
106
|
+
return setWdaysToCopy([]);
|
|
107
|
+
}
|
|
108
|
+
}, /*#__PURE__*/React.createElement("li", null, /*#__PURE__*/React.createElement(Typography, {
|
|
109
|
+
style: "h5"
|
|
110
|
+
}, t("neetoMolecules.schedule.copySchedule"))), DAYS.filter(function (copyDay) {
|
|
111
|
+
return copyDay !== day;
|
|
112
|
+
}).map(function (day) {
|
|
113
|
+
return /*#__PURE__*/React.createElement("li", {
|
|
114
|
+
key: day,
|
|
115
|
+
onClick: function onClick(e) {
|
|
116
|
+
return e.stopPropagation();
|
|
117
|
+
}
|
|
118
|
+
}, /*#__PURE__*/React.createElement(Label, {
|
|
119
|
+
className: "w-full cursor-pointer capitalize"
|
|
120
|
+
}, /*#__PURE__*/React.createElement(Checkbox, {
|
|
121
|
+
checked: wdaysToCopy.includes(day),
|
|
122
|
+
id: day,
|
|
123
|
+
label: t("neetoMolecules.schedule.days.".concat(day)),
|
|
124
|
+
onChange: function onChange(e) {
|
|
125
|
+
return handleCopyChange(e, day);
|
|
126
|
+
}
|
|
127
|
+
})));
|
|
128
|
+
}), /*#__PURE__*/React.createElement("li", null, /*#__PURE__*/React.createElement(Button, {
|
|
129
|
+
"data-cy": "copy-schedule-submit-button",
|
|
130
|
+
disabled: isNotPresent(wdaysToCopy),
|
|
131
|
+
label: t("neetoMolecules.common.actions.submit"),
|
|
132
|
+
size: "small",
|
|
133
|
+
onClick: function onClick() {
|
|
134
|
+
handleCopy({
|
|
135
|
+
values: values,
|
|
136
|
+
index: index,
|
|
137
|
+
setFieldValue: setFieldValue,
|
|
138
|
+
wdaysToCopy: wdaysToCopy
|
|
139
|
+
});
|
|
140
|
+
setWdaysToCopy([]);
|
|
141
|
+
}
|
|
142
|
+
})))));
|
|
143
|
+
};
|
|
144
|
+
export default Form;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
|
+
import { toLabelAndValue, isNotPresent } from "@bigbinary/neeto-commons-frontend/pure";
|
|
3
|
+
import { uniq, pluck, difference } from "ramda";
|
|
4
|
+
import { SLOT_TIME_FORMAT, END_OF_DAY } from "./constants";
|
|
5
|
+
import dayjs from "../dayjsExtended";
|
|
6
|
+
import { isTimeBehind } from "../utils";
|
|
7
|
+
var buildSlotIntervals = function buildSlotIntervals(_ref) {
|
|
8
|
+
var interval = _ref.interval,
|
|
9
|
+
bookedSlots = _ref.bookedSlots,
|
|
10
|
+
slotType = _ref.slotType,
|
|
11
|
+
_ref$selectedValue = _ref.selectedValue,
|
|
12
|
+
selectedValue = _ref$selectedValue === void 0 ? null : _ref$selectedValue;
|
|
13
|
+
var selectedOption = {
|
|
14
|
+
label: selectedValue,
|
|
15
|
+
value: selectedValue
|
|
16
|
+
};
|
|
17
|
+
var allIntervalsForADay = dayjs.timeIntervalsForDay(interval);
|
|
18
|
+
allIntervalsForADay.push(END_OF_DAY);
|
|
19
|
+
var uniqBookedSlots = uniq(pluck(slotType, bookedSlots));
|
|
20
|
+
var slotsAvailableForBooking = difference(allIntervalsForADay, uniqBookedSlots);
|
|
21
|
+
var slots = slotsAvailableForBooking.map(toLabelAndValue);
|
|
22
|
+
return selectedValue ? sortSlots([selectedOption].concat(_toConsumableArray(slots))) : slots;
|
|
23
|
+
};
|
|
24
|
+
var sortSlots = function sortSlots(slots) {
|
|
25
|
+
return slots.sort(function (a, b) {
|
|
26
|
+
return isTimeBehind(a["value"], b["value"]) ? -1 : 1;
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
var slotsSelectComponentDefaultValue = function slotsSelectComponentDefaultValue(slot) {
|
|
30
|
+
return slot ? toLabelAndValue(slot) : "";
|
|
31
|
+
};
|
|
32
|
+
var padZeroes = function padZeroes(str) {
|
|
33
|
+
return str.length % 2 === 0 ? str : "0".concat(str);
|
|
34
|
+
};
|
|
35
|
+
var customFilter = function customFilter(option, searchTerm) {
|
|
36
|
+
if (isNotPresent(searchTerm)) return true;
|
|
37
|
+
var doesNumberMatches = option.value.replace(":", "").startsWith(padZeroes(searchTerm.replaceAll(/\D+/gi, "")));
|
|
38
|
+
var doesAmPmMatches = option.value.includes(searchTerm.toUpperCase().replaceAll(/[^a-z]/gi, ""));
|
|
39
|
+
return doesNumberMatches && doesAmPmMatches;
|
|
40
|
+
};
|
|
41
|
+
var roundToNearestHour = function roundToNearestHour(time) {
|
|
42
|
+
var minutes = time.minute();
|
|
43
|
+
if (minutes === 59) return time.startOf("hour").add(1, "hour");
|
|
44
|
+
return time.add(1, "hour");
|
|
45
|
+
};
|
|
46
|
+
var generateNewPeriod = function generateNewPeriod(periods, wday) {
|
|
47
|
+
var lastEndTime = periods[periods.length - 1].endTime;
|
|
48
|
+
var newStartTime = roundToNearestHour(dayjs(lastEndTime, SLOT_TIME_FORMAT));
|
|
49
|
+
var newEndTime = dayjs(newStartTime, SLOT_TIME_FORMAT).add(1, "hour");
|
|
50
|
+
return {
|
|
51
|
+
startTime: dayjs(newStartTime).format(SLOT_TIME_FORMAT),
|
|
52
|
+
endTime: dayjs(newEndTime).format(SLOT_TIME_FORMAT),
|
|
53
|
+
wday: wday
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
var addDefaultPeriod = function addDefaultPeriod(wday) {
|
|
57
|
+
return {
|
|
58
|
+
wday: wday,
|
|
59
|
+
startTime: "09:00 AM",
|
|
60
|
+
endTime: "05:00 PM"
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
export { buildSlotIntervals, slotsSelectComponentDefaultValue, customFilter, generateNewPeriod, addDefaultPeriod };
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
+
import React, { useState, useEffect } from "react";
|
|
3
|
+
import { useFormikContext } from "formik";
|
|
4
|
+
import { Button, Typography, Tooltip } from "@bigbinary/neetoui";
|
|
5
|
+
import { useTranslation } from "react-i18next";
|
|
6
|
+
import MoreDropdown from "../MoreDropdown";
|
|
7
|
+
import { MY_PROFILE_URL } from "./constants";
|
|
8
|
+
import { getTimeZoneAndTime } from "./utils";
|
|
9
|
+
var Header = function Header(_ref) {
|
|
10
|
+
var isEditing = _ref.isEditing,
|
|
11
|
+
setIsEditing = _ref.setIsEditing;
|
|
12
|
+
var _useFormikContext = useFormikContext(),
|
|
13
|
+
dirty = _useFormikContext.dirty,
|
|
14
|
+
resetForm = _useFormikContext.resetForm,
|
|
15
|
+
submitForm = _useFormikContext.submitForm,
|
|
16
|
+
isSubmitting = _useFormikContext.isSubmitting;
|
|
17
|
+
var _useTranslation = useTranslation(),
|
|
18
|
+
t = _useTranslation.t;
|
|
19
|
+
var _useState = useState(getTimeZoneAndTime()),
|
|
20
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
21
|
+
timeZoneAndTime = _useState2[0],
|
|
22
|
+
setTimeZoneAndTime = _useState2[1];
|
|
23
|
+
var handleReset = function handleReset() {
|
|
24
|
+
if (dirty) resetForm();else setIsEditing(false);
|
|
25
|
+
};
|
|
26
|
+
useEffect(function () {
|
|
27
|
+
var time = setInterval(function () {
|
|
28
|
+
setTimeZoneAndTime(getTimeZoneAndTime());
|
|
29
|
+
}, 30000);
|
|
30
|
+
return function () {
|
|
31
|
+
return clearInterval(time);
|
|
32
|
+
};
|
|
33
|
+
}, []);
|
|
34
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
35
|
+
className: "mb-4 flex justify-between"
|
|
36
|
+
}, isEditing ? /*#__PURE__*/React.createElement("div", {
|
|
37
|
+
className: "flex items-center space-x-4"
|
|
38
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
39
|
+
"data-cy": "reset-button",
|
|
40
|
+
style: "secondary",
|
|
41
|
+
label: !dirty ? t("neetoMolecules.common.actions.cancel") : t("neetoMolecules.common.actions.reset"),
|
|
42
|
+
onClick: handleReset
|
|
43
|
+
}), /*#__PURE__*/React.createElement(Button, {
|
|
44
|
+
"data-cy": "weekly-hours-save-changes-button",
|
|
45
|
+
disabled: !dirty || isSubmitting,
|
|
46
|
+
label: t("neetoMolecules.common.actions.saveChanges"),
|
|
47
|
+
loading: isSubmitting,
|
|
48
|
+
onClick: submitForm
|
|
49
|
+
})) : /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Button, {
|
|
50
|
+
"data-cy": "weekly-schedule-header",
|
|
51
|
+
label: t("neetoMolecules.schedule.editSchedule"),
|
|
52
|
+
style: "secondary",
|
|
53
|
+
weight: "semibold",
|
|
54
|
+
onClick: function onClick() {
|
|
55
|
+
return setIsEditing(true);
|
|
56
|
+
}
|
|
57
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
58
|
+
className: "flex items-center space-x-2"
|
|
59
|
+
}, /*#__PURE__*/React.createElement(Tooltip, {
|
|
60
|
+
content: t("neetoMolecules.schedule.timezoneTooltip"),
|
|
61
|
+
position: "bottom"
|
|
62
|
+
}, /*#__PURE__*/React.createElement(Typography, {
|
|
63
|
+
component: "h4",
|
|
64
|
+
"data-cy": "timezone-text",
|
|
65
|
+
style: "h5",
|
|
66
|
+
weight: "medium"
|
|
67
|
+
}, timeZoneAndTime)), /*#__PURE__*/React.createElement(MoreDropdown, {
|
|
68
|
+
menuItems: [{
|
|
69
|
+
href: MY_PROFILE_URL,
|
|
70
|
+
label: t("neetoMolecules.common.actions.changeTimezone"),
|
|
71
|
+
target: "_blank",
|
|
72
|
+
key: "change-timezone-option"
|
|
73
|
+
}]
|
|
74
|
+
})));
|
|
75
|
+
};
|
|
76
|
+
export default Header;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createContext } from "react";
|
|
2
|
+
|
|
3
|
+
// To avoid prop drilling `allowAddPeriod` to `ScheduleRow` component
|
|
4
|
+
// eslint-disable-next-line @bigbinary/neeto/use-zustand-for-global-state-management
|
|
5
|
+
var ScheduleContext = /*#__PURE__*/createContext({
|
|
6
|
+
allowAddPeriod: true
|
|
7
|
+
});
|
|
8
|
+
export default ScheduleContext;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export var DEFAULT_BOOKED_SLOTS = [{
|
|
2
|
+
startTime: "09:00 AM",
|
|
3
|
+
endTime: "05:00 PM"
|
|
4
|
+
}];
|
|
5
|
+
export var MARK_DAY_AS_AVAILABLE_BY_DEFAULT = true;
|
|
6
|
+
export var DAYS = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"];
|
|
7
|
+
export var DEFAULT_SLOT_INTERVAL = 30;
|
|
8
|
+
export var MY_PROFILE_URL = "/auth/profile/edit";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export var INTERVALS = ["year", "quarter", "month", "week", "day", "hour", "minute", "second"];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import Dayjs from "dayjs";
|
|
2
|
+
import customParseFormat from "dayjs/plugin/customParseFormat";
|
|
3
|
+
import timezone from "dayjs/plugin/timezone";
|
|
4
|
+
import utc from "dayjs/plugin/utc";
|
|
5
|
+
import weekday from "dayjs/plugin/weekday";
|
|
6
|
+
import { extendDayjs } from "./range";
|
|
7
|
+
Dayjs.extend(utc);
|
|
8
|
+
Dayjs.extend(timezone);
|
|
9
|
+
Dayjs.extend(customParseFormat);
|
|
10
|
+
Dayjs.extend(weekday);
|
|
11
|
+
|
|
12
|
+
// Add range and overlap functions to dayjs
|
|
13
|
+
var dayjsExtended = extendDayjs(Dayjs);
|
|
14
|
+
export default dayjsExtended;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
2
|
+
import _createClass from "@babel/runtime/helpers/createClass";
|
|
3
|
+
import { INTERVALS } from "./constants";
|
|
4
|
+
import { SLOT_TIME_FORMAT } from "../Form/constants";
|
|
5
|
+
export var DayjsRange = /*#__PURE__*/function () {
|
|
6
|
+
function DayjsRange(startDate, endDate) {
|
|
7
|
+
_classCallCheck(this, DayjsRange);
|
|
8
|
+
var _ref = startDate > endDate ? {
|
|
9
|
+
s: endDate,
|
|
10
|
+
e: startDate
|
|
11
|
+
} : {
|
|
12
|
+
s: startDate,
|
|
13
|
+
e: endDate
|
|
14
|
+
},
|
|
15
|
+
s = _ref.s,
|
|
16
|
+
e = _ref.e;
|
|
17
|
+
this.startDate = s;
|
|
18
|
+
this.endDate = e;
|
|
19
|
+
}
|
|
20
|
+
_createClass(DayjsRange, [{
|
|
21
|
+
key: "isValidRange",
|
|
22
|
+
value: function isValidRange() {
|
|
23
|
+
return this.startDate.isValid() && this.endDate.isValid();
|
|
24
|
+
}
|
|
25
|
+
}, {
|
|
26
|
+
key: "isOverlap",
|
|
27
|
+
value: function isOverlap(other) {
|
|
28
|
+
if (!(other instanceof DayjsRange) || !other.isValidRange()) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
return this.startDate < other.endDate && this.endDate > other.startDate;
|
|
32
|
+
}
|
|
33
|
+
}, {
|
|
34
|
+
key: "toArrayOfTimeIntervals",
|
|
35
|
+
value: function toArrayOfTimeIntervals() {
|
|
36
|
+
var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 15;
|
|
37
|
+
var startTime = this.startDate;
|
|
38
|
+
var endTime = this.endDate.add(1, "days");
|
|
39
|
+
var allTimes = [];
|
|
40
|
+
while (startTime < endTime) {
|
|
41
|
+
allTimes.push(startTime.format(SLOT_TIME_FORMAT));
|
|
42
|
+
startTime = startTime.add(interval, "minutes");
|
|
43
|
+
}
|
|
44
|
+
return allTimes;
|
|
45
|
+
}
|
|
46
|
+
}]);
|
|
47
|
+
return DayjsRange;
|
|
48
|
+
}();
|
|
49
|
+
export default (function (_, __, d) {
|
|
50
|
+
d.range = function (start, end) {
|
|
51
|
+
return new DayjsRange(d(start), d(end));
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
export function extendDayjs(dayjs) {
|
|
55
|
+
dayjs.range = function range(start, end) {
|
|
56
|
+
var dayjsObject = this;
|
|
57
|
+
if (typeof start === "string" && INTERVALS.includes(start)) {
|
|
58
|
+
return new DayjsRange(dayjs(dayjsObject).startOf(start), dayjs(dayjsObject).endOf(start));
|
|
59
|
+
}
|
|
60
|
+
return new DayjsRange(start, end);
|
|
61
|
+
};
|
|
62
|
+
dayjs.range.constructor = DayjsRange;
|
|
63
|
+
|
|
64
|
+
// Returns timeIntervals in 12 hour clock format for the whole day with both AM or PM suffixed
|
|
65
|
+
dayjs.timeIntervalsForDay = function (interval) {
|
|
66
|
+
var _ref2 = [dayjs("00:00 AM", SLOT_TIME_FORMAT), dayjs("00:00 AM", SLOT_TIME_FORMAT)],
|
|
67
|
+
startOfDay = _ref2[0],
|
|
68
|
+
endOfDay = _ref2[1];
|
|
69
|
+
var allIntervalsForADay = dayjs.range(startOfDay, endOfDay).toArrayOfTimeIntervals(interval);
|
|
70
|
+
return allIntervalsForADay;
|
|
71
|
+
};
|
|
72
|
+
return dayjs;
|
|
73
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import React, { forwardRef } from "react";
|
|
2
|
+
import { Formik, Form as FormikForm } from "formik";
|
|
3
|
+
import { isPresent, noop } from "@bigbinary/neeto-commons-frontend/pure";
|
|
4
|
+
import { assoc, pick } from "ramda";
|
|
5
|
+
import { DAYS } from "./constants";
|
|
6
|
+
import DisplayAvailability from "./DisplayAvailability";
|
|
7
|
+
import Fields from "./Fields";
|
|
8
|
+
import Header from "./Header";
|
|
9
|
+
import ScheduleContext from "./ScheduleContext";
|
|
10
|
+
import { sortPeriodsByKey, getScheduleValidationSchema } from "./utils";
|
|
11
|
+
var Schedule = /*#__PURE__*/forwardRef(function (_ref, scheduleRef) {
|
|
12
|
+
var periods = _ref.periods,
|
|
13
|
+
_ref$handleSubmit = _ref.handleSubmit,
|
|
14
|
+
handleSubmit = _ref$handleSubmit === void 0 ? noop : _ref$handleSubmit,
|
|
15
|
+
_ref$isEditing = _ref.isEditing,
|
|
16
|
+
isEditing = _ref$isEditing === void 0 ? false : _ref$isEditing,
|
|
17
|
+
setIsEditing = _ref.setIsEditing,
|
|
18
|
+
_ref$showHeader = _ref.showHeader,
|
|
19
|
+
showHeader = _ref$showHeader === void 0 ? true : _ref$showHeader,
|
|
20
|
+
_ref$handleValuesChan = _ref.handleValuesChanged,
|
|
21
|
+
handleValuesChanged = _ref$handleValuesChan === void 0 ? noop : _ref$handleValuesChan,
|
|
22
|
+
_ref$allowAddPeriod = _ref.allowAddPeriod,
|
|
23
|
+
allowAddPeriod = _ref$allowAddPeriod === void 0 ? true : _ref$allowAddPeriod;
|
|
24
|
+
var handleCopy = function handleCopy(_ref2) {
|
|
25
|
+
var _values$wdays$index$p;
|
|
26
|
+
var values = _ref2.values,
|
|
27
|
+
index = _ref2.index,
|
|
28
|
+
setFieldValue = _ref2.setFieldValue,
|
|
29
|
+
wdaysToCopy = _ref2.wdaysToCopy;
|
|
30
|
+
var newPeriods = (_values$wdays$index$p = values.wdays[index].periods) === null || _values$wdays$index$p === void 0 ? void 0 : _values$wdays$index$p.map(pick(["startTime", "endTime"]));
|
|
31
|
+
wdaysToCopy.forEach(function (wday) {
|
|
32
|
+
var dayIndex = DAYS.indexOf(wday);
|
|
33
|
+
setFieldValue("wdays[".concat(dayIndex, "].available"), isPresent(values.wdays[index].periods));
|
|
34
|
+
setFieldValue("wdays[".concat(dayIndex, "].periods"), newPeriods.map(function (period) {
|
|
35
|
+
return assoc("wday", wday, period);
|
|
36
|
+
}));
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
var getInitialFormValues = function getInitialFormValues() {
|
|
40
|
+
return DAYS.map(function (wday) {
|
|
41
|
+
var _periods$wday;
|
|
42
|
+
return {
|
|
43
|
+
periods: sortPeriodsByKey({
|
|
44
|
+
periods: periods[wday],
|
|
45
|
+
key: "startTime",
|
|
46
|
+
order: "asc"
|
|
47
|
+
}),
|
|
48
|
+
available: !!((_periods$wday = periods[wday]) !== null && _periods$wday !== void 0 && _periods$wday.length),
|
|
49
|
+
wday: wday
|
|
50
|
+
};
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
54
|
+
className: "neeto-ui-border-gray-200 w-41 flex-shrink-0"
|
|
55
|
+
}, /*#__PURE__*/React.createElement(Formik, {
|
|
56
|
+
enableReinitialize: true,
|
|
57
|
+
initialValues: {
|
|
58
|
+
wdays: getInitialFormValues()
|
|
59
|
+
},
|
|
60
|
+
validationSchema: getScheduleValidationSchema(),
|
|
61
|
+
onSubmit: function onSubmit(values) {
|
|
62
|
+
return handleSubmit(values, getInitialFormValues());
|
|
63
|
+
}
|
|
64
|
+
}, /*#__PURE__*/React.createElement(React.Fragment, null, showHeader && /*#__PURE__*/React.createElement(Header, {
|
|
65
|
+
isEditing: isEditing,
|
|
66
|
+
setIsEditing: setIsEditing
|
|
67
|
+
}), isEditing || !showHeader ? /*#__PURE__*/React.createElement(FormikForm, null, /*#__PURE__*/React.createElement(ScheduleContext.Provider, {
|
|
68
|
+
value: {
|
|
69
|
+
allowAddPeriod: allowAddPeriod
|
|
70
|
+
}
|
|
71
|
+
}, /*#__PURE__*/React.createElement(Fields, {
|
|
72
|
+
handleCopy: handleCopy,
|
|
73
|
+
handleValuesChanged: handleValuesChanged,
|
|
74
|
+
scheduleRef: scheduleRef
|
|
75
|
+
}))) : /*#__PURE__*/React.createElement(DisplayAvailability, {
|
|
76
|
+
periods: periods
|
|
77
|
+
}))));
|
|
78
|
+
});
|
|
79
|
+
Schedule.displayName = "Schedule";
|
|
80
|
+
export default Schedule;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
3
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5
|
+
import { ianaTimezoneToHumanReadable } from "@bigbinary/neeto-time-zones";
|
|
6
|
+
import dayjs from "dayjs";
|
|
7
|
+
import i18next from "i18next";
|
|
8
|
+
import { findIndexBy } from "@bigbinary/neeto-commons-frontend/pure";
|
|
9
|
+
import { timeFormat } from "@bigbinary/neeto-commons-frontend/utils";
|
|
10
|
+
import * as yup from "yup";
|
|
11
|
+
import dayjsExtended from "./dayjsExtended";
|
|
12
|
+
import { SLOT_TIME_FORMAT } from "./Form/constants";
|
|
13
|
+
yup.addMethod(yup.array, "ensureSlotsCantOverlap", function () {
|
|
14
|
+
return this.test("ensureSlotsCantOverlap", function (periods) {
|
|
15
|
+
var _checkForOverlapBetwe = checkForOverlapBetweenPeriods(periods),
|
|
16
|
+
isOverlapping = _checkForOverlapBetwe.exists,
|
|
17
|
+
range1 = _checkForOverlapBetwe.range1,
|
|
18
|
+
range2 = _checkForOverlapBetwe.range2;
|
|
19
|
+
if (!isOverlapping) return true;
|
|
20
|
+
var _findIndicesOfOverlap = findIndicesOfOverlappingRangesInPeriods({
|
|
21
|
+
range1: range1,
|
|
22
|
+
range2: range2,
|
|
23
|
+
periods: periods
|
|
24
|
+
}),
|
|
25
|
+
firstIndex = _findIndicesOfOverlap.firstIndex,
|
|
26
|
+
secondIndex = _findIndicesOfOverlap.secondIndex;
|
|
27
|
+
var firstError = this.createError({
|
|
28
|
+
path: "".concat(this.path, "[").concat(firstIndex, "]"),
|
|
29
|
+
message: i18next.t("neetoMolecules.schedule.errors.period.overlap", {
|
|
30
|
+
start: timeFormat.time(range2.startDate),
|
|
31
|
+
end: timeFormat.time(range2.endDate)
|
|
32
|
+
})
|
|
33
|
+
});
|
|
34
|
+
var secondError = this.createError({
|
|
35
|
+
path: "".concat(this.path, "[").concat(secondIndex, "]"),
|
|
36
|
+
message: i18next.t("neetoMolecules.schedule.errors.period.overlap", {
|
|
37
|
+
start: timeFormat.time(range1.startDate),
|
|
38
|
+
end: timeFormat.time(range1.endDate)
|
|
39
|
+
})
|
|
40
|
+
});
|
|
41
|
+
return new yup.ValidationError([firstError, secondError]);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
var isFromAndToSame = function isFromAndToSame(startTime, endTime) {
|
|
45
|
+
if (!startTime || !endTime) return true;
|
|
46
|
+
return dayjs(startTime, SLOT_TIME_FORMAT).isSame(dayjs(endTime, SLOT_TIME_FORMAT));
|
|
47
|
+
};
|
|
48
|
+
export var getScheduleValidationSchema = function getScheduleValidationSchema() {
|
|
49
|
+
return yup.object().shape({
|
|
50
|
+
wdays: yup.array().of(yup.object().shape({
|
|
51
|
+
periods: yup.array().of(yup.object().shape({
|
|
52
|
+
startTime: yup.string().required(i18next.t("neetoMolecules.schedule.errors.period.startTime")),
|
|
53
|
+
endTime: yup.string().required(i18next.t("neetoMolecules.schedule.errors.period.endTime")).test("ensureToTimeNotBehindFromTime", i18next.t("neetoMolecules.schedule.errors.period.isBehind"), function (value) {
|
|
54
|
+
var startTime = this.parent.startTime;
|
|
55
|
+
if (isFromAndToSame(value, startTime)) return true;
|
|
56
|
+
return isTimeBehind(startTime, value);
|
|
57
|
+
})
|
|
58
|
+
}).test("ensureTimeNotSame", i18next.t("neetoMolecules.schedule.errors.period.sameTime"), function (value) {
|
|
59
|
+
var startTime = value.startTime,
|
|
60
|
+
endTime = value.endTime;
|
|
61
|
+
return !isFromAndToSame(startTime, endTime);
|
|
62
|
+
})).ensureSlotsCantOverlap()
|
|
63
|
+
}))
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
export var getUserTimeZone = function getUserTimeZone() {
|
|
67
|
+
var _window$globalProps;
|
|
68
|
+
return (_window$globalProps = window.globalProps) === null || _window$globalProps === void 0 ? void 0 : _window$globalProps.user.timeZone;
|
|
69
|
+
};
|
|
70
|
+
export var getTimeZoneAndTime = function getTimeZoneAndTime() {
|
|
71
|
+
var timeZone = getUserTimeZone();
|
|
72
|
+
var humanReadableTimezone = ianaTimezoneToHumanReadable(timeZone);
|
|
73
|
+
return "".concat(humanReadableTimezone, ": ").concat(dayjs().tz(timeZone).format(SLOT_TIME_FORMAT));
|
|
74
|
+
};
|
|
75
|
+
export var isTimeBehind = function isTimeBehind(timeA, timeB) {
|
|
76
|
+
return dayjs(timeA, SLOT_TIME_FORMAT).isBefore(dayjs(timeB, SLOT_TIME_FORMAT));
|
|
77
|
+
};
|
|
78
|
+
export var sortPeriodsByKey = function sortPeriodsByKey(_ref) {
|
|
79
|
+
var periods = _ref.periods,
|
|
80
|
+
key = _ref.key,
|
|
81
|
+
_ref$order = _ref.order,
|
|
82
|
+
order = _ref$order === void 0 ? "desc" : _ref$order;
|
|
83
|
+
return periods.slice().sort(function (periodA, periodB) {
|
|
84
|
+
var isPeriodBehind = isTimeBehind(periodA[key], periodB[key]);
|
|
85
|
+
if (order === "desc") return isPeriodBehind ? 1 : -1;
|
|
86
|
+
return isPeriodBehind ? -1 : 1;
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Check for overlapping between entered periods
|
|
92
|
+
* @typedef {Object} Slots
|
|
93
|
+
* @property {Array<{startTime:string, endTime: string}>} periods - startTime and endTime
|
|
94
|
+
* @param {Slots} periods - changed time periods
|
|
95
|
+
* @return {{exists: boolean, range1: DayjsRange | null, range2:DayjsRange | null }} - overlapped ranges if exists
|
|
96
|
+
*/
|
|
97
|
+
export var checkForOverlapBetweenPeriods = function checkForOverlapBetweenPeriods(periods) {
|
|
98
|
+
var response = {
|
|
99
|
+
exists: false,
|
|
100
|
+
range1: null,
|
|
101
|
+
range2: null
|
|
102
|
+
};
|
|
103
|
+
if (!(periods !== null && periods !== void 0 && periods.length)) return response;
|
|
104
|
+
var slotsSortedByStartTime = sortPeriodsByKey({
|
|
105
|
+
periods: periods,
|
|
106
|
+
key: "startTime"
|
|
107
|
+
});
|
|
108
|
+
var _iterator = _createForOfIteratorHelper(slotsSortedByStartTime.slice(0, -1).entries()),
|
|
109
|
+
_step;
|
|
110
|
+
try {
|
|
111
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
112
|
+
var _step$value = _slicedToArray(_step.value, 2),
|
|
113
|
+
index = _step$value[0],
|
|
114
|
+
value = _step$value[1];
|
|
115
|
+
var seg1 = value;
|
|
116
|
+
var seg2 = slotsSortedByStartTime[index + 1];
|
|
117
|
+
var range1 = dayjsExtended.range(dayjsExtended(seg1.startTime, SLOT_TIME_FORMAT), dayjsExtended(seg1.endTime, SLOT_TIME_FORMAT));
|
|
118
|
+
var range2 = dayjsExtended.range(dayjsExtended(seg2.startTime, SLOT_TIME_FORMAT), dayjsExtended(seg2.endTime, SLOT_TIME_FORMAT));
|
|
119
|
+
if (range1.isOverlap(range2)) {
|
|
120
|
+
response = {
|
|
121
|
+
exists: true,
|
|
122
|
+
range1: range1,
|
|
123
|
+
range2: range2
|
|
124
|
+
};
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
} catch (err) {
|
|
129
|
+
_iterator.e(err);
|
|
130
|
+
} finally {
|
|
131
|
+
_iterator.f();
|
|
132
|
+
}
|
|
133
|
+
return response;
|
|
134
|
+
};
|
|
135
|
+
export var findIndicesOfOverlappingRangesInPeriods = function findIndicesOfOverlappingRangesInPeriods(_ref2) {
|
|
136
|
+
var range1 = _ref2.range1,
|
|
137
|
+
range2 = _ref2.range2,
|
|
138
|
+
periods = _ref2.periods;
|
|
139
|
+
var firstIndex = findIndexBy({
|
|
140
|
+
startTime: range1.startDate.format(SLOT_TIME_FORMAT)
|
|
141
|
+
}, periods);
|
|
142
|
+
var secondIndex = periods.findIndex(function (slot, index) {
|
|
143
|
+
return index > firstIndex && slot.startTime === range2.startDate.format(SLOT_TIME_FORMAT);
|
|
144
|
+
});
|
|
145
|
+
return {
|
|
146
|
+
firstIndex: firstIndex,
|
|
147
|
+
secondIndex: secondIndex
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
export var checkIfTwoTimeZonesAreSame = function checkIfTwoTimeZonesAreSame(timeZone1, timeZone2) {
|
|
151
|
+
return dayjs().tz(timeZone1).format("Z") === dayjs().tz(timeZone2).format("Z");
|
|
152
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
4
|
+
var _excluded = ["children", "className", "size"];
|
|
5
|
+
import React from "react";
|
|
6
|
+
import classnames from "classnames";
|
|
7
|
+
import { SIZES } from "./constants";
|
|
8
|
+
import "./scrollable.scss";
|
|
9
|
+
var Scrollable = function Scrollable(_ref) {
|
|
10
|
+
var children = _ref.children,
|
|
11
|
+
_ref$className = _ref.className,
|
|
12
|
+
className = _ref$className === void 0 ? "" : _ref$className,
|
|
13
|
+
_ref$size = _ref.size,
|
|
14
|
+
size = _ref$size === void 0 ? "small" : _ref$size,
|
|
15
|
+
otherProps = _objectWithoutProperties(_ref, _excluded);
|
|
16
|
+
return /*#__PURE__*/React.createElement("div", _extends({
|
|
17
|
+
className: classnames(["neeto-molecules-scrollable", _defineProperty({
|
|
18
|
+
"neeto-molecules-scrollable--nano": size === SIZES.nano,
|
|
19
|
+
"neeto-molecules-scrollable--small": size === SIZES.small,
|
|
20
|
+
"neeto-molecules-scrollable--medium": size === SIZES.medium,
|
|
21
|
+
"neeto-molecules-scrollable--large": size === SIZES.large,
|
|
22
|
+
"neeto-molecules-scrollable--viewport": size === SIZES.viewport
|
|
23
|
+
}, className, className)])
|
|
24
|
+
}, otherProps), children);
|
|
25
|
+
};
|
|
26
|
+
export default Scrollable;
|