@shohojdhara/atomix 0.1.13 → 0.1.15
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/CHANGELOG.md +0 -0
- package/LICENSE +0 -0
- package/NPM_PUBLISHING.md +0 -0
- package/README.md +51 -0
- package/dist/css/atomix.css +1 -5
- package/dist/css/atomix.css.map +1 -1
- package/dist/js/194.js +2 -0
- package/dist/js/194.js.map +1 -0
- package/dist/js/atomix.react.esm.js +1 -1
- package/dist/js/atomix.react.esm.js.map +1 -1
- package/dist/js/atomix.react.umd.js +2 -0
- package/dist/js/atomix.react.umd.js.map +1 -0
- package/dist/js/chunks/esm/202.ff48d27672233280e021.js +2 -0
- package/dist/js/chunks/esm/202.ff48d27672233280e021.js.map +1 -0
- package/dist/js/chunks/esm/308.f873332126eba90e5c62.js +2 -0
- package/dist/js/chunks/esm/308.f873332126eba90e5c62.js.map +1 -0
- package/dist/js/chunks/esm/54.4db919e5e4e5cc6d7c72.js +2 -0
- package/dist/js/chunks/esm/54.4db919e5e4e5cc6d7c72.js.map +1 -0
- package/dist/js/chunks/esm/619.afc5a718eff77fa423b5.js +2 -0
- package/dist/js/chunks/esm/619.afc5a718eff77fa423b5.js.map +1 -0
- package/dist/js/chunks/esm/690.a9e968c7497d61e56cdc.js +2 -0
- package/dist/js/chunks/esm/690.a9e968c7497d61e56cdc.js.map +1 -0
- package/dist/js/chunks/esm/894.f1091a4a8758c26d29e4.js +2 -0
- package/dist/js/chunks/esm/894.f1091a4a8758c26d29e4.js.map +1 -0
- package/dist/js/chunks/esm/897.561a50f7d043d42169da.js +2 -0
- package/dist/js/chunks/esm/897.561a50f7d043d42169da.js.map +1 -0
- package/dist/js/chunks/umd/202.dac7605cc555b6bda542.js +2 -0
- package/dist/js/chunks/umd/202.dac7605cc555b6bda542.js.map +1 -0
- package/dist/js/chunks/umd/308.6709979849dcbdb90c9b.js +2 -0
- package/dist/js/chunks/umd/308.6709979849dcbdb90c9b.js.map +1 -0
- package/dist/js/chunks/umd/54.403470e1f7d0ef4424a7.js +2 -0
- package/dist/js/chunks/umd/54.403470e1f7d0ef4424a7.js.map +1 -0
- package/dist/js/chunks/umd/619.fa05ea98c10270eb64c5.js +2 -0
- package/dist/js/chunks/umd/619.fa05ea98c10270eb64c5.js.map +1 -0
- package/dist/js/chunks/umd/690.aa7054d1c53e5402c2d6.js +2 -0
- package/dist/js/chunks/umd/690.aa7054d1c53e5402c2d6.js.map +1 -0
- package/dist/js/chunks/umd/894.3e1eaf0a2aadf4434390.js +2 -0
- package/dist/js/{894.atomix.react.cjs.js.map → chunks/umd/894.3e1eaf0a2aadf4434390.js.map} +1 -1
- package/dist/js/chunks/umd/897.554ea37be4453698c167.js +2 -0
- package/dist/js/chunks/umd/897.554ea37be4453698c167.js.map +1 -0
- package/dist/types/components/Accordion/Accordion.d.ts +1 -2
- package/dist/types/components/Accordion/scripts/bundle.d.ts +2 -0
- package/dist/types/components/AtomixLogo.d.ts +1 -1
- package/dist/types/components/Avatar/Avatar.d.ts +1 -2
- package/dist/types/components/Avatar/AvatarGroup.d.ts +3 -4
- package/dist/types/components/Avatar/index.d.ts +2 -2
- package/dist/types/components/Badge/Badge.d.ts +1 -2
- package/dist/types/components/Breadcrumb/Breadcrumb.d.ts +1 -2
- package/dist/types/components/Breadcrumb/index.d.ts +1 -1
- package/dist/types/components/Button/Button.d.ts +3 -2
- package/dist/types/components/Button/index.d.ts +2 -5
- package/dist/types/components/Callout/Callout.d.ts +1 -2
- package/dist/types/components/Callout/scripts/bundle.d.ts +5 -0
- package/dist/types/components/Card/Card.d.ts +1 -2
- package/dist/types/components/Card/ElevationCard.d.ts +1 -0
- package/dist/types/components/Card/scripts/bundle.d.ts +8 -0
- package/dist/types/components/ColorModeToggle/ColorModeToggle.d.ts +2 -4
- package/dist/types/components/Countdown/Countdown.d.ts +2 -4
- package/dist/types/components/DataTable/DataTable.d.ts +1 -2
- package/dist/types/components/DataTable/index.d.ts +2 -2
- package/dist/types/components/DataTable/scripts/bundle.d.ts +2 -0
- package/dist/types/components/DatePicker/DatePicker.d.ts +2 -3
- package/dist/types/components/DatePicker/scripts/bundle.d.ts +3 -0
- package/dist/types/components/Dropdown/Dropdown.d.ts +7 -2
- package/dist/types/components/Dropdown/scripts/bundle.d.ts +3 -0
- package/dist/types/components/EdgePanel/EdgePanel.d.ts +2 -3
- package/dist/types/components/EdgePanel/scripts/bundle.d.ts +6 -0
- package/dist/types/components/Form/Checkbox.d.ts +1 -2
- package/dist/types/components/Form/Form.d.ts +1 -2
- package/dist/types/components/Form/FormGroup.d.ts +1 -2
- package/dist/types/components/Form/Input.d.ts +1 -2
- package/dist/types/components/Form/Radio.d.ts +1 -2
- package/dist/types/components/Form/Select.d.ts +1 -2
- package/dist/types/components/Form/Textarea.d.ts +1 -2
- package/dist/types/components/Hero/Hero.d.ts +1 -2
- package/dist/types/components/Hero/scripts/bundle.d.ts +7 -0
- package/dist/types/components/Icon/Icon.d.ts +2 -4
- package/dist/types/components/List/List.d.ts +1 -2
- package/dist/types/components/Messages/Messages.d.ts +1 -2
- package/dist/types/components/Messages/index.d.ts +1 -1
- package/dist/types/components/Messages/scripts/bundle.d.ts +3 -0
- package/dist/types/components/Modal/Modal.d.ts +1 -2
- package/dist/types/components/Modal/scripts/bundle.d.ts +3 -0
- package/dist/types/components/Navbar/Menu.d.ts +1 -2
- package/dist/types/components/Navbar/Nav.d.ts +1 -2
- package/dist/types/components/Navbar/NavDropdown.d.ts +2 -0
- package/dist/types/components/Navbar/NavItem.d.ts +2 -0
- package/dist/types/components/Navbar/Navbar.d.ts +1 -2
- package/dist/types/components/Pagination/Pagination.d.ts +20 -2
- package/dist/types/components/Pagination/scripts/bundle.d.ts +3 -0
- package/dist/types/components/PhotoViewer/PhotoViewer.d.ts +1 -2
- package/dist/types/components/PhotoViewer/scripts/bundle.d.ts +3 -0
- package/dist/types/components/Popover/Popover.d.ts +8 -2
- package/dist/types/components/Popover/scripts/bundle.d.ts +4 -0
- package/dist/types/components/ProductReview/ProductReview.d.ts +2 -4
- package/dist/types/components/Progress/Progress.d.ts +1 -2
- package/dist/types/components/Progress/scripts/bundle.d.ts +11 -0
- package/dist/types/components/Rating/Rating.d.ts +1 -2
- package/dist/types/components/River/River.d.ts +1 -2
- package/dist/types/components/SectionIntro/SectionIntro.d.ts +2 -4
- package/dist/types/components/SectionIntro/scripts/bundle.d.ts +7 -0
- package/dist/types/components/Spinner/Spinner.d.ts +1 -2
- package/dist/types/components/Steps/Steps.d.ts +3 -5
- package/dist/types/components/Tab/Tab.d.ts +3 -5
- package/dist/types/components/Testimonial/Testimonial.d.ts +3 -5
- package/dist/types/components/Todo/Todo.d.ts +1 -2
- package/dist/types/components/Todo/scripts/bundle.d.ts +2 -0
- package/dist/types/components/Toggle/Toggle.d.ts +2 -4
- package/dist/types/components/Toggle/scripts/bundle.d.ts +2 -0
- package/dist/types/components/Tooltip/Tooltip.d.ts +2 -4
- package/dist/types/components/Upload/Upload.d.ts +2 -4
- package/dist/types/components/index.d.ts +45 -78
- package/dist/types/index.d.ts +23 -57
- package/dist/types/layouts/index.d.ts +11 -0
- package/dist/types/lib/composables/useCheckbox.d.ts +1 -1
- package/dist/types/lib/composables/useDatePicker.d.ts +4 -4
- package/dist/types/lib/composables/useEdgePanel.d.ts +2 -2
- package/dist/types/lib/composables/usePhotoViewer.d.ts +2 -2
- package/dist/types/lib/types/index.d.ts +0 -1
- package/index.d.ts +19 -10
- package/package.json +67 -27
- package/src/Introduction.mdx +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslon-Alternatives.eot +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslon-Alternatives.ttf +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslon-Alternatives.woff +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslon-Alternatives.woff2 +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslon-Expert.eot +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslon-Expert.ttf +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslon-Expert.woff +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslon-Expert.woff2 +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslon-ItalicSwash.eot +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslon-ItalicSwash.ttf +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslon-ItalicSwash.woff +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslon-ItalicSwash.woff2 +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslon-SmallCaps.eot +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslon-SmallCaps.ttf +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslon-SmallCaps.woff +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslon-SmallCaps.woff2 +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-Black.eot +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-Black.ttf +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-Black.woff +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-Black.woff2 +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-BlackItalic.eot +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-BlackItalic.ttf +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-BlackItalic.woff +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-BlackItalic.woff2 +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-Bold.eot +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-Bold.ttf +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-Bold.woff +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-Bold.woff2 +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-BoldItalic.eot +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-BoldItalic.ttf +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-BoldItalic.woff +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-BoldItalic.woff2 +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-Italic.eot +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-Italic.ttf +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-Italic.woff +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-Italic.woff2 +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-Regular.eot +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-Regular.ttf +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-Regular.woff +0 -0
- package/src/assets/fonts/BigCaslon/BigCaslonFB-Regular.woff2 +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Black.eot +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Black.ttf +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Black.woff +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Black.woff2 +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-BlackItalic.eot +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-BlackItalic.ttf +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-BlackItalic.woff +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-BlackItalic.woff2 +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Bold.eot +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Bold.ttf +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Bold.woff +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Bold.woff2 +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-BoldItalic.eot +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-BoldItalic.ttf +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-BoldItalic.woff +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-BoldItalic.woff2 +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Book.eot +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Book.ttf +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Book.woff +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Book.woff2 +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-BookItalic.eot +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-BookItalic.ttf +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-BookItalic.woff +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-BookItalic.woff2 +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Heavy.eot +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Heavy.ttf +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Heavy.woff +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Heavy.woff2 +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-HeavyItalic.eot +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-HeavyItalic.ttf +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-HeavyItalic.woff +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-HeavyItalic.woff2 +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Light.eot +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Light.ttf +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Light.woff +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Light.woff2 +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-LightItalic.eot +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-LightItalic.ttf +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-LightItalic.woff +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-LightItalic.woff2 +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Medium.eot +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Medium.ttf +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Medium.woff +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Medium.woff2 +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-MediumItalic.eot +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-MediumItalic.ttf +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-MediumItalic.woff +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-MediumItalic.woff2 +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Regular.eot +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Regular.ttf +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Regular.woff +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Regular.woff2 +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-RegularItalic.eot +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-RegularItalic.ttf +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-RegularItalic.woff +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-RegularItalic.woff2 +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Thin.eot +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Thin.ttf +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Thin.woff +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-Thin.woff2 +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-ThinItalic.eot +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-ThinItalic.ttf +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-ThinItalic.woff +0 -0
- package/src/assets/fonts/FilsonPro/FilsonPro-ThinItalic.woff2 +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-Bold.eot +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-Bold.ttf +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-Bold.woff +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-Bold.woff2 +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-BoldItalic.eot +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-BoldItalic.ttf +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-BoldItalic.woff +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-BoldItalic.woff2 +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-CondensedBlack.eot +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-CondensedBlack.ttf +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-CondensedBlack.woff +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-CondensedBlack.woff2 +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-CondensedBold.eot +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-CondensedBold.ttf +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-CondensedBold.woff +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-CondensedBold.woff2 +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-Italic.eot +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-Italic.ttf +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-Italic.woff +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-Italic.woff2 +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-Light.eot +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-Light.ttf +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-Light.woff +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-Light.woff2 +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-LightItalic.eot +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-LightItalic.ttf +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-LightItalic.woff +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-LightItalic.woff2 +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-Medium.eot +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-Medium.ttf +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-Medium.woff +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-Medium.woff2 +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-MediumItalic.eot +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-MediumItalic.ttf +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-MediumItalic.woff +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-MediumItalic.woff2 +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-Thin.eot +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-Thin.ttf +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-Thin.woff +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-Thin.woff2 +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-ThinItalic.eot +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-ThinItalic.ttf +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-ThinItalic.woff +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-ThinItalic.woff2 +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-UltraLight.eot +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-UltraLight.ttf +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-UltraLight.woff +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-UltraLight.woff2 +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-UltraLightItalic.eot +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-UltraLightItalic.ttf +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-UltraLightItalic.woff +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue-UltraLightItalic.woff2 +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue.eot +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue.ttf +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue.woff +0 -0
- package/src/assets/fonts/HelveticaNeue/HelveticaNeue.woff2 +0 -0
- package/src/assets/fonts/HelveticaNeue/demo.html +0 -0
- package/src/assets/fonts/HelveticaNeue/stylesheet.css +0 -0
- package/src/assets/fonts/Lato/Lato-Black.eot +0 -0
- package/src/assets/fonts/Lato/Lato-Black.ttf +0 -0
- package/src/assets/fonts/Lato/Lato-Black.woff +0 -0
- package/src/assets/fonts/Lato/Lato-Black.woff2 +0 -0
- package/src/assets/fonts/Lato/Lato-Bold.eot +0 -0
- package/src/assets/fonts/Lato/Lato-Bold.ttf +0 -0
- package/src/assets/fonts/Lato/Lato-Bold.woff +0 -0
- package/src/assets/fonts/Lato/Lato-Bold.woff2 +0 -0
- package/src/assets/fonts/Lato/Lato-Light.eot +0 -0
- package/src/assets/fonts/Lato/Lato-Light.ttf +0 -0
- package/src/assets/fonts/Lato/Lato-Light.woff +0 -0
- package/src/assets/fonts/Lato/Lato-Light.woff2 +0 -0
- package/src/assets/fonts/Lato/Lato-Regular.eot +0 -0
- package/src/assets/fonts/Lato/Lato-Regular.ttf +0 -0
- package/src/assets/fonts/Lato/Lato-Regular.woff +0 -0
- package/src/assets/fonts/Lato/Lato-Regular.woff2 +0 -0
- package/src/assets/fonts/Lux-Icons.woff2 +0 -0
- package/src/assets/fonts/MaterialIcons-Regular.eot +0 -0
- package/src/assets/fonts/MaterialIcons-Regular.ttf +0 -0
- package/src/assets/fonts/MaterialIcons-Regular.woff +0 -0
- package/src/assets/fonts/MaterialIcons-Regular.woff2 +0 -0
- package/src/assets/images/logo-transparent.png +0 -0
- package/src/assets/svgs/atomix-logo.svg +0 -0
- package/src/components/Accordion/Accordion.stories.tsx +0 -0
- package/src/components/Accordion/Accordion.tsx +2 -3
- package/src/components/Accordion/scripts/accordionInteractions.ts +0 -0
- package/src/components/Accordion/scripts/bundle.ts +0 -0
- package/src/components/Accordion/scripts/constants.ts +0 -0
- package/src/components/Accordion/scripts/index.ts +0 -0
- package/src/components/AtomixLogo/AtomixLogo.tsx +0 -0
- package/src/components/AtomixLogo.tsx +3 -1
- package/src/components/Avatar/Avatar.stories.tsx +1 -0
- package/src/components/Avatar/Avatar.tsx +3 -9
- package/src/components/Avatar/AvatarGroup.tsx +3 -8
- package/src/components/Avatar/index.ts +2 -2
- package/src/components/Avatar/scripts/index.ts +0 -0
- package/src/components/Badge/Badge.stories.tsx +0 -0
- package/src/components/Badge/Badge.tsx +3 -8
- package/src/components/Badge/index.tsx +0 -0
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +0 -0
- package/src/components/Breadcrumb/Breadcrumb.tsx +2 -7
- package/src/components/Breadcrumb/index.ts +1 -1
- package/src/components/Breadcrumb/scripts/breadcrumb.ts +0 -0
- package/src/components/Breadcrumb/scripts/demo.html +0 -0
- package/src/components/Breadcrumb/scripts/index.ts +0 -0
- package/src/components/Breadcrumb/scripts/types.ts +0 -0
- package/src/components/Button/Button.stories.tsx +0 -0
- package/src/components/Button/Button.tsx +5 -2
- package/src/components/Button/index.ts +2 -6
- package/src/components/Button/scripts/buttonInteractions.ts +0 -0
- package/src/components/Button/scripts/index.ts +0 -0
- package/src/components/Callout/Callout.stories.tsx +0 -0
- package/src/components/Callout/Callout.tsx +3 -8
- package/src/components/Callout/index.ts +0 -0
- package/src/components/Callout/scripts/CalloutInteractions.ts +0 -0
- package/src/components/Callout/scripts/bundle.ts +2 -12
- package/src/components/Callout/scripts/index.ts +0 -0
- package/src/components/Card/Card.stories.tsx +0 -0
- package/src/components/Card/Card.tsx +3 -8
- package/src/components/Card/ElevationCard.tsx +4 -0
- package/src/components/Card/index.ts +0 -0
- package/src/components/Card/scripts/bundle.ts +0 -7
- package/src/components/Card/scripts/cardInteractions.ts +0 -0
- package/src/components/Card/scripts/demo.html +0 -0
- package/src/components/Card/scripts/index.ts +0 -0
- package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +0 -0
- package/src/components/ColorModeToggle/ColorModeToggle.tsx +3 -7
- package/src/components/ColorModeToggle/index.ts +0 -0
- package/src/components/Countdown/Countdown.stories.tsx +0 -0
- package/src/components/Countdown/Countdown.tsx +9 -17
- package/src/components/Countdown/index.ts +0 -0
- package/src/components/Countdown/scripts/index.ts +0 -0
- package/src/components/DataTable/DataTable.stories.tsx +0 -0
- package/src/components/DataTable/DataTable.tsx +9 -14
- package/src/components/DataTable/index.ts +2 -2
- package/src/components/DataTable/scripts/bundle.ts +5 -13
- package/src/components/DataTable/scripts/index.ts +0 -0
- package/src/components/DatePicker/DatePicker.stories.tsx +0 -0
- package/src/components/DatePicker/DatePicker.tsx +3 -5
- package/src/components/DatePicker/index.ts +0 -0
- package/src/components/DatePicker/readme.md +0 -0
- package/src/components/DatePicker/scripts/bundle.ts +0 -0
- package/src/components/DatePicker/scripts/componentInteractions.ts +0 -0
- package/src/components/DatePicker/scripts/index.ts +0 -0
- package/src/components/DatePicker/types.ts +0 -0
- package/src/components/DatePicker/utils.ts +0 -0
- package/src/components/Dropdown/Dropdown.stories.tsx +0 -0
- package/src/components/Dropdown/Dropdown.tsx +5 -10
- package/src/components/Dropdown/index.ts +0 -0
- package/src/components/Dropdown/readme.md +0 -0
- package/src/components/Dropdown/scripts/bundle.ts +0 -0
- package/src/components/Dropdown/scripts/componentInteractions.ts +0 -0
- package/src/components/Dropdown/scripts/index.ts +0 -0
- package/src/components/EdgePanel/EdgePanel.stories.tsx +0 -0
- package/src/components/EdgePanel/EdgePanel.tsx +4 -10
- package/src/components/EdgePanel/index.ts +0 -0
- package/src/components/EdgePanel/scripts/bundle.ts +0 -0
- package/src/components/EdgePanel/scripts/edgePanelInteractions.ts +0 -0
- package/src/components/EdgePanel/scripts/index.ts +0 -0
- package/src/components/Form/Checkbox.stories.tsx +0 -0
- package/src/components/Form/Checkbox.tsx +2 -7
- package/src/components/Form/Form.stories.tsx +0 -0
- package/src/components/Form/Form.tsx +2 -7
- package/src/components/Form/FormGroup.stories.tsx +0 -0
- package/src/components/Form/FormGroup.tsx +2 -7
- package/src/components/Form/Input.stories.tsx +0 -0
- package/src/components/Form/Input.tsx +2 -7
- package/src/components/Form/Radio.stories.tsx +0 -0
- package/src/components/Form/Radio.tsx +2 -7
- package/src/components/Form/Select.stories.tsx +0 -0
- package/src/components/Form/Select.tsx +2 -6
- package/src/components/Form/Textarea.stories.tsx +0 -0
- package/src/components/Form/Textarea.tsx +2 -7
- package/src/components/Form/index.ts +0 -0
- package/src/components/Hero/Hero.stories.tsx +0 -0
- package/src/components/Hero/Hero.tsx +2 -7
- package/src/components/Hero/index.ts +0 -0
- package/src/components/Hero/scripts/bundle.ts +0 -0
- package/src/components/Hero/scripts/heroInteractions.ts +0 -0
- package/src/components/Hero/scripts/index.ts +0 -0
- package/src/components/Icon/Icon.tsx +3 -10
- package/src/components/Icon/index.ts +0 -0
- package/src/components/List/List.stories.tsx +0 -0
- package/src/components/List/List.tsx +2 -7
- package/src/components/List/ListGroup.tsx +0 -0
- package/src/components/List/index.ts +0 -0
- package/src/components/Messages/Messages.stories.tsx +0 -0
- package/src/components/Messages/Messages.tsx +4 -9
- package/src/components/Messages/index.ts +1 -1
- package/src/components/Messages/scripts/bundle.ts +2 -2
- package/src/components/Messages/scripts/componentInteractions.ts +0 -0
- package/src/components/Messages/scripts/index.ts +0 -0
- package/src/components/Modal/Modal.stories.tsx +0 -0
- package/src/components/Modal/Modal.tsx +3 -10
- package/src/components/Modal/README.md +0 -0
- package/src/components/Modal/index.ts +0 -0
- package/src/components/Modal/scripts/bundle.ts +0 -0
- package/src/components/Modal/scripts/index.ts +0 -0
- package/src/components/Modal/scripts/modalInteractions.ts +0 -0
- package/src/components/Navbar/MegaMenu.tsx +13 -13
- package/src/components/Navbar/Menu.tsx +13 -20
- package/src/components/Navbar/Nav.tsx +5 -9
- package/src/components/Navbar/NavDropdown.tsx +12 -6
- package/src/components/Navbar/NavItem.tsx +15 -10
- package/src/components/Navbar/Navbar.stories.tsx +0 -0
- package/src/components/Navbar/Navbar.tsx +6 -11
- package/src/components/Navbar/index.ts +0 -0
- package/src/components/Pagination/Pagination.stories.tsx +0 -0
- package/src/components/Pagination/Pagination.tsx +4 -10
- package/src/components/Pagination/index.ts +0 -0
- package/src/components/Pagination/scripts/bundle.ts +0 -0
- package/src/components/Pagination/scripts/index.ts +0 -0
- package/src/components/PhotoViewer/PhotoViewer.stories.tsx +0 -0
- package/src/components/PhotoViewer/PhotoViewer.tsx +2 -7
- package/src/components/PhotoViewer/PhotoViewerHeader.tsx +0 -0
- package/src/components/PhotoViewer/PhotoViewerImage.tsx +1 -1
- package/src/components/PhotoViewer/PhotoViewerInfo.tsx +0 -0
- package/src/components/PhotoViewer/PhotoViewerNavigation.tsx +1 -1
- package/src/components/PhotoViewer/PhotoViewerThumbnails.tsx +0 -0
- package/src/components/PhotoViewer/README.md +0 -0
- package/src/components/PhotoViewer/examples/ImageGallery.tsx +0 -0
- package/src/components/PhotoViewer/examples/SimpleGallery.tsx +0 -0
- package/src/components/PhotoViewer/examples/index.ts +0 -0
- package/src/components/PhotoViewer/index.ts +0 -0
- package/src/components/PhotoViewer/scripts/PhotoViewerInteractions.ts +0 -0
- package/src/components/PhotoViewer/scripts/bundle.ts +2 -9
- package/src/components/PhotoViewer/scripts/index.ts +0 -0
- package/src/components/Popover/Popover.stories.tsx +0 -0
- package/src/components/Popover/Popover.tsx +8 -13
- package/src/components/Popover/index.ts +0 -0
- package/src/components/Popover/readme.md +0 -0
- package/src/components/Popover/scripts/bundle.ts +0 -0
- package/src/components/Popover/scripts/componentInteractions.ts +0 -0
- package/src/components/Popover/scripts/index.ts +6 -1
- package/src/components/ProductReview/ProductReview.stories.tsx +0 -0
- package/src/components/ProductReview/ProductReview.tsx +6 -30
- package/src/components/ProductReview/index.ts +0 -0
- package/src/components/ProductReview/scripts/bundle.ts +0 -0
- package/src/components/ProductReview/scripts/componentInteractions.ts +0 -0
- package/src/components/ProductReview/scripts/index.ts +0 -0
- package/src/components/Progress/Progress.stories.tsx +0 -0
- package/src/components/Progress/Progress.tsx +1 -8
- package/src/components/Progress/index.ts +0 -0
- package/src/components/Progress/scripts/bundle.ts +0 -0
- package/src/components/Progress/scripts/componentInteractions.ts +0 -0
- package/src/components/Progress/scripts/index.ts +0 -0
- package/src/components/Rating/Rating.stories.tsx +0 -0
- package/src/components/Rating/Rating.tsx +3 -25
- package/src/components/Rating/index.ts +0 -0
- package/src/components/Rating/scripts/bundle.ts +0 -0
- package/src/components/Rating/scripts/index.d.ts +0 -0
- package/src/components/Rating/scripts/index.ts +0 -0
- package/src/components/Rating/scripts/ratingInteractions.ts +3 -3
- package/src/components/River/River.stories.tsx +0 -0
- package/src/components/River/River.tsx +4 -9
- package/src/components/River/examples.html +0 -0
- package/src/components/River/index.ts +0 -0
- package/src/components/River/scripts/index.ts +0 -0
- package/src/components/SectionIntro/SectionIntro.stories.tsx +0 -0
- package/src/components/SectionIntro/SectionIntro.tsx +3 -10
- package/src/components/SectionIntro/index.ts +0 -0
- package/src/components/SectionIntro/scripts/bundle.ts +0 -0
- package/src/components/SectionIntro/scripts/componentInteractions.ts +0 -0
- package/src/components/SectionIntro/scripts/index.ts +0 -0
- package/src/components/Spinner/Spinner.stories.tsx +0 -0
- package/src/components/Spinner/Spinner.tsx +2 -6
- package/src/components/Spinner/index.ts +0 -0
- package/src/components/Steps/Steps.stories.tsx +0 -0
- package/src/components/Steps/Steps.tsx +5 -12
- package/src/components/Steps/index.ts +0 -0
- package/src/components/Steps/scripts/index.ts +0 -0
- package/src/components/Tab/Tab.stories.tsx +0 -0
- package/src/components/Tab/Tab.tsx +4 -10
- package/src/components/Tab/index.ts +0 -0
- package/src/components/Tab/scripts/index.ts +0 -0
- package/src/components/Testimonial/Testimonial.stories.tsx +0 -0
- package/src/components/Testimonial/Testimonial.tsx +4 -10
- package/src/components/Testimonial/index.ts +0 -0
- package/src/components/Testimonial/scripts/index.ts +0 -0
- package/src/components/Todo/Todo.stories.tsx +0 -0
- package/src/components/Todo/Todo.tsx +4 -9
- package/src/components/Todo/index.ts +0 -0
- package/src/components/Todo/scripts/bundle.ts +0 -7
- package/src/components/Todo/scripts/index.ts +0 -0
- package/src/components/Todo/scripts/todoInteractions.ts +0 -0
- package/src/components/Todo/scripts/types.ts +0 -0
- package/src/components/Toggle/Toggle.stories.tsx +0 -0
- package/src/components/Toggle/Toggle.tsx +4 -10
- package/src/components/Toggle/index.ts +0 -0
- package/src/components/Toggle/scripts/bundle.ts +0 -7
- package/src/components/Toggle/scripts/index.ts +0 -0
- package/src/components/Toggle/scripts/toggleInteractions.ts +0 -0
- package/src/components/Tooltip/Tooltip.stories.tsx +0 -0
- package/src/components/Tooltip/Tooltip.tsx +3 -10
- package/src/components/Tooltip/index.ts +0 -0
- package/src/components/Tooltip/scripts/bundle.ts +0 -0
- package/src/components/Tooltip/scripts/index.ts +0 -0
- package/src/components/Tooltip/scripts/tooltipInteractions.ts +0 -0
- package/src/components/Upload/Upload.stories.tsx +0 -0
- package/src/components/Upload/Upload.tsx +9 -15
- package/src/components/Upload/index.ts +0 -0
- package/src/components/Upload/scripts/index.ts +0 -0
- package/src/components/index.ts +44 -79
- package/src/design-tokens/BoxShadow/BoxShadow.stories.tsx +0 -0
- package/src/design-tokens/Colors/colors.scss +0 -0
- package/src/design-tokens/Colors/colors.stories.tsx +0 -0
- package/src/design-tokens/Spacing/Spacing.scss +0 -0
- package/src/design-tokens/Spacing/Spacing.stories.tsx +0 -0
- package/src/design-tokens/Typography/Typography.scss +0 -0
- package/src/design-tokens/Typography/Typography.stories.tsx +0 -0
- package/src/docs/atomix-component-guidelines.mdx +0 -0
- package/src/docs/atomix-roadmap.mdx +0 -0
- package/src/docs/implementation-guide.mdx +0 -0
- package/src/htmlComponentsEntry.ts +0 -0
- package/src/index.ts +17 -18
- package/src/layouts/Grid/Container.tsx +0 -0
- package/src/layouts/Grid/Grid.stories.tsx +0 -0
- package/src/layouts/Grid/Grid.tsx +0 -0
- package/src/layouts/Grid/GridCol.tsx +0 -0
- package/src/layouts/Grid/README.md +0 -0
- package/src/layouts/Grid/Row.tsx +0 -0
- package/src/layouts/Grid/index.ts +0 -0
- package/src/layouts/MasonryGrid/MasonryGrid.stories.tsx +0 -0
- package/src/layouts/MasonryGrid/MasonryGrid.tsx +5 -4
- package/src/layouts/MasonryGrid/MasonryGridItem.tsx +0 -0
- package/src/layouts/MasonryGrid/README.md +0 -0
- package/src/layouts/MasonryGrid/index.ts +0 -0
- package/src/layouts/index.ts +10 -0
- package/src/lib/README.md +0 -0
- package/src/lib/composables/index.ts +0 -0
- package/src/lib/composables/useAccordion.ts +0 -0
- package/src/lib/composables/useBadge.ts +0 -0
- package/src/lib/composables/useBreadcrumb.ts +0 -0
- package/src/lib/composables/useButton.ts +0 -0
- package/src/lib/composables/useCallout.ts +0 -0
- package/src/lib/composables/useCard.ts +0 -0
- package/src/lib/composables/useCheckbox.ts +0 -0
- package/src/lib/composables/useDataTable.ts +0 -0
- package/src/lib/composables/useDatePicker.ts +0 -0
- package/src/lib/composables/useDropdown.ts +3 -3
- package/src/lib/composables/useEdgePanel.ts +0 -0
- package/src/lib/composables/useForm.ts +0 -0
- package/src/lib/composables/useFormGroup.ts +0 -0
- package/src/lib/composables/useHero.ts +0 -0
- package/src/lib/composables/useInput.ts +0 -0
- package/src/lib/composables/useMessages.ts +0 -0
- package/src/lib/composables/useModal.ts +0 -0
- package/src/lib/composables/useNavbar.ts +1 -1
- package/src/lib/composables/usePagination.ts +0 -0
- package/src/lib/composables/usePhotoViewer.ts +7 -5
- package/src/lib/composables/usePopover.ts +15 -15
- package/src/lib/composables/useProgress.ts +0 -0
- package/src/lib/composables/useRadio.ts +0 -0
- package/src/lib/composables/useRating.ts +0 -0
- package/src/lib/composables/useRiver.ts +0 -0
- package/src/lib/composables/useSelect.ts +0 -0
- package/src/lib/composables/useSpinner.ts +0 -0
- package/src/lib/composables/useTextarea.ts +0 -0
- package/src/lib/composables/useTodo.ts +0 -0
- package/src/lib/constants/components.ts +0 -0
- package/src/lib/constants/index.ts +0 -0
- package/src/lib/index.ts +0 -0
- package/src/lib/types/components.ts +0 -0
- package/src/lib/types/index.ts +0 -4
- package/src/lib/utils/dom.ts +0 -0
- package/src/lib/utils/icons.ts +0 -0
- package/src/lib/utils/index.ts +0 -0
- package/src/lib/utils/useForkRef.ts +0 -0
- package/src/styles/01-settings/_index.scss +0 -0
- package/src/styles/01-settings/_settings.accordion.scss +0 -0
- package/src/styles/01-settings/_settings.animations.scss +0 -0
- package/src/styles/01-settings/_settings.avatar-group.scss +0 -0
- package/src/styles/01-settings/_settings.avatar.scss +0 -0
- package/src/styles/01-settings/_settings.badge.scss +0 -0
- package/src/styles/01-settings/_settings.border-radius.scss +0 -0
- package/src/styles/01-settings/_settings.border.scss +0 -0
- package/src/styles/01-settings/_settings.box-shadow.scss +0 -0
- package/src/styles/01-settings/_settings.breadcrumb.scss +0 -0
- package/src/styles/01-settings/_settings.breakpoints.scss +0 -0
- package/src/styles/01-settings/_settings.btn-group.scss +0 -0
- package/src/styles/01-settings/_settings.button.scss +0 -0
- package/src/styles/01-settings/_settings.callout.scss +0 -0
- package/src/styles/01-settings/_settings.card.scss +0 -0
- package/src/styles/01-settings/_settings.checkbox-group.scss +0 -0
- package/src/styles/01-settings/_settings.checkbox.scss +0 -0
- package/src/styles/01-settings/_settings.color-mode.scss +0 -0
- package/src/styles/01-settings/_settings.colors.scss +0 -0
- package/src/styles/01-settings/_settings.config.scss +0 -0
- package/src/styles/01-settings/_settings.countdown.scss +0 -0
- package/src/styles/01-settings/_settings.data-table.scss +0 -0
- package/src/styles/01-settings/_settings.datepicker.scss +0 -0
- package/src/styles/01-settings/_settings.dropdown.scss +0 -0
- package/src/styles/01-settings/_settings.edge-panel.scss +0 -0
- package/src/styles/01-settings/_settings.fonts.scss +0 -0
- package/src/styles/01-settings/_settings.form-group.scss +0 -0
- package/src/styles/01-settings/_settings.form.scss +0 -0
- package/src/styles/01-settings/_settings.grid.scss +0 -0
- package/src/styles/01-settings/_settings.hero.scss +0 -0
- package/src/styles/01-settings/_settings.input.scss +0 -0
- package/src/styles/01-settings/_settings.link.scss +0 -0
- package/src/styles/01-settings/_settings.list-group.scss +0 -0
- package/src/styles/01-settings/_settings.list.scss +0 -0
- package/src/styles/01-settings/_settings.maps.scss +0 -0
- package/src/styles/01-settings/_settings.masonry-grid.scss +0 -0
- package/src/styles/01-settings/_settings.menu.scss +0 -0
- package/src/styles/01-settings/_settings.messages.scss +0 -0
- package/src/styles/01-settings/_settings.modal.scss +0 -0
- package/src/styles/01-settings/_settings.nav.scss +0 -0
- package/src/styles/01-settings/_settings.navbar.scss +0 -0
- package/src/styles/01-settings/_settings.pagination.scss +0 -0
- package/src/styles/01-settings/_settings.photoviewer.scss +0 -0
- package/src/styles/01-settings/_settings.popover.scss +0 -0
- package/src/styles/01-settings/_settings.position.scss +0 -0
- package/src/styles/01-settings/_settings.progress.scss +0 -0
- package/src/styles/01-settings/_settings.rating.scss +0 -0
- package/src/styles/01-settings/_settings.river.scss +0 -0
- package/src/styles/01-settings/_settings.sectionintro.scss +0 -0
- package/src/styles/01-settings/_settings.select.scss +0 -0
- package/src/styles/01-settings/_settings.side-menu.scss +0 -0
- package/src/styles/01-settings/_settings.skeleton.scss +0 -0
- package/src/styles/01-settings/_settings.spacing.scss +0 -0
- package/src/styles/01-settings/_settings.spinner.scss +0 -0
- package/src/styles/01-settings/_settings.steps.scss +0 -0
- package/src/styles/01-settings/_settings.tabs.scss +0 -0
- package/src/styles/01-settings/_settings.testimonials.scss +0 -0
- package/src/styles/01-settings/_settings.todo.scss +0 -0
- package/src/styles/01-settings/_settings.toggle.scss +0 -0
- package/src/styles/01-settings/_settings.tooltip.scss +0 -0
- package/src/styles/01-settings/_settings.typography.scss +0 -0
- package/src/styles/01-settings/_settings.upload.scss +0 -0
- package/src/styles/01-settings/_settings.z-layers.scss +0 -0
- package/src/styles/02-tools/_index.scss +0 -0
- package/src/styles/02-tools/_tools.animations.scss +0 -0
- package/src/styles/02-tools/_tools.border-radius.scss +0 -0
- package/src/styles/02-tools/_tools.breakpoints.scss +0 -0
- package/src/styles/02-tools/_tools.button.scss +0 -0
- package/src/styles/02-tools/_tools.clearfix.scss +0 -0
- package/src/styles/02-tools/_tools.color-functions.scss +0 -0
- package/src/styles/02-tools/_tools.color-mode.scss +0 -0
- package/src/styles/02-tools/_tools.event.scss +0 -0
- package/src/styles/02-tools/_tools.grid.scss +0 -0
- package/src/styles/02-tools/_tools.hidden-visually.scss +0 -0
- package/src/styles/02-tools/_tools.hidden.scss +0 -0
- package/src/styles/02-tools/_tools.map-loop.scss +0 -0
- package/src/styles/02-tools/_tools.media-queries.scss +0 -0
- package/src/styles/02-tools/_tools.object-fit.scss +0 -0
- package/src/styles/02-tools/_tools.placeholder.scss +0 -0
- package/src/styles/02-tools/_tools.rem.scss +0 -0
- package/src/styles/02-tools/_tools.size.scss +0 -0
- package/src/styles/02-tools/_tools.spacing.scss +0 -0
- package/src/styles/02-tools/_tools.to-rgb.scss +0 -0
- package/src/styles/02-tools/_tools.transition.scss +0 -0
- package/src/styles/02-tools/_tools.utilities.scss +0 -0
- package/src/styles/02-tools/_tools.utility-api.scss +0 -0
- package/src/styles/03-generic/_generic.fonts.scss +0 -0
- package/src/styles/03-generic/_generic.reset.scss +0 -0
- package/src/styles/03-generic/_generic.root.scss +0 -0
- package/src/styles/03-generic/_generic.selection.scss +0 -0
- package/src/styles/03-generic/_index.scss +0 -0
- package/src/styles/04-elements/_elements.all.scss +0 -0
- package/src/styles/04-elements/_elements.body.scss +0 -0
- package/src/styles/04-elements/_elements.heading.scss +0 -0
- package/src/styles/04-elements/_elements.html.scss +0 -0
- package/src/styles/04-elements/_elements.links.scss +0 -0
- package/src/styles/04-elements/_index.scss +0 -0
- package/src/styles/05-objects/_index.scss +0 -0
- package/src/styles/05-objects/_objects.container.scss +0 -0
- package/src/styles/05-objects/_objects.grid.scss +0 -0
- package/src/styles/05-objects/_objects.masonry-grid.scss +0 -0
- package/src/styles/06-components/_components.accordion.scss +0 -0
- package/src/styles/06-components/_components.avatar-group.scss +0 -0
- package/src/styles/06-components/_components.avatar.scss +0 -0
- package/src/styles/06-components/_components.badge.scss +0 -0
- package/src/styles/06-components/_components.breadcrumb.scss +0 -0
- package/src/styles/06-components/_components.btn-group.scss +0 -0
- package/src/styles/06-components/_components.button.scss +0 -0
- package/src/styles/06-components/_components.callout.scss +0 -0
- package/src/styles/06-components/_components.card.scss +0 -0
- package/src/styles/06-components/_components.checkbox-group.scss +0 -0
- package/src/styles/06-components/_components.checkbox.scss +0 -0
- package/src/styles/06-components/_components.color-mode-toggle.scss +0 -0
- package/src/styles/06-components/_components.countdown.scss +0 -0
- package/src/styles/06-components/_components.data-table.scss +0 -0
- package/src/styles/06-components/_components.datepicker.scss +0 -0
- package/src/styles/06-components/_components.dropdown.scss +0 -0
- package/src/styles/06-components/_components.edge-panel.scss +0 -0
- package/src/styles/06-components/_components.form-group.scss +0 -0
- package/src/styles/06-components/_components.form.scss +0 -0
- package/src/styles/06-components/_components.hero.scss +0 -0
- package/src/styles/06-components/_components.icon.scss +0 -0
- package/src/styles/06-components/_components.image-gallery.scss +0 -0
- package/src/styles/06-components/_components.input.scss +0 -0
- package/src/styles/06-components/_components.list-group.scss +0 -0
- package/src/styles/06-components/_components.list.scss +0 -0
- package/src/styles/06-components/_components.menu.scss +0 -0
- package/src/styles/06-components/_components.messages.scss +0 -0
- package/src/styles/06-components/_components.modal.scss +0 -0
- package/src/styles/06-components/_components.nav.scss +0 -0
- package/src/styles/06-components/_components.navbar.scss +0 -0
- package/src/styles/06-components/_components.pagination.scss +0 -0
- package/src/styles/06-components/_components.photoviewer.scss +0 -0
- package/src/styles/06-components/_components.popover.scss +0 -0
- package/src/styles/06-components/_components.product-review.scss +0 -0
- package/src/styles/06-components/_components.progress.scss +0 -0
- package/src/styles/06-components/_components.rating.scss +0 -0
- package/src/styles/06-components/_components.river.scss +0 -0
- package/src/styles/06-components/_components.sectionintro.scss +0 -0
- package/src/styles/06-components/_components.select.scss +0 -0
- package/src/styles/06-components/_components.side-menu.scss +0 -0
- package/src/styles/06-components/_components.skeleton.scss +0 -0
- package/src/styles/06-components/_components.spinner.scss +0 -0
- package/src/styles/06-components/_components.steps.scss +0 -0
- package/src/styles/06-components/_components.tabs.scss +0 -0
- package/src/styles/06-components/_components.testimonials.scss +0 -0
- package/src/styles/06-components/_components.todo.scss +0 -0
- package/src/styles/06-components/_components.toggle.scss +0 -0
- package/src/styles/06-components/_components.tooltip.scss +0 -0
- package/src/styles/06-components/_components.upload.scss +0 -0
- package/src/styles/06-components/_index.scss +0 -0
- package/src/styles/99-utilities/_index.scss +0 -0
- package/src/styles/99-utilities/_utilities.background.scss +0 -0
- package/src/styles/99-utilities/_utilities.border.scss +0 -0
- package/src/styles/99-utilities/_utilities.clearfix.scss +0 -0
- package/src/styles/99-utilities/_utilities.display.scss +0 -0
- package/src/styles/99-utilities/_utilities.flex.scss +0 -0
- package/src/styles/99-utilities/_utilities.link.scss +0 -0
- package/src/styles/99-utilities/_utilities.object-fit.scss +0 -0
- package/src/styles/99-utilities/_utilities.opacity.scss +0 -0
- package/src/styles/99-utilities/_utilities.overflow.scss +0 -0
- package/src/styles/99-utilities/_utilities.position.scss +0 -0
- package/src/styles/99-utilities/_utilities.scss +0 -0
- package/src/styles/99-utilities/_utilities.shadow.scss +0 -0
- package/src/styles/99-utilities/_utilities.sizes.scss +0 -0
- package/src/styles/99-utilities/_utilities.spacing.scss +0 -0
- package/src/styles/99-utilities/_utilities.text.scss +0 -0
- package/src/styles/99-utilities/_utilities.visibility.scss +0 -0
- package/src/styles/99-utilities/_utilities.visually-hidden.scss +0 -0
- package/src/styles/99-utilities/_utilities.z-index.scss +0 -0
- package/src/styles/index.scss +0 -0
- package/src/types/global.d.ts +17 -0
- package/dist/css/atomix.min.css +0 -6
- package/dist/css/atomix.min.css.map +0 -1
- package/dist/js/202.atomix.react.cjs.js +0 -2
- package/dist/js/202.atomix.react.cjs.js.map +0 -1
- package/dist/js/202.atomix.react.esm.js +0 -2
- package/dist/js/202.atomix.react.esm.js.map +0 -1
- package/dist/js/202.atomix.react.js +0 -2
- package/dist/js/202.atomix.react.js.map +0 -1
- package/dist/js/308.atomix.react.cjs.js +0 -2
- package/dist/js/308.atomix.react.cjs.js.map +0 -1
- package/dist/js/308.atomix.react.esm.js +0 -2
- package/dist/js/308.atomix.react.esm.js.map +0 -1
- package/dist/js/308.atomix.react.js +0 -2
- package/dist/js/308.atomix.react.js.map +0 -1
- package/dist/js/34.atomix.react.cjs.js +0 -2
- package/dist/js/34.atomix.react.cjs.js.map +0 -1
- package/dist/js/34.atomix.react.esm.js +0 -2
- package/dist/js/34.atomix.react.esm.js.map +0 -1
- package/dist/js/34.atomix.react.js +0 -2
- package/dist/js/34.atomix.react.js.map +0 -1
- package/dist/js/471.atomix.react.cjs.js +0 -2
- package/dist/js/471.atomix.react.cjs.js.map +0 -1
- package/dist/js/471.atomix.react.esm.js +0 -2
- package/dist/js/471.atomix.react.esm.js.map +0 -1
- package/dist/js/471.atomix.react.js +0 -2
- package/dist/js/471.atomix.react.js.map +0 -1
- package/dist/js/54.atomix.react.cjs.js +0 -2
- package/dist/js/54.atomix.react.cjs.js.map +0 -1
- package/dist/js/54.atomix.react.esm.js +0 -2
- package/dist/js/54.atomix.react.esm.js.map +0 -1
- package/dist/js/54.atomix.react.js +0 -2
- package/dist/js/54.atomix.react.js.map +0 -1
- package/dist/js/619.atomix.react.cjs.js +0 -2
- package/dist/js/619.atomix.react.cjs.js.map +0 -1
- package/dist/js/619.atomix.react.esm.js +0 -2
- package/dist/js/619.atomix.react.esm.js.map +0 -1
- package/dist/js/619.atomix.react.js +0 -2
- package/dist/js/619.atomix.react.js.map +0 -1
- package/dist/js/690.atomix.react.cjs.js +0 -2
- package/dist/js/690.atomix.react.cjs.js.map +0 -1
- package/dist/js/690.atomix.react.esm.js +0 -2
- package/dist/js/690.atomix.react.esm.js.map +0 -1
- package/dist/js/690.atomix.react.js +0 -2
- package/dist/js/690.atomix.react.js.map +0 -1
- package/dist/js/894.atomix.react.cjs.js +0 -2
- package/dist/js/894.atomix.react.esm.js +0 -2
- package/dist/js/894.atomix.react.esm.js.map +0 -1
- package/dist/js/894.atomix.react.js +0 -2
- package/dist/js/894.atomix.react.js.map +0 -1
- package/dist/js/897.atomix.react.cjs.js +0 -2
- package/dist/js/897.atomix.react.cjs.js.map +0 -1
- package/dist/js/897.atomix.react.esm.js +0 -2
- package/dist/js/897.atomix.react.esm.js.map +0 -1
- package/dist/js/897.atomix.react.js +0 -2
- package/dist/js/897.atomix.react.js.map +0 -1
- package/dist/js/atomix.react.cjs.js +0 -2
- package/dist/js/atomix.react.cjs.js.map +0 -1
- package/dist/js/atomix.react.js +0 -2
- package/dist/js/atomix.react.js.map +0 -1
- package/dist/js/minified.js +0 -0
- /package/dist/fonts/{33311918c95bc02cfcb1.woff → HelveticaNeue-Bold.33311918c95bc02cfcb1.woff} +0 -0
- /package/dist/fonts/{5bb2f179b9eb3479b077.eot → HelveticaNeue-Bold.5bb2f179b9eb3479b077.eot} +0 -0
- /package/dist/fonts/{82a7a6000e2c2ab2ec5c.woff2 → HelveticaNeue-Bold.82a7a6000e2c2ab2ec5c.woff2} +0 -0
- /package/dist/fonts/{fd66d70b84764f279e6a.ttf → HelveticaNeue-Bold.fd66d70b84764f279e6a.ttf} +0 -0
- /package/dist/fonts/{1ec349085efa62caa303.woff2 → HelveticaNeue-BoldItalic.1ec349085efa62caa303.woff2} +0 -0
- /package/dist/fonts/{576bbf31cdb2297b27b2.ttf → HelveticaNeue-BoldItalic.576bbf31cdb2297b27b2.ttf} +0 -0
- /package/dist/fonts/{6425aa0b60538ee25c68.woff → HelveticaNeue-BoldItalic.6425aa0b60538ee25c68.woff} +0 -0
- /package/dist/fonts/{fcefb320a4d49f66bb12.eot → HelveticaNeue-BoldItalic.fcefb320a4d49f66bb12.eot} +0 -0
- /package/dist/fonts/{413b33b6d0cbd31f8714.woff2 → HelveticaNeue-CondensedBlack.413b33b6d0cbd31f8714.woff2} +0 -0
- /package/dist/fonts/{83ef74d7fa1b36b3afd2.ttf → HelveticaNeue-CondensedBlack.83ef74d7fa1b36b3afd2.ttf} +0 -0
- /package/dist/fonts/{88bb1a07aeaed7b24844.eot → HelveticaNeue-CondensedBlack.88bb1a07aeaed7b24844.eot} +0 -0
- /package/dist/fonts/{df470b39be2d4a1f1ce1.woff → HelveticaNeue-CondensedBlack.df470b39be2d4a1f1ce1.woff} +0 -0
- /package/dist/fonts/{0368bc04e1a895283091.woff → HelveticaNeue-CondensedBold.0368bc04e1a895283091.woff} +0 -0
- /package/dist/fonts/{0c5c9ce9dec531aa6b29.ttf → HelveticaNeue-CondensedBold.0c5c9ce9dec531aa6b29.ttf} +0 -0
- /package/dist/fonts/{4ee1c663781c9449f03f.woff2 → HelveticaNeue-CondensedBold.4ee1c663781c9449f03f.woff2} +0 -0
- /package/dist/fonts/{ff75ad5d1cd4cbfb2485.eot → HelveticaNeue-CondensedBold.ff75ad5d1cd4cbfb2485.eot} +0 -0
- /package/dist/fonts/{877cf3e897d614d4e5cf.ttf → HelveticaNeue-Italic.877cf3e897d614d4e5cf.ttf} +0 -0
- /package/dist/fonts/{cb9059c1418f52b5cfb2.woff → HelveticaNeue-Italic.cb9059c1418f52b5cfb2.woff} +0 -0
- /package/dist/fonts/{d11e8912a7532aae2979.eot → HelveticaNeue-Italic.d11e8912a7532aae2979.eot} +0 -0
- /package/dist/fonts/{fcaafb0a12fec09b1f45.woff2 → HelveticaNeue-Italic.fcaafb0a12fec09b1f45.woff2} +0 -0
- /package/dist/fonts/{6960ee84f2d467663c34.ttf → HelveticaNeue-Light.6960ee84f2d467663c34.ttf} +0 -0
- /package/dist/fonts/{757b7e91c3555d312bbc.woff → HelveticaNeue-Light.757b7e91c3555d312bbc.woff} +0 -0
- /package/dist/fonts/{7a4ea74d7f43e6ad17d8.eot → HelveticaNeue-Light.7a4ea74d7f43e6ad17d8.eot} +0 -0
- /package/dist/fonts/{c7508e4a1d238d320671.woff2 → HelveticaNeue-Light.c7508e4a1d238d320671.woff2} +0 -0
- /package/dist/fonts/{0f355f1a3d693807d51c.ttf → HelveticaNeue-LightItalic.0f355f1a3d693807d51c.ttf} +0 -0
- /package/dist/fonts/{945eac608d80a8166c05.eot → HelveticaNeue-LightItalic.945eac608d80a8166c05.eot} +0 -0
- /package/dist/fonts/{9b837d45dc4c53f310f4.woff2 → HelveticaNeue-LightItalic.9b837d45dc4c53f310f4.woff2} +0 -0
- /package/dist/fonts/{d852d165ab8f7b51e9d9.woff → HelveticaNeue-LightItalic.d852d165ab8f7b51e9d9.woff} +0 -0
- /package/dist/fonts/{285bdad411fbc4cec20d.ttf → HelveticaNeue-Medium.285bdad411fbc4cec20d.ttf} +0 -0
- /package/dist/fonts/{2f638dd07520c36c8d6e.woff → HelveticaNeue-Medium.2f638dd07520c36c8d6e.woff} +0 -0
- /package/dist/fonts/{4cb90386814103ea6b7f.woff2 → HelveticaNeue-Medium.4cb90386814103ea6b7f.woff2} +0 -0
- /package/dist/fonts/{4f4da6c0a5ff8b4ed6c6.eot → HelveticaNeue-Medium.4f4da6c0a5ff8b4ed6c6.eot} +0 -0
- /package/dist/fonts/{253918dde62b7326497e.woff → HelveticaNeue-MediumItalic.253918dde62b7326497e.woff} +0 -0
- /package/dist/fonts/{9393172982d357731e53.eot → HelveticaNeue-MediumItalic.9393172982d357731e53.eot} +0 -0
- /package/dist/fonts/{bbc297fd58abb3c9f79a.ttf → HelveticaNeue-MediumItalic.bbc297fd58abb3c9f79a.ttf} +0 -0
- /package/dist/fonts/{fdf78119a6d3da284d71.woff2 → HelveticaNeue-MediumItalic.fdf78119a6d3da284d71.woff2} +0 -0
- /package/dist/fonts/{20ab2fe497fc18409e34.woff → HelveticaNeue-Thin.20ab2fe497fc18409e34.woff} +0 -0
- /package/dist/fonts/{61f88f014cff75e8080e.woff2 → HelveticaNeue-Thin.61f88f014cff75e8080e.woff2} +0 -0
- /package/dist/fonts/{a5dbd3668c70794eda4d.ttf → HelveticaNeue-Thin.a5dbd3668c70794eda4d.ttf} +0 -0
- /package/dist/fonts/{de48437d7037bf4c1dd1.eot → HelveticaNeue-Thin.de48437d7037bf4c1dd1.eot} +0 -0
- /package/dist/fonts/{30c9e80ac7b5699e21cc.woff2 → HelveticaNeue-ThinItalic.30c9e80ac7b5699e21cc.woff2} +0 -0
- /package/dist/fonts/{35321e45ab1847c10daa.ttf → HelveticaNeue-ThinItalic.35321e45ab1847c10daa.ttf} +0 -0
- /package/dist/fonts/{3d2344627a22c58c9273.woff → HelveticaNeue-ThinItalic.3d2344627a22c58c9273.woff} +0 -0
- /package/dist/fonts/{6192a85735f85ab06ed3.eot → HelveticaNeue-ThinItalic.6192a85735f85ab06ed3.eot} +0 -0
- /package/dist/fonts/{585df04788e75f68f0af.eot → HelveticaNeue-UltraLight.585df04788e75f68f0af.eot} +0 -0
- /package/dist/fonts/{70685e4ff0b8497285e5.woff2 → HelveticaNeue-UltraLight.70685e4ff0b8497285e5.woff2} +0 -0
- /package/dist/fonts/{a74f60429e1436a0a540.woff → HelveticaNeue-UltraLight.a74f60429e1436a0a540.woff} +0 -0
- /package/dist/fonts/{c0c00fe55a6c5b4bdcc3.ttf → HelveticaNeue-UltraLight.c0c00fe55a6c5b4bdcc3.ttf} +0 -0
- /package/dist/fonts/{0120456a11178b96ab66.woff → HelveticaNeue-UltraLightItalic.0120456a11178b96ab66.woff} +0 -0
- /package/dist/fonts/{8109c3cad37ea32e4d32.ttf → HelveticaNeue-UltraLightItalic.8109c3cad37ea32e4d32.ttf} +0 -0
- /package/dist/fonts/{bbefaa1b3e495e24cae7.woff2 → HelveticaNeue-UltraLightItalic.bbefaa1b3e495e24cae7.woff2} +0 -0
- /package/dist/fonts/{f79a05c25b9f6148e22c.eot → HelveticaNeue-UltraLightItalic.f79a05c25b9f6148e22c.eot} +0 -0
- /package/dist/fonts/{5b5bd27f87c5700e93ad.ttf → HelveticaNeue.5b5bd27f87c5700e93ad.ttf} +0 -0
- /package/dist/fonts/{5ff5446a28faf327d927.woff → HelveticaNeue.5ff5446a28faf327d927.woff} +0 -0
- /package/dist/fonts/{6751f7983394e890189f.eot → HelveticaNeue.6751f7983394e890189f.eot} +0 -0
- /package/dist/fonts/{f2af4f9e9e7805d25995.woff2 → HelveticaNeue.f2af4f9e9e7805d25995.woff2} +0 -0
- /package/dist/{js/main.js → types/components/Tooltip/scripts/bundle.d.ts} +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_shohojdhara_atomix=self.webpackChunk_shohojdhara_atomix||[]).push([[202],{202:(t,e,i)=>{i.r(e),i.d(e,{default:()=>l,initializeSteps:()=>c});var s=i(188);const n={activeIndex:0,vertical:!1};class h{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.selector=t||s.UT.SELECTORS.STEPS,this.$element="string"==typeof t?document.querySelector(t):t,this.options={...n,...e},this.$items=null,this.activeIndex=this.options.activeIndex||0,this._initialize()}_initialize(){this.$element&&(this._initializeElements(),this.options.vertical&&!this.$element.classList.contains(s.UT.CLASSES.VERTICAL)&&this.$element.classList.add(s.UT.CLASSES.VERTICAL),this.setActive(this.activeIndex))}_initializeElements(){this.$element&&(this.$items=this.$element.querySelectorAll(s.UT.SELECTORS.ITEM))}setActive(t){this.$items&&t>=0&&this.$items.length>t&&(this.$items.forEach(((e,i)=>{t>i?(e.classList.add(s.UT.CLASSES.ACTIVE),e.classList.add(s.UT.CLASSES.COMPLETED)):i===t?(e.classList.add(s.UT.CLASSES.ACTIVE),e.classList.remove(s.UT.CLASSES.COMPLETED)):(e.classList.remove(s.UT.CLASSES.ACTIVE),e.classList.remove(s.UT.CLASSES.COMPLETED))})),this.activeIndex=t)}next(){(this.$items?.length||0)-1>this.activeIndex&&this.setActive(this.activeIndex+1)}previous(){this.activeIndex>0&&this.setActive(this.activeIndex-1)}destroy(){}}function c(){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const e=[],i=document.querySelectorAll(arguments.length>0&&void 0!==arguments[0]?arguments[0]:s.UT.SELECTORS.STEPS);return i.length?(i.forEach((i=>{try{const s=new h(i,t);e.push(s)}catch(s){}})),e):e}const l=h}}]);
|
|
2
|
-
//# sourceMappingURL=202.atomix.react.cjs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"js/202.atomix.react.cjs.js","mappings":"yLAwBA,MAAMA,EAAgC,CACpCC,YAAa,EACbC,UAAU,GAMZ,MAAMC,EAYJC,WAAAA,CAAYC,GAA0C,IAAdC,EAAOC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACjDG,KAAKL,SAAWA,GAAYM,EAAAA,GAAMC,UAAUD,MAC5CD,KAAKG,SACiB,iBAAbR,EACHS,SAASC,cAA2BV,GACpCA,EACNK,KAAKJ,QAAU,IAAKN,KAAoBM,GACxCI,KAAKM,OAAS,KACdN,KAAKT,YAAcS,KAAKJ,QAAQL,aAAe,EAC/CS,KAAKO,aACP,CAKQA,WAAAA,GACDP,KAAKG,WAEVH,KAAKQ,sBAGDR,KAAKJ,QAAQJ,WAAaQ,KAAKG,SAASM,UAAUC,SAAST,EAAAA,GAAMU,QAAQC,WAC3EZ,KAAKG,SAASM,UAAUI,IAAIZ,EAAAA,GAAMU,QAAQC,UAG5CZ,KAAKc,UAAUd,KAAKT,aACtB,CAKQiB,mBAAAA,GACDR,KAAKG,WAEVH,KAAKM,OAASN,KAAKG,SAASY,iBAA8Bd,EAAAA,GAAMC,UAAUc,MAC5E,CAMOF,SAAAA,CAAUG,GACVjB,KAAKM,QAAUW,GAAQ,GAAcjB,KAAKM,OAAOR,OAArBmB,IAGjCjB,KAAKM,OAAOY,SAAQ,CAACC,EAAMC,KACjBH,EAAJG,GAEFD,EAAKV,UAAUI,IAAIZ,EAAAA,GAAMU,QAAQU,QACjCF,EAAKV,UAAUI,IAAIZ,EAAAA,GAAMU,QAAQW,YACxBF,IAAMH,GAEfE,EAAKV,UAAUI,IAAIZ,EAAAA,GAAMU,QAAQU,QACjCF,EAAKV,UAAUc,OAAOtB,EAAAA,GAAMU,QAAQW,aAGpCH,EAAKV,UAAUc,OAAOtB,EAAAA,GAAMU,QAAQU,QACpCF,EAAKV,UAAUc,OAAOtB,EAAAA,GAAMU,QAAQW,WACtC,IAGFtB,KAAKT,YAAc0B,EACrB,CAKOO,IAAAA,IACmBxB,KAAKM,QAAQR,QAAU,GAAK,EAAhDE,KAAKT,aACPS,KAAKc,UAAUd,KAAKT,YAAc,EAEtC,CAKOkC,QAAAA,GACDzB,KAAKT,YAAc,GACrBS,KAAKc,UAAUd,KAAKT,YAAc,EAEtC,CAKOmC,OAAAA,GACL,EAUG,SAASC,IAAiF,IAA/B/B,EAAOC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC3E,MAAM+B,EAAkC,GAClCC,EAAgBzB,SAASW,iBAFOlB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGI,EAAAA,GAAMC,UAAUD,OAIzD,OAAK4B,EAAc/B,QAEnB+B,EAAcX,SAASY,IACrB,IACE,MAAMC,EAAW,IAAItC,EAAMqC,EAASlC,GACpCgC,EAAeI,KAAKD,EACtB,CAAE,MAAOE,GAET,KAGKL,GAX2BA,CAYpC,CAEA,S","sources":["webpack://@shohojdhara/atomix/./src/components/Steps/scripts/index.ts"],"sourcesContent":["import { STEPS } from '../../../lib/constants/components';\n\n/**\n * Interface for Steps options\n */\ninterface StepsOptions {\n activeIndex?: number;\n vertical?: boolean;\n [key: string]: any;\n}\n\n/**\n * Interface for Steps instance\n */\ninterface StepsInstance {\n setActive: (index: number) => void;\n next: () => void;\n previous: () => void;\n destroy: () => void;\n}\n\n/**\n * Default options for the Steps component\n */\nconst DEFAULT_OPTIONS: StepsOptions = {\n activeIndex: 0,\n vertical: false\n};\n\n/**\n * Class representing a Steps component\n */\nclass Steps implements StepsInstance {\n private selector: string | Element;\n private $element: HTMLElement | null;\n private options: StepsOptions;\n private $items: NodeListOf<HTMLElement> | null;\n private activeIndex: number;\n\n /**\n * Creates an instance of Steps\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n */\n constructor(selector: string | Element, options = {}) {\n this.selector = selector || STEPS.SELECTORS.STEPS;\n this.$element =\n typeof selector === 'string'\n ? document.querySelector<HTMLElement>(selector)\n : selector as HTMLElement;\n this.options = { ...DEFAULT_OPTIONS, ...options } as StepsOptions;\n this.$items = null;\n this.activeIndex = this.options.activeIndex || 0;\n this._initialize();\n }\n\n /**\n * Initialize the steps component\n */\n private _initialize(): void {\n if (!this.$element) return;\n\n this._initializeElements();\n \n // Set vertical mode if specified\n if (this.options.vertical && !this.$element.classList.contains(STEPS.CLASSES.VERTICAL)) {\n this.$element.classList.add(STEPS.CLASSES.VERTICAL);\n }\n \n this.setActive(this.activeIndex);\n }\n\n /**\n * Initialize DOM elements\n */\n private _initializeElements(): void {\n if (!this.$element) return;\n \n this.$items = this.$element.querySelectorAll<HTMLElement>(STEPS.SELECTORS.ITEM);\n }\n\n /**\n * Sets the active step\n * @param index - The index of the step to make active\n */\n public setActive(index: number): void {\n if (!this.$items || index < 0 || index >= this.$items.length) return;\n \n // Update all items\n this.$items.forEach((item, i) => {\n if (i < index) {\n // Steps before active are completed\n item.classList.add(STEPS.CLASSES.ACTIVE);\n item.classList.add(STEPS.CLASSES.COMPLETED);\n } else if (i === index) {\n // Current step is active but not completed\n item.classList.add(STEPS.CLASSES.ACTIVE);\n item.classList.remove(STEPS.CLASSES.COMPLETED);\n } else {\n // Future steps are neither active nor completed\n item.classList.remove(STEPS.CLASSES.ACTIVE);\n item.classList.remove(STEPS.CLASSES.COMPLETED);\n }\n });\n \n this.activeIndex = index;\n }\n\n /**\n * Moves to the next step\n */\n public next(): void {\n if (this.activeIndex < (this.$items?.length || 0) - 1) {\n this.setActive(this.activeIndex + 1);\n }\n }\n\n /**\n * Moves to the previous step\n */\n public previous(): void {\n if (this.activeIndex > 0) {\n this.setActive(this.activeIndex - 1);\n }\n }\n\n /**\n * Clean up event listeners\n */\n public destroy(): void {\n // No specific cleanup needed for steps component\n }\n}\n\n/**\n * Initialize all steps in the document\n * @param {string|Element} selector - CSS selector string or DOM Element\n * @param {Object} options - Custom options to override defaults\n * @returns {StepsInstance[]} Array of Steps instances\n */\nexport function initializeSteps(selector = STEPS.SELECTORS.STEPS, options = {}): StepsInstance[] {\n const stepsInstances: StepsInstance[] = [];\n const stepsElements = document.querySelectorAll<HTMLElement>(selector);\n\n if (!stepsElements.length) return stepsInstances;\n\n stepsElements.forEach((element) => {\n try {\n const instance = new Steps(element, options);\n stepsInstances.push(instance);\n } catch (error) {\n console.error('Error initializing steps:', error);\n }\n });\n\n return stepsInstances;\n}\n\nexport default Steps; "],"names":["DEFAULT_OPTIONS","activeIndex","vertical","Steps","constructor","selector","options","arguments","length","undefined","this","STEPS","SELECTORS","$element","document","querySelector","$items","_initialize","_initializeElements","classList","contains","CLASSES","VERTICAL","add","setActive","querySelectorAll","ITEM","index","forEach","item","i","ACTIVE","COMPLETED","remove","next","previous","destroy","initializeSteps","stepsInstances","stepsElements","element","instance","push","error"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export const __webpack_id__=202;export const __webpack_ids__=[202];export const __webpack_modules__={202:(t,e,i)=>{i.r(e),i.d(e,{default:()=>a,initializeSteps:()=>l});var s=i(188);const n={activeIndex:0,vertical:!1};class c{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.selector=t||s.UT.SELECTORS.STEPS,this.$element="string"==typeof t?document.querySelector(t):t,this.options={...n,...e},this.$items=null,this.activeIndex=this.options.activeIndex||0,this._initialize()}_initialize(){this.$element&&(this._initializeElements(),this.options.vertical&&!this.$element.classList.contains(s.UT.CLASSES.VERTICAL)&&this.$element.classList.add(s.UT.CLASSES.VERTICAL),this.setActive(this.activeIndex))}_initializeElements(){this.$element&&(this.$items=this.$element.querySelectorAll(s.UT.SELECTORS.ITEM))}setActive(t){this.$items&&t>=0&&this.$items.length>t&&(this.$items.forEach(((e,i)=>{t>i?(e.classList.add(s.UT.CLASSES.ACTIVE),e.classList.add(s.UT.CLASSES.COMPLETED)):i===t?(e.classList.add(s.UT.CLASSES.ACTIVE),e.classList.remove(s.UT.CLASSES.COMPLETED)):(e.classList.remove(s.UT.CLASSES.ACTIVE),e.classList.remove(s.UT.CLASSES.COMPLETED))})),this.activeIndex=t)}next(){(this.$items?.length||0)-1>this.activeIndex&&this.setActive(this.activeIndex+1)}previous(){this.activeIndex>0&&this.setActive(this.activeIndex-1)}destroy(){}}function l(){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const e=[],i=document.querySelectorAll(arguments.length>0&&void 0!==arguments[0]?arguments[0]:s.UT.SELECTORS.STEPS);return i.length?(i.forEach((i=>{try{const s=new c(i,t);e.push(s)}catch(s){}})),e):e}const a=c}};
|
|
2
|
-
//# sourceMappingURL=202.atomix.react.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"js/202.atomix.react.esm.js","mappings":"oLAwBA,MAAMA,EAAgC,CACpCC,YAAa,EACbC,UAAU,GAMZ,MAAMC,EAYJC,WAAAA,CAAYC,GAA0C,IAAdC,EAAOC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACjDG,KAAKL,SAAWA,GAAYM,EAAAA,GAAMC,UAAUD,MAC5CD,KAAKG,SACiB,iBAAbR,EACHS,SAASC,cAA2BV,GACpCA,EACNK,KAAKJ,QAAU,IAAKN,KAAoBM,GACxCI,KAAKM,OAAS,KACdN,KAAKT,YAAcS,KAAKJ,QAAQL,aAAe,EAC/CS,KAAKO,aACP,CAKQA,WAAAA,GACDP,KAAKG,WAEVH,KAAKQ,sBAGDR,KAAKJ,QAAQJ,WAAaQ,KAAKG,SAASM,UAAUC,SAAST,EAAAA,GAAMU,QAAQC,WAC3EZ,KAAKG,SAASM,UAAUI,IAAIZ,EAAAA,GAAMU,QAAQC,UAG5CZ,KAAKc,UAAUd,KAAKT,aACtB,CAKQiB,mBAAAA,GACDR,KAAKG,WAEVH,KAAKM,OAASN,KAAKG,SAASY,iBAA8Bd,EAAAA,GAAMC,UAAUc,MAC5E,CAMOF,SAAAA,CAAUG,GACVjB,KAAKM,QAAUW,GAAQ,GAAcjB,KAAKM,OAAOR,OAArBmB,IAGjCjB,KAAKM,OAAOY,SAAQ,CAACC,EAAMC,KACjBH,EAAJG,GAEFD,EAAKV,UAAUI,IAAIZ,EAAAA,GAAMU,QAAQU,QACjCF,EAAKV,UAAUI,IAAIZ,EAAAA,GAAMU,QAAQW,YACxBF,IAAMH,GAEfE,EAAKV,UAAUI,IAAIZ,EAAAA,GAAMU,QAAQU,QACjCF,EAAKV,UAAUc,OAAOtB,EAAAA,GAAMU,QAAQW,aAGpCH,EAAKV,UAAUc,OAAOtB,EAAAA,GAAMU,QAAQU,QACpCF,EAAKV,UAAUc,OAAOtB,EAAAA,GAAMU,QAAQW,WACtC,IAGFtB,KAAKT,YAAc0B,EACrB,CAKOO,IAAAA,IACmBxB,KAAKM,QAAQR,QAAU,GAAK,EAAhDE,KAAKT,aACPS,KAAKc,UAAUd,KAAKT,YAAc,EAEtC,CAKOkC,QAAAA,GACDzB,KAAKT,YAAc,GACrBS,KAAKc,UAAUd,KAAKT,YAAc,EAEtC,CAKOmC,OAAAA,GACL,EAUG,SAASC,IAAiF,IAA/B/B,EAAOC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC3E,MAAM+B,EAAkC,GAClCC,EAAgBzB,SAASW,iBAFOlB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGI,EAAAA,GAAMC,UAAUD,OAIzD,OAAK4B,EAAc/B,QAEnB+B,EAAcX,SAASY,IACrB,IACE,MAAMC,EAAW,IAAItC,EAAMqC,EAASlC,GACpCgC,EAAeI,KAAKD,EACtB,CAAE,MAAOE,GAET,KAGKL,GAX2BA,CAYpC,CAEA,S","sources":["webpack://@shohojdhara/atomix/./src/components/Steps/scripts/index.ts"],"sourcesContent":["import { STEPS } from '../../../lib/constants/components';\n\n/**\n * Interface for Steps options\n */\ninterface StepsOptions {\n activeIndex?: number;\n vertical?: boolean;\n [key: string]: any;\n}\n\n/**\n * Interface for Steps instance\n */\ninterface StepsInstance {\n setActive: (index: number) => void;\n next: () => void;\n previous: () => void;\n destroy: () => void;\n}\n\n/**\n * Default options for the Steps component\n */\nconst DEFAULT_OPTIONS: StepsOptions = {\n activeIndex: 0,\n vertical: false\n};\n\n/**\n * Class representing a Steps component\n */\nclass Steps implements StepsInstance {\n private selector: string | Element;\n private $element: HTMLElement | null;\n private options: StepsOptions;\n private $items: NodeListOf<HTMLElement> | null;\n private activeIndex: number;\n\n /**\n * Creates an instance of Steps\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n */\n constructor(selector: string | Element, options = {}) {\n this.selector = selector || STEPS.SELECTORS.STEPS;\n this.$element =\n typeof selector === 'string'\n ? document.querySelector<HTMLElement>(selector)\n : selector as HTMLElement;\n this.options = { ...DEFAULT_OPTIONS, ...options } as StepsOptions;\n this.$items = null;\n this.activeIndex = this.options.activeIndex || 0;\n this._initialize();\n }\n\n /**\n * Initialize the steps component\n */\n private _initialize(): void {\n if (!this.$element) return;\n\n this._initializeElements();\n \n // Set vertical mode if specified\n if (this.options.vertical && !this.$element.classList.contains(STEPS.CLASSES.VERTICAL)) {\n this.$element.classList.add(STEPS.CLASSES.VERTICAL);\n }\n \n this.setActive(this.activeIndex);\n }\n\n /**\n * Initialize DOM elements\n */\n private _initializeElements(): void {\n if (!this.$element) return;\n \n this.$items = this.$element.querySelectorAll<HTMLElement>(STEPS.SELECTORS.ITEM);\n }\n\n /**\n * Sets the active step\n * @param index - The index of the step to make active\n */\n public setActive(index: number): void {\n if (!this.$items || index < 0 || index >= this.$items.length) return;\n \n // Update all items\n this.$items.forEach((item, i) => {\n if (i < index) {\n // Steps before active are completed\n item.classList.add(STEPS.CLASSES.ACTIVE);\n item.classList.add(STEPS.CLASSES.COMPLETED);\n } else if (i === index) {\n // Current step is active but not completed\n item.classList.add(STEPS.CLASSES.ACTIVE);\n item.classList.remove(STEPS.CLASSES.COMPLETED);\n } else {\n // Future steps are neither active nor completed\n item.classList.remove(STEPS.CLASSES.ACTIVE);\n item.classList.remove(STEPS.CLASSES.COMPLETED);\n }\n });\n \n this.activeIndex = index;\n }\n\n /**\n * Moves to the next step\n */\n public next(): void {\n if (this.activeIndex < (this.$items?.length || 0) - 1) {\n this.setActive(this.activeIndex + 1);\n }\n }\n\n /**\n * Moves to the previous step\n */\n public previous(): void {\n if (this.activeIndex > 0) {\n this.setActive(this.activeIndex - 1);\n }\n }\n\n /**\n * Clean up event listeners\n */\n public destroy(): void {\n // No specific cleanup needed for steps component\n }\n}\n\n/**\n * Initialize all steps in the document\n * @param {string|Element} selector - CSS selector string or DOM Element\n * @param {Object} options - Custom options to override defaults\n * @returns {StepsInstance[]} Array of Steps instances\n */\nexport function initializeSteps(selector = STEPS.SELECTORS.STEPS, options = {}): StepsInstance[] {\n const stepsInstances: StepsInstance[] = [];\n const stepsElements = document.querySelectorAll<HTMLElement>(selector);\n\n if (!stepsElements.length) return stepsInstances;\n\n stepsElements.forEach((element) => {\n try {\n const instance = new Steps(element, options);\n stepsInstances.push(instance);\n } catch (error) {\n console.error('Error initializing steps:', error);\n }\n });\n\n return stepsInstances;\n}\n\nexport default Steps; "],"names":["DEFAULT_OPTIONS","activeIndex","vertical","Steps","constructor","selector","options","arguments","length","undefined","this","STEPS","SELECTORS","$element","document","querySelector","$items","_initialize","_initializeElements","classList","contains","CLASSES","VERTICAL","add","setActive","querySelectorAll","ITEM","index","forEach","item","i","ACTIVE","COMPLETED","remove","next","previous","destroy","initializeSteps","stepsInstances","stepsElements","element","instance","push","error"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(this.webpackChunkAtomix=this.webpackChunkAtomix||[]).push([[202],{202:(t,e,i)=>{i.r(e),i.d(e,{default:()=>l,initializeSteps:()=>h});var s=i(188);const n={activeIndex:0,vertical:!1};class c{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.selector=t||s.UT.SELECTORS.STEPS,this.$element="string"==typeof t?document.querySelector(t):t,this.options={...n,...e},this.$items=null,this.activeIndex=this.options.activeIndex||0,this._initialize()}_initialize(){this.$element&&(this._initializeElements(),this.options.vertical&&!this.$element.classList.contains(s.UT.CLASSES.VERTICAL)&&this.$element.classList.add(s.UT.CLASSES.VERTICAL),this.setActive(this.activeIndex))}_initializeElements(){this.$element&&(this.$items=this.$element.querySelectorAll(s.UT.SELECTORS.ITEM))}setActive(t){this.$items&&t>=0&&this.$items.length>t&&(this.$items.forEach(((e,i)=>{t>i?(e.classList.add(s.UT.CLASSES.ACTIVE),e.classList.add(s.UT.CLASSES.COMPLETED)):i===t?(e.classList.add(s.UT.CLASSES.ACTIVE),e.classList.remove(s.UT.CLASSES.COMPLETED)):(e.classList.remove(s.UT.CLASSES.ACTIVE),e.classList.remove(s.UT.CLASSES.COMPLETED))})),this.activeIndex=t)}next(){(this.$items?.length||0)-1>this.activeIndex&&this.setActive(this.activeIndex+1)}previous(){this.activeIndex>0&&this.setActive(this.activeIndex-1)}destroy(){}}function h(){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const e=[],i=document.querySelectorAll(arguments.length>0&&void 0!==arguments[0]?arguments[0]:s.UT.SELECTORS.STEPS);return i.length?(i.forEach((i=>{try{const s=new c(i,t);e.push(s)}catch(s){}})),e):e}const l=c}}]);
|
|
2
|
-
//# sourceMappingURL=202.atomix.react.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"js/202.atomix.react.js","mappings":"+JAwBA,MAAMA,EAAgC,CACpCC,YAAa,EACbC,UAAU,GAMZ,MAAMC,EAYJC,WAAAA,CAAYC,GAA0C,IAAdC,EAAOC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACjDG,KAAKL,SAAWA,GAAYM,EAAAA,GAAMC,UAAUD,MAC5CD,KAAKG,SACiB,iBAAbR,EACHS,SAASC,cAA2BV,GACpCA,EACNK,KAAKJ,QAAU,IAAKN,KAAoBM,GACxCI,KAAKM,OAAS,KACdN,KAAKT,YAAcS,KAAKJ,QAAQL,aAAe,EAC/CS,KAAKO,aACP,CAKQA,WAAAA,GACDP,KAAKG,WAEVH,KAAKQ,sBAGDR,KAAKJ,QAAQJ,WAAaQ,KAAKG,SAASM,UAAUC,SAAST,EAAAA,GAAMU,QAAQC,WAC3EZ,KAAKG,SAASM,UAAUI,IAAIZ,EAAAA,GAAMU,QAAQC,UAG5CZ,KAAKc,UAAUd,KAAKT,aACtB,CAKQiB,mBAAAA,GACDR,KAAKG,WAEVH,KAAKM,OAASN,KAAKG,SAASY,iBAA8Bd,EAAAA,GAAMC,UAAUc,MAC5E,CAMOF,SAAAA,CAAUG,GACVjB,KAAKM,QAAUW,GAAQ,GAAcjB,KAAKM,OAAOR,OAArBmB,IAGjCjB,KAAKM,OAAOY,SAAQ,CAACC,EAAMC,KACjBH,EAAJG,GAEFD,EAAKV,UAAUI,IAAIZ,EAAAA,GAAMU,QAAQU,QACjCF,EAAKV,UAAUI,IAAIZ,EAAAA,GAAMU,QAAQW,YACxBF,IAAMH,GAEfE,EAAKV,UAAUI,IAAIZ,EAAAA,GAAMU,QAAQU,QACjCF,EAAKV,UAAUc,OAAOtB,EAAAA,GAAMU,QAAQW,aAGpCH,EAAKV,UAAUc,OAAOtB,EAAAA,GAAMU,QAAQU,QACpCF,EAAKV,UAAUc,OAAOtB,EAAAA,GAAMU,QAAQW,WACtC,IAGFtB,KAAKT,YAAc0B,EACrB,CAKOO,IAAAA,IACmBxB,KAAKM,QAAQR,QAAU,GAAK,EAAhDE,KAAKT,aACPS,KAAKc,UAAUd,KAAKT,YAAc,EAEtC,CAKOkC,QAAAA,GACDzB,KAAKT,YAAc,GACrBS,KAAKc,UAAUd,KAAKT,YAAc,EAEtC,CAKOmC,OAAAA,GACL,EAUG,SAASC,IAAiF,IAA/B/B,EAAOC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC3E,MAAM+B,EAAkC,GAClCC,EAAgBzB,SAASW,iBAFOlB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGI,EAAAA,GAAMC,UAAUD,OAIzD,OAAK4B,EAAc/B,QAEnB+B,EAAcX,SAASY,IACrB,IACE,MAAMC,EAAW,IAAItC,EAAMqC,EAASlC,GACpCgC,EAAeI,KAAKD,EACtB,CAAE,MAAOE,GAET,KAGKL,GAX2BA,CAYpC,CAEA,S","sources":["webpack://Atomix/./src/components/Steps/scripts/index.ts"],"sourcesContent":["import { STEPS } from '../../../lib/constants/components';\n\n/**\n * Interface for Steps options\n */\ninterface StepsOptions {\n activeIndex?: number;\n vertical?: boolean;\n [key: string]: any;\n}\n\n/**\n * Interface for Steps instance\n */\ninterface StepsInstance {\n setActive: (index: number) => void;\n next: () => void;\n previous: () => void;\n destroy: () => void;\n}\n\n/**\n * Default options for the Steps component\n */\nconst DEFAULT_OPTIONS: StepsOptions = {\n activeIndex: 0,\n vertical: false\n};\n\n/**\n * Class representing a Steps component\n */\nclass Steps implements StepsInstance {\n private selector: string | Element;\n private $element: HTMLElement | null;\n private options: StepsOptions;\n private $items: NodeListOf<HTMLElement> | null;\n private activeIndex: number;\n\n /**\n * Creates an instance of Steps\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n */\n constructor(selector: string | Element, options = {}) {\n this.selector = selector || STEPS.SELECTORS.STEPS;\n this.$element =\n typeof selector === 'string'\n ? document.querySelector<HTMLElement>(selector)\n : selector as HTMLElement;\n this.options = { ...DEFAULT_OPTIONS, ...options } as StepsOptions;\n this.$items = null;\n this.activeIndex = this.options.activeIndex || 0;\n this._initialize();\n }\n\n /**\n * Initialize the steps component\n */\n private _initialize(): void {\n if (!this.$element) return;\n\n this._initializeElements();\n \n // Set vertical mode if specified\n if (this.options.vertical && !this.$element.classList.contains(STEPS.CLASSES.VERTICAL)) {\n this.$element.classList.add(STEPS.CLASSES.VERTICAL);\n }\n \n this.setActive(this.activeIndex);\n }\n\n /**\n * Initialize DOM elements\n */\n private _initializeElements(): void {\n if (!this.$element) return;\n \n this.$items = this.$element.querySelectorAll<HTMLElement>(STEPS.SELECTORS.ITEM);\n }\n\n /**\n * Sets the active step\n * @param index - The index of the step to make active\n */\n public setActive(index: number): void {\n if (!this.$items || index < 0 || index >= this.$items.length) return;\n \n // Update all items\n this.$items.forEach((item, i) => {\n if (i < index) {\n // Steps before active are completed\n item.classList.add(STEPS.CLASSES.ACTIVE);\n item.classList.add(STEPS.CLASSES.COMPLETED);\n } else if (i === index) {\n // Current step is active but not completed\n item.classList.add(STEPS.CLASSES.ACTIVE);\n item.classList.remove(STEPS.CLASSES.COMPLETED);\n } else {\n // Future steps are neither active nor completed\n item.classList.remove(STEPS.CLASSES.ACTIVE);\n item.classList.remove(STEPS.CLASSES.COMPLETED);\n }\n });\n \n this.activeIndex = index;\n }\n\n /**\n * Moves to the next step\n */\n public next(): void {\n if (this.activeIndex < (this.$items?.length || 0) - 1) {\n this.setActive(this.activeIndex + 1);\n }\n }\n\n /**\n * Moves to the previous step\n */\n public previous(): void {\n if (this.activeIndex > 0) {\n this.setActive(this.activeIndex - 1);\n }\n }\n\n /**\n * Clean up event listeners\n */\n public destroy(): void {\n // No specific cleanup needed for steps component\n }\n}\n\n/**\n * Initialize all steps in the document\n * @param {string|Element} selector - CSS selector string or DOM Element\n * @param {Object} options - Custom options to override defaults\n * @returns {StepsInstance[]} Array of Steps instances\n */\nexport function initializeSteps(selector = STEPS.SELECTORS.STEPS, options = {}): StepsInstance[] {\n const stepsInstances: StepsInstance[] = [];\n const stepsElements = document.querySelectorAll<HTMLElement>(selector);\n\n if (!stepsElements.length) return stepsInstances;\n\n stepsElements.forEach((element) => {\n try {\n const instance = new Steps(element, options);\n stepsInstances.push(instance);\n } catch (error) {\n console.error('Error initializing steps:', error);\n }\n });\n\n return stepsInstances;\n}\n\nexport default Steps; "],"names":["DEFAULT_OPTIONS","activeIndex","vertical","Steps","constructor","selector","options","arguments","length","undefined","this","STEPS","SELECTORS","$element","document","querySelector","$items","_initialize","_initializeElements","classList","contains","CLASSES","VERTICAL","add","setActive","querySelectorAll","ITEM","index","forEach","item","i","ACTIVE","COMPLETED","remove","next","previous","destroy","initializeSteps","stepsInstances","stepsElements","element","instance","push","error"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_shohojdhara_atomix=self.webpackChunk_shohojdhara_atomix||[]).push([[308],{308:(e,t,s)=>{s.r(t),s.d(t,{default:()=>r,initializeUploads:()=>o});var i=s(188);const n={disabled:!1,maxSizeInMB:5,acceptedFileTypes:["application/pdf","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","image/jpeg","image/png"],multiple:!1};class l{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.selector=e||i.oH.SELECTORS.UPLOAD,this.$element="string"==typeof e?document.querySelector(e):e,this.options={...n,...t},this.$input=null,this.$button=null,this.$loader=null,this.$loaderTitle=null,this.$loaderProgress=null,this.$loaderClose=null,this.currentFile=null,this.dragCounter=0,this._initialize()}_initialize(){this.$element&&(this._createHiddenInput(),this.$button=this.$element.querySelector(i.oH.SELECTORS.BUTTON),this.$loader=this.$element.querySelector(i.oH.SELECTORS.LOADER),this.$loaderTitle=this.$element?.querySelector(i.oH.SELECTORS.LOADER_TITLE),this.$loaderProgress=this.$element?.querySelector(i.oH.SELECTORS.LOADER_PROGRESS),this.$loaderClose=this.$element?.querySelector(i.oH.SELECTORS.LOADER_CLOSE),this.options.disabled&&this.disable(),this._setupEventListeners())}_createHiddenInput(){if(!this.$element)return;const e=document.createElement("input");e.type="file",e.style.display="none",e.accept=this.options.acceptedFileTypes?.join(",")||"",e.multiple=!!this.options.multiple,this.$element.appendChild(e),this.$input=e}_setupEventListeners(){this.$element&&this.$input&&this.$button&&(this.$button.addEventListener("click",this._handleButtonClick.bind(this)),this.$input.addEventListener("change",this._handleFileSelect.bind(this)),this.$element.addEventListener("dragenter",this._handleDragEnter.bind(this)),this.$element.addEventListener("dragleave",this._handleDragLeave.bind(this)),this.$element.addEventListener("dragover",this._handleDragOver.bind(this)),this.$element.addEventListener("drop",this._handleDrop.bind(this)),this.$loaderClose&&this.$loaderClose.addEventListener("click",this._handleClose.bind(this)))}_handleButtonClick(e){e.preventDefault(),this.$input&&!this.options.disabled&&this.$input.click()}_handleFileSelect(e){if(!this.$input?.files?.length)return;const t=Array.from(this.$input.files);this._processFiles(t)}_handleDragEnter(e){e.preventDefault(),this.options.disabled||(this.dragCounter++,1===this.dragCounter&&this.$element?.classList.add(i.oH.CLASSES.DRAGGING))}_handleDragLeave(e){e.preventDefault(),this.options.disabled||(this.dragCounter--,0===this.dragCounter&&this.$element?.classList.remove(i.oH.CLASSES.DRAGGING))}_handleDragOver(e){e.preventDefault()}_handleDrop(e){if(e.preventDefault(),this.options.disabled)return;if(this.dragCounter=0,this.$element?.classList.remove(i.oH.CLASSES.DRAGGING),!e.dataTransfer?.files.length)return;const t=Array.from(e.dataTransfer.files);this._processFiles(t)}_handleClose(e){e.preventDefault(),this.setStatus("idle"),this.setFile(null),this.$input&&(this.$input.value="")}_processFiles(e){if(!e.length)return;const t=(this.options.multiple?e:[e[0]]).filter((e=>this._validateFile(e)));t.length&&this.options.onFileSelect&&this.options.onFileSelect(t),t.length&&(this.setFile(t[0]),this._simulateUpload(t[0]))}_validateFile(e){if(e.size>1024*(this.options.maxSizeInMB||5)*1024)return this.setStatus("error",`File too large. Maximum size is ${this.options.maxSizeInMB}MB.`),!1;if(this.options.acceptedFileTypes?.length){if(!this.options.acceptedFileTypes.some((t=>{if(t.endsWith("/*")){const s=t.split("/")[0];return e.type.startsWith(s+"/")}return e.type===t})))return this.setStatus("error","File type not supported."),!1}return!0}_simulateUpload(e){this.setStatus("loading");let t=0;const s=setInterval((()=>{t+=5,100>t?(this.setProgress(t,Math.ceil((100-t)/5)+" seconds left"),this.options.onFileUpload&&this.options.onFileUpload(e,t)):(clearInterval(s),this.setStatus("success","Upload successful"),this.options.onFileUploadComplete&&this.options.onFileUploadComplete(e))}),500)}setFile(e){this.currentFile=e,e&&this.$loaderTitle&&(this.$loaderTitle.textContent=e.name)}setProgress(e,t){if(!this.$element||!this.$loaderProgress)return;this.$element.style.setProperty(i.oH.ATTRIBUTES.PERCENTAGE,""+e);const s=this.$element.querySelector(i.oH.SELECTORS.LOADER_PAR),n=this.$element.querySelector(i.oH.SELECTORS.LOADER_TIME);s&&(s.textContent=e+"%"),n&&t&&(n.textContent=t)}setStatus(e,t){if(this.$element){switch(this.$element.classList.remove(i.oH.CLASSES.LOADING,i.oH.CLASSES.SUCCESS,i.oH.CLASSES.ERROR),e){case"loading":this.$element.classList.add(i.oH.CLASSES.LOADING);break;case"success":this.$element.classList.add(i.oH.CLASSES.SUCCESS);break;case"error":this.$element.classList.add(i.oH.CLASSES.ERROR)}t&&this.$loaderProgress&&(this.$loaderProgress.textContent=t)}}disable(){this.$element&&this.$button&&(this.$element.classList.add(i.oH.CLASSES.DISABLED),this.$button.disabled=!0,this.options.disabled=!0)}enable(){this.$element&&this.$button&&(this.$element.classList.remove(i.oH.CLASSES.DISABLED),this.$button.disabled=!1,this.options.disabled=!1)}destroy(){this.$element&&this.$input&&this.$button&&(this.$button.removeEventListener("click",this._handleButtonClick.bind(this)),this.$input.removeEventListener("change",this._handleFileSelect.bind(this)),this.$element.removeEventListener("dragenter",this._handleDragEnter.bind(this)),this.$element.removeEventListener("dragleave",this._handleDragLeave.bind(this)),this.$element.removeEventListener("dragover",this._handleDragOver.bind(this)),this.$element.removeEventListener("drop",this._handleDrop.bind(this)),this.$loaderClose&&this.$loaderClose.removeEventListener("click",this._handleClose.bind(this)),this.$input.parentNode&&this.$input.parentNode.removeChild(this.$input))}}function o(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i.oH.SELECTORS.UPLOAD,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=[],n=document.querySelectorAll("string"==typeof e?e:i.oH.SELECTORS.UPLOAD);return n.length?(n.forEach((e=>{try{const i=new l(e,t);s.push(i)}catch(i){}})),s):s}const r=l}}]);
|
|
2
|
-
//# sourceMappingURL=308.atomix.react.cjs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"js/308.atomix.react.cjs.js","mappings":"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","sources":["webpack://@shohojdhara/atomix/./src/components/Upload/scripts/index.ts"],"sourcesContent":["import { UPLOAD } from '../../../lib/constants/components';\n\n/**\n * Interface for Upload options\n */\ninterface UploadOptions {\n disabled?: boolean;\n maxSizeInMB?: number;\n acceptedFileTypes?: string[];\n multiple?: boolean;\n onFileSelect?: (files: File[]) => void;\n onFileUpload?: (file: File, progress: number) => void;\n onFileUploadComplete?: (file: File) => void;\n onFileUploadError?: (file: File, error: string) => void;\n [key: string]: any;\n}\n\n/**\n * Interface for Upload instance\n */\ninterface UploadInstance {\n setStatus: (status: 'idle' | 'loading' | 'success' | 'error', message?: string) => void;\n setProgress: (percentage: number, timeLeft?: string) => void;\n setFile: (file: File | null) => void;\n disable: () => void;\n enable: () => void;\n destroy: () => void;\n}\n\n/**\n * Default options for the Upload component\n */\nconst DEFAULT_OPTIONS: UploadOptions = {\n disabled: false,\n maxSizeInMB: 5,\n acceptedFileTypes: ['application/pdf', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'image/jpeg', 'image/png'],\n multiple: false\n};\n\n/**\n * Class representing an Upload component\n */\nclass Upload implements UploadInstance {\n private selector: string | Element;\n private $element: HTMLElement | null;\n private $input: HTMLInputElement | null;\n private $button: HTMLButtonElement | null;\n private $loader: HTMLElement | null;\n private $loaderTitle: HTMLElement | null;\n private $loaderProgress: HTMLElement | null;\n private $loaderClose: HTMLButtonElement | null;\n private options: UploadOptions;\n private currentFile: File | null;\n private dragCounter: number;\n\n /**\n * Creates an instance of Upload\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n */\n constructor(selector: string | Element, options = {}) {\n this.selector = selector || UPLOAD.SELECTORS.UPLOAD;\n this.$element =\n typeof selector === 'string'\n ? document.querySelector<HTMLElement>(selector)\n : selector as HTMLElement;\n this.options = { ...DEFAULT_OPTIONS, ...options } as UploadOptions;\n this.$input = null;\n this.$button = null;\n this.$loader = null;\n this.$loaderTitle = null;\n this.$loaderProgress = null;\n this.$loaderClose = null;\n this.currentFile = null;\n this.dragCounter = 0;\n this._initialize();\n }\n\n /**\n * Initialize the upload component\n */\n private _initialize(): void {\n if (!this.$element) return;\n\n // Create a hidden file input element\n this._createHiddenInput();\n\n // Get references to elements\n this.$button = this.$element.querySelector<HTMLButtonElement>(UPLOAD.SELECTORS.BUTTON);\n this.$loader = this.$element.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER);\n this.$loaderTitle = this.$element?.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_TITLE);\n this.$loaderProgress = this.$element?.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_PROGRESS);\n this.$loaderClose = this.$element?.querySelector<HTMLButtonElement>(UPLOAD.SELECTORS.LOADER_CLOSE);\n\n // Apply disabled state if specified\n if (this.options.disabled) {\n this.disable();\n }\n\n // Set up event listeners\n this._setupEventListeners();\n }\n\n /**\n * Creates a hidden file input element and appends it to the element\n */\n private _createHiddenInput(): void {\n if (!this.$element) return;\n\n // Create input element\n const input = document.createElement('input');\n input.type = 'file';\n input.style.display = 'none';\n input.accept = this.options.acceptedFileTypes?.join(',') || '';\n input.multiple = !!this.options.multiple;\n \n // Append to element\n this.$element.appendChild(input);\n this.$input = input;\n }\n\n /**\n * Set up all event listeners\n */\n private _setupEventListeners(): void {\n if (!this.$element || !this.$input || !this.$button) return;\n\n // Button click handler\n this.$button.addEventListener('click', this._handleButtonClick.bind(this));\n\n // Input change handler\n this.$input.addEventListener('change', this._handleFileSelect.bind(this));\n\n // Drag and drop handlers\n this.$element.addEventListener('dragenter', this._handleDragEnter.bind(this));\n this.$element.addEventListener('dragleave', this._handleDragLeave.bind(this));\n this.$element.addEventListener('dragover', this._handleDragOver.bind(this));\n this.$element.addEventListener('drop', this._handleDrop.bind(this));\n\n // Close button handler\n if (this.$loaderClose) {\n this.$loaderClose.addEventListener('click', this._handleClose.bind(this));\n }\n }\n\n /**\n * Handle button click\n */\n private _handleButtonClick(event: MouseEvent): void {\n event.preventDefault();\n if (this.$input && !this.options.disabled) {\n this.$input.click();\n }\n }\n\n /**\n * Handle file selection from the input element\n */\n private _handleFileSelect(event: Event): void {\n if (!this.$input?.files?.length) return;\n \n const files = Array.from(this.$input.files);\n this._processFiles(files);\n }\n\n /**\n * Handle drag enter event\n */\n private _handleDragEnter(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n \n this.dragCounter++;\n if (this.dragCounter === 1) {\n this.$element?.classList.add(UPLOAD.CLASSES.DRAGGING);\n }\n }\n\n /**\n * Handle drag leave event\n */\n private _handleDragLeave(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n \n this.dragCounter--;\n if (this.dragCounter === 0) {\n this.$element?.classList.remove(UPLOAD.CLASSES.DRAGGING);\n }\n }\n\n /**\n * Handle drag over event\n */\n private _handleDragOver(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n }\n\n /**\n * Handle drop event\n */\n private _handleDrop(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n \n this.dragCounter = 0;\n this.$element?.classList.remove(UPLOAD.CLASSES.DRAGGING);\n \n if (!event.dataTransfer?.files.length) return;\n \n const files = Array.from(event.dataTransfer.files);\n this._processFiles(files);\n }\n\n /**\n * Handle close button click\n */\n private _handleClose(event: MouseEvent): void {\n event.preventDefault();\n \n // Reset state\n this.setStatus('idle');\n this.setFile(null);\n \n // Reset input\n if (this.$input) {\n this.$input.value = '';\n }\n }\n\n /**\n * Process the selected files\n */\n private _processFiles(files: File[]): void {\n if (!files.length) return;\n \n // If multiple is not allowed, take only the first file\n const filesToProcess = this.options.multiple ? files : [files[0]];\n \n // Validate files\n const validFiles = filesToProcess.filter(file => this._validateFile(file));\n \n // Notify about file selection\n if (validFiles.length && this.options.onFileSelect) {\n this.options.onFileSelect(validFiles);\n }\n \n // Process the first valid file\n if (validFiles.length) {\n this.setFile(validFiles[0]);\n this._simulateUpload(validFiles[0]);\n }\n }\n\n /**\n * Validate a file based on size and type\n */\n private _validateFile(file: File): boolean {\n const maxSizeInBytes = (this.options.maxSizeInMB || 5) * 1024 * 1024;\n \n // Check file size\n if (file.size > maxSizeInBytes) {\n this.setStatus('error', `File too large. Maximum size is ${this.options.maxSizeInMB}MB.`);\n return false;\n }\n \n // Check file type if acceptedFileTypes is provided\n if (this.options.acceptedFileTypes?.length) {\n const isAcceptedType = this.options.acceptedFileTypes.some(type => {\n // Handle wildcards like image/*\n if (type.endsWith('/*')) {\n const mainType = type.split('/')[0];\n return file.type.startsWith(`${mainType}/`);\n }\n return file.type === type;\n });\n \n if (!isAcceptedType) {\n this.setStatus('error', 'File type not supported.');\n return false;\n }\n }\n \n return true;\n }\n\n /**\n * Simulate a file upload process\n * In a real implementation, this would be replaced with actual upload logic\n */\n private _simulateUpload(file: File): void {\n this.setStatus('loading');\n let progress = 0;\n \n const interval = setInterval(() => {\n progress += 5;\n \n if (progress < 100) {\n this.setProgress(progress, `${Math.ceil((100 - progress) / 5)} seconds left`);\n \n if (this.options.onFileUpload) {\n this.options.onFileUpload(file, progress);\n }\n } else {\n clearInterval(interval);\n this.setStatus('success', 'Upload successful');\n \n if (this.options.onFileUploadComplete) {\n this.options.onFileUploadComplete(file);\n }\n }\n }, 500);\n }\n\n /**\n * Set current file\n */\n public setFile(file: File | null): void {\n this.currentFile = file;\n \n if (file && this.$loaderTitle) {\n this.$loaderTitle.textContent = file.name;\n }\n }\n\n /**\n * Set upload progress\n */\n public setProgress(percentage: number, timeLeft?: string): void {\n if (!this.$element || !this.$loaderProgress) return;\n \n // Set percentage as CSS variable\n this.$element.style.setProperty(UPLOAD.ATTRIBUTES.PERCENTAGE, percentage.toString());\n \n // Update the loader elements if they exist\n const $par = this.$element.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_PAR);\n const $time = this.$element.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_TIME);\n \n if ($par) {\n $par.textContent = `${percentage}%`;\n }\n \n if ($time && timeLeft) {\n $time.textContent = timeLeft;\n }\n }\n\n /**\n * Set upload status\n */\n public setStatus(status: 'idle' | 'loading' | 'success' | 'error', message?: string): void {\n if (!this.$element) return;\n \n // Remove all status classes\n this.$element.classList.remove(\n UPLOAD.CLASSES.LOADING,\n UPLOAD.CLASSES.SUCCESS,\n UPLOAD.CLASSES.ERROR\n );\n \n // Add appropriate class based on status\n switch (status) {\n case 'loading':\n this.$element.classList.add(UPLOAD.CLASSES.LOADING);\n break;\n case 'success':\n this.$element.classList.add(UPLOAD.CLASSES.SUCCESS);\n break;\n case 'error':\n this.$element.classList.add(UPLOAD.CLASSES.ERROR);\n break;\n }\n \n // Update message if provided and loader exists\n if (message && this.$loaderProgress) {\n this.$loaderProgress.textContent = message;\n }\n }\n\n /**\n * Disable the upload component\n */\n public disable(): void {\n if (!this.$element || !this.$button) return;\n \n this.$element.classList.add(UPLOAD.CLASSES.DISABLED);\n this.$button.disabled = true;\n this.options.disabled = true;\n }\n\n /**\n * Enable the upload component\n */\n public enable(): void {\n if (!this.$element || !this.$button) return;\n \n this.$element.classList.remove(UPLOAD.CLASSES.DISABLED);\n this.$button.disabled = false;\n this.options.disabled = false;\n }\n\n /**\n * Clean up event listeners\n */\n public destroy(): void {\n if (!this.$element || !this.$input || !this.$button) return;\n \n // Remove event listeners\n this.$button.removeEventListener('click', this._handleButtonClick.bind(this));\n this.$input.removeEventListener('change', this._handleFileSelect.bind(this));\n this.$element.removeEventListener('dragenter', this._handleDragEnter.bind(this));\n this.$element.removeEventListener('dragleave', this._handleDragLeave.bind(this));\n this.$element.removeEventListener('dragover', this._handleDragOver.bind(this));\n this.$element.removeEventListener('drop', this._handleDrop.bind(this));\n \n if (this.$loaderClose) {\n this.$loaderClose.removeEventListener('click', this._handleClose.bind(this));\n }\n \n // Remove input element\n if (this.$input.parentNode) {\n this.$input.parentNode.removeChild(this.$input);\n }\n }\n}\n\n/**\n * Initialize all upload components in the document\n * @param {string|Element} selector - CSS selector string or DOM Element\n * @param {Object} options - Custom options to override defaults\n * @returns {UploadInstance[]} Array of Upload instances\n */\nexport function initializeUploads(selector = UPLOAD.SELECTORS.UPLOAD, options = {}): UploadInstance[] {\n const uploadInstances: UploadInstance[] = [];\n const uploadElements = document.querySelectorAll<HTMLElement>(typeof selector === 'string' ? selector : UPLOAD.SELECTORS.UPLOAD);\n\n if (!uploadElements.length) return uploadInstances;\n\n uploadElements.forEach((element) => {\n try {\n const instance = new Upload(element, options);\n uploadInstances.push(instance);\n } catch (error) {\n console.error('Error initializing upload:', error);\n }\n });\n\n return uploadInstances;\n}\n\nexport default Upload; "],"names":["DEFAULT_OPTIONS","disabled","maxSizeInMB","acceptedFileTypes","multiple","Upload","constructor","selector","options","arguments","length","undefined","this","UPLOAD","SELECTORS","$element","document","querySelector","$input","$button","$loader","$loaderTitle","$loaderProgress","$loaderClose","currentFile","dragCounter","_initialize","_createHiddenInput","BUTTON","LOADER","LOADER_TITLE","LOADER_PROGRESS","LOADER_CLOSE","disable","_setupEventListeners","input","createElement","type","style","display","accept","join","appendChild","addEventListener","_handleButtonClick","bind","_handleFileSelect","_handleDragEnter","_handleDragLeave","_handleDragOver","_handleDrop","_handleClose","event","preventDefault","click","files","Array","from","_processFiles","classList","add","CLASSES","DRAGGING","remove","dataTransfer","setStatus","setFile","value","validFiles","filter","file","_validateFile","onFileSelect","_simulateUpload","size","some","endsWith","mainType","split","startsWith","progress","interval","setInterval","setProgress","Math","ceil","onFileUpload","clearInterval","onFileUploadComplete","textContent","name","percentage","timeLeft","setProperty","ATTRIBUTES","PERCENTAGE","$par","LOADER_PAR","$time","LOADER_TIME","status","message","LOADING","SUCCESS","ERROR","DISABLED","enable","destroy","removeEventListener","parentNode","removeChild","initializeUploads","uploadInstances","uploadElements","querySelectorAll","forEach","element","instance","push","error"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export const __webpack_id__=308;export const __webpack_ids__=[308];export const __webpack_modules__={308:(e,t,i)=>{i.r(t),i.d(t,{default:()=>r,initializeUploads:()=>o});var s=i(188);const n={disabled:!1,maxSizeInMB:5,acceptedFileTypes:["application/pdf","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","image/jpeg","image/png"],multiple:!1};class l{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.selector=e||s.oH.SELECTORS.UPLOAD,this.$element="string"==typeof e?document.querySelector(e):e,this.options={...n,...t},this.$input=null,this.$button=null,this.$loader=null,this.$loaderTitle=null,this.$loaderProgress=null,this.$loaderClose=null,this.currentFile=null,this.dragCounter=0,this._initialize()}_initialize(){this.$element&&(this._createHiddenInput(),this.$button=this.$element.querySelector(s.oH.SELECTORS.BUTTON),this.$loader=this.$element.querySelector(s.oH.SELECTORS.LOADER),this.$loaderTitle=this.$element?.querySelector(s.oH.SELECTORS.LOADER_TITLE),this.$loaderProgress=this.$element?.querySelector(s.oH.SELECTORS.LOADER_PROGRESS),this.$loaderClose=this.$element?.querySelector(s.oH.SELECTORS.LOADER_CLOSE),this.options.disabled&&this.disable(),this._setupEventListeners())}_createHiddenInput(){if(!this.$element)return;const e=document.createElement("input");e.type="file",e.style.display="none",e.accept=this.options.acceptedFileTypes?.join(",")||"",e.multiple=!!this.options.multiple,this.$element.appendChild(e),this.$input=e}_setupEventListeners(){this.$element&&this.$input&&this.$button&&(this.$button.addEventListener("click",this._handleButtonClick.bind(this)),this.$input.addEventListener("change",this._handleFileSelect.bind(this)),this.$element.addEventListener("dragenter",this._handleDragEnter.bind(this)),this.$element.addEventListener("dragleave",this._handleDragLeave.bind(this)),this.$element.addEventListener("dragover",this._handleDragOver.bind(this)),this.$element.addEventListener("drop",this._handleDrop.bind(this)),this.$loaderClose&&this.$loaderClose.addEventListener("click",this._handleClose.bind(this)))}_handleButtonClick(e){e.preventDefault(),this.$input&&!this.options.disabled&&this.$input.click()}_handleFileSelect(e){if(!this.$input?.files?.length)return;const t=Array.from(this.$input.files);this._processFiles(t)}_handleDragEnter(e){e.preventDefault(),this.options.disabled||(this.dragCounter++,1===this.dragCounter&&this.$element?.classList.add(s.oH.CLASSES.DRAGGING))}_handleDragLeave(e){e.preventDefault(),this.options.disabled||(this.dragCounter--,0===this.dragCounter&&this.$element?.classList.remove(s.oH.CLASSES.DRAGGING))}_handleDragOver(e){e.preventDefault()}_handleDrop(e){if(e.preventDefault(),this.options.disabled)return;if(this.dragCounter=0,this.$element?.classList.remove(s.oH.CLASSES.DRAGGING),!e.dataTransfer?.files.length)return;const t=Array.from(e.dataTransfer.files);this._processFiles(t)}_handleClose(e){e.preventDefault(),this.setStatus("idle"),this.setFile(null),this.$input&&(this.$input.value="")}_processFiles(e){if(!e.length)return;const t=(this.options.multiple?e:[e[0]]).filter((e=>this._validateFile(e)));t.length&&this.options.onFileSelect&&this.options.onFileSelect(t),t.length&&(this.setFile(t[0]),this._simulateUpload(t[0]))}_validateFile(e){if(e.size>1024*(this.options.maxSizeInMB||5)*1024)return this.setStatus("error",`File too large. Maximum size is ${this.options.maxSizeInMB}MB.`),!1;if(this.options.acceptedFileTypes?.length){if(!this.options.acceptedFileTypes.some((t=>{if(t.endsWith("/*")){const i=t.split("/")[0];return e.type.startsWith(i+"/")}return e.type===t})))return this.setStatus("error","File type not supported."),!1}return!0}_simulateUpload(e){this.setStatus("loading");let t=0;const i=setInterval((()=>{t+=5,100>t?(this.setProgress(t,Math.ceil((100-t)/5)+" seconds left"),this.options.onFileUpload&&this.options.onFileUpload(e,t)):(clearInterval(i),this.setStatus("success","Upload successful"),this.options.onFileUploadComplete&&this.options.onFileUploadComplete(e))}),500)}setFile(e){this.currentFile=e,e&&this.$loaderTitle&&(this.$loaderTitle.textContent=e.name)}setProgress(e,t){if(!this.$element||!this.$loaderProgress)return;this.$element.style.setProperty(s.oH.ATTRIBUTES.PERCENTAGE,""+e);const i=this.$element.querySelector(s.oH.SELECTORS.LOADER_PAR),n=this.$element.querySelector(s.oH.SELECTORS.LOADER_TIME);i&&(i.textContent=e+"%"),n&&t&&(n.textContent=t)}setStatus(e,t){if(this.$element){switch(this.$element.classList.remove(s.oH.CLASSES.LOADING,s.oH.CLASSES.SUCCESS,s.oH.CLASSES.ERROR),e){case"loading":this.$element.classList.add(s.oH.CLASSES.LOADING);break;case"success":this.$element.classList.add(s.oH.CLASSES.SUCCESS);break;case"error":this.$element.classList.add(s.oH.CLASSES.ERROR)}t&&this.$loaderProgress&&(this.$loaderProgress.textContent=t)}}disable(){this.$element&&this.$button&&(this.$element.classList.add(s.oH.CLASSES.DISABLED),this.$button.disabled=!0,this.options.disabled=!0)}enable(){this.$element&&this.$button&&(this.$element.classList.remove(s.oH.CLASSES.DISABLED),this.$button.disabled=!1,this.options.disabled=!1)}destroy(){this.$element&&this.$input&&this.$button&&(this.$button.removeEventListener("click",this._handleButtonClick.bind(this)),this.$input.removeEventListener("change",this._handleFileSelect.bind(this)),this.$element.removeEventListener("dragenter",this._handleDragEnter.bind(this)),this.$element.removeEventListener("dragleave",this._handleDragLeave.bind(this)),this.$element.removeEventListener("dragover",this._handleDragOver.bind(this)),this.$element.removeEventListener("drop",this._handleDrop.bind(this)),this.$loaderClose&&this.$loaderClose.removeEventListener("click",this._handleClose.bind(this)),this.$input.parentNode&&this.$input.parentNode.removeChild(this.$input))}}function o(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s.oH.SELECTORS.UPLOAD,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=[],n=document.querySelectorAll("string"==typeof e?e:s.oH.SELECTORS.UPLOAD);return n.length?(n.forEach((e=>{try{const s=new l(e,t);i.push(s)}catch(s){}})),i):i}const r=l}};
|
|
2
|
-
//# sourceMappingURL=308.atomix.react.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"js/308.atomix.react.esm.js","mappings":"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","sources":["webpack://@shohojdhara/atomix/./src/components/Upload/scripts/index.ts"],"sourcesContent":["import { UPLOAD } from '../../../lib/constants/components';\n\n/**\n * Interface for Upload options\n */\ninterface UploadOptions {\n disabled?: boolean;\n maxSizeInMB?: number;\n acceptedFileTypes?: string[];\n multiple?: boolean;\n onFileSelect?: (files: File[]) => void;\n onFileUpload?: (file: File, progress: number) => void;\n onFileUploadComplete?: (file: File) => void;\n onFileUploadError?: (file: File, error: string) => void;\n [key: string]: any;\n}\n\n/**\n * Interface for Upload instance\n */\ninterface UploadInstance {\n setStatus: (status: 'idle' | 'loading' | 'success' | 'error', message?: string) => void;\n setProgress: (percentage: number, timeLeft?: string) => void;\n setFile: (file: File | null) => void;\n disable: () => void;\n enable: () => void;\n destroy: () => void;\n}\n\n/**\n * Default options for the Upload component\n */\nconst DEFAULT_OPTIONS: UploadOptions = {\n disabled: false,\n maxSizeInMB: 5,\n acceptedFileTypes: ['application/pdf', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'image/jpeg', 'image/png'],\n multiple: false\n};\n\n/**\n * Class representing an Upload component\n */\nclass Upload implements UploadInstance {\n private selector: string | Element;\n private $element: HTMLElement | null;\n private $input: HTMLInputElement | null;\n private $button: HTMLButtonElement | null;\n private $loader: HTMLElement | null;\n private $loaderTitle: HTMLElement | null;\n private $loaderProgress: HTMLElement | null;\n private $loaderClose: HTMLButtonElement | null;\n private options: UploadOptions;\n private currentFile: File | null;\n private dragCounter: number;\n\n /**\n * Creates an instance of Upload\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n */\n constructor(selector: string | Element, options = {}) {\n this.selector = selector || UPLOAD.SELECTORS.UPLOAD;\n this.$element =\n typeof selector === 'string'\n ? document.querySelector<HTMLElement>(selector)\n : selector as HTMLElement;\n this.options = { ...DEFAULT_OPTIONS, ...options } as UploadOptions;\n this.$input = null;\n this.$button = null;\n this.$loader = null;\n this.$loaderTitle = null;\n this.$loaderProgress = null;\n this.$loaderClose = null;\n this.currentFile = null;\n this.dragCounter = 0;\n this._initialize();\n }\n\n /**\n * Initialize the upload component\n */\n private _initialize(): void {\n if (!this.$element) return;\n\n // Create a hidden file input element\n this._createHiddenInput();\n\n // Get references to elements\n this.$button = this.$element.querySelector<HTMLButtonElement>(UPLOAD.SELECTORS.BUTTON);\n this.$loader = this.$element.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER);\n this.$loaderTitle = this.$element?.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_TITLE);\n this.$loaderProgress = this.$element?.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_PROGRESS);\n this.$loaderClose = this.$element?.querySelector<HTMLButtonElement>(UPLOAD.SELECTORS.LOADER_CLOSE);\n\n // Apply disabled state if specified\n if (this.options.disabled) {\n this.disable();\n }\n\n // Set up event listeners\n this._setupEventListeners();\n }\n\n /**\n * Creates a hidden file input element and appends it to the element\n */\n private _createHiddenInput(): void {\n if (!this.$element) return;\n\n // Create input element\n const input = document.createElement('input');\n input.type = 'file';\n input.style.display = 'none';\n input.accept = this.options.acceptedFileTypes?.join(',') || '';\n input.multiple = !!this.options.multiple;\n \n // Append to element\n this.$element.appendChild(input);\n this.$input = input;\n }\n\n /**\n * Set up all event listeners\n */\n private _setupEventListeners(): void {\n if (!this.$element || !this.$input || !this.$button) return;\n\n // Button click handler\n this.$button.addEventListener('click', this._handleButtonClick.bind(this));\n\n // Input change handler\n this.$input.addEventListener('change', this._handleFileSelect.bind(this));\n\n // Drag and drop handlers\n this.$element.addEventListener('dragenter', this._handleDragEnter.bind(this));\n this.$element.addEventListener('dragleave', this._handleDragLeave.bind(this));\n this.$element.addEventListener('dragover', this._handleDragOver.bind(this));\n this.$element.addEventListener('drop', this._handleDrop.bind(this));\n\n // Close button handler\n if (this.$loaderClose) {\n this.$loaderClose.addEventListener('click', this._handleClose.bind(this));\n }\n }\n\n /**\n * Handle button click\n */\n private _handleButtonClick(event: MouseEvent): void {\n event.preventDefault();\n if (this.$input && !this.options.disabled) {\n this.$input.click();\n }\n }\n\n /**\n * Handle file selection from the input element\n */\n private _handleFileSelect(event: Event): void {\n if (!this.$input?.files?.length) return;\n \n const files = Array.from(this.$input.files);\n this._processFiles(files);\n }\n\n /**\n * Handle drag enter event\n */\n private _handleDragEnter(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n \n this.dragCounter++;\n if (this.dragCounter === 1) {\n this.$element?.classList.add(UPLOAD.CLASSES.DRAGGING);\n }\n }\n\n /**\n * Handle drag leave event\n */\n private _handleDragLeave(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n \n this.dragCounter--;\n if (this.dragCounter === 0) {\n this.$element?.classList.remove(UPLOAD.CLASSES.DRAGGING);\n }\n }\n\n /**\n * Handle drag over event\n */\n private _handleDragOver(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n }\n\n /**\n * Handle drop event\n */\n private _handleDrop(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n \n this.dragCounter = 0;\n this.$element?.classList.remove(UPLOAD.CLASSES.DRAGGING);\n \n if (!event.dataTransfer?.files.length) return;\n \n const files = Array.from(event.dataTransfer.files);\n this._processFiles(files);\n }\n\n /**\n * Handle close button click\n */\n private _handleClose(event: MouseEvent): void {\n event.preventDefault();\n \n // Reset state\n this.setStatus('idle');\n this.setFile(null);\n \n // Reset input\n if (this.$input) {\n this.$input.value = '';\n }\n }\n\n /**\n * Process the selected files\n */\n private _processFiles(files: File[]): void {\n if (!files.length) return;\n \n // If multiple is not allowed, take only the first file\n const filesToProcess = this.options.multiple ? files : [files[0]];\n \n // Validate files\n const validFiles = filesToProcess.filter(file => this._validateFile(file));\n \n // Notify about file selection\n if (validFiles.length && this.options.onFileSelect) {\n this.options.onFileSelect(validFiles);\n }\n \n // Process the first valid file\n if (validFiles.length) {\n this.setFile(validFiles[0]);\n this._simulateUpload(validFiles[0]);\n }\n }\n\n /**\n * Validate a file based on size and type\n */\n private _validateFile(file: File): boolean {\n const maxSizeInBytes = (this.options.maxSizeInMB || 5) * 1024 * 1024;\n \n // Check file size\n if (file.size > maxSizeInBytes) {\n this.setStatus('error', `File too large. Maximum size is ${this.options.maxSizeInMB}MB.`);\n return false;\n }\n \n // Check file type if acceptedFileTypes is provided\n if (this.options.acceptedFileTypes?.length) {\n const isAcceptedType = this.options.acceptedFileTypes.some(type => {\n // Handle wildcards like image/*\n if (type.endsWith('/*')) {\n const mainType = type.split('/')[0];\n return file.type.startsWith(`${mainType}/`);\n }\n return file.type === type;\n });\n \n if (!isAcceptedType) {\n this.setStatus('error', 'File type not supported.');\n return false;\n }\n }\n \n return true;\n }\n\n /**\n * Simulate a file upload process\n * In a real implementation, this would be replaced with actual upload logic\n */\n private _simulateUpload(file: File): void {\n this.setStatus('loading');\n let progress = 0;\n \n const interval = setInterval(() => {\n progress += 5;\n \n if (progress < 100) {\n this.setProgress(progress, `${Math.ceil((100 - progress) / 5)} seconds left`);\n \n if (this.options.onFileUpload) {\n this.options.onFileUpload(file, progress);\n }\n } else {\n clearInterval(interval);\n this.setStatus('success', 'Upload successful');\n \n if (this.options.onFileUploadComplete) {\n this.options.onFileUploadComplete(file);\n }\n }\n }, 500);\n }\n\n /**\n * Set current file\n */\n public setFile(file: File | null): void {\n this.currentFile = file;\n \n if (file && this.$loaderTitle) {\n this.$loaderTitle.textContent = file.name;\n }\n }\n\n /**\n * Set upload progress\n */\n public setProgress(percentage: number, timeLeft?: string): void {\n if (!this.$element || !this.$loaderProgress) return;\n \n // Set percentage as CSS variable\n this.$element.style.setProperty(UPLOAD.ATTRIBUTES.PERCENTAGE, percentage.toString());\n \n // Update the loader elements if they exist\n const $par = this.$element.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_PAR);\n const $time = this.$element.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_TIME);\n \n if ($par) {\n $par.textContent = `${percentage}%`;\n }\n \n if ($time && timeLeft) {\n $time.textContent = timeLeft;\n }\n }\n\n /**\n * Set upload status\n */\n public setStatus(status: 'idle' | 'loading' | 'success' | 'error', message?: string): void {\n if (!this.$element) return;\n \n // Remove all status classes\n this.$element.classList.remove(\n UPLOAD.CLASSES.LOADING,\n UPLOAD.CLASSES.SUCCESS,\n UPLOAD.CLASSES.ERROR\n );\n \n // Add appropriate class based on status\n switch (status) {\n case 'loading':\n this.$element.classList.add(UPLOAD.CLASSES.LOADING);\n break;\n case 'success':\n this.$element.classList.add(UPLOAD.CLASSES.SUCCESS);\n break;\n case 'error':\n this.$element.classList.add(UPLOAD.CLASSES.ERROR);\n break;\n }\n \n // Update message if provided and loader exists\n if (message && this.$loaderProgress) {\n this.$loaderProgress.textContent = message;\n }\n }\n\n /**\n * Disable the upload component\n */\n public disable(): void {\n if (!this.$element || !this.$button) return;\n \n this.$element.classList.add(UPLOAD.CLASSES.DISABLED);\n this.$button.disabled = true;\n this.options.disabled = true;\n }\n\n /**\n * Enable the upload component\n */\n public enable(): void {\n if (!this.$element || !this.$button) return;\n \n this.$element.classList.remove(UPLOAD.CLASSES.DISABLED);\n this.$button.disabled = false;\n this.options.disabled = false;\n }\n\n /**\n * Clean up event listeners\n */\n public destroy(): void {\n if (!this.$element || !this.$input || !this.$button) return;\n \n // Remove event listeners\n this.$button.removeEventListener('click', this._handleButtonClick.bind(this));\n this.$input.removeEventListener('change', this._handleFileSelect.bind(this));\n this.$element.removeEventListener('dragenter', this._handleDragEnter.bind(this));\n this.$element.removeEventListener('dragleave', this._handleDragLeave.bind(this));\n this.$element.removeEventListener('dragover', this._handleDragOver.bind(this));\n this.$element.removeEventListener('drop', this._handleDrop.bind(this));\n \n if (this.$loaderClose) {\n this.$loaderClose.removeEventListener('click', this._handleClose.bind(this));\n }\n \n // Remove input element\n if (this.$input.parentNode) {\n this.$input.parentNode.removeChild(this.$input);\n }\n }\n}\n\n/**\n * Initialize all upload components in the document\n * @param {string|Element} selector - CSS selector string or DOM Element\n * @param {Object} options - Custom options to override defaults\n * @returns {UploadInstance[]} Array of Upload instances\n */\nexport function initializeUploads(selector = UPLOAD.SELECTORS.UPLOAD, options = {}): UploadInstance[] {\n const uploadInstances: UploadInstance[] = [];\n const uploadElements = document.querySelectorAll<HTMLElement>(typeof selector === 'string' ? selector : UPLOAD.SELECTORS.UPLOAD);\n\n if (!uploadElements.length) return uploadInstances;\n\n uploadElements.forEach((element) => {\n try {\n const instance = new Upload(element, options);\n uploadInstances.push(instance);\n } catch (error) {\n console.error('Error initializing upload:', error);\n }\n });\n\n return uploadInstances;\n}\n\nexport default Upload; "],"names":["DEFAULT_OPTIONS","disabled","maxSizeInMB","acceptedFileTypes","multiple","Upload","constructor","selector","options","arguments","length","undefined","this","UPLOAD","SELECTORS","$element","document","querySelector","$input","$button","$loader","$loaderTitle","$loaderProgress","$loaderClose","currentFile","dragCounter","_initialize","_createHiddenInput","BUTTON","LOADER","LOADER_TITLE","LOADER_PROGRESS","LOADER_CLOSE","disable","_setupEventListeners","input","createElement","type","style","display","accept","join","appendChild","addEventListener","_handleButtonClick","bind","_handleFileSelect","_handleDragEnter","_handleDragLeave","_handleDragOver","_handleDrop","_handleClose","event","preventDefault","click","files","Array","from","_processFiles","classList","add","CLASSES","DRAGGING","remove","dataTransfer","setStatus","setFile","value","validFiles","filter","file","_validateFile","onFileSelect","_simulateUpload","size","some","endsWith","mainType","split","startsWith","progress","interval","setInterval","setProgress","Math","ceil","onFileUpload","clearInterval","onFileUploadComplete","textContent","name","percentage","timeLeft","setProperty","ATTRIBUTES","PERCENTAGE","$par","LOADER_PAR","$time","LOADER_TIME","status","message","LOADING","SUCCESS","ERROR","DISABLED","enable","destroy","removeEventListener","parentNode","removeChild","initializeUploads","uploadInstances","uploadElements","querySelectorAll","forEach","element","instance","push","error"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(this.webpackChunkAtomix=this.webpackChunkAtomix||[]).push([[308],{308:(e,t,i)=>{i.r(t),i.d(t,{default:()=>r,initializeUploads:()=>o});var s=i(188);const n={disabled:!1,maxSizeInMB:5,acceptedFileTypes:["application/pdf","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","image/jpeg","image/png"],multiple:!1};class l{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.selector=e||s.oH.SELECTORS.UPLOAD,this.$element="string"==typeof e?document.querySelector(e):e,this.options={...n,...t},this.$input=null,this.$button=null,this.$loader=null,this.$loaderTitle=null,this.$loaderProgress=null,this.$loaderClose=null,this.currentFile=null,this.dragCounter=0,this._initialize()}_initialize(){this.$element&&(this._createHiddenInput(),this.$button=this.$element.querySelector(s.oH.SELECTORS.BUTTON),this.$loader=this.$element.querySelector(s.oH.SELECTORS.LOADER),this.$loaderTitle=this.$element?.querySelector(s.oH.SELECTORS.LOADER_TITLE),this.$loaderProgress=this.$element?.querySelector(s.oH.SELECTORS.LOADER_PROGRESS),this.$loaderClose=this.$element?.querySelector(s.oH.SELECTORS.LOADER_CLOSE),this.options.disabled&&this.disable(),this._setupEventListeners())}_createHiddenInput(){if(!this.$element)return;const e=document.createElement("input");e.type="file",e.style.display="none",e.accept=this.options.acceptedFileTypes?.join(",")||"",e.multiple=!!this.options.multiple,this.$element.appendChild(e),this.$input=e}_setupEventListeners(){this.$element&&this.$input&&this.$button&&(this.$button.addEventListener("click",this._handleButtonClick.bind(this)),this.$input.addEventListener("change",this._handleFileSelect.bind(this)),this.$element.addEventListener("dragenter",this._handleDragEnter.bind(this)),this.$element.addEventListener("dragleave",this._handleDragLeave.bind(this)),this.$element.addEventListener("dragover",this._handleDragOver.bind(this)),this.$element.addEventListener("drop",this._handleDrop.bind(this)),this.$loaderClose&&this.$loaderClose.addEventListener("click",this._handleClose.bind(this)))}_handleButtonClick(e){e.preventDefault(),this.$input&&!this.options.disabled&&this.$input.click()}_handleFileSelect(e){if(!this.$input?.files?.length)return;const t=Array.from(this.$input.files);this._processFiles(t)}_handleDragEnter(e){e.preventDefault(),this.options.disabled||(this.dragCounter++,1===this.dragCounter&&this.$element?.classList.add(s.oH.CLASSES.DRAGGING))}_handleDragLeave(e){e.preventDefault(),this.options.disabled||(this.dragCounter--,0===this.dragCounter&&this.$element?.classList.remove(s.oH.CLASSES.DRAGGING))}_handleDragOver(e){e.preventDefault()}_handleDrop(e){if(e.preventDefault(),this.options.disabled)return;if(this.dragCounter=0,this.$element?.classList.remove(s.oH.CLASSES.DRAGGING),!e.dataTransfer?.files.length)return;const t=Array.from(e.dataTransfer.files);this._processFiles(t)}_handleClose(e){e.preventDefault(),this.setStatus("idle"),this.setFile(null),this.$input&&(this.$input.value="")}_processFiles(e){if(!e.length)return;const t=(this.options.multiple?e:[e[0]]).filter((e=>this._validateFile(e)));t.length&&this.options.onFileSelect&&this.options.onFileSelect(t),t.length&&(this.setFile(t[0]),this._simulateUpload(t[0]))}_validateFile(e){if(e.size>1024*(this.options.maxSizeInMB||5)*1024)return this.setStatus("error",`File too large. Maximum size is ${this.options.maxSizeInMB}MB.`),!1;if(this.options.acceptedFileTypes?.length){if(!this.options.acceptedFileTypes.some((t=>{if(t.endsWith("/*")){const i=t.split("/")[0];return e.type.startsWith(i+"/")}return e.type===t})))return this.setStatus("error","File type not supported."),!1}return!0}_simulateUpload(e){this.setStatus("loading");let t=0;const i=setInterval((()=>{t+=5,100>t?(this.setProgress(t,Math.ceil((100-t)/5)+" seconds left"),this.options.onFileUpload&&this.options.onFileUpload(e,t)):(clearInterval(i),this.setStatus("success","Upload successful"),this.options.onFileUploadComplete&&this.options.onFileUploadComplete(e))}),500)}setFile(e){this.currentFile=e,e&&this.$loaderTitle&&(this.$loaderTitle.textContent=e.name)}setProgress(e,t){if(!this.$element||!this.$loaderProgress)return;this.$element.style.setProperty(s.oH.ATTRIBUTES.PERCENTAGE,""+e);const i=this.$element.querySelector(s.oH.SELECTORS.LOADER_PAR),n=this.$element.querySelector(s.oH.SELECTORS.LOADER_TIME);i&&(i.textContent=e+"%"),n&&t&&(n.textContent=t)}setStatus(e,t){if(this.$element){switch(this.$element.classList.remove(s.oH.CLASSES.LOADING,s.oH.CLASSES.SUCCESS,s.oH.CLASSES.ERROR),e){case"loading":this.$element.classList.add(s.oH.CLASSES.LOADING);break;case"success":this.$element.classList.add(s.oH.CLASSES.SUCCESS);break;case"error":this.$element.classList.add(s.oH.CLASSES.ERROR)}t&&this.$loaderProgress&&(this.$loaderProgress.textContent=t)}}disable(){this.$element&&this.$button&&(this.$element.classList.add(s.oH.CLASSES.DISABLED),this.$button.disabled=!0,this.options.disabled=!0)}enable(){this.$element&&this.$button&&(this.$element.classList.remove(s.oH.CLASSES.DISABLED),this.$button.disabled=!1,this.options.disabled=!1)}destroy(){this.$element&&this.$input&&this.$button&&(this.$button.removeEventListener("click",this._handleButtonClick.bind(this)),this.$input.removeEventListener("change",this._handleFileSelect.bind(this)),this.$element.removeEventListener("dragenter",this._handleDragEnter.bind(this)),this.$element.removeEventListener("dragleave",this._handleDragLeave.bind(this)),this.$element.removeEventListener("dragover",this._handleDragOver.bind(this)),this.$element.removeEventListener("drop",this._handleDrop.bind(this)),this.$loaderClose&&this.$loaderClose.removeEventListener("click",this._handleClose.bind(this)),this.$input.parentNode&&this.$input.parentNode.removeChild(this.$input))}}function o(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s.oH.SELECTORS.UPLOAD,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=[],n=document.querySelectorAll("string"==typeof e?e:s.oH.SELECTORS.UPLOAD);return n.length?(n.forEach((e=>{try{const s=new l(e,t);i.push(s)}catch(s){}})),i):i}const r=l}}]);
|
|
2
|
-
//# sourceMappingURL=308.atomix.react.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"js/308.atomix.react.js","mappings":"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","sources":["webpack://Atomix/./src/components/Upload/scripts/index.ts"],"sourcesContent":["import { UPLOAD } from '../../../lib/constants/components';\n\n/**\n * Interface for Upload options\n */\ninterface UploadOptions {\n disabled?: boolean;\n maxSizeInMB?: number;\n acceptedFileTypes?: string[];\n multiple?: boolean;\n onFileSelect?: (files: File[]) => void;\n onFileUpload?: (file: File, progress: number) => void;\n onFileUploadComplete?: (file: File) => void;\n onFileUploadError?: (file: File, error: string) => void;\n [key: string]: any;\n}\n\n/**\n * Interface for Upload instance\n */\ninterface UploadInstance {\n setStatus: (status: 'idle' | 'loading' | 'success' | 'error', message?: string) => void;\n setProgress: (percentage: number, timeLeft?: string) => void;\n setFile: (file: File | null) => void;\n disable: () => void;\n enable: () => void;\n destroy: () => void;\n}\n\n/**\n * Default options for the Upload component\n */\nconst DEFAULT_OPTIONS: UploadOptions = {\n disabled: false,\n maxSizeInMB: 5,\n acceptedFileTypes: ['application/pdf', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'image/jpeg', 'image/png'],\n multiple: false\n};\n\n/**\n * Class representing an Upload component\n */\nclass Upload implements UploadInstance {\n private selector: string | Element;\n private $element: HTMLElement | null;\n private $input: HTMLInputElement | null;\n private $button: HTMLButtonElement | null;\n private $loader: HTMLElement | null;\n private $loaderTitle: HTMLElement | null;\n private $loaderProgress: HTMLElement | null;\n private $loaderClose: HTMLButtonElement | null;\n private options: UploadOptions;\n private currentFile: File | null;\n private dragCounter: number;\n\n /**\n * Creates an instance of Upload\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n */\n constructor(selector: string | Element, options = {}) {\n this.selector = selector || UPLOAD.SELECTORS.UPLOAD;\n this.$element =\n typeof selector === 'string'\n ? document.querySelector<HTMLElement>(selector)\n : selector as HTMLElement;\n this.options = { ...DEFAULT_OPTIONS, ...options } as UploadOptions;\n this.$input = null;\n this.$button = null;\n this.$loader = null;\n this.$loaderTitle = null;\n this.$loaderProgress = null;\n this.$loaderClose = null;\n this.currentFile = null;\n this.dragCounter = 0;\n this._initialize();\n }\n\n /**\n * Initialize the upload component\n */\n private _initialize(): void {\n if (!this.$element) return;\n\n // Create a hidden file input element\n this._createHiddenInput();\n\n // Get references to elements\n this.$button = this.$element.querySelector<HTMLButtonElement>(UPLOAD.SELECTORS.BUTTON);\n this.$loader = this.$element.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER);\n this.$loaderTitle = this.$element?.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_TITLE);\n this.$loaderProgress = this.$element?.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_PROGRESS);\n this.$loaderClose = this.$element?.querySelector<HTMLButtonElement>(UPLOAD.SELECTORS.LOADER_CLOSE);\n\n // Apply disabled state if specified\n if (this.options.disabled) {\n this.disable();\n }\n\n // Set up event listeners\n this._setupEventListeners();\n }\n\n /**\n * Creates a hidden file input element and appends it to the element\n */\n private _createHiddenInput(): void {\n if (!this.$element) return;\n\n // Create input element\n const input = document.createElement('input');\n input.type = 'file';\n input.style.display = 'none';\n input.accept = this.options.acceptedFileTypes?.join(',') || '';\n input.multiple = !!this.options.multiple;\n \n // Append to element\n this.$element.appendChild(input);\n this.$input = input;\n }\n\n /**\n * Set up all event listeners\n */\n private _setupEventListeners(): void {\n if (!this.$element || !this.$input || !this.$button) return;\n\n // Button click handler\n this.$button.addEventListener('click', this._handleButtonClick.bind(this));\n\n // Input change handler\n this.$input.addEventListener('change', this._handleFileSelect.bind(this));\n\n // Drag and drop handlers\n this.$element.addEventListener('dragenter', this._handleDragEnter.bind(this));\n this.$element.addEventListener('dragleave', this._handleDragLeave.bind(this));\n this.$element.addEventListener('dragover', this._handleDragOver.bind(this));\n this.$element.addEventListener('drop', this._handleDrop.bind(this));\n\n // Close button handler\n if (this.$loaderClose) {\n this.$loaderClose.addEventListener('click', this._handleClose.bind(this));\n }\n }\n\n /**\n * Handle button click\n */\n private _handleButtonClick(event: MouseEvent): void {\n event.preventDefault();\n if (this.$input && !this.options.disabled) {\n this.$input.click();\n }\n }\n\n /**\n * Handle file selection from the input element\n */\n private _handleFileSelect(event: Event): void {\n if (!this.$input?.files?.length) return;\n \n const files = Array.from(this.$input.files);\n this._processFiles(files);\n }\n\n /**\n * Handle drag enter event\n */\n private _handleDragEnter(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n \n this.dragCounter++;\n if (this.dragCounter === 1) {\n this.$element?.classList.add(UPLOAD.CLASSES.DRAGGING);\n }\n }\n\n /**\n * Handle drag leave event\n */\n private _handleDragLeave(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n \n this.dragCounter--;\n if (this.dragCounter === 0) {\n this.$element?.classList.remove(UPLOAD.CLASSES.DRAGGING);\n }\n }\n\n /**\n * Handle drag over event\n */\n private _handleDragOver(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n }\n\n /**\n * Handle drop event\n */\n private _handleDrop(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n \n this.dragCounter = 0;\n this.$element?.classList.remove(UPLOAD.CLASSES.DRAGGING);\n \n if (!event.dataTransfer?.files.length) return;\n \n const files = Array.from(event.dataTransfer.files);\n this._processFiles(files);\n }\n\n /**\n * Handle close button click\n */\n private _handleClose(event: MouseEvent): void {\n event.preventDefault();\n \n // Reset state\n this.setStatus('idle');\n this.setFile(null);\n \n // Reset input\n if (this.$input) {\n this.$input.value = '';\n }\n }\n\n /**\n * Process the selected files\n */\n private _processFiles(files: File[]): void {\n if (!files.length) return;\n \n // If multiple is not allowed, take only the first file\n const filesToProcess = this.options.multiple ? files : [files[0]];\n \n // Validate files\n const validFiles = filesToProcess.filter(file => this._validateFile(file));\n \n // Notify about file selection\n if (validFiles.length && this.options.onFileSelect) {\n this.options.onFileSelect(validFiles);\n }\n \n // Process the first valid file\n if (validFiles.length) {\n this.setFile(validFiles[0]);\n this._simulateUpload(validFiles[0]);\n }\n }\n\n /**\n * Validate a file based on size and type\n */\n private _validateFile(file: File): boolean {\n const maxSizeInBytes = (this.options.maxSizeInMB || 5) * 1024 * 1024;\n \n // Check file size\n if (file.size > maxSizeInBytes) {\n this.setStatus('error', `File too large. Maximum size is ${this.options.maxSizeInMB}MB.`);\n return false;\n }\n \n // Check file type if acceptedFileTypes is provided\n if (this.options.acceptedFileTypes?.length) {\n const isAcceptedType = this.options.acceptedFileTypes.some(type => {\n // Handle wildcards like image/*\n if (type.endsWith('/*')) {\n const mainType = type.split('/')[0];\n return file.type.startsWith(`${mainType}/`);\n }\n return file.type === type;\n });\n \n if (!isAcceptedType) {\n this.setStatus('error', 'File type not supported.');\n return false;\n }\n }\n \n return true;\n }\n\n /**\n * Simulate a file upload process\n * In a real implementation, this would be replaced with actual upload logic\n */\n private _simulateUpload(file: File): void {\n this.setStatus('loading');\n let progress = 0;\n \n const interval = setInterval(() => {\n progress += 5;\n \n if (progress < 100) {\n this.setProgress(progress, `${Math.ceil((100 - progress) / 5)} seconds left`);\n \n if (this.options.onFileUpload) {\n this.options.onFileUpload(file, progress);\n }\n } else {\n clearInterval(interval);\n this.setStatus('success', 'Upload successful');\n \n if (this.options.onFileUploadComplete) {\n this.options.onFileUploadComplete(file);\n }\n }\n }, 500);\n }\n\n /**\n * Set current file\n */\n public setFile(file: File | null): void {\n this.currentFile = file;\n \n if (file && this.$loaderTitle) {\n this.$loaderTitle.textContent = file.name;\n }\n }\n\n /**\n * Set upload progress\n */\n public setProgress(percentage: number, timeLeft?: string): void {\n if (!this.$element || !this.$loaderProgress) return;\n \n // Set percentage as CSS variable\n this.$element.style.setProperty(UPLOAD.ATTRIBUTES.PERCENTAGE, percentage.toString());\n \n // Update the loader elements if they exist\n const $par = this.$element.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_PAR);\n const $time = this.$element.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_TIME);\n \n if ($par) {\n $par.textContent = `${percentage}%`;\n }\n \n if ($time && timeLeft) {\n $time.textContent = timeLeft;\n }\n }\n\n /**\n * Set upload status\n */\n public setStatus(status: 'idle' | 'loading' | 'success' | 'error', message?: string): void {\n if (!this.$element) return;\n \n // Remove all status classes\n this.$element.classList.remove(\n UPLOAD.CLASSES.LOADING,\n UPLOAD.CLASSES.SUCCESS,\n UPLOAD.CLASSES.ERROR\n );\n \n // Add appropriate class based on status\n switch (status) {\n case 'loading':\n this.$element.classList.add(UPLOAD.CLASSES.LOADING);\n break;\n case 'success':\n this.$element.classList.add(UPLOAD.CLASSES.SUCCESS);\n break;\n case 'error':\n this.$element.classList.add(UPLOAD.CLASSES.ERROR);\n break;\n }\n \n // Update message if provided and loader exists\n if (message && this.$loaderProgress) {\n this.$loaderProgress.textContent = message;\n }\n }\n\n /**\n * Disable the upload component\n */\n public disable(): void {\n if (!this.$element || !this.$button) return;\n \n this.$element.classList.add(UPLOAD.CLASSES.DISABLED);\n this.$button.disabled = true;\n this.options.disabled = true;\n }\n\n /**\n * Enable the upload component\n */\n public enable(): void {\n if (!this.$element || !this.$button) return;\n \n this.$element.classList.remove(UPLOAD.CLASSES.DISABLED);\n this.$button.disabled = false;\n this.options.disabled = false;\n }\n\n /**\n * Clean up event listeners\n */\n public destroy(): void {\n if (!this.$element || !this.$input || !this.$button) return;\n \n // Remove event listeners\n this.$button.removeEventListener('click', this._handleButtonClick.bind(this));\n this.$input.removeEventListener('change', this._handleFileSelect.bind(this));\n this.$element.removeEventListener('dragenter', this._handleDragEnter.bind(this));\n this.$element.removeEventListener('dragleave', this._handleDragLeave.bind(this));\n this.$element.removeEventListener('dragover', this._handleDragOver.bind(this));\n this.$element.removeEventListener('drop', this._handleDrop.bind(this));\n \n if (this.$loaderClose) {\n this.$loaderClose.removeEventListener('click', this._handleClose.bind(this));\n }\n \n // Remove input element\n if (this.$input.parentNode) {\n this.$input.parentNode.removeChild(this.$input);\n }\n }\n}\n\n/**\n * Initialize all upload components in the document\n * @param {string|Element} selector - CSS selector string or DOM Element\n * @param {Object} options - Custom options to override defaults\n * @returns {UploadInstance[]} Array of Upload instances\n */\nexport function initializeUploads(selector = UPLOAD.SELECTORS.UPLOAD, options = {}): UploadInstance[] {\n const uploadInstances: UploadInstance[] = [];\n const uploadElements = document.querySelectorAll<HTMLElement>(typeof selector === 'string' ? selector : UPLOAD.SELECTORS.UPLOAD);\n\n if (!uploadElements.length) return uploadInstances;\n\n uploadElements.forEach((element) => {\n try {\n const instance = new Upload(element, options);\n uploadInstances.push(instance);\n } catch (error) {\n console.error('Error initializing upload:', error);\n }\n });\n\n return uploadInstances;\n}\n\nexport default Upload; "],"names":["DEFAULT_OPTIONS","disabled","maxSizeInMB","acceptedFileTypes","multiple","Upload","constructor","selector","options","arguments","length","undefined","this","UPLOAD","SELECTORS","$element","document","querySelector","$input","$button","$loader","$loaderTitle","$loaderProgress","$loaderClose","currentFile","dragCounter","_initialize","_createHiddenInput","BUTTON","LOADER","LOADER_TITLE","LOADER_PROGRESS","LOADER_CLOSE","disable","_setupEventListeners","input","createElement","type","style","display","accept","join","appendChild","addEventListener","_handleButtonClick","bind","_handleFileSelect","_handleDragEnter","_handleDragLeave","_handleDragOver","_handleDrop","_handleClose","event","preventDefault","click","files","Array","from","_processFiles","classList","add","CLASSES","DRAGGING","remove","dataTransfer","setStatus","setFile","value","validFiles","filter","file","_validateFile","onFileSelect","_simulateUpload","size","some","endsWith","mainType","split","startsWith","progress","interval","setInterval","setProgress","Math","ceil","onFileUpload","clearInterval","onFileUploadComplete","textContent","name","percentage","timeLeft","setProperty","ATTRIBUTES","PERCENTAGE","$par","LOADER_PAR","$time","LOADER_TIME","status","message","LOADING","SUCCESS","ERROR","DISABLED","enable","destroy","removeEventListener","parentNode","removeChild","initializeUploads","uploadInstances","uploadElements","querySelectorAll","forEach","element","instance","push","error"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_shohojdhara_atomix=self.webpackChunk_shohojdhara_atomix||[]).push([[34],{34:(t,e,i)=>{i.r(e),i.d(e,{default:()=>r});const r=class{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.element=t,this.options={productName:"",productImage:null,initialRating:0,maxRating:5,allowHalf:!0,ratingColor:"warning",onSubmit:null,...e},this.ratingElement=this.element.querySelector(".c-rating"),this.textareaElement=this.element.querySelector(".c-product-review__textarea"),this.submitButton=this.element.querySelector(".c-product-review__actions .c-btn"),this.formElement=this.element.querySelector(".c-product-review__form"),this.onSubmit=this.options.onSubmit,this.init()}init(){this.formElement&&this.formElement.addEventListener("submit",this.handleSubmit.bind(this)),this.setupAccessibility()}setupAccessibility(){if(this.ratingElement){this.ratingElement.setAttribute("role","radiogroup"),this.ratingElement.setAttribute("aria-label","Rating");this.ratingElement.querySelectorAll(".c-rating__star").forEach(((t,e)=>{t.setAttribute("role","radio"),t.setAttribute("aria-label",`${e+1} star${0===e?"":"s"}`)}))}this.textareaElement&&this.textareaElement.setAttribute("aria-required","false")}handleSubmit(t){if(t.preventDefault(),!this.ratingElement||!this.textareaElement)return;const e=parseFloat(this.ratingElement.getAttribute("data-value")||"0");this.onSubmit&&e>0&&this.onSubmit(e,this.textareaElement.value),this.showSuccessState()}showSuccessState(){}reset(){if(this.ratingElement){this.ratingElement.setAttribute("data-value","0");this.ratingElement.querySelectorAll(".c-rating__star").forEach((t=>{t.classList.remove("c-rating__star--full","c-rating__star--half")}))}this.textareaElement&&(this.textareaElement.value="")}destroy(){this.formElement&&this.formElement.removeEventListener("submit",this.handleSubmit.bind(this))}}}}]);
|
|
2
|
-
//# sourceMappingURL=34.atomix.react.cjs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"js/34.atomix.react.cjs.js","mappings":"oJAEA,QCCe,MAcbA,WAAAA,CAAYC,GAAyC,IAAnBC,EAAYC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAChDG,KAAKL,QAAUA,EACfK,KAAKJ,QAAU,CACbK,YAAa,GACbC,aAAc,KACdC,cAAe,EACfC,UAAW,EACXC,WAAW,EACXC,YAAa,UACbC,SAAU,QACPX,GAGLI,KAAKQ,cAAgBR,KAAKL,QAAQc,cAAc,aAChDT,KAAKU,gBAAkBV,KAAKL,QAAQc,cAAc,+BAClDT,KAAKW,aAAeX,KAAKL,QAAQc,cAAc,qCAC/CT,KAAKY,YAAcZ,KAAKL,QAAQc,cAAc,2BAC9CT,KAAKO,SAAWP,KAAKJ,QAAQW,SAE7BP,KAAKa,MACP,CAKAA,IAAAA,GACMb,KAAKY,aACPZ,KAAKY,YAAYE,iBAAiB,SAAUd,KAAKe,aAAaC,KAAKhB,OAIrEA,KAAKiB,oBACP,CAKAA,kBAAAA,GAEE,GAAIjB,KAAKQ,cAAe,CACtBR,KAAKQ,cAAcU,aAAa,OAAQ,cACxClB,KAAKQ,cAAcU,aAAa,aAAc,UAEhClB,KAAKQ,cAAcW,iBAAiB,mBAC5CC,SAAQ,CAACC,EAAMC,KACnBD,EAAKH,aAAa,OAAQ,SAC1BG,EAAKH,aAAa,aAAc,GAAGI,EAAQ,SAAmB,IAAVA,EAAc,GAAK,MAAM,GAEjF,CAEItB,KAAKU,iBACPV,KAAKU,gBAAgBQ,aAAa,gBAAiB,QAEvD,CAMAH,YAAAA,CAAaQ,GAGX,GAFAA,EAAEC,kBAEGxB,KAAKQ,gBAAkBR,KAAKU,gBAAiB,OAElD,MAAMe,EAASC,WAAW1B,KAAKQ,cAAcmB,aAAa,eAAiB,KAGvE3B,KAAKO,UAAYkB,EAAS,GAC5BzB,KAAKO,SAASkB,EAHCzB,KAAKU,gBAAwCkB,OAO9D5B,KAAK6B,kBACP,CAKAA,gBAAAA,GAEE,CAMFC,KAAAA,GACE,GAAI9B,KAAKQ,cAAe,CACtBR,KAAKQ,cAAcU,aAAa,aAAc,KAEhClB,KAAKQ,cAAcW,iBAAiB,mBAC5CC,SAAQC,IACZA,EAAKU,UAAUC,OAAO,uBAAwB,uBAAuB,GAEzE,CAEIhC,KAAKU,kBACNV,KAAKU,gBAAwCkB,MAAQ,GAE1D,CAKAK,OAAAA,GACMjC,KAAKY,aACPZ,KAAKY,YAAYsB,oBAAoB,SAAUlC,KAAKe,aAAaC,KAAKhB,MAI1E,E","sources":["webpack://@shohojdhara/atomix/./src/components/ProductReview/scripts/bundle.ts","webpack://@shohojdhara/atomix/./src/components/ProductReview/scripts/componentInteractions.ts"],"sourcesContent":["import ProductReview from './componentInteractions';\n\nexport default ProductReview;\n","/**\n * Class for handling ProductReview component interactions\n */\nexport default class ProductReview {\n element: HTMLElement;\n options: any;\n ratingElement: HTMLElement | null;\n textareaElement: HTMLElement | null;\n submitButton: HTMLElement | null;\n formElement: HTMLFormElement | null;\n onSubmit: ((rating: number, comment: string) => void) | null;\n \n /**\n * Create a new ProductReview instance\n * @param element - The product review container element\n * @param options - Configuration options\n */\n constructor(element: HTMLElement, options: any = {}) {\n this.element = element;\n this.options = {\n productName: '',\n productImage: null,\n initialRating: 0,\n maxRating: 5,\n allowHalf: true,\n ratingColor: 'warning',\n onSubmit: null,\n ...options\n };\n \n this.ratingElement = this.element.querySelector('.c-rating');\n this.textareaElement = this.element.querySelector('.c-product-review__textarea');\n this.submitButton = this.element.querySelector('.c-product-review__actions .c-btn');\n this.formElement = this.element.querySelector('.c-product-review__form') as HTMLFormElement;\n this.onSubmit = this.options.onSubmit;\n \n this.init();\n }\n \n /**\n * Initialize the product review component\n */\n init() {\n if (this.formElement) {\n this.formElement.addEventListener('submit', this.handleSubmit.bind(this));\n }\n \n // Add any additional initialization logic here\n this.setupAccessibility();\n }\n \n /**\n * Set up accessibility features\n */\n setupAccessibility() {\n // Add ARIA attributes for better accessibility\n if (this.ratingElement) {\n this.ratingElement.setAttribute('role', 'radiogroup');\n this.ratingElement.setAttribute('aria-label', 'Rating');\n \n const stars = this.ratingElement.querySelectorAll('.c-rating__star');\n stars.forEach((star, index) => {\n star.setAttribute('role', 'radio');\n star.setAttribute('aria-label', `${index + 1} star${index === 0 ? '' : 's'}`);\n });\n }\n \n if (this.textareaElement) {\n this.textareaElement.setAttribute('aria-required', 'false');\n }\n }\n \n /**\n * Handle form submission\n * @param e - Submit event\n */\n handleSubmit(e: Event) {\n e.preventDefault();\n \n if (!this.ratingElement || !this.textareaElement) return;\n \n const rating = parseFloat(this.ratingElement.getAttribute('data-value') || '0');\n const comment = (this.textareaElement as HTMLTextAreaElement).value;\n \n if (this.onSubmit && rating > 0) {\n this.onSubmit(rating, comment);\n }\n \n // Show success state\n this.showSuccessState();\n }\n \n /**\n * Show the success state after submission\n */\n showSuccessState() {\n // This will be handled by React state in the component\n // But we could add additional logic here if needed\n }\n \n /**\n * Reset the form\n */\n reset() {\n if (this.ratingElement) {\n this.ratingElement.setAttribute('data-value', '0');\n \n const stars = this.ratingElement.querySelectorAll('.c-rating__star');\n stars.forEach(star => {\n star.classList.remove('c-rating__star--full', 'c-rating__star--half');\n });\n }\n \n if (this.textareaElement) {\n (this.textareaElement as HTMLTextAreaElement).value = '';\n }\n }\n \n /**\n * Clean up event listeners\n */\n destroy() {\n if (this.formElement) {\n this.formElement.removeEventListener('submit', this.handleSubmit.bind(this));\n }\n \n // Clean up any other event listeners\n }\n}\n"],"names":["constructor","element","options","arguments","length","undefined","this","productName","productImage","initialRating","maxRating","allowHalf","ratingColor","onSubmit","ratingElement","querySelector","textareaElement","submitButton","formElement","init","addEventListener","handleSubmit","bind","setupAccessibility","setAttribute","querySelectorAll","forEach","star","index","e","preventDefault","rating","parseFloat","getAttribute","value","showSuccessState","reset","classList","remove","destroy","removeEventListener"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export const __webpack_id__=34;export const __webpack_ids__=[34];export const __webpack_modules__={34:(t,e,i)=>{i.r(e),i.d(e,{default:()=>r});const r=class{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.element=t,this.options={productName:"",productImage:null,initialRating:0,maxRating:5,allowHalf:!0,ratingColor:"warning",onSubmit:null,...e},this.ratingElement=this.element.querySelector(".c-rating"),this.textareaElement=this.element.querySelector(".c-product-review__textarea"),this.submitButton=this.element.querySelector(".c-product-review__actions .c-btn"),this.formElement=this.element.querySelector(".c-product-review__form"),this.onSubmit=this.options.onSubmit,this.init()}init(){this.formElement&&this.formElement.addEventListener("submit",this.handleSubmit.bind(this)),this.setupAccessibility()}setupAccessibility(){if(this.ratingElement){this.ratingElement.setAttribute("role","radiogroup"),this.ratingElement.setAttribute("aria-label","Rating");this.ratingElement.querySelectorAll(".c-rating__star").forEach(((t,e)=>{t.setAttribute("role","radio"),t.setAttribute("aria-label",`${e+1} star${0===e?"":"s"}`)}))}this.textareaElement&&this.textareaElement.setAttribute("aria-required","false")}handleSubmit(t){if(t.preventDefault(),!this.ratingElement||!this.textareaElement)return;const e=parseFloat(this.ratingElement.getAttribute("data-value")||"0");this.onSubmit&&e>0&&this.onSubmit(e,this.textareaElement.value),this.showSuccessState()}showSuccessState(){}reset(){if(this.ratingElement){this.ratingElement.setAttribute("data-value","0");this.ratingElement.querySelectorAll(".c-rating__star").forEach((t=>{t.classList.remove("c-rating__star--full","c-rating__star--half")}))}this.textareaElement&&(this.textareaElement.value="")}destroy(){this.formElement&&this.formElement.removeEventListener("submit",this.handleSubmit.bind(this))}}}};
|
|
2
|
-
//# sourceMappingURL=34.atomix.react.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"js/34.atomix.react.esm.js","mappings":"8IAEA,QCCe,MAcbA,WAAAA,CAAYC,GAAyC,IAAnBC,EAAYC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAChDG,KAAKL,QAAUA,EACfK,KAAKJ,QAAU,CACbK,YAAa,GACbC,aAAc,KACdC,cAAe,EACfC,UAAW,EACXC,WAAW,EACXC,YAAa,UACbC,SAAU,QACPX,GAGLI,KAAKQ,cAAgBR,KAAKL,QAAQc,cAAc,aAChDT,KAAKU,gBAAkBV,KAAKL,QAAQc,cAAc,+BAClDT,KAAKW,aAAeX,KAAKL,QAAQc,cAAc,qCAC/CT,KAAKY,YAAcZ,KAAKL,QAAQc,cAAc,2BAC9CT,KAAKO,SAAWP,KAAKJ,QAAQW,SAE7BP,KAAKa,MACP,CAKAA,IAAAA,GACMb,KAAKY,aACPZ,KAAKY,YAAYE,iBAAiB,SAAUd,KAAKe,aAAaC,KAAKhB,OAIrEA,KAAKiB,oBACP,CAKAA,kBAAAA,GAEE,GAAIjB,KAAKQ,cAAe,CACtBR,KAAKQ,cAAcU,aAAa,OAAQ,cACxClB,KAAKQ,cAAcU,aAAa,aAAc,UAEhClB,KAAKQ,cAAcW,iBAAiB,mBAC5CC,SAAQ,CAACC,EAAMC,KACnBD,EAAKH,aAAa,OAAQ,SAC1BG,EAAKH,aAAa,aAAc,GAAGI,EAAQ,SAAmB,IAAVA,EAAc,GAAK,MAAM,GAEjF,CAEItB,KAAKU,iBACPV,KAAKU,gBAAgBQ,aAAa,gBAAiB,QAEvD,CAMAH,YAAAA,CAAaQ,GAGX,GAFAA,EAAEC,kBAEGxB,KAAKQ,gBAAkBR,KAAKU,gBAAiB,OAElD,MAAMe,EAASC,WAAW1B,KAAKQ,cAAcmB,aAAa,eAAiB,KAGvE3B,KAAKO,UAAYkB,EAAS,GAC5BzB,KAAKO,SAASkB,EAHCzB,KAAKU,gBAAwCkB,OAO9D5B,KAAK6B,kBACP,CAKAA,gBAAAA,GAEE,CAMFC,KAAAA,GACE,GAAI9B,KAAKQ,cAAe,CACtBR,KAAKQ,cAAcU,aAAa,aAAc,KAEhClB,KAAKQ,cAAcW,iBAAiB,mBAC5CC,SAAQC,IACZA,EAAKU,UAAUC,OAAO,uBAAwB,uBAAuB,GAEzE,CAEIhC,KAAKU,kBACNV,KAAKU,gBAAwCkB,MAAQ,GAE1D,CAKAK,OAAAA,GACMjC,KAAKY,aACPZ,KAAKY,YAAYsB,oBAAoB,SAAUlC,KAAKe,aAAaC,KAAKhB,MAI1E,E","sources":["webpack://@shohojdhara/atomix/./src/components/ProductReview/scripts/bundle.ts","webpack://@shohojdhara/atomix/./src/components/ProductReview/scripts/componentInteractions.ts"],"sourcesContent":["import ProductReview from './componentInteractions';\n\nexport default ProductReview;\n","/**\n * Class for handling ProductReview component interactions\n */\nexport default class ProductReview {\n element: HTMLElement;\n options: any;\n ratingElement: HTMLElement | null;\n textareaElement: HTMLElement | null;\n submitButton: HTMLElement | null;\n formElement: HTMLFormElement | null;\n onSubmit: ((rating: number, comment: string) => void) | null;\n \n /**\n * Create a new ProductReview instance\n * @param element - The product review container element\n * @param options - Configuration options\n */\n constructor(element: HTMLElement, options: any = {}) {\n this.element = element;\n this.options = {\n productName: '',\n productImage: null,\n initialRating: 0,\n maxRating: 5,\n allowHalf: true,\n ratingColor: 'warning',\n onSubmit: null,\n ...options\n };\n \n this.ratingElement = this.element.querySelector('.c-rating');\n this.textareaElement = this.element.querySelector('.c-product-review__textarea');\n this.submitButton = this.element.querySelector('.c-product-review__actions .c-btn');\n this.formElement = this.element.querySelector('.c-product-review__form') as HTMLFormElement;\n this.onSubmit = this.options.onSubmit;\n \n this.init();\n }\n \n /**\n * Initialize the product review component\n */\n init() {\n if (this.formElement) {\n this.formElement.addEventListener('submit', this.handleSubmit.bind(this));\n }\n \n // Add any additional initialization logic here\n this.setupAccessibility();\n }\n \n /**\n * Set up accessibility features\n */\n setupAccessibility() {\n // Add ARIA attributes for better accessibility\n if (this.ratingElement) {\n this.ratingElement.setAttribute('role', 'radiogroup');\n this.ratingElement.setAttribute('aria-label', 'Rating');\n \n const stars = this.ratingElement.querySelectorAll('.c-rating__star');\n stars.forEach((star, index) => {\n star.setAttribute('role', 'radio');\n star.setAttribute('aria-label', `${index + 1} star${index === 0 ? '' : 's'}`);\n });\n }\n \n if (this.textareaElement) {\n this.textareaElement.setAttribute('aria-required', 'false');\n }\n }\n \n /**\n * Handle form submission\n * @param e - Submit event\n */\n handleSubmit(e: Event) {\n e.preventDefault();\n \n if (!this.ratingElement || !this.textareaElement) return;\n \n const rating = parseFloat(this.ratingElement.getAttribute('data-value') || '0');\n const comment = (this.textareaElement as HTMLTextAreaElement).value;\n \n if (this.onSubmit && rating > 0) {\n this.onSubmit(rating, comment);\n }\n \n // Show success state\n this.showSuccessState();\n }\n \n /**\n * Show the success state after submission\n */\n showSuccessState() {\n // This will be handled by React state in the component\n // But we could add additional logic here if needed\n }\n \n /**\n * Reset the form\n */\n reset() {\n if (this.ratingElement) {\n this.ratingElement.setAttribute('data-value', '0');\n \n const stars = this.ratingElement.querySelectorAll('.c-rating__star');\n stars.forEach(star => {\n star.classList.remove('c-rating__star--full', 'c-rating__star--half');\n });\n }\n \n if (this.textareaElement) {\n (this.textareaElement as HTMLTextAreaElement).value = '';\n }\n }\n \n /**\n * Clean up event listeners\n */\n destroy() {\n if (this.formElement) {\n this.formElement.removeEventListener('submit', this.handleSubmit.bind(this));\n }\n \n // Clean up any other event listeners\n }\n}\n"],"names":["constructor","element","options","arguments","length","undefined","this","productName","productImage","initialRating","maxRating","allowHalf","ratingColor","onSubmit","ratingElement","querySelector","textareaElement","submitButton","formElement","init","addEventListener","handleSubmit","bind","setupAccessibility","setAttribute","querySelectorAll","forEach","star","index","e","preventDefault","rating","parseFloat","getAttribute","value","showSuccessState","reset","classList","remove","destroy","removeEventListener"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(this.webpackChunkAtomix=this.webpackChunkAtomix||[]).push([[34],{34:(t,e,i)=>{i.r(e),i.d(e,{default:()=>r});const r=class{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.element=t,this.options={productName:"",productImage:null,initialRating:0,maxRating:5,allowHalf:!0,ratingColor:"warning",onSubmit:null,...e},this.ratingElement=this.element.querySelector(".c-rating"),this.textareaElement=this.element.querySelector(".c-product-review__textarea"),this.submitButton=this.element.querySelector(".c-product-review__actions .c-btn"),this.formElement=this.element.querySelector(".c-product-review__form"),this.onSubmit=this.options.onSubmit,this.init()}init(){this.formElement&&this.formElement.addEventListener("submit",this.handleSubmit.bind(this)),this.setupAccessibility()}setupAccessibility(){if(this.ratingElement){this.ratingElement.setAttribute("role","radiogroup"),this.ratingElement.setAttribute("aria-label","Rating");this.ratingElement.querySelectorAll(".c-rating__star").forEach(((t,e)=>{t.setAttribute("role","radio"),t.setAttribute("aria-label",`${e+1} star${0===e?"":"s"}`)}))}this.textareaElement&&this.textareaElement.setAttribute("aria-required","false")}handleSubmit(t){if(t.preventDefault(),!this.ratingElement||!this.textareaElement)return;const e=parseFloat(this.ratingElement.getAttribute("data-value")||"0");this.onSubmit&&e>0&&this.onSubmit(e,this.textareaElement.value),this.showSuccessState()}showSuccessState(){}reset(){if(this.ratingElement){this.ratingElement.setAttribute("data-value","0");this.ratingElement.querySelectorAll(".c-rating__star").forEach((t=>{t.classList.remove("c-rating__star--full","c-rating__star--half")}))}this.textareaElement&&(this.textareaElement.value="")}destroy(){this.formElement&&this.formElement.removeEventListener("submit",this.handleSubmit.bind(this))}}}}]);
|
|
2
|
-
//# sourceMappingURL=34.atomix.react.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"js/34.atomix.react.js","mappings":"0HAEA,QCCe,MAcbA,WAAAA,CAAYC,GAAyC,IAAnBC,EAAYC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAChDG,KAAKL,QAAUA,EACfK,KAAKJ,QAAU,CACbK,YAAa,GACbC,aAAc,KACdC,cAAe,EACfC,UAAW,EACXC,WAAW,EACXC,YAAa,UACbC,SAAU,QACPX,GAGLI,KAAKQ,cAAgBR,KAAKL,QAAQc,cAAc,aAChDT,KAAKU,gBAAkBV,KAAKL,QAAQc,cAAc,+BAClDT,KAAKW,aAAeX,KAAKL,QAAQc,cAAc,qCAC/CT,KAAKY,YAAcZ,KAAKL,QAAQc,cAAc,2BAC9CT,KAAKO,SAAWP,KAAKJ,QAAQW,SAE7BP,KAAKa,MACP,CAKAA,IAAAA,GACMb,KAAKY,aACPZ,KAAKY,YAAYE,iBAAiB,SAAUd,KAAKe,aAAaC,KAAKhB,OAIrEA,KAAKiB,oBACP,CAKAA,kBAAAA,GAEE,GAAIjB,KAAKQ,cAAe,CACtBR,KAAKQ,cAAcU,aAAa,OAAQ,cACxClB,KAAKQ,cAAcU,aAAa,aAAc,UAEhClB,KAAKQ,cAAcW,iBAAiB,mBAC5CC,SAAQ,CAACC,EAAMC,KACnBD,EAAKH,aAAa,OAAQ,SAC1BG,EAAKH,aAAa,aAAc,GAAGI,EAAQ,SAAmB,IAAVA,EAAc,GAAK,MAAM,GAEjF,CAEItB,KAAKU,iBACPV,KAAKU,gBAAgBQ,aAAa,gBAAiB,QAEvD,CAMAH,YAAAA,CAAaQ,GAGX,GAFAA,EAAEC,kBAEGxB,KAAKQ,gBAAkBR,KAAKU,gBAAiB,OAElD,MAAMe,EAASC,WAAW1B,KAAKQ,cAAcmB,aAAa,eAAiB,KAGvE3B,KAAKO,UAAYkB,EAAS,GAC5BzB,KAAKO,SAASkB,EAHCzB,KAAKU,gBAAwCkB,OAO9D5B,KAAK6B,kBACP,CAKAA,gBAAAA,GAEE,CAMFC,KAAAA,GACE,GAAI9B,KAAKQ,cAAe,CACtBR,KAAKQ,cAAcU,aAAa,aAAc,KAEhClB,KAAKQ,cAAcW,iBAAiB,mBAC5CC,SAAQC,IACZA,EAAKU,UAAUC,OAAO,uBAAwB,uBAAuB,GAEzE,CAEIhC,KAAKU,kBACNV,KAAKU,gBAAwCkB,MAAQ,GAE1D,CAKAK,OAAAA,GACMjC,KAAKY,aACPZ,KAAKY,YAAYsB,oBAAoB,SAAUlC,KAAKe,aAAaC,KAAKhB,MAI1E,E","sources":["webpack://Atomix/./src/components/ProductReview/scripts/bundle.ts","webpack://Atomix/./src/components/ProductReview/scripts/componentInteractions.ts"],"sourcesContent":["import ProductReview from './componentInteractions';\n\nexport default ProductReview;\n","/**\n * Class for handling ProductReview component interactions\n */\nexport default class ProductReview {\n element: HTMLElement;\n options: any;\n ratingElement: HTMLElement | null;\n textareaElement: HTMLElement | null;\n submitButton: HTMLElement | null;\n formElement: HTMLFormElement | null;\n onSubmit: ((rating: number, comment: string) => void) | null;\n \n /**\n * Create a new ProductReview instance\n * @param element - The product review container element\n * @param options - Configuration options\n */\n constructor(element: HTMLElement, options: any = {}) {\n this.element = element;\n this.options = {\n productName: '',\n productImage: null,\n initialRating: 0,\n maxRating: 5,\n allowHalf: true,\n ratingColor: 'warning',\n onSubmit: null,\n ...options\n };\n \n this.ratingElement = this.element.querySelector('.c-rating');\n this.textareaElement = this.element.querySelector('.c-product-review__textarea');\n this.submitButton = this.element.querySelector('.c-product-review__actions .c-btn');\n this.formElement = this.element.querySelector('.c-product-review__form') as HTMLFormElement;\n this.onSubmit = this.options.onSubmit;\n \n this.init();\n }\n \n /**\n * Initialize the product review component\n */\n init() {\n if (this.formElement) {\n this.formElement.addEventListener('submit', this.handleSubmit.bind(this));\n }\n \n // Add any additional initialization logic here\n this.setupAccessibility();\n }\n \n /**\n * Set up accessibility features\n */\n setupAccessibility() {\n // Add ARIA attributes for better accessibility\n if (this.ratingElement) {\n this.ratingElement.setAttribute('role', 'radiogroup');\n this.ratingElement.setAttribute('aria-label', 'Rating');\n \n const stars = this.ratingElement.querySelectorAll('.c-rating__star');\n stars.forEach((star, index) => {\n star.setAttribute('role', 'radio');\n star.setAttribute('aria-label', `${index + 1} star${index === 0 ? '' : 's'}`);\n });\n }\n \n if (this.textareaElement) {\n this.textareaElement.setAttribute('aria-required', 'false');\n }\n }\n \n /**\n * Handle form submission\n * @param e - Submit event\n */\n handleSubmit(e: Event) {\n e.preventDefault();\n \n if (!this.ratingElement || !this.textareaElement) return;\n \n const rating = parseFloat(this.ratingElement.getAttribute('data-value') || '0');\n const comment = (this.textareaElement as HTMLTextAreaElement).value;\n \n if (this.onSubmit && rating > 0) {\n this.onSubmit(rating, comment);\n }\n \n // Show success state\n this.showSuccessState();\n }\n \n /**\n * Show the success state after submission\n */\n showSuccessState() {\n // This will be handled by React state in the component\n // But we could add additional logic here if needed\n }\n \n /**\n * Reset the form\n */\n reset() {\n if (this.ratingElement) {\n this.ratingElement.setAttribute('data-value', '0');\n \n const stars = this.ratingElement.querySelectorAll('.c-rating__star');\n stars.forEach(star => {\n star.classList.remove('c-rating__star--full', 'c-rating__star--half');\n });\n }\n \n if (this.textareaElement) {\n (this.textareaElement as HTMLTextAreaElement).value = '';\n }\n }\n \n /**\n * Clean up event listeners\n */\n destroy() {\n if (this.formElement) {\n this.formElement.removeEventListener('submit', this.handleSubmit.bind(this));\n }\n \n // Clean up any other event listeners\n }\n}\n"],"names":["constructor","element","options","arguments","length","undefined","this","productName","productImage","initialRating","maxRating","allowHalf","ratingColor","onSubmit","ratingElement","querySelector","textareaElement","submitButton","formElement","init","addEventListener","handleSubmit","bind","setupAccessibility","setAttribute","querySelectorAll","forEach","star","index","e","preventDefault","rating","parseFloat","getAttribute","value","showSuccessState","reset","classList","remove","destroy","removeEventListener"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_shohojdhara_atomix=self.webpackChunk_shohojdhara_atomix||[]).push([[471],{471:(t,e,a)=>{a.r(e),a.d(e,{default:()=>n,disposeAll:()=>l,enhanceWithKeyboardNavigation:()=>i,getInstance:()=>o,initFromDataAttributes:()=>r});const s={value:0,maxValue:5,allowHalf:!1,readOnly:!1,size:"md"};class n{stars=null;constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.element="string"==typeof t?document.querySelector(t):t,!this.element)throw Error("Rating: Element not found");this.options={...s,...e},this._currentValue=this.options.value||0,this._boundHandleMouseEnter=this._handleMouseEnter.bind(this),this._boundHandleMouseLeave=this._handleMouseLeave.bind(this),this._boundHandleClick=this._handleClick.bind(this),this._boundHandleKeyDown=this._handleKeyDown.bind(this),this.element._rating=this,this._init()}_init(){this.element.setAttribute("data-max-value",this.options.maxValue+""),this.element.setAttribute("data-allow-half",this.options.allowHalf+""),this.element.setAttribute("data-readonly",this.options.readOnly+""),this.options.readOnly?(this.element.setAttribute("role","img"),this.element.setAttribute("aria-label",`Rating: ${this._currentValue} out of ${this.options.maxValue} stars`)):this.element.setAttribute("role","radiogroup"),this.options.size&&"md"!==this.options.size&&this.element.classList.add("c-rating--"+this.options.size),this.options.color&&this.element.classList.add("c-rating--"+this.options.color),this.stars=this.element.querySelectorAll(".c-rating__star"),this._updateStars(),this.options.readOnly||this._bindEvents(),this.element.dispatchEvent(new CustomEvent("rating:init",{bubbles:!0,detail:{instance:this}}))}_bindEvents(){this.stars&&(this.stars.forEach((t=>{t.addEventListener("mouseenter",this._boundHandleMouseEnter),t.addEventListener("click",this._boundHandleClick),t.addEventListener("keydown",this._boundHandleKeyDown),t.setAttribute("tabindex","0"),t.setAttribute("role","button")})),this.element.addEventListener("mouseleave",this._boundHandleMouseLeave))}_handleMouseEnter(t){if(this.options.readOnly)return;const e=Number(t.currentTarget.getAttribute("data-value"));this._highlightStars(e)}_handleMouseLeave(){this.options.readOnly||this._updateStars()}_handleClick(t){if(this.options.readOnly)return;const e=Number(t.currentTarget.getAttribute("data-value"));this.setValue(e),this.options.onChange&&this.options.onChange(e)}_handleKeyDown(t){if(this.options.readOnly)return;const e=Number(t.currentTarget.getAttribute("data-value")),a=this.options.allowHalf?.5:1;let s=this._currentValue;switch(t.key){case"ArrowRight":case"ArrowUp":s=Math.min(this.options.maxValue||5,this._currentValue+a),t.preventDefault();break;case"ArrowLeft":case"ArrowDown":s=Math.max(0,this._currentValue-a),t.preventDefault();break;case"Home":s=0,t.preventDefault();break;case"End":s=this.options.maxValue||5,t.preventDefault();break;case" ":case"Enter":s=e,t.preventDefault();break;default:return}s!==this._currentValue&&(this.setValue(s),this.options.onChange&&this.options.onChange(s))}_updateStars(){if(!this.stars)return;const t=this.options.allowHalf?Math.floor(2*this._currentValue)/2:Math.round(this._currentValue);this.stars.forEach((e=>{const a=Number(e.getAttribute("data-value")),s=Math.floor(t)>=a,n=this.options.allowHalf&&a-.5===t;e.classList.remove("c-rating__star--full","c-rating__star--half"),s?e.classList.add("c-rating__star--full"):n&&e.classList.add("c-rating__star--half"),e.setAttribute("aria-checked",s||n?"true":"false")})),this.options.readOnly&&this.element.setAttribute("aria-label",`Rating: ${t} out of ${this.options.maxValue} stars`),this.element.setAttribute("data-value",t+"")}_highlightStars(t){this.stars&&this.stars.forEach((e=>{const a=Number(e.getAttribute("data-value"));e.classList.remove("c-rating__star--full","c-rating__star--half"),a>t||e.classList.add("c-rating__star--full")}))}getValue(){return this._currentValue}setValue(t){const e=Math.max(0,Math.min(t,this.options.maxValue||5));this._currentValue=e,this._updateStars(),this.element.dispatchEvent(new CustomEvent("rating:change",{bubbles:!0,detail:{value:e}}))}updateOptions(t){this.options={...this.options,...t},this._init()}destroy(){this.stars&&this.stars.forEach((t=>{t.removeEventListener("mouseenter",this._boundHandleMouseEnter),t.removeEventListener("click",this._boundHandleClick),t.removeEventListener("keydown",this._boundHandleKeyDown)})),this.element.removeEventListener("mouseleave",this._boundHandleMouseLeave),delete this.element._rating}}function i(t){const e=t.element;if(!e)return;e.addEventListener("keydown",(t=>{!function(t,e){if(!e)return;const a=e.querySelectorAll(".c-rating__star");if(!a.length)return;const s=Array.from(a).findIndex((t=>t===document.activeElement));let n=-1;switch(t.key){case"ArrowRight":case"ArrowUp":t.preventDefault(),n=a.length-1>s?s+1:0;break;case"ArrowLeft":case"ArrowDown":t.preventDefault(),n=s>0?s-1:a.length-1;break;case"Home":t.preventDefault(),n=0;break;case"End":t.preventDefault(),n=a.length-1;break;case" ":case"Enter":t.preventDefault(),0>s||a[s].click()}0>n||a[n].focus()}(t,e)}));const a=e.querySelectorAll(".c-rating__star");a.forEach((t=>{t.hasAttribute("tabindex")||t.setAttribute("tabindex","0"),t.setAttribute("role","button"),t.setAttribute("aria-label",`Rate ${Array.from(a).indexOf(t)+1} out of ${a.length}`)}))}function r(){const t=[];return document.querySelectorAll("[data-rating]").forEach((e=>{const a=e,s={};a.dataset.value&&(s.value=parseFloat(a.dataset.value)),a.dataset.maxValue&&(s.maxValue=parseFloat(a.dataset.maxValue)),void 0!==a.dataset.allowHalf&&(s.allowHalf="true"===a.dataset.allowHalf),void 0!==a.dataset.readOnly&&(s.readOnly="true"===a.dataset.readOnly),a.dataset.size&&(s.size=a.dataset.size),a.dataset.color&&(s.color=a.dataset.color);const r=new n(a,s);t.push(r),i(r)})),t}function o(t){const e="string"==typeof t?document.querySelector(t):t;return e&&e._rating||null}function l(){document.querySelectorAll("[data-rating]").forEach((t=>{const e=o(t);e&&e.destroy()}))}"undefined"!=typeof window&&(window.Atomix=window.Atomix||{},window.Atomix.Rating={create:n,init:r,get:o,disposeAll:l,enhanceKeyboardNavigation:i},"loading"===document.readyState?document.addEventListener("DOMContentLoaded",(()=>{r()})):r())}}]);
|
|
2
|
-
//# sourceMappingURL=471.atomix.react.cjs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"js/471.atomix.react.cjs.js","mappings":"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","sources":["webpack://@shohojdhara/atomix/./src/components/Rating/scripts/index.ts","webpack://@shohojdhara/atomix/./src/components/Rating/scripts/ratingInteractions.ts","webpack://@shohojdhara/atomix/./src/components/Rating/scripts/bundle.ts"],"sourcesContent":["import type { RatingProps, Size, ThemeColor } from '../../../lib/types/components';\n\n/**\n * Rating component class for vanilla JavaScript implementation\n */\nexport type RatingOptions = Pick<RatingProps, \n 'value' | \n 'defaultValue' | \n 'maxValue' | \n 'allowHalf' | \n 'readOnly' | \n 'size' | \n 'color' | \n 'onChange'\n>;\n\n// Define default options\nconst DEFAULTS = {\n value: 0,\n maxValue: 5,\n allowHalf: false,\n readOnly: false,\n size: 'md' as Size,\n};\n\n/**\n * Rating component class for vanilla JavaScript implementation\n */\nexport default class Rating {\n element: HTMLElement;\n options: RatingOptions;\n stars: NodeListOf<HTMLElement> | null = null;\n private _currentValue: number;\n private _boundHandleMouseEnter: (event: MouseEvent) => void;\n private _boundHandleMouseLeave: (event: MouseEvent) => void;\n private _boundHandleClick: (event: MouseEvent) => void;\n private _boundHandleKeyDown: (event: KeyboardEvent) => void;\n \n /**\n * Create a new Rating instance\n * @param element - The element to attach the rating to\n * @param options - Configuration options\n */\n constructor(element: string | HTMLElement, options: RatingOptions = {}) {\n this.element = typeof element === 'string' ? document.querySelector(element) as HTMLElement : element;\n if (!this.element) {\n throw new Error('Rating: Element not found');\n }\n \n this.options = { ...DEFAULTS, ...options };\n this._currentValue = this.options.value || 0;\n \n // Bind event handlers to this instance\n this._boundHandleMouseEnter = this._handleMouseEnter.bind(this);\n this._boundHandleMouseLeave = this._handleMouseLeave.bind(this);\n this._boundHandleClick = this._handleClick.bind(this);\n this._boundHandleKeyDown = this._handleKeyDown.bind(this);\n \n // Store reference to instance on element\n (this.element as any)._rating = this;\n \n this._init();\n }\n \n /**\n * Initialize the component\n */\n private _init(): void {\n // Set data attributes\n this.element.setAttribute('data-max-value', String(this.options.maxValue));\n this.element.setAttribute('data-allow-half', String(this.options.allowHalf));\n this.element.setAttribute('data-readonly', String(this.options.readOnly));\n \n // Set ARIA attributes\n if (this.options.readOnly) {\n this.element.setAttribute('role', 'img');\n this.element.setAttribute('aria-label', `Rating: ${this._currentValue} out of ${this.options.maxValue} stars`);\n } else {\n this.element.setAttribute('role', 'radiogroup');\n }\n \n // Add CSS classes\n if (this.options.size && this.options.size !== 'md') {\n this.element.classList.add(`c-rating--${this.options.size}`);\n }\n \n if (this.options.color) {\n this.element.classList.add(`c-rating--${this.options.color}`);\n }\n \n // Get all stars\n this.stars = this.element.querySelectorAll('.c-rating__star');\n \n // Set initial state\n this._updateStars();\n \n // Bind events if not read-only\n if (!this.options.readOnly) {\n this._bindEvents();\n }\n \n // Dispatch init event\n this.element.dispatchEvent(new CustomEvent('rating:init', {\n bubbles: true,\n detail: { instance: this }\n }));\n }\n \n /**\n * Bind event listeners\n */\n private _bindEvents(): void {\n if (!this.stars) return;\n \n // Add event listeners to each star\n this.stars.forEach((star) => {\n star.addEventListener('mouseenter', this._boundHandleMouseEnter);\n star.addEventListener('click', this._boundHandleClick);\n star.addEventListener('keydown', this._boundHandleKeyDown);\n \n // Make stars focusable\n star.setAttribute('tabindex', '0');\n star.setAttribute('role', 'button');\n });\n \n // Add mouseleave to the container\n this.element.addEventListener('mouseleave', this._boundHandleMouseLeave);\n }\n \n /**\n * Handle mouse enter on a star\n */\n private _handleMouseEnter(event: MouseEvent): void {\n if (this.options.readOnly) return;\n \n const target = event.currentTarget as HTMLElement;\n const value = Number(target.getAttribute('data-value'));\n \n this._highlightStars(value);\n }\n \n /**\n * Handle mouse leave from rating component\n */\n private _handleMouseLeave(): void {\n if (this.options.readOnly) return;\n \n this._updateStars();\n }\n \n /**\n * Handle click on a star\n */\n private _handleClick(event: MouseEvent): void {\n if (this.options.readOnly) return;\n \n const target = event.currentTarget as HTMLElement;\n const value = Number(target.getAttribute('data-value'));\n \n this.setValue(value);\n \n if (this.options.onChange) {\n this.options.onChange(value);\n }\n }\n \n /**\n * Handle keyboard navigation\n */\n private _handleKeyDown(event: KeyboardEvent): void {\n if (this.options.readOnly) return;\n \n const target = event.currentTarget as HTMLElement;\n const index = Number(target.getAttribute('data-value'));\n const step = this.options.allowHalf ? 0.5 : 1;\n let newValue = this._currentValue;\n \n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n newValue = Math.min(this.options.maxValue || 5, this._currentValue + step);\n event.preventDefault();\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n newValue = Math.max(0, this._currentValue - step);\n event.preventDefault();\n break;\n case 'Home':\n newValue = 0;\n event.preventDefault();\n break;\n case 'End':\n newValue = this.options.maxValue || 5;\n event.preventDefault();\n break;\n case ' ':\n case 'Enter':\n newValue = index;\n event.preventDefault();\n break;\n default:\n return;\n }\n \n if (newValue !== this._currentValue) {\n this.setValue(newValue);\n \n if (this.options.onChange) {\n this.options.onChange(newValue);\n }\n }\n }\n \n /**\n * Update star appearance based on current value\n */\n private _updateStars(): void {\n if (!this.stars) return;\n \n const roundedValue = this.options.allowHalf \n ? Math.floor(this._currentValue * 2) / 2 \n : Math.round(this._currentValue);\n \n this.stars.forEach((star) => {\n const starValue = Number(star.getAttribute('data-value'));\n const isFullStar = starValue <= Math.floor(roundedValue);\n const isHalfStar = this.options.allowHalf && (starValue - 0.5 === roundedValue);\n \n // Remove existing classes\n star.classList.remove('c-rating__star--full', 'c-rating__star--half');\n \n // Add appropriate classes\n if (isFullStar) {\n star.classList.add('c-rating__star--full');\n } else if (isHalfStar) {\n star.classList.add('c-rating__star--half');\n }\n \n // Update ARIA attributes\n star.setAttribute('aria-checked', isFullStar || isHalfStar ? 'true' : 'false');\n });\n \n // Update container ARIA label if read-only\n if (this.options.readOnly) {\n this.element.setAttribute('aria-label', `Rating: ${roundedValue} out of ${this.options.maxValue} stars`);\n }\n \n // Update data attribute\n this.element.setAttribute('data-value', String(roundedValue));\n }\n \n /**\n * Temporarily highlight stars up to a value\n */\n private _highlightStars(value: number): void {\n if (!this.stars) return;\n \n this.stars.forEach((star) => {\n const starValue = Number(star.getAttribute('data-value'));\n \n // Remove existing classes\n star.classList.remove('c-rating__star--full', 'c-rating__star--half');\n \n // Add full class if star value is less than or equal to hovered value\n if (starValue <= value) {\n star.classList.add('c-rating__star--full');\n }\n });\n }\n \n /**\n * Get current rating value\n */\n public getValue(): number {\n return this._currentValue;\n }\n \n /**\n * Set the rating value\n * @param value - The new rating value\n */\n public setValue(value: number): void {\n // Clamp value between 0 and maxValue\n const clampedValue = Math.max(0, Math.min(value, this.options.maxValue || 5));\n \n // Update current value\n this._currentValue = clampedValue;\n \n // Update visual state\n this._updateStars();\n \n // Dispatch change event\n this.element.dispatchEvent(new CustomEvent('rating:change', {\n bubbles: true,\n detail: { value: clampedValue }\n }));\n }\n \n /**\n * Update component options\n * @param options Partial options to update\n */\n public updateOptions(options: Partial<RatingOptions>): void {\n // Update options\n this.options = { ...this.options, ...options };\n \n // Re-initialize component with new options\n this._init();\n }\n \n /**\n * Destroy the rating component and remove event listeners\n */\n public destroy(): void {\n if (this.stars) {\n // Remove event listeners from stars\n this.stars.forEach((star) => {\n star.removeEventListener('mouseenter', this._boundHandleMouseEnter);\n star.removeEventListener('click', this._boundHandleClick);\n star.removeEventListener('keydown', this._boundHandleKeyDown);\n });\n }\n \n // Remove event listener from container\n this.element.removeEventListener('mouseleave', this._boundHandleMouseLeave);\n \n // Remove reference from element\n delete (this.element as any)._rating;\n }\n}\n","import Rating from './index';\nimport type { RatingOptions } from './index';\n\n/**\n * Event handlers and utility functions for Rating component\n */\n\n/**\n * Handle keyboard navigation for rating stars\n * @param event Keyboard event\n * @param container Rating container element\n */\nexport function handleKeyboardNavigation(event: KeyboardEvent, container: HTMLElement): void {\n if (!container) return;\n \n const stars = container.querySelectorAll<HTMLElement>('.c-rating__star');\n if (!stars.length) return;\n \n const currentIndex = Array.from(stars).findIndex(item => item === document.activeElement);\n let nextIndex = -1;\n \n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n event.preventDefault();\n nextIndex = currentIndex < stars.length - 1 ? currentIndex + 1 : 0;\n break;\n \n case 'ArrowLeft':\n case 'ArrowDown':\n event.preventDefault();\n nextIndex = currentIndex > 0 ? currentIndex - 1 : stars.length - 1;\n break;\n \n case 'Home':\n event.preventDefault();\n nextIndex = 0;\n break;\n \n case 'End':\n event.preventDefault();\n nextIndex = stars.length - 1;\n break;\n \n case ' ':\n case 'Enter':\n event.preventDefault();\n if (currentIndex >= 0) {\n stars[currentIndex].click();\n }\n break;\n }\n \n if (nextIndex >= 0) {\n stars[nextIndex].focus();\n }\n}\n\n/**\n * Enhance a rating with keyboard navigation\n * @param rating Rating instance\n */\nexport function enhanceWithKeyboardNavigation(rating: Rating): void {\n const element = rating.element;\n if (!element) return;\n \n element.addEventListener('keydown', (e: KeyboardEvent) => {\n handleKeyboardNavigation(e, element);\n });\n \n // Make stars focusable\n const stars = element.querySelectorAll<HTMLElement>('.c-rating__star');\n stars.forEach(star => {\n if (!star.hasAttribute('tabindex')) {\n star.setAttribute('tabindex', '0');\n }\n star.setAttribute('role', 'button');\n star.setAttribute('aria-label', `Rate ${Array.from(stars).indexOf(star) + 1} out of ${stars.length}`);\n });\n}\n\n/**\n * Initialize ratings with data attributes\n */\nexport function initFromDataAttributes(): Rating[] {\n const instances: Rating[] = [];\n \n document.querySelectorAll('[data-rating]').forEach(element => {\n const el = element as HTMLElement;\n \n // Parse options from data attributes\n const options: Record<string, any> = {};\n \n // Value\n if (el.dataset.value) {\n options.value = parseFloat(el.dataset.value);\n }\n \n // Max value\n if (el.dataset.maxValue) {\n options.maxValue = parseFloat(el.dataset.maxValue);\n }\n \n // Allow half\n if (el.dataset.allowHalf !== undefined) {\n options.allowHalf = el.dataset.allowHalf === 'true';\n }\n \n // Read only\n if (el.dataset.readOnly !== undefined) {\n options.readOnly = el.dataset.readOnly === 'true';\n }\n \n // Size\n if (el.dataset.size) {\n options.size = el.dataset.size;\n }\n \n // Color\n if (el.dataset.color) {\n options.color = el.dataset.color;\n }\n \n const instance = new Rating(el, options);\n instances.push(instance);\n \n // Enhance with keyboard navigation\n enhanceWithKeyboardNavigation(instance);\n });\n \n return instances;\n}\n\n/**\n * Get a Rating instance from an element\n * @param element Element or selector\n */\nexport function getInstance(element: string | HTMLElement): Rating | null {\n const el = typeof element === 'string' ? document.querySelector(element) : element;\n \n if (!el) return null;\n \n // Use a stored reference if exists\n return (el as any)._rating || null;\n}\n\n/**\n * Dispose all Rating instances\n */\nexport function disposeAll(): void {\n document.querySelectorAll('[data-rating]').forEach(element => {\n const instance = getInstance(element as HTMLElement);\n if (instance) {\n instance.destroy();\n }\n });\n}\n","import Rating from './index';\nimport { initFromDataAttributes, getInstance, disposeAll, enhanceWithKeyboardNavigation } from './ratingInteractions';\n\nif (typeof window !== 'undefined') {\n // Initialize the Atomix global object if it doesn't exist\n (window as any).Atomix = (window as any).Atomix || {};\n \n // Add Rating to the global Atomix object\n (window as any).Atomix.Rating = {\n create: Rating,\n init: initFromDataAttributes,\n get: getInstance,\n disposeAll: disposeAll,\n enhanceKeyboardNavigation: enhanceWithKeyboardNavigation\n };\n \n // Auto-initialize ratings when DOM is ready\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', () => {\n initFromDataAttributes();\n });\n } else {\n initFromDataAttributes();\n }\n}\n\n// Export everything for module bundling\nexport { \n Rating as default,\n initFromDataAttributes,\n getInstance,\n disposeAll,\n enhanceWithKeyboardNavigation\n};\n"],"names":["DEFAULTS","value","maxValue","allowHalf","readOnly","size","Rating","stars","constructor","element","options","arguments","length","undefined","this","document","querySelector","Error","_currentValue","_boundHandleMouseEnter","_handleMouseEnter","bind","_boundHandleMouseLeave","_handleMouseLeave","_boundHandleClick","_handleClick","_boundHandleKeyDown","_handleKeyDown","_rating","_init","setAttribute","String","classList","add","color","querySelectorAll","_updateStars","_bindEvents","dispatchEvent","CustomEvent","bubbles","detail","instance","forEach","star","addEventListener","event","Number","currentTarget","getAttribute","_highlightStars","setValue","onChange","index","step","newValue","key","Math","min","preventDefault","max","roundedValue","floor","round","starValue","isFullStar","isHalfStar","remove","getValue","clampedValue","updateOptions","destroy","removeEventListener","enhanceWithKeyboardNavigation","rating","e","container","currentIndex","Array","from","findIndex","item","activeElement","nextIndex","click","focus","handleKeyboardNavigation","hasAttribute","indexOf","initFromDataAttributes","instances","el","dataset","parseFloat","push","getInstance","disposeAll","window","Atomix","create","init","get","enhanceKeyboardNavigation","readyState"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export const __webpack_id__=471;export const __webpack_ids__=[471];export const __webpack_modules__={471:(t,e,a)=>{a.r(e),a.d(e,{default:()=>n,disposeAll:()=>l,enhanceWithKeyboardNavigation:()=>i,getInstance:()=>o,initFromDataAttributes:()=>r});const s={value:0,maxValue:5,allowHalf:!1,readOnly:!1,size:"md"};class n{stars=null;constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.element="string"==typeof t?document.querySelector(t):t,!this.element)throw Error("Rating: Element not found");this.options={...s,...e},this._currentValue=this.options.value||0,this._boundHandleMouseEnter=this._handleMouseEnter.bind(this),this._boundHandleMouseLeave=this._handleMouseLeave.bind(this),this._boundHandleClick=this._handleClick.bind(this),this._boundHandleKeyDown=this._handleKeyDown.bind(this),this.element._rating=this,this._init()}_init(){this.element.setAttribute("data-max-value",this.options.maxValue+""),this.element.setAttribute("data-allow-half",this.options.allowHalf+""),this.element.setAttribute("data-readonly",this.options.readOnly+""),this.options.readOnly?(this.element.setAttribute("role","img"),this.element.setAttribute("aria-label",`Rating: ${this._currentValue} out of ${this.options.maxValue} stars`)):this.element.setAttribute("role","radiogroup"),this.options.size&&"md"!==this.options.size&&this.element.classList.add("c-rating--"+this.options.size),this.options.color&&this.element.classList.add("c-rating--"+this.options.color),this.stars=this.element.querySelectorAll(".c-rating__star"),this._updateStars(),this.options.readOnly||this._bindEvents(),this.element.dispatchEvent(new CustomEvent("rating:init",{bubbles:!0,detail:{instance:this}}))}_bindEvents(){this.stars&&(this.stars.forEach((t=>{t.addEventListener("mouseenter",this._boundHandleMouseEnter),t.addEventListener("click",this._boundHandleClick),t.addEventListener("keydown",this._boundHandleKeyDown),t.setAttribute("tabindex","0"),t.setAttribute("role","button")})),this.element.addEventListener("mouseleave",this._boundHandleMouseLeave))}_handleMouseEnter(t){if(this.options.readOnly)return;const e=Number(t.currentTarget.getAttribute("data-value"));this._highlightStars(e)}_handleMouseLeave(){this.options.readOnly||this._updateStars()}_handleClick(t){if(this.options.readOnly)return;const e=Number(t.currentTarget.getAttribute("data-value"));this.setValue(e),this.options.onChange&&this.options.onChange(e)}_handleKeyDown(t){if(this.options.readOnly)return;const e=Number(t.currentTarget.getAttribute("data-value")),a=this.options.allowHalf?.5:1;let s=this._currentValue;switch(t.key){case"ArrowRight":case"ArrowUp":s=Math.min(this.options.maxValue||5,this._currentValue+a),t.preventDefault();break;case"ArrowLeft":case"ArrowDown":s=Math.max(0,this._currentValue-a),t.preventDefault();break;case"Home":s=0,t.preventDefault();break;case"End":s=this.options.maxValue||5,t.preventDefault();break;case" ":case"Enter":s=e,t.preventDefault();break;default:return}s!==this._currentValue&&(this.setValue(s),this.options.onChange&&this.options.onChange(s))}_updateStars(){if(!this.stars)return;const t=this.options.allowHalf?Math.floor(2*this._currentValue)/2:Math.round(this._currentValue);this.stars.forEach((e=>{const a=Number(e.getAttribute("data-value")),s=Math.floor(t)>=a,n=this.options.allowHalf&&a-.5===t;e.classList.remove("c-rating__star--full","c-rating__star--half"),s?e.classList.add("c-rating__star--full"):n&&e.classList.add("c-rating__star--half"),e.setAttribute("aria-checked",s||n?"true":"false")})),this.options.readOnly&&this.element.setAttribute("aria-label",`Rating: ${t} out of ${this.options.maxValue} stars`),this.element.setAttribute("data-value",t+"")}_highlightStars(t){this.stars&&this.stars.forEach((e=>{const a=Number(e.getAttribute("data-value"));e.classList.remove("c-rating__star--full","c-rating__star--half"),a>t||e.classList.add("c-rating__star--full")}))}getValue(){return this._currentValue}setValue(t){const e=Math.max(0,Math.min(t,this.options.maxValue||5));this._currentValue=e,this._updateStars(),this.element.dispatchEvent(new CustomEvent("rating:change",{bubbles:!0,detail:{value:e}}))}updateOptions(t){this.options={...this.options,...t},this._init()}destroy(){this.stars&&this.stars.forEach((t=>{t.removeEventListener("mouseenter",this._boundHandleMouseEnter),t.removeEventListener("click",this._boundHandleClick),t.removeEventListener("keydown",this._boundHandleKeyDown)})),this.element.removeEventListener("mouseleave",this._boundHandleMouseLeave),delete this.element._rating}}function i(t){const e=t.element;if(!e)return;e.addEventListener("keydown",(t=>{!function(t,e){if(!e)return;const a=e.querySelectorAll(".c-rating__star");if(!a.length)return;const s=Array.from(a).findIndex((t=>t===document.activeElement));let n=-1;switch(t.key){case"ArrowRight":case"ArrowUp":t.preventDefault(),n=a.length-1>s?s+1:0;break;case"ArrowLeft":case"ArrowDown":t.preventDefault(),n=s>0?s-1:a.length-1;break;case"Home":t.preventDefault(),n=0;break;case"End":t.preventDefault(),n=a.length-1;break;case" ":case"Enter":t.preventDefault(),0>s||a[s].click()}0>n||a[n].focus()}(t,e)}));const a=e.querySelectorAll(".c-rating__star");a.forEach((t=>{t.hasAttribute("tabindex")||t.setAttribute("tabindex","0"),t.setAttribute("role","button"),t.setAttribute("aria-label",`Rate ${Array.from(a).indexOf(t)+1} out of ${a.length}`)}))}function r(){const t=[];return document.querySelectorAll("[data-rating]").forEach((e=>{const a=e,s={};a.dataset.value&&(s.value=parseFloat(a.dataset.value)),a.dataset.maxValue&&(s.maxValue=parseFloat(a.dataset.maxValue)),void 0!==a.dataset.allowHalf&&(s.allowHalf="true"===a.dataset.allowHalf),void 0!==a.dataset.readOnly&&(s.readOnly="true"===a.dataset.readOnly),a.dataset.size&&(s.size=a.dataset.size),a.dataset.color&&(s.color=a.dataset.color);const r=new n(a,s);t.push(r),i(r)})),t}function o(t){const e="string"==typeof t?document.querySelector(t):t;return e&&e._rating||null}function l(){document.querySelectorAll("[data-rating]").forEach((t=>{const e=o(t);e&&e.destroy()}))}"undefined"!=typeof window&&(window.Atomix=window.Atomix||{},window.Atomix.Rating={create:n,init:r,get:o,disposeAll:l,enhanceKeyboardNavigation:i},"loading"===document.readyState?document.addEventListener("DOMContentLoaded",(()=>{r()})):r())}};
|
|
2
|
-
//# sourceMappingURL=471.atomix.react.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"js/471.atomix.react.esm.js","mappings":"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","sources":["webpack://@shohojdhara/atomix/./src/components/Rating/scripts/index.ts","webpack://@shohojdhara/atomix/./src/components/Rating/scripts/ratingInteractions.ts","webpack://@shohojdhara/atomix/./src/components/Rating/scripts/bundle.ts"],"sourcesContent":["import type { RatingProps, Size, ThemeColor } from '../../../lib/types/components';\n\n/**\n * Rating component class for vanilla JavaScript implementation\n */\nexport type RatingOptions = Pick<RatingProps, \n 'value' | \n 'defaultValue' | \n 'maxValue' | \n 'allowHalf' | \n 'readOnly' | \n 'size' | \n 'color' | \n 'onChange'\n>;\n\n// Define default options\nconst DEFAULTS = {\n value: 0,\n maxValue: 5,\n allowHalf: false,\n readOnly: false,\n size: 'md' as Size,\n};\n\n/**\n * Rating component class for vanilla JavaScript implementation\n */\nexport default class Rating {\n element: HTMLElement;\n options: RatingOptions;\n stars: NodeListOf<HTMLElement> | null = null;\n private _currentValue: number;\n private _boundHandleMouseEnter: (event: MouseEvent) => void;\n private _boundHandleMouseLeave: (event: MouseEvent) => void;\n private _boundHandleClick: (event: MouseEvent) => void;\n private _boundHandleKeyDown: (event: KeyboardEvent) => void;\n \n /**\n * Create a new Rating instance\n * @param element - The element to attach the rating to\n * @param options - Configuration options\n */\n constructor(element: string | HTMLElement, options: RatingOptions = {}) {\n this.element = typeof element === 'string' ? document.querySelector(element) as HTMLElement : element;\n if (!this.element) {\n throw new Error('Rating: Element not found');\n }\n \n this.options = { ...DEFAULTS, ...options };\n this._currentValue = this.options.value || 0;\n \n // Bind event handlers to this instance\n this._boundHandleMouseEnter = this._handleMouseEnter.bind(this);\n this._boundHandleMouseLeave = this._handleMouseLeave.bind(this);\n this._boundHandleClick = this._handleClick.bind(this);\n this._boundHandleKeyDown = this._handleKeyDown.bind(this);\n \n // Store reference to instance on element\n (this.element as any)._rating = this;\n \n this._init();\n }\n \n /**\n * Initialize the component\n */\n private _init(): void {\n // Set data attributes\n this.element.setAttribute('data-max-value', String(this.options.maxValue));\n this.element.setAttribute('data-allow-half', String(this.options.allowHalf));\n this.element.setAttribute('data-readonly', String(this.options.readOnly));\n \n // Set ARIA attributes\n if (this.options.readOnly) {\n this.element.setAttribute('role', 'img');\n this.element.setAttribute('aria-label', `Rating: ${this._currentValue} out of ${this.options.maxValue} stars`);\n } else {\n this.element.setAttribute('role', 'radiogroup');\n }\n \n // Add CSS classes\n if (this.options.size && this.options.size !== 'md') {\n this.element.classList.add(`c-rating--${this.options.size}`);\n }\n \n if (this.options.color) {\n this.element.classList.add(`c-rating--${this.options.color}`);\n }\n \n // Get all stars\n this.stars = this.element.querySelectorAll('.c-rating__star');\n \n // Set initial state\n this._updateStars();\n \n // Bind events if not read-only\n if (!this.options.readOnly) {\n this._bindEvents();\n }\n \n // Dispatch init event\n this.element.dispatchEvent(new CustomEvent('rating:init', {\n bubbles: true,\n detail: { instance: this }\n }));\n }\n \n /**\n * Bind event listeners\n */\n private _bindEvents(): void {\n if (!this.stars) return;\n \n // Add event listeners to each star\n this.stars.forEach((star) => {\n star.addEventListener('mouseenter', this._boundHandleMouseEnter);\n star.addEventListener('click', this._boundHandleClick);\n star.addEventListener('keydown', this._boundHandleKeyDown);\n \n // Make stars focusable\n star.setAttribute('tabindex', '0');\n star.setAttribute('role', 'button');\n });\n \n // Add mouseleave to the container\n this.element.addEventListener('mouseleave', this._boundHandleMouseLeave);\n }\n \n /**\n * Handle mouse enter on a star\n */\n private _handleMouseEnter(event: MouseEvent): void {\n if (this.options.readOnly) return;\n \n const target = event.currentTarget as HTMLElement;\n const value = Number(target.getAttribute('data-value'));\n \n this._highlightStars(value);\n }\n \n /**\n * Handle mouse leave from rating component\n */\n private _handleMouseLeave(): void {\n if (this.options.readOnly) return;\n \n this._updateStars();\n }\n \n /**\n * Handle click on a star\n */\n private _handleClick(event: MouseEvent): void {\n if (this.options.readOnly) return;\n \n const target = event.currentTarget as HTMLElement;\n const value = Number(target.getAttribute('data-value'));\n \n this.setValue(value);\n \n if (this.options.onChange) {\n this.options.onChange(value);\n }\n }\n \n /**\n * Handle keyboard navigation\n */\n private _handleKeyDown(event: KeyboardEvent): void {\n if (this.options.readOnly) return;\n \n const target = event.currentTarget as HTMLElement;\n const index = Number(target.getAttribute('data-value'));\n const step = this.options.allowHalf ? 0.5 : 1;\n let newValue = this._currentValue;\n \n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n newValue = Math.min(this.options.maxValue || 5, this._currentValue + step);\n event.preventDefault();\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n newValue = Math.max(0, this._currentValue - step);\n event.preventDefault();\n break;\n case 'Home':\n newValue = 0;\n event.preventDefault();\n break;\n case 'End':\n newValue = this.options.maxValue || 5;\n event.preventDefault();\n break;\n case ' ':\n case 'Enter':\n newValue = index;\n event.preventDefault();\n break;\n default:\n return;\n }\n \n if (newValue !== this._currentValue) {\n this.setValue(newValue);\n \n if (this.options.onChange) {\n this.options.onChange(newValue);\n }\n }\n }\n \n /**\n * Update star appearance based on current value\n */\n private _updateStars(): void {\n if (!this.stars) return;\n \n const roundedValue = this.options.allowHalf \n ? Math.floor(this._currentValue * 2) / 2 \n : Math.round(this._currentValue);\n \n this.stars.forEach((star) => {\n const starValue = Number(star.getAttribute('data-value'));\n const isFullStar = starValue <= Math.floor(roundedValue);\n const isHalfStar = this.options.allowHalf && (starValue - 0.5 === roundedValue);\n \n // Remove existing classes\n star.classList.remove('c-rating__star--full', 'c-rating__star--half');\n \n // Add appropriate classes\n if (isFullStar) {\n star.classList.add('c-rating__star--full');\n } else if (isHalfStar) {\n star.classList.add('c-rating__star--half');\n }\n \n // Update ARIA attributes\n star.setAttribute('aria-checked', isFullStar || isHalfStar ? 'true' : 'false');\n });\n \n // Update container ARIA label if read-only\n if (this.options.readOnly) {\n this.element.setAttribute('aria-label', `Rating: ${roundedValue} out of ${this.options.maxValue} stars`);\n }\n \n // Update data attribute\n this.element.setAttribute('data-value', String(roundedValue));\n }\n \n /**\n * Temporarily highlight stars up to a value\n */\n private _highlightStars(value: number): void {\n if (!this.stars) return;\n \n this.stars.forEach((star) => {\n const starValue = Number(star.getAttribute('data-value'));\n \n // Remove existing classes\n star.classList.remove('c-rating__star--full', 'c-rating__star--half');\n \n // Add full class if star value is less than or equal to hovered value\n if (starValue <= value) {\n star.classList.add('c-rating__star--full');\n }\n });\n }\n \n /**\n * Get current rating value\n */\n public getValue(): number {\n return this._currentValue;\n }\n \n /**\n * Set the rating value\n * @param value - The new rating value\n */\n public setValue(value: number): void {\n // Clamp value between 0 and maxValue\n const clampedValue = Math.max(0, Math.min(value, this.options.maxValue || 5));\n \n // Update current value\n this._currentValue = clampedValue;\n \n // Update visual state\n this._updateStars();\n \n // Dispatch change event\n this.element.dispatchEvent(new CustomEvent('rating:change', {\n bubbles: true,\n detail: { value: clampedValue }\n }));\n }\n \n /**\n * Update component options\n * @param options Partial options to update\n */\n public updateOptions(options: Partial<RatingOptions>): void {\n // Update options\n this.options = { ...this.options, ...options };\n \n // Re-initialize component with new options\n this._init();\n }\n \n /**\n * Destroy the rating component and remove event listeners\n */\n public destroy(): void {\n if (this.stars) {\n // Remove event listeners from stars\n this.stars.forEach((star) => {\n star.removeEventListener('mouseenter', this._boundHandleMouseEnter);\n star.removeEventListener('click', this._boundHandleClick);\n star.removeEventListener('keydown', this._boundHandleKeyDown);\n });\n }\n \n // Remove event listener from container\n this.element.removeEventListener('mouseleave', this._boundHandleMouseLeave);\n \n // Remove reference from element\n delete (this.element as any)._rating;\n }\n}\n","import Rating from './index';\nimport type { RatingOptions } from './index';\n\n/**\n * Event handlers and utility functions for Rating component\n */\n\n/**\n * Handle keyboard navigation for rating stars\n * @param event Keyboard event\n * @param container Rating container element\n */\nexport function handleKeyboardNavigation(event: KeyboardEvent, container: HTMLElement): void {\n if (!container) return;\n \n const stars = container.querySelectorAll<HTMLElement>('.c-rating__star');\n if (!stars.length) return;\n \n const currentIndex = Array.from(stars).findIndex(item => item === document.activeElement);\n let nextIndex = -1;\n \n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n event.preventDefault();\n nextIndex = currentIndex < stars.length - 1 ? currentIndex + 1 : 0;\n break;\n \n case 'ArrowLeft':\n case 'ArrowDown':\n event.preventDefault();\n nextIndex = currentIndex > 0 ? currentIndex - 1 : stars.length - 1;\n break;\n \n case 'Home':\n event.preventDefault();\n nextIndex = 0;\n break;\n \n case 'End':\n event.preventDefault();\n nextIndex = stars.length - 1;\n break;\n \n case ' ':\n case 'Enter':\n event.preventDefault();\n if (currentIndex >= 0) {\n stars[currentIndex].click();\n }\n break;\n }\n \n if (nextIndex >= 0) {\n stars[nextIndex].focus();\n }\n}\n\n/**\n * Enhance a rating with keyboard navigation\n * @param rating Rating instance\n */\nexport function enhanceWithKeyboardNavigation(rating: Rating): void {\n const element = rating.element;\n if (!element) return;\n \n element.addEventListener('keydown', (e: KeyboardEvent) => {\n handleKeyboardNavigation(e, element);\n });\n \n // Make stars focusable\n const stars = element.querySelectorAll<HTMLElement>('.c-rating__star');\n stars.forEach(star => {\n if (!star.hasAttribute('tabindex')) {\n star.setAttribute('tabindex', '0');\n }\n star.setAttribute('role', 'button');\n star.setAttribute('aria-label', `Rate ${Array.from(stars).indexOf(star) + 1} out of ${stars.length}`);\n });\n}\n\n/**\n * Initialize ratings with data attributes\n */\nexport function initFromDataAttributes(): Rating[] {\n const instances: Rating[] = [];\n \n document.querySelectorAll('[data-rating]').forEach(element => {\n const el = element as HTMLElement;\n \n // Parse options from data attributes\n const options: Record<string, any> = {};\n \n // Value\n if (el.dataset.value) {\n options.value = parseFloat(el.dataset.value);\n }\n \n // Max value\n if (el.dataset.maxValue) {\n options.maxValue = parseFloat(el.dataset.maxValue);\n }\n \n // Allow half\n if (el.dataset.allowHalf !== undefined) {\n options.allowHalf = el.dataset.allowHalf === 'true';\n }\n \n // Read only\n if (el.dataset.readOnly !== undefined) {\n options.readOnly = el.dataset.readOnly === 'true';\n }\n \n // Size\n if (el.dataset.size) {\n options.size = el.dataset.size;\n }\n \n // Color\n if (el.dataset.color) {\n options.color = el.dataset.color;\n }\n \n const instance = new Rating(el, options);\n instances.push(instance);\n \n // Enhance with keyboard navigation\n enhanceWithKeyboardNavigation(instance);\n });\n \n return instances;\n}\n\n/**\n * Get a Rating instance from an element\n * @param element Element or selector\n */\nexport function getInstance(element: string | HTMLElement): Rating | null {\n const el = typeof element === 'string' ? document.querySelector(element) : element;\n \n if (!el) return null;\n \n // Use a stored reference if exists\n return (el as any)._rating || null;\n}\n\n/**\n * Dispose all Rating instances\n */\nexport function disposeAll(): void {\n document.querySelectorAll('[data-rating]').forEach(element => {\n const instance = getInstance(element as HTMLElement);\n if (instance) {\n instance.destroy();\n }\n });\n}\n","import Rating from './index';\nimport { initFromDataAttributes, getInstance, disposeAll, enhanceWithKeyboardNavigation } from './ratingInteractions';\n\nif (typeof window !== 'undefined') {\n // Initialize the Atomix global object if it doesn't exist\n (window as any).Atomix = (window as any).Atomix || {};\n \n // Add Rating to the global Atomix object\n (window as any).Atomix.Rating = {\n create: Rating,\n init: initFromDataAttributes,\n get: getInstance,\n disposeAll: disposeAll,\n enhanceKeyboardNavigation: enhanceWithKeyboardNavigation\n };\n \n // Auto-initialize ratings when DOM is ready\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', () => {\n initFromDataAttributes();\n });\n } else {\n initFromDataAttributes();\n }\n}\n\n// Export everything for module bundling\nexport { \n Rating as default,\n initFromDataAttributes,\n getInstance,\n disposeAll,\n enhanceWithKeyboardNavigation\n};\n"],"names":["DEFAULTS","value","maxValue","allowHalf","readOnly","size","Rating","stars","constructor","element","options","arguments","length","undefined","this","document","querySelector","Error","_currentValue","_boundHandleMouseEnter","_handleMouseEnter","bind","_boundHandleMouseLeave","_handleMouseLeave","_boundHandleClick","_handleClick","_boundHandleKeyDown","_handleKeyDown","_rating","_init","setAttribute","String","classList","add","color","querySelectorAll","_updateStars","_bindEvents","dispatchEvent","CustomEvent","bubbles","detail","instance","forEach","star","addEventListener","event","Number","currentTarget","getAttribute","_highlightStars","setValue","onChange","index","step","newValue","key","Math","min","preventDefault","max","roundedValue","floor","round","starValue","isFullStar","isHalfStar","remove","getValue","clampedValue","updateOptions","destroy","removeEventListener","enhanceWithKeyboardNavigation","rating","e","container","currentIndex","Array","from","findIndex","item","activeElement","nextIndex","click","focus","handleKeyboardNavigation","hasAttribute","indexOf","initFromDataAttributes","instances","el","dataset","parseFloat","push","getInstance","disposeAll","window","Atomix","create","init","get","enhanceKeyboardNavigation","readyState"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(this.webpackChunkAtomix=this.webpackChunkAtomix||[]).push([[471],{471:(t,e,a)=>{a.r(e),a.d(e,{default:()=>n,disposeAll:()=>l,enhanceWithKeyboardNavigation:()=>i,getInstance:()=>o,initFromDataAttributes:()=>r});const s={value:0,maxValue:5,allowHalf:!1,readOnly:!1,size:"md"};class n{stars=null;constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.element="string"==typeof t?document.querySelector(t):t,!this.element)throw Error("Rating: Element not found");this.options={...s,...e},this._currentValue=this.options.value||0,this._boundHandleMouseEnter=this._handleMouseEnter.bind(this),this._boundHandleMouseLeave=this._handleMouseLeave.bind(this),this._boundHandleClick=this._handleClick.bind(this),this._boundHandleKeyDown=this._handleKeyDown.bind(this),this.element._rating=this,this._init()}_init(){this.element.setAttribute("data-max-value",this.options.maxValue+""),this.element.setAttribute("data-allow-half",this.options.allowHalf+""),this.element.setAttribute("data-readonly",this.options.readOnly+""),this.options.readOnly?(this.element.setAttribute("role","img"),this.element.setAttribute("aria-label",`Rating: ${this._currentValue} out of ${this.options.maxValue} stars`)):this.element.setAttribute("role","radiogroup"),this.options.size&&"md"!==this.options.size&&this.element.classList.add("c-rating--"+this.options.size),this.options.color&&this.element.classList.add("c-rating--"+this.options.color),this.stars=this.element.querySelectorAll(".c-rating__star"),this._updateStars(),this.options.readOnly||this._bindEvents(),this.element.dispatchEvent(new CustomEvent("rating:init",{bubbles:!0,detail:{instance:this}}))}_bindEvents(){this.stars&&(this.stars.forEach((t=>{t.addEventListener("mouseenter",this._boundHandleMouseEnter),t.addEventListener("click",this._boundHandleClick),t.addEventListener("keydown",this._boundHandleKeyDown),t.setAttribute("tabindex","0"),t.setAttribute("role","button")})),this.element.addEventListener("mouseleave",this._boundHandleMouseLeave))}_handleMouseEnter(t){if(this.options.readOnly)return;const e=Number(t.currentTarget.getAttribute("data-value"));this._highlightStars(e)}_handleMouseLeave(){this.options.readOnly||this._updateStars()}_handleClick(t){if(this.options.readOnly)return;const e=Number(t.currentTarget.getAttribute("data-value"));this.setValue(e),this.options.onChange&&this.options.onChange(e)}_handleKeyDown(t){if(this.options.readOnly)return;const e=Number(t.currentTarget.getAttribute("data-value")),a=this.options.allowHalf?.5:1;let s=this._currentValue;switch(t.key){case"ArrowRight":case"ArrowUp":s=Math.min(this.options.maxValue||5,this._currentValue+a),t.preventDefault();break;case"ArrowLeft":case"ArrowDown":s=Math.max(0,this._currentValue-a),t.preventDefault();break;case"Home":s=0,t.preventDefault();break;case"End":s=this.options.maxValue||5,t.preventDefault();break;case" ":case"Enter":s=e,t.preventDefault();break;default:return}s!==this._currentValue&&(this.setValue(s),this.options.onChange&&this.options.onChange(s))}_updateStars(){if(!this.stars)return;const t=this.options.allowHalf?Math.floor(2*this._currentValue)/2:Math.round(this._currentValue);this.stars.forEach((e=>{const a=Number(e.getAttribute("data-value")),s=Math.floor(t)>=a,n=this.options.allowHalf&&a-.5===t;e.classList.remove("c-rating__star--full","c-rating__star--half"),s?e.classList.add("c-rating__star--full"):n&&e.classList.add("c-rating__star--half"),e.setAttribute("aria-checked",s||n?"true":"false")})),this.options.readOnly&&this.element.setAttribute("aria-label",`Rating: ${t} out of ${this.options.maxValue} stars`),this.element.setAttribute("data-value",t+"")}_highlightStars(t){this.stars&&this.stars.forEach((e=>{const a=Number(e.getAttribute("data-value"));e.classList.remove("c-rating__star--full","c-rating__star--half"),a>t||e.classList.add("c-rating__star--full")}))}getValue(){return this._currentValue}setValue(t){const e=Math.max(0,Math.min(t,this.options.maxValue||5));this._currentValue=e,this._updateStars(),this.element.dispatchEvent(new CustomEvent("rating:change",{bubbles:!0,detail:{value:e}}))}updateOptions(t){this.options={...this.options,...t},this._init()}destroy(){this.stars&&this.stars.forEach((t=>{t.removeEventListener("mouseenter",this._boundHandleMouseEnter),t.removeEventListener("click",this._boundHandleClick),t.removeEventListener("keydown",this._boundHandleKeyDown)})),this.element.removeEventListener("mouseleave",this._boundHandleMouseLeave),delete this.element._rating}}function i(t){const e=t.element;if(!e)return;e.addEventListener("keydown",(t=>{!function(t,e){if(!e)return;const a=e.querySelectorAll(".c-rating__star");if(!a.length)return;const s=Array.from(a).findIndex((t=>t===document.activeElement));let n=-1;switch(t.key){case"ArrowRight":case"ArrowUp":t.preventDefault(),n=a.length-1>s?s+1:0;break;case"ArrowLeft":case"ArrowDown":t.preventDefault(),n=s>0?s-1:a.length-1;break;case"Home":t.preventDefault(),n=0;break;case"End":t.preventDefault(),n=a.length-1;break;case" ":case"Enter":t.preventDefault(),0>s||a[s].click()}0>n||a[n].focus()}(t,e)}));const a=e.querySelectorAll(".c-rating__star");a.forEach((t=>{t.hasAttribute("tabindex")||t.setAttribute("tabindex","0"),t.setAttribute("role","button"),t.setAttribute("aria-label",`Rate ${Array.from(a).indexOf(t)+1} out of ${a.length}`)}))}function r(){const t=[];return document.querySelectorAll("[data-rating]").forEach((e=>{const a=e,s={};a.dataset.value&&(s.value=parseFloat(a.dataset.value)),a.dataset.maxValue&&(s.maxValue=parseFloat(a.dataset.maxValue)),void 0!==a.dataset.allowHalf&&(s.allowHalf="true"===a.dataset.allowHalf),void 0!==a.dataset.readOnly&&(s.readOnly="true"===a.dataset.readOnly),a.dataset.size&&(s.size=a.dataset.size),a.dataset.color&&(s.color=a.dataset.color);const r=new n(a,s);t.push(r),i(r)})),t}function o(t){const e="string"==typeof t?document.querySelector(t):t;return e&&e._rating||null}function l(){document.querySelectorAll("[data-rating]").forEach((t=>{const e=o(t);e&&e.destroy()}))}"undefined"!=typeof window&&(window.Atomix=window.Atomix||{},window.Atomix.Rating={create:n,init:r,get:o,disposeAll:l,enhanceKeyboardNavigation:i},"loading"===document.readyState?document.addEventListener("DOMContentLoaded",(()=>{r()})):r())}}]);
|
|
2
|
-
//# sourceMappingURL=471.atomix.react.js.map
|