@harjs/react-ui 1.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/LICENSE +21 -0
- package/README.md +27 -0
- package/dist/assets/css/components/charts/gantt/styles.css +62 -0
- package/dist/assets/css/components/charts/pie/pie.css +90 -0
- package/dist/assets/css/components/data-display/calendar/styles.css +15 -0
- package/dist/assets/css/components/data-display/calendar/styles.week-view.css +144 -0
- package/dist/assets/css/components/data-display/card/statuses.css +377 -0
- package/dist/assets/css/components/data-display/card/styles.css +26 -0
- package/dist/assets/css/components/data-display/chip/chip.css +13 -0
- package/dist/assets/css/components/data-display/diagram/styles.css +125 -0
- package/dist/assets/css/components/data-display/divider/divider.css +8 -0
- package/dist/assets/css/components/data-display/dnd/animations.css +11 -0
- package/dist/assets/css/components/data-display/dnd/shadow.css +26 -0
- package/dist/assets/css/components/data-display/dnd/styles.css +72 -0
- package/dist/assets/css/components/data-display/grid-system/column/position.css +21 -0
- package/dist/assets/css/components/data-display/grid-system/column/styles.css +379 -0
- package/dist/assets/css/components/data-display/grid-system/row/styles.css +35 -0
- package/dist/assets/css/components/data-display/grid-system/styles.css +6 -0
- package/dist/assets/css/components/data-display/kanban-board/styles.css +371 -0
- package/dist/assets/css/components/data-display/paper/styles.css +49 -0
- package/dist/assets/css/components/data-display/syntax-highlighter/core/jsx.template.css +65 -0
- package/dist/assets/css/components/data-display/syntax-highlighter/syntax-highlighter.css +58 -0
- package/dist/assets/css/components/data-display/table/filter-popup.css +11 -0
- package/dist/assets/css/components/data-display/table/properties-popup.css +42 -0
- package/dist/assets/css/components/data-display/table/scroll.css +208 -0
- package/dist/assets/css/components/data-display/table/styles.css +867 -0
- package/dist/assets/css/components/data-display/tabs/tabs.css +245 -0
- package/dist/assets/css/components/data-display/typography/paragraph/align.css +13 -0
- package/dist/assets/css/components/data-display/typography/paragraph/color.css +51 -0
- package/dist/assets/css/components/data-display/typography/paragraph/core.css +6 -0
- package/dist/assets/css/components/data-display/typography/paragraph/size.css +13 -0
- package/dist/assets/css/components/data-display/typography/title/align.css +13 -0
- package/dist/assets/css/components/data-display/typography/title/color.css +0 -0
- package/dist/assets/css/components/data-display/typography/title/core.css +5 -0
- package/dist/assets/css/components/data-display/typography/title/size.css +41 -0
- package/dist/assets/css/components/data-display/typography/typography.css +11 -0
- package/dist/assets/css/components/feedback/alert/statuses.css +224 -0
- package/dist/assets/css/components/feedback/alert/styles.css +61 -0
- package/dist/assets/css/components/feedback/drawer/content.css +7 -0
- package/dist/assets/css/components/feedback/drawer/header.css +56 -0
- package/dist/assets/css/components/feedback/drawer/styles.css +85 -0
- package/dist/assets/css/components/feedback/loading/loading.css +54 -0
- package/dist/assets/css/components/feedback/modal/content.css +6 -0
- package/dist/assets/css/components/feedback/modal/footer.css +9 -0
- package/dist/assets/css/components/feedback/modal/header.css +56 -0
- package/dist/assets/css/components/feedback/modal/media-queries/medium.css +11 -0
- package/dist/assets/css/components/feedback/modal/media-queries/small.css +11 -0
- package/dist/assets/css/components/feedback/modal/media-queries/x-large.css +5 -0
- package/dist/assets/css/components/feedback/modal/styles.css +53 -0
- package/dist/assets/css/components/feedback/notification/notification.css +157 -0
- package/dist/assets/css/components/feedback/popover/styles.css +53 -0
- package/dist/assets/css/components/feedback/popup-confirm/styles.css +165 -0
- package/dist/assets/css/components/feedback/progress/animations.css +10 -0
- package/dist/assets/css/components/feedback/progress/progress.css +50 -0
- package/dist/assets/css/components/feedback/progress/statuses.css +188 -0
- package/dist/assets/css/components/feedback/tooltip/styles.css +60 -0
- package/dist/assets/css/components/form/button/core/icon.css +37 -0
- package/dist/assets/css/components/form/button/core/position.css +19 -0
- package/dist/assets/css/components/form/button/core/shape.css +13 -0
- package/dist/assets/css/components/form/button/core/size.css +14 -0
- package/dist/assets/css/components/form/button/styles.css +32 -0
- package/dist/assets/css/components/form/button-action/styles.css +24 -0
- package/dist/assets/css/components/form/button-group/styles.css +26 -0
- package/dist/assets/css/components/form/checkbox/checkbox.css +53 -0
- package/dist/assets/css/components/form/checkbox/core/border.css +252 -0
- package/dist/assets/css/components/form/date-picker/calendar/calendar.css +14 -0
- package/dist/assets/css/components/form/date-picker/calendar/content.css +62 -0
- package/dist/assets/css/components/form/date-picker/calendar/footer.css +10 -0
- package/dist/assets/css/components/form/date-picker/calendar/header.css +86 -0
- package/dist/assets/css/components/form/date-picker/clock/clock.css +14 -0
- package/dist/assets/css/components/form/date-picker/clock/content.css +48 -0
- package/dist/assets/css/components/form/date-picker/clock/footer.css +6 -0
- package/dist/assets/css/components/form/date-picker/clock/header.css +8 -0
- package/dist/assets/css/components/form/date-picker/date-picker.css +36 -0
- package/dist/assets/css/components/form/input/core/addon.css +11 -0
- package/dist/assets/css/components/form/input/core/border.css +114 -0
- package/dist/assets/css/components/form/input/core/button.css +34 -0
- package/dist/assets/css/components/form/input/core/icon.css +22 -0
- package/dist/assets/css/components/form/input/otp/styles.css +20 -0
- package/dist/assets/css/components/form/input/phone/styles.css +50 -0
- package/dist/assets/css/components/form/input/styles.css +120 -0
- package/dist/assets/css/components/form/radio/core/border.css +252 -0
- package/dist/assets/css/components/form/radio/radio.css +69 -0
- package/dist/assets/css/components/form/select/options.css +117 -0
- package/dist/assets/css/components/form/select/styles.css +184 -0
- package/dist/assets/css/components/form/switch/core/border.css +208 -0
- package/dist/assets/css/components/form/switch/styles.css +61 -0
- package/dist/assets/css/components/form/text-editor/styles.css +130 -0
- package/dist/assets/css/components/form/upload/dropzone.css +166 -0
- package/dist/assets/css/components/form/upload/list-and-gird.css +183 -0
- package/dist/assets/css/components/form/upload/styles.css +215 -0
- package/dist/assets/css/components/layout/layout.css +130 -0
- package/dist/assets/css/components/layout/media-queries/large.css +19 -0
- package/dist/assets/css/components/layout/media-queries/medium.css +19 -0
- package/dist/assets/css/components/layout/media-queries/small.css +19 -0
- package/dist/assets/css/components/layout/media-queries/x-large.css +19 -0
- package/dist/assets/css/components/layout/media-queries/x-small.css +3 -0
- package/dist/assets/css/components/layout/media-queries/xx-large.css +19 -0
- package/dist/assets/css/components/layout/media-queries/xxx-large.css +20 -0
- package/dist/assets/css/components/navigation/breadcrumb/styles.css +0 -0
- package/dist/assets/css/components/navigation/menu/core/open-or-close.css +12 -0
- package/dist/assets/css/components/navigation/menu/styles.css +163 -0
- package/dist/assets/css/components/navigation/menu/variant/horizontal.css +3 -0
- package/dist/assets/css/components/navigation/menu/variant/vertical.css +3 -0
- package/dist/assets/css/components/navigation/pagination/styles.css +169 -0
- package/dist/assets/css/components/navigation/steps/animation.css +8 -0
- package/dist/assets/css/components/navigation/steps/styles.css +146 -0
- package/dist/assets/css/core/animation.css +164 -0
- package/dist/assets/css/core/ar-core.css +192 -0
- package/dist/assets/css/core/color-palette.css +111 -0
- package/dist/assets/css/core/utils.css +16 -0
- package/dist/assets/css/core/variants/animation.css +164 -0
- package/dist/assets/css/core/variants/border.css +18 -0
- package/dist/assets/css/core/variants/borderless.css +362 -0
- package/dist/assets/css/core/variants/dashed.css +362 -0
- package/dist/assets/css/core/variants/filled.css +428 -0
- package/dist/assets/css/core/variants/outlined.css +439 -0
- package/dist/assets/css/core/variants/surface.css +252 -0
- package/dist/assets/fonts/JetBrainsMono-Bold.ttf +0 -0
- package/dist/assets/fonts/JetBrainsMono-Regular.ttf +0 -0
- package/dist/components/charts/gantt/IProps.d.ts +24 -0
- package/dist/components/charts/gantt/IProps.js +1 -0
- package/dist/components/charts/gantt/index.d.ts +5 -0
- package/dist/components/charts/gantt/index.js +308 -0
- package/dist/components/charts/index.d.ts +2 -0
- package/dist/components/charts/index.js +2 -0
- package/dist/components/charts/pie/IProps.d.ts +7 -0
- package/dist/components/charts/pie/IProps.js +1 -0
- package/dist/components/charts/pie/index.d.ts +5 -0
- package/dist/components/charts/pie/index.js +56 -0
- package/dist/components/data-display/calendar/Body.d.ts +23 -0
- package/dist/components/data-display/calendar/Body.js +14 -0
- package/dist/components/data-display/calendar/Header.d.ts +20 -0
- package/dist/components/data-display/calendar/Header.js +26 -0
- package/dist/components/data-display/calendar/IProps.d.ts +14 -0
- package/dist/components/data-display/calendar/IProps.js +1 -0
- package/dist/components/data-display/calendar/index.d.ts +8 -0
- package/dist/components/data-display/calendar/index.js +27 -0
- package/dist/components/data-display/calendar/views/Day.d.ts +3 -0
- package/dist/components/data-display/calendar/views/Day.js +5 -0
- package/dist/components/data-display/calendar/views/Month.d.ts +3 -0
- package/dist/components/data-display/calendar/views/Month.js +5 -0
- package/dist/components/data-display/calendar/views/Week.d.ts +19 -0
- package/dist/components/data-display/calendar/views/Week.js +173 -0
- package/dist/components/data-display/card/IProps.d.ts +10 -0
- package/dist/components/data-display/card/IProps.js +1 -0
- package/dist/components/data-display/card/index.d.ts +5 -0
- package/dist/components/data-display/card/index.js +14 -0
- package/dist/components/data-display/chip/IProps.d.ts +6 -0
- package/dist/components/data-display/chip/IProps.js +1 -0
- package/dist/components/data-display/chip/index.d.ts +5 -0
- package/dist/components/data-display/chip/index.js +17 -0
- package/dist/components/data-display/diagram/IProps.d.ts +6 -0
- package/dist/components/data-display/diagram/IProps.js +1 -0
- package/dist/components/data-display/diagram/index.d.ts +5 -0
- package/dist/components/data-display/diagram/index.js +298 -0
- package/dist/components/data-display/divider/IProps.d.ts +6 -0
- package/dist/components/data-display/divider/IProps.js +1 -0
- package/dist/components/data-display/divider/index.d.ts +5 -0
- package/dist/components/data-display/divider/index.js +5 -0
- package/dist/components/data-display/dnd/IProps.d.ts +12 -0
- package/dist/components/data-display/dnd/IProps.js +1 -0
- package/dist/components/data-display/dnd/index.d.ts +5 -0
- package/dist/components/data-display/dnd/index.js +125 -0
- package/dist/components/data-display/grid-system/box/Box.d.ts +6 -0
- package/dist/components/data-display/grid-system/box/Box.js +13 -0
- package/dist/components/data-display/grid-system/column/Column.d.ts +4 -0
- package/dist/components/data-display/grid-system/column/Column.js +21 -0
- package/dist/components/data-display/grid-system/column/IProps.d.ts +13 -0
- package/dist/components/data-display/grid-system/column/IProps.js +1 -0
- package/dist/components/data-display/grid-system/index.d.ts +10 -0
- package/dist/components/data-display/grid-system/index.js +11 -0
- package/dist/components/data-display/grid-system/row/IProps.d.ts +4 -0
- package/dist/components/data-display/grid-system/row/IProps.js +1 -0
- package/dist/components/data-display/grid-system/row/Row.d.ts +4 -0
- package/dist/components/data-display/grid-system/row/Row.js +6 -0
- package/dist/components/data-display/kanban-board/IProps.d.ts +31 -0
- package/dist/components/data-display/kanban-board/IProps.js +1 -0
- package/dist/components/data-display/kanban-board/filter/DateFilters.d.ts +25 -0
- package/dist/components/data-display/kanban-board/filter/DateFilters.js +55 -0
- package/dist/components/data-display/kanban-board/filter/SelectFilters.d.ts +27 -0
- package/dist/components/data-display/kanban-board/filter/SelectFilters.js +43 -0
- package/dist/components/data-display/kanban-board/filter/index.d.ts +36 -0
- package/dist/components/data-display/kanban-board/filter/index.js +47 -0
- package/dist/components/data-display/kanban-board/index.d.ts +5 -0
- package/dist/components/data-display/kanban-board/index.js +309 -0
- package/dist/components/data-display/paper/IProps.d.ts +6 -0
- package/dist/components/data-display/paper/IProps.js +1 -0
- package/dist/components/data-display/paper/index.d.ts +5 -0
- package/dist/components/data-display/paper/index.js +12 -0
- package/dist/components/data-display/syntax-highlighter/Import.d.ts +4 -0
- package/dist/components/data-display/syntax-highlighter/Import.js +5 -0
- package/dist/components/data-display/syntax-highlighter/classes/Compiler.d.ts +7 -0
- package/dist/components/data-display/syntax-highlighter/classes/Compiler.js +92 -0
- package/dist/components/data-display/syntax-highlighter/classes/Parser.d.ts +9 -0
- package/dist/components/data-display/syntax-highlighter/classes/Parser.js +99 -0
- package/dist/components/data-display/syntax-highlighter/index.d.ts +11 -0
- package/dist/components/data-display/syntax-highlighter/index.js +41 -0
- package/dist/components/data-display/table/FilterPopup.d.ts +20 -0
- package/dist/components/data-display/table/FilterPopup.js +54 -0
- package/dist/components/data-display/table/Helpers.d.ts +2 -0
- package/dist/components/data-display/table/Helpers.js +10 -0
- package/dist/components/data-display/table/IProps.d.ts +99 -0
- package/dist/components/data-display/table/IProps.js +1 -0
- package/dist/components/data-display/table/PropertiesPopup.d.ts +31 -0
- package/dist/components/data-display/table/PropertiesPopup.js +90 -0
- package/dist/components/data-display/table/THeadCell.d.ts +34 -0
- package/dist/components/data-display/table/THeadCell.js +67 -0
- package/dist/components/data-display/table/body/Editable.d.ts +12 -0
- package/dist/components/data-display/table/body/Editable.js +59 -0
- package/dist/components/data-display/table/body/TBody.d.ts +36 -0
- package/dist/components/data-display/table/body/TBody.js +184 -0
- package/dist/components/data-display/table/header/ActionButtons.d.ts +14 -0
- package/dist/components/data-display/table/header/ActionButtons.js +65 -0
- package/dist/components/data-display/table/header/Header.d.ts +15 -0
- package/dist/components/data-display/table/header/Header.js +10 -0
- package/dist/components/data-display/table/index.d.ts +7 -0
- package/dist/components/data-display/table/index.js +639 -0
- package/dist/components/data-display/tabs/IProps.d.ts +9 -0
- package/dist/components/data-display/tabs/IProps.js +1 -0
- package/dist/components/data-display/tabs/index.d.ts +5 -0
- package/dist/components/data-display/tabs/index.js +110 -0
- package/dist/components/data-display/tabs/skeleton.d.ts +4 -0
- package/dist/components/data-display/tabs/skeleton.js +14 -0
- package/dist/components/data-display/typography/index.d.ts +6 -0
- package/dist/components/data-display/typography/index.js +9 -0
- package/dist/components/data-display/typography/paragraph/IProps.d.ts +7 -0
- package/dist/components/data-display/typography/paragraph/IProps.js +1 -0
- package/dist/components/data-display/typography/paragraph/Paragraph.d.ts +4 -0
- package/dist/components/data-display/typography/paragraph/Paragraph.js +14 -0
- package/dist/components/data-display/typography/title/IProps.d.ts +7 -0
- package/dist/components/data-display/typography/title/IProps.js +1 -0
- package/dist/components/data-display/typography/title/Title.d.ts +4 -0
- package/dist/components/data-display/typography/title/Title.js +13 -0
- package/dist/components/feedback/alert/IProps.d.ts +11 -0
- package/dist/components/feedback/alert/IProps.js +1 -0
- package/dist/components/feedback/alert/index.d.ts +5 -0
- package/dist/components/feedback/alert/index.js +50 -0
- package/dist/components/feedback/drawer/IProps.d.ts +18 -0
- package/dist/components/feedback/drawer/IProps.js +1 -0
- package/dist/components/feedback/drawer/index.d.ts +5 -0
- package/dist/components/feedback/drawer/index.js +94 -0
- package/dist/components/feedback/loading/index.d.ts +4 -0
- package/dist/components/feedback/loading/index.js +7 -0
- package/dist/components/feedback/modal/IProps.d.ts +14 -0
- package/dist/components/feedback/modal/IProps.js +1 -0
- package/dist/components/feedback/modal/index.d.ts +5 -0
- package/dist/components/feedback/modal/index.js +91 -0
- package/dist/components/feedback/notification/IProps.d.ts +9 -0
- package/dist/components/feedback/notification/IProps.js +1 -0
- package/dist/components/feedback/notification/index.d.ts +5 -0
- package/dist/components/feedback/notification/index.js +96 -0
- package/dist/components/feedback/popover/IProps.d.ts +16 -0
- package/dist/components/feedback/popover/IProps.js +1 -0
- package/dist/components/feedback/popover/index.d.ts +5 -0
- package/dist/components/feedback/popover/index.js +91 -0
- package/dist/components/feedback/popup-confirm/IProps.d.ts +10 -0
- package/dist/components/feedback/popup-confirm/IProps.js +1 -0
- package/dist/components/feedback/popup-confirm/index.d.ts +5 -0
- package/dist/components/feedback/popup-confirm/index.js +98 -0
- package/dist/components/feedback/progress/IProps.d.ts +6 -0
- package/dist/components/feedback/progress/IProps.js +1 -0
- package/dist/components/feedback/progress/index.d.ts +5 -0
- package/dist/components/feedback/progress/index.js +26 -0
- package/dist/components/feedback/tooltip/IProps.d.ts +6 -0
- package/dist/components/feedback/tooltip/IProps.js +1 -0
- package/dist/components/feedback/tooltip/index.d.ts +5 -0
- package/dist/components/feedback/tooltip/index.js +129 -0
- package/dist/components/form/button/IProps.d.ts +10 -0
- package/dist/components/form/button/IProps.js +1 -0
- package/dist/components/form/button/index.d.ts +5 -0
- package/dist/components/form/button/index.js +41 -0
- package/dist/components/form/button-action/IProps.d.ts +8 -0
- package/dist/components/form/button-action/IProps.js +1 -0
- package/dist/components/form/button-action/index.d.ts +5 -0
- package/dist/components/form/button-action/index.js +68 -0
- package/dist/components/form/button-group/index.d.ts +7 -0
- package/dist/components/form/button-group/index.js +31 -0
- package/dist/components/form/checkbox/IProps.d.ts +5 -0
- package/dist/components/form/checkbox/IProps.js +1 -0
- package/dist/components/form/checkbox/index.d.ts +5 -0
- package/dist/components/form/checkbox/index.js +24 -0
- package/dist/components/form/date-picker/DATE.d.ts +12 -0
- package/dist/components/form/date-picker/DATE.js +27 -0
- package/dist/components/form/date-picker/Props.d.ts +10 -0
- package/dist/components/form/date-picker/Props.js +1 -0
- package/dist/components/form/date-picker/index.d.ts +5 -0
- package/dist/components/form/date-picker/index.js +365 -0
- package/dist/components/form/input/IProps.d.ts +12 -0
- package/dist/components/form/input/IProps.js +1 -0
- package/dist/components/form/input/decimal/Decimal.d.ts +4 -0
- package/dist/components/form/input/decimal/Decimal.js +54 -0
- package/dist/components/form/input/decimal/IProps.d.ts +8 -0
- package/dist/components/form/input/decimal/IProps.js +1 -0
- package/dist/components/form/input/formatted-decimal/FormattedDecimal.d.ts +4 -0
- package/dist/components/form/input/formatted-decimal/FormattedDecimal.js +73 -0
- package/dist/components/form/input/formatted-decimal/IProps.d.ts +12 -0
- package/dist/components/form/input/formatted-decimal/IProps.js +1 -0
- package/dist/components/form/input/index.d.ts +15 -0
- package/dist/components/form/input/index.js +152 -0
- package/dist/components/form/input/otp/IProps.d.ts +6 -0
- package/dist/components/form/input/otp/IProps.js +1 -0
- package/dist/components/form/input/otp/Otp.d.ts +7 -0
- package/dist/components/form/input/otp/Otp.js +122 -0
- package/dist/components/form/input/phone/IProps.d.ts +11 -0
- package/dist/components/form/input/phone/IProps.js +1 -0
- package/dist/components/form/input/phone/Phone.d.ts +4 -0
- package/dist/components/form/input/phone/Phone.js +41 -0
- package/dist/components/form/radio/IProps.d.ts +12 -0
- package/dist/components/form/radio/IProps.js +1 -0
- package/dist/components/form/radio/index.d.ts +5 -0
- package/dist/components/form/radio/index.js +38 -0
- package/dist/components/form/select/Props.d.ts +35 -0
- package/dist/components/form/select/Props.js +1 -0
- package/dist/components/form/select/index.d.ts +5 -0
- package/dist/components/form/select/index.js +312 -0
- package/dist/components/form/switch/IProps.d.ts +5 -0
- package/dist/components/form/switch/IProps.js +1 -0
- package/dist/components/form/switch/index.d.ts +5 -0
- package/dist/components/form/switch/index.js +36 -0
- package/dist/components/form/text-editor/IProps.d.ts +18 -0
- package/dist/components/form/text-editor/IProps.js +1 -0
- package/dist/components/form/text-editor/index.d.ts +5 -0
- package/dist/components/form/text-editor/index.js +300 -0
- package/dist/components/form/upload/Buttons.d.ts +8 -0
- package/dist/components/form/upload/Buttons.js +27 -0
- package/dist/components/form/upload/Dropzone.d.ts +10 -0
- package/dist/components/form/upload/Dropzone.js +55 -0
- package/dist/components/form/upload/List.d.ts +12 -0
- package/dist/components/form/upload/List.js +21 -0
- package/dist/components/form/upload/Props.d.ts +16 -0
- package/dist/components/form/upload/Props.js +1 -0
- package/dist/components/form/upload/index.d.ts +9 -0
- package/dist/components/form/upload/index.js +184 -0
- package/dist/components/icons/Compiler.d.ts +9 -0
- package/dist/components/icons/Compiler.js +156 -0
- package/dist/components/icons/index.d.ts +10 -0
- package/dist/components/icons/index.js +6 -0
- package/dist/components/layout/Footer.d.ts +3 -0
- package/dist/components/layout/Footer.js +8 -0
- package/dist/components/layout/Header.d.ts +4 -0
- package/dist/components/layout/Header.js +8 -0
- package/dist/components/layout/IProps.d.ts +20 -0
- package/dist/components/layout/IProps.js +1 -0
- package/dist/components/layout/LSider.d.ts +4 -0
- package/dist/components/layout/LSider.js +53 -0
- package/dist/components/layout/Main.d.ts +4 -0
- package/dist/components/layout/Main.js +4 -0
- package/dist/components/layout/RSider.d.ts +3 -0
- package/dist/components/layout/RSider.js +13 -0
- package/dist/components/layout/Section.d.ts +4 -0
- package/dist/components/layout/Section.js +10 -0
- package/dist/components/layout/index.d.ts +12 -0
- package/dist/components/layout/index.js +32 -0
- package/dist/components/navigation/breadcrumb/IProps.d.ts +3 -0
- package/dist/components/navigation/breadcrumb/IProps.js +1 -0
- package/dist/components/navigation/breadcrumb/index.d.ts +5 -0
- package/dist/components/navigation/breadcrumb/index.js +8 -0
- package/dist/components/navigation/menu/IProps.d.ts +14 -0
- package/dist/components/navigation/menu/IProps.js +1 -0
- package/dist/components/navigation/menu/index.d.ts +5 -0
- package/dist/components/navigation/menu/index.js +89 -0
- package/dist/components/navigation/pagination/IProps.d.ts +8 -0
- package/dist/components/navigation/pagination/IProps.js +1 -0
- package/dist/components/navigation/pagination/index.d.ts +5 -0
- package/dist/components/navigation/pagination/index.js +74 -0
- package/dist/components/navigation/steps/IProps.d.ts +16 -0
- package/dist/components/navigation/steps/IProps.js +1 -0
- package/dist/components/navigation/steps/index.d.ts +5 -0
- package/dist/components/navigation/steps/index.js +102 -0
- package/dist/libs/core/application/contexts/Config.d.ts +26 -0
- package/dist/libs/core/application/contexts/Config.js +20 -0
- package/dist/libs/core/application/contexts/Language.d.ts +7 -0
- package/dist/libs/core/application/contexts/Language.js +7 -0
- package/dist/libs/core/application/contexts/Loading.d.ts +11 -0
- package/dist/libs/core/application/contexts/Loading.js +13 -0
- package/dist/libs/core/application/contexts/Notification.d.ts +25 -0
- package/dist/libs/core/application/contexts/Notification.js +29 -0
- package/dist/libs/core/application/contexts/index.d.ts +5 -0
- package/dist/libs/core/application/contexts/index.js +5 -0
- package/dist/libs/core/application/hooks/index.d.ts +41 -0
- package/dist/libs/core/application/hooks/index.js +17 -0
- package/dist/libs/core/application/hooks/useNotification.d.ts +16 -0
- package/dist/libs/core/application/hooks/useNotification.js +23 -0
- package/dist/libs/core/application/hooks/useTranslation.d.ts +9 -0
- package/dist/libs/core/application/hooks/useTranslation.js +25 -0
- package/dist/libs/core/application/hooks/useValidation.d.ts +7 -0
- package/dist/libs/core/application/hooks/useValidation.js +151 -0
- package/dist/libs/core/application/locales/index.d.ts +4 -0
- package/dist/libs/core/application/locales/index.js +3 -0
- package/dist/libs/core/application/locales/kanban-board/IKanbanBoardLocale.d.ts +5 -0
- package/dist/libs/core/application/locales/kanban-board/IKanbanBoardLocale.js +1 -0
- package/dist/libs/core/application/locales/kanban-board/en.d.ts +3 -0
- package/dist/libs/core/application/locales/kanban-board/en.js +5 -0
- package/dist/libs/core/application/locales/kanban-board/tr.d.ts +3 -0
- package/dist/libs/core/application/locales/kanban-board/tr.js +5 -0
- package/dist/libs/core/application/locales/notification/INotificationLocale.d.ts +59 -0
- package/dist/libs/core/application/locales/notification/INotificationLocale.js +1 -0
- package/dist/libs/core/application/locales/notification/en.d.ts +3 -0
- package/dist/libs/core/application/locales/notification/en.js +85 -0
- package/dist/libs/core/application/locales/notification/tr.d.ts +3 -0
- package/dist/libs/core/application/locales/notification/tr.js +85 -0
- package/dist/libs/core/application/locales/table/ITableLocale.d.ts +18 -0
- package/dist/libs/core/application/locales/table/ITableLocale.js +1 -0
- package/dist/libs/core/application/locales/table/en.d.ts +3 -0
- package/dist/libs/core/application/locales/table/en.js +22 -0
- package/dist/libs/core/application/locales/table/tr.d.ts +3 -0
- package/dist/libs/core/application/locales/table/tr.js +22 -0
- package/dist/libs/infrastructure/shared/DATE.d.ts +74 -0
- package/dist/libs/infrastructure/shared/DATE.js +148 -0
- package/dist/libs/infrastructure/shared/Enums.d.ts +18 -0
- package/dist/libs/infrastructure/shared/Enums.js +21 -0
- package/dist/libs/infrastructure/shared/NUMBER.d.ts +8 -0
- package/dist/libs/infrastructure/shared/NUMBER.js +10 -0
- package/dist/libs/infrastructure/shared/PHONE.d.ts +8 -0
- package/dist/libs/infrastructure/shared/PHONE.js +126 -0
- package/dist/libs/infrastructure/shared/Utils.d.ts +20 -0
- package/dist/libs/infrastructure/shared/Utils.js +349 -0
- package/dist/libs/infrastructure/shared/_old_DATE.d.ts +28 -0
- package/dist/libs/infrastructure/shared/_old_DATE.js +68 -0
- package/dist/libs/infrastructure/types/IGlobalProps.d.ts +183 -0
- package/dist/libs/infrastructure/types/IGlobalProps.js +1 -0
- package/dist/libs/infrastructure/types/index.d.ts +155 -0
- package/dist/libs/infrastructure/types/index.js +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import React, { useCallback, useEffect, useRef, useState } from "react";
|
|
3
|
+
import "../../../assets/css/components/data-display/kanban-board/styles.css";
|
|
4
|
+
import DnD from "../dnd";
|
|
5
|
+
import { ARIcon } from "../../icons";
|
|
6
|
+
import Filter from "./filter";
|
|
7
|
+
const KanbanBoard = function ({ trackBy, columns, onChange, onLazyLoad, config, }) {
|
|
8
|
+
// refs
|
|
9
|
+
const _kanbanWrapper = useRef(null);
|
|
10
|
+
const _kanbanItems = useRef({});
|
|
11
|
+
const _hoverItemIndex = useRef(null);
|
|
12
|
+
const _isProgrammaticScroll = useRef(false);
|
|
13
|
+
const _scrollInterval = useRef(null);
|
|
14
|
+
const _scrollAnimationFrame = useRef(null);
|
|
15
|
+
const _scrollSpeedRef = useRef(0);
|
|
16
|
+
const _lastScrollTop = useRef(0);
|
|
17
|
+
const _lastRequest = useRef("");
|
|
18
|
+
// states
|
|
19
|
+
const [data, setData] = useState([]);
|
|
20
|
+
// states -> Lazy Load
|
|
21
|
+
const [query, setQuery] = useState(null);
|
|
22
|
+
const [perPage] = useState(config?.perPage ?? 10);
|
|
23
|
+
const [currentPage, setCurrentPage] = useState(1);
|
|
24
|
+
// states -> Filters
|
|
25
|
+
const [search, setSearch] = useState(null);
|
|
26
|
+
const [selectFilters, setSelectFilters] = useState({});
|
|
27
|
+
const [selectedFilters, setSelectedFilters] = useState({});
|
|
28
|
+
const [dateFilters, setDateFilters] = useState({});
|
|
29
|
+
// methods
|
|
30
|
+
const handleBoardDragOver = (event) => {
|
|
31
|
+
event.preventDefault();
|
|
32
|
+
const kanbanWrapper = _kanbanWrapper.current;
|
|
33
|
+
if (!kanbanWrapper)
|
|
34
|
+
return;
|
|
35
|
+
const rect = kanbanWrapper.getBoundingClientRect();
|
|
36
|
+
const mouseX = event.clientX;
|
|
37
|
+
const edgeThreshold = 100; // px olarak kenar hassasiyeti.
|
|
38
|
+
if (mouseX - rect.left < edgeThreshold) {
|
|
39
|
+
// sol kenara yaklaştı.
|
|
40
|
+
_scrollSpeedRef.current = -Math.max(1, (edgeThreshold - (mouseX - rect.left)) / 2);
|
|
41
|
+
}
|
|
42
|
+
else if (rect.right - mouseX < edgeThreshold) {
|
|
43
|
+
// sağ kenara yaklaştı.
|
|
44
|
+
_scrollSpeedRef.current = Math.max(1, (edgeThreshold - (rect.right - mouseX)) / 2);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
_scrollSpeedRef.current = 0;
|
|
48
|
+
}
|
|
49
|
+
if (!_scrollAnimationFrame.current) {
|
|
50
|
+
const scrollLoop = () => {
|
|
51
|
+
if (kanbanWrapper && _scrollSpeedRef.current !== 0) {
|
|
52
|
+
kanbanWrapper.scrollLeft += _scrollSpeedRef.current;
|
|
53
|
+
}
|
|
54
|
+
_scrollAnimationFrame.current = requestAnimationFrame(scrollLoop);
|
|
55
|
+
};
|
|
56
|
+
scrollLoop();
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
const handleDrop = (toColumn) => (event) => {
|
|
60
|
+
event.preventDefault();
|
|
61
|
+
const item = JSON.parse(event.dataTransfer.getData("item"));
|
|
62
|
+
const fromColumn = event.dataTransfer.getData("fromColumn");
|
|
63
|
+
const nodes = document.querySelectorAll("[data-id='placeholder']");
|
|
64
|
+
nodes.forEach((node) => node.remove());
|
|
65
|
+
if (!item || fromColumn === toColumn)
|
|
66
|
+
return;
|
|
67
|
+
const updatedColumns = data.map((board) => {
|
|
68
|
+
if (board.key === fromColumn) {
|
|
69
|
+
return {
|
|
70
|
+
...board,
|
|
71
|
+
items: board.items.filter((_item) => trackBy(_item) !== trackBy(item)),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
if (board.key === toColumn) {
|
|
75
|
+
const boardItems = [...board.items];
|
|
76
|
+
const safeIndex = Math.min(_hoverItemIndex.current ?? Infinity, boardItems.length); // son elemandan fazla olmasın.
|
|
77
|
+
boardItems.splice(safeIndex, 0, item);
|
|
78
|
+
onChange?.(item, board.key, board.columnProperties, safeIndex);
|
|
79
|
+
return {
|
|
80
|
+
...board,
|
|
81
|
+
items: boardItems,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return board;
|
|
85
|
+
});
|
|
86
|
+
setData(updatedColumns);
|
|
87
|
+
// Temizlik
|
|
88
|
+
event.dataTransfer.clearData("item");
|
|
89
|
+
event.dataTransfer.clearData("fromColumn");
|
|
90
|
+
_hoverItemIndex.current = null;
|
|
91
|
+
};
|
|
92
|
+
const handleItemsDragOver = (event) => {
|
|
93
|
+
event.preventDefault();
|
|
94
|
+
const item = event.currentTarget;
|
|
95
|
+
if (!item.classList.contains("dragging"))
|
|
96
|
+
item.classList.add("dragging");
|
|
97
|
+
};
|
|
98
|
+
const handleItemsDragLeave = (event) => {
|
|
99
|
+
event.preventDefault();
|
|
100
|
+
const item = event.currentTarget;
|
|
101
|
+
const rect = item.getBoundingClientRect();
|
|
102
|
+
const { clientX, clientY } = event;
|
|
103
|
+
const isInside = clientX >= rect.left && clientX <= rect.right && clientY >= rect.top && clientY <= rect.bottom;
|
|
104
|
+
if (!isInside && item.classList.contains("dragging")) {
|
|
105
|
+
item.classList.remove("dragging");
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
const handleItemsDrop = (event) => {
|
|
109
|
+
event.preventDefault();
|
|
110
|
+
const item = event.currentTarget;
|
|
111
|
+
if (item.classList.contains("dragging"))
|
|
112
|
+
item.classList.remove("dragging");
|
|
113
|
+
};
|
|
114
|
+
const handleLazyLoadScroll = useCallback((event) => {
|
|
115
|
+
const target = event.currentTarget;
|
|
116
|
+
const { scrollTop, scrollHeight, clientHeight } = target;
|
|
117
|
+
if (_isProgrammaticScroll.current) {
|
|
118
|
+
if (scrollTop <= 5)
|
|
119
|
+
_isProgrammaticScroll.current = false;
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const isScrollingDown = scrollTop > _lastScrollTop.current;
|
|
123
|
+
_lastScrollTop.current = scrollTop;
|
|
124
|
+
if (!isScrollingDown)
|
|
125
|
+
return;
|
|
126
|
+
const isBottom = scrollHeight - scrollTop <= clientHeight;
|
|
127
|
+
if (isBottom)
|
|
128
|
+
setCurrentPage((prev) => prev + 1);
|
|
129
|
+
}, []);
|
|
130
|
+
const handleStartScroll = (direction) => {
|
|
131
|
+
const el = _kanbanWrapper.current;
|
|
132
|
+
if (!el)
|
|
133
|
+
return;
|
|
134
|
+
handleStopScroll();
|
|
135
|
+
_scrollInterval.current = window.setInterval(() => {
|
|
136
|
+
el.scrollLeft += direction === "left" ? -10 : 10;
|
|
137
|
+
}, 16); // ~60fps
|
|
138
|
+
};
|
|
139
|
+
const handleStopScroll = () => {
|
|
140
|
+
if (_scrollInterval.current) {
|
|
141
|
+
clearInterval(_scrollInterval.current);
|
|
142
|
+
_scrollInterval.current = null;
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
const stopScrolling = () => {
|
|
146
|
+
if (_scrollAnimationFrame.current) {
|
|
147
|
+
cancelAnimationFrame(_scrollAnimationFrame.current);
|
|
148
|
+
_scrollAnimationFrame.current = null;
|
|
149
|
+
}
|
|
150
|
+
_scrollSpeedRef.current = 0;
|
|
151
|
+
};
|
|
152
|
+
const darkenColor = (hex, percent) => {
|
|
153
|
+
let num = parseInt(hex.slice(1), 16), amt = Math.round(2.55 * percent), R = (num >> 16) - amt, G = ((num >> 8) & 0x00ff) - amt, B = (num & 0x0000ff) - amt;
|
|
154
|
+
return ("#" +
|
|
155
|
+
(0x1000000 +
|
|
156
|
+
(R < 255 ? (R < 0 ? 0 : R) : 255) * 0x10000 +
|
|
157
|
+
(G < 255 ? (G < 0 ? 0 : G) : 255) * 0x100 +
|
|
158
|
+
(B < 255 ? (B < 0 ? 0 : B) : 255))
|
|
159
|
+
.toString(16)
|
|
160
|
+
.slice(1));
|
|
161
|
+
};
|
|
162
|
+
// useEffects
|
|
163
|
+
useEffect(() => {
|
|
164
|
+
let _data = columns.map((col) => ({
|
|
165
|
+
...col,
|
|
166
|
+
items: [...col.items],
|
|
167
|
+
}));
|
|
168
|
+
setData(_data);
|
|
169
|
+
const selectMap = new Map();
|
|
170
|
+
const dateMap = new Map();
|
|
171
|
+
columns.forEach((col) => {
|
|
172
|
+
col.items.forEach((item) => {
|
|
173
|
+
const keys = config?.filter?.keys(item);
|
|
174
|
+
keys?.forEach((k) => {
|
|
175
|
+
if (k.type === "select") {
|
|
176
|
+
if (!selectMap.has(k.name))
|
|
177
|
+
selectMap.set(k.name, new Set());
|
|
178
|
+
selectMap.get(k.name).add(k.value ?? null);
|
|
179
|
+
}
|
|
180
|
+
if (k.type === "date")
|
|
181
|
+
dateMap.set(k.name, true);
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
setSelectFilters(Object.fromEntries(Array.from(selectMap.entries()).map(([name, set]) => [name, Array.from(set)])));
|
|
186
|
+
setDateFilters((prev) => {
|
|
187
|
+
const next = { ...prev };
|
|
188
|
+
Array.from(dateMap.keys()).forEach((name) => {
|
|
189
|
+
if (!next[name]) {
|
|
190
|
+
next[name] = { from: null, to: null };
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
return next;
|
|
194
|
+
});
|
|
195
|
+
}, [columns]);
|
|
196
|
+
const _prevFilters = useRef(JSON.stringify({ search, selectedFilters, dateFilters }));
|
|
197
|
+
useEffect(() => {
|
|
198
|
+
const normalizedFilters = JSON.stringify({
|
|
199
|
+
search,
|
|
200
|
+
selectedFilters: Object.fromEntries(Object.entries(selectedFilters).map(([k, v]) => [k, Array.from(v).sort()])),
|
|
201
|
+
dateFilters,
|
|
202
|
+
});
|
|
203
|
+
const hasSelectedFilters = Object.values(selectedFilters).some((set) => set.size > 0);
|
|
204
|
+
const hasDateFilters = Object.values(dateFilters).some((r) => r.from || r.to);
|
|
205
|
+
// Page reset + Scroll logic.
|
|
206
|
+
if (_prevFilters.current !== normalizedFilters) {
|
|
207
|
+
setCurrentPage(1);
|
|
208
|
+
_prevFilters.current = normalizedFilters;
|
|
209
|
+
if (_kanbanWrapper.current) {
|
|
210
|
+
_isProgrammaticScroll.current = true;
|
|
211
|
+
_kanbanWrapper.current.scrollTo({
|
|
212
|
+
top: 0,
|
|
213
|
+
left: 0,
|
|
214
|
+
behavior: "smooth",
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
// Query Build Logic.
|
|
219
|
+
if (!search && !hasSelectedFilters && !hasDateFilters) {
|
|
220
|
+
setQuery(null);
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
const sampleItem = columns?.[0]?.items?.[0];
|
|
224
|
+
const keys = config?.filter?.keys(sampleItem) ?? [];
|
|
225
|
+
const keyMap = Object.fromEntries(keys.map((k) => [k.name, k.key]));
|
|
226
|
+
const dateQuery = Object.entries(dateFilters).reduce((acc, [name, range]) => {
|
|
227
|
+
if (range.from || range.to) {
|
|
228
|
+
const technicalKey = keyMap[name] || name;
|
|
229
|
+
acc[technicalKey] = {
|
|
230
|
+
from: range.from,
|
|
231
|
+
to: range.to,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
return acc;
|
|
235
|
+
}, {});
|
|
236
|
+
const selectQuery = Object.entries(selectedFilters).reduce((acc, [name, set]) => {
|
|
237
|
+
if (set.size > 0) {
|
|
238
|
+
const technicalKey = keyMap[name] || name;
|
|
239
|
+
acc[technicalKey] = Array.from(set);
|
|
240
|
+
}
|
|
241
|
+
return acc;
|
|
242
|
+
}, {});
|
|
243
|
+
setQuery({
|
|
244
|
+
keyword: search ?? "",
|
|
245
|
+
...dateQuery,
|
|
246
|
+
...selectQuery,
|
|
247
|
+
});
|
|
248
|
+
}, [search, selectedFilters, dateFilters, columns, config]);
|
|
249
|
+
useEffect(() => {
|
|
250
|
+
if (!onLazyLoad)
|
|
251
|
+
return;
|
|
252
|
+
const key = JSON.stringify({ query, currentPage, perPage });
|
|
253
|
+
if (_lastRequest.current === key)
|
|
254
|
+
return;
|
|
255
|
+
_lastRequest.current = key;
|
|
256
|
+
onLazyLoad(query, perPage, currentPage);
|
|
257
|
+
}, [query, currentPage, perPage, onLazyLoad]);
|
|
258
|
+
return (React.createElement(React.Fragment, null,
|
|
259
|
+
config?.filter && (React.createElement(Filter, { states: {
|
|
260
|
+
search: {
|
|
261
|
+
get: search,
|
|
262
|
+
set: setSearch,
|
|
263
|
+
},
|
|
264
|
+
dateFilters: {
|
|
265
|
+
get: dateFilters,
|
|
266
|
+
set: setDateFilters,
|
|
267
|
+
},
|
|
268
|
+
selectFilters: {
|
|
269
|
+
get: selectFilters,
|
|
270
|
+
set: setSelectFilters,
|
|
271
|
+
},
|
|
272
|
+
selectedFilters: {
|
|
273
|
+
get: selectedFilters,
|
|
274
|
+
set: setSelectedFilters,
|
|
275
|
+
},
|
|
276
|
+
}, config: config })),
|
|
277
|
+
React.createElement("div", { ref: _kanbanWrapper, className: "ar-kanban-board", style: {
|
|
278
|
+
height: `calc(100dvh - (${_kanbanWrapper.current?.getBoundingClientRect().top}px + ${config?.safeAreaOffset?.bottom ?? 0}px))`,
|
|
279
|
+
}, onScroll: handleLazyLoadScroll, onDragOver: handleBoardDragOver, onDragEnd: stopScrolling, onDrop: stopScrolling },
|
|
280
|
+
React.createElement("div", { className: "buttons" },
|
|
281
|
+
React.createElement("div", { className: "button left", onMouseDown: () => handleStartScroll("left"), onMouseUp: handleStopScroll, onMouseLeave: handleStopScroll },
|
|
282
|
+
React.createElement(ARIcon, { icon: "ArrowLeft" })),
|
|
283
|
+
React.createElement("div", { className: "button right", onMouseDown: () => handleStartScroll("right"), onMouseUp: handleStopScroll, onMouseLeave: handleStopScroll },
|
|
284
|
+
React.createElement(ARIcon, { icon: "ArrowRight" }))),
|
|
285
|
+
React.createElement("div", { className: "titles" }, data.map((board, index) => (React.createElement("div", { key: index, className: "title" },
|
|
286
|
+
React.createElement("h4", null,
|
|
287
|
+
React.createElement("span", { style: {
|
|
288
|
+
backgroundColor: darkenColor(board.titleColor ?? "", 1),
|
|
289
|
+
borderColor: darkenColor(board.titleColor ?? "", 1),
|
|
290
|
+
} }),
|
|
291
|
+
board.title.toLocaleUpperCase("tr")),
|
|
292
|
+
board.description && React.createElement("span", null, board.description))))),
|
|
293
|
+
React.createElement("div", { className: "columns" }, data.map((board, index) => (React.createElement("div", { key: index, className: "column", onDrop: handleDrop(board.key) },
|
|
294
|
+
React.createElement("div", { className: "items", onDragOver: handleItemsDragOver, onDragLeave: handleItemsDragLeave, onDrop: handleItemsDrop },
|
|
295
|
+
React.createElement(DnD, { key: board.key, data: board.items, renderItem: (item, dndIndex) => {
|
|
296
|
+
return (React.createElement("div", { key: dndIndex, ref: (el) => {
|
|
297
|
+
if (!el)
|
|
298
|
+
return;
|
|
299
|
+
_kanbanItems.current[trackBy(item)] = el;
|
|
300
|
+
}, className: "item", onDragOver: (event) => {
|
|
301
|
+
event.preventDefault();
|
|
302
|
+
const rect = event.currentTarget.getBoundingClientRect();
|
|
303
|
+
const mouseY = event.clientY;
|
|
304
|
+
const isBelow = mouseY > rect.top + rect.height / 2;
|
|
305
|
+
_hoverItemIndex.current = isBelow ? dndIndex + 1 : dndIndex;
|
|
306
|
+
} }, board.renderItem(item, index)));
|
|
307
|
+
}, columnKey: board.key, confing: { isMoveIcon: false } })))))))));
|
|
308
|
+
};
|
|
309
|
+
export default KanbanBoard;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Typography from "../typography";
|
|
3
|
+
import "../../../assets/css/components/data-display/paper/styles.css";
|
|
4
|
+
const { Title } = Typography;
|
|
5
|
+
const Paper = ({ children, title, action }) => {
|
|
6
|
+
return (React.createElement("div", { className: "ar-paper" },
|
|
7
|
+
(title || action) && (React.createElement("div", { className: "header" },
|
|
8
|
+
title && React.createElement(Title, { Level: "h3" }, title),
|
|
9
|
+
action && React.createElement("div", { className: "actions-field" }, action))),
|
|
10
|
+
React.createElement("div", { className: "content" }, children)));
|
|
11
|
+
};
|
|
12
|
+
export default Paper;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
class Compiler {
|
|
2
|
+
_setHtmlContent;
|
|
3
|
+
_attributesCount = 0;
|
|
4
|
+
constructor(setHtmlContent) {
|
|
5
|
+
this._setHtmlContent = setHtmlContent;
|
|
6
|
+
}
|
|
7
|
+
Jsx = (elements) => {
|
|
8
|
+
elements.forEach((element) => {
|
|
9
|
+
// Open Tag
|
|
10
|
+
element = element.replace(/\[open\](.*?)\[\/open\]/g, (_, p1, p2) => {
|
|
11
|
+
return `<span>${p1 ?? p2}</span>`;
|
|
12
|
+
});
|
|
13
|
+
// Close Tag
|
|
14
|
+
const closeRegex = /\[close\](.*?)\[\/close\]|\[close-slash\](.*?)\[\/close-slash\]/g;
|
|
15
|
+
element = element.replace(closeRegex, (_, p1) => {
|
|
16
|
+
return `<span>${p1}</span>`;
|
|
17
|
+
});
|
|
18
|
+
// Tag
|
|
19
|
+
element = element.replace(/\[tag\](.*?)\[\/tag\]/g, (_, p1) => {
|
|
20
|
+
return `<span class="ar-jsx-tag">${p1}</span>`;
|
|
21
|
+
});
|
|
22
|
+
// React Custom Tag
|
|
23
|
+
element = element.replace(/\[react-tag\](.*?)\[\/react-tag\]/g, (_, p1) => {
|
|
24
|
+
return `<span class="ar-jsx-custom-tag">${p1}</span>`;
|
|
25
|
+
});
|
|
26
|
+
// Attributes
|
|
27
|
+
element = element.replace(/\[attributes\](.*?)\[\/attributes\]/g, (_, p1) => {
|
|
28
|
+
let _className = "ar-jsx-attributes";
|
|
29
|
+
this._attributesCount = Number(_.match(/=/g)?.length);
|
|
30
|
+
if (this._attributesCount >= 5)
|
|
31
|
+
_className += " type-column";
|
|
32
|
+
return `<span class="${_className}">${p1}</span>`;
|
|
33
|
+
});
|
|
34
|
+
// Attribute
|
|
35
|
+
element = element.replace(/\[attribute\](.*?)\[\/attribute\]/g, (_, p1) => {
|
|
36
|
+
return `<span class="ar-jsx-attribute">${p1}</span>`;
|
|
37
|
+
});
|
|
38
|
+
// Child Attribute
|
|
39
|
+
element = element.replace(/\[child-attribute\](.*?)\[\/child-attribute\]/g, (_, p1) => {
|
|
40
|
+
return `<span class="ar-jsx-attribute">${p1}</span>`;
|
|
41
|
+
});
|
|
42
|
+
// Attribute Key
|
|
43
|
+
element = element.replace(/\[attribute-key\](.*?)\[\/attribute-key\]/g, (_, p1) => {
|
|
44
|
+
return `<span class="ar-jsx-attribute-key">${p1}</span>`;
|
|
45
|
+
});
|
|
46
|
+
// Equal "="
|
|
47
|
+
element = element.replace(/\[equal\](.*?)\[\/equal\]/g, (_, p1) => {
|
|
48
|
+
return `<span>${p1}</span>`;
|
|
49
|
+
});
|
|
50
|
+
// Colon ":"
|
|
51
|
+
element = element.replace(/\[colon\](.*?)\[\/colon\]/g, (_, p1) => {
|
|
52
|
+
return `<span>${p1}</span>`;
|
|
53
|
+
});
|
|
54
|
+
// Attributes Values
|
|
55
|
+
element = element.replace(/\[string\](.*?)\[\/string\]/g, (_, p1) => {
|
|
56
|
+
return `<span class="ar-jsx-string-value">"${p1}"</span>`;
|
|
57
|
+
});
|
|
58
|
+
// Number
|
|
59
|
+
element = element.replace(/\[number\](.*?)\[\/number\]/g, (_, p1) => {
|
|
60
|
+
return `<span class="ar-jsx-number-value">${p1}</span>`;
|
|
61
|
+
});
|
|
62
|
+
// Boolean
|
|
63
|
+
element = element.replace(/\[boolean\](.*?)\[\/boolean\]/g, (_, p1) => {
|
|
64
|
+
return `<span class="ar-jsx-boolean-value"><span>{</span>${p1}<span>}</span></span>`;
|
|
65
|
+
});
|
|
66
|
+
// Object
|
|
67
|
+
element = element.replace(/\[object\](.*?)\[\/object\]/g, (_, p1) => {
|
|
68
|
+
let _className = "ar-jsx-object-value";
|
|
69
|
+
let _lineBreakSpaces = " ";
|
|
70
|
+
if (this._attributesCount >= 5) {
|
|
71
|
+
_className += " type-column";
|
|
72
|
+
_lineBreakSpaces = "";
|
|
73
|
+
}
|
|
74
|
+
return `<span class='ar-jsx-curly-brackets'>{{${_lineBreakSpaces}</span><span class="${_className}">${p1}</span><span class='ar-jsx-curly-brackets'>${_lineBreakSpaces}}}</span>`;
|
|
75
|
+
});
|
|
76
|
+
// Sub Item
|
|
77
|
+
element = element.replace(/\[sub-item\]/g, "<span class='ar-jsx-sub-item'>");
|
|
78
|
+
element = element.replace(/\[\/sub-item\]/g, "</span>");
|
|
79
|
+
// Close Child Curly Bracket "}"
|
|
80
|
+
element = element.replace(/\[\/curly-bracket\]/g, "<span class='ar-jsx-child-curly-bracket'>}</span>");
|
|
81
|
+
// Open Child Curly Bracket "{"
|
|
82
|
+
element = element.replace(/\[curly-bracket\]/g, "<span class='ar-jsx-child-curly-bracket'>{</span>");
|
|
83
|
+
// Close Child Curly Bracket "}"
|
|
84
|
+
element = element.replace(/\[\/curly-bracket\]/g, "<span class='ar-jsx-child-curly-bracket'>}</span>");
|
|
85
|
+
element = element.replace(/\[react-element\]/g, "<span class='ar-jsx-child-open-tag'><</span>");
|
|
86
|
+
element = element.replace(/\[\/react-element\]/g, "<span class='ar-jsx-child-close-tag'> /></span>");
|
|
87
|
+
element = element.replace(/\[comma\]/g, "<span class='ar-jsx-comma'>,</span>");
|
|
88
|
+
this._setHtmlContent(`<span class="ar-jsx-language">${element}</span>`);
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
export default Compiler;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
declare class Parser {
|
|
3
|
+
_setElements: React.Dispatch<React.SetStateAction<string[]>>;
|
|
4
|
+
constructor(setElements: React.Dispatch<React.SetStateAction<string[]>>);
|
|
5
|
+
JsxToString: (child: React.ReactNode, subChilde?: boolean, indentLevel?: number) => string | undefined;
|
|
6
|
+
private HandleEntries;
|
|
7
|
+
private FormatAttributeValue;
|
|
8
|
+
}
|
|
9
|
+
export default Parser;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
100004557273;
|
|
3
|
+
class Parser {
|
|
4
|
+
// Public
|
|
5
|
+
_setElements;
|
|
6
|
+
// Private
|
|
7
|
+
// private _lineBreakSpaces = 4;
|
|
8
|
+
constructor(setElements) {
|
|
9
|
+
this._setElements = setElements;
|
|
10
|
+
}
|
|
11
|
+
JsxToString = (child, subChilde = false, indentLevel = 0) => {
|
|
12
|
+
if (!React.isValidElement(child))
|
|
13
|
+
return;
|
|
14
|
+
const element = child;
|
|
15
|
+
let componentName = "";
|
|
16
|
+
let componentContent = element.props.children;
|
|
17
|
+
if (typeof element.type === "string")
|
|
18
|
+
componentName = element.type;
|
|
19
|
+
else {
|
|
20
|
+
const componentType = element.type;
|
|
21
|
+
componentName = componentType.displayName || componentType.name || "Unknown";
|
|
22
|
+
}
|
|
23
|
+
// Indent seviyesi için boşlukları ekle.
|
|
24
|
+
const indent = " ".repeat(indentLevel);
|
|
25
|
+
// Eğer `br` elementi ise işlemi sonlandır
|
|
26
|
+
if (componentName === "br")
|
|
27
|
+
return;
|
|
28
|
+
const attributes = Object.keys(element.props).filter((key) => key !== "children");
|
|
29
|
+
const attributesLength = attributes.length;
|
|
30
|
+
const attributesList = attributes.map((key) => this.FormatAttributeValue(key, element.props[key])).join(" ");
|
|
31
|
+
const formattedTag = componentName[0]
|
|
32
|
+
? componentName[0].toUpperCase() === componentName[0]
|
|
33
|
+
? `[react-tag]${componentName}[/react-tag]`
|
|
34
|
+
: componentName
|
|
35
|
+
: "";
|
|
36
|
+
const formattedAttributes = attributesLength > 0 ? ` [attributes]${attributesList}[/attributes]` : "";
|
|
37
|
+
// Eğer gelen iç eleman bir nesneyse yeniden yapılan.
|
|
38
|
+
if (React.isValidElement(componentContent)) {
|
|
39
|
+
// İç içe tek bir çocuk eleman varsa recursive olarak işlemeye devam et
|
|
40
|
+
componentContent = `\n${this.JsxToString(componentContent, true, indentLevel + 1)}\n`;
|
|
41
|
+
}
|
|
42
|
+
else if (Array.isArray(componentContent)) {
|
|
43
|
+
// Eğer birden fazla çocuk varsa hepsini işle
|
|
44
|
+
componentContent = componentContent
|
|
45
|
+
.map((contentChild) => `[sub-item]${this.JsxToString(contentChild, true, indentLevel + 1)}[/sub-item]`)
|
|
46
|
+
.join("");
|
|
47
|
+
}
|
|
48
|
+
else if (typeof componentContent === "string") {
|
|
49
|
+
// Eğer metin içeriği varsa, trimle
|
|
50
|
+
componentContent = componentContent.trim();
|
|
51
|
+
}
|
|
52
|
+
// componentContent =
|
|
53
|
+
// attributesLength >= this._lineBreakSpaces ? `\n ${componentContent}\n` : componentContent;
|
|
54
|
+
const renderElement = componentContent != undefined
|
|
55
|
+
? `${indent}[open]<[/open][tag]${formattedTag}[/tag]${formattedAttributes}[close]>[/close]${componentContent}${typeof element.props["children"] === "object" ? indent : ""}[open]</[/open][tag]${formattedTag}[/tag][close]>[/close]`
|
|
56
|
+
: `${indent}[open]<[/open][tag]${formattedTag}[/tag]${formattedAttributes} [close]/>[/close]`;
|
|
57
|
+
!subChilde && this._setElements((prevElements) => [...prevElements, renderElement]);
|
|
58
|
+
return renderElement;
|
|
59
|
+
};
|
|
60
|
+
HandleEntries = (propValue) => {
|
|
61
|
+
if (React.isValidElement(propValue)) {
|
|
62
|
+
const x = propValue.type;
|
|
63
|
+
return `[react-element][react-tag]${x.displayName}[/react-tag][/react-element]`;
|
|
64
|
+
}
|
|
65
|
+
if (propValue && typeof propValue === "object") {
|
|
66
|
+
return `[curly-bracket] ${Object.entries(propValue)
|
|
67
|
+
.map(([key, value]) => `[attribute-key]${key}[/attribute-key][colon]:[/colon] ${this.HandleEntries(value)}`)
|
|
68
|
+
.join(", ")} [/curly-bracket]`;
|
|
69
|
+
}
|
|
70
|
+
return typeof propValue === "number" ? `[number]${propValue}[/number]` : `[string]${propValue}[/string]`;
|
|
71
|
+
};
|
|
72
|
+
FormatAttributeValue = (key, value) => {
|
|
73
|
+
let result = "";
|
|
74
|
+
switch (typeof value) {
|
|
75
|
+
case "number":
|
|
76
|
+
result = `[number]${value}[/number]`;
|
|
77
|
+
break;
|
|
78
|
+
case "string":
|
|
79
|
+
result = `[string]${value}[/string]`;
|
|
80
|
+
break;
|
|
81
|
+
case "boolean":
|
|
82
|
+
result = `[boolean]${value}[/boolean]`;
|
|
83
|
+
break;
|
|
84
|
+
case "object":
|
|
85
|
+
const entries = Object.entries(value)
|
|
86
|
+
.map(([subKey, subValue]) => `[child-attribute][attribute-key]${subKey}[/attribute-key][colon]:[/colon] ${this.HandleEntries(subValue)}[/child-attribute]`)
|
|
87
|
+
.join(", ");
|
|
88
|
+
result = `[object]${entries}[/object]`;
|
|
89
|
+
break;
|
|
90
|
+
case "function":
|
|
91
|
+
result = `[function][/function]`;
|
|
92
|
+
break;
|
|
93
|
+
default:
|
|
94
|
+
return "";
|
|
95
|
+
}
|
|
96
|
+
return `[attribute][attribute-key]${key}[/attribute-key][equal]=[/equal]${result}[/attribute]`;
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
export default Parser;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import "../../../assets/css/components/data-display/syntax-highlighter/syntax-highlighter.css";
|
|
3
|
+
declare const SyntaxHighlighter: React.FC<{
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
position?: "left" | "center" | "right";
|
|
6
|
+
}> & {
|
|
7
|
+
Import: React.FC<{
|
|
8
|
+
children: string;
|
|
9
|
+
}>;
|
|
10
|
+
};
|
|
11
|
+
export default SyntaxHighlighter;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import React, { useEffect, useRef, useState } from "react";
|
|
3
|
+
import Parser from "./classes/Parser";
|
|
4
|
+
import Compiler from "./classes/Compiler";
|
|
5
|
+
import "../../../assets/css/components/data-display/syntax-highlighter/syntax-highlighter.css";
|
|
6
|
+
import Import from "./Import";
|
|
7
|
+
// import Button from "../../form/button";
|
|
8
|
+
const SyntaxHighlighter = ({ children, position = "left" }) => {
|
|
9
|
+
// refs
|
|
10
|
+
const _div = useRef(null);
|
|
11
|
+
// states
|
|
12
|
+
const [elements, setElements] = useState([]);
|
|
13
|
+
const [htmlContent, setHtmlContent] = useState("");
|
|
14
|
+
// const [codePanelIsOpen, setCodePanelIsOpen] = useState<boolean>(false);
|
|
15
|
+
// classes
|
|
16
|
+
const parser = new Parser(setElements);
|
|
17
|
+
const compiler = new Compiler(setHtmlContent);
|
|
18
|
+
// useEffects
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
// Clear...
|
|
21
|
+
setElements([]);
|
|
22
|
+
// Fill...
|
|
23
|
+
React.Children.forEach(children, (child) => {
|
|
24
|
+
if (React.isValidElement(child)) {
|
|
25
|
+
parser.JsxToString(child);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}, [children]);
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
if (elements.length === 0)
|
|
31
|
+
return;
|
|
32
|
+
compiler.Jsx(elements);
|
|
33
|
+
}, [elements]);
|
|
34
|
+
return (React.createElement(React.Fragment, null,
|
|
35
|
+
React.createElement("div", { className: "ar-syntax" },
|
|
36
|
+
React.createElement("div", { ref: _div, className: `preview ${position}` }, children),
|
|
37
|
+
React.createElement("pre", { className: "pre" },
|
|
38
|
+
React.createElement("code", { dangerouslySetInnerHTML: { __html: htmlContent } })))));
|
|
39
|
+
};
|
|
40
|
+
SyntaxHighlighter.Import = Import;
|
|
41
|
+
export default SyntaxHighlighter;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React, { Dispatch, MutableRefObject, ReactNode, SetStateAction } from "react";
|
|
2
|
+
interface IProps {
|
|
3
|
+
refs: {
|
|
4
|
+
tableContent: MutableRefObject<HTMLDivElement | null>;
|
|
5
|
+
buttons: MutableRefObject<(HTMLSpanElement | null)[]>;
|
|
6
|
+
};
|
|
7
|
+
states: {
|
|
8
|
+
open: {
|
|
9
|
+
get: boolean;
|
|
10
|
+
set: Dispatch<SetStateAction<boolean>>;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
children: ReactNode;
|
|
14
|
+
coordinate: {
|
|
15
|
+
x: number;
|
|
16
|
+
y: number;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
declare const FilterPopup: ({ children, refs, states, coordinate }: IProps) => false | React.ReactPortal;
|
|
20
|
+
export default FilterPopup;
|