@homecode/ui 4.11.1
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/LICENSE +21 -0
- package/README.md +29 -0
- package/dist/esm/index.js +78 -0
- package/dist/esm/node_modules/style-inject/dist/style-inject.es.js +28 -0
- package/dist/esm/src/components/AssistiveText/AssistiveText.js +10 -0
- package/dist/esm/src/components/AssistiveText/AssistiveText.styl.js +7 -0
- package/dist/esm/src/components/Button/Button.helpers.js +12 -0
- package/dist/esm/src/components/Button/Button.js +38 -0
- package/dist/esm/src/components/Button/Button.styl.js +7 -0
- package/dist/esm/src/components/ButtonGroup/ButtonGroup.js +10 -0
- package/dist/esm/src/components/ButtonGroup/ButtonGroup.styl.js +7 -0
- package/dist/esm/src/components/Checkbox/Checkbox.js +48 -0
- package/dist/esm/src/components/Checkbox/Checkbox.styl.js +7 -0
- package/dist/esm/src/components/Container/Container.js +12 -0
- package/dist/esm/src/components/Container/Container.styl.js +7 -0
- package/dist/esm/src/components/DateTime/DateTime.js +17 -0
- package/dist/esm/src/components/Draggable/Draggable.js +136 -0
- package/dist/esm/src/components/Draggable/Draggable.styl.js +7 -0
- package/dist/esm/src/components/Expand/Expand.js +24 -0
- package/dist/esm/src/components/Expand/Expand.styl.js +7 -0
- package/dist/esm/src/components/Form/Form.helpers.js +42 -0
- package/dist/esm/src/components/Form/Form.js +286 -0
- package/dist/esm/src/components/Form/Form.styl.js +7 -0
- package/dist/esm/src/components/Form/Form.types.js +1 -0
- package/dist/esm/src/components/Form/SubmitButtons/SubmitButtons.js +8 -0
- package/dist/esm/src/components/Form/SubmitButtons/SubmitButtons.styl.js +7 -0
- package/dist/esm/src/components/Form/Validator.js +36 -0
- package/dist/esm/src/components/Gallery/Dots/Dots.js +9 -0
- package/dist/esm/src/components/Gallery/Dots/Dots.styl.js +7 -0
- package/dist/esm/src/components/Gallery/Gallery.js +180 -0
- package/dist/esm/src/components/Gallery/Gallery.styl.js +7 -0
- package/dist/esm/src/components/Heading/Heading.js +37 -0
- package/dist/esm/src/components/Heading/Heading.styl.js +7 -0
- package/dist/esm/src/components/Icon/Icon.js +27 -0
- package/dist/esm/src/components/Icon/Icon.styl.js +7 -0
- package/dist/esm/src/components/Icon/icons/avatar.svg.js +15 -0
- package/dist/esm/src/components/Icon/icons/brokenImage.svg.js +15 -0
- package/dist/esm/src/components/Icon/icons/check.svg.js +19 -0
- package/dist/esm/src/components/Icon/icons/chevronDown.svg.js +20 -0
- package/dist/esm/src/components/Icon/icons/chevronLeft.svg.js +20 -0
- package/dist/esm/src/components/Icon/icons/chevronRight.svg.js +20 -0
- package/dist/esm/src/components/Icon/icons/chevronUp.svg.js +20 -0
- package/dist/esm/src/components/Icon/icons/close.svg.js +15 -0
- package/dist/esm/src/components/Icon/icons/colors.svg.js +60 -0
- package/dist/esm/src/components/Icon/icons/copy.svg.js +15 -0
- package/dist/esm/src/components/Icon/icons/delete.svg.js +15 -0
- package/dist/esm/src/components/Icon/icons/draft.svg.js +15 -0
- package/dist/esm/src/components/Icon/icons/edit.svg.js +15 -0
- package/dist/esm/src/components/Icon/icons/externalLink.svg.js +15 -0
- package/dist/esm/src/components/Icon/icons/fullscreen.svg.js +15 -0
- package/dist/esm/src/components/Icon/icons/fullscreenExit.svg.js +15 -0
- package/dist/esm/src/components/Icon/icons/gear.svg.js +20 -0
- package/dist/esm/src/components/Icon/icons/history.svg.js +17 -0
- package/dist/esm/src/components/Icon/icons/home.svg.js +19 -0
- package/dist/esm/src/components/Icon/icons/index.js +41 -0
- package/dist/esm/src/components/Icon/icons/loader.svg.js +45 -0
- package/dist/esm/src/components/Icon/icons/menu.svg.js +18 -0
- package/dist/esm/src/components/Icon/icons/mic.svg.js +15 -0
- package/dist/esm/src/components/Icon/icons/minus.svg.js +15 -0
- package/dist/esm/src/components/Icon/icons/moreHorizontal.svg.js +15 -0
- package/dist/esm/src/components/Icon/icons/moreVertical.svg.js +15 -0
- package/dist/esm/src/components/Icon/icons/plus.svg.js +15 -0
- package/dist/esm/src/components/Icon/icons/redo.svg.js +15 -0
- package/dist/esm/src/components/Icon/icons/requiredStar.svg.js +15 -0
- package/dist/esm/src/components/Icon/icons/save.svg.js +17 -0
- package/dist/esm/src/components/Icon/icons/send.svg.js +16 -0
- package/dist/esm/src/components/Icon/icons/settings.svg.js +52 -0
- package/dist/esm/src/components/Icon/icons/shoppingBag.svg.js +17 -0
- package/dist/esm/src/components/Icon/icons/social_email.svg.js +15 -0
- package/dist/esm/src/components/Icon/icons/social_instagram.svg.js +15 -0
- package/dist/esm/src/components/Icon/icons/social_telegram.svg.js +19 -0
- package/dist/esm/src/components/Icon/icons/undo.svg.js +15 -0
- package/dist/esm/src/components/Input/Input.js +331 -0
- package/dist/esm/src/components/Input/Input.styl.js +7 -0
- package/dist/esm/src/components/InputFile/InputFile.js +292 -0
- package/dist/esm/src/components/InputFile/InputFile.styl.js +7 -0
- package/dist/esm/src/components/InputFile/InputFile.types.js +1 -0
- package/dist/esm/src/components/InputFile/Item/Item.js +18 -0
- package/dist/esm/src/components/InputFile/Item/Item.styl.js +7 -0
- package/dist/esm/src/components/Label/Label.constants.json.js +8 -0
- package/dist/esm/src/components/Label/Label.helpers.js +35 -0
- package/dist/esm/src/components/Label/Label.js +58 -0
- package/dist/esm/src/components/Label/Label.styl.js +7 -0
- package/dist/esm/src/components/Lazy/Lazy.js +65 -0
- package/dist/esm/src/components/LightBox/LightBox.js +28 -0
- package/dist/esm/src/components/LightBox/LightBox.styl.js +7 -0
- package/dist/esm/src/components/Notifications/Notifications.constants.json.js +6 -0
- package/dist/esm/src/components/Notifications/Notifications.js +67 -0
- package/dist/esm/src/components/Notifications/Notifications.styl.js +7 -0
- package/dist/esm/src/components/Notifications/store.js +62 -0
- package/dist/esm/src/components/Paranja/Paranja.js +14 -0
- package/dist/esm/src/components/Paranja/Paranja.styl.js +7 -0
- package/dist/esm/src/components/Popup/Popup.helpers.js +31 -0
- package/dist/esm/src/components/Popup/Popup.js +396 -0
- package/dist/esm/src/components/Popup/Popup.styl.js +7 -0
- package/dist/esm/src/components/PopupMenu/PopupMenu.js +15 -0
- package/dist/esm/src/components/PopupMenu/PopupMenu.styl.js +7 -0
- package/dist/esm/src/components/Portal/Portal.js +19 -0
- package/dist/esm/src/components/RequiredStar/RequiredStar.js +12 -0
- package/dist/esm/src/components/RequiredStar/RequiredStar.styl.js +7 -0
- package/dist/esm/src/components/Router/Link/Link.js +61 -0
- package/dist/esm/src/components/Router/Link/Link.styl.js +7 -0
- package/dist/esm/src/components/Router/Redirect.js +12 -0
- package/dist/esm/src/components/Router/Route.js +4 -0
- package/dist/esm/src/components/Router/Router.helpers.js +33 -0
- package/dist/esm/src/components/Router/Router.js +68 -0
- package/dist/esm/src/components/Router/context.js +5 -0
- package/dist/esm/src/components/Router/store.js +55 -0
- package/dist/esm/src/components/Scroll/Scroll.js +274 -0
- package/dist/esm/src/components/Scroll/Scroll.styl.js +7 -0
- package/dist/esm/src/components/Select/Select.helpers.js +37 -0
- package/dist/esm/src/components/Select/Select.js +583 -0
- package/dist/esm/src/components/Select/Select.styl.js +7 -0
- package/dist/esm/src/components/Spinner/Spinner.js +11 -0
- package/dist/esm/src/components/Spinner/Spinner.styl.js +7 -0
- package/dist/esm/src/components/Spinner/spinner.svg.js +24 -0
- package/dist/esm/src/components/Table/Table.js +24 -0
- package/dist/esm/src/components/Table/Table.styl.js +7 -0
- package/dist/esm/src/components/Tabs/Tabs.js +43 -0
- package/dist/esm/src/components/Tabs/Tabs.styl.js +7 -0
- package/dist/esm/src/components/Text/Text.js +44 -0
- package/dist/esm/src/components/Text/Text.styl.js +7 -0
- package/dist/esm/src/components/Theme/Theme.defaults.js +50 -0
- package/dist/esm/src/components/Theme/Theme.helpers.js +67 -0
- package/dist/esm/src/components/Theme/Theme.js +13 -0
- package/dist/esm/src/components/VH/VH.js +33 -0
- package/dist/esm/src/components/Virtualized/List/List.js +124 -0
- package/dist/esm/src/components/Virtualized/List/List.styl.js +7 -0
- package/dist/esm/src/components/Virtualized/List/ListScroll.js +21 -0
- package/dist/esm/src/components/Virtualized/List/ListScroll.styl.js +7 -0
- package/dist/esm/src/components/Virtualized/Virtualized.helpers.js +14 -0
- package/dist/esm/src/components/Virtualized/Virtualized.js +200 -0
- package/dist/esm/src/components/Virtualized/Virtualized.styl.js +7 -0
- package/dist/esm/src/components/Virtualized/Virtualized.types.js +1 -0
- package/dist/esm/src/services/i18n.js +68 -0
- package/dist/esm/src/tools/array.js +60 -0
- package/dist/esm/src/tools/config.js +9 -0
- package/dist/esm/src/tools/debounce.js +11 -0
- package/dist/esm/src/tools/dom.js +46 -0
- package/dist/esm/src/tools/env.js +3 -0
- package/dist/esm/src/tools/file.js +11 -0
- package/dist/esm/src/tools/localStorage.js +31 -0
- package/dist/esm/src/tools/number.js +27 -0
- package/dist/esm/src/tools/object.js +5 -0
- package/dist/esm/src/tools/queryParams.js +20 -0
- package/dist/esm/src/tools/rangeMap.js +3 -0
- package/dist/esm/src/tools/resizeObserver.js +64 -0
- package/dist/esm/src/tools/scroll.js +41 -0
- package/dist/esm/src/tools/string.js +7 -0
- package/dist/esm/src/tools/throttle.js +30 -0
- package/dist/esm/src/tools/uid.js +7 -0
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types/src/components/AssistiveText/AssistiveText.d.ts +3 -0
- package/dist/esm/types/src/components/AssistiveText/AssistiveText.types.d.ts +7 -0
- package/dist/esm/types/src/components/Button/Button.d.ts +4 -0
- package/dist/esm/types/src/components/Button/Button.helpers.d.ts +1 -0
- package/dist/esm/types/src/components/Button/Button.types.d.ts +14 -0
- package/dist/esm/types/src/components/ButtonGroup/ButtonGroup.d.ts +3 -0
- package/dist/esm/types/src/components/ButtonGroup/ButtonGroup.types.d.ts +5 -0
- package/dist/esm/types/src/components/Checkbox/Checkbox.d.ts +18 -0
- package/dist/esm/types/src/components/Checkbox/Checkbox.types.d.ts +10 -0
- package/dist/esm/types/src/components/Container/Container.d.ts +3 -0
- package/dist/esm/types/src/components/Container/Container.types.d.ts +13 -0
- package/dist/esm/types/src/components/DateTime/DateTime.d.ts +8 -0
- package/dist/esm/types/src/components/DateTime/DateTime.types.d.ts +6 -0
- package/dist/esm/types/src/components/Draggable/Draggable.d.ts +24 -0
- package/dist/esm/types/src/components/Draggable/Draggable.types.d.ts +11 -0
- package/dist/esm/types/src/components/Expand/Expand.d.ts +3 -0
- package/dist/esm/types/src/components/Expand/Expand.types.d.ts +16 -0
- package/dist/esm/types/src/components/Form/Form.d.ts +32 -0
- package/dist/esm/types/src/components/Form/Form.helpers.d.ts +6 -0
- package/dist/esm/types/src/components/Form/Form.types.d.ts +71 -0
- package/dist/esm/types/src/components/Form/SubmitButtons/SubmitButtons.d.ts +13 -0
- package/dist/esm/types/src/components/Form/Validator.d.ts +2 -0
- package/dist/esm/types/src/components/Form/index.d.ts +2 -0
- package/dist/esm/types/src/components/Gallery/Dots/Dots.d.ts +5 -0
- package/dist/esm/types/src/components/Gallery/Gallery.d.ts +36 -0
- package/dist/esm/types/src/components/Gallery/Gallery.types.d.ts +12 -0
- package/dist/esm/types/src/components/Heading/Heading.d.ts +3 -0
- package/dist/esm/types/src/components/Heading/Heading.types.d.ts +5 -0
- package/dist/esm/types/src/components/Icon/Icon.d.ts +45 -0
- package/dist/esm/types/src/components/Icon/Icon.example.d.ts +3 -0
- package/dist/esm/types/src/components/Icon/Icon.helpers.d.ts +1 -0
- package/dist/esm/types/src/components/Icon/Icon.types.d.ts +8 -0
- package/dist/esm/types/src/components/Icon/icons/index.d.ts +39 -0
- package/dist/esm/types/src/components/Input/Input.d.ts +42 -0
- package/dist/esm/types/src/components/Input/Input.types.d.ts +21 -0
- package/dist/esm/types/src/components/InputFile/InputFile.d.ts +48 -0
- package/dist/esm/types/src/components/InputFile/InputFile.types.d.ts +22 -0
- package/dist/esm/types/src/components/InputFile/Item/Item.d.ts +16 -0
- package/dist/esm/types/src/components/Label/Label.d.ts +19 -0
- package/dist/esm/types/src/components/Label/Label.helpers.d.ts +1 -0
- package/dist/esm/types/src/components/Label/Label.types.d.ts +8 -0
- package/dist/esm/types/src/components/Lazy/Lazy.d.ts +18 -0
- package/dist/esm/types/src/components/Lazy/Lazy.types.d.ts +15 -0
- package/dist/esm/types/src/components/LightBox/LightBox.d.ts +3 -0
- package/dist/esm/types/src/components/LightBox/LightBox.types.d.ts +7 -0
- package/dist/esm/types/src/components/Notifications/Notifications.d.ts +2 -0
- package/dist/esm/types/src/components/Notifications/Notifications.types.d.ts +19 -0
- package/dist/esm/types/src/components/Notifications/store.d.ts +2 -0
- package/dist/esm/types/src/components/Paranja/Paranja.d.ts +3 -0
- package/dist/esm/types/src/components/Paranja/Paranja.types.d.ts +8 -0
- package/dist/esm/types/src/components/Popup/Popup.d.ts +73 -0
- package/dist/esm/types/src/components/Popup/Popup.helpers.d.ts +8 -0
- package/dist/esm/types/src/components/Popup/Popup.types.d.ts +34 -0
- package/dist/esm/types/src/components/PopupMenu/PopupMenu.d.ts +3 -0
- package/dist/esm/types/src/components/PopupMenu/PopupMenu.types.d.ts +13 -0
- package/dist/esm/types/src/components/Portal/Portal.d.ts +7 -0
- package/dist/esm/types/src/components/RequiredStar/RequiredStar.d.ts +3 -0
- package/dist/esm/types/src/components/RequiredStar/RequiredStar.types.d.ts +6 -0
- package/dist/esm/types/src/components/Router/Link/Link.d.ts +1 -0
- package/dist/esm/types/src/components/Router/Link/Link.types.d.ts +12 -0
- package/dist/esm/types/src/components/Router/Redirect.d.ts +5 -0
- package/dist/esm/types/src/components/Router/Route.d.ts +5 -0
- package/dist/esm/types/src/components/Router/Router.d.ts +7 -0
- package/dist/esm/types/src/components/Router/Router.helpers.d.ts +2 -0
- package/dist/esm/types/src/components/Router/Router.types.d.ts +18 -0
- package/dist/esm/types/src/components/Router/context.d.ts +6 -0
- package/dist/esm/types/src/components/Router/store.d.ts +2 -0
- package/dist/esm/types/src/components/Scroll/Scroll.d.ts +67 -0
- package/dist/esm/types/src/components/Scroll/Scroll.types.d.ts +27 -0
- package/dist/esm/types/src/components/Select/Select.d.ts +94 -0
- package/dist/esm/types/src/components/Select/Select.helpers.d.ts +14 -0
- package/dist/esm/types/src/components/Select/Select.types.d.ts +74 -0
- package/dist/esm/types/src/components/Spinner/Spinner.d.ts +3 -0
- package/dist/esm/types/src/components/Spinner/Spinner.types.d.ts +4 -0
- package/dist/esm/types/src/components/Table/Table.d.ts +8 -0
- package/dist/esm/types/src/components/Table/Table.types.d.ts +19 -0
- package/dist/esm/types/src/components/Tabs/Tabs.d.ts +3 -0
- package/dist/esm/types/src/components/Tabs/Tabs.types.d.ts +27 -0
- package/dist/esm/types/src/components/Text/Text.d.ts +7 -0
- package/dist/esm/types/src/components/Theme/Theme.d.ts +5 -0
- package/dist/esm/types/src/components/Theme/Theme.defaults.d.ts +32 -0
- package/dist/esm/types/src/components/Theme/Theme.helpers.d.ts +15 -0
- package/dist/esm/types/src/components/Theme/Theme.types.d.ts +6 -0
- package/dist/esm/types/src/components/VH/VH.d.ts +12 -0
- package/dist/esm/types/src/components/Virtualized/Cards/Cards.d.ts +26 -0
- package/dist/esm/types/src/components/Virtualized/List/List.d.ts +44 -0
- package/dist/esm/types/src/components/Virtualized/List/ListScroll.d.ts +8 -0
- package/dist/esm/types/src/components/Virtualized/Table/Table.d.ts +26 -0
- package/dist/esm/types/src/components/Virtualized/Virtualized.d.ts +34 -0
- package/dist/esm/types/src/components/Virtualized/Virtualized.helpers.d.ts +18 -0
- package/dist/esm/types/src/components/Virtualized/Virtualized.types.d.ts +53 -0
- package/dist/esm/types/src/components/Virtualized/index.d.ts +4 -0
- package/dist/esm/types/src/components/index.d.ts +33 -0
- package/dist/esm/types/src/index.d.ts +3 -0
- package/dist/esm/types/src/services/i18n.d.ts +16 -0
- package/dist/esm/types/src/services/index.d.ts +1 -0
- package/dist/esm/types/src/tools/array.d.ts +8 -0
- package/dist/esm/types/src/tools/config.d.ts +10 -0
- package/dist/esm/types/src/tools/debounce.d.ts +1 -0
- package/dist/esm/types/src/tools/dom.d.ts +12 -0
- package/dist/esm/types/src/tools/env.d.ts +1 -0
- package/dist/esm/types/src/tools/file.d.ts +1 -0
- package/dist/esm/types/src/tools/index.d.ts +16 -0
- package/dist/esm/types/src/tools/localStorage.d.ts +12 -0
- package/dist/esm/types/src/tools/number.d.ts +5 -0
- package/dist/esm/types/src/tools/object.d.ts +1 -0
- package/dist/esm/types/src/tools/queryParams.d.ts +3 -0
- package/dist/esm/types/src/tools/rangeMap.d.ts +2 -0
- package/dist/esm/types/src/tools/resizeObserver.d.ts +2 -0
- package/dist/esm/types/src/tools/scroll.d.ts +5 -0
- package/dist/esm/types/src/tools/string.d.ts +1 -0
- package/dist/esm/types/src/tools/throttle.d.ts +6 -0
- package/dist/esm/types/src/tools/uid.d.ts +1 -0
- package/dist/esm/types/src/types.d.ts +15 -0
- package/package.json +117 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 Oleh Apostol
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
[](https://www.npmjs.com/package/@foreverido/uilib)
|
|
2
|
+
|
|
3
|
+
# UILIB
|
|
4
|
+
|
|
5
|
+
Design system that makes building web applications with ReactJS faster and easier.
|
|
6
|
+
|
|
7
|
+
It's a collection of pre-built components, guidelines, and best practices that help you create high-quality user interfaces with less code.
|
|
8
|
+
|
|
9
|
+
## Best practices
|
|
10
|
+
|
|
11
|
+
Codebase are folows software development principles: DRY, KISS, SOLID.
|
|
12
|
+
|
|
13
|
+
### Tree shakable
|
|
14
|
+
|
|
15
|
+
UILIB is designed to make your web application run faster by only including the components that are actually used in your code. This reduces the amount of code that needs to be loaded, which makes your application load faster and run more smoothly.
|
|
16
|
+
|
|
17
|
+
### Typescript support
|
|
18
|
+
|
|
19
|
+
UILIB is designed to work well with Typescript, which is a popular programming language that helps you write more reliable and maintainable code. With UILIB, you get all the benefits of Typescript, like better error messages and more accurate code completion, to make your development experience smoother and more productive.
|
|
20
|
+
|
|
21
|
+
### SSR compatible
|
|
22
|
+
|
|
23
|
+
The components can be used in projects with SSR enabled. Check the test project [uilib-next](https://github.com/foreverido/uilib-nextjs)
|
|
24
|
+
|
|
25
|
+
## Perspective
|
|
26
|
+
|
|
27
|
+
There's still a lot of work to be done to make it shine ✨
|
|
28
|
+
|
|
29
|
+
Always welcome to contact me if you have any ideas - [Twitter](https://twitter.com/vpostol), [Telegram](https://t.me/apostol) or create issue/PR in [GitHub](https://github.com/foreverido/uilib/pulls).
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
export { AssistiveText } from './src/components/AssistiveText/AssistiveText.js';
|
|
2
|
+
export { Button } from './src/components/Button/Button.js';
|
|
3
|
+
export { ButtonGroup } from './src/components/ButtonGroup/ButtonGroup.js';
|
|
4
|
+
export { Checkbox } from './src/components/Checkbox/Checkbox.js';
|
|
5
|
+
export { Container } from './src/components/Container/Container.js';
|
|
6
|
+
export { DateTime, formatDate } from './src/components/DateTime/DateTime.js';
|
|
7
|
+
export { Draggable } from './src/components/Draggable/Draggable.js';
|
|
8
|
+
export { Expand } from './src/components/Expand/Expand.js';
|
|
9
|
+
export { Form } from './src/components/Form/Form.js';
|
|
10
|
+
export { Gallery } from './src/components/Gallery/Gallery.js';
|
|
11
|
+
export { Heading } from './src/components/Heading/Heading.js';
|
|
12
|
+
export { Icon, icons } from './src/components/Icon/Icon.js';
|
|
13
|
+
export { Input } from './src/components/Input/Input.js';
|
|
14
|
+
export { InputFile } from './src/components/InputFile/InputFile.js';
|
|
15
|
+
export { Label } from './src/components/Label/Label.js';
|
|
16
|
+
export { Lazy } from './src/components/Lazy/Lazy.js';
|
|
17
|
+
export { LightBox } from './src/components/LightBox/LightBox.js';
|
|
18
|
+
export { Notifications, NotificationsStore } from './src/components/Notifications/Notifications.js';
|
|
19
|
+
export { Paranja } from './src/components/Paranja/Paranja.js';
|
|
20
|
+
export { ANIMATION_DURATION, Popup } from './src/components/Popup/Popup.js';
|
|
21
|
+
export { Portal } from './src/components/Portal/Portal.js';
|
|
22
|
+
export { PopupMenu } from './src/components/PopupMenu/PopupMenu.js';
|
|
23
|
+
export { Router, RouterContext, RouterStore } from './src/components/Router/Router.js';
|
|
24
|
+
export { RequiredStar } from './src/components/RequiredStar/RequiredStar.js';
|
|
25
|
+
export { Select, SelectHelpers } from './src/components/Select/Select.js';
|
|
26
|
+
export { Scroll } from './src/components/Scroll/Scroll.js';
|
|
27
|
+
export { Spinner } from './src/components/Spinner/Spinner.js';
|
|
28
|
+
export { Table } from './src/components/Table/Table.js';
|
|
29
|
+
export { Tabs } from './src/components/Tabs/Tabs.js';
|
|
30
|
+
export { H1, H2, H3, H4, H5, H6 } from './src/components/Text/Text.js';
|
|
31
|
+
export { Theme } from './src/components/Theme/Theme.js';
|
|
32
|
+
export { VH } from './src/components/VH/VH.js';
|
|
33
|
+
export { default as Virtualized } from './src/components/Virtualized/Virtualized.js';
|
|
34
|
+
export { default as VirtualizedList } from './src/components/Virtualized/List/List.js';
|
|
35
|
+
export { default as VirtualizedListScroll } from './src/components/Virtualized/List/ListScroll.js';
|
|
36
|
+
import * as Virtualized_types from './src/components/Virtualized/Virtualized.types.js';
|
|
37
|
+
export { Virtualized_types as VirtualizedTypes };
|
|
38
|
+
import * as i18n from './src/services/i18n.js';
|
|
39
|
+
export { i18n };
|
|
40
|
+
import * as env from './src/tools/env.js';
|
|
41
|
+
export { env };
|
|
42
|
+
export { config } from './src/tools/config.js';
|
|
43
|
+
import * as array from './src/tools/array.js';
|
|
44
|
+
export { array };
|
|
45
|
+
import * as string from './src/tools/string.js';
|
|
46
|
+
export { string };
|
|
47
|
+
import * as number from './src/tools/number.js';
|
|
48
|
+
export { number };
|
|
49
|
+
import * as object from './src/tools/object.js';
|
|
50
|
+
export { object };
|
|
51
|
+
import * as file from './src/tools/file.js';
|
|
52
|
+
export { file };
|
|
53
|
+
import * as uid from './src/tools/uid.js';
|
|
54
|
+
export { uid };
|
|
55
|
+
import * as dom from './src/tools/dom.js';
|
|
56
|
+
export { dom };
|
|
57
|
+
export { default as rangeMap } from './src/tools/rangeMap.js';
|
|
58
|
+
import * as scroll from './src/tools/scroll.js';
|
|
59
|
+
export { scroll };
|
|
60
|
+
export { default as throttle } from './src/tools/throttle.js';
|
|
61
|
+
export { default as debounce } from './src/tools/debounce.js';
|
|
62
|
+
export { default as LS } from './src/tools/localStorage.js';
|
|
63
|
+
import * as resizeObserver from './src/tools/resizeObserver.js';
|
|
64
|
+
export { resizeObserver };
|
|
65
|
+
import * as queryParams from './src/tools/queryParams.js';
|
|
66
|
+
export { queryParams };
|
|
67
|
+
import * as Form_types from './src/components/Form/Form.types.js';
|
|
68
|
+
export { Form_types as FormTypes };
|
|
69
|
+
export { SubmitButtons } from './src/components/Form/SubmitButtons/SubmitButtons.js';
|
|
70
|
+
import * as InputFile_types from './src/components/InputFile/InputFile.types.js';
|
|
71
|
+
export { InputFile_types as InputFileTypes };
|
|
72
|
+
export { Route } from './src/components/Router/Route.js';
|
|
73
|
+
export { Redirect } from './src/components/Router/Redirect.js';
|
|
74
|
+
export { Link } from './src/components/Router/Link/Link.js';
|
|
75
|
+
import * as Theme_helpers from './src/components/Theme/Theme.helpers.js';
|
|
76
|
+
export { Theme_helpers as ThemeHelpers };
|
|
77
|
+
import * as Theme_defaults from './src/components/Theme/Theme.defaults.js';
|
|
78
|
+
export { Theme_defaults as ThemeDefaults };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
function styleInject(css, ref) {
|
|
2
|
+
if ( ref === void 0 ) ref = {};
|
|
3
|
+
var insertAt = ref.insertAt;
|
|
4
|
+
|
|
5
|
+
if (!css || typeof document === 'undefined') { return; }
|
|
6
|
+
|
|
7
|
+
var head = document.head || document.getElementsByTagName('head')[0];
|
|
8
|
+
var style = document.createElement('style');
|
|
9
|
+
style.type = 'text/css';
|
|
10
|
+
|
|
11
|
+
if (insertAt === 'top') {
|
|
12
|
+
if (head.firstChild) {
|
|
13
|
+
head.insertBefore(style, head.firstChild);
|
|
14
|
+
} else {
|
|
15
|
+
head.appendChild(style);
|
|
16
|
+
}
|
|
17
|
+
} else {
|
|
18
|
+
head.appendChild(style);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (style.styleSheet) {
|
|
22
|
+
style.styleSheet.cssText = css;
|
|
23
|
+
} else {
|
|
24
|
+
style.appendChild(document.createTextNode(css));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { styleInject as default };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import cn from 'classnames';
|
|
3
|
+
import S from './AssistiveText.styl.js';
|
|
4
|
+
|
|
5
|
+
function AssistiveText(props) {
|
|
6
|
+
const { className, size = 'm', variant = 'default', children, ...rest } = props;
|
|
7
|
+
return (jsx("div", { className: cn(S.root, S[`size-${size}`], S[`variant-${variant}`], className), ...rest, children: children }));
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { AssistiveText };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import styleInject from '../../../node_modules/style-inject/dist/style-inject.es.js';
|
|
2
|
+
|
|
3
|
+
var css_248z = ".AssistiveText_root__OI3ju{font-size:80%;line-height:1.5em;margin-bottom:.2em}.AssistiveText_size-s__gsuS-{padding:0 10px}.AssistiveText_size-m__PDlkc{padding:0 12px}.AssistiveText_size-l__D-9pQ{padding:0 14px}.AssistiveText_variant-danger__N8sGS{color:var(--danger-color)}";
|
|
4
|
+
var S = {"root":"AssistiveText_root__OI3ju","size-s":"AssistiveText_size-s__gsuS-","size-m":"AssistiveText_size-m__PDlkc","size-l":"AssistiveText_size-l__D-9pQ","variant-danger":"AssistiveText_variant-danger__N8sGS"};
|
|
5
|
+
styleInject(css_248z);
|
|
6
|
+
|
|
7
|
+
export { S as default };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Safari and Firefox not fire focus on click
|
|
2
|
+
// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Clicking_and_focus
|
|
3
|
+
function focusOnClick(buttonElem) {
|
|
4
|
+
const ua = navigator.userAgent.toLowerCase();
|
|
5
|
+
const isSafari = ua.indexOf('safari') > -1 && ua.indexOf('chrome') === -1;
|
|
6
|
+
const isFirefox = /firefox/.test(ua);
|
|
7
|
+
if (isSafari || isFirefox) {
|
|
8
|
+
buttonElem?.focus();
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export { focusOnClick };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useCallback, useEffect } from 'react';
|
|
3
|
+
import cn from 'classnames';
|
|
4
|
+
import { Spinner } from '../Spinner/Spinner.js';
|
|
5
|
+
import S from './Button.styl.js';
|
|
6
|
+
import { focusOnClick } from './Button.helpers.js';
|
|
7
|
+
|
|
8
|
+
function Button(props) {
|
|
9
|
+
const { className, loading, checked, square, onMouseUp, children, type = 'button', variant = 'default', size = 'm', prefixElem, postfixElem, onRef, ...rest } = props;
|
|
10
|
+
const { disabled } = props;
|
|
11
|
+
const classes = cn(S.root, S[`size-${size}`], S[`variant-${variant}`], loading && S.loading, checked && S.checked, square && S.square, className);
|
|
12
|
+
const [buttonElem, setButtonElem] = useState(null);
|
|
13
|
+
const onRefHandler = useCallback(elem => {
|
|
14
|
+
if (onRef)
|
|
15
|
+
onRef(elem);
|
|
16
|
+
setButtonElem(elem);
|
|
17
|
+
}, []);
|
|
18
|
+
// @ts-ignore
|
|
19
|
+
rest.onMouseUp = useCallback(e => {
|
|
20
|
+
if (onMouseUp)
|
|
21
|
+
onMouseUp(e);
|
|
22
|
+
focusOnClick(buttonElem);
|
|
23
|
+
}, [onMouseUp, buttonElem]);
|
|
24
|
+
if (disabled)
|
|
25
|
+
rest.tabIndex = -1;
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
const activeElement = document.activeElement;
|
|
28
|
+
if (!disabled || !activeElement)
|
|
29
|
+
return;
|
|
30
|
+
if (buttonElem && buttonElem === activeElement)
|
|
31
|
+
activeElement?.blur(); // eslint-disable-line
|
|
32
|
+
}, [disabled]);
|
|
33
|
+
return (
|
|
34
|
+
// @ts-ignore
|
|
35
|
+
jsxs("button", { className: classes, ...rest, type: type, ref: onRefHandler, children: [prefixElem && jsx("div", { className: S.prefix, children: prefixElem }), typeof children === 'string' ? jsx("span", { children: children }) : children, postfixElem && jsx("div", { className: S.postfix, children: postfixElem }), loading && jsx(Spinner, { className: cn(S.spinner, S.postfix), size: size })] }));
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export { Button };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import styleInject from '../../../node_modules/style-inject/dist/style-inject.es.js';
|
|
2
|
+
|
|
3
|
+
var css_248z = ".Button_root__SZns2{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;box-shadow:inset 0 0 0 2px none;box-sizing:border-box;color:inherit;cursor:pointer;display:inline-flex;justify-content:center;line-height:1em;text-decoration:none;transition:.2s ease-out;transition-property:background-color,box-shadow,opacity;-webkit-user-select:none;-moz-user-select:none;user-select:none}.Button_root__SZns2:focus,.Button_root__SZns2:hover{background-color:var(--active-color-alpha-100)}.Button_root__SZns2[disabled]{background-color:var(--accent-color-alpha-100);opacity:.4;pointer-events:none}.Button_root__SZns2:active,.Button_root__SZns2:hover{background-color:var(--active-color-alpha-300)}.Button_root__SZns2:active{opacity:.7}.Button_root__SZns2.Button_loading__c4pdo{pointer-events:none}.Button_root__SZns2.Button_checked__X7f58,.Button_root__SZns2.Button_checked__X7f58:hover{background-color:var(--accent-color);box-shadow:none;color:var(--decent-color)}.Button_root__SZns2.Button_checked__X7f58:hover{background-color:var(--accent-color-alpha-900)}.Button_root__SZns2.Button_checked__X7f58 path{fill:var(--decent-color)}.Button_postfix__DwG-n,.Button_prefix__czqd5{display:flex}.Button_prefix__czqd5:not(:last-child){margin-right:.5em}.Button_postfix__DwG-n:not(:first-child){margin-left:.5em}.Button_size-s__-SIY1{border-radius:4px;font-size:12px;min-height:30px;min-width:30px;padding:0 10px}.Button_size-s__-SIY1.Button_square__eYSY3{max-height:30px;width:30px}.Button_size-m__TBXc-{border-radius:6px;font-size:16px;min-height:40px;min-width:40px;padding:0 12px}.Button_size-m__TBXc-.Button_square__eYSY3{max-height:40px;width:40px}.Button_size-l__Sx37T{border-radius:8px;font-size:20px;min-height:50px;min-width:50px;padding:0 14px}.Button_size-l__Sx37T.Button_square__eYSY3{max-height:50px}.Button_square__eYSY3{justify-content:center;padding:0}.Button_variant-clear__z1HZm:focus,.Button_variant-clear__z1HZm:hover,.Button_variant-default__vbo51:focus,.Button_variant-default__vbo51:hover{background-color:var(--active-color-alpha-300)}.Button_variant-clear__z1HZm{background-color:transparent}.Button_variant-default__vbo51{background-color:var(--accent-color-alpha-100)}.Button_variant-outlined__shnIq{background-color:transparent;box-shadow:inset 0 0 0 2px var(--accent-color)}.Button_variant-outlined__shnIq:focus{background-color:var(--active-color-alpha-300);box-shadow:inset 0 0 0 2px var(--active-color)}.Button_variant-primary__zhEQI{background-color:var(--active-color);color:var(--accent-color-alpha-900)}.Button_variant-primary__zhEQI:hover{background-color:var(--active-color-alpha-800)}.Button_variant-primary__zhEQI:focus{background-color:var(--active-color);box-shadow:inset 0 0 0 2px var(--accent-color)}.Button_spinner__ttaMr{margin-left:var(--indent-s)}";
|
|
4
|
+
var S = {"root":"Button_root__SZns2","loading":"Button_loading__c4pdo","checked":"Button_checked__X7f58","prefix":"Button_prefix__czqd5","postfix":"Button_postfix__DwG-n","size-s":"Button_size-s__-SIY1","square":"Button_square__eYSY3","size-m":"Button_size-m__TBXc-","size-l":"Button_size-l__Sx37T","variant-clear":"Button_variant-clear__z1HZm","variant-default":"Button_variant-default__vbo51","variant-outlined":"Button_variant-outlined__shnIq","variant-primary":"Button_variant-primary__zhEQI","spinner":"Button_spinner__ttaMr"};
|
|
5
|
+
styleInject(css_248z);
|
|
6
|
+
|
|
7
|
+
export { S as default };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import cn from 'classnames';
|
|
3
|
+
import S from './ButtonGroup.styl.js';
|
|
4
|
+
|
|
5
|
+
function ButtonGroup(props) {
|
|
6
|
+
const { children, className, ...rest } = props;
|
|
7
|
+
return (jsx("div", { className: cn(S.root, className), ...rest, children: children }));
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { ButtonGroup };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import styleInject from '../../../node_modules/style-inject/dist/style-inject.es.js';
|
|
2
|
+
|
|
3
|
+
var css_248z = ".ButtonGroup_root__DGOTX{display:flex}.ButtonGroup_root__DGOTX>button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.ButtonGroup_root__DGOTX>button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}";
|
|
4
|
+
var S = {"root":"ButtonGroup_root__DGOTX"};
|
|
5
|
+
styleInject(css_248z);
|
|
6
|
+
|
|
7
|
+
export { S as default };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Component } from 'react';
|
|
3
|
+
import cn from 'classnames';
|
|
4
|
+
import { createStore } from 'justorm/react';
|
|
5
|
+
import { Icon } from '../Icon/Icon.js';
|
|
6
|
+
import { generateUID } from '../../tools/uid.js';
|
|
7
|
+
import S from './Checkbox.styl.js';
|
|
8
|
+
|
|
9
|
+
class Checkbox extends Component {
|
|
10
|
+
id;
|
|
11
|
+
store;
|
|
12
|
+
static defaultProps = {
|
|
13
|
+
size: 'm',
|
|
14
|
+
variant: 'default',
|
|
15
|
+
label: '',
|
|
16
|
+
checked: false,
|
|
17
|
+
};
|
|
18
|
+
constructor(props) {
|
|
19
|
+
super(props);
|
|
20
|
+
this.id = props.id || generateUID();
|
|
21
|
+
this.store = createStore(this, { isActive: false, isFocused: false });
|
|
22
|
+
}
|
|
23
|
+
onMouseDown = () => {
|
|
24
|
+
this.store.isActive = true;
|
|
25
|
+
};
|
|
26
|
+
onMouseUp = () => {
|
|
27
|
+
this.store.isActive = false;
|
|
28
|
+
};
|
|
29
|
+
onFocus = (e) => {
|
|
30
|
+
const { onFocus } = this.props;
|
|
31
|
+
this.store.isFocused = true;
|
|
32
|
+
onFocus?.(e);
|
|
33
|
+
};
|
|
34
|
+
onBlur = (e) => {
|
|
35
|
+
const { onBlur } = this.props;
|
|
36
|
+
this.store.isFocused = false;
|
|
37
|
+
onBlur?.(e);
|
|
38
|
+
};
|
|
39
|
+
render() {
|
|
40
|
+
const { className, label, size, variant, error, ...props } = this.props;
|
|
41
|
+
const { checked, disabled } = props;
|
|
42
|
+
const { isActive, isFocused } = this.store;
|
|
43
|
+
const classes = cn(S.root, S[`size-${size}`], S[`variant-${variant}`], checked && S.checked, disabled && S.disabled, error && S.hasError, isActive && S.isActive, isFocused && S.isFocused, className);
|
|
44
|
+
return (jsxs("label", { className: classes, onMouseDown: this.onMouseDown, onMouseUp: this.onMouseUp, children: [jsxs("div", { className: S.controlWrapper, children: [jsx("input", { className: S.control, ...props, onFocus: this.onFocus, onBlur: this.onBlur, id: this.id, type: "checkbox", tabIndex: 0 }), jsx(Icon, { type: "check", className: S.checkmark, size: size })] }), label] }));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export { Checkbox };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import styleInject from '../../../node_modules/style-inject/dist/style-inject.es.js';
|
|
2
|
+
|
|
3
|
+
var css_248z = ".Checkbox_root__4nsMp{align-items:center;box-sizing:border-box;color:inherit;cursor:pointer;display:inline-flex;text-decoration:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.Checkbox_disabled__mcg2G{opacity:.4;pointer-events:none}.Checkbox_controlWrapper__bHYKO{border-radius:var(--border-radius-m);display:block;margin-right:1em;position:relative;transition:.2s ease-out;transition-property:opacity,box-shadow}.Checkbox_variant-default__ck-xT .Checkbox_controlWrapper__bHYKO{background-color:var(--accent-color-alpha-100)}.Checkbox_variant-outlined__dtjX- .Checkbox_controlWrapper__bHYKO{background-color:transparent;box-shadow:inset 0 0 0 2px var(--accent-color)}.Checkbox_root__4nsMp:hover .Checkbox_controlWrapper__bHYKO{background-color:var(--active-color-alpha-100)}.Checkbox_isActive__uu6VN .Checkbox_controlWrapper__bHYKO,.Checkbox_isFocused__fMPy3 .Checkbox_controlWrapper__bHYKO{box-shadow:inset 0 0 0 2px var(--active-color)!important}.Checkbox_hasError__YUP6n .Checkbox_controlWrapper__bHYKO{box-shadow:inset 0 0 0 2px var(--danger-color)!important}.Checkbox_isActive__uu6VN .Checkbox_controlWrapper__bHYKO{background-color:var(--active-color-alpha-100);opacity:.7}.Checkbox_control__SAuxo{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-shadow:inset 0 0 0 2px none;box-sizing:border-box;cursor:pointer;transition:.2s ease-out;transition-property:background-color,box-shadow,opacity;transition:.1s ease-out;transition-property:background-color,color}.Checkbox_control__SAuxo:focus,.Checkbox_control__SAuxo:hover{background-color:var(--active-color-alpha-100)}.Checkbox_control__SAuxo[disabled]{background-color:var(--accent-color-alpha-100);opacity:.4;pointer-events:none}.Checkbox_checkmark__FrCws{height:100%!important;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transform:scale(.6) rotateY(-90deg);transition:.1s ease-in;transition-property:transform,opacity;width:100%!important}.Checkbox_checked__ZREOF .Checkbox_checkmark__FrCws{opacity:1;transform:scale(.6)}.Checkbox_size-s__T8-y2{font-size:12px}.Checkbox_size-s__T8-y2 .Checkbox_controlWrapper__bHYKO{border-radius:4px;min-height:30px;min-width:30px}.Checkbox_size-m__LCe6f{font-size:16px}.Checkbox_size-m__LCe6f .Checkbox_controlWrapper__bHYKO{border-radius:6px;min-height:40px;min-width:40px}.Checkbox_size-l__U-WS4{font-size:20px}.Checkbox_size-l__U-WS4 .Checkbox_controlWrapper__bHYKO{border-radius:8px;min-height:50px;min-width:50px}";
|
|
4
|
+
var S = {"root":"Checkbox_root__4nsMp","disabled":"Checkbox_disabled__mcg2G","controlWrapper":"Checkbox_controlWrapper__bHYKO","variant-default":"Checkbox_variant-default__ck-xT","variant-outlined":"Checkbox_variant-outlined__dtjX-","isActive":"Checkbox_isActive__uu6VN","isFocused":"Checkbox_isFocused__fMPy3","hasError":"Checkbox_hasError__YUP6n","control":"Checkbox_control__SAuxo","checkmark":"Checkbox_checkmark__FrCws","checked":"Checkbox_checked__ZREOF","size-s":"Checkbox_size-s__T8-y2","size-m":"Checkbox_size-m__LCe6f","size-l":"Checkbox_size-l__U-WS4"};
|
|
5
|
+
styleInject(css_248z);
|
|
6
|
+
|
|
7
|
+
export { S as default };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import cn from 'classnames';
|
|
3
|
+
import S from './Container.styl.js';
|
|
4
|
+
|
|
5
|
+
function Container(props) {
|
|
6
|
+
const { className, children, size, alignItemsCenter, justifyContentCenter, vertical, fullHeight, fullWidth, scrolledX, scrolledY, style, ...rest } = props;
|
|
7
|
+
const classes = cn(S.root, size && S[`size-${size}`], alignItemsCenter && S.alignItemsCenter, justifyContentCenter && S.justifyContentCenter, vertical && S.vertical, scrolledX && S.scrolledX, scrolledY && S.scrolledY, fullHeight && S.fullHeight, fullWidth && S.fullWidth, className);
|
|
8
|
+
const stylesObj = { ...style };
|
|
9
|
+
return (jsx("div", { className: classes, ...rest, style: stylesObj, children: children }));
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export { Container };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import styleInject from '../../../node_modules/style-inject/dist/style-inject.es.js';
|
|
2
|
+
|
|
3
|
+
var css_248z = ".Container_root__ZumTN{display:flex;margin:0 auto}@media (min-width:var(--tablet )){.Container_root__ZumTN{padding:var(--indent-m)}}@media (min-width:var(--desktop )){.Container_root__ZumTN{padding:var(--indent-l)}}.Container_size-s__zyPBS{padding:var(--indent-s)}.Container_size-m__MGaiX{padding:var(--indent-m)}.Container_size-l__hHWPx{padding:var(--indent-l)}.Container_size-xl__1X88n{padding:50px}.Container_vertical__Xzag9{flex-direction:column}.Container_justifyContentCenter__t2p2K{justify-content:center}.Container_alignItemsCenter__gVolL{align-items:center}.Container_fullHeight__5dBZa{height:100%;width:100%}.Container_fullWidth__javSY{width:100%}.Container_scrolledX__FFZpZ{overflow-x:auto}.Container_scrolledY__0HKdO{overflow-y:auto}";
|
|
4
|
+
var S = {"root":"Container_root__ZumTN","size-s":"Container_size-s__zyPBS","size-m":"Container_size-m__MGaiX","size-l":"Container_size-l__hHWPx","size-xl":"Container_size-xl__1X88n","vertical":"Container_vertical__Xzag9","justifyContentCenter":"Container_justifyContentCenter__t2p2K","alignItemsCenter":"Container_alignItemsCenter__gVolL","fullHeight":"Container_fullHeight__5dBZa","fullWidth":"Container_fullWidth__javSY","scrolledX":"Container_scrolledX__FFZpZ","scrolledY":"Container_scrolledY__0HKdO"};
|
|
5
|
+
styleInject(css_248z);
|
|
6
|
+
|
|
7
|
+
export { S as default };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import moment from 'moment';
|
|
3
|
+
|
|
4
|
+
function formatDate({ value, format, locale = 'en' }) {
|
|
5
|
+
const d = moment(value).locale(locale);
|
|
6
|
+
if (format) {
|
|
7
|
+
if (d[format])
|
|
8
|
+
return d[format]();
|
|
9
|
+
return d.format(format);
|
|
10
|
+
}
|
|
11
|
+
return d.toString();
|
|
12
|
+
}
|
|
13
|
+
function DateTime({ value = new Date(), format, locale }) {
|
|
14
|
+
return jsx(Fragment, { children: formatDate({ value, format, locale }) });
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export { DateTime, formatDate };
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Component } from 'react';
|
|
3
|
+
import { createStore } from 'justorm/react';
|
|
4
|
+
import cn from 'classnames';
|
|
5
|
+
import Time from 'timen';
|
|
6
|
+
import 'nanoid';
|
|
7
|
+
import '../../tools/dom.js';
|
|
8
|
+
import debounce from '../../tools/debounce.js';
|
|
9
|
+
import 'compareq';
|
|
10
|
+
import 'lodash.pick';
|
|
11
|
+
import '../../tools/queryParams.js';
|
|
12
|
+
import S from './Draggable.styl.js';
|
|
13
|
+
|
|
14
|
+
class Draggable extends Component {
|
|
15
|
+
store;
|
|
16
|
+
startPos = null;
|
|
17
|
+
draggingElem = null;
|
|
18
|
+
draggingElemBounds = null;
|
|
19
|
+
dragStartFired = false;
|
|
20
|
+
timers = Time.create();
|
|
21
|
+
constructor(props) {
|
|
22
|
+
super(props);
|
|
23
|
+
this.store = createStore(this, {
|
|
24
|
+
draggingId: null,
|
|
25
|
+
underId: null,
|
|
26
|
+
underOffset: '',
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
componentDidUpdate(prevProps) {
|
|
30
|
+
if (prevProps.items.join(',') !== this.props.items.join(',')) {
|
|
31
|
+
this.dropUnder();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
componentWillUnmount() {
|
|
35
|
+
this.timers.clear();
|
|
36
|
+
}
|
|
37
|
+
onPointerDown = e => {
|
|
38
|
+
const { clientX: x, clientY: y, currentTarget } = e;
|
|
39
|
+
e.stopPropagation();
|
|
40
|
+
this.timers.clear();
|
|
41
|
+
this.startPos = { x, y };
|
|
42
|
+
this.draggingElem = currentTarget;
|
|
43
|
+
this.draggingElemBounds = currentTarget.getBoundingClientRect();
|
|
44
|
+
document.addEventListener('pointermove', this.onPointerMove);
|
|
45
|
+
document.addEventListener('pointerup', this.onPointerUp);
|
|
46
|
+
};
|
|
47
|
+
onPointerMove = e => {
|
|
48
|
+
if (!this.draggingElem)
|
|
49
|
+
return;
|
|
50
|
+
const { clientX: x, clientY: y } = e;
|
|
51
|
+
if (!this.store.draggingId) {
|
|
52
|
+
this.store.draggingId = this.draggingElem.dataset.id;
|
|
53
|
+
}
|
|
54
|
+
if (!this.dragStartFired) {
|
|
55
|
+
this.dragStartFired = true;
|
|
56
|
+
this.props.onDragStart?.(this.store.draggingId);
|
|
57
|
+
}
|
|
58
|
+
const dx = x - this.startPos.x;
|
|
59
|
+
const dy = y - this.startPos.y;
|
|
60
|
+
this.transformInner(this.draggingElem, `translate(${dx}px, ${dy}px)`);
|
|
61
|
+
this.checkUnderElem(x, y);
|
|
62
|
+
};
|
|
63
|
+
checkUnderElem = debounce((x, y) => {
|
|
64
|
+
const underItem = document.elementFromPoint(x, y)?.closest(`.${S.item}`);
|
|
65
|
+
if (!underItem) {
|
|
66
|
+
this.store.underOffset = '';
|
|
67
|
+
this.store.underId = null;
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// @ts-ignore
|
|
71
|
+
const { id } = underItem.dataset;
|
|
72
|
+
const { draggingId, underId } = this.store;
|
|
73
|
+
if (!this.startPos || id === draggingId || id === underId)
|
|
74
|
+
return;
|
|
75
|
+
const { x: x1, y: y1 } = this.draggingElemBounds;
|
|
76
|
+
const { x: x2, y: y2 } = this.selectInner(underItem).getBoundingClientRect();
|
|
77
|
+
const dx = x1 - x2;
|
|
78
|
+
const dy = y1 - y2;
|
|
79
|
+
this.store.underOffset = `translate(${dx}px, ${dy}px)`;
|
|
80
|
+
this.store.underId = id;
|
|
81
|
+
}, 100);
|
|
82
|
+
onPointerOut = ({ target }) => {
|
|
83
|
+
const { id } = target.dataset;
|
|
84
|
+
if (!id || id === this.store.draggingId)
|
|
85
|
+
return;
|
|
86
|
+
this.transformInner(target, null);
|
|
87
|
+
this.dropUnder();
|
|
88
|
+
};
|
|
89
|
+
onPointerUp = e => {
|
|
90
|
+
const { underId, draggingId } = this.store;
|
|
91
|
+
const { onChange, onDragEnd } = this.props;
|
|
92
|
+
const { id } = this.draggingElem.dataset;
|
|
93
|
+
if (draggingId) {
|
|
94
|
+
e.stopPropagation();
|
|
95
|
+
e.preventDefault();
|
|
96
|
+
}
|
|
97
|
+
document.removeEventListener('pointermove', this.onPointerMove);
|
|
98
|
+
document.removeEventListener('pointerup', this.onPointerUp);
|
|
99
|
+
this.dragStartFired = false;
|
|
100
|
+
this.startPos = null;
|
|
101
|
+
this.store.draggingId = null;
|
|
102
|
+
if (underId && onChange) {
|
|
103
|
+
const newItems = [...this.props.items];
|
|
104
|
+
const draggingIndex = newItems.indexOf(id);
|
|
105
|
+
const underIndex = newItems.indexOf(underId);
|
|
106
|
+
newItems[underIndex] = id;
|
|
107
|
+
newItems[draggingIndex] = underId;
|
|
108
|
+
onChange(newItems);
|
|
109
|
+
}
|
|
110
|
+
this.dropUnder();
|
|
111
|
+
this.timers.after(100, () => {
|
|
112
|
+
if (this.draggingElem) {
|
|
113
|
+
this.selectInner(this.draggingElem).style.transform = null;
|
|
114
|
+
this.draggingElem = null;
|
|
115
|
+
}
|
|
116
|
+
onDragEnd?.(draggingId);
|
|
117
|
+
});
|
|
118
|
+
};
|
|
119
|
+
selectInner = elem => elem.querySelector('& > div');
|
|
120
|
+
transformInner(elem, str) {
|
|
121
|
+
if (!elem)
|
|
122
|
+
return;
|
|
123
|
+
this.selectInner(elem).style.transform = str;
|
|
124
|
+
}
|
|
125
|
+
dropUnder() {
|
|
126
|
+
this.store.underId = null;
|
|
127
|
+
this.store.underOffset = null;
|
|
128
|
+
}
|
|
129
|
+
render() {
|
|
130
|
+
const { items, className, itemClassName, renderItem, children } = this.props;
|
|
131
|
+
const { draggingId, underId, underOffset } = this.store;
|
|
132
|
+
return (jsxs("div", { className: cn(S.root, draggingId && S.dragging, className), children: [items.map(id => (jsx("div", { className: cn(S.item, itemClassName, id === draggingId && S.active), onPointerDown: this.onPointerDown, "data-id": id, children: jsx("div", { className: S.inner, style: underId === id ? { transform: underOffset } : null, children: renderItem(id, id === draggingId) }) }, id))), children] }));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export { Draggable };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import styleInject from '../../../node_modules/style-inject/dist/style-inject.es.js';
|
|
2
|
+
|
|
3
|
+
var css_248z = ".Draggable_root__S1BgI{display:flex;flex-wrap:wrap;position:relative;touch-action:none}.Draggable_item__Z1pXk{display:flex}.Draggable_inner__c4syM{height:100%;transition:transform .2s ease-out;width:100%}.Draggable_dragging__M8qhF .Draggable_active__XcFM3,.Draggable_dragging__M8qhF .Draggable_inner__c4syM{pointer-events:none}.Draggable_dragging__M8qhF .Draggable_active__XcFM3 .Draggable_inner__c4syM{transition-duration:0s;z-index:1}";
|
|
4
|
+
var S = {"root":"Draggable_root__S1BgI","item":"Draggable_item__Z1pXk","inner":"Draggable_inner__c4syM","dragging":"Draggable_dragging__M8qhF","active":"Draggable_active__XcFM3"};
|
|
5
|
+
styleInject(css_248z);
|
|
6
|
+
|
|
7
|
+
export { S as default };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useCallback, useEffect } from 'react';
|
|
3
|
+
import cn from 'classnames';
|
|
4
|
+
import { Button } from '../Button/Button.js';
|
|
5
|
+
import { Icon } from '../Icon/Icon.js';
|
|
6
|
+
import S from './Expand.styl.js';
|
|
7
|
+
|
|
8
|
+
function Expand(props) {
|
|
9
|
+
const { className, size = 'm', header, headerClassName, content, contentProps = {}, isOpen: initialOpen = false, onChange, } = props;
|
|
10
|
+
const [isOpen, setIsOpen] = useState(initialOpen);
|
|
11
|
+
const onHeaderClick = useCallback(() => {
|
|
12
|
+
const value = !isOpen;
|
|
13
|
+
setIsOpen(value);
|
|
14
|
+
onChange?.(value);
|
|
15
|
+
}, [isOpen]);
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
setIsOpen(initialOpen);
|
|
18
|
+
}, [initialOpen]);
|
|
19
|
+
return (jsxs("div", { className: cn(S.root, isOpen && S.isOpen, className), children: [jsxs(Button, { variant: "clear", className: cn(S.header, headerClassName), size: size, onClick: onHeaderClick, children: [header, "\u00A0", jsx(Icon, { type: "chevronRight", size: size, className: S.headerIcon })] }), isOpen &&
|
|
20
|
+
// @ts-ignore
|
|
21
|
+
(content?.(contentProps) || jsx("div", { ...contentProps, children: content }))] }));
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { Expand };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import styleInject from '../../../node_modules/style-inject/dist/style-inject.es.js';
|
|
2
|
+
|
|
3
|
+
var css_248z = ".Expand_root__zxSvx{display:flex;flex-direction:column}.Expand_root__zxSvx+.Expand_root__zxSvx{margin-top:var(--indent-s)}.Expand_header__LxAel{justify-content:space-between}.Expand_headerIcon__CXlwY{transition:transform .2s ease-out}.Expand_isOpen__k6lyZ .Expand_header__LxAel{background-color:var(--active-color-alpha-500)}.Expand_isOpen__k6lyZ .Expand_headerIcon__CXlwY{transform:rotate(90deg)}";
|
|
4
|
+
var S = {"root":"Expand_root__zxSvx","header":"Expand_header__LxAel","headerIcon":"Expand_headerIcon__CXlwY","isOpen":"Expand_isOpen__k6lyZ"};
|
|
5
|
+
styleInject(css_248z);
|
|
6
|
+
|
|
7
|
+
export { S as default };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import compare from 'compareq';
|
|
2
|
+
import { clone } from '../../tools/object.js';
|
|
3
|
+
|
|
4
|
+
function patchWithCustomMessages(checkRes, validationSchema) {
|
|
5
|
+
return checkRes.reduce((acc, { field, ...rest }) => {
|
|
6
|
+
const customMessage = validationSchema[field]?.message ??
|
|
7
|
+
validationSchema[field]?.messages?.[rest.type];
|
|
8
|
+
if (customMessage)
|
|
9
|
+
rest.message = customMessage;
|
|
10
|
+
return { ...acc, [field]: rest };
|
|
11
|
+
}, {});
|
|
12
|
+
}
|
|
13
|
+
function dropFocusFromSubmit() {
|
|
14
|
+
const focusedSubmit = document.querySelector('button[type=submit]:focus');
|
|
15
|
+
focusedSubmit?.blur(); // eslint-disable-line
|
|
16
|
+
}
|
|
17
|
+
function getInitialTouched(initialValues) {
|
|
18
|
+
return Object.keys(initialValues).reduce((acc, name) => ({ ...acc, [name]: false }), {});
|
|
19
|
+
}
|
|
20
|
+
function getNotEmpty(_defaultValues, values) {
|
|
21
|
+
const defaultValues = _defaultValues || values;
|
|
22
|
+
return Object.entries(values).reduce((acc, [field, val]) => compare(defaultValues[field], val) ? acc : { ...acc, [field]: true }, {});
|
|
23
|
+
}
|
|
24
|
+
function getVal(e, val, valField) {
|
|
25
|
+
if (val !== undefined)
|
|
26
|
+
return val;
|
|
27
|
+
return e?.target ? e.target[valField] : e;
|
|
28
|
+
}
|
|
29
|
+
function cloneValue(val) {
|
|
30
|
+
if (typeof val === 'object' && val !== null) {
|
|
31
|
+
// date
|
|
32
|
+
if (val?._isAMomentObject)
|
|
33
|
+
return val.clone();
|
|
34
|
+
return clone(val);
|
|
35
|
+
}
|
|
36
|
+
return val;
|
|
37
|
+
}
|
|
38
|
+
function cloneValues(values) {
|
|
39
|
+
return Object.entries(values).reduce((acc, [name, val]) => ({ ...acc, [name]: cloneValue(val) }), {});
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export { cloneValues, dropFocusFromSubmit, getInitialTouched, getNotEmpty, getVal, patchWithCustomMessages };
|