@coveo/atomic 3.31.2-pre.e8eda4acf9 → 3.31.2-pre.e92d5f4df6
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/atomic/_atomic.esm.js +1 -1
- package/dist/atomic/atomic.esm.js.map +1 -1
- package/dist/atomic/components/_index.d.ts +0 -4
- package/dist/atomic/components/_index.js +0 -2
- package/dist/atomic/components/analytics-config.js +1 -1
- package/dist/atomic/components/atomic-category-facet.js +1 -1
- package/dist/atomic/components/atomic-facet.js +1 -1
- package/dist/atomic/components/atomic-format-currency.js +1 -1
- package/dist/atomic/components/atomic-format-number.js +1 -1
- package/dist/atomic/components/atomic-format-unit.js +1 -1
- package/dist/atomic/components/atomic-numeric-facet.js +1 -1
- package/dist/atomic/components/atomic-quickview-modal2.js +1 -1
- package/dist/atomic/components/atomic-quickview.js +1 -1
- package/dist/atomic/components/atomic-result-children.js +1 -1
- package/dist/atomic/components/atomic-result-fields-list.js +1 -1
- package/dist/atomic/components/atomic-result-link.js +1 -1
- package/dist/atomic/components/atomic-result-list.js +1 -1
- package/dist/atomic/components/atomic-search-box-query-suggestions2.js +1 -1
- package/dist/atomic/components/atomic-search-box-recent-queries2.js +1 -1
- package/dist/atomic/components/atomic-search-interface.js +1 -7
- package/dist/atomic/components/atomic-search-interface.js.map +1 -1
- package/dist/atomic/components/atomic-smart-snippet-feedback-modal2.js +2 -2
- package/dist/atomic/components/atomic-sort-dropdown.js +2 -2
- package/dist/atomic/components/atomic-sort-expression.js +1 -1
- package/dist/atomic/components/atomic-tab-manager.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-product-description/atomic-product-description.js +149 -0
- package/dist/atomic/components/components/commerce/atomic-product-description/atomic-product-description.tw.css.js +3 -0
- package/dist/atomic/components/components/commerce/atomic-product-template/atomic-product-template.js +1 -0
- package/dist/atomic/components/components/commerce/index.js +1 -0
- package/dist/atomic/components/components/commerce/lazy-index.js +1 -0
- package/dist/atomic/components/components/common/atomic-aria-live/atomic-aria-live.js +102 -0
- package/dist/atomic/components/components/common/index.js +1 -0
- package/dist/atomic/components/components/common/lazy-index.js +1 -0
- package/dist/atomic/components/debounce-utils.js +1 -34
- package/dist/atomic/components/debounce-utils.js.map +1 -1
- package/dist/atomic/components/global/environment.js +1 -1
- package/dist/atomic/components/index.js.map +1 -1
- package/dist/atomic/components/stencil-accessibility-utils.js.map +1 -1
- package/dist/atomic/components/stencil-facet-show-more-less.js +7 -1
- package/dist/atomic/components/stencil-facet-show-more-less.js.map +1 -1
- package/dist/atomic/p-01c91b69.js +2 -0
- package/dist/atomic/p-01c91b69.js.map +1 -0
- package/dist/atomic/{p-25971435.entry.js → p-087dfc6c.entry.js} +2 -2
- package/dist/atomic/{p-1b491649.entry.js → p-0af927f0.entry.js} +2 -2
- package/dist/atomic/{p-b043958c.entry.js → p-0b9cd281.entry.js} +2 -2
- package/dist/atomic/{p-e44ba87e.entry.js → p-0f5ae66e.entry.js} +2 -2
- package/dist/atomic/{p-0674783d.entry.js → p-1b329f85.entry.js} +2 -2
- package/dist/atomic/{p-c2f1f9c8.entry.js → p-268b22c0.entry.js} +2 -2
- package/dist/atomic/p-271cf67e.entry.js +2 -0
- package/dist/atomic/p-271cf67e.entry.js.map +1 -0
- package/dist/atomic/p-306161d1.entry.js +2 -0
- package/dist/atomic/p-417b1b64.js +2 -0
- package/dist/atomic/{p-c100197d.js.map → p-417b1b64.js.map} +1 -1
- package/dist/atomic/p-44a3c052.entry.js +2 -0
- package/dist/atomic/{p-e215ba76.entry.js.map → p-44a3c052.entry.js.map} +1 -1
- package/dist/atomic/{p-5a4d45b8.entry.js → p-4c543b6a.entry.js} +2 -2
- package/dist/atomic/{p-a0445771.entry.js → p-4c5702ba.entry.js} +2 -2
- package/dist/atomic/{p-acc4d5de.js → p-53bcc515.js} +2 -2
- package/dist/atomic/{p-e2560da8.entry.js → p-5f64bbe0.entry.js} +2 -2
- package/dist/atomic/{p-fc73190d.entry.js → p-6638ca39.entry.js} +2 -2
- package/dist/atomic/{p-1176959c.entry.js → p-6f8ae3d2.entry.js} +2 -2
- package/dist/atomic/{p-0ed0e8b8.entry.js → p-731f82ed.entry.js} +2 -2
- package/dist/atomic/{p-25f8b8d8.entry.js → p-7a07530d.entry.js} +2 -2
- package/dist/atomic/{p-c8d47706.entry.js → p-7a5d346b.entry.js} +2 -2
- package/dist/atomic/p-8434625a.entry.js +2 -0
- package/dist/atomic/{p-8bb323e8.entry.js.map → p-8434625a.entry.js.map} +1 -1
- package/dist/atomic/{p-5b888121.entry.js → p-89721f11.entry.js} +2 -2
- package/dist/atomic/p-91477908.entry.js +2 -0
- package/dist/atomic/{p-3f881919.entry.js.map → p-91477908.entry.js.map} +1 -1
- package/dist/atomic/p-91d52cad.entry.js +2 -0
- package/dist/atomic/{p-4e77fe24.entry.js.map → p-91d52cad.entry.js.map} +1 -1
- package/dist/atomic/{p-8ccb3c38.js → p-9698b05b.js} +2 -2
- package/dist/atomic/p-96a6f84f.js.map +1 -1
- package/dist/atomic/{p-11dd759c.entry.js → p-b1f7ac63.entry.js} +2 -2
- package/dist/atomic/{p-5fc9f751.entry.js → p-bf5d5c79.entry.js} +2 -2
- package/dist/atomic/{p-716e9e1d.entry.js → p-c0025d4c.entry.js} +2 -2
- package/dist/atomic/{p-494c57a0.entry.js → p-e406cacd.entry.js} +2 -2
- package/dist/atomic/p-e8ba8acd.entry.js +2 -0
- package/dist/atomic/{p-0873c1b8.entry.js.map → p-e8ba8acd.entry.js.map} +1 -1
- package/dist/atomic/p-f0e861c5.entry.js +2 -0
- package/dist/atomic/{p-391c26ba.entry.js → p-f9bfd18b.entry.js} +2 -2
- package/dist/cjs/_loader.cjs.js +1 -1
- package/dist/cjs/{analytics-config-12633e62.js → analytics-config-f9b91347.js} +2 -2
- package/dist/cjs/{analytics-config-12633e62.js.map → analytics-config-f9b91347.js.map} +1 -1
- package/dist/cjs/atomic-category-facet.cjs.entry.js +2 -3
- package/dist/cjs/atomic-category-facet.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-color-facet.cjs.entry.js +1 -2
- package/dist/cjs/atomic-color-facet.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-commerce-category-facet_4.cjs.entry.js +1 -2
- package/dist/cjs/atomic-commerce-category-facet_4.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-facet.cjs.entry.js +2 -3
- package/dist/cjs/atomic-facet.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-format-currency.cjs.entry.js +1 -1
- package/dist/cjs/atomic-format-number.cjs.entry.js +1 -1
- package/dist/cjs/atomic-format-unit.cjs.entry.js +1 -1
- package/dist/cjs/atomic-generated-answer.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-facet.cjs.entry.js +1 -2
- package/dist/cjs/atomic-insight-facet.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-generated-answer.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-interface.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-search-box.cjs.entry.js +2 -2
- package/dist/cjs/atomic-numeric-facet.cjs.entry.js +1 -1
- package/dist/cjs/atomic-quickview-modal.cjs.entry.js +1 -1
- package/dist/cjs/atomic-quickview.cjs.entry.js +1 -1
- package/dist/cjs/atomic-recs-interface.cjs.entry.js +1 -1
- package/dist/cjs/{atomic-aria-live_2.cjs.entry.js → atomic-relevance-inspector.cjs.entry.js} +1 -68
- package/dist/cjs/atomic-relevance-inspector.cjs.entry.js.map +1 -0
- package/dist/cjs/atomic-result-children.cjs.entry.js +1 -1
- package/dist/cjs/atomic-result-fields-list.cjs.entry.js +1 -1
- package/dist/cjs/atomic-result-link.cjs.entry.js +1 -1
- package/dist/cjs/atomic-result-list.cjs.entry.js +1 -1
- package/dist/cjs/atomic-search-box-query-suggestions_2.cjs.entry.js +2 -2
- package/dist/cjs/atomic-search-box.cjs.entry.js +2 -2
- package/dist/cjs/atomic-search-interface.cjs.entry.js +1 -1
- package/dist/cjs/atomic-smart-snippet-feedback-modal.cjs.entry.js +2 -2
- package/dist/cjs/atomic-sort-dropdown.cjs.entry.js +2 -2
- package/dist/cjs/atomic-sort-expression.cjs.entry.js +1 -1
- package/dist/cjs/atomic-tab-manager.cjs.entry.js +1 -1
- package/dist/cjs/atomic.cjs.js +1 -1
- package/dist/cjs/debounce-utils-d26bcad4.js +15 -0
- package/dist/cjs/debounce-utils-d26bcad4.js.map +1 -0
- package/dist/cjs/index-757bc886.js +4 -8
- package/dist/cjs/stencil-accessibility-utils-aa4c9f6c.js.map +1 -1
- package/dist/cjs/{stencil-facet-show-more-less-21d22973.js → stencil-facet-show-more-less-541e1544.js} +10 -4
- package/dist/cjs/stencil-facet-show-more-less-541e1544.js.map +1 -0
- package/dist/cjs/{stencil-suggestion-manager-6f778cf0.js → stencil-suggestion-manager-5fa3ac70.js} +2 -2
- package/dist/cjs/{stencil-suggestion-manager-6f778cf0.js.map → stencil-suggestion-manager-5fa3ac70.js.map} +1 -1
- package/dist/cjs/version.cjs.js +2 -2
- package/dist/esm/_loader.js +1 -1
- package/dist/esm/{analytics-config-cdc199a6.js → analytics-config-f0823b12.js} +2 -2
- package/dist/esm/{analytics-config-cdc199a6.js.map → analytics-config-f0823b12.js.map} +1 -1
- package/dist/esm/atomic-category-facet.entry.js +2 -3
- package/dist/esm/atomic-category-facet.entry.js.map +1 -1
- package/dist/esm/atomic-color-facet.entry.js +1 -2
- package/dist/esm/atomic-color-facet.entry.js.map +1 -1
- package/dist/esm/atomic-commerce-category-facet_4.entry.js +1 -2
- package/dist/esm/atomic-commerce-category-facet_4.entry.js.map +1 -1
- package/dist/esm/atomic-facet.entry.js +2 -3
- package/dist/esm/atomic-facet.entry.js.map +1 -1
- package/dist/esm/atomic-format-currency.entry.js +1 -1
- package/dist/esm/atomic-format-number.entry.js +1 -1
- package/dist/esm/atomic-format-unit.entry.js +1 -1
- package/dist/esm/atomic-generated-answer.entry.js +1 -1
- package/dist/esm/atomic-insight-facet.entry.js +1 -2
- package/dist/esm/atomic-insight-facet.entry.js.map +1 -1
- package/dist/esm/atomic-insight-generated-answer.entry.js +1 -1
- package/dist/esm/atomic-insight-interface.entry.js +1 -1
- package/dist/esm/atomic-insight-search-box.entry.js +2 -2
- package/dist/esm/atomic-numeric-facet.entry.js +1 -1
- package/dist/esm/atomic-quickview-modal.entry.js +1 -1
- package/dist/esm/atomic-quickview.entry.js +1 -1
- package/dist/esm/atomic-recs-interface.entry.js +1 -1
- package/dist/esm/{atomic-aria-live_2.entry.js → atomic-relevance-inspector.entry.js} +3 -69
- package/dist/esm/atomic-relevance-inspector.entry.js.map +1 -0
- package/dist/esm/atomic-result-children.entry.js +1 -1
- package/dist/esm/atomic-result-fields-list.entry.js +1 -1
- package/dist/esm/atomic-result-link.entry.js +1 -1
- package/dist/esm/atomic-result-list.entry.js +1 -1
- package/dist/esm/atomic-search-box-query-suggestions_2.entry.js +2 -2
- package/dist/esm/atomic-search-box.entry.js +2 -2
- package/dist/esm/atomic-search-interface.entry.js +1 -1
- package/dist/esm/atomic-smart-snippet-feedback-modal.entry.js +2 -2
- package/dist/esm/atomic-sort-dropdown.entry.js +2 -2
- package/dist/esm/atomic-sort-expression.entry.js +1 -1
- package/dist/esm/atomic-tab-manager.entry.js +1 -1
- package/dist/esm/atomic.js +1 -1
- package/dist/esm/debounce-utils-8619dece.js +13 -0
- package/dist/esm/{debounce-utils-efa015c0.js.map → debounce-utils-8619dece.js.map} +1 -1
- package/dist/esm/index-3f35faca.js +4 -8
- package/dist/esm/stencil-accessibility-utils-bc273be5.js.map +1 -1
- package/dist/esm/{stencil-facet-show-more-less-4b023ee3.js → stencil-facet-show-more-less-1198472f.js} +8 -2
- package/dist/esm/stencil-facet-show-more-less-1198472f.js.map +1 -0
- package/dist/esm/{stencil-suggestion-manager-91706623.js → stencil-suggestion-manager-f52c6e39.js} +2 -2
- package/dist/esm/{stencil-suggestion-manager-91706623.js.map → stencil-suggestion-manager-f52c6e39.js.map} +1 -1
- package/dist/esm/version.js +2 -2
- package/dist/types/components/commerce/atomic-product-description/atomic-product-description.d.ts +21 -10
- package/dist/types/components/commerce/atomic-product-template/atomic-product-template.d.ts +1 -0
- package/dist/types/components/commerce/index.d.ts +1 -0
- package/dist/types/components/common/atomic-aria-live/atomic-aria-live.d.ts +38 -0
- package/dist/types/components/common/index.d.ts +1 -0
- package/dist/types/components.d.ts +0 -78
- package/dist/types/utils/accessibility-utils.d.ts +2 -1
- package/dist/types/utils/stencil-accessibility-utils.d.ts +2 -1
- package/docs/atomic-docs.json +1 -157
- package/package.json +3 -3
- package/dist/atomic/components/atomic-aria-live.d.ts +0 -11
- package/dist/atomic/components/atomic-aria-live.js +0 -8
- package/dist/atomic/components/atomic-aria-live.js.map +0 -1
- package/dist/atomic/components/atomic-aria-live2.js +0 -87
- package/dist/atomic/components/atomic-aria-live2.js.map +0 -1
- package/dist/atomic/components/atomic-product-description.d.ts +0 -11
- package/dist/atomic/components/atomic-product-description.js +0 -153
- package/dist/atomic/components/atomic-product-description.js.map +0 -1
- package/dist/atomic/components/plus.js +0 -10
- package/dist/atomic/components/plus.js.map +0 -1
- package/dist/atomic/p-0873c1b8.entry.js +0 -2
- package/dist/atomic/p-37b7705c.js +0 -2
- package/dist/atomic/p-37b7705c.js.map +0 -1
- package/dist/atomic/p-3f2442d3.entry.js +0 -2
- package/dist/atomic/p-3f2442d3.entry.js.map +0 -1
- package/dist/atomic/p-3f881919.entry.js +0 -2
- package/dist/atomic/p-4e77fe24.entry.js +0 -2
- package/dist/atomic/p-8bb323e8.entry.js +0 -2
- package/dist/atomic/p-8f20d930.js +0 -2
- package/dist/atomic/p-8f20d930.js.map +0 -1
- package/dist/atomic/p-c100197d.js +0 -2
- package/dist/atomic/p-e215ba76.entry.js +0 -2
- package/dist/atomic/p-e790d557.entry.js +0 -2
- package/dist/atomic/p-efd2bb5f.entry.js +0 -2
- package/dist/atomic/p-f2d31b97.entry.js +0 -2
- package/dist/atomic/p-f2d31b97.entry.js.map +0 -1
- package/dist/cjs/atomic-aria-live_2.cjs.entry.js.map +0 -1
- package/dist/cjs/atomic-product-description.cjs.entry.js +0 -141
- package/dist/cjs/atomic-product-description.cjs.entry.js.map +0 -1
- package/dist/cjs/debounce-utils-e014935f.js +0 -49
- package/dist/cjs/debounce-utils-e014935f.js.map +0 -1
- package/dist/cjs/plus-07843914.js +0 -13
- package/dist/cjs/plus-07843914.js.map +0 -1
- package/dist/cjs/stencil-facet-show-more-less-21d22973.js.map +0 -1
- package/dist/esm/atomic-aria-live_2.entry.js.map +0 -1
- package/dist/esm/atomic-product-description.entry.js +0 -137
- package/dist/esm/atomic-product-description.entry.js.map +0 -1
- package/dist/esm/debounce-utils-efa015c0.js +0 -46
- package/dist/esm/plus-00840ff6.js +0 -10
- package/dist/esm/plus-00840ff6.js.map +0 -1
- package/dist/esm/stencil-facet-show-more-less-4b023ee3.js.map +0 -1
- package/dist/types/components/search/atomic-search-interface/atomic-aria-live.d.ts +0 -23
- /package/dist/atomic/{p-25971435.entry.js.map → p-087dfc6c.entry.js.map} +0 -0
- /package/dist/atomic/{p-1b491649.entry.js.map → p-0af927f0.entry.js.map} +0 -0
- /package/dist/atomic/{p-b043958c.entry.js.map → p-0b9cd281.entry.js.map} +0 -0
- /package/dist/atomic/{p-e44ba87e.entry.js.map → p-0f5ae66e.entry.js.map} +0 -0
- /package/dist/atomic/{p-0674783d.entry.js.map → p-1b329f85.entry.js.map} +0 -0
- /package/dist/atomic/{p-c2f1f9c8.entry.js.map → p-268b22c0.entry.js.map} +0 -0
- /package/dist/atomic/{p-efd2bb5f.entry.js.map → p-306161d1.entry.js.map} +0 -0
- /package/dist/atomic/{p-5a4d45b8.entry.js.map → p-4c543b6a.entry.js.map} +0 -0
- /package/dist/atomic/{p-a0445771.entry.js.map → p-4c5702ba.entry.js.map} +0 -0
- /package/dist/atomic/{p-acc4d5de.js.map → p-53bcc515.js.map} +0 -0
- /package/dist/atomic/{p-e2560da8.entry.js.map → p-5f64bbe0.entry.js.map} +0 -0
- /package/dist/atomic/{p-fc73190d.entry.js.map → p-6638ca39.entry.js.map} +0 -0
- /package/dist/atomic/{p-1176959c.entry.js.map → p-6f8ae3d2.entry.js.map} +0 -0
- /package/dist/atomic/{p-0ed0e8b8.entry.js.map → p-731f82ed.entry.js.map} +0 -0
- /package/dist/atomic/{p-25f8b8d8.entry.js.map → p-7a07530d.entry.js.map} +0 -0
- /package/dist/atomic/{p-c8d47706.entry.js.map → p-7a5d346b.entry.js.map} +0 -0
- /package/dist/atomic/{p-5b888121.entry.js.map → p-89721f11.entry.js.map} +0 -0
- /package/dist/atomic/{p-8ccb3c38.js.map → p-9698b05b.js.map} +0 -0
- /package/dist/atomic/{p-11dd759c.entry.js.map → p-b1f7ac63.entry.js.map} +0 -0
- /package/dist/atomic/{p-5fc9f751.entry.js.map → p-bf5d5c79.entry.js.map} +0 -0
- /package/dist/atomic/{p-716e9e1d.entry.js.map → p-c0025d4c.entry.js.map} +0 -0
- /package/dist/atomic/{p-494c57a0.entry.js.map → p-e406cacd.entry.js.map} +0 -0
- /package/dist/atomic/{p-e790d557.entry.js.map → p-f0e861c5.entry.js.map} +0 -0
- /package/dist/atomic/{p-391c26ba.entry.js.map → p-f9bfd18b.entry.js.map} +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{h as e,r as t,g as i}from"./p-dc3df5ce.js";import{Schema as s,StringValue as n}from"@coveo/bueno";import{I as l,H as o}from"./p-d6e6dbc3.js";import{M as a,P as c}from"./p-8f20d930.js";import{B as r}from"./p-28a6dd9b.js";import{P as h}from"./p-fe23d27e.js";import"./p-c9074946.js";import"./p-1580513b.js";import"./p-05de7ca3.js";import"./p-f77160c6.js";import"./p-ef905286.js";import"./p-21ab6f55.js";import"./p-3dc06261.js";const p=e=>{const t={none:"line-clamp-none",1:"line-clamp-1",2:"line-clamp-2",3:"line-clamp-3",4:"line-clamp-4"};return t[e]||"line-clamp-2"};const d=(t,i,s,n,l,o)=>{let h="expandable-text-button p-1 text-xs leading-[calc(1/.75)]";if(!i&&!t){h+=" invisible"}else if(!s&&!i&&t){h+=" hidden"}const p=t?o:l;return e(r,{style:"text-primary",class:h,title:p,onClick:n},e("atomic-icon",{icon:t?a:c,class:"mx-1 w-2 align-baseline"}),p)};const f=({isExpanded:t,isTruncated:i,truncateAfter:s,onToggleExpand:n,showMoreLabel:l,showLessLabel:o,isCollapsible:a=false},c)=>e("div",{class:"flex flex-col items-start"},e("div",{part:"expandable-text",class:`expandable-text ${!t?p(s):""} min-lines-${s}`},c),d(t,i,a,n,l,o));const m="/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */.expandable-text{line-height:var(--line-height)}.min-lines-1{min-height:calc(var(--line-height) * 1)}.min-lines-2{min-height:calc(var(--line-height) * 2)}.min-lines-3{min-height:calc(var(--line-height) * 3)}.min-lines-4{min-height:calc(var(--line-height) * 4)}";const u=m;var b=undefined&&undefined.__decorate||function(e,t,i,s){var n=arguments.length,l=n<3?t:s===null?s=Object.getOwnPropertyDescriptor(t,i):s,o;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")l=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)if(o=e[a])l=(n<3?o(l):n>3?o(t,i,l):o(t,i))||l;return n>3&&l&&Object.defineProperty(t,i,l),l};const x=class{constructor(e){t(this,e);this.isExpanded=false;this.isTruncated=false;this.truncateAfter="2";this.field="ec_shortdesc";this.isCollapsible=true;this.isExpanded=false;this.isTruncated=false;this.truncateAfter="2";this.field="ec_shortdesc";this.isCollapsible=true;this.resizeObserver=new ResizeObserver((()=>{if(this.descriptionText&&this.descriptionText.scrollHeight>this.descriptionText.clientHeight){this.isTruncated=true}else{this.isTruncated=false}}));this.validateProps()}validateProps(){new s({truncateAfter:new n({constrainTo:["none","1","2","3","4"]}),field:new n({constrainTo:["ec_shortdesc","ec_description"]})}).validate({truncateAfter:this.truncateAfter,field:this.field})}componentDidLoad(){this.descriptionText=this.hostElement.querySelector(".expandable-text");if(this.descriptionText){this.resizeObserver.observe(this.descriptionText)}}onToggleExpand(e){if(e){e.stopPropagation()}this.isExpanded=!this.isExpanded}disconnectedCallback(){this.resizeObserver.disconnect()}render(){const t=this.product[this.field]??null;if(!t){return e(o,null)}return e(f,{isExpanded:this.isExpanded,isTruncated:this.isTruncated,truncateAfter:this.truncateAfter,onToggleExpand:e=>this.onToggleExpand(e),showMoreLabel:this.bindings.i18n.t("show-more"),showLessLabel:this.bindings.i18n.t("show-less"),isCollapsible:this.isCollapsible},e("atomic-product-text",{field:this.field}))}get hostElement(){return i(this)}};b([l()],x.prototype,"bindings",void 0);b([h()],x.prototype,"product",void 0);x.style=u;export{x as atomic_product_description};
|
|
2
|
-
//# sourceMappingURL=p-f2d31b97.entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["getLineClampClass","truncateAfter","lineClampMap","none","renderShowHideButton","isExpanded","isTruncated","isCollapsible","onToggleExpand","showMoreLabel","showLessLabel","buttonClass","label","h","Button","style","class","title","onClick","icon","MinusIcon","PlusIcon","ExpandableText","children","part","atomicProductDescriptionCss","AtomicProductDescriptionStyle0","AtomicProductDescription","constructor","hostRef","this","field","resizeObserver","ResizeObserver","descriptionText","scrollHeight","clientHeight","validateProps","Schema","StringValue","constrainTo","validate","componentDidLoad","hostElement","querySelector","observe","e","stopPropagation","disconnectedCallback","disconnect","render","productDescription","product","Hidden","bindings","i18n","t","__decorate","InitializeBindings","ProductContext"],"sources":["src/components/common/expandable-text/stencil-expandable-text.tsx","src/components/commerce/atomic-product-description/atomic-product-description.pcss?tag=atomic-product-description","src/components/commerce/atomic-product-description/atomic-product-description.tsx"],"sourcesContent":["import {FunctionalComponent, h} from '@stencil/core';\nimport MinusIcon from '../../../images/minus.svg';\nimport PlusIcon from '../../../images/plus.svg';\nimport {Button} from '../stencil-button';\n\nexport type TruncateAfter = 'none' | '1' | '2' | '3' | '4';\n\ninterface ExpandableTextProps {\n isExpanded: boolean;\n isTruncated: boolean;\n isCollapsible?: boolean;\n truncateAfter: TruncateAfter;\n onToggleExpand: (e: MouseEvent | undefined) => void;\n showMoreLabel: string;\n showLessLabel: string;\n}\n\nconst getLineClampClass = (truncateAfter: TruncateAfter) => {\n const lineClampMap: Record<TruncateAfter, string> = {\n none: 'line-clamp-none',\n 1: 'line-clamp-1',\n 2: 'line-clamp-2',\n 3: 'line-clamp-3',\n 4: 'line-clamp-4',\n };\n return lineClampMap[truncateAfter] || 'line-clamp-2';\n};\n\nconst renderShowHideButton = (\n isExpanded: boolean,\n isTruncated: boolean,\n isCollapsible: boolean,\n onToggleExpand: (e?: MouseEvent) => void,\n showMoreLabel: string,\n showLessLabel: string\n) => {\n let buttonClass = 'expandable-text-button p-1 text-xs leading-[calc(1/.75)]';\n if (!isTruncated && !isExpanded) {\n buttonClass += ' invisible';\n } else if (!isCollapsible && !isTruncated && isExpanded) {\n buttonClass += ' hidden';\n }\n\n const label = isExpanded ? showLessLabel : showMoreLabel;\n\n return (\n <Button\n style=\"text-primary\"\n class={buttonClass}\n title={label}\n onClick={onToggleExpand}\n >\n <atomic-icon\n icon={isExpanded ? MinusIcon : PlusIcon}\n class=\"mx-1 w-2 align-baseline\"\n ></atomic-icon>\n {label}\n </Button>\n );\n};\n\nexport const ExpandableText: FunctionalComponent<ExpandableTextProps> = (\n {\n isExpanded,\n isTruncated,\n truncateAfter,\n onToggleExpand,\n showMoreLabel,\n showLessLabel,\n isCollapsible = false,\n },\n children\n) => {\n return (\n <div class=\"flex flex-col items-start\">\n <div\n part=\"expandable-text\"\n class={`expandable-text ${!isExpanded ? getLineClampClass(truncateAfter) : ''} min-lines-${truncateAfter}`}\n >\n {children}\n </div>\n {renderShowHideButton(\n isExpanded,\n isTruncated,\n isCollapsible,\n onToggleExpand,\n showMoreLabel,\n showLessLabel\n )}\n </div>\n );\n};\n","@import '../../common/expandable-text/expandable-text.pcss';\n","import {Schema, StringValue} from '@coveo/bueno';\nimport {Product} from '@coveo/headless/commerce';\nimport {Component, State, h, Element, Prop} from '@stencil/core';\nimport {\n InitializableComponent,\n InitializeBindings,\n} from '../../../utils/initialization-utils';\nimport {\n ExpandableText,\n TruncateAfter,\n} from '../../common/expandable-text/stencil-expandable-text';\nimport {Hidden} from '../../common/stencil-hidden';\nimport {CommerceBindings} from '../atomic-commerce-interface/atomic-commerce-interface';\nimport {ProductContext} from '../product-template-component-utils/stencil-product-template-decorators';\n\n/**\n * @alpha\n * The `atomic-product-description` component renders the description of a product.\n */\n@Component({\n tag: 'atomic-product-description',\n styleUrl: 'atomic-product-description.pcss',\n shadow: false,\n})\nexport class AtomicProductDescription\n implements InitializableComponent<CommerceBindings>\n{\n @InitializeBindings() public bindings!: CommerceBindings;\n @ProductContext() private product!: Product;\n\n @Element() hostElement!: HTMLElement;\n\n public error!: Error;\n\n @State() private isExpanded = false;\n @State() private isTruncated = false;\n\n private descriptionText!: HTMLDivElement;\n private resizeObserver: ResizeObserver;\n\n /**\n * The number of lines after which the product description should be truncated. A value of \"none\" will disable truncation.\n */\n @Prop() public truncateAfter: TruncateAfter = '2';\n\n /**\n * The name of the description field to use.\n */\n @Prop() public field: 'ec_description' | 'ec_shortdesc' = 'ec_shortdesc';\n\n /**\n * Whether the description should be collapsible after being expanded.\n */\n @Prop() public isCollapsible = true;\n\n constructor() {\n this.resizeObserver = new ResizeObserver(() => {\n if (\n this.descriptionText &&\n this.descriptionText.scrollHeight > this.descriptionText.clientHeight\n ) {\n this.isTruncated = true;\n } else {\n this.isTruncated = false;\n }\n });\n this.validateProps();\n }\n\n private validateProps() {\n new Schema({\n truncateAfter: new StringValue({\n constrainTo: ['none', '1', '2', '3', '4'],\n }),\n field: new StringValue({\n constrainTo: ['ec_shortdesc', 'ec_description'],\n }),\n }).validate({\n truncateAfter: this.truncateAfter,\n field: this.field,\n });\n }\n\n componentDidLoad() {\n this.descriptionText = this.hostElement.querySelector(\n '.expandable-text'\n ) as HTMLDivElement;\n if (this.descriptionText) {\n this.resizeObserver.observe(this.descriptionText);\n }\n }\n\n private onToggleExpand(e?: MouseEvent) {\n if (e) {\n e.stopPropagation();\n }\n\n this.isExpanded = !this.isExpanded;\n }\n\n disconnectedCallback() {\n this.resizeObserver.disconnect();\n }\n\n public render() {\n const productDescription = this.product[this.field] ?? null;\n\n if (!productDescription) {\n return <Hidden />;\n }\n\n return (\n <ExpandableText\n isExpanded={this.isExpanded}\n isTruncated={this.isTruncated}\n truncateAfter={this.truncateAfter}\n onToggleExpand={(e) => this.onToggleExpand(e)}\n showMoreLabel={this.bindings.i18n.t('show-more')}\n showLessLabel={this.bindings.i18n.t('show-less')}\n isCollapsible={this.isCollapsible}\n >\n <atomic-product-text field={this.field}></atomic-product-text>\n </ExpandableText>\n );\n }\n}\n"],"mappings":"+aAiBA,MAAMA,EAAqBC,IACzB,MAAMC,EAA8C,CAClDC,KAAM,kBACN,EAAG,eACH,EAAG,eACH,EAAG,eACH,EAAG,gBAEL,OAAOD,EAAaD,IAAkB,cAAc,EAGtD,MAAMG,EAAuB,CAC3BC,EACAC,EACAC,EACAC,EACAC,EACAC,KAEA,IAAIC,EAAc,2DAClB,IAAKL,IAAgBD,EAAY,CAC/BM,GAAe,Y,MACV,IAAKJ,IAAkBD,GAAeD,EAAY,CACvDM,GAAe,S,CAGjB,MAAMC,EAAQP,EAAaK,EAAgBD,EAE3C,OACEI,EAACC,EAAM,CACLC,MAAM,eACNC,MAAOL,EACPM,MAAOL,EACPM,QAASV,GAETK,EAAA,eACEM,KAAMd,EAAae,EAAYC,EAC/BL,MAAM,4BAEPJ,EACM,EAIN,MAAMU,EAA2D,EAEpEjB,aACAC,cACAL,gBACAO,iBACAC,gBACAC,gBACAH,gBAAgB,OAElBgB,IAGEV,EAAA,OAAKG,MAAM,6BACTH,EAAA,OACEW,KAAK,kBACLR,MAAO,oBAAoBX,EAAaL,EAAkBC,GAAiB,gBAAgBA,KAE1FsB,GAEFnB,EACCC,EACAC,EACAC,EACAC,EACAC,EACAC,ICvFR,MAAMe,EAA8B,yUACpC,MAAAC,EAAeD,E,iXCuBFE,EAAwB,MA+BnC,WAAAC,CAAAC,G,UArBiBC,KAAAzB,WAAa,MACbyB,KAAAxB,YAAc,MAQhBwB,KAAA7B,cAA+B,IAK/B6B,KAAAC,MAA2C,eAK3CD,KAAAvB,cAAgB,K,gBAnBD,M,iBACC,M,mBAQe,I,WAKY,e,mBAK3B,KAG7BuB,KAAKE,eAAiB,IAAIC,gBAAe,KACvC,GACEH,KAAKI,iBACLJ,KAAKI,gBAAgBC,aAAeL,KAAKI,gBAAgBE,aACzD,CACAN,KAAKxB,YAAc,I,KACd,CACLwB,KAAKxB,YAAc,K,KAGvBwB,KAAKO,e,CAGC,aAAAA,GACN,IAAIC,EAAO,CACTrC,cAAe,IAAIsC,EAAY,CAC7BC,YAAa,CAAC,OAAQ,IAAK,IAAK,IAAK,OAEvCT,MAAO,IAAIQ,EAAY,CACrBC,YAAa,CAAC,eAAgB,sBAE/BC,SAAS,CACVxC,cAAe6B,KAAK7B,cACpB8B,MAAOD,KAAKC,O,CAIhB,gBAAAW,GACEZ,KAAKI,gBAAkBJ,KAAKa,YAAYC,cACtC,oBAEF,GAAId,KAAKI,gBAAiB,CACxBJ,KAAKE,eAAea,QAAQf,KAAKI,gB,EAI7B,cAAA1B,CAAesC,GACrB,GAAIA,EAAG,CACLA,EAAEC,iB,CAGJjB,KAAKzB,YAAcyB,KAAKzB,U,CAG1B,oBAAA2C,GACElB,KAAKE,eAAeiB,Y,CAGf,MAAAC,GACL,MAAMC,EAAqBrB,KAAKsB,QAAQtB,KAAKC,QAAU,KAEvD,IAAKoB,EAAoB,CACvB,OAAOtC,EAACwC,EAAM,K,CAGhB,OACExC,EAACS,EAAc,CACbjB,WAAYyB,KAAKzB,WACjBC,YAAawB,KAAKxB,YAClBL,cAAe6B,KAAK7B,cACpBO,eAAiBsC,GAAMhB,KAAKtB,eAAesC,GAC3CrC,cAAeqB,KAAKwB,SAASC,KAAKC,EAAE,aACpC9C,cAAeoB,KAAKwB,SAASC,KAAKC,EAAE,aACpCjD,cAAeuB,KAAKvB,eAEpBM,EAAA,uBAAqBkB,MAAOD,KAAKC,Q,oCA9FV0B,EAAA,CAA5BC,K,+BACyBD,EAAA,CAAzBE,K","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"atomic-aria-live.atomic-relevance-inspector.entry.cjs.js","mappings":"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","names":["buildDebouncedQueue","randomID","h","Host","Button","getOrganizationEndpoint"],"sources":["src/components/search/atomic-search-interface/atomic-aria-live.tsx","src/components/search/atomic-relevance-inspector/atomic-relevance-inspector.pcss?tag=atomic-relevance-inspector&encapsulation=shadow","src/components/search/atomic-relevance-inspector/atomic-relevance-inspector.tsx"],"sourcesContent":["import {\n Component,\n h,\n State,\n Element,\n Method,\n Listen,\n Host,\n} from '@stencil/core';\nimport {buildDebouncedQueue} from '../../../utils/debounce-utils';\nimport {FindAriaLiveEventArgs} from '../../../utils/stencil-accessibility-utils';\nimport {randomID} from '../../../utils/utils';\n\ntype Regions = {[regionName: string]: {assertive: boolean; message: string}};\n\n/**\n * The `atomic-aria-live` component notifies screen readers of changes in the search interface.\n */\n@Component({\n tag: 'atomic-aria-live',\n shadow: false,\n})\nexport class AtomicAriaLive {\n @Element() private host!: HTMLAtomicAriaLiveElement;\n @State() private regions: Readonly<Regions> = {};\n\n private messagesQueue = buildDebouncedQueue({delay: 500});\n private id!: string;\n\n @Listen('atomic/accessibility/findAriaLive', {target: 'document'})\n protected onFindAriaLive({detail: args}: CustomEvent<FindAriaLiveEventArgs>) {\n if (!args.element || !this.isInSearchInterface) {\n args.element = this.host;\n }\n }\n\n private get isInSearchInterface() {\n let element: Element | null = this.host;\n while (element) {\n if (element.tagName === 'ATOMIC-SEARCH-INTERFACE') {\n return true;\n }\n element = element.parentElement;\n }\n return false;\n }\n\n connectedCallback() {\n this.id = randomID('atomic-aria-live-');\n }\n\n /**\n * @internal\n */\n @Method()\n public async updateMessage(\n region: string,\n message: string,\n assertive: boolean\n ) {\n const updateRegion = () =>\n (this.regions = {...this.regions, [region]: {assertive, message}});\n\n if (message) {\n this.messagesQueue.enqueue(updateRegion, region);\n } else {\n this.messagesQueue.cancelActionIfQueued(region);\n updateRegion();\n }\n }\n\n /**\n * @internal\n */\n @Method()\n public async registerRegion(region: string, assertive: boolean) {\n if (region in this.regions) {\n return;\n }\n this.regions = {...this.regions, [region]: {assertive, message: ''}};\n }\n\n public disconnectedCallback() {\n this.messagesQueue.clear();\n }\n\n public render() {\n return (\n <Host\n style={{\n position: 'absolute',\n display: 'block',\n height: '0',\n overflow: 'hidden',\n margin: '0',\n }}\n >\n {Object.entries(this.regions).map(\n ([regionName, {assertive, message}]) => (\n <div\n key={regionName}\n id={`${this.id}-${regionName}`}\n aria-live={assertive ? 'assertive' : 'polite'}\n role=\"status\"\n >\n {message}\n </div>\n )\n )}\n </Host>\n );\n }\n}\n","@import '../../../global/global.pcss';\n","import {getOrganizationEndpoint} from '@coveo/headless';\nimport {Component, h, Prop, Event, EventEmitter} from '@stencil/core';\nimport {Button} from '../../common/stencil-button';\nimport {Bindings} from '../atomic-search-interface/atomic-search-interface';\n\n/**\n * The `atomic-relevance-inspector` component is used internally to offer insight on search page relevance, as well as information to help troubleshoot issues during development.\n */\n@Component({\n tag: 'atomic-relevance-inspector',\n styleUrl: 'atomic-relevance-inspector.pcss',\n shadow: true,\n})\nexport class AtomicRelevanceInspector {\n /**\n * The Atomic interface bindings, namely the headless search engine and i18n instances.\n */\n @Prop() bindings!: Bindings;\n\n @Prop({reflect: true}) open = false;\n\n @Event({eventName: 'atomic/relevanceInspector/close'})\n closeRelevanceInspector: EventEmitter<null> | undefined;\n\n public render() {\n return (\n <atomic-modal\n exportparts=\"footer\"\n isOpen={this.open}\n close={() => {\n this.closeRelevanceInspector?.emit();\n }}\n >\n <p slot=\"header\">Open the relevance inspector</p>\n <p slot=\"body\">\n The Relevance Inspector will open in the Coveo Administration Console.\n </p>\n <div slot=\"footer\" class=\"flex w-full items-center justify-end\">\n <Button\n style=\"outline-primary\"\n class=\"mr-2 p-2\"\n onClick={() => this.closeRelevanceInspector?.emit()}\n >\n Ignore\n </Button>\n <a\n class=\"btn-primary p-2\"\n target=\"_blank\"\n href={this.adminHref}\n onClick={() => this.closeRelevanceInspector?.emit()}\n >\n Open\n </a>\n </div>\n </atomic-modal>\n );\n }\n\n private get adminHref() {\n const {organizationId, environment} =\n this.bindings.engine.state.configuration;\n\n const admin = getOrganizationEndpoint(organizationId, environment, 'admin');\n const {searchResponseId} = this.bindings.engine.state.search;\n return `${admin}/admin/#/${organizationId}/search/relevanceInspector/${searchResponseId}`;\n }\n}\n"],"version":3}
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
const index = require('./index-757bc886.js');
|
|
6
|
-
const bueno = require('@coveo/bueno');
|
|
7
|
-
const initializationUtils = require('./initialization-utils-62dc9852.js');
|
|
8
|
-
const plus = require('./plus-07843914.js');
|
|
9
|
-
const stencilButton = require('./stencil-button-aa4c0879.js');
|
|
10
|
-
const stencilProductTemplateDecorators = require('./stencil-product-template-decorators-1edee0eb.js');
|
|
11
|
-
require('./dom-utils-d4790328.js');
|
|
12
|
-
require('./event-utils-9bfcf3c5.js');
|
|
13
|
-
require('./init-queue-a18aa323.js');
|
|
14
|
-
require('./initialization-lit-stencil-common-utils-24279cfa.js');
|
|
15
|
-
require('./ripple-4070d750.js');
|
|
16
|
-
require('./stencil-button-style-ba779fe2.js');
|
|
17
|
-
require('./stencil-item-decorators-43a96f33.js');
|
|
18
|
-
|
|
19
|
-
const getLineClampClass = (truncateAfter) => {
|
|
20
|
-
const lineClampMap = {
|
|
21
|
-
none: 'line-clamp-none',
|
|
22
|
-
1: 'line-clamp-1',
|
|
23
|
-
2: 'line-clamp-2',
|
|
24
|
-
3: 'line-clamp-3',
|
|
25
|
-
4: 'line-clamp-4',
|
|
26
|
-
};
|
|
27
|
-
return lineClampMap[truncateAfter] || 'line-clamp-2';
|
|
28
|
-
};
|
|
29
|
-
const renderShowHideButton = (isExpanded, isTruncated, isCollapsible, onToggleExpand, showMoreLabel, showLessLabel) => {
|
|
30
|
-
let buttonClass = 'expandable-text-button p-1 text-xs leading-[calc(1/.75)]';
|
|
31
|
-
if (!isTruncated && !isExpanded) {
|
|
32
|
-
buttonClass += ' invisible';
|
|
33
|
-
}
|
|
34
|
-
else if (!isCollapsible && !isTruncated && isExpanded) {
|
|
35
|
-
buttonClass += ' hidden';
|
|
36
|
-
}
|
|
37
|
-
const label = isExpanded ? showLessLabel : showMoreLabel;
|
|
38
|
-
return (index.h(stencilButton.Button, { style: "text-primary", class: buttonClass, title: label, onClick: onToggleExpand },
|
|
39
|
-
index.h("atomic-icon", { icon: isExpanded ? plus.MinusIcon : plus.PlusIcon, class: "mx-1 w-2 align-baseline" }),
|
|
40
|
-
label));
|
|
41
|
-
};
|
|
42
|
-
const ExpandableText = ({ isExpanded, isTruncated, truncateAfter, onToggleExpand, showMoreLabel, showLessLabel, isCollapsible = false, }, children) => {
|
|
43
|
-
return (index.h("div", { class: "flex flex-col items-start" },
|
|
44
|
-
index.h("div", { part: "expandable-text", class: `expandable-text ${!isExpanded ? getLineClampClass(truncateAfter) : ''} min-lines-${truncateAfter}` }, children),
|
|
45
|
-
renderShowHideButton(isExpanded, isTruncated, isCollapsible, onToggleExpand, showMoreLabel, showLessLabel)));
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
const atomicProductDescriptionCss = "/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */.expandable-text{line-height:var(--line-height)}.min-lines-1{min-height:calc(var(--line-height) * 1)}.min-lines-2{min-height:calc(var(--line-height) * 2)}.min-lines-3{min-height:calc(var(--line-height) * 3)}.min-lines-4{min-height:calc(var(--line-height) * 4)}";
|
|
49
|
-
const AtomicProductDescriptionStyle0 = atomicProductDescriptionCss;
|
|
50
|
-
|
|
51
|
-
var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
52
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
53
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
54
|
-
r = Reflect.decorate(decorators, target, key, desc);
|
|
55
|
-
else
|
|
56
|
-
for (var i = decorators.length - 1; i >= 0; i--)
|
|
57
|
-
if (d = decorators[i])
|
|
58
|
-
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
59
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
60
|
-
};
|
|
61
|
-
const AtomicProductDescription = class {
|
|
62
|
-
constructor(hostRef) {
|
|
63
|
-
index.registerInstance(this, hostRef);
|
|
64
|
-
this.isExpanded = false;
|
|
65
|
-
this.isTruncated = false;
|
|
66
|
-
/**
|
|
67
|
-
* The number of lines after which the product description should be truncated. A value of "none" will disable truncation.
|
|
68
|
-
*/
|
|
69
|
-
this.truncateAfter = '2';
|
|
70
|
-
/**
|
|
71
|
-
* The name of the description field to use.
|
|
72
|
-
*/
|
|
73
|
-
this.field = 'ec_shortdesc';
|
|
74
|
-
/**
|
|
75
|
-
* Whether the description should be collapsible after being expanded.
|
|
76
|
-
*/
|
|
77
|
-
this.isCollapsible = true;
|
|
78
|
-
this.isExpanded = false;
|
|
79
|
-
this.isTruncated = false;
|
|
80
|
-
this.truncateAfter = '2';
|
|
81
|
-
this.field = 'ec_shortdesc';
|
|
82
|
-
this.isCollapsible = true;
|
|
83
|
-
this.resizeObserver = new ResizeObserver(() => {
|
|
84
|
-
if (this.descriptionText &&
|
|
85
|
-
this.descriptionText.scrollHeight > this.descriptionText.clientHeight) {
|
|
86
|
-
this.isTruncated = true;
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
this.isTruncated = false;
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
this.validateProps();
|
|
93
|
-
}
|
|
94
|
-
validateProps() {
|
|
95
|
-
new bueno.Schema({
|
|
96
|
-
truncateAfter: new bueno.StringValue({
|
|
97
|
-
constrainTo: ['none', '1', '2', '3', '4'],
|
|
98
|
-
}),
|
|
99
|
-
field: new bueno.StringValue({
|
|
100
|
-
constrainTo: ['ec_shortdesc', 'ec_description'],
|
|
101
|
-
}),
|
|
102
|
-
}).validate({
|
|
103
|
-
truncateAfter: this.truncateAfter,
|
|
104
|
-
field: this.field,
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
componentDidLoad() {
|
|
108
|
-
this.descriptionText = this.hostElement.querySelector('.expandable-text');
|
|
109
|
-
if (this.descriptionText) {
|
|
110
|
-
this.resizeObserver.observe(this.descriptionText);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
onToggleExpand(e) {
|
|
114
|
-
if (e) {
|
|
115
|
-
e.stopPropagation();
|
|
116
|
-
}
|
|
117
|
-
this.isExpanded = !this.isExpanded;
|
|
118
|
-
}
|
|
119
|
-
disconnectedCallback() {
|
|
120
|
-
this.resizeObserver.disconnect();
|
|
121
|
-
}
|
|
122
|
-
render() {
|
|
123
|
-
const productDescription = this.product[this.field] ?? null;
|
|
124
|
-
if (!productDescription) {
|
|
125
|
-
return index.h(initializationUtils.Hidden, null);
|
|
126
|
-
}
|
|
127
|
-
return (index.h(ExpandableText, { isExpanded: this.isExpanded, isTruncated: this.isTruncated, truncateAfter: this.truncateAfter, onToggleExpand: (e) => this.onToggleExpand(e), showMoreLabel: this.bindings.i18n.t('show-more'), showLessLabel: this.bindings.i18n.t('show-less'), isCollapsible: this.isCollapsible }, index.h("atomic-product-text", { field: this.field })));
|
|
128
|
-
}
|
|
129
|
-
get hostElement() { return index.getElement(this); }
|
|
130
|
-
};
|
|
131
|
-
__decorate([
|
|
132
|
-
initializationUtils.InitializeBindings()
|
|
133
|
-
], AtomicProductDescription.prototype, "bindings", void 0);
|
|
134
|
-
__decorate([
|
|
135
|
-
stencilProductTemplateDecorators.ProductContext()
|
|
136
|
-
], AtomicProductDescription.prototype, "product", void 0);
|
|
137
|
-
AtomicProductDescription.style = AtomicProductDescriptionStyle0;
|
|
138
|
-
|
|
139
|
-
exports.atomic_product_description = AtomicProductDescription;
|
|
140
|
-
|
|
141
|
-
//# sourceMappingURL=atomic-product-description.cjs.entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"atomic-product-description.entry.cjs.js","mappings":"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","names":["h","Button","MinusIcon","PlusIcon","Schema","StringValue","Hidden","InitializeBindings","ProductContext"],"sources":["src/components/common/expandable-text/stencil-expandable-text.tsx","src/components/commerce/atomic-product-description/atomic-product-description.pcss?tag=atomic-product-description","src/components/commerce/atomic-product-description/atomic-product-description.tsx"],"sourcesContent":["import {FunctionalComponent, h} from '@stencil/core';\nimport MinusIcon from '../../../images/minus.svg';\nimport PlusIcon from '../../../images/plus.svg';\nimport {Button} from '../stencil-button';\n\nexport type TruncateAfter = 'none' | '1' | '2' | '3' | '4';\n\ninterface ExpandableTextProps {\n isExpanded: boolean;\n isTruncated: boolean;\n isCollapsible?: boolean;\n truncateAfter: TruncateAfter;\n onToggleExpand: (e: MouseEvent | undefined) => void;\n showMoreLabel: string;\n showLessLabel: string;\n}\n\nconst getLineClampClass = (truncateAfter: TruncateAfter) => {\n const lineClampMap: Record<TruncateAfter, string> = {\n none: 'line-clamp-none',\n 1: 'line-clamp-1',\n 2: 'line-clamp-2',\n 3: 'line-clamp-3',\n 4: 'line-clamp-4',\n };\n return lineClampMap[truncateAfter] || 'line-clamp-2';\n};\n\nconst renderShowHideButton = (\n isExpanded: boolean,\n isTruncated: boolean,\n isCollapsible: boolean,\n onToggleExpand: (e?: MouseEvent) => void,\n showMoreLabel: string,\n showLessLabel: string\n) => {\n let buttonClass = 'expandable-text-button p-1 text-xs leading-[calc(1/.75)]';\n if (!isTruncated && !isExpanded) {\n buttonClass += ' invisible';\n } else if (!isCollapsible && !isTruncated && isExpanded) {\n buttonClass += ' hidden';\n }\n\n const label = isExpanded ? showLessLabel : showMoreLabel;\n\n return (\n <Button\n style=\"text-primary\"\n class={buttonClass}\n title={label}\n onClick={onToggleExpand}\n >\n <atomic-icon\n icon={isExpanded ? MinusIcon : PlusIcon}\n class=\"mx-1 w-2 align-baseline\"\n ></atomic-icon>\n {label}\n </Button>\n );\n};\n\nexport const ExpandableText: FunctionalComponent<ExpandableTextProps> = (\n {\n isExpanded,\n isTruncated,\n truncateAfter,\n onToggleExpand,\n showMoreLabel,\n showLessLabel,\n isCollapsible = false,\n },\n children\n) => {\n return (\n <div class=\"flex flex-col items-start\">\n <div\n part=\"expandable-text\"\n class={`expandable-text ${!isExpanded ? getLineClampClass(truncateAfter) : ''} min-lines-${truncateAfter}`}\n >\n {children}\n </div>\n {renderShowHideButton(\n isExpanded,\n isTruncated,\n isCollapsible,\n onToggleExpand,\n showMoreLabel,\n showLessLabel\n )}\n </div>\n );\n};\n","@import '../../common/expandable-text/expandable-text.pcss';\n","import {Schema, StringValue} from '@coveo/bueno';\nimport {Product} from '@coveo/headless/commerce';\nimport {Component, State, h, Element, Prop} from '@stencil/core';\nimport {\n InitializableComponent,\n InitializeBindings,\n} from '../../../utils/initialization-utils';\nimport {\n ExpandableText,\n TruncateAfter,\n} from '../../common/expandable-text/stencil-expandable-text';\nimport {Hidden} from '../../common/stencil-hidden';\nimport {CommerceBindings} from '../atomic-commerce-interface/atomic-commerce-interface';\nimport {ProductContext} from '../product-template-component-utils/stencil-product-template-decorators';\n\n/**\n * @alpha\n * The `atomic-product-description` component renders the description of a product.\n */\n@Component({\n tag: 'atomic-product-description',\n styleUrl: 'atomic-product-description.pcss',\n shadow: false,\n})\nexport class AtomicProductDescription\n implements InitializableComponent<CommerceBindings>\n{\n @InitializeBindings() public bindings!: CommerceBindings;\n @ProductContext() private product!: Product;\n\n @Element() hostElement!: HTMLElement;\n\n public error!: Error;\n\n @State() private isExpanded = false;\n @State() private isTruncated = false;\n\n private descriptionText!: HTMLDivElement;\n private resizeObserver: ResizeObserver;\n\n /**\n * The number of lines after which the product description should be truncated. A value of \"none\" will disable truncation.\n */\n @Prop() public truncateAfter: TruncateAfter = '2';\n\n /**\n * The name of the description field to use.\n */\n @Prop() public field: 'ec_description' | 'ec_shortdesc' = 'ec_shortdesc';\n\n /**\n * Whether the description should be collapsible after being expanded.\n */\n @Prop() public isCollapsible = true;\n\n constructor() {\n this.resizeObserver = new ResizeObserver(() => {\n if (\n this.descriptionText &&\n this.descriptionText.scrollHeight > this.descriptionText.clientHeight\n ) {\n this.isTruncated = true;\n } else {\n this.isTruncated = false;\n }\n });\n this.validateProps();\n }\n\n private validateProps() {\n new Schema({\n truncateAfter: new StringValue({\n constrainTo: ['none', '1', '2', '3', '4'],\n }),\n field: new StringValue({\n constrainTo: ['ec_shortdesc', 'ec_description'],\n }),\n }).validate({\n truncateAfter: this.truncateAfter,\n field: this.field,\n });\n }\n\n componentDidLoad() {\n this.descriptionText = this.hostElement.querySelector(\n '.expandable-text'\n ) as HTMLDivElement;\n if (this.descriptionText) {\n this.resizeObserver.observe(this.descriptionText);\n }\n }\n\n private onToggleExpand(e?: MouseEvent) {\n if (e) {\n e.stopPropagation();\n }\n\n this.isExpanded = !this.isExpanded;\n }\n\n disconnectedCallback() {\n this.resizeObserver.disconnect();\n }\n\n public render() {\n const productDescription = this.product[this.field] ?? null;\n\n if (!productDescription) {\n return <Hidden />;\n }\n\n return (\n <ExpandableText\n isExpanded={this.isExpanded}\n isTruncated={this.isTruncated}\n truncateAfter={this.truncateAfter}\n onToggleExpand={(e) => this.onToggleExpand(e)}\n showMoreLabel={this.bindings.i18n.t('show-more')}\n showLessLabel={this.bindings.i18n.t('show-less')}\n isCollapsible={this.isCollapsible}\n >\n <atomic-product-text field={this.field}></atomic-product-text>\n </ExpandableText>\n );\n }\n}\n"],"version":3}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
function buildDebouncedQueue(options) {
|
|
4
|
-
let actions = [];
|
|
5
|
-
let intervalId = null;
|
|
6
|
-
function dequeueAction() {
|
|
7
|
-
const action = actions.shift();
|
|
8
|
-
if (action) {
|
|
9
|
-
action.execute();
|
|
10
|
-
}
|
|
11
|
-
else {
|
|
12
|
-
clearInterval(intervalId);
|
|
13
|
-
intervalId = null;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
function cancelActionIfQueued(id) {
|
|
17
|
-
actions = actions.filter((action) => action.id !== id);
|
|
18
|
-
}
|
|
19
|
-
return {
|
|
20
|
-
enqueue(execute, uniqueId) {
|
|
21
|
-
if (uniqueId) {
|
|
22
|
-
cancelActionIfQueued(uniqueId);
|
|
23
|
-
}
|
|
24
|
-
actions.push({ id: uniqueId, execute });
|
|
25
|
-
if (intervalId === null) {
|
|
26
|
-
dequeueAction();
|
|
27
|
-
intervalId = setInterval(dequeueAction, options.delay);
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
|
-
clear() {
|
|
31
|
-
actions = [];
|
|
32
|
-
},
|
|
33
|
-
cancelActionIfQueued,
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
function debounce(execute, wait) {
|
|
37
|
-
let timer;
|
|
38
|
-
return (...args) => {
|
|
39
|
-
clearTimeout(timer);
|
|
40
|
-
return new Promise((resolve) => {
|
|
41
|
-
timer = setTimeout(() => resolve(execute(...args)), wait);
|
|
42
|
-
});
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
exports.buildDebouncedQueue = buildDebouncedQueue;
|
|
47
|
-
exports.debounce = debounce;
|
|
48
|
-
|
|
49
|
-
//# sourceMappingURL=debounce-utils-e014935f.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"debounce-utils-e014935f.js","mappings":";;SAegB,mBAAmB,CACjC,OAA8B;IAE9B,IAAI,OAAO,GAAmB,EAAE,CAAC;IACjC,IAAI,UAAU,GAA0C,IAAI,CAAC;IAE7D,SAAS,aAAa;QACpB,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,OAAO,EAAE,CAAC;SAClB;aAAM;YACL,aAAa,CAAC,UAAW,CAAC,CAAC;YAC3B,UAAU,GAAG,IAAI,CAAC;SACnB;KACF;IAED,SAAS,oBAAoB,CAAC,EAAU;QACtC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACxD;IAED,OAAO;QACL,OAAO,CAAC,OAAmB,EAAE,QAAiB;YAC5C,IAAI,QAAQ,EAAE;gBACZ,oBAAoB,CAAC,QAAQ,CAAC,CAAC;aAChC;YACD,OAAO,CAAC,IAAI,CAAC,EAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAC,CAAC,CAAC;YACtC,IAAI,UAAU,KAAK,IAAI,EAAE;gBACvB,aAAa,EAAE,CAAC;gBAChB,UAAU,GAAG,WAAW,CAAC,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;aACxD;SACF;QACD,KAAK;YACH,OAAO,GAAG,EAAE,CAAC;SACd;QACD,oBAAoB;KACrB,CAAC;AACJ,CAAC;SAEe,QAAQ,CAItB,OAEmD,EACnD,IAAY;IAEZ,IAAI,KAAoC,CAAC;IAEzC,OAAO,CAAC,GAAG,IAAuB;QAChC,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO;YACzB,KAAK,GAAG,UAAU,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;SAC3D,CAAC,CAAC;KACJ,CAAC;AACJ;;;;;","names":[],"sources":["src/utils/debounce-utils.ts"],"sourcesContent":["export interface DebouncedQueueOptions {\n delay: number;\n}\n\nexport interface DebouncedQueue {\n enqueue(execute: () => void, uniqueId?: string): void;\n clear(): void;\n cancelActionIfQueued(id: string): void;\n}\n\ninterface QueuedAction {\n id?: string;\n execute: () => void;\n}\n\nexport function buildDebouncedQueue(\n options: DebouncedQueueOptions\n): DebouncedQueue {\n let actions: QueuedAction[] = [];\n let intervalId: ReturnType<typeof setInterval> | null = null;\n\n function dequeueAction() {\n const action = actions.shift();\n if (action) {\n action.execute();\n } else {\n clearInterval(intervalId!);\n intervalId = null;\n }\n }\n\n function cancelActionIfQueued(id: string) {\n actions = actions.filter((action) => action.id !== id);\n }\n\n return {\n enqueue(execute: () => void, uniqueId?: string) {\n if (uniqueId) {\n cancelActionIfQueued(uniqueId);\n }\n actions.push({id: uniqueId, execute});\n if (intervalId === null) {\n dequeueAction();\n intervalId = setInterval(dequeueAction, options.delay);\n }\n },\n clear() {\n actions = [];\n },\n cancelActionIfQueued,\n };\n}\n\nexport function debounce<\n ExecuteParameters extends unknown[],\n ExecuteReturnType,\n>(\n execute: (\n ...args: ExecuteParameters\n ) => Promise<ExecuteReturnType> | ExecuteReturnType,\n wait: number\n) {\n let timer: ReturnType<typeof setTimeout>;\n\n return (...args: ExecuteParameters): Promise<ExecuteReturnType> => {\n clearTimeout(timer);\n return new Promise((resolve) => {\n timer = setTimeout(() => resolve(execute(...args)), wait);\n });\n };\n}\n"],"version":3}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const MinusIcon = `<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m64 208h384v96h-384z"/></svg>`;
|
|
4
|
-
|
|
5
|
-
const PlusIcon = `<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
|
|
6
|
-
<path d="M496 208H304V16h-96v192H16v96h192v192h96V304h192"/>
|
|
7
|
-
</svg>
|
|
8
|
-
`;
|
|
9
|
-
|
|
10
|
-
exports.MinusIcon = MinusIcon;
|
|
11
|
-
exports.PlusIcon = PlusIcon;
|
|
12
|
-
|
|
13
|
-
//# sourceMappingURL=plus-07843914.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"plus-07843914.js","mappings":";;;;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"stencil-facet-show-more-less-21d22973.js","mappings":";;;;;;;SAIgB,sCAAsC,CACpD,KAA0E,EAC1E,KAAa,EACb,WAAkC,EAClC,IAAU;IAEV,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;IACxC,KAAK,CAAC,SAAS,CAAC;QACd,IACEA,gEAAgC,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC;YACpE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAC7B;YACA,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;YAEpC,WAAW,CACT,IAAI,CAAC,CAAC,CAAC,4BAA4B,EAAE;gBACnC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM;gBAC5C,KAAK;aACN,CAAC,CACH,CAAC;SACH;KACF,CAAC,CAAC;AACL;;MCTa,iBAAiB,GAA4C,CACxE,KAAK;IAEL,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,EAAE;QACjE,KAAK;KACN,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,EAAE;QACjE,KAAK;KACN,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,sDAAsD,CAAC;IAC1E,MAAM,WAAW,GAAG,cAAc,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;QACxD,OAAO;KACR;IAED,QACEC,iBAAK,KAAK,EAAC,MAAM;QACfA,QAACC,oBAAM,IACL,KAAK,EAAC,cAAc,EACpB,IAAI,EAAC,WAAW,EAChB,KAAK,EAAE,GAAG,UAAU,IAAI,KAAK,CAAC,iBAAiB,GAAG,EAAE,GAAG,QAAQ,EAAE,EACjE,SAAS,EAAE,mBAAmB,EAC9B,OAAO,EAAE,MAAM,KAAK,CAAC,UAAU,EAAE,EACjC,GAAG,EAAE,KAAK,CAAC,WAAW;YAEtBD,yBACE,IAAI,EAAC,qBAAqB,EAC1B,KAAK,EAAE,WAAW,EAClB,IAAI,EAAEE,cAAS,GACF;YACfF,kBAAM,KAAK,EAAC,UAAU,IAAE,QAAQ,CAAQ,CACjC;QACTA,QAACC,oBAAM,IACL,KAAK,EAAC,cAAc,EACpB,IAAI,EAAC,WAAW,EAChB,KAAK,EAAE,GAAG,UAAU,IAAI,KAAK,CAAC,iBAAiB,GAAG,EAAE,GAAG,QAAQ,EAAE,EACjE,SAAS,EAAE,mBAAmB,EAC9B,OAAO,EAAE,MAAM,KAAK,CAAC,UAAU,EAAE,EACjC,GAAG,EAAE,KAAK,CAAC,WAAW;YAEtBD,yBACE,IAAI,EAAC,qBAAqB,EAC1B,KAAK,EAAE,WAAW,EAClB,IAAI,EAAEG,aAAQ,GACD;YACfH,kBAAM,KAAK,EAAC,UAAU,IAAE,QAAQ,CAAQ,CACjC,CACL,EACN;AACJ;;;;;","names":["shouldUpdateFacetSearchComponent","h","Button","MinusIcon","PlusIcon"],"sources":["src/components/common/facets/facet-search/facet-search-aria-live.ts","src/components/common/facets/facet-show-more-less/stencil-facet-show-more-less.tsx"],"sourcesContent":["import type {Facet, FacetSearchState} from '@coveo/headless';\nimport type {i18n} from 'i18next';\nimport {shouldUpdateFacetSearchComponent} from './facet-search-utils';\n\nexport function announceFacetSearchResultsWithAriaLive(\n facet: Pick<Facet, 'subscribe'> & {state: {facetSearch: FacetSearchState}},\n label: string,\n setAriaLive: (msg: string) => void,\n i18n: i18n\n) {\n let prevState = facet.state.facetSearch;\n facet.subscribe(() => {\n if (\n shouldUpdateFacetSearchComponent(facet.state.facetSearch, prevState) &&\n facet.state.facetSearch.query\n ) {\n prevState = facet.state.facetSearch;\n\n setAriaLive(\n i18n.t('facet-search-results-count', {\n count: facet.state.facetSearch.values.length,\n label,\n })\n );\n }\n });\n}\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport MinusIcon from '../../../../images/minus.svg';\nimport PlusIcon from '../../../../images/plus.svg';\nimport {Button} from '../../stencil-button';\n\ninterface FacetShowMoreProps {\n label: string;\n i18n: i18n;\n canShowLessValues: boolean;\n canShowMoreValues: boolean;\n onShowMore(): void;\n onShowLess(): void;\n showMoreRef?: (element?: HTMLButtonElement) => void;\n showLessRef?: (element?: HTMLButtonElement) => void;\n}\n\nexport const FacetShowMoreLess: FunctionalComponent<FacetShowMoreProps> = (\n props\n) => {\n const label = props.i18n.t(props.label);\n const showMore = props.i18n.t('show-more');\n const showMoreFacetValues = props.i18n.t('show-more-facet-values', {\n label,\n });\n const showLess = props.i18n.t('show-less');\n const showLessFacetValues = props.i18n.t('show-less-facet-values', {\n label,\n });\n const btnClasses = 'flex items-baseline text-left p-2 text-sm max-w-full';\n const iconClasses = 'w-2 h-2 mr-1';\n if (!props.canShowLessValues && !props.canShowMoreValues) {\n return;\n }\n\n return (\n <div class=\"mt-2\">\n <Button\n style=\"text-primary\"\n part=\"show-less\"\n class={`${btnClasses} ${props.canShowLessValues ? '' : 'hidden'}`}\n ariaLabel={showLessFacetValues}\n onClick={() => props.onShowLess()}\n ref={props.showLessRef}\n >\n <atomic-icon\n part=\"show-more-less-icon\"\n class={iconClasses}\n icon={MinusIcon}\n ></atomic-icon>\n <span class=\"truncate\">{showLess}</span>\n </Button>\n <Button\n style=\"text-primary\"\n part=\"show-more\"\n class={`${btnClasses} ${props.canShowMoreValues ? '' : 'hidden'}`}\n ariaLabel={showMoreFacetValues}\n onClick={() => props.onShowMore()}\n ref={props.showMoreRef}\n >\n <atomic-icon\n part=\"show-more-less-icon\"\n class={iconClasses}\n icon={PlusIcon}\n ></atomic-icon>\n <span class=\"truncate\">{showMore}</span>\n </Button>\n </div>\n );\n};\n"],"version":3}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"atomic-aria-live.atomic-relevance-inspector.entry.js","mappings":"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","names":[],"sources":["src/components/search/atomic-search-interface/atomic-aria-live.tsx","src/components/search/atomic-relevance-inspector/atomic-relevance-inspector.pcss?tag=atomic-relevance-inspector&encapsulation=shadow","src/components/search/atomic-relevance-inspector/atomic-relevance-inspector.tsx"],"sourcesContent":["import {\n Component,\n h,\n State,\n Element,\n Method,\n Listen,\n Host,\n} from '@stencil/core';\nimport {buildDebouncedQueue} from '../../../utils/debounce-utils';\nimport {FindAriaLiveEventArgs} from '../../../utils/stencil-accessibility-utils';\nimport {randomID} from '../../../utils/utils';\n\ntype Regions = {[regionName: string]: {assertive: boolean; message: string}};\n\n/**\n * The `atomic-aria-live` component notifies screen readers of changes in the search interface.\n */\n@Component({\n tag: 'atomic-aria-live',\n shadow: false,\n})\nexport class AtomicAriaLive {\n @Element() private host!: HTMLAtomicAriaLiveElement;\n @State() private regions: Readonly<Regions> = {};\n\n private messagesQueue = buildDebouncedQueue({delay: 500});\n private id!: string;\n\n @Listen('atomic/accessibility/findAriaLive', {target: 'document'})\n protected onFindAriaLive({detail: args}: CustomEvent<FindAriaLiveEventArgs>) {\n if (!args.element || !this.isInSearchInterface) {\n args.element = this.host;\n }\n }\n\n private get isInSearchInterface() {\n let element: Element | null = this.host;\n while (element) {\n if (element.tagName === 'ATOMIC-SEARCH-INTERFACE') {\n return true;\n }\n element = element.parentElement;\n }\n return false;\n }\n\n connectedCallback() {\n this.id = randomID('atomic-aria-live-');\n }\n\n /**\n * @internal\n */\n @Method()\n public async updateMessage(\n region: string,\n message: string,\n assertive: boolean\n ) {\n const updateRegion = () =>\n (this.regions = {...this.regions, [region]: {assertive, message}});\n\n if (message) {\n this.messagesQueue.enqueue(updateRegion, region);\n } else {\n this.messagesQueue.cancelActionIfQueued(region);\n updateRegion();\n }\n }\n\n /**\n * @internal\n */\n @Method()\n public async registerRegion(region: string, assertive: boolean) {\n if (region in this.regions) {\n return;\n }\n this.regions = {...this.regions, [region]: {assertive, message: ''}};\n }\n\n public disconnectedCallback() {\n this.messagesQueue.clear();\n }\n\n public render() {\n return (\n <Host\n style={{\n position: 'absolute',\n display: 'block',\n height: '0',\n overflow: 'hidden',\n margin: '0',\n }}\n >\n {Object.entries(this.regions).map(\n ([regionName, {assertive, message}]) => (\n <div\n key={regionName}\n id={`${this.id}-${regionName}`}\n aria-live={assertive ? 'assertive' : 'polite'}\n role=\"status\"\n >\n {message}\n </div>\n )\n )}\n </Host>\n );\n }\n}\n","@import '../../../global/global.pcss';\n","import {getOrganizationEndpoint} from '@coveo/headless';\nimport {Component, h, Prop, Event, EventEmitter} from '@stencil/core';\nimport {Button} from '../../common/stencil-button';\nimport {Bindings} from '../atomic-search-interface/atomic-search-interface';\n\n/**\n * The `atomic-relevance-inspector` component is used internally to offer insight on search page relevance, as well as information to help troubleshoot issues during development.\n */\n@Component({\n tag: 'atomic-relevance-inspector',\n styleUrl: 'atomic-relevance-inspector.pcss',\n shadow: true,\n})\nexport class AtomicRelevanceInspector {\n /**\n * The Atomic interface bindings, namely the headless search engine and i18n instances.\n */\n @Prop() bindings!: Bindings;\n\n @Prop({reflect: true}) open = false;\n\n @Event({eventName: 'atomic/relevanceInspector/close'})\n closeRelevanceInspector: EventEmitter<null> | undefined;\n\n public render() {\n return (\n <atomic-modal\n exportparts=\"footer\"\n isOpen={this.open}\n close={() => {\n this.closeRelevanceInspector?.emit();\n }}\n >\n <p slot=\"header\">Open the relevance inspector</p>\n <p slot=\"body\">\n The Relevance Inspector will open in the Coveo Administration Console.\n </p>\n <div slot=\"footer\" class=\"flex w-full items-center justify-end\">\n <Button\n style=\"outline-primary\"\n class=\"mr-2 p-2\"\n onClick={() => this.closeRelevanceInspector?.emit()}\n >\n Ignore\n </Button>\n <a\n class=\"btn-primary p-2\"\n target=\"_blank\"\n href={this.adminHref}\n onClick={() => this.closeRelevanceInspector?.emit()}\n >\n Open\n </a>\n </div>\n </atomic-modal>\n );\n }\n\n private get adminHref() {\n const {organizationId, environment} =\n this.bindings.engine.state.configuration;\n\n const admin = getOrganizationEndpoint(organizationId, environment, 'admin');\n const {searchResponseId} = this.bindings.engine.state.search;\n return `${admin}/admin/#/${organizationId}/search/relevanceInspector/${searchResponseId}`;\n }\n}\n"],"version":3}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import { h, r as registerInstance, g as getElement } from './index-3f35faca.js';
|
|
2
|
-
import { Schema, StringValue } from '@coveo/bueno';
|
|
3
|
-
import { I as InitializeBindings, H as Hidden } from './initialization-utils-ff3edf9a.js';
|
|
4
|
-
import { M as MinusIcon, P as PlusIcon } from './plus-00840ff6.js';
|
|
5
|
-
import { B as Button } from './stencil-button-2a8cc429.js';
|
|
6
|
-
import { P as ProductContext } from './stencil-product-template-decorators-58cfc116.js';
|
|
7
|
-
import './dom-utils-f6086cd3.js';
|
|
8
|
-
import './event-utils-8de63ec3.js';
|
|
9
|
-
import './init-queue-fbe942c3.js';
|
|
10
|
-
import './initialization-lit-stencil-common-utils-9e0c895f.js';
|
|
11
|
-
import './ripple-b1f0b09d.js';
|
|
12
|
-
import './stencil-button-style-0bc80040.js';
|
|
13
|
-
import './stencil-item-decorators-6c453c11.js';
|
|
14
|
-
|
|
15
|
-
const getLineClampClass = (truncateAfter) => {
|
|
16
|
-
const lineClampMap = {
|
|
17
|
-
none: 'line-clamp-none',
|
|
18
|
-
1: 'line-clamp-1',
|
|
19
|
-
2: 'line-clamp-2',
|
|
20
|
-
3: 'line-clamp-3',
|
|
21
|
-
4: 'line-clamp-4',
|
|
22
|
-
};
|
|
23
|
-
return lineClampMap[truncateAfter] || 'line-clamp-2';
|
|
24
|
-
};
|
|
25
|
-
const renderShowHideButton = (isExpanded, isTruncated, isCollapsible, onToggleExpand, showMoreLabel, showLessLabel) => {
|
|
26
|
-
let buttonClass = 'expandable-text-button p-1 text-xs leading-[calc(1/.75)]';
|
|
27
|
-
if (!isTruncated && !isExpanded) {
|
|
28
|
-
buttonClass += ' invisible';
|
|
29
|
-
}
|
|
30
|
-
else if (!isCollapsible && !isTruncated && isExpanded) {
|
|
31
|
-
buttonClass += ' hidden';
|
|
32
|
-
}
|
|
33
|
-
const label = isExpanded ? showLessLabel : showMoreLabel;
|
|
34
|
-
return (h(Button, { style: "text-primary", class: buttonClass, title: label, onClick: onToggleExpand },
|
|
35
|
-
h("atomic-icon", { icon: isExpanded ? MinusIcon : PlusIcon, class: "mx-1 w-2 align-baseline" }),
|
|
36
|
-
label));
|
|
37
|
-
};
|
|
38
|
-
const ExpandableText = ({ isExpanded, isTruncated, truncateAfter, onToggleExpand, showMoreLabel, showLessLabel, isCollapsible = false, }, children) => {
|
|
39
|
-
return (h("div", { class: "flex flex-col items-start" },
|
|
40
|
-
h("div", { part: "expandable-text", class: `expandable-text ${!isExpanded ? getLineClampClass(truncateAfter) : ''} min-lines-${truncateAfter}` }, children),
|
|
41
|
-
renderShowHideButton(isExpanded, isTruncated, isCollapsible, onToggleExpand, showMoreLabel, showLessLabel)));
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
const atomicProductDescriptionCss = "/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */.expandable-text{line-height:var(--line-height)}.min-lines-1{min-height:calc(var(--line-height) * 1)}.min-lines-2{min-height:calc(var(--line-height) * 2)}.min-lines-3{min-height:calc(var(--line-height) * 3)}.min-lines-4{min-height:calc(var(--line-height) * 4)}";
|
|
45
|
-
const AtomicProductDescriptionStyle0 = atomicProductDescriptionCss;
|
|
46
|
-
|
|
47
|
-
var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
48
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
49
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
50
|
-
r = Reflect.decorate(decorators, target, key, desc);
|
|
51
|
-
else
|
|
52
|
-
for (var i = decorators.length - 1; i >= 0; i--)
|
|
53
|
-
if (d = decorators[i])
|
|
54
|
-
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
55
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
56
|
-
};
|
|
57
|
-
const AtomicProductDescription = class {
|
|
58
|
-
constructor(hostRef) {
|
|
59
|
-
registerInstance(this, hostRef);
|
|
60
|
-
this.isExpanded = false;
|
|
61
|
-
this.isTruncated = false;
|
|
62
|
-
/**
|
|
63
|
-
* The number of lines after which the product description should be truncated. A value of "none" will disable truncation.
|
|
64
|
-
*/
|
|
65
|
-
this.truncateAfter = '2';
|
|
66
|
-
/**
|
|
67
|
-
* The name of the description field to use.
|
|
68
|
-
*/
|
|
69
|
-
this.field = 'ec_shortdesc';
|
|
70
|
-
/**
|
|
71
|
-
* Whether the description should be collapsible after being expanded.
|
|
72
|
-
*/
|
|
73
|
-
this.isCollapsible = true;
|
|
74
|
-
this.isExpanded = false;
|
|
75
|
-
this.isTruncated = false;
|
|
76
|
-
this.truncateAfter = '2';
|
|
77
|
-
this.field = 'ec_shortdesc';
|
|
78
|
-
this.isCollapsible = true;
|
|
79
|
-
this.resizeObserver = new ResizeObserver(() => {
|
|
80
|
-
if (this.descriptionText &&
|
|
81
|
-
this.descriptionText.scrollHeight > this.descriptionText.clientHeight) {
|
|
82
|
-
this.isTruncated = true;
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
this.isTruncated = false;
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
this.validateProps();
|
|
89
|
-
}
|
|
90
|
-
validateProps() {
|
|
91
|
-
new Schema({
|
|
92
|
-
truncateAfter: new StringValue({
|
|
93
|
-
constrainTo: ['none', '1', '2', '3', '4'],
|
|
94
|
-
}),
|
|
95
|
-
field: new StringValue({
|
|
96
|
-
constrainTo: ['ec_shortdesc', 'ec_description'],
|
|
97
|
-
}),
|
|
98
|
-
}).validate({
|
|
99
|
-
truncateAfter: this.truncateAfter,
|
|
100
|
-
field: this.field,
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
componentDidLoad() {
|
|
104
|
-
this.descriptionText = this.hostElement.querySelector('.expandable-text');
|
|
105
|
-
if (this.descriptionText) {
|
|
106
|
-
this.resizeObserver.observe(this.descriptionText);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
onToggleExpand(e) {
|
|
110
|
-
if (e) {
|
|
111
|
-
e.stopPropagation();
|
|
112
|
-
}
|
|
113
|
-
this.isExpanded = !this.isExpanded;
|
|
114
|
-
}
|
|
115
|
-
disconnectedCallback() {
|
|
116
|
-
this.resizeObserver.disconnect();
|
|
117
|
-
}
|
|
118
|
-
render() {
|
|
119
|
-
const productDescription = this.product[this.field] ?? null;
|
|
120
|
-
if (!productDescription) {
|
|
121
|
-
return h(Hidden, null);
|
|
122
|
-
}
|
|
123
|
-
return (h(ExpandableText, { isExpanded: this.isExpanded, isTruncated: this.isTruncated, truncateAfter: this.truncateAfter, onToggleExpand: (e) => this.onToggleExpand(e), showMoreLabel: this.bindings.i18n.t('show-more'), showLessLabel: this.bindings.i18n.t('show-less'), isCollapsible: this.isCollapsible }, h("atomic-product-text", { field: this.field })));
|
|
124
|
-
}
|
|
125
|
-
get hostElement() { return getElement(this); }
|
|
126
|
-
};
|
|
127
|
-
__decorate([
|
|
128
|
-
InitializeBindings()
|
|
129
|
-
], AtomicProductDescription.prototype, "bindings", void 0);
|
|
130
|
-
__decorate([
|
|
131
|
-
ProductContext()
|
|
132
|
-
], AtomicProductDescription.prototype, "product", void 0);
|
|
133
|
-
AtomicProductDescription.style = AtomicProductDescriptionStyle0;
|
|
134
|
-
|
|
135
|
-
export { AtomicProductDescription as atomic_product_description };
|
|
136
|
-
|
|
137
|
-
//# sourceMappingURL=atomic-product-description.entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"atomic-product-description.entry.js","mappings":"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","names":[],"sources":["src/components/common/expandable-text/stencil-expandable-text.tsx","src/components/commerce/atomic-product-description/atomic-product-description.pcss?tag=atomic-product-description","src/components/commerce/atomic-product-description/atomic-product-description.tsx"],"sourcesContent":["import {FunctionalComponent, h} from '@stencil/core';\nimport MinusIcon from '../../../images/minus.svg';\nimport PlusIcon from '../../../images/plus.svg';\nimport {Button} from '../stencil-button';\n\nexport type TruncateAfter = 'none' | '1' | '2' | '3' | '4';\n\ninterface ExpandableTextProps {\n isExpanded: boolean;\n isTruncated: boolean;\n isCollapsible?: boolean;\n truncateAfter: TruncateAfter;\n onToggleExpand: (e: MouseEvent | undefined) => void;\n showMoreLabel: string;\n showLessLabel: string;\n}\n\nconst getLineClampClass = (truncateAfter: TruncateAfter) => {\n const lineClampMap: Record<TruncateAfter, string> = {\n none: 'line-clamp-none',\n 1: 'line-clamp-1',\n 2: 'line-clamp-2',\n 3: 'line-clamp-3',\n 4: 'line-clamp-4',\n };\n return lineClampMap[truncateAfter] || 'line-clamp-2';\n};\n\nconst renderShowHideButton = (\n isExpanded: boolean,\n isTruncated: boolean,\n isCollapsible: boolean,\n onToggleExpand: (e?: MouseEvent) => void,\n showMoreLabel: string,\n showLessLabel: string\n) => {\n let buttonClass = 'expandable-text-button p-1 text-xs leading-[calc(1/.75)]';\n if (!isTruncated && !isExpanded) {\n buttonClass += ' invisible';\n } else if (!isCollapsible && !isTruncated && isExpanded) {\n buttonClass += ' hidden';\n }\n\n const label = isExpanded ? showLessLabel : showMoreLabel;\n\n return (\n <Button\n style=\"text-primary\"\n class={buttonClass}\n title={label}\n onClick={onToggleExpand}\n >\n <atomic-icon\n icon={isExpanded ? MinusIcon : PlusIcon}\n class=\"mx-1 w-2 align-baseline\"\n ></atomic-icon>\n {label}\n </Button>\n );\n};\n\nexport const ExpandableText: FunctionalComponent<ExpandableTextProps> = (\n {\n isExpanded,\n isTruncated,\n truncateAfter,\n onToggleExpand,\n showMoreLabel,\n showLessLabel,\n isCollapsible = false,\n },\n children\n) => {\n return (\n <div class=\"flex flex-col items-start\">\n <div\n part=\"expandable-text\"\n class={`expandable-text ${!isExpanded ? getLineClampClass(truncateAfter) : ''} min-lines-${truncateAfter}`}\n >\n {children}\n </div>\n {renderShowHideButton(\n isExpanded,\n isTruncated,\n isCollapsible,\n onToggleExpand,\n showMoreLabel,\n showLessLabel\n )}\n </div>\n );\n};\n","@import '../../common/expandable-text/expandable-text.pcss';\n","import {Schema, StringValue} from '@coveo/bueno';\nimport {Product} from '@coveo/headless/commerce';\nimport {Component, State, h, Element, Prop} from '@stencil/core';\nimport {\n InitializableComponent,\n InitializeBindings,\n} from '../../../utils/initialization-utils';\nimport {\n ExpandableText,\n TruncateAfter,\n} from '../../common/expandable-text/stencil-expandable-text';\nimport {Hidden} from '../../common/stencil-hidden';\nimport {CommerceBindings} from '../atomic-commerce-interface/atomic-commerce-interface';\nimport {ProductContext} from '../product-template-component-utils/stencil-product-template-decorators';\n\n/**\n * @alpha\n * The `atomic-product-description` component renders the description of a product.\n */\n@Component({\n tag: 'atomic-product-description',\n styleUrl: 'atomic-product-description.pcss',\n shadow: false,\n})\nexport class AtomicProductDescription\n implements InitializableComponent<CommerceBindings>\n{\n @InitializeBindings() public bindings!: CommerceBindings;\n @ProductContext() private product!: Product;\n\n @Element() hostElement!: HTMLElement;\n\n public error!: Error;\n\n @State() private isExpanded = false;\n @State() private isTruncated = false;\n\n private descriptionText!: HTMLDivElement;\n private resizeObserver: ResizeObserver;\n\n /**\n * The number of lines after which the product description should be truncated. A value of \"none\" will disable truncation.\n */\n @Prop() public truncateAfter: TruncateAfter = '2';\n\n /**\n * The name of the description field to use.\n */\n @Prop() public field: 'ec_description' | 'ec_shortdesc' = 'ec_shortdesc';\n\n /**\n * Whether the description should be collapsible after being expanded.\n */\n @Prop() public isCollapsible = true;\n\n constructor() {\n this.resizeObserver = new ResizeObserver(() => {\n if (\n this.descriptionText &&\n this.descriptionText.scrollHeight > this.descriptionText.clientHeight\n ) {\n this.isTruncated = true;\n } else {\n this.isTruncated = false;\n }\n });\n this.validateProps();\n }\n\n private validateProps() {\n new Schema({\n truncateAfter: new StringValue({\n constrainTo: ['none', '1', '2', '3', '4'],\n }),\n field: new StringValue({\n constrainTo: ['ec_shortdesc', 'ec_description'],\n }),\n }).validate({\n truncateAfter: this.truncateAfter,\n field: this.field,\n });\n }\n\n componentDidLoad() {\n this.descriptionText = this.hostElement.querySelector(\n '.expandable-text'\n ) as HTMLDivElement;\n if (this.descriptionText) {\n this.resizeObserver.observe(this.descriptionText);\n }\n }\n\n private onToggleExpand(e?: MouseEvent) {\n if (e) {\n e.stopPropagation();\n }\n\n this.isExpanded = !this.isExpanded;\n }\n\n disconnectedCallback() {\n this.resizeObserver.disconnect();\n }\n\n public render() {\n const productDescription = this.product[this.field] ?? null;\n\n if (!productDescription) {\n return <Hidden />;\n }\n\n return (\n <ExpandableText\n isExpanded={this.isExpanded}\n isTruncated={this.isTruncated}\n truncateAfter={this.truncateAfter}\n onToggleExpand={(e) => this.onToggleExpand(e)}\n showMoreLabel={this.bindings.i18n.t('show-more')}\n showLessLabel={this.bindings.i18n.t('show-less')}\n isCollapsible={this.isCollapsible}\n >\n <atomic-product-text field={this.field}></atomic-product-text>\n </ExpandableText>\n );\n }\n}\n"],"version":3}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
function buildDebouncedQueue(options) {
|
|
2
|
-
let actions = [];
|
|
3
|
-
let intervalId = null;
|
|
4
|
-
function dequeueAction() {
|
|
5
|
-
const action = actions.shift();
|
|
6
|
-
if (action) {
|
|
7
|
-
action.execute();
|
|
8
|
-
}
|
|
9
|
-
else {
|
|
10
|
-
clearInterval(intervalId);
|
|
11
|
-
intervalId = null;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
function cancelActionIfQueued(id) {
|
|
15
|
-
actions = actions.filter((action) => action.id !== id);
|
|
16
|
-
}
|
|
17
|
-
return {
|
|
18
|
-
enqueue(execute, uniqueId) {
|
|
19
|
-
if (uniqueId) {
|
|
20
|
-
cancelActionIfQueued(uniqueId);
|
|
21
|
-
}
|
|
22
|
-
actions.push({ id: uniqueId, execute });
|
|
23
|
-
if (intervalId === null) {
|
|
24
|
-
dequeueAction();
|
|
25
|
-
intervalId = setInterval(dequeueAction, options.delay);
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
clear() {
|
|
29
|
-
actions = [];
|
|
30
|
-
},
|
|
31
|
-
cancelActionIfQueued,
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
function debounce(execute, wait) {
|
|
35
|
-
let timer;
|
|
36
|
-
return (...args) => {
|
|
37
|
-
clearTimeout(timer);
|
|
38
|
-
return new Promise((resolve) => {
|
|
39
|
-
timer = setTimeout(() => resolve(execute(...args)), wait);
|
|
40
|
-
});
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export { buildDebouncedQueue as b, debounce as d };
|
|
45
|
-
|
|
46
|
-
//# sourceMappingURL=debounce-utils-efa015c0.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
const MinusIcon = `<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m64 208h384v96h-384z"/></svg>`;
|
|
2
|
-
|
|
3
|
-
const PlusIcon = `<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
|
|
4
|
-
<path d="M496 208H304V16h-96v192H16v96h192v192h96V304h192"/>
|
|
5
|
-
</svg>
|
|
6
|
-
`;
|
|
7
|
-
|
|
8
|
-
export { MinusIcon as M, PlusIcon as P };
|
|
9
|
-
|
|
10
|
-
//# sourceMappingURL=plus-00840ff6.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"plus-00840ff6.js","mappings":";;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"stencil-facet-show-more-less-4b023ee3.js","mappings":";;;;;SAIgB,sCAAsC,CACpD,KAA0E,EAC1E,KAAa,EACb,WAAkC,EAClC,IAAU;IAEV,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;IACxC,KAAK,CAAC,SAAS,CAAC;QACd,IACE,gCAAgC,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC;YACpE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAC7B;YACA,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;YAEpC,WAAW,CACT,IAAI,CAAC,CAAC,CAAC,4BAA4B,EAAE;gBACnC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM;gBAC5C,KAAK;aACN,CAAC,CACH,CAAC;SACH;KACF,CAAC,CAAC;AACL;;MCTa,iBAAiB,GAA4C,CACxE,KAAK;IAEL,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,EAAE;QACjE,KAAK;KACN,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,EAAE;QACjE,KAAK;KACN,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,sDAAsD,CAAC;IAC1E,MAAM,WAAW,GAAG,cAAc,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;QACxD,OAAO;KACR;IAED,QACE,WAAK,KAAK,EAAC,MAAM;QACf,EAAC,MAAM,IACL,KAAK,EAAC,cAAc,EACpB,IAAI,EAAC,WAAW,EAChB,KAAK,EAAE,GAAG,UAAU,IAAI,KAAK,CAAC,iBAAiB,GAAG,EAAE,GAAG,QAAQ,EAAE,EACjE,SAAS,EAAE,mBAAmB,EAC9B,OAAO,EAAE,MAAM,KAAK,CAAC,UAAU,EAAE,EACjC,GAAG,EAAE,KAAK,CAAC,WAAW;YAEtB,mBACE,IAAI,EAAC,qBAAqB,EAC1B,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,GACF;YACf,YAAM,KAAK,EAAC,UAAU,IAAE,QAAQ,CAAQ,CACjC;QACT,EAAC,MAAM,IACL,KAAK,EAAC,cAAc,EACpB,IAAI,EAAC,WAAW,EAChB,KAAK,EAAE,GAAG,UAAU,IAAI,KAAK,CAAC,iBAAiB,GAAG,EAAE,GAAG,QAAQ,EAAE,EACjE,SAAS,EAAE,mBAAmB,EAC9B,OAAO,EAAE,MAAM,KAAK,CAAC,UAAU,EAAE,EACjC,GAAG,EAAE,KAAK,CAAC,WAAW;YAEtB,mBACE,IAAI,EAAC,qBAAqB,EAC1B,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,QAAQ,GACD;YACf,YAAM,KAAK,EAAC,UAAU,IAAE,QAAQ,CAAQ,CACjC,CACL,EACN;AACJ;;;;","names":[],"sources":["src/components/common/facets/facet-search/facet-search-aria-live.ts","src/components/common/facets/facet-show-more-less/stencil-facet-show-more-less.tsx"],"sourcesContent":["import type {Facet, FacetSearchState} from '@coveo/headless';\nimport type {i18n} from 'i18next';\nimport {shouldUpdateFacetSearchComponent} from './facet-search-utils';\n\nexport function announceFacetSearchResultsWithAriaLive(\n facet: Pick<Facet, 'subscribe'> & {state: {facetSearch: FacetSearchState}},\n label: string,\n setAriaLive: (msg: string) => void,\n i18n: i18n\n) {\n let prevState = facet.state.facetSearch;\n facet.subscribe(() => {\n if (\n shouldUpdateFacetSearchComponent(facet.state.facetSearch, prevState) &&\n facet.state.facetSearch.query\n ) {\n prevState = facet.state.facetSearch;\n\n setAriaLive(\n i18n.t('facet-search-results-count', {\n count: facet.state.facetSearch.values.length,\n label,\n })\n );\n }\n });\n}\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport MinusIcon from '../../../../images/minus.svg';\nimport PlusIcon from '../../../../images/plus.svg';\nimport {Button} from '../../stencil-button';\n\ninterface FacetShowMoreProps {\n label: string;\n i18n: i18n;\n canShowLessValues: boolean;\n canShowMoreValues: boolean;\n onShowMore(): void;\n onShowLess(): void;\n showMoreRef?: (element?: HTMLButtonElement) => void;\n showLessRef?: (element?: HTMLButtonElement) => void;\n}\n\nexport const FacetShowMoreLess: FunctionalComponent<FacetShowMoreProps> = (\n props\n) => {\n const label = props.i18n.t(props.label);\n const showMore = props.i18n.t('show-more');\n const showMoreFacetValues = props.i18n.t('show-more-facet-values', {\n label,\n });\n const showLess = props.i18n.t('show-less');\n const showLessFacetValues = props.i18n.t('show-less-facet-values', {\n label,\n });\n const btnClasses = 'flex items-baseline text-left p-2 text-sm max-w-full';\n const iconClasses = 'w-2 h-2 mr-1';\n if (!props.canShowLessValues && !props.canShowMoreValues) {\n return;\n }\n\n return (\n <div class=\"mt-2\">\n <Button\n style=\"text-primary\"\n part=\"show-less\"\n class={`${btnClasses} ${props.canShowLessValues ? '' : 'hidden'}`}\n ariaLabel={showLessFacetValues}\n onClick={() => props.onShowLess()}\n ref={props.showLessRef}\n >\n <atomic-icon\n part=\"show-more-less-icon\"\n class={iconClasses}\n icon={MinusIcon}\n ></atomic-icon>\n <span class=\"truncate\">{showLess}</span>\n </Button>\n <Button\n style=\"text-primary\"\n part=\"show-more\"\n class={`${btnClasses} ${props.canShowMoreValues ? '' : 'hidden'}`}\n ariaLabel={showMoreFacetValues}\n onClick={() => props.onShowMore()}\n ref={props.showMoreRef}\n >\n <atomic-icon\n part=\"show-more-less-icon\"\n class={iconClasses}\n icon={PlusIcon}\n ></atomic-icon>\n <span class=\"truncate\">{showMore}</span>\n </Button>\n </div>\n );\n};\n"],"version":3}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { FindAriaLiveEventArgs } from '../../../utils/stencil-accessibility-utils';
|
|
2
|
-
/**
|
|
3
|
-
* The `atomic-aria-live` component notifies screen readers of changes in the search interface.
|
|
4
|
-
*/
|
|
5
|
-
export declare class AtomicAriaLive {
|
|
6
|
-
private host;
|
|
7
|
-
private regions;
|
|
8
|
-
private messagesQueue;
|
|
9
|
-
private id;
|
|
10
|
-
protected onFindAriaLive({ detail: args }: CustomEvent<FindAriaLiveEventArgs>): void;
|
|
11
|
-
private get isInSearchInterface();
|
|
12
|
-
connectedCallback(): void;
|
|
13
|
-
/**
|
|
14
|
-
* @internal
|
|
15
|
-
*/
|
|
16
|
-
updateMessage(region: string, message: string, assertive: boolean): Promise<void>;
|
|
17
|
-
/**
|
|
18
|
-
* @internal
|
|
19
|
-
*/
|
|
20
|
-
registerRegion(region: string, assertive: boolean): Promise<void>;
|
|
21
|
-
disconnectedCallback(): void;
|
|
22
|
-
render(): any;
|
|
23
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|