@sqrzro/admin 1.0.0-beta.7 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc +5 -1
- package/.storybook/main.js +6 -34
- package/.storybook/preview-head.html +3 -0
- package/.storybook/preview.js +1 -11
- package/.turbo/turbo-docs.log +0 -0
- package/.turbo/turbo-lint.log +112 -0
- package/.turbo/turbo-prettier.log +215 -0
- package/.turbo/turbo-test.log +6 -0
- package/LICENSE +1 -1
- package/dist/{types/components → components}/Alert/index.d.ts +4 -4
- package/dist/components/Alert/index.js +15 -0
- package/dist/{types/components → components}/Allow/index.d.ts +20 -13
- package/dist/components/Allow/index.js +29 -0
- package/dist/components/AppLayout/AppLayout.stories.d.ts +5 -0
- package/dist/components/AppLayout/AppLayout.stories.js +11 -0
- package/dist/components/AppLayout/index.d.ts +6 -0
- package/dist/components/AppLayout/index.js +18 -0
- package/dist/{types/components → components}/AutoSuggest/index.d.ts +74 -60
- package/dist/components/AutoSuggest/index.js +143 -0
- package/dist/components/Button/Button.stories.d.ts +11 -0
- package/{src/components/Button/Button.story.tsx → dist/components/Button/Button.stories.js} +16 -14
- package/dist/{types/components → components}/Button/index.d.ts +49 -36
- package/dist/components/Button/index.js +50 -0
- package/dist/components/CalendarInput/index.d.ts +24 -0
- package/dist/components/CalendarInput/index.js +54 -0
- package/dist/{types/components → components}/CheckboxList/index.d.ts +17 -17
- package/dist/components/CheckboxList/index.js +25 -0
- package/dist/components/CodeInput/index.d.ts +9 -0
- package/dist/components/CodeInput/index.js +51 -0
- package/dist/{types/components → components}/ConnectedDropdown/index.d.ts +14 -14
- package/dist/components/ConnectedDropdown/index.js +36 -0
- package/dist/{types/components → components}/ConnectedList/index.d.ts +5 -5
- package/dist/components/ConnectedList/index.js +7 -0
- package/dist/{types/components → components}/ConnectedTable/index.d.ts +5 -5
- package/dist/components/ConnectedTable/index.js +7 -0
- package/dist/{types/components → components}/ContentBlock/index.d.ts +16 -16
- package/dist/components/ContentBlock/index.js +13 -0
- package/dist/components/DataPanel/index.d.ts +8 -0
- package/dist/components/DataPanel/index.js +8 -0
- package/dist/components/DateInput/index.d.ts +18 -0
- package/dist/components/DateInput/index.js +81 -0
- package/dist/{types/components → components}/Dropdown/index.d.ts +36 -36
- package/dist/components/Dropdown/index.js +122 -0
- package/dist/components/ErrorMessage/index.d.ts +16 -0
- package/dist/components/ErrorMessage/index.js +17 -0
- package/dist/components/Fieldset/index.d.ts +18 -0
- package/dist/components/Fieldset/index.js +19 -0
- package/dist/{types/components → components}/FileInput/index.d.ts +10 -10
- package/dist/components/FileInput/index.js +26 -0
- package/dist/components/FilterLink/index.d.ts +14 -0
- package/dist/components/FilterLink/index.js +15 -0
- package/dist/components/Form/index.d.ts +14 -0
- package/dist/components/Form/index.js +15 -0
- package/dist/components/FormActions/index.d.ts +18 -0
- package/dist/components/FormActions/index.js +14 -0
- package/dist/{types/components → components}/FormField/index.d.ts +14 -14
- package/dist/components/FormField/index.js +40 -0
- package/dist/components/FormRepeater/index.d.ts +18 -0
- package/dist/components/FormRepeater/index.js +65 -0
- package/dist/{types/components → components}/ImageInput/index.d.ts +13 -13
- package/dist/components/ImageInput/index.js +45 -0
- package/dist/components/InfoPanel/index.d.ts +14 -0
- package/dist/components/InfoPanel/index.js +11 -0
- package/dist/{types/components → components}/Link/__mocks__/index.d.ts +6 -6
- package/dist/components/Link/__mocks__/index.js +12 -0
- package/dist/components/Link/index.d.ts +23 -0
- package/dist/components/Link/index.js +21 -0
- package/dist/{types/components → components}/List/index.d.ts +36 -36
- package/dist/components/List/index.js +46 -0
- package/dist/components/ListActions/index.d.ts +18 -0
- package/dist/components/ListActions/index.js +14 -0
- package/dist/components/LoginForm/index.d.ts +3 -0
- package/dist/components/LoginForm/index.js +47 -0
- package/dist/components/Message/index.d.ts +14 -0
- package/dist/components/Message/index.js +14 -0
- package/dist/{types/components → components}/Modal/index.d.ts +4 -4
- package/dist/components/Modal/index.js +18 -0
- package/dist/components/ModalActions/index.d.ts +21 -0
- package/dist/components/ModalActions/index.js +18 -0
- package/dist/{types/components → components}/MoneyInput/index.d.ts +10 -10
- package/dist/components/MoneyInput/index.js +13 -0
- package/dist/components/PasswordForm/index.d.ts +35 -0
- package/dist/components/PasswordForm/index.js +21 -0
- package/dist/components/PasswordInput/index.d.ts +4 -0
- package/dist/components/PasswordInput/index.js +12 -0
- package/dist/{types/components → components}/RadioList/index.d.ts +9 -9
- package/dist/components/RadioList/index.js +7 -0
- package/dist/components/RootLayout/index.d.ts +6 -0
- package/dist/components/RootLayout/index.js +7 -0
- package/dist/components/SummaryList/index.d.ts +18 -0
- package/dist/components/SummaryList/index.js +15 -0
- package/dist/components/Switch/index.d.ts +21 -0
- package/dist/components/Switch/index.js +31 -0
- package/dist/{types/components → components}/Table/index.d.ts +28 -28
- package/dist/components/Table/index.js +55 -0
- package/dist/components/Tag/index.d.ts +15 -0
- package/dist/components/Tag/index.js +13 -0
- package/dist/components/TextArea/index.d.ts +18 -0
- package/dist/components/TextArea/index.js +26 -0
- package/dist/{types/components → components}/TextInput/index.d.ts +14 -14
- package/dist/components/TextInput/index.js +27 -0
- package/dist/{types/components → components}/WebsiteInput/index.d.ts +10 -10
- package/dist/components/WebsiteInput/index.js +13 -0
- package/dist/components/WeekCalendar/index.d.ts +24 -0
- package/dist/components/WeekCalendar/index.js +48 -0
- package/dist/{types/core → core}/AlertComponent/index.d.ts +26 -26
- package/dist/core/AlertComponent/index.js +35 -0
- package/dist/{types/core → core}/AppHeader/index.d.ts +3 -3
- package/dist/core/AppHeader/index.js +17 -0
- package/dist/core/AppLogo/index.d.ts +12 -0
- package/dist/core/AppLogo/index.js +16 -0
- package/dist/{types/core → core}/AppLogoImage/index.d.ts +3 -3
- package/dist/core/AppLogoImage/index.js +11 -0
- package/dist/{types/core → core}/AppLogoPlaceholder/index.d.ts +3 -3
- package/dist/core/AppLogoPlaceholder/index.js +10 -0
- package/dist/core/Assistive/index.d.ts +12 -0
- package/dist/core/Assistive/index.js +9 -0
- package/dist/core/AuthForm/index.d.ts +10 -0
- package/dist/core/AuthForm/index.js +13 -0
- package/dist/{types/core → core}/Banner/index.d.ts +3 -3
- package/dist/core/Banner/index.js +14 -0
- package/dist/core/Calendar/index.d.ts +21 -0
- package/dist/core/Calendar/index.js +69 -0
- package/dist/core/CalendarDay/index.d.ts +30 -0
- package/dist/core/CalendarDay/index.js +30 -0
- package/dist/core/CalendarMonth/index.d.ts +23 -0
- package/dist/core/CalendarMonth/index.js +45 -0
- package/dist/core/CalendarNavigation/index.d.ts +17 -0
- package/dist/core/CalendarNavigation/index.js +24 -0
- package/dist/core/CalendarWeek/index.d.ts +28 -0
- package/dist/core/CalendarWeek/index.js +46 -0
- package/dist/core/ChkRad/index.d.ts +26 -0
- package/dist/core/ChkRad/index.js +33 -0
- package/dist/core/ChkRadIcon/index.d.ts +14 -0
- package/dist/core/ChkRadIcon/index.js +12 -0
- package/dist/{types/core → core}/ChkRadList/index.d.ts +32 -32
- package/dist/core/ChkRadList/index.js +37 -0
- package/dist/core/CloseButton/index.d.ts +17 -0
- package/dist/core/CloseButton/index.js +12 -0
- package/dist/{types/core → core}/ConfirmModal/index.d.ts +3 -3
- package/dist/core/ConfirmModal/index.js +38 -0
- package/dist/{types/core → core}/ConnectedRepeater/index.d.ts +50 -50
- package/dist/core/ConnectedRepeater/index.js +154 -0
- package/dist/{types/core → core}/ConnectedRepeaterComponent/index.d.ts +24 -24
- package/dist/core/ConnectedRepeaterComponent/index.js +25 -0
- package/dist/core/Container/index.d.ts +14 -0
- package/dist/core/Container/index.js +12 -0
- package/dist/core/DataPanelItem/index.d.ts +8 -0
- package/dist/core/DataPanelItem/index.js +7 -0
- package/dist/core/DropdownPanel/index.d.ts +31 -0
- package/dist/core/DropdownPanel/index.js +32 -0
- package/dist/{types/core → core}/EmptyMessage/index.d.ts +21 -14
- package/dist/core/EmptyMessage/index.js +21 -0
- package/dist/core/FilterItem/index.d.ts +25 -0
- package/dist/core/FilterItem/index.js +82 -0
- package/dist/core/Filters/index.d.ts +31 -0
- package/dist/core/Filters/index.js +85 -0
- package/dist/{types/core → core}/FixedActions/index.d.ts +24 -24
- package/dist/core/FixedActions/index.js +22 -0
- package/dist/core/FormError/index.d.ts +12 -0
- package/dist/core/FormError/index.js +9 -0
- package/dist/core/FormLabel/index.d.ts +16 -0
- package/dist/core/FormLabel/index.js +13 -0
- package/dist/core/FormLegend/index.d.ts +12 -0
- package/dist/core/FormLegend/index.js +9 -0
- package/dist/core/Header/Header.stories.d.ts +5 -0
- package/dist/core/Header/Header.stories.js +11 -0
- package/dist/core/Header/index.d.ts +14 -0
- package/dist/core/Header/index.js +12 -0
- package/dist/core/Icon/index.d.ts +14 -0
- package/dist/core/Icon/index.js +32 -0
- package/dist/core/IconButton/index.d.ts +22 -0
- package/dist/core/IconButton/index.js +20 -0
- package/dist/core/InputPanel/index.d.ts +16 -0
- package/dist/core/InputPanel/index.js +11 -0
- package/dist/{types/core → core}/ListItem/index.d.ts +39 -38
- package/dist/core/ListItem/index.js +44 -0
- package/dist/core/ListItemAction/index.d.ts +11 -0
- package/dist/core/ListItemAction/index.js +13 -0
- package/dist/{types/core → core}/ListItemActions/index.d.ts +8 -8
- package/dist/core/ListItemActions/index.js +16 -0
- package/dist/core/ListItemMetaItem/index.d.ts +19 -0
- package/dist/core/ListItemMetaItem/index.js +29 -0
- package/dist/core/ListItemTitle/index.d.ts +19 -0
- package/dist/core/ListItemTitle/index.js +44 -0
- package/dist/core/Loader/index.d.ts +15 -0
- package/dist/core/Loader/index.js +16 -0
- package/dist/core/MeActions/index.d.ts +3 -0
- package/dist/core/MeActions/index.js +48 -0
- package/dist/{types/core → core}/MePanel/index.d.ts +19 -19
- package/dist/core/MePanel/index.js +29 -0
- package/dist/core/ModalComponent/index.d.ts +22 -0
- package/dist/core/ModalComponent/index.js +29 -0
- package/dist/{types/core → core}/Navigation/index.d.ts +3 -3
- package/dist/core/Navigation/index.js +33 -0
- package/dist/{types/core → core}/NavigationDivider/index.d.ts +3 -3
- package/dist/core/NavigationDivider/index.js +8 -0
- package/dist/core/NavigationItem/index.d.ts +16 -0
- package/dist/core/NavigationItem/index.js +21 -0
- package/dist/core/Pagination/index.d.ts +15 -0
- package/{src/core/Pagination/index.tsx → dist/core/Pagination/index.js} +10 -46
- package/dist/core/PaginationItem/index.d.ts +10 -0
- package/dist/core/PaginationItem/index.js +17 -0
- package/dist/core/Panel/index.d.ts +17 -0
- package/dist/core/Panel/index.js +13 -0
- package/dist/{types/core → core}/PasswordForgotForm/index.d.ts +7 -7
- package/dist/core/PasswordForgotForm/index.js +40 -0
- package/dist/{types/core → core}/PasswordResetForm/index.d.ts +7 -7
- package/dist/core/PasswordResetForm/index.js +34 -0
- package/dist/core/RadialProgress/index.d.ts +16 -0
- package/dist/core/RadialProgress/index.js +23 -0
- package/dist/core/SettingsForm/index.d.ts +3 -0
- package/dist/core/SettingsForm/index.js +14 -0
- package/dist/core/StaticTextInput/index.d.ts +29 -0
- package/dist/core/StaticTextInput/index.js +39 -0
- package/dist/{types/core → core}/Styled/index.d.ts +6 -6
- package/{src/core/Styled/index.tsx → dist/core/Styled/index.js} +7 -30
- package/dist/core/SummaryListItem/index.d.ts +23 -0
- package/dist/core/SummaryListItem/index.js +31 -0
- package/dist/core/TabItem/index.d.ts +4 -0
- package/dist/core/TabItem/index.js +13 -0
- package/dist/{types/core → core}/TableActionsCell/index.d.ts +8 -8
- package/dist/core/TableActionsCell/index.js +8 -0
- package/dist/core/TableCell/index.d.ts +15 -0
- package/dist/core/TableCell/index.js +20 -0
- package/dist/core/TableHead/index.d.ts +18 -0
- package/dist/core/TableHead/index.js +18 -0
- package/dist/{types/core → core}/TableRow/index.d.ts +13 -13
- package/dist/core/TableRow/index.js +18 -0
- package/dist/core/Tabs/index.d.ts +7 -0
- package/dist/core/Tabs/index.js +13 -0
- package/dist/core/TextInputAncillary/index.d.ts +29 -0
- package/dist/core/TextInputAncillary/index.js +31 -0
- package/dist/{types/core → core}/Toast/index.d.ts +3 -3
- package/dist/core/Toast/index.js +47 -0
- package/dist/core/TwoFactor/index.d.ts +13 -0
- package/dist/core/TwoFactor/index.js +49 -0
- package/dist/{types/core/LoginFormAuthenticator → core/TwoFactorAuthenticator}/index.d.ts +10 -10
- package/dist/core/TwoFactorAuthenticator/index.js +9 -0
- package/dist/core/TwoFactorMethodList/index.d.ts +10 -0
- package/dist/core/TwoFactorMethodList/index.js +22 -0
- package/dist/core/TwoFactorSetup/index.d.ts +12 -0
- package/dist/core/TwoFactorSetup/index.js +43 -0
- package/dist/core/TwoFactorSetupAuthenticator/index.d.ts +20 -0
- package/dist/core/TwoFactorSetupAuthenticator/index.js +42 -0
- package/dist/core/TwoFactorSetupYubikey/index.d.ts +16 -0
- package/dist/core/TwoFactorSetupYubikey/index.js +14 -0
- package/dist/{types/core/LoginFormYubikey → core/TwoFactorYubikey}/index.d.ts +9 -9
- package/dist/core/TwoFactorYubikey/index.js +14 -0
- package/dist/core/WeekCalendarDay/index.d.ts +27 -0
- package/dist/core/WeekCalendarDay/index.js +35 -0
- package/dist/core/YubikeyInput/index.d.ts +4 -0
- package/dist/core/YubikeyInput/index.js +14 -0
- package/dist/filters/BooleanFilter/index.d.ts +14 -0
- package/dist/filters/BooleanFilter/index.js +35 -0
- package/dist/filters/DateFilter/index.d.ts +5 -0
- package/dist/filters/DateFilter/index.js +24 -0
- package/dist/filters/DropdownFilter/index.d.ts +17 -0
- package/dist/filters/DropdownFilter/index.js +32 -0
- package/dist/filters/QuickDateFilter/index.d.ts +13 -0
- package/dist/filters/QuickDateFilter/index.js +40 -0
- package/dist/{types/filters → filters}/interfaces.d.ts +35 -35
- package/dist/filters/interfaces.js +1 -0
- package/dist/{types/hooks → hooks}/useAlert.d.ts +12 -12
- package/dist/hooks/useAlert.js +18 -0
- package/dist/hooks/useAppConfig.d.ts +3 -0
- package/dist/hooks/useAppConfig.js +5 -0
- package/dist/{types/hooks → hooks}/useConnectedList.d.ts +7 -7
- package/dist/hooks/useConnectedList.js +6 -0
- package/dist/{types/hooks → hooks}/useConnectedRepeater.d.ts +7 -7
- package/dist/hooks/useConnectedRepeater.js +14 -0
- package/dist/{types/hooks → hooks}/useConnectedTable.d.ts +7 -7
- package/dist/hooks/useConnectedTable.js +6 -0
- package/dist/hooks/useFilters.d.ts +9 -0
- package/dist/hooks/useFilters.js +24 -0
- package/dist/{types/hooks → hooks}/useLayout.d.ts +7 -7
- package/dist/hooks/useLayout.js +10 -0
- package/dist/hooks/useLayout.spec.d.ts +1 -0
- package/dist/hooks/useLayout.spec.js +24 -0
- package/dist/{types/hooks → hooks}/useModal.d.ts +12 -12
- package/dist/hooks/useModal.js +39 -0
- package/dist/hooks/useModalOffset.d.ts +2 -0
- package/dist/hooks/useModalOffset.js +16 -0
- package/dist/hooks/useModalOffset.spec.d.ts +1 -0
- package/dist/hooks/useModalOffset.spec.js +19 -0
- package/dist/hooks/useNavigation.d.ts +7 -0
- package/dist/hooks/useNavigation.js +113 -0
- package/dist/hooks/useRemote.d.ts +7 -0
- package/dist/hooks/useRemote.js +29 -0
- package/dist/hooks/useVariant.d.ts +9 -0
- package/dist/hooks/useVariant.js +14 -0
- package/dist/{types/index.d.ts → index.d.ts} +209 -203
- package/dist/index.js +213 -5459
- package/dist/{types/scenes → scenes}/Error404Scene.d.ts +3 -3
- package/dist/scenes/Error404Scene.js +5 -0
- package/dist/services/AppService.d.ts +5 -0
- package/dist/services/AppService.js +11 -0
- package/dist/services/ConfigService.d.ts +42 -0
- package/dist/services/ConfigService.js +52 -0
- package/dist/{types/services → services}/ConfirmService.d.ts +12 -12
- package/dist/services/ConfirmService.js +10 -0
- package/dist/services/DateService.d.ts +26 -0
- package/dist/services/DateService.js +132 -0
- package/dist/services/DateService.spec.d.ts +1 -0
- package/dist/services/DateService.spec.js +83 -0
- package/dist/services/DownloadService.d.ts +7 -0
- package/dist/services/DownloadService.js +16 -0
- package/dist/services/DownloadService.spec.d.ts +1 -0
- package/dist/services/DownloadService.spec.js +18 -0
- package/dist/{types/services → services}/FilterComponentService.d.ts +25 -25
- package/dist/services/FilterComponentService.js +54 -0
- package/dist/services/FilterService.d.ts +34 -0
- package/dist/services/FilterService.js +58 -0
- package/dist/services/FilterService.spec.d.ts +1 -0
- package/dist/services/FilterService.spec.js +67 -0
- package/dist/services/FormatService.d.ts +11 -0
- package/dist/services/FormatService.js +45 -0
- package/dist/services/FormatService.spec.d.ts +1 -0
- package/dist/services/FormatService.spec.js +66 -0
- package/dist/services/ToastService.d.ts +7 -0
- package/dist/services/ToastService.js +17 -0
- package/dist/services/ToastService.spec.d.ts +1 -0
- package/dist/services/ToastService.spec.js +34 -0
- package/dist/styles.css +984 -0
- package/dist/utility/MockRouter/index.d.ts +2 -0
- package/dist/utility/MockRouter/index.js +37 -0
- package/dist/utility/StorybookPanel/index.d.ts +14 -0
- package/dist/utility/StorybookPanel/index.js +12 -0
- package/dist/utility/TestChangeHandler/index.d.ts +15 -0
- package/dist/utility/TestChangeHandler/index.js +30 -0
- package/dist/utility/icons.d.ts +3 -0
- package/dist/utility/icons.js +12 -0
- package/dist/{types/utility → utility}/interfaces.d.ts +79 -69
- package/dist/utility/interfaces.js +18 -0
- package/dist/utility/middleware.d.ts +4 -0
- package/dist/utility/middleware.js +9 -0
- package/dist/{types/utility → utility}/prop-types.d.ts +57 -55
- package/dist/utility/prop-types.js +77 -0
- package/dist/utility/register.d.ts +3 -0
- package/dist/utility/register.js +9 -0
- package/package.json +53 -88
- package/postcss.config.js +1 -1
- package/prettier.config.js +1 -0
- package/src/components/Alert/index.tsx +103 -13
- package/src/components/Allow/Allow.spec.tsx +2 -2
- package/src/components/Allow/index.tsx +8 -8
- package/src/components/AppLayout/AppLayout.stories.tsx +20 -0
- package/src/components/AppLayout/index.tsx +22 -0
- package/src/components/AutoSuggest/AutoSuggest.spec.tsx +38 -18
- package/src/components/AutoSuggest/AutoSuggest.story.tsx +8 -6
- package/src/components/AutoSuggest/index.tsx +30 -30
- package/src/components/Button/Button.spec.tsx +8 -0
- package/src/components/Button/Button.stories.tsx +62 -0
- package/src/components/Button/index.tsx +9 -93
- package/src/components/CalendarInput/CalendarInput.spec.tsx +38 -22
- package/src/components/CalendarInput/CalendarInput.story.tsx +2 -2
- package/src/components/CalendarInput/index.tsx +23 -19
- package/src/components/CheckboxList/CheckboxList.spec.tsx +20 -10
- package/src/components/CheckboxList/index.tsx +9 -12
- package/src/components/ConnectedDropdown/index.tsx +7 -5
- package/src/components/ConnectedList/index.tsx +13 -11
- package/src/components/ConnectedTable/index.tsx +15 -13
- package/src/components/ContentBlock/index.tsx +10 -8
- package/src/components/DataPanel/index.tsx +25 -0
- package/src/components/DateInput/DateInput.spec.tsx +10 -6
- package/src/components/DateInput/index.tsx +11 -12
- package/src/components/ErrorMessage/index.tsx +18 -20
- package/src/components/Fieldset/Fieldset.story.tsx +17 -13
- package/src/components/Fieldset/index.tsx +12 -10
- package/src/components/FileInput/FileInput.spec.tsx +9 -5
- package/src/components/FileInput/FileInput.story.tsx +3 -1
- package/src/components/FileInput/index.tsx +12 -10
- package/src/components/FilterLink/FilterLink.spec.tsx +18 -4
- package/src/components/FilterLink/index.tsx +19 -14
- package/src/components/Form/Form.spec.tsx +7 -5
- package/src/components/Form/index.tsx +5 -3
- package/src/components/FormActions/FormActions.story.tsx +19 -15
- package/src/components/FormActions/index.tsx +11 -7
- package/src/components/FormField/FormField.spec.tsx +28 -39
- package/src/components/FormField/FormField.stories.tsx +44 -0
- package/src/components/FormField/index.tsx +8 -103
- package/src/components/FormRepeater/FormRepeater.spec.tsx +26 -14
- package/src/components/FormRepeater/index.tsx +9 -7
- package/src/components/ImageInput/ImageInput.spec.tsx +3 -1
- package/src/components/ImageInput/ImageInput.story.tsx +3 -1
- package/src/components/ImageInput/index.tsx +16 -14
- package/src/components/InfoPanel/index.tsx +7 -7
- package/src/components/Link/Link.spec.tsx +4 -2
- package/src/components/Link/__mocks__/index.tsx +3 -3
- package/src/components/Link/index.tsx +6 -6
- package/src/components/List/List.spec.tsx +57 -20
- package/src/components/List/List.story.tsx +21 -2
- package/src/components/List/index.tsx +13 -13
- package/src/components/ListActions/ListActions.story.tsx +3 -1
- package/src/components/ListActions/index.tsx +10 -11
- package/src/components/LoginForm/LoginForm.spec.tsx +19 -7
- package/src/components/LoginForm/LoginForm.story.tsx +25 -0
- package/src/components/LoginForm/index.tsx +72 -171
- package/src/components/Message/index.tsx +12 -10
- package/src/components/Modal/index.tsx +18 -12
- package/src/components/ModalActions/ModalActions.spec.tsx +4 -2
- package/src/components/ModalActions/ModalActions.story.tsx +3 -1
- package/src/components/ModalActions/index.tsx +22 -18
- package/src/components/MoneyInput/MoneyInput.story.tsx +3 -1
- package/src/components/MoneyInput/index.tsx +7 -5
- package/src/components/PasswordForm/index.tsx +12 -24
- package/src/components/RadioList/RadioList.spec.tsx +4 -2
- package/src/components/RadioList/index.tsx +8 -6
- package/src/components/RootLayout/index.tsx +45 -0
- package/src/components/SummaryList/SummaryList.module.css +19 -4
- package/src/components/SummaryList/SummaryList.spec.tsx +14 -2
- package/src/components/SummaryList/SummaryList.story.tsx +3 -1
- package/src/components/SummaryList/index.tsx +16 -14
- package/src/components/Switch/Switch.spec.tsx +8 -4
- package/src/components/Switch/index.tsx +16 -14
- package/src/components/Table/Table.spec.tsx +11 -7
- package/src/components/Table/Table.story.tsx +3 -3
- package/src/components/Table/index.tsx +20 -22
- package/src/components/TextArea/TextArea.spec.tsx +12 -6
- package/src/components/TextArea/index.tsx +10 -8
- package/src/components/TextInput/TextInput.module.css +1 -0
- package/src/components/TextInput/TextInput.spec.tsx +12 -6
- package/src/components/TextInput/TextInput.stories.tsx +46 -0
- package/src/components/TextInput/index.tsx +6 -99
- package/src/components/WebsiteInput/index.tsx +7 -5
- package/src/components/WeekCalendar/index.tsx +8 -8
- package/src/core/AlertComponent/AlertComponent.spec.tsx +17 -4
- package/src/core/AlertComponent/AlertComponent.story.tsx +19 -15
- package/src/core/AlertComponent/index.tsx +30 -25
- package/src/core/AppHeader/index.tsx +5 -3
- package/src/core/AppLogo/index.tsx +9 -7
- package/src/core/AppLogoImage/index.tsx +6 -6
- package/src/core/AppLogoPlaceholder/index.tsx +28 -22
- package/src/core/Assistive/index.tsx +1 -18
- package/src/{components/LoginForm/LoginForm.module.css → core/AuthForm/AuthForm.module.css} +4 -0
- package/src/core/AuthForm/AuthForm.spec.tsx +72 -0
- package/src/core/AuthForm/index.tsx +63 -0
- package/src/core/Banner/index.tsx +11 -11
- package/src/core/Calendar/index.tsx +9 -7
- package/src/core/CalendarDay/index.tsx +12 -12
- package/src/core/CalendarMonth/index.tsx +14 -12
- package/src/core/CalendarNavigation/index.tsx +14 -14
- package/src/core/CalendarWeek/index.tsx +21 -19
- package/src/core/ChkRadList/index.tsx +25 -23
- package/src/core/CloseButton/CloseButton.spec.tsx +4 -2
- package/src/core/CloseButton/index.tsx +10 -8
- package/src/core/ConfirmModal/ConfirmModal.spec.tsx +10 -4
- package/src/core/ConfirmModal/index.tsx +9 -7
- package/src/core/ConnectedRepeater/index.tsx +46 -19
- package/src/core/ConnectedRepeaterComponent/index.tsx +13 -9
- package/src/core/Container/index.tsx +6 -12
- package/src/core/DataPanelItem/index.tsx +19 -0
- package/src/core/EmptyMessage/EmptyMessage.stories.tsx +33 -0
- package/src/core/EmptyMessage/index.tsx +9 -42
- package/src/core/FilterItem/index.tsx +41 -33
- package/src/core/Filters/Filters.spec.tsx +103 -69
- package/src/core/Filters/index.tsx +39 -31
- package/src/core/FixedActions/FixedActions.module.css +6 -0
- package/src/core/FixedActions/FixedActions.spec.tsx +8 -3
- package/src/core/FixedActions/index.tsx +9 -9
- package/src/core/FormLegend/index.tsx +4 -4
- package/src/core/Header/Header.stories.tsx +20 -0
- package/src/core/Header/index.tsx +8 -13
- package/src/core/Icon/Icon.spec.tsx +1 -3
- package/src/core/Icon/index.tsx +14 -10
- package/src/core/IconButton/index.tsx +18 -20
- package/src/core/ListItem/ListItem.story.tsx +23 -19
- package/src/core/ListItem/index.tsx +46 -37
- package/src/core/ListItemAction/index.tsx +7 -14
- package/src/core/ListItemActions/index.tsx +13 -12
- package/src/core/ListItemMetaItem/index.tsx +8 -8
- package/src/core/ListItemTitle/ListItemTitle.module.css +9 -1
- package/src/core/ListItemTitle/ListItemTitle.spec.tsx +24 -2
- package/src/core/ListItemTitle/index.tsx +20 -10
- package/src/core/Loader/Loader.module.css +3 -3
- package/src/core/Loader/Loader.stories.tsx +22 -0
- package/src/core/Loader/index.tsx +2 -27
- package/src/core/MeActions/index.tsx +28 -18
- package/src/core/MePanel/index.tsx +10 -10
- package/src/core/ModalComponent/ModalComponent.spec.tsx +8 -4
- package/src/core/ModalComponent/index.tsx +13 -13
- package/src/core/Navigation/Navigation.spec.tsx +47 -36
- package/src/core/Navigation/index.tsx +18 -58
- package/src/core/NavigationDivider/index.tsx +6 -6
- package/src/core/NavigationItem/index.tsx +12 -21
- package/src/core/Panel/Panel.module.css +11 -0
- package/src/core/Panel/Panel.spec.tsx +16 -0
- package/src/core/Panel/index.tsx +17 -13
- package/src/core/PasswordForgotForm/index.tsx +15 -12
- package/src/core/PasswordResetForm/index.tsx +15 -12
- package/src/core/RadialProgress/index.tsx +11 -14
- package/src/core/SettingsForm/index.tsx +9 -8
- package/src/core/SummaryListItem/SummaryListItem.module.css +3 -11
- package/src/core/SummaryListItem/index.tsx +19 -14
- package/src/core/TabItem/TabItem.module.css +28 -0
- package/src/core/TabItem/index.tsx +42 -0
- package/src/core/Tabs/Tabs.module.css +0 -24
- package/src/core/Tabs/Tabs.spec.tsx +30 -0
- package/src/core/Tabs/index.tsx +18 -76
- package/src/core/Toast/Toast.spec.tsx +4 -2
- package/src/core/Toast/index.tsx +16 -18
- package/src/core/TwoFactor/TwoFactor.spec.tsx +183 -0
- package/src/core/TwoFactor/index.tsx +102 -0
- package/src/core/TwoFactorAuthenticator/index.tsx +39 -0
- package/src/core/{LoginFormTwoFactor/LoginFormTwoFactor.module.css → TwoFactorMethodList/TwoFactorMethodList.module.css} +1 -1
- package/src/core/TwoFactorMethodList/index.tsx +49 -0
- package/src/core/TwoFactorSetup/index.tsx +91 -0
- package/src/core/TwoFactorSetupAuthenticator/TwoFactorSetupAuthenticator.module.css +6 -0
- package/src/core/TwoFactorSetupAuthenticator/index.tsx +100 -0
- package/src/core/TwoFactorSetupYubikey/index.tsx +49 -0
- package/src/core/TwoFactorYubikey/index.tsx +41 -0
- package/src/core/WeekCalendarDay/index.tsx +7 -7
- package/src/core/{LoginFormYubikey/LoginFormYubikey.module.css → YubikeyInput/YubikeyInput.module.css} +5 -0
- package/src/core/YubikeyInput/YubikeyInput.spec.tsx +77 -0
- package/src/core/YubikeyInput/index.tsx +76 -0
- package/src/filters/BooleanFilter/index.tsx +13 -12
- package/src/filters/DateFilter/index.tsx +8 -8
- package/src/filters/DropdownFilter/index.tsx +19 -17
- package/src/filters/QuickDateFilter/index.tsx +12 -12
- package/src/filters/interfaces.ts +2 -2
- package/src/hooks/useAlert.spec.tsx +72 -0
- package/src/hooks/useAlert.ts +7 -5
- package/src/hooks/useConfig.ts +31 -0
- package/src/hooks/useConnectedList.ts +4 -4
- package/src/hooks/useConnectedRepeater.ts +8 -6
- package/src/hooks/useConnectedTable.ts +4 -4
- package/src/hooks/useFilters.ts +21 -13
- package/src/hooks/useLayout.spec.ts +3 -11
- package/src/hooks/useLayout.ts +8 -7
- package/src/hooks/useModal.spec.tsx +23 -15
- package/src/hooks/useModal.ts +17 -17
- package/src/hooks/useModalOffset.ts +4 -2
- package/src/hooks/useNavigation.ts +160 -0
- package/src/hooks/useRemote.ts +43 -0
- package/src/index.ts +31 -26
- package/src/scenes/Error404Scene.tsx +3 -1
- package/src/services/AppService.ts +16 -0
- package/src/services/ConfigService.ts +93 -0
- package/src/services/ConfirmService.ts +7 -2
- package/src/services/DateService.ts +48 -32
- package/src/services/DownloadService.spec.ts +4 -10
- package/src/services/DownloadService.ts +16 -9
- package/src/services/FilterComponentService.tsx +9 -5
- package/src/services/FilterService.spec.ts +57 -39
- package/src/services/FilterService.ts +62 -40
- package/src/services/FormatService.spec.ts +2 -0
- package/src/services/FormatService.ts +13 -8
- package/src/services/ToastService.ts +9 -4
- package/src/styles/tailwind.css +57 -0
- package/src/typings.d.ts +2 -2
- package/src/utility/MockRouter/index.ts +1 -0
- package/src/utility/icons.tsx +46 -30
- package/src/utility/interfaces.ts +39 -21
- package/src/utility/middleware.ts +10 -0
- package/src/utility/prop-types.ts +6 -2
- package/src/utility/register.tsx +11 -0
- package/tailwind.config.js +11 -0
- package/tsconfig.eslint.json +4 -0
- package/tsconfig.json +7 -15
- package/.gitattributes +0 -1
- package/.github/workflows/development.yml +0 -47
- package/.prettierrc +0 -9
- package/.storybook/manager.js +0 -4
- package/.storybook/postcss.config.js +0 -3
- package/.storybook/theme.js +0 -7
- package/.stylelintrc +0 -9
- package/__mocks__/@sqrzro/utility.ts +0 -43
- package/assets/logo-horizontal-dark.svg +0 -21
- package/assets/logo-horizontal-white.svg +0 -21
- package/assets/logo-vertical-dark.svg +0 -21
- package/assets/logo-vertical-white.svg +0 -21
- package/dist/index.css +0 -3812
- package/dist/index.js.map +0 -1
- package/dist/types/components/App/index.d.ts +0 -18
- package/dist/types/components/CalendarInput/index.d.ts +0 -10
- package/dist/types/components/CodeInput/index.d.ts +0 -9
- package/dist/types/components/ConnectedListScene/index.d.ts +0 -7
- package/dist/types/components/ConnectedScene/index.d.ts +0 -11
- package/dist/types/components/DateInput/index.d.ts +0 -7
- package/dist/types/components/Document/index.d.ts +0 -3
- package/dist/types/components/ErrorMessage/index.d.ts +0 -8
- package/dist/types/components/Fieldset/index.d.ts +0 -11
- package/dist/types/components/FilterLink/index.d.ts +0 -7
- package/dist/types/components/Form/index.d.ts +0 -14
- package/dist/types/components/FormActions/index.d.ts +0 -9
- package/dist/types/components/FormRepeater/index.d.ts +0 -9
- package/dist/types/components/InfoPanel/index.d.ts +0 -8
- package/dist/types/components/Link/index.d.ts +0 -13
- package/dist/types/components/ListActions/index.d.ts +0 -9
- package/dist/types/components/LoginForm/index.d.ts +0 -3
- package/dist/types/components/Message/index.d.ts +0 -7
- package/dist/types/components/ModalActions/index.d.ts +0 -11
- package/dist/types/components/PasswordForm/index.d.ts +0 -3
- package/dist/types/components/PasswordInput/index.d.ts +0 -4
- package/dist/types/components/Scene/index.d.ts +0 -10
- package/dist/types/components/SummaryList/index.d.ts +0 -8
- package/dist/types/components/Switch/index.d.ts +0 -9
- package/dist/types/components/Tag/index.d.ts +0 -8
- package/dist/types/components/TextArea/index.d.ts +0 -4
- package/dist/types/components/WeekCalendar/index.d.ts +0 -12
- package/dist/types/core/App/index.d.ts +0 -19
- package/dist/types/core/AppLogo/index.d.ts +0 -6
- package/dist/types/core/Assistive/index.d.ts +0 -6
- package/dist/types/core/BuildModal/index.d.ts +0 -3
- package/dist/types/core/Calendar/index.d.ts +0 -11
- package/dist/types/core/CalendarDay/index.d.ts +0 -16
- package/dist/types/core/CalendarMonth/index.d.ts +0 -12
- package/dist/types/core/CalendarNavigation/index.d.ts +0 -9
- package/dist/types/core/CalendarWeek/index.d.ts +0 -14
- package/dist/types/core/ChkRad/index.d.ts +0 -13
- package/dist/types/core/ChkRadIcon/index.d.ts +0 -7
- package/dist/types/core/CloseButton/index.d.ts +0 -9
- package/dist/types/core/ConnectedList/index.d.ts +0 -4
- package/dist/types/core/ConnectedTable/index.d.ts +0 -4
- package/dist/types/core/Container/index.d.ts +0 -7
- package/dist/types/core/DropdownPanel/index.d.ts +0 -18
- package/dist/types/core/ErrorBoundary/index.d.ts +0 -15
- package/dist/types/core/ErrorMessage/index.d.ts +0 -8
- package/dist/types/core/FilterItem/index.d.ts +0 -10
- package/dist/types/core/Filters/index.d.ts +0 -15
- package/dist/types/core/Form/index.d.ts +0 -12
- package/dist/types/core/FormError/index.d.ts +0 -6
- package/dist/types/core/FormLabel/index.d.ts +0 -8
- package/dist/types/core/FormLegend/index.d.ts +0 -6
- package/dist/types/core/Header/index.d.ts +0 -8
- package/dist/types/core/Icon/index.d.ts +0 -7
- package/dist/types/core/IconButton/Icon/index.d.ts +0 -7
- package/dist/types/core/IconButton/index.d.ts +0 -11
- package/dist/types/core/InputPanel/index.d.ts +0 -8
- package/dist/types/core/ListItemAction/index.d.ts +0 -4
- package/dist/types/core/ListItemMetaItem/index.d.ts +0 -10
- package/dist/types/core/ListItemTitle/index.d.ts +0 -9
- package/dist/types/core/Loader/index.d.ts +0 -6
- package/dist/types/core/LoginFormTwoFactor/index.d.ts +0 -13
- package/dist/types/core/MeActions/index.d.ts +0 -3
- package/dist/types/core/Modal/index.d.ts +0 -12
- package/dist/types/core/ModalComponent/index.d.ts +0 -12
- package/dist/types/core/NavigationItem/index.d.ts +0 -7
- package/dist/types/core/Pagination/index.d.ts +0 -7
- package/dist/types/core/PaginationItem/index.d.ts +0 -7
- package/dist/types/core/Panel/index.d.ts +0 -8
- package/dist/types/core/RadialProgress/index.d.ts +0 -8
- package/dist/types/core/SettingsForm/index.d.ts +0 -3
- package/dist/types/core/StaticTextInput/index.d.ts +0 -13
- package/dist/types/core/SummaryListItem/index.d.ts +0 -15
- package/dist/types/core/TableCell/index.d.ts +0 -8
- package/dist/types/core/TableHead/index.d.ts +0 -8
- package/dist/types/core/Tabs/index.d.ts +0 -11
- package/dist/types/core/TextInputAncillary/index.d.ts +0 -12
- package/dist/types/core/WeekCalendarDay/index.d.ts +0 -14
- package/dist/types/filters/BooleanFilter/index.d.ts +0 -5
- package/dist/types/filters/DateFilter/index.d.ts +0 -5
- package/dist/types/filters/DropdownFilter/index.d.ts +0 -17
- package/dist/types/filters/QuickDateFilter/index.d.ts +0 -5
- package/dist/types/hooks/useAccessiblePanel.d.ts +0 -13
- package/dist/types/hooks/useAppContext.d.ts +0 -55
- package/dist/types/hooks/useClickOutside.d.ts +0 -3
- package/dist/types/hooks/useComponentId.d.ts +0 -2
- package/dist/types/hooks/useFilters.d.ts +0 -3
- package/dist/types/hooks/useForm.d.ts +0 -41
- package/dist/types/hooks/useFormData.d.ts +0 -12
- package/dist/types/hooks/useModalOffset.d.ts +0 -2
- package/dist/types/hooks/useVariant.d.ts +0 -6
- package/dist/types/services/BuildService.d.ts +0 -5
- package/dist/types/services/DateService.d.ts +0 -17
- package/dist/types/services/DownloadService.d.ts +0 -5
- package/dist/types/services/FilterService.d.ts +0 -13
- package/dist/types/services/FormatService.d.ts +0 -7
- package/dist/types/services/OLD_ApiService.d.ts +0 -19
- package/dist/types/services/ToastService.d.ts +0 -5
- package/dist/types/utility/MockRouter/index.d.ts +0 -2
- package/dist/types/utility/StorybookPanel/index.d.ts +0 -7
- package/dist/types/utility/TestChangeHandler/index.d.ts +0 -15
- package/dist/types/utility/create-app.d.ts +0 -4
- package/dist/types/utility/icons.d.ts +0 -3
- package/docs/guides/01-installation.story.mdx +0 -33
- package/docs/guides/02-configuration.story.mdx +0 -80
- package/docs/guides/03-pages.story.mdx +0 -18
- package/docs/guides/04-integration.story.mdx +0 -33
- package/docs/guides/a11y.story.mdx +0 -7
- package/docs/guides/theming.story.mdx +0 -7
- package/docs/introduction.story.mdx +0 -17
- package/jest.config.js +0 -19
- package/rollup.config.js +0 -36
- package/scripts/create-exports.js +0 -74
- package/scripts/update-license.js +0 -8
- package/squarezero.config.js +0 -5
- package/src/components/Button/Button.module.css +0 -100
- package/src/components/CodeInput/CodeInput.module.css +0 -33
- package/src/components/CodeInput/CodeInput.spec.tsx +0 -180
- package/src/components/CodeInput/index.tsx +0 -138
- package/src/components/ConnectedScene/index.tsx +0 -96
- package/src/components/Document/index.tsx +0 -14
- package/src/components/Dropdown/Dropdown.module.css +0 -8
- package/src/components/Dropdown/Dropdown.spec.tsx +0 -304
- package/src/components/Dropdown/Dropdown.story.tsx +0 -53
- package/src/components/Dropdown/index.tsx +0 -228
- package/src/components/FormField/FormField.story.tsx +0 -29
- package/src/components/PasswordForm/PasswordForm.module.css +0 -21
- package/src/components/PasswordInput/PasswordInput.module.css +0 -23
- package/src/components/PasswordInput/PasswordInput.spec.tsx +0 -28
- package/src/components/PasswordInput/PasswordInput.story.tsx +0 -16
- package/src/components/PasswordInput/index.tsx +0 -23
- package/src/components/Scene/Scene.spec.tsx +0 -123
- package/src/components/Scene/Scene.story.tsx +0 -6
- package/src/components/Scene/index.tsx +0 -58
- package/src/components/Tag/Tag.module.css +0 -37
- package/src/components/Tag/Tag.spec.tsx +0 -10
- package/src/components/Tag/Tag.story.tsx +0 -55
- package/src/components/Tag/index.tsx +0 -27
- package/src/components/TextInput/TextInput.story.tsx +0 -24
- package/src/core/App/App.module.css +0 -24
- package/src/core/App/App.spec.tsx +0 -265
- package/src/core/App/index.tsx +0 -115
- package/src/core/Assistive/Assistive.module.css +0 -10
- package/src/core/ChkRad/ChkRad.module.css +0 -31
- package/src/core/ChkRad/ChkRad.spec.tsx +0 -79
- package/src/core/ChkRad/index.tsx +0 -75
- package/src/core/ChkRadIcon/ChkRadIcon.module.css +0 -29
- package/src/core/ChkRadIcon/index.tsx +0 -33
- package/src/core/DropdownPanel/DropdownPanel.module.css +0 -68
- package/src/core/DropdownPanel/index.tsx +0 -93
- package/src/core/ErrorBoundary/ErrorBoundary.spec.tsx +0 -33
- package/src/core/ErrorBoundary/index.tsx +0 -42
- package/src/core/FormError/FormError.module.css +0 -7
- package/src/core/FormError/index.tsx +0 -18
- package/src/core/FormLabel/FormLabel.module.css +0 -15
- package/src/core/FormLabel/index.tsx +0 -25
- package/src/core/Header/Header.module.css +0 -28
- package/src/core/InputPanel/InputPanel.module.css +0 -70
- package/src/core/InputPanel/index.tsx +0 -28
- package/src/core/Loader/Loader.story.tsx +0 -8
- package/src/core/LoginFormAuthenticator/index.tsx +0 -36
- package/src/core/LoginFormTwoFactor/index.tsx +0 -133
- package/src/core/LoginFormYubikey/index.tsx +0 -59
- package/src/core/Pagination/Pagination.module.css +0 -15
- package/src/core/PaginationItem/PaginationItem.module.css +0 -33
- package/src/core/PaginationItem/index.tsx +0 -46
- package/src/core/StaticTextInput/StaticTextInput.module.css +0 -79
- package/src/core/StaticTextInput/StaticTextInput.spec.tsx +0 -126
- package/src/core/StaticTextInput/index.tsx +0 -112
- package/src/core/Styled/Styled.spec.tsx +0 -32
- package/src/core/Styled/Styled.story.tsx +0 -10
- package/src/core/TableActionsCell/TableActionsCell.module.css +0 -3
- package/src/core/TableActionsCell/index.tsx +0 -26
- package/src/core/TableCell/TableCell.module.css +0 -16
- package/src/core/TableCell/index.tsx +0 -39
- package/src/core/TableHead/TableHead.module.css +0 -12
- package/src/core/TableHead/index.tsx +0 -48
- package/src/core/TableRow/index.tsx +0 -49
- package/src/core/TextInputAncillary/TextInputAncillary.module.css +0 -69
- package/src/core/TextInputAncillary/index.tsx +0 -84
- package/src/hooks/useAccessiblePanel.spec.tsx +0 -88
- package/src/hooks/useAccessiblePanel.ts +0 -74
- package/src/hooks/useAppContext.spec.ts +0 -38
- package/src/hooks/useAppContext.ts +0 -110
- package/src/hooks/useClickOutside.ts +0 -49
- package/src/hooks/useComponentId.spec.ts +0 -19
- package/src/hooks/useComponentId.ts +0 -16
- package/src/hooks/useForm.spec.ts +0 -251
- package/src/hooks/useForm.ts +0 -179
- package/src/hooks/useVariant.spec.ts +0 -14
- package/src/hooks/useVariant.ts +0 -34
- package/src/styles/layout.css +0 -64
- package/src/styles/variables.css +0 -85
- package/src/utility/StorybookPanel/StorybookPanel.module.css +0 -9
- package/src/utility/StorybookPanel/index.tsx +0 -25
- package/src/utility/TestChangeHandler/TestChangeHandler.module.css +0 -7
- package/src/utility/TestChangeHandler/TestChangeHandler.spec.tsx +0 -24
- package/src/utility/TestChangeHandler/index.tsx +0 -51
- package/src/utility/create-app.tsx +0 -28
- package/tests/setupFilesAfterEnv.js +0 -16
- package/tsconfig.types.json +0 -9
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
declare
|
|
3
|
-
export default Error404Scene;
|
|
1
|
+
import React from 'react';
|
|
2
|
+
declare function Error404Scene(): React.ReactElement;
|
|
3
|
+
export default Error404Scene;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ApiService } from '@sqrzro/utility';
|
|
2
|
+
import ConfigService from '../services/ConfigService';
|
|
3
|
+
const register = (userConfig) => {
|
|
4
|
+
const config = ConfigService.registerConfig(userConfig);
|
|
5
|
+
ApiService.registerConfig({ path: config.paths.api });
|
|
6
|
+
};
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
8
|
+
const AppService = {
|
|
9
|
+
register,
|
|
10
|
+
};
|
|
11
|
+
export default AppService;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { AuthObject } from '@sqrzro/hooks';
|
|
3
|
+
import type { NavigationObject } from '../utility/interfaces';
|
|
4
|
+
export interface Me {
|
|
5
|
+
name: string;
|
|
6
|
+
permissions?: string[];
|
|
7
|
+
}
|
|
8
|
+
export declare enum AppLayout {
|
|
9
|
+
sidebar = "sidebar",
|
|
10
|
+
topbar = "topbar"
|
|
11
|
+
}
|
|
12
|
+
export interface AppConfigObject {
|
|
13
|
+
auth: AuthObject;
|
|
14
|
+
Logo?: React.ComponentType;
|
|
15
|
+
me?: Me;
|
|
16
|
+
name: string;
|
|
17
|
+
navigation: NavigationObject[];
|
|
18
|
+
paths: {
|
|
19
|
+
api: string;
|
|
20
|
+
};
|
|
21
|
+
style: {
|
|
22
|
+
brand?: string;
|
|
23
|
+
isDarkMode?: boolean;
|
|
24
|
+
layout: AppLayout;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export interface Config {
|
|
28
|
+
auth?: Partial<AppConfigObject['auth']>;
|
|
29
|
+
Logo?: AppConfigObject['Logo'];
|
|
30
|
+
me?: AppConfigObject['me'];
|
|
31
|
+
name?: string;
|
|
32
|
+
navigation?: AppConfigObject['navigation'];
|
|
33
|
+
paths?: Partial<AppConfigObject['paths']>;
|
|
34
|
+
style?: Partial<AppConfigObject['style']>;
|
|
35
|
+
}
|
|
36
|
+
export declare function registerConfig(userConfig: Config): AppConfigObject;
|
|
37
|
+
declare function get(): AppConfigObject;
|
|
38
|
+
declare const ConfigService: {
|
|
39
|
+
get: typeof get;
|
|
40
|
+
registerConfig: typeof registerConfig;
|
|
41
|
+
};
|
|
42
|
+
export default ConfigService;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { AuthIdentifier } from '@sqrzro/hooks';
|
|
2
|
+
export var AppLayout;
|
|
3
|
+
(function (AppLayout) {
|
|
4
|
+
AppLayout["sidebar"] = "sidebar";
|
|
5
|
+
AppLayout["topbar"] = "topbar";
|
|
6
|
+
})(AppLayout || (AppLayout = {}));
|
|
7
|
+
let appConfig = {
|
|
8
|
+
auth: {
|
|
9
|
+
identifier: AuthIdentifier.username,
|
|
10
|
+
identifierLabel: 'Username',
|
|
11
|
+
loginUrl: 'tokens',
|
|
12
|
+
meUrl: 'me',
|
|
13
|
+
passwordUrl: 'tokens/password',
|
|
14
|
+
tfa: false,
|
|
15
|
+
},
|
|
16
|
+
name: '',
|
|
17
|
+
navigation: [],
|
|
18
|
+
paths: { api: 'http://localhost:8081' },
|
|
19
|
+
style: { isDarkMode: false, layout: AppLayout.sidebar },
|
|
20
|
+
};
|
|
21
|
+
function mergeAppContext(defaults, config) {
|
|
22
|
+
if (config) {
|
|
23
|
+
return { ...defaults, ...config };
|
|
24
|
+
}
|
|
25
|
+
return defaults;
|
|
26
|
+
}
|
|
27
|
+
export function registerConfig(userConfig) {
|
|
28
|
+
const config = {
|
|
29
|
+
auth: mergeAppContext(appConfig.auth, userConfig.auth),
|
|
30
|
+
name: userConfig.name || 'Square Zero Admin',
|
|
31
|
+
navigation: userConfig.navigation || appConfig.navigation,
|
|
32
|
+
paths: userConfig.paths ? { ...appConfig.paths, ...userConfig.paths } : appConfig.paths,
|
|
33
|
+
style: userConfig.style ? { ...appConfig.style, ...userConfig.style } : appConfig.style,
|
|
34
|
+
};
|
|
35
|
+
if (userConfig.Logo) {
|
|
36
|
+
config.Logo = userConfig.Logo;
|
|
37
|
+
}
|
|
38
|
+
if (userConfig.me) {
|
|
39
|
+
config.me = { ...userConfig.me };
|
|
40
|
+
}
|
|
41
|
+
appConfig = config;
|
|
42
|
+
return appConfig;
|
|
43
|
+
}
|
|
44
|
+
function get() {
|
|
45
|
+
return appConfig;
|
|
46
|
+
}
|
|
47
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
48
|
+
const ConfigService = {
|
|
49
|
+
get,
|
|
50
|
+
registerConfig,
|
|
51
|
+
};
|
|
52
|
+
export default ConfigService;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import type { ReactNode } from 'react';
|
|
2
|
-
export interface ConfirmModalData {
|
|
3
|
-
description: ReactNode;
|
|
4
|
-
label?: string;
|
|
5
|
-
onConfirm?: () => void;
|
|
6
|
-
}
|
|
7
|
-
export interface ConfirmObject {
|
|
8
|
-
ask: (data: ConfirmModalData) => boolean;
|
|
9
|
-
close: () => boolean;
|
|
10
|
-
}
|
|
11
|
-
declare const ConfirmService: ConfirmObject;
|
|
12
|
-
export default ConfirmService;
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface ConfirmModalData {
|
|
3
|
+
description: ReactNode;
|
|
4
|
+
label?: string;
|
|
5
|
+
onConfirm?: () => void;
|
|
6
|
+
}
|
|
7
|
+
export interface ConfirmObject {
|
|
8
|
+
ask: (data: ConfirmModalData) => boolean;
|
|
9
|
+
close: () => boolean;
|
|
10
|
+
}
|
|
11
|
+
declare const ConfirmService: ConfirmObject;
|
|
12
|
+
export default ConfirmService;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { EventService } from '@sqrzro/utility';
|
|
2
|
+
function ask(data) {
|
|
3
|
+
return EventService.publish('@confirm/send', data);
|
|
4
|
+
}
|
|
5
|
+
function close() {
|
|
6
|
+
return EventService.publish('@confirm/send', null);
|
|
7
|
+
}
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
9
|
+
const ConfirmService = { ask, close };
|
|
10
|
+
export default ConfirmService;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { StrictSimpleObject } from '../utility/interfaces';
|
|
2
|
+
interface DateItem {
|
|
3
|
+
id: number;
|
|
4
|
+
name: string | null;
|
|
5
|
+
}
|
|
6
|
+
declare function getDays(): DateItem[];
|
|
7
|
+
declare function getMonths(): DateItem[];
|
|
8
|
+
declare function getYears(startYear?: number, endYear?: number): DateItem[];
|
|
9
|
+
declare function isToday(date: string): boolean;
|
|
10
|
+
declare function getDayOfWeek(date: string): number;
|
|
11
|
+
declare function getDaysInMonth(date: string): number;
|
|
12
|
+
declare function addMonths(date: string, amount: number): string;
|
|
13
|
+
declare function subMonths(date: string, amount: number): string;
|
|
14
|
+
declare function getQuickDates(): StrictSimpleObject[];
|
|
15
|
+
declare const DateService: {
|
|
16
|
+
addMonths: typeof addMonths;
|
|
17
|
+
getDaysInMonth: typeof getDaysInMonth;
|
|
18
|
+
getDayOfWeek: typeof getDayOfWeek;
|
|
19
|
+
getDays: typeof getDays;
|
|
20
|
+
getMonths: typeof getMonths;
|
|
21
|
+
getQuickDates: typeof getQuickDates;
|
|
22
|
+
getYears: typeof getYears;
|
|
23
|
+
isToday: typeof isToday;
|
|
24
|
+
subMonths: typeof subMonths;
|
|
25
|
+
};
|
|
26
|
+
export default DateService;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { addMonths as fnsAddMonths, getDay as fnsGetDay, getDaysInMonth as fnsGetDaysInMonth, set as fnsSet, subDays as fnsSubDays, subMonths as fnsSubMonths, parseISO, } from 'date-fns';
|
|
2
|
+
import FormatService from './FormatService';
|
|
3
|
+
const DAYS_IN_WEEK = 7;
|
|
4
|
+
const MONTHS_IN_YEAR = 12;
|
|
5
|
+
const DAYS_IN_30_DAYS = 30;
|
|
6
|
+
const DAYS_IN_MONTH = 31;
|
|
7
|
+
const FIRST_YEAR = 1900;
|
|
8
|
+
const SUNDAY = 6;
|
|
9
|
+
function getDays() {
|
|
10
|
+
return Array(DAYS_IN_MONTH)
|
|
11
|
+
.fill(0)
|
|
12
|
+
.map((_item, index) => ({ id: index + 1, name: `${index + 1}` }));
|
|
13
|
+
}
|
|
14
|
+
function getMonths() {
|
|
15
|
+
return Array(MONTHS_IN_YEAR)
|
|
16
|
+
.fill(0)
|
|
17
|
+
.map((_item, index) => ({
|
|
18
|
+
id: index + 1,
|
|
19
|
+
name: FormatService.date(new Date(FIRST_YEAR, index, 1), 'MMMM'),
|
|
20
|
+
}));
|
|
21
|
+
}
|
|
22
|
+
function getYears(startYear = FIRST_YEAR, endYear = new Date().getFullYear()) {
|
|
23
|
+
return Array(endYear - startYear + 1)
|
|
24
|
+
.fill(0)
|
|
25
|
+
.map((_item, index) => ({ id: endYear - index, name: `${endYear - index}` }));
|
|
26
|
+
}
|
|
27
|
+
function isToday(date) {
|
|
28
|
+
return FormatService.date(new Date(), 'y-MM-dd') === date;
|
|
29
|
+
}
|
|
30
|
+
// Most date libraries start the week on Sunday (US). We want to start on Monday (UK).
|
|
31
|
+
function adjustDayOfWeek(num) {
|
|
32
|
+
return num === 0 ? SUNDAY : num - 1;
|
|
33
|
+
}
|
|
34
|
+
function getDayOfWeek(date) {
|
|
35
|
+
const parsed = parseISO(date);
|
|
36
|
+
const num = adjustDayOfWeek(fnsGetDay(parsed));
|
|
37
|
+
return Number.isNaN(num) ? -1 : num;
|
|
38
|
+
}
|
|
39
|
+
function getDaysInMonth(date) {
|
|
40
|
+
const parsed = parseISO(date);
|
|
41
|
+
const num = fnsGetDaysInMonth(parsed);
|
|
42
|
+
return Number.isNaN(num) ? -1 : num;
|
|
43
|
+
}
|
|
44
|
+
function addMonths(date, amount) {
|
|
45
|
+
const parsed = parseISO(`${date}-01`);
|
|
46
|
+
return FormatService.date(fnsAddMonths(parsed, amount), 'y-MM');
|
|
47
|
+
}
|
|
48
|
+
function subMonths(date, amount) {
|
|
49
|
+
const parsed = parseISO(`${date}-01`);
|
|
50
|
+
return FormatService.date(fnsSubMonths(parsed, amount), 'y-MM');
|
|
51
|
+
}
|
|
52
|
+
// Quick Date
|
|
53
|
+
const QUICK_DATE_FORMAT = 'Y-MM-dd';
|
|
54
|
+
function getToday() {
|
|
55
|
+
return new Date();
|
|
56
|
+
}
|
|
57
|
+
function getYesterday() {
|
|
58
|
+
return fnsSubDays(new Date(), 1);
|
|
59
|
+
}
|
|
60
|
+
function getLast7Days() {
|
|
61
|
+
return [fnsSubDays(new Date(), DAYS_IN_WEEK), new Date()];
|
|
62
|
+
}
|
|
63
|
+
function getLast30Days() {
|
|
64
|
+
return [fnsSubDays(new Date(), DAYS_IN_30_DAYS), new Date()];
|
|
65
|
+
}
|
|
66
|
+
// Get the first day of this month, and today
|
|
67
|
+
function getThisMonth() {
|
|
68
|
+
return [fnsSet(new Date(), { date: 1 }), getToday()];
|
|
69
|
+
}
|
|
70
|
+
// Get the first day of last month, and the day before the first day of this month
|
|
71
|
+
function getLastMonth() {
|
|
72
|
+
return [fnsSet(fnsSubMonths(new Date(), 1), { date: 1 }), fnsSubDays(getThisMonth()[0], 1)];
|
|
73
|
+
}
|
|
74
|
+
function getQuickDateId(value) {
|
|
75
|
+
if (Array.isArray(value)) {
|
|
76
|
+
return value.map((item) => FormatService.date(item, QUICK_DATE_FORMAT)).join(',');
|
|
77
|
+
}
|
|
78
|
+
const formatted = FormatService.date(value, QUICK_DATE_FORMAT);
|
|
79
|
+
return `${formatted},${formatted}`;
|
|
80
|
+
}
|
|
81
|
+
function getQuickDates() {
|
|
82
|
+
const today = new Date();
|
|
83
|
+
const dates = [
|
|
84
|
+
{
|
|
85
|
+
id: getToday(),
|
|
86
|
+
name: 'Today',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
id: getYesterday(),
|
|
90
|
+
name: 'Yesterday',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
id: getLast7Days(),
|
|
94
|
+
name: 'Last 7 Days',
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
id: getLast30Days(),
|
|
98
|
+
name: 'Last 30 Days',
|
|
99
|
+
},
|
|
100
|
+
];
|
|
101
|
+
/*
|
|
102
|
+
* If the date is the 8th or 31st of the month, it matches up with last 7 days or last 30 days,
|
|
103
|
+
* respectively, and causes duplicate key errors. So best just leave it out in these cases.
|
|
104
|
+
*/
|
|
105
|
+
if (today.getDate() !== DAYS_IN_WEEK + 1 && today.getDate() !== DAYS_IN_MONTH) {
|
|
106
|
+
dates.push({
|
|
107
|
+
id: getThisMonth(),
|
|
108
|
+
name: 'This Month',
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
dates.push({
|
|
112
|
+
id: getLastMonth(),
|
|
113
|
+
name: 'Last Month',
|
|
114
|
+
});
|
|
115
|
+
return dates.map((item) => ({
|
|
116
|
+
id: getQuickDateId(item.id),
|
|
117
|
+
name: item.name,
|
|
118
|
+
}));
|
|
119
|
+
}
|
|
120
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
121
|
+
const DateService = {
|
|
122
|
+
addMonths,
|
|
123
|
+
getDaysInMonth,
|
|
124
|
+
getDayOfWeek,
|
|
125
|
+
getDays,
|
|
126
|
+
getMonths,
|
|
127
|
+
getQuickDates,
|
|
128
|
+
getYears,
|
|
129
|
+
isToday,
|
|
130
|
+
subMonths,
|
|
131
|
+
};
|
|
132
|
+
export default DateService;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import MockDate from 'mockdate';
|
|
2
|
+
import DateService from './DateService';
|
|
3
|
+
describe('DateService', () => {
|
|
4
|
+
it('should addMonths', () => {
|
|
5
|
+
expect(DateService.addMonths('2020-01', 4)).toBe('2020-05');
|
|
6
|
+
expect(DateService.addMonths('1946-07', 12)).toBe('1947-07');
|
|
7
|
+
expect(DateService.addMonths('2050-02', 1)).toBe('2050-03');
|
|
8
|
+
expect(DateService.addMonths('2021-02', 0)).toBe('2021-02');
|
|
9
|
+
expect(DateService.addMonths('lorem', 5)).toBe('');
|
|
10
|
+
});
|
|
11
|
+
it('should getDaysInMonth', () => {
|
|
12
|
+
expect(DateService.getDaysInMonth('2020-01')).toBe(31);
|
|
13
|
+
expect(DateService.getDaysInMonth('2020-02')).toBe(29);
|
|
14
|
+
expect(DateService.getDaysInMonth('1950-09')).toBe(30);
|
|
15
|
+
expect(DateService.getDaysInMonth('lorem')).toBe(-1);
|
|
16
|
+
});
|
|
17
|
+
it('should getDayOfWeek', () => {
|
|
18
|
+
expect(DateService.getDayOfWeek('1987-04-18')).toBe(5);
|
|
19
|
+
expect(DateService.getDayOfWeek('2018-06-17')).toBe(6);
|
|
20
|
+
expect(DateService.getDayOfWeek('2028-05-18')).toBe(3);
|
|
21
|
+
expect(DateService.getDayOfWeek('2045-08-07')).toBe(0);
|
|
22
|
+
expect(DateService.getDayOfWeek('2046-01-02')).toBe(1);
|
|
23
|
+
expect(DateService.getDayOfWeek('lorem')).toBe(-1);
|
|
24
|
+
});
|
|
25
|
+
it('should getDays', () => {
|
|
26
|
+
const days = DateService.getDays();
|
|
27
|
+
expect(days[0]).toEqual({ id: 1, name: '1' });
|
|
28
|
+
expect(days[17]).toEqual({ id: 18, name: '18' });
|
|
29
|
+
expect(days[40]).toBeUndefined();
|
|
30
|
+
});
|
|
31
|
+
it('should getMonths', () => {
|
|
32
|
+
const months = DateService.getMonths();
|
|
33
|
+
expect(months[0]).toEqual({ id: 1, name: 'January' });
|
|
34
|
+
expect(months[7]).toEqual({ id: 8, name: 'August' });
|
|
35
|
+
expect(months[14]).toBeUndefined();
|
|
36
|
+
});
|
|
37
|
+
it('should getQuickDates', () => {
|
|
38
|
+
MockDate.set('2000-11-22');
|
|
39
|
+
const dates = DateService.getQuickDates();
|
|
40
|
+
expect(dates).toHaveLength(6);
|
|
41
|
+
expect(dates[0]).toEqual({ id: '2000-11-22,2000-11-22', name: 'Today' });
|
|
42
|
+
expect(dates[1]).toEqual({ id: '2000-11-21,2000-11-21', name: 'Yesterday' });
|
|
43
|
+
expect(dates[2]).toEqual({ id: '2000-11-15,2000-11-22', name: 'Last 7 Days' });
|
|
44
|
+
expect(dates[3]).toEqual({ id: '2000-10-23,2000-11-22', name: 'Last 30 Days' });
|
|
45
|
+
expect(dates[4]).toEqual({ id: '2000-11-01,2000-11-22', name: 'This Month' });
|
|
46
|
+
expect(dates[5]).toEqual({ id: '2000-10-01,2000-10-31', name: 'Last Month' });
|
|
47
|
+
});
|
|
48
|
+
it('should getQuickDates (8th of month)', () => {
|
|
49
|
+
MockDate.set('2000-11-08');
|
|
50
|
+
const dates = DateService.getQuickDates();
|
|
51
|
+
expect(dates).toHaveLength(5);
|
|
52
|
+
});
|
|
53
|
+
it('should getQuickDates (31st of month)', () => {
|
|
54
|
+
MockDate.set('2000-12-31');
|
|
55
|
+
const dates = DateService.getQuickDates();
|
|
56
|
+
expect(dates).toHaveLength(5);
|
|
57
|
+
});
|
|
58
|
+
describe('should getYears', () => {
|
|
59
|
+
it('should get default years', () => {
|
|
60
|
+
MockDate.set('2021-11-22');
|
|
61
|
+
const years = DateService.getYears();
|
|
62
|
+
expect(years[0]).toEqual({ id: 2021, name: '2021' });
|
|
63
|
+
expect(years[17]).toEqual({ id: 2004, name: '2004' });
|
|
64
|
+
expect(years[200]).toBeUndefined();
|
|
65
|
+
});
|
|
66
|
+
it('should get custom years', () => {
|
|
67
|
+
expect(DateService.getYears(2000, 2016)[3]).toEqual({ id: 2013, name: '2013' });
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
describe('should isToday', () => {
|
|
71
|
+
MockDate.set('2000-11-22');
|
|
72
|
+
expect(DateService.isToday('2000-11-22')).toBe(true);
|
|
73
|
+
expect(DateService.isToday('2001-11-22')).toBe(false);
|
|
74
|
+
expect(DateService.isToday('lorem')).toBe(false);
|
|
75
|
+
});
|
|
76
|
+
describe('should subMonths', () => {
|
|
77
|
+
expect(DateService.subMonths('2020-01', 4)).toBe('2019-09');
|
|
78
|
+
expect(DateService.subMonths('1946-07', 12)).toBe('1945-07');
|
|
79
|
+
expect(DateService.subMonths('2050-02', 1)).toBe('2050-01');
|
|
80
|
+
expect(DateService.subMonths('2021-02', 0)).toBe('2021-02');
|
|
81
|
+
expect(DateService.subMonths('lorem', 5)).toBe('');
|
|
82
|
+
});
|
|
83
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ApiService, AuthService, ifWindow } from '@sqrzro/utility';
|
|
2
|
+
import FilterService from '../services/FilterService';
|
|
3
|
+
function makeUrl(alias) {
|
|
4
|
+
const query = { dl: '1', token: AuthService.getToken() };
|
|
5
|
+
const filters = FilterService.getFiltersFromContext(null);
|
|
6
|
+
return ApiService.makeUrl([alias, query, filters]);
|
|
7
|
+
}
|
|
8
|
+
function download(alias) {
|
|
9
|
+
ifWindow((win) => win.open(makeUrl(alias)));
|
|
10
|
+
}
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
12
|
+
const DownloadService = {
|
|
13
|
+
download,
|
|
14
|
+
makeUrl,
|
|
15
|
+
};
|
|
16
|
+
export default DownloadService;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import DownloadService from './DownloadService';
|
|
2
|
+
jest.mock('@/services/AuthService', () => ({
|
|
3
|
+
getToken: () => 'token',
|
|
4
|
+
}));
|
|
5
|
+
describe('DownloadService', () => {
|
|
6
|
+
it('should make url', () => {
|
|
7
|
+
const url = DownloadService.makeUrl('lorem');
|
|
8
|
+
expect(url).toBe('http://example.com/lorem?dl=1&token=token');
|
|
9
|
+
});
|
|
10
|
+
it('should download', () => {
|
|
11
|
+
jest.spyOn(window, 'open').mockImplementation(() => null);
|
|
12
|
+
expect(window.open).toHaveBeenCalledTimes(0);
|
|
13
|
+
DownloadService.download('lorem');
|
|
14
|
+
expect(window.open).toHaveBeenCalledTimes(1);
|
|
15
|
+
expect(window.open).toHaveBeenLastCalledWith('http://example.com/lorem?dl=1&token=token');
|
|
16
|
+
window.open.mockClear();
|
|
17
|
+
});
|
|
18
|
+
});
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import type { FilterField, FilterOptions } from '../filters/interfaces';
|
|
2
|
-
/**
|
|
3
|
-
* This service returns a number of FilterField objects, each one representing a different type of
|
|
4
|
-
* filter that can be used for lists and tables.
|
|
5
|
-
*
|
|
6
|
-
* The filters are used by creating an array of FilterField objects (using the
|
|
7
|
-
* FilterComponentService to help), and passing it to the `Filters` component (usually through
|
|
8
|
-
* either a `List` or `Table` component, or some variation thereof)
|
|
9
|
-
*
|
|
10
|
-
* An example set of filters would be:
|
|
11
|
-
*
|
|
12
|
-
* ```
|
|
13
|
-
* const filters = [
|
|
14
|
-
* booleanFilter({ label: 'Active?', name: 'is_active' }),
|
|
15
|
-
* dateFilter({ label: 'Created', name: 'created_at' }),
|
|
16
|
-
* ];
|
|
17
|
-
* ```
|
|
18
|
-
*/
|
|
19
|
-
declare const FilterComponentService: {
|
|
20
|
-
boolean: (options: FilterOptions) => FilterField;
|
|
21
|
-
date: (options: FilterOptions) => FilterField;
|
|
22
|
-
dropdown: (options: FilterOptions) => FilterField;
|
|
23
|
-
quickDate: (options: FilterOptions) => FilterField;
|
|
24
|
-
};
|
|
25
|
-
export default FilterComponentService;
|
|
1
|
+
import type { FilterField, FilterOptions } from '../filters/interfaces';
|
|
2
|
+
/**
|
|
3
|
+
* This service returns a number of FilterField objects, each one representing a different type of
|
|
4
|
+
* filter that can be used for lists and tables.
|
|
5
|
+
*
|
|
6
|
+
* The filters are used by creating an array of FilterField objects (using the
|
|
7
|
+
* FilterComponentService to help), and passing it to the `Filters` component (usually through
|
|
8
|
+
* either a `List` or `Table` component, or some variation thereof)
|
|
9
|
+
*
|
|
10
|
+
* An example set of filters would be:
|
|
11
|
+
*
|
|
12
|
+
* ```
|
|
13
|
+
* const filters = [
|
|
14
|
+
* booleanFilter({ label: 'Active?', name: 'is_active' }),
|
|
15
|
+
* dateFilter({ label: 'Created', name: 'created_at' }),
|
|
16
|
+
* ];
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
declare const FilterComponentService: {
|
|
20
|
+
boolean: (options: FilterOptions) => FilterField;
|
|
21
|
+
date: (options: FilterOptions) => FilterField;
|
|
22
|
+
dropdown: (options: FilterOptions) => FilterField;
|
|
23
|
+
quickDate: (options: FilterOptions) => FilterField;
|
|
24
|
+
};
|
|
25
|
+
export default FilterComponentService;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/* eslint-disable react/display-name */
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import BooleanFilter, { renderSummary as renderBooleanSummary } from '../filters/BooleanFilter';
|
|
4
|
+
import DateFilter, { renderSummary as renderDateSummary } from '../filters/DateFilter';
|
|
5
|
+
import DropdownFilter, { renderSummary as renderDropdownSummary } from '../filters/DropdownFilter';
|
|
6
|
+
import QuickDateFilter, { renderSummary as renderQuickDateSummary, } from '../filters/QuickDateFilter';
|
|
7
|
+
const booleanFilter = (options) => ({
|
|
8
|
+
...options,
|
|
9
|
+
renderField: (props) => React.createElement(BooleanFilter, { ...props }),
|
|
10
|
+
renderSummary: renderBooleanSummary,
|
|
11
|
+
});
|
|
12
|
+
const dateFilter = (options) => ({
|
|
13
|
+
...options,
|
|
14
|
+
panelOptions: { size: 'lg' },
|
|
15
|
+
renderField: (props) => React.createElement(DateFilter, { ...props }),
|
|
16
|
+
renderSummary: renderDateSummary,
|
|
17
|
+
});
|
|
18
|
+
const dropdownFilter = (options) => ({
|
|
19
|
+
...options,
|
|
20
|
+
panelOptions: { isScrollable: true },
|
|
21
|
+
renderField: (props) => React.createElement(DropdownFilter, { ...props }),
|
|
22
|
+
renderSummary: renderDropdownSummary,
|
|
23
|
+
});
|
|
24
|
+
const quickDateFilter = (options) => ({
|
|
25
|
+
...options,
|
|
26
|
+
panelOptions: [{}, { size: 'lg' }],
|
|
27
|
+
renderField: (props) => React.createElement(QuickDateFilter, { ...props }),
|
|
28
|
+
renderSummary: renderQuickDateSummary,
|
|
29
|
+
});
|
|
30
|
+
/**
|
|
31
|
+
* This service returns a number of FilterField objects, each one representing a different type of
|
|
32
|
+
* filter that can be used for lists and tables.
|
|
33
|
+
*
|
|
34
|
+
* The filters are used by creating an array of FilterField objects (using the
|
|
35
|
+
* FilterComponentService to help), and passing it to the `Filters` component (usually through
|
|
36
|
+
* either a `List` or `Table` component, or some variation thereof)
|
|
37
|
+
*
|
|
38
|
+
* An example set of filters would be:
|
|
39
|
+
*
|
|
40
|
+
* ```
|
|
41
|
+
* const filters = [
|
|
42
|
+
* booleanFilter({ label: 'Active?', name: 'is_active' }),
|
|
43
|
+
* dateFilter({ label: 'Created', name: 'created_at' }),
|
|
44
|
+
* ];
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
48
|
+
const FilterComponentService = {
|
|
49
|
+
boolean: booleanFilter,
|
|
50
|
+
date: dateFilter,
|
|
51
|
+
dropdown: dropdownFilter,
|
|
52
|
+
quickDate: quickDateFilter,
|
|
53
|
+
};
|
|
54
|
+
export default FilterComponentService;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { FilterMap } from '../utility/interfaces';
|
|
2
|
+
interface FilterContext {
|
|
3
|
+
location?: {
|
|
4
|
+
pathname: string;
|
|
5
|
+
search: string;
|
|
6
|
+
};
|
|
7
|
+
path?: string;
|
|
8
|
+
query?: {
|
|
9
|
+
filter?: Record<string, string[] | string>;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Take either a query string (from a window.location.search, for example) or a query object (e.g.
|
|
14
|
+
* from an Express-style Request object), and return a filter map.
|
|
15
|
+
*
|
|
16
|
+
* @param ctx Either a window element or an Express-style Request object
|
|
17
|
+
* @returns A filter map for the specified filters
|
|
18
|
+
*/
|
|
19
|
+
declare function getFiltersFromContext(ctx: FilterContext | null): FilterMap;
|
|
20
|
+
/**
|
|
21
|
+
* Take either a query string (from a window.location.search, for example) or a query object (e.g.
|
|
22
|
+
* from an Express-style Request object), and a filter map of the specified filter values, and
|
|
23
|
+
* return a url that can be used to apply those specified filters.
|
|
24
|
+
*
|
|
25
|
+
* @param ctx Either a window element or an Express-style Request object
|
|
26
|
+
* @param filters A filter map for the specified filters
|
|
27
|
+
* @returns A url with the specified filters applied
|
|
28
|
+
*/
|
|
29
|
+
declare function setFiltersUrlFromContext(ctx: FilterContext | null, filters: FilterMap): string;
|
|
30
|
+
declare const FilterService: {
|
|
31
|
+
getFiltersFromContext: typeof getFiltersFromContext;
|
|
32
|
+
setFiltersUrlFromContext: typeof setFiltersUrlFromContext;
|
|
33
|
+
};
|
|
34
|
+
export default FilterService;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { UrlService, ifWindow, parseSearch } from '@sqrzro/utility';
|
|
2
|
+
function getDefaultContext(context) {
|
|
3
|
+
if (context) {
|
|
4
|
+
return context;
|
|
5
|
+
}
|
|
6
|
+
return ifWindow((win) => win, null);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Take either a query string (from a window.location.search, for example) or a query object (e.g.
|
|
10
|
+
* from an Express-style Request object), and return a filter map.
|
|
11
|
+
*
|
|
12
|
+
* @param ctx Either a window element or an Express-style Request object
|
|
13
|
+
* @returns A filter map for the specified filters
|
|
14
|
+
*/
|
|
15
|
+
function getFiltersFromContext(ctx) {
|
|
16
|
+
const map = new Map();
|
|
17
|
+
const context = getDefaultContext(ctx);
|
|
18
|
+
if (!context) {
|
|
19
|
+
return map;
|
|
20
|
+
}
|
|
21
|
+
const search = context.location ? parseSearch(context.location.search) : context.query;
|
|
22
|
+
if (!search?.filter || typeof search.filter !== 'object') {
|
|
23
|
+
return map;
|
|
24
|
+
}
|
|
25
|
+
for (const [key, value] of Object.entries(search.filter)) {
|
|
26
|
+
if (value) {
|
|
27
|
+
const stringValue = Array.isArray(value)
|
|
28
|
+
? value.map((item) => String(item))
|
|
29
|
+
: value.toString();
|
|
30
|
+
map.set(key, stringValue);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return map;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Take either a query string (from a window.location.search, for example) or a query object (e.g.
|
|
37
|
+
* from an Express-style Request object), and a filter map of the specified filter values, and
|
|
38
|
+
* return a url that can be used to apply those specified filters.
|
|
39
|
+
*
|
|
40
|
+
* @param ctx Either a window element or an Express-style Request object
|
|
41
|
+
* @param filters A filter map for the specified filters
|
|
42
|
+
* @returns A url with the specified filters applied
|
|
43
|
+
*/
|
|
44
|
+
function setFiltersUrlFromContext(ctx, filters) {
|
|
45
|
+
const context = getDefaultContext(ctx);
|
|
46
|
+
if (!context) {
|
|
47
|
+
return '';
|
|
48
|
+
}
|
|
49
|
+
const pathname = context.location ? context.location.pathname : context.path;
|
|
50
|
+
const search = context.location ? parseSearch(context.location.search) : context.query;
|
|
51
|
+
return UrlService.build(pathname || '', search, filters);
|
|
52
|
+
}
|
|
53
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
54
|
+
const FilterService = {
|
|
55
|
+
getFiltersFromContext,
|
|
56
|
+
setFiltersUrlFromContext,
|
|
57
|
+
};
|
|
58
|
+
export default FilterService;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|