@athoscommerce/snap-preact 1.11.0 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/src/components/Atoms/Dropdown/Dropdown.js +18 -10
- package/dist/cjs/components/src/components/Atoms/Image/Image.js +10 -2
- package/dist/cjs/components/src/components/Atoms/ProductDetail/ProductDetail.js +98 -0
- package/dist/cjs/components/src/components/Atoms/ProductDetail/index.js +7 -0
- package/dist/cjs/components/src/components/Atoms/TemplateSelect/TemplateSelect.js +13 -4
- package/dist/cjs/components/src/components/Molecules/CalloutBadge/CalloutBadge.js +4 -1
- package/dist/cjs/components/src/components/Molecules/Gallery/Gallery.js +298 -0
- package/dist/cjs/components/src/components/Molecules/Gallery/index.js +17 -0
- package/dist/cjs/components/src/components/Molecules/Modal/Modal.js +21 -2
- package/dist/cjs/components/src/components/Molecules/OverlayBadge/OverlayBadge.js +1 -1
- package/dist/cjs/components/src/components/Molecules/ProductDetailTable/ProductDetailTable.js +115 -0
- package/dist/cjs/components/src/components/Molecules/ProductDetailTable/index.js +17 -0
- package/dist/cjs/components/src/components/Molecules/QuantityPicker/QuantityPicker.js +136 -0
- package/dist/cjs/components/src/components/Molecules/QuantityPicker/index.js +17 -0
- package/dist/cjs/components/src/components/Molecules/Result/Result.js +43 -4
- package/dist/cjs/components/src/components/Molecules/Slideout/Slideout.js +5 -2
- package/dist/cjs/components/src/components/Molecules/Slideshow/Slideshow.js +38 -5
- package/dist/cjs/components/src/components/Molecules/Swatches/Swatches.js +1 -1
- package/dist/cjs/components/src/components/Molecules/VariantSelection/VariantSelection.js +7 -1
- package/dist/cjs/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.js +8 -8
- package/dist/cjs/components/src/components/Organisms/Facet/Facet.js +1 -5
- package/dist/cjs/components/src/components/Organisms/QuickviewLayout/QuickviewLayout.js +612 -0
- package/dist/cjs/components/src/components/Organisms/QuickviewLayout/index.js +17 -0
- package/dist/cjs/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +3 -3
- package/dist/cjs/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +3 -3
- package/dist/cjs/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +2 -2
- package/dist/cjs/components/src/components/Templates/QuickviewModal/QuickviewModal.js +153 -0
- package/dist/cjs/components/src/components/Templates/QuickviewModal/index.js +17 -0
- package/dist/cjs/components/src/components/Templates/QuickviewSlideout/QuickviewSlideout.js +124 -0
- package/dist/cjs/components/src/components/Templates/QuickviewSlideout/index.js +17 -0
- package/dist/cjs/components/src/components/Templates/Recommendation/Recommendation.js +2 -1
- package/dist/cjs/components/src/components/Templates/RecommendationBundle/RecommendationBundle.js +2 -1
- package/dist/cjs/components/src/components/Templates/RecommendationGrid/RecommendationGrid.js +2 -1
- package/dist/cjs/components/src/hooks/useA11y.js +3 -1
- package/dist/cjs/components/src/hooks/useAcRenderedInput.js +1 -1
- package/dist/cjs/components/src/hooks/useClickOutside.js +6 -3
- package/dist/cjs/components/src/hooks/useTracking.js +14 -8
- package/dist/cjs/components/src/index.js +6 -0
- package/dist/cjs/components/src/providers/themeComponents.js +4 -0
- package/dist/cjs/components/src/setupTests.js +10 -0
- package/dist/cjs/components/src/utilities/createImpressionObserver.js +1 -1
- package/dist/cjs/components/src/utilities/index.js +1 -0
- package/dist/cjs/components/src/utilities/lazyRenderMinSize.js +10 -0
- package/dist/cjs/src/Instantiators/RecommendationInstantiator.js +2 -1
- package/dist/cjs/src/Snap.js +41 -0
- package/dist/cjs/src/Templates/SnapTemplates.js +51 -0
- package/dist/cjs/src/Templates/Stores/LibraryStore.js +77 -9
- package/dist/cjs/src/Templates/Stores/TemplateEditor/TemplateEditorStore.js +6 -1
- package/dist/cjs/src/Templates/Stores/TemplateEditor/uiAbstractions/configUI.js +2 -5
- package/dist/cjs/src/Templates/Stores/TemplateStore.js +26 -10
- package/dist/cjs/src/Templates/Stores/library/components/QuickviewModal.js +5 -0
- package/dist/cjs/src/Templates/Stores/library/components/QuickviewSlideout.js +5 -0
- package/dist/cjs/src/Templates/Stores/library/currencies/currencies.js +1433 -0
- package/dist/cjs/src/Templates/Stores/library/languages/ar.js +487 -0
- package/dist/cjs/src/Templates/Stores/library/languages/de.js +487 -0
- package/dist/cjs/src/Templates/Stores/library/languages/en.js +1 -0
- package/dist/cjs/src/Templates/Stores/library/languages/es.js +84 -41
- package/dist/cjs/src/Templates/Stores/library/languages/fr.js +85 -40
- package/dist/cjs/src/Templates/Stores/library/languages/hi.js +487 -0
- package/dist/cjs/src/Templates/Stores/library/languages/it.js +487 -0
- package/dist/cjs/src/Templates/Stores/library/languages/ja.js +487 -0
- package/dist/cjs/src/Templates/Stores/library/languages/ko.js +487 -0
- package/dist/cjs/src/Templates/Stores/library/languages/nl.js +487 -0
- package/dist/cjs/src/Templates/Stores/library/languages/pt.js +487 -0
- package/dist/cjs/src/Templates/Stores/library/languages/ru.js +487 -0
- package/dist/cjs/src/Templates/Stores/library/languages/tr.js +487 -0
- package/dist/cjs/src/Templates/Stores/library/languages/vi.js +487 -0
- package/dist/cjs/src/Templates/Stores/library/languages/zh.js +487 -0
- package/dist/cjs/src/Templates/index.js +3 -1
- package/dist/cjs/src/create/createAutocompleteController.js +1 -0
- package/dist/cjs/src/create/createRecommendationController.js +1 -0
- package/dist/cjs/src/create/createSearchController.js +1 -0
- package/dist/cjs/src/index.js +3 -1
- package/dist/esm/components/src/components/Atoms/Button/Button.d.ts +1 -1
- package/dist/esm/components/src/components/Atoms/Button/Button.d.ts.map +1 -1
- package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/esm/components/src/components/Atoms/Dropdown/Dropdown.js +19 -11
- package/dist/esm/components/src/components/Atoms/Image/Image.d.ts +5 -0
- package/dist/esm/components/src/components/Atoms/Image/Image.d.ts.map +1 -1
- package/dist/esm/components/src/components/Atoms/Image/Image.js +10 -2
- package/dist/esm/components/src/components/Atoms/ProductDetail/ProductDetail.d.ts +18 -0
- package/dist/esm/components/src/components/Atoms/ProductDetail/ProductDetail.d.ts.map +1 -0
- package/dist/esm/components/src/components/Atoms/ProductDetail/ProductDetail.js +89 -0
- package/dist/esm/components/src/components/Atoms/ProductDetail/index.d.ts +3 -0
- package/dist/esm/components/src/components/Atoms/ProductDetail/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Atoms/ProductDetail/index.js +3 -0
- package/dist/esm/components/src/components/Atoms/TemplateSelect/TemplateSelect.d.ts +1 -1
- package/dist/esm/components/src/components/Atoms/TemplateSelect/TemplateSelect.d.ts.map +1 -1
- package/dist/esm/components/src/components/Atoms/TemplateSelect/TemplateSelect.js +13 -4
- package/dist/esm/components/src/components/Molecules/CalloutBadge/CalloutBadge.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/CalloutBadge/CalloutBadge.js +4 -1
- package/dist/esm/components/src/components/Molecules/Gallery/Gallery.d.ts +28 -0
- package/dist/esm/components/src/components/Molecules/Gallery/Gallery.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/Gallery/Gallery.js +292 -0
- package/dist/esm/components/src/components/Molecules/Gallery/index.d.ts +2 -0
- package/dist/esm/components/src/components/Molecules/Gallery/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/Gallery/index.js +1 -0
- package/dist/esm/components/src/components/Molecules/Modal/Modal.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/Modal/Modal.js +22 -3
- package/dist/esm/components/src/components/Molecules/OverlayBadge/OverlayBadge.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/OverlayBadge/OverlayBadge.js +1 -1
- package/dist/esm/components/src/components/Molecules/ProductDetailTable/ProductDetailTable.d.ts +14 -0
- package/dist/esm/components/src/components/Molecules/ProductDetailTable/ProductDetailTable.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/ProductDetailTable/ProductDetailTable.js +109 -0
- package/dist/esm/components/src/components/Molecules/ProductDetailTable/index.d.ts +2 -0
- package/dist/esm/components/src/components/Molecules/ProductDetailTable/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/ProductDetailTable/index.js +1 -0
- package/dist/esm/components/src/components/Molecules/QuantityPicker/QuantityPicker.d.ts +43 -0
- package/dist/esm/components/src/components/Molecules/QuantityPicker/QuantityPicker.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/QuantityPicker/QuantityPicker.js +130 -0
- package/dist/esm/components/src/components/Molecules/QuantityPicker/index.d.ts +2 -0
- package/dist/esm/components/src/components/Molecules/QuantityPicker/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Molecules/QuantityPicker/index.js +1 -0
- package/dist/esm/components/src/components/Molecules/Result/Result.d.ts +3 -0
- package/dist/esm/components/src/components/Molecules/Result/Result.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/Result/Result.js +43 -4
- package/dist/esm/components/src/components/Molecules/Slideout/Slideout.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/Slideout/Slideout.js +6 -3
- package/dist/esm/components/src/components/Molecules/Slideshow/Slideshow.d.ts +1 -0
- package/dist/esm/components/src/components/Molecules/Slideshow/Slideshow.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/Slideshow/Slideshow.js +38 -5
- package/dist/esm/components/src/components/Molecules/Swatches/Swatches.js +1 -1
- package/dist/esm/components/src/components/Molecules/VariantSelection/VariantSelection.d.ts.map +1 -1
- package/dist/esm/components/src/components/Molecules/VariantSelection/VariantSelection.js +7 -1
- package/dist/esm/components/src/components/Organisms/AutocompleteLayout/AutocompleteLayout.js +8 -8
- package/dist/esm/components/src/components/Organisms/Facet/Facet.d.ts.map +1 -1
- package/dist/esm/components/src/components/Organisms/Facet/Facet.js +1 -5
- package/dist/esm/components/src/components/Organisms/QuickviewLayout/QuickviewLayout.d.ts +53 -0
- package/dist/esm/components/src/components/Organisms/QuickviewLayout/QuickviewLayout.d.ts.map +1 -0
- package/dist/esm/components/src/components/Organisms/QuickviewLayout/QuickviewLayout.js +605 -0
- package/dist/esm/components/src/components/Organisms/QuickviewLayout/index.d.ts +2 -0
- package/dist/esm/components/src/components/Organisms/QuickviewLayout/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Organisms/QuickviewLayout/index.js +1 -0
- package/dist/esm/components/src/components/Templates/AutocompleteFixed/AutocompleteFixed.js +3 -3
- package/dist/esm/components/src/components/Templates/AutocompleteModal/AutocompleteModal.js +3 -3
- package/dist/esm/components/src/components/Templates/AutocompleteSlideout/AutocompleteSlideout.js +2 -2
- package/dist/esm/components/src/components/Templates/QuickviewModal/QuickviewModal.d.ts +12 -0
- package/dist/esm/components/src/components/Templates/QuickviewModal/QuickviewModal.d.ts.map +1 -0
- package/dist/esm/components/src/components/Templates/QuickviewModal/QuickviewModal.js +147 -0
- package/dist/esm/components/src/components/Templates/QuickviewModal/index.d.ts +2 -0
- package/dist/esm/components/src/components/Templates/QuickviewModal/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Templates/QuickviewModal/index.js +1 -0
- package/dist/esm/components/src/components/Templates/QuickviewSlideout/QuickviewSlideout.d.ts +16 -0
- package/dist/esm/components/src/components/Templates/QuickviewSlideout/QuickviewSlideout.d.ts.map +1 -0
- package/dist/esm/components/src/components/Templates/QuickviewSlideout/QuickviewSlideout.js +118 -0
- package/dist/esm/components/src/components/Templates/QuickviewSlideout/index.d.ts +2 -0
- package/dist/esm/components/src/components/Templates/QuickviewSlideout/index.d.ts.map +1 -0
- package/dist/esm/components/src/components/Templates/QuickviewSlideout/index.js +1 -0
- package/dist/esm/components/src/components/Templates/Recommendation/Recommendation.d.ts.map +1 -1
- package/dist/esm/components/src/components/Templates/Recommendation/Recommendation.js +3 -2
- package/dist/esm/components/src/components/Templates/RecommendationBundle/RecommendationBundle.d.ts.map +1 -1
- package/dist/esm/components/src/components/Templates/RecommendationBundle/RecommendationBundle.js +3 -2
- package/dist/esm/components/src/components/Templates/RecommendationGrid/RecommendationGrid.d.ts.map +1 -1
- package/dist/esm/components/src/components/Templates/RecommendationGrid/RecommendationGrid.js +3 -2
- package/dist/esm/components/src/hooks/useA11y.d.ts.map +1 -1
- package/dist/esm/components/src/hooks/useA11y.js +3 -1
- package/dist/esm/components/src/hooks/useAcRenderedInput.js +1 -1
- package/dist/esm/components/src/hooks/useClickOutside.d.ts +1 -1
- package/dist/esm/components/src/hooks/useClickOutside.d.ts.map +1 -1
- package/dist/esm/components/src/hooks/useClickOutside.js +6 -3
- package/dist/esm/components/src/hooks/useTracking.d.ts +9 -3
- package/dist/esm/components/src/hooks/useTracking.d.ts.map +1 -1
- package/dist/esm/components/src/hooks/useTracking.js +14 -8
- package/dist/esm/components/src/index.d.ts +6 -0
- package/dist/esm/components/src/index.d.ts.map +1 -1
- package/dist/esm/components/src/index.js +6 -0
- package/dist/esm/components/src/providers/langComponents.d.ts +6 -0
- package/dist/esm/components/src/providers/langComponents.d.ts.map +1 -1
- package/dist/esm/components/src/providers/themeComponents.d.ts +104 -57
- package/dist/esm/components/src/providers/themeComponents.d.ts.map +1 -1
- package/dist/esm/components/src/providers/themeComponents.js +4 -0
- package/dist/esm/components/src/setupTests.js +10 -0
- package/dist/esm/components/src/utilities/createImpressionObserver.js +1 -1
- package/dist/esm/components/src/utilities/index.d.ts +1 -0
- package/dist/esm/components/src/utilities/index.d.ts.map +1 -1
- package/dist/esm/components/src/utilities/index.js +1 -0
- package/dist/esm/components/src/utilities/lazyRenderMinSize.d.ts +5 -0
- package/dist/esm/components/src/utilities/lazyRenderMinSize.d.ts.map +1 -0
- package/dist/esm/components/src/utilities/lazyRenderMinSize.js +7 -0
- package/dist/esm/src/Instantiators/RecommendationInstantiator.d.ts +4 -2
- package/dist/esm/src/Instantiators/RecommendationInstantiator.d.ts.map +1 -1
- package/dist/esm/src/Instantiators/RecommendationInstantiator.js +2 -1
- package/dist/esm/src/Snap.d.ts +7 -0
- package/dist/esm/src/Snap.d.ts.map +1 -1
- package/dist/esm/src/Snap.js +43 -2
- package/dist/esm/src/Templates/SnapTemplates.d.ts +25 -0
- package/dist/esm/src/Templates/SnapTemplates.d.ts.map +1 -1
- package/dist/esm/src/Templates/SnapTemplates.js +48 -0
- package/dist/esm/src/Templates/Stores/LibraryStore.d.ts +22 -2
- package/dist/esm/src/Templates/Stores/LibraryStore.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/LibraryStore.js +76 -8
- package/dist/esm/src/Templates/Stores/TemplateEditor/TemplateEditorStore.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/TemplateEditor/TemplateEditorStore.js +6 -1
- package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/configUI.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/TemplateEditor/uiAbstractions/configUI.js +2 -5
- package/dist/esm/src/Templates/Stores/TemplateStore.d.ts +14 -6
- package/dist/esm/src/Templates/Stores/TemplateStore.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/TemplateStore.js +26 -10
- package/dist/esm/src/Templates/Stores/library/components/QuickviewModal.d.ts +2 -0
- package/dist/esm/src/Templates/Stores/library/components/QuickviewModal.d.ts.map +1 -0
- package/dist/esm/src/Templates/Stores/library/components/QuickviewModal.js +1 -0
- package/dist/esm/src/Templates/Stores/library/components/QuickviewSlideout.d.ts +2 -0
- package/dist/esm/src/Templates/Stores/library/components/QuickviewSlideout.d.ts.map +1 -0
- package/dist/esm/src/Templates/Stores/library/components/QuickviewSlideout.js +1 -0
- package/dist/esm/src/Templates/Stores/library/currencies/currencies.d.ts +1270 -0
- package/dist/esm/src/Templates/Stores/library/currencies/currencies.d.ts.map +1 -0
- package/dist/esm/src/Templates/Stores/library/currencies/currencies.js +1430 -0
- package/dist/esm/src/Templates/Stores/library/languages/ar.d.ts +3 -0
- package/dist/esm/src/Templates/Stores/library/languages/ar.d.ts.map +1 -0
- package/dist/esm/src/Templates/Stores/library/languages/ar.js +484 -0
- package/dist/esm/src/Templates/Stores/library/languages/de.d.ts +3 -0
- package/dist/esm/src/Templates/Stores/library/languages/de.d.ts.map +1 -0
- package/dist/esm/src/Templates/Stores/library/languages/de.js +484 -0
- package/dist/esm/src/Templates/Stores/library/languages/en.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/library/languages/en.js +1 -0
- package/dist/esm/src/Templates/Stores/library/languages/es.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/library/languages/es.js +84 -41
- package/dist/esm/src/Templates/Stores/library/languages/fr.d.ts.map +1 -1
- package/dist/esm/src/Templates/Stores/library/languages/fr.js +85 -40
- package/dist/esm/src/Templates/Stores/library/languages/hi.d.ts +3 -0
- package/dist/esm/src/Templates/Stores/library/languages/hi.d.ts.map +1 -0
- package/dist/esm/src/Templates/Stores/library/languages/hi.js +484 -0
- package/dist/esm/src/Templates/Stores/library/languages/it.d.ts +3 -0
- package/dist/esm/src/Templates/Stores/library/languages/it.d.ts.map +1 -0
- package/dist/esm/src/Templates/Stores/library/languages/it.js +484 -0
- package/dist/esm/src/Templates/Stores/library/languages/ja.d.ts +3 -0
- package/dist/esm/src/Templates/Stores/library/languages/ja.d.ts.map +1 -0
- package/dist/esm/src/Templates/Stores/library/languages/ja.js +484 -0
- package/dist/esm/src/Templates/Stores/library/languages/ko.d.ts +3 -0
- package/dist/esm/src/Templates/Stores/library/languages/ko.d.ts.map +1 -0
- package/dist/esm/src/Templates/Stores/library/languages/ko.js +484 -0
- package/dist/esm/src/Templates/Stores/library/languages/nl.d.ts +3 -0
- package/dist/esm/src/Templates/Stores/library/languages/nl.d.ts.map +1 -0
- package/dist/esm/src/Templates/Stores/library/languages/nl.js +484 -0
- package/dist/esm/src/Templates/Stores/library/languages/pt.d.ts +3 -0
- package/dist/esm/src/Templates/Stores/library/languages/pt.d.ts.map +1 -0
- package/dist/esm/src/Templates/Stores/library/languages/pt.js +484 -0
- package/dist/esm/src/Templates/Stores/library/languages/ru.d.ts +3 -0
- package/dist/esm/src/Templates/Stores/library/languages/ru.d.ts.map +1 -0
- package/dist/esm/src/Templates/Stores/library/languages/ru.js +484 -0
- package/dist/esm/src/Templates/Stores/library/languages/tr.d.ts +3 -0
- package/dist/esm/src/Templates/Stores/library/languages/tr.d.ts.map +1 -0
- package/dist/esm/src/Templates/Stores/library/languages/tr.js +484 -0
- package/dist/esm/src/Templates/Stores/library/languages/vi.d.ts +3 -0
- package/dist/esm/src/Templates/Stores/library/languages/vi.d.ts.map +1 -0
- package/dist/esm/src/Templates/Stores/library/languages/vi.js +484 -0
- package/dist/esm/src/Templates/Stores/library/languages/zh.d.ts +3 -0
- package/dist/esm/src/Templates/Stores/library/languages/zh.d.ts.map +1 -0
- package/dist/esm/src/Templates/Stores/library/languages/zh.js +484 -0
- package/dist/esm/src/Templates/index.d.ts +1 -1
- package/dist/esm/src/Templates/index.d.ts.map +1 -1
- package/dist/esm/src/Templates/index.js +1 -1
- package/dist/esm/src/create/createAutocompleteController.js +1 -0
- package/dist/esm/src/create/createRecommendationController.js +1 -0
- package/dist/esm/src/create/createSearchController.js +1 -0
- package/dist/esm/src/index.d.ts +1 -1
- package/dist/esm/src/index.d.ts.map +1 -1
- package/dist/esm/src/index.js +1 -1
- package/dist/esm/src/types.d.ts +2 -1
- package/dist/esm/src/types.d.ts.map +1 -1
- package/eslint/src/index.cjs +5 -0
- package/eslint/src/validate-config.cjs +473 -0
- package/package.json +16 -14
- package/dist/cjs/src/Templates/Stores/library/currencies/aud.js +0 -10
- package/dist/cjs/src/Templates/Stores/library/currencies/eur.js +0 -10
- package/dist/cjs/src/Templates/Stores/library/currencies/usd.js +0 -10
- package/dist/esm/src/Templates/Stores/library/currencies/aud.d.ts +0 -8
- package/dist/esm/src/Templates/Stores/library/currencies/aud.d.ts.map +0 -1
- package/dist/esm/src/Templates/Stores/library/currencies/aud.js +0 -7
- package/dist/esm/src/Templates/Stores/library/currencies/eur.d.ts +0 -8
- package/dist/esm/src/Templates/Stores/library/currencies/eur.d.ts.map +0 -1
- package/dist/esm/src/Templates/Stores/library/currencies/eur.js +0 -7
- package/dist/esm/src/Templates/Stores/library/currencies/usd.d.ts +0 -8
- package/dist/esm/src/Templates/Stores/library/currencies/usd.d.ts.map +0 -1
- package/dist/esm/src/Templates/Stores/library/currencies/usd.js +0 -7
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { h } from 'preact';
|
|
2
|
+
import { ComponentProps } from '../../../types';
|
|
3
|
+
import type { Product } from '@athoscommerce/snap-store-mobx';
|
|
4
|
+
export declare const isCorePriceField: (field: string) => boolean;
|
|
5
|
+
export declare const getProductFieldValue: (result: Product | undefined, field: string) => unknown;
|
|
6
|
+
export declare const renderDetailValue: (value: unknown) => string;
|
|
7
|
+
export declare const ProductDetail: ((properties: ProductDetailProps) => import("@emotion/react/jsx-runtime").JSX.Element | h.JSX.Element | null) & {
|
|
8
|
+
displayName: string;
|
|
9
|
+
};
|
|
10
|
+
export type ProductDetailProps = {
|
|
11
|
+
result?: Product;
|
|
12
|
+
field: string;
|
|
13
|
+
} & ProductDetailTemplatesLegalProps & ComponentProps<ProductDetailProps>;
|
|
14
|
+
export type ProductDetailTemplatesLegalProps = {
|
|
15
|
+
html?: boolean;
|
|
16
|
+
tag?: string;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=ProductDetail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProductDetail.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Atoms/ProductDetail/ProductDetail.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAQ3B,OAAO,EAAE,cAAc,EAAe,MAAM,gBAAgB,CAAC;AAM7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAQ9D,eAAO,MAAM,gBAAgB,UAAW,MAAM,KAAG,OAUhD,CAAC;AAQF,eAAO,MAAM,oBAAoB,WAAY,OAAO,GAAG,SAAS,SAAS,MAAM,KAAG,OAgBjF,CAAC;AAIF,eAAO,MAAM,iBAAiB,UAAW,OAAO,KAAG,MAWlD,CAAC;AAMF,eAAO,MAAM,aAAa,gBAAyB,kBAAkB;;CAmDnE,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACd,GAAG,gCAAgC,GACnC,cAAc,CAAC,kBAAkB,CAAC,CAAC;AAEpC,MAAM,MAAM,gCAAgC,GAAG;IAE9C,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,GAAG,CAAC,EAAE,MAAM,CAAC;CACb,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { css } from '@emotion/react';
|
|
3
|
+
import classnames from 'classnames';
|
|
4
|
+
import { observer } from 'mobx-react-lite';
|
|
5
|
+
import { isObservableArray } from 'mobx';
|
|
6
|
+
import { useTheme, CacheProvider, useTreePath } from '../../../providers';
|
|
7
|
+
import { mergeProps, mergeStyles } from '../../../utilities';
|
|
8
|
+
import { useCustomComponentOverride } from '../../../hooks';
|
|
9
|
+
import { fieldNameToComponentName } from '@athoscommerce/snap-toolbox';
|
|
10
|
+
import { Price } from '../Price';
|
|
11
|
+
// Core mapping fields whose values represent monetary amounts and should be formatted by `Price`.
|
|
12
|
+
const CORE_PRICE_FIELDS = ['price', 'msrp'];
|
|
13
|
+
// A field is a core-mapping price when its final segment is a known price field and it resolves
|
|
14
|
+
// from core mappings — either a bare key (which falls back to `mappings.core`) or an explicit
|
|
15
|
+
// `...mappings.core.<priceField>` path. `attributes.price` and the like are excluded.
|
|
16
|
+
export const isCorePriceField = (field) => {
|
|
17
|
+
if (!field)
|
|
18
|
+
return false;
|
|
19
|
+
const segments = field.split('.');
|
|
20
|
+
const last = segments[segments.length - 1];
|
|
21
|
+
if (!CORE_PRICE_FIELDS.includes(last))
|
|
22
|
+
return false;
|
|
23
|
+
if (segments.length === 1)
|
|
24
|
+
return true;
|
|
25
|
+
return segments[segments.length - 2] === 'core' && segments[segments.length - 3] === 'mappings';
|
|
26
|
+
};
|
|
27
|
+
// Resolve a product field value. An explicit dot-path (e.g. `mappings.core.name` or
|
|
28
|
+
// `attributes.brand`) states exactly where to read from and is resolved against the variant-aware
|
|
29
|
+
// `display` view first, then the product itself. A bare field key (no dot) falls back to the
|
|
30
|
+
// legacy lookup — `mappings.core` first, then `attributes` — so config-driven field lists keep
|
|
31
|
+
// working. Returns the raw value (string, number, array, object); formatting is left to
|
|
32
|
+
// `renderDetailValue`.
|
|
33
|
+
export const getProductFieldValue = (result, field) => {
|
|
34
|
+
if (!result || !field)
|
|
35
|
+
return undefined;
|
|
36
|
+
const resolvePath = (root) => field.split('.').reduce((acc, key) => (acc && typeof acc === 'object' ? acc[key] : undefined), root);
|
|
37
|
+
const explicit = resolvePath(result?.display) ?? resolvePath(result);
|
|
38
|
+
if (explicit !== undefined)
|
|
39
|
+
return explicit;
|
|
40
|
+
if (!field.includes('.')) {
|
|
41
|
+
const core = (result?.display?.mappings?.core || result?.mappings?.core);
|
|
42
|
+
const attributes = (result?.display?.attributes || result?.attributes);
|
|
43
|
+
return core?.[field] ?? attributes?.[field];
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
};
|
|
47
|
+
// Coerce a resolved value into a display string: arrays (and MobX observable arrays) are
|
|
48
|
+
// comma-joined, objects fall back to JSON, everything else is stringified.
|
|
49
|
+
export const renderDetailValue = (value) => {
|
|
50
|
+
if (value === null || value === undefined)
|
|
51
|
+
return '';
|
|
52
|
+
if (Array.isArray(value) || isObservableArray(value)) {
|
|
53
|
+
return Array.from(value)
|
|
54
|
+
.map((v) => (typeof v === 'object' ? JSON.stringify(v) : String(v)))
|
|
55
|
+
.join(', ');
|
|
56
|
+
}
|
|
57
|
+
if (typeof value === 'object')
|
|
58
|
+
return JSON.stringify(value);
|
|
59
|
+
return String(value);
|
|
60
|
+
};
|
|
61
|
+
const defaultStyles = () => {
|
|
62
|
+
return css({});
|
|
63
|
+
};
|
|
64
|
+
export const ProductDetail = observer((properties) => {
|
|
65
|
+
const globalTheme = useTheme();
|
|
66
|
+
const globalTreePath = useTreePath();
|
|
67
|
+
const defaultProps = {
|
|
68
|
+
treePath: globalTreePath,
|
|
69
|
+
// the field's final segment names the component (`productDetail.<name>` theme selectors)
|
|
70
|
+
name: properties.field ? fieldNameToComponentName(properties.field.split('.').pop() || '') : undefined,
|
|
71
|
+
};
|
|
72
|
+
const props = mergeProps('productDetail', globalTheme, defaultProps, properties);
|
|
73
|
+
const { result, field, name, html, tag, className, internalClassName } = props;
|
|
74
|
+
const { overrideElement, shouldRenderDefault } = useCustomComponentOverride('productDetail', props);
|
|
75
|
+
if (!shouldRenderDefault) {
|
|
76
|
+
return overrideElement;
|
|
77
|
+
}
|
|
78
|
+
const styling = mergeStyles(props, defaultStyles);
|
|
79
|
+
const rawValue = getProductFieldValue(result, field);
|
|
80
|
+
const value = renderDetailValue(rawValue);
|
|
81
|
+
if (!value)
|
|
82
|
+
return null;
|
|
83
|
+
const isPrice = isCorePriceField(field) && typeof rawValue === 'number';
|
|
84
|
+
// Theme/style modifier: the named selector suffix (`productDetail.<name>`) when present,
|
|
85
|
+
// otherwise the resolved field path's final segment.
|
|
86
|
+
const modifier = name || field.split('.').pop();
|
|
87
|
+
const classNames = classnames('ss__product-detail', modifier && `ss__product-detail--${modifier}`, tag && `ss__product-detail--${tag}`, className, internalClassName);
|
|
88
|
+
return (_jsx(CacheProvider, { children: html ? (_jsx("div", { ...styling, className: classNames, dangerouslySetInnerHTML: { __html: value } })) : (_jsx("div", { ...styling, className: classNames, children: isPrice ? _jsx(Price, { value: rawValue, treePath: props.treePath }) : value })) }));
|
|
89
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Atoms/ProductDetail/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -9,7 +9,7 @@ export declare const TemplateSelect: ((properties: TemplateSelectProps) => impor
|
|
|
9
9
|
export interface TemplateSelectProps {
|
|
10
10
|
templatesStore: TemplatesStore;
|
|
11
11
|
target: TargetStore;
|
|
12
|
-
controller
|
|
12
|
+
controller?: Controllers;
|
|
13
13
|
snap: SnapTemplates;
|
|
14
14
|
theme?: Theme;
|
|
15
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TemplateSelect.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Atoms/TemplateSelect/TemplateSelect.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAmB,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAmD,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,mDAAmD,CAAC;AAC5G,OAAO,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAE9E,eAAO,MAAM,cAAc,gBAAyB,mBAAmB;;
|
|
1
|
+
{"version":3,"file":"TemplateSelect.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Atoms/TemplateSelect/TemplateSelect.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAmB,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAmD,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,mDAAmD,CAAC;AAC5G,OAAO,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAE9E,eAAO,MAAM,cAAc,gBAAyB,mBAAmB;;CA6CrE,CAAC;AACH,MAAM,WAAW,mBAAmB;IACnC,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;CACd"}
|
|
@@ -6,7 +6,9 @@ export const TemplateSelect = observer((properties) => {
|
|
|
6
6
|
const { snap, templatesStore, target, controller, ...otherProps } = properties;
|
|
7
7
|
const { loading } = templatesStore;
|
|
8
8
|
if (!target) {
|
|
9
|
-
controller
|
|
9
|
+
// Quickview targets render without a controller (the quickview manager is not one), so
|
|
10
|
+
// fall back to the console when there is no controller logger to use.
|
|
11
|
+
controller ? controller.log.error(`Target was not provided!`) : console.error(`[TemplateSelect] Target was not provided!`);
|
|
10
12
|
return null;
|
|
11
13
|
}
|
|
12
14
|
const Component = templatesStore.library.getComponent(target.type, target.component);
|
|
@@ -15,11 +17,18 @@ export const TemplateSelect = observer((properties) => {
|
|
|
15
17
|
const theme = themeStore?.theme;
|
|
16
18
|
if (!loading && !theme && !templatesStore.settings?.editMode) {
|
|
17
19
|
const error = `Theme "${target.theme.name}" not found in library for target "${target.selector}"`;
|
|
18
|
-
controller.log.error(error);
|
|
20
|
+
controller ? controller.log.error(error) : console.error(`[TemplateSelect] ${error}`);
|
|
19
21
|
}
|
|
20
|
-
const tabManager = controller
|
|
22
|
+
const tabManager = controller?.type === ControllerTypes.search || controller?.type === ControllerTypes.autocomplete
|
|
21
23
|
? templatesStore.getTabManager(controller.type, snap.controllers)
|
|
22
24
|
: undefined;
|
|
25
|
+
const tabName = tabManager?.active?.id ? tabManager.active.id.toLowerCase() : undefined;
|
|
23
26
|
// ensuring that theme and component are ready to render
|
|
24
|
-
|
|
27
|
+
if (loading || !theme || !Component) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
// Quickview targets render without a controller — the shared quickview manager arrives via
|
|
31
|
+
// `otherProps` instead — so the ControllerProvider is only wrapped when there is one to provide.
|
|
32
|
+
const content = (_jsx("div", { className: "ss__template-select", children: _jsx(Component, { controller: controller, tabManager: tabManager, ...(tabName !== undefined ? { name: tabName } : {}), ...otherProps }) }));
|
|
33
|
+
return (_jsx(SnapProvider, { snap: snap, children: _jsx(ThemeProvider, { theme: theme, children: controller ? _jsx(ControllerProvider, { controller: controller, children: content }) : content }) }));
|
|
25
34
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalloutBadge.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Molecules/CalloutBadge/CalloutBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAO3B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAe,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"CalloutBadge.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Molecules/CalloutBadge/CalloutBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAO3B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAe,MAAM,gBAAgB,CAAC;AAI3E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAqB9D,eAAO,MAAM,YAAY,gBAAyB,iBAAiB;;CA8CjE,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG;IAC/B,MAAM,EAAE,OAAO,CAAC;CAChB,GAAG,+BAA+B,GAClC,cAAc,CAAC,iBAAiB,CAAC,CAAC;AACnC,MAAM,MAAM,+BAA+B,GAAG;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC"}
|
|
@@ -4,6 +4,7 @@ import classnames from 'classnames';
|
|
|
4
4
|
import { observer } from 'mobx-react-lite';
|
|
5
5
|
import { useTheme, CacheProvider, useSnap, useTreePath } from '../../../providers';
|
|
6
6
|
import { defaultBadgeComponentMap, mergeProps, mergeStyles } from '../../../utilities';
|
|
7
|
+
import { fieldNameToComponentName } from '@athoscommerce/snap-toolbox';
|
|
7
8
|
import { useComponent, useCustomComponentOverride } from '../../../hooks';
|
|
8
9
|
const defaultStyles = () => {
|
|
9
10
|
return css({
|
|
@@ -26,6 +27,8 @@ export const CalloutBadge = observer((properties) => {
|
|
|
26
27
|
const globalTreePath = useTreePath();
|
|
27
28
|
const defaultProps = {
|
|
28
29
|
// default props
|
|
30
|
+
// a custom tag names the component (`calloutBadge.<tag>` theme selectors); default usage stays unnamed
|
|
31
|
+
name: properties.tag ? fieldNameToComponentName(properties.tag) : undefined,
|
|
29
32
|
tag: 'callout',
|
|
30
33
|
limit: 1,
|
|
31
34
|
treePath: globalTreePath,
|
|
@@ -42,7 +45,7 @@ export const CalloutBadge = observer((properties) => {
|
|
|
42
45
|
...props.componentMap,
|
|
43
46
|
};
|
|
44
47
|
const styling = mergeStyles(props, defaultStyles);
|
|
45
|
-
const badges = result?.display
|
|
48
|
+
const badges = result?.display?.badges?.atLocation(tag).slice(0, limit);
|
|
46
49
|
if (renderEmpty || badges?.length) {
|
|
47
50
|
return (_jsx(CacheProvider, { children: _jsx("div", { ...styling, className: classnames('ss__callout-badge', `ss__callout-badge--${tag?.replace('/', '-')}`, className, internalClassName), children: badges.map((badge, badgeIndex) => (_jsx(BadgeRenderer, { badge: badge, badgeComponentMap: badgeComponentMap, treePath: treePath }, `${badge.component}-${badgeIndex}`))) }) }));
|
|
48
51
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ComponentProps } from '../../../types';
|
|
2
|
+
import { Lang } from '../../../hooks';
|
|
3
|
+
export declare const Gallery: ((properties: GalleryProps) => import("preact").VNode<any> | null) & {
|
|
4
|
+
displayName: string;
|
|
5
|
+
};
|
|
6
|
+
export type GalleryProps = {
|
|
7
|
+
images: string[];
|
|
8
|
+
open: boolean;
|
|
9
|
+
startIndex?: number;
|
|
10
|
+
alt?: string;
|
|
11
|
+
lang?: Partial<GalleryLang>;
|
|
12
|
+
} & GalleryTemplatesLegalProps & ComponentProps<GalleryProps>;
|
|
13
|
+
export type GalleryTemplatesLegalProps = {
|
|
14
|
+
onClose?: () => void;
|
|
15
|
+
zoomMin?: number;
|
|
16
|
+
zoomMax?: number;
|
|
17
|
+
zoomStep?: number;
|
|
18
|
+
swipeThreshold?: number;
|
|
19
|
+
};
|
|
20
|
+
export interface GalleryLang {
|
|
21
|
+
gallery: Lang<never>;
|
|
22
|
+
zoomOutButton: Lang<never>;
|
|
23
|
+
zoomInButton: Lang<never>;
|
|
24
|
+
closeButton: Lang<never>;
|
|
25
|
+
prevButton: Lang<never>;
|
|
26
|
+
nextButton: Lang<never>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=Gallery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Gallery.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Molecules/Gallery/Gallery.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAe,MAAM,gBAAgB,CAAC;AAE7D,OAAO,EAAE,IAAI,EAAoB,MAAM,gBAAgB,CAAC;AA8FxD,eAAO,MAAM,OAAO,gBAAyB,YAAY;;CAsTvD,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC5B,GAAG,0BAA0B,GAC7B,cAAc,CAAC,YAAY,CAAC,CAAC;AAE9B,MAAM,MAAM,0BAA0B,GAAG;IACxC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,WAAW,WAAW;IAC3B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;CACxB"}
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { createPortal } from 'preact/compat';
|
|
3
|
+
import { useState, useEffect, useRef } from 'preact/hooks';
|
|
4
|
+
import { observer } from 'mobx-react-lite';
|
|
5
|
+
import { css } from '@emotion/react';
|
|
6
|
+
import classnames from 'classnames';
|
|
7
|
+
import deepmerge from 'deepmerge';
|
|
8
|
+
import { useTheme, CacheProvider, useTreePath } from '../../../providers';
|
|
9
|
+
import { mergeProps, mergeStyles, defined } from '../../../utilities';
|
|
10
|
+
import { useA11y, useLang } from '../../../hooks';
|
|
11
|
+
import { Button } from '../../Atoms/Button';
|
|
12
|
+
import { Image } from '../../Atoms/Image';
|
|
13
|
+
const defaultStyles = () => {
|
|
14
|
+
return css({
|
|
15
|
+
position: 'fixed',
|
|
16
|
+
inset: 0,
|
|
17
|
+
zIndex: 10010, // above the quickview modal content (10006) and the dropdown portal (10007); full ladder in QuickviewModal defaultStyles
|
|
18
|
+
display: 'flex',
|
|
19
|
+
flexDirection: 'column',
|
|
20
|
+
background: 'rgba(0, 0, 0, 0.9)',
|
|
21
|
+
'& .ss__gallery__toolbar': {
|
|
22
|
+
display: 'flex',
|
|
23
|
+
justifyContent: 'flex-end',
|
|
24
|
+
alignItems: 'center',
|
|
25
|
+
gap: '8px',
|
|
26
|
+
padding: '12px 16px',
|
|
27
|
+
},
|
|
28
|
+
// button and icon chrome (color, background, border) comes from Button/Icon props (not CSS)
|
|
29
|
+
// so that theme overrides targeting those components (e.g. `gallery button.zoom-in`) are not
|
|
30
|
+
// out-specified here — these rules stick to layout the sub-components have no props for
|
|
31
|
+
'& .ss__gallery__button': {
|
|
32
|
+
display: 'flex',
|
|
33
|
+
alignItems: 'center',
|
|
34
|
+
justifyContent: 'center',
|
|
35
|
+
padding: 0,
|
|
36
|
+
boxSizing: 'border-box',
|
|
37
|
+
borderRadius: '4px',
|
|
38
|
+
width: '40px',
|
|
39
|
+
height: '40px',
|
|
40
|
+
fontSize: '1.3em',
|
|
41
|
+
lineHeight: 1,
|
|
42
|
+
cursor: 'pointer',
|
|
43
|
+
'&.ss__button--disabled': {
|
|
44
|
+
opacity: 0.4,
|
|
45
|
+
cursor: 'default',
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
'& .ss__gallery__counter': {
|
|
49
|
+
color: '#fff',
|
|
50
|
+
marginRight: 'auto',
|
|
51
|
+
padding: '0 8px',
|
|
52
|
+
fontSize: '0.9em',
|
|
53
|
+
},
|
|
54
|
+
'& .ss__gallery__stage': {
|
|
55
|
+
position: 'relative',
|
|
56
|
+
flex: '1 1 auto',
|
|
57
|
+
display: 'flex',
|
|
58
|
+
alignItems: 'center',
|
|
59
|
+
justifyContent: 'center',
|
|
60
|
+
overflow: 'hidden',
|
|
61
|
+
},
|
|
62
|
+
'& .ss__gallery__image': {
|
|
63
|
+
maxWidth: '90vw',
|
|
64
|
+
maxHeight: '80vh',
|
|
65
|
+
objectFit: 'contain',
|
|
66
|
+
userSelect: 'none',
|
|
67
|
+
touchAction: 'none',
|
|
68
|
+
transformOrigin: 'center center',
|
|
69
|
+
transition: 'transform 0.05s linear',
|
|
70
|
+
},
|
|
71
|
+
'& .ss__gallery__nav': {
|
|
72
|
+
position: 'absolute',
|
|
73
|
+
top: 0,
|
|
74
|
+
bottom: 0,
|
|
75
|
+
height: '100%',
|
|
76
|
+
width: '64px',
|
|
77
|
+
display: 'flex',
|
|
78
|
+
alignItems: 'center',
|
|
79
|
+
justifyContent: 'center',
|
|
80
|
+
padding: 0,
|
|
81
|
+
boxSizing: 'border-box',
|
|
82
|
+
borderRadius: 0,
|
|
83
|
+
fontSize: '2em',
|
|
84
|
+
lineHeight: 1,
|
|
85
|
+
cursor: 'pointer',
|
|
86
|
+
zIndex: 1,
|
|
87
|
+
'&:hover': {
|
|
88
|
+
// a wash layered via backgroundImage so it composes with (rather than defeats)
|
|
89
|
+
// a backgroundColor set through Button props or theme overrides
|
|
90
|
+
backgroundImage: 'linear-gradient(rgba(255, 255, 255, 0.085), rgba(255, 255, 255, 0.085))',
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
'& .ss__gallery__nav--prev': {
|
|
94
|
+
left: 0,
|
|
95
|
+
},
|
|
96
|
+
'& .ss__gallery__nav--next': {
|
|
97
|
+
right: 0,
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
export const Gallery = observer((properties) => {
|
|
102
|
+
const globalTheme = useTheme();
|
|
103
|
+
const globalTreePath = useTreePath();
|
|
104
|
+
const defaultProps = {
|
|
105
|
+
treePath: globalTreePath,
|
|
106
|
+
startIndex: 0,
|
|
107
|
+
zoomMin: 1,
|
|
108
|
+
zoomMax: 4,
|
|
109
|
+
zoomStep: 0.5,
|
|
110
|
+
swipeThreshold: 40,
|
|
111
|
+
};
|
|
112
|
+
const props = mergeProps('gallery', globalTheme, defaultProps, properties);
|
|
113
|
+
const { images, open, startIndex, onClose, alt, className, internalClassName } = props;
|
|
114
|
+
const zoomMin = props.zoomMin;
|
|
115
|
+
const zoomMax = props.zoomMax;
|
|
116
|
+
const zoomStep = props.zoomStep;
|
|
117
|
+
const swipeThreshold = props.swipeThreshold;
|
|
118
|
+
const clampZoom = (value) => Math.min(zoomMax, Math.max(zoomMin, value));
|
|
119
|
+
const [index, setIndex] = useState(startIndex || 0);
|
|
120
|
+
const [zoom, setZoom] = useState(zoomMin);
|
|
121
|
+
const [pan, setPan] = useState({ x: 0, y: 0 });
|
|
122
|
+
const dragRef = useRef(null);
|
|
123
|
+
const touchRef = useRef(null);
|
|
124
|
+
const count = images?.length || 0;
|
|
125
|
+
//initialize lang
|
|
126
|
+
const defaultLang = {
|
|
127
|
+
gallery: {
|
|
128
|
+
attributes: {
|
|
129
|
+
'aria-label': 'Image gallery',
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
zoomOutButton: {
|
|
133
|
+
attributes: {
|
|
134
|
+
'aria-label': 'Zoom out',
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
zoomInButton: {
|
|
138
|
+
attributes: {
|
|
139
|
+
'aria-label': 'Zoom in',
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
closeButton: {
|
|
143
|
+
attributes: {
|
|
144
|
+
'aria-label': 'Close gallery',
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
prevButton: {
|
|
148
|
+
attributes: {
|
|
149
|
+
'aria-label': 'Previous image',
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
nextButton: {
|
|
153
|
+
attributes: {
|
|
154
|
+
'aria-label': 'Next image',
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
//deep merge with props.lang
|
|
159
|
+
const lang = deepmerge(defaultLang, props.lang || {});
|
|
160
|
+
const mergedLang = useLang(lang, {});
|
|
161
|
+
// Reset to the clicked image (and clear zoom/pan) whenever the gallery opens or the start changes.
|
|
162
|
+
useEffect(() => {
|
|
163
|
+
if (open) {
|
|
164
|
+
setIndex(Math.min(Math.max(startIndex || 0, 0), Math.max(count - 1, 0)));
|
|
165
|
+
setZoom(zoomMin);
|
|
166
|
+
setPan({ x: 0, y: 0 });
|
|
167
|
+
}
|
|
168
|
+
}, [open, startIndex, count]);
|
|
169
|
+
const goTo = (next) => {
|
|
170
|
+
if (count === 0)
|
|
171
|
+
return;
|
|
172
|
+
const wrapped = (next + count) % count;
|
|
173
|
+
setIndex(wrapped);
|
|
174
|
+
setZoom(zoomMin);
|
|
175
|
+
setPan({ x: 0, y: 0 });
|
|
176
|
+
};
|
|
177
|
+
const showPrev = () => goTo(index - 1);
|
|
178
|
+
const showNext = () => goTo(index + 1);
|
|
179
|
+
const zoomIn = () => setZoom((z) => clampZoom(z + zoomStep));
|
|
180
|
+
const zoomOut = () => setZoom((z) => {
|
|
181
|
+
const next = clampZoom(z - zoomStep);
|
|
182
|
+
if (next === zoomMin)
|
|
183
|
+
setPan({ x: 0, y: 0 });
|
|
184
|
+
return next;
|
|
185
|
+
});
|
|
186
|
+
// Keyboard controls while open.
|
|
187
|
+
useEffect(() => {
|
|
188
|
+
if (!open)
|
|
189
|
+
return;
|
|
190
|
+
const onKey = (e) => {
|
|
191
|
+
switch (e.key) {
|
|
192
|
+
case 'Escape':
|
|
193
|
+
onClose && onClose();
|
|
194
|
+
break;
|
|
195
|
+
case 'ArrowRight':
|
|
196
|
+
showNext();
|
|
197
|
+
break;
|
|
198
|
+
case 'ArrowLeft':
|
|
199
|
+
showPrev();
|
|
200
|
+
break;
|
|
201
|
+
case '+':
|
|
202
|
+
case '=':
|
|
203
|
+
zoomIn();
|
|
204
|
+
break;
|
|
205
|
+
case '-':
|
|
206
|
+
case '_':
|
|
207
|
+
zoomOut();
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
window.addEventListener('keydown', onKey);
|
|
212
|
+
return () => window.removeEventListener('keydown', onKey);
|
|
213
|
+
}, [open, index, count]);
|
|
214
|
+
// Dialog focus management — same pattern as QuickviewModal/QuickviewSlideout:
|
|
215
|
+
// remember what had focus before the gallery opened (the gallery portals to document.body,
|
|
216
|
+
// outside any surrounding focus trap), move focus into the gallery on open, restore on close.
|
|
217
|
+
const rootRef = useRef(null);
|
|
218
|
+
const previousFocusRef = useRef(null);
|
|
219
|
+
const wasOpenRef = useRef(false);
|
|
220
|
+
useEffect(() => {
|
|
221
|
+
const isOpenNow = Boolean(open && count > 0);
|
|
222
|
+
if (isOpenNow && !wasOpenRef.current) {
|
|
223
|
+
previousFocusRef.current = document.activeElement || null;
|
|
224
|
+
const closeEl = rootRef.current?.querySelector('.ss__gallery__close');
|
|
225
|
+
(closeEl || rootRef.current)?.focus();
|
|
226
|
+
}
|
|
227
|
+
else if (!isOpenNow && wasOpenRef.current) {
|
|
228
|
+
previousFocusRef.current?.focus?.();
|
|
229
|
+
previousFocusRef.current = null;
|
|
230
|
+
}
|
|
231
|
+
wasOpenRef.current = isOpenNow;
|
|
232
|
+
});
|
|
233
|
+
const styling = mergeStyles(props, defaultStyles);
|
|
234
|
+
if (!open || count === 0)
|
|
235
|
+
return null;
|
|
236
|
+
// Drag-to-pan when zoomed in.
|
|
237
|
+
const onPointerDown = (e) => {
|
|
238
|
+
if (zoom <= zoomMin)
|
|
239
|
+
return;
|
|
240
|
+
// Block the browser defaults (native image drag, text selection) that would cancel the
|
|
241
|
+
// pointermove stream, and capture the pointer so the drag survives leaving the image bounds.
|
|
242
|
+
e.preventDefault();
|
|
243
|
+
e.currentTarget?.setPointerCapture?.(e.pointerId);
|
|
244
|
+
dragRef.current = { startX: e.clientX, startY: e.clientY, baseX: pan.x, baseY: pan.y };
|
|
245
|
+
};
|
|
246
|
+
const onPointerMove = (e) => {
|
|
247
|
+
if (!dragRef.current)
|
|
248
|
+
return;
|
|
249
|
+
setPan({ x: dragRef.current.baseX + (e.clientX - dragRef.current.startX), y: dragRef.current.baseY + (e.clientY - dragRef.current.startY) });
|
|
250
|
+
};
|
|
251
|
+
const endDrag = () => {
|
|
252
|
+
dragRef.current = null;
|
|
253
|
+
};
|
|
254
|
+
// Dismiss when the dark backdrop itself is clicked (not the image or a control). Works on
|
|
255
|
+
// the overlay root and the stage, both of which are `e.currentTarget` only for backdrop hits.
|
|
256
|
+
const onBackdropClick = (e) => {
|
|
257
|
+
if (e.target === e.currentTarget)
|
|
258
|
+
onClose && onClose();
|
|
259
|
+
};
|
|
260
|
+
// Mobile: horizontal touch-swipe paginates (only when not zoomed — zoom uses drag-to-pan).
|
|
261
|
+
const onTouchStart = (e) => {
|
|
262
|
+
if (e.touches && e.touches.length === 1) {
|
|
263
|
+
touchRef.current = { x: e.touches[0].clientX, y: e.touches[0].clientY };
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
const onTouchEnd = (e) => {
|
|
267
|
+
const start = touchRef.current;
|
|
268
|
+
touchRef.current = null;
|
|
269
|
+
if (!start || zoom > zoomMin || count <= 1)
|
|
270
|
+
return;
|
|
271
|
+
const touch = e.changedTouches && e.changedTouches[0];
|
|
272
|
+
if (!touch)
|
|
273
|
+
return;
|
|
274
|
+
const dx = touch.clientX - start.x;
|
|
275
|
+
const dy = touch.clientY - start.y;
|
|
276
|
+
// Require a dominantly-horizontal swipe past the threshold.
|
|
277
|
+
if (Math.abs(dx) > swipeThreshold && Math.abs(dx) > Math.abs(dy)) {
|
|
278
|
+
if (dx < 0)
|
|
279
|
+
showNext();
|
|
280
|
+
else
|
|
281
|
+
showPrev();
|
|
282
|
+
}
|
|
283
|
+
};
|
|
284
|
+
const currentSrc = images[index];
|
|
285
|
+
return createPortal(_jsx(CacheProvider, { children: _jsxs("div", { ...styling, className: classnames('ss__gallery', className, internalClassName), role: "dialog", "aria-modal": "true", ...mergedLang.gallery?.attributes, ref: (e) => {
|
|
286
|
+
rootRef.current = e;
|
|
287
|
+
useA11y(e, 0, true, () => onClose && onClose());
|
|
288
|
+
}, onClick: onBackdropClick, children: [_jsxs("div", { className: "ss__gallery__toolbar", children: [count > 1 && (_jsxs("span", { className: "ss__gallery__counter", children: [index + 1, " / ", count] })), _jsx(Button, { name: "zoom-out", internalClassName: "ss__gallery__button ss__gallery__zoom-out", color: "#fff", backgroundColor: "rgba(255, 255, 255, 0.12)", borderColor: "transparent", icon: { icon: 'minus', color: 'currentColor' }, lang: { button: lang.zoomOutButton }, disabled: zoom <= zoomMin, onClick: zoomOut, theme: props.theme, treePath: props.treePath, ...defined({ disableStyles: props.disableStyles }) }), _jsx(Button, { name: "zoom-in", internalClassName: "ss__gallery__button ss__gallery__zoom-in", color: "#fff", backgroundColor: "rgba(255, 255, 255, 0.12)", borderColor: "transparent", icon: { icon: 'plus', color: 'currentColor' }, lang: { button: lang.zoomInButton }, disabled: zoom >= zoomMax, onClick: zoomIn, theme: props.theme, treePath: props.treePath, ...defined({ disableStyles: props.disableStyles }) }), _jsx(Button, { name: "close", internalClassName: "ss__gallery__button ss__gallery__close", color: "#fff", backgroundColor: "rgba(255, 255, 255, 0.12)", borderColor: "transparent", icon: { icon: 'close', color: 'currentColor' }, lang: { button: lang.closeButton }, onClick: () => onClose && onClose(), theme: props.theme, treePath: props.treePath, ...defined({ disableStyles: props.disableStyles }) })] }), _jsxs("div", { className: "ss__gallery__stage", onClick: onBackdropClick, onTouchStart: onTouchStart, onTouchEnd: onTouchEnd, children: [count > 1 && (_jsx(Button, { name: "prev", internalClassName: "ss__gallery__nav ss__gallery__nav--prev", color: "#fff", backgroundColor: "rgba(255, 255, 255, 0.06)", borderColor: "transparent", icon: { icon: 'angle-left', color: 'currentColor' }, lang: { button: lang.prevButton }, onClick: showPrev, theme: props.theme, treePath: props.treePath, ...defined({ disableStyles: props.disableStyles }) })), _jsx(Image, { internalClassName: "ss__gallery__image", src: currentSrc, alt: alt || '', draggable: false, style: {
|
|
289
|
+
transform: `translate(${pan.x}px, ${pan.y}px) scale(${zoom})`,
|
|
290
|
+
cursor: zoom > zoomMin ? (dragRef.current ? 'grabbing' : 'grab') : 'default',
|
|
291
|
+
}, onPointerDown: onPointerDown, onPointerMove: onPointerMove, onPointerUp: endDrag, onPointerLeave: endDrag, theme: props.theme, treePath: props.treePath, ...defined({ disableStyles: props.disableStyles }) }), count > 1 && (_jsx(Button, { name: "next", internalClassName: "ss__gallery__nav ss__gallery__nav--next", color: "#fff", backgroundColor: "rgba(255, 255, 255, 0.06)", borderColor: "transparent", icon: { icon: 'angle-right', color: 'currentColor' }, lang: { button: lang.nextButton }, onClick: showNext, theme: props.theme, treePath: props.treePath, ...defined({ disableStyles: props.disableStyles }) }))] })] }) }), document.body);
|
|
292
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Molecules/Gallery/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Gallery';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Molecules/Modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAO9C,OAAO,EAAE,cAAc,EAAe,MAAM,gBAAgB,CAAC;AAuC7D,eAAO,MAAM,KAAK,gBAAyB,UAAU;;
|
|
1
|
+
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Molecules/Modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAO9C,OAAO,EAAE,cAAc,EAAe,MAAM,gBAAgB,CAAC;AAuC7D,eAAO,MAAM,KAAK,gBAAyB,UAAU;;CA8LnD,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,wBAAwB,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;AAE/E,MAAM,MAAM,wBAAwB,GAAG;IACtC,MAAM,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IAC/B,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;IACxE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;CAC1E,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
|
2
|
-
import { useState, useEffect } from 'preact/hooks';
|
|
2
|
+
import { useState, useEffect, useRef } from 'preact/hooks';
|
|
3
3
|
import { css } from '@emotion/react';
|
|
4
4
|
import classnames from 'classnames';
|
|
5
5
|
import { observer } from 'mobx-react-lite';
|
|
@@ -112,11 +112,28 @@ export const Modal = observer((properties) => {
|
|
|
112
112
|
document.body.style.overflow = '';
|
|
113
113
|
};
|
|
114
114
|
}, [showContent, lockScroll]);
|
|
115
|
+
// The resize listener below is registered once (on mount), so it must read the open/lock state
|
|
116
|
+
// through refs — capturing `showContent` directly would freeze its mount-time value in the
|
|
117
|
+
// listener closure. The quickview modal mounts open, so that stale `true` would re-lock the
|
|
118
|
+
// page on any resize after the modal was closed.
|
|
119
|
+
const showContentRef = useRef(showContent);
|
|
120
|
+
const lockScrollRef = useRef(lockScroll);
|
|
121
|
+
showContentRef.current = showContent;
|
|
122
|
+
lockScrollRef.current = lockScroll;
|
|
115
123
|
useEffect(() => {
|
|
116
124
|
const existingButton = buttonSelector ? (typeof buttonSelector === 'string' ? document.querySelector(buttonSelector) : buttonSelector) : null;
|
|
125
|
+
// Re-asserts the scroll lock after a resize: other components (e.g. Slideout) write
|
|
126
|
+
// `document.body.style.overflow` on render and can clobber the lock while the modal is open.
|
|
127
|
+
// The delay lets those renders settle first; `unmounted` keeps a pending re-lock from firing
|
|
128
|
+
// after cleanup has already released the body.
|
|
129
|
+
let unmounted = false;
|
|
130
|
+
let overflowTimeout;
|
|
117
131
|
const debouncedHandleResize = debounce(() => {
|
|
118
|
-
|
|
119
|
-
|
|
132
|
+
clearTimeout(overflowTimeout);
|
|
133
|
+
overflowTimeout = setTimeout(() => {
|
|
134
|
+
if (unmounted)
|
|
135
|
+
return;
|
|
136
|
+
if (showContentRef.current && lockScrollRef.current) {
|
|
120
137
|
document.body.style.overflow = 'hidden';
|
|
121
138
|
}
|
|
122
139
|
else {
|
|
@@ -135,6 +152,8 @@ export const Modal = observer((properties) => {
|
|
|
135
152
|
}
|
|
136
153
|
window.addEventListener('resize', debouncedHandleResize);
|
|
137
154
|
return () => {
|
|
155
|
+
unmounted = true;
|
|
156
|
+
clearTimeout(overflowTimeout);
|
|
138
157
|
window.removeEventListener('resize', debouncedHandleResize);
|
|
139
158
|
if (existingButton) {
|
|
140
159
|
existingButton.removeEventListener('click', clickListener);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverlayBadge.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Molecules/OverlayBadge/OverlayBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAO9C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAe,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"OverlayBadge.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Molecules/OverlayBadge/OverlayBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAO9C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAe,MAAM,gBAAgB,CAAC;AAE3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEzH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAgE9D,eAAO,MAAM,YAAY,gBAAyB,iBAAiB;;CAwGjE,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,gBAAgB,GAAG,sBAAsB,GAAG,wBAAwB,CAAC;CACjF,GAAG,+BAA+B,GAClC,cAAc,CAAC,iBAAiB,CAAC,CAAC;AAEnC,MAAM,MAAM,+BAA+B,GAAG;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,YAAY,CAAC,EAAE,YAAY,CAAC;CAC5B,CAAC"}
|
|
@@ -94,7 +94,7 @@ export const OverlayBadge = observer((properties) => {
|
|
|
94
94
|
name: slot.name,
|
|
95
95
|
top: index == 0,
|
|
96
96
|
bottom: index == sectionSlots.length - 1,
|
|
97
|
-
badges: result?.display
|
|
97
|
+
badges: result?.display?.badges?.atLocation(`${section}/${slot.tag}`).slice(0, limit),
|
|
98
98
|
}))
|
|
99
99
|
.filter((slot) => slot.badges?.length);
|
|
100
100
|
return {
|
package/dist/esm/components/src/components/Molecules/ProductDetailTable/ProductDetailTable.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { h } from 'preact';
|
|
2
|
+
import { ComponentProps } from '../../../types';
|
|
3
|
+
import type { Product, DisplayFieldConfig } from '@athoscommerce/snap-store-mobx';
|
|
4
|
+
export type { DisplayFieldConfig };
|
|
5
|
+
export declare const ProductDetailTable: ((properties: ProductDetailTableProps) => import("@emotion/react/jsx-runtime").JSX.Element | h.JSX.Element | null) & {
|
|
6
|
+
displayName: string;
|
|
7
|
+
};
|
|
8
|
+
export type ProductDetailTableProps = {
|
|
9
|
+
result?: Product;
|
|
10
|
+
} & ProductDetailTableTemplatesLegalProps & ComponentProps<ProductDetailTableProps>;
|
|
11
|
+
export type ProductDetailTableTemplatesLegalProps = {
|
|
12
|
+
displayFields?: DisplayFieldConfig[];
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=ProductDetailTable.d.ts.map
|
package/dist/esm/components/src/components/Molecules/ProductDetailTable/ProductDetailTable.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProductDetailTable.d.ts","sourceRoot":"","sources":["../../../../../../../components/src/components/Molecules/ProductDetailTable/ProductDetailTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAQ3B,OAAO,EAAE,cAAc,EAAe,MAAM,gBAAgB,CAAC;AAS7D,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAIlF,YAAY,EAAE,kBAAkB,EAAE,CAAC;AA+CnC,eAAO,MAAM,kBAAkB,gBAAyB,uBAAuB;;CA2E7E,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,qCAAqC,GACxC,cAAc,CAAC,uBAAuB,CAAC,CAAC;AAEzC,MAAM,MAAM,qCAAqC,GAAG;IAEnD,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACrC,CAAC"}
|