@coveo/atomic 3.61.5 → 3.63.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/custom-elements.json +189 -20
- package/dist/cjs/components/commerce/atomic-commerce-category-facet/atomic-commerce-category-facet.cjs +19 -7
- package/dist/cjs/components/commerce/atomic-commerce-interface/atomic-commerce-interface.cjs +25 -4
- package/dist/cjs/components/commerce/atomic-commerce-pager/atomic-commerce-pager.cjs +3 -2
- package/dist/cjs/components/commerce/atomic-commerce-products-per-page/atomic-commerce-products-per-page.cjs +1 -1
- package/dist/cjs/components/commerce/atomic-commerce-recommendation-interface/atomic-commerce-recommendation-interface.cjs +25 -4
- package/dist/cjs/components/common/facets/category-facet/active-value.cjs +69 -0
- package/dist/cjs/components/common/facets/category-facet/selected-value.cjs +78 -0
- package/dist/cjs/components/common/facets/category-facet/value-link.cjs +5 -6
- package/dist/cjs/components/common/interface/i18n.cjs +6 -2
- package/dist/cjs/components/common/interface/interface-controller.cjs +8 -4
- package/dist/cjs/components/common/pager/pager-fit-controller.cjs +72 -0
- package/dist/cjs/components/insight/atomic-insight-pager/atomic-insight-pager.cjs +3 -2
- package/dist/cjs/components/search/atomic-category-facet/atomic-category-facet.cjs +19 -8
- package/dist/cjs/components/search/atomic-pager/atomic-pager.cjs +3 -2
- package/dist/cjs/components/search/atomic-result-date/atomic-result-date.cjs +11 -16
- package/dist/cjs/components/search/atomic-results-per-page/atomic-results-per-page.cjs +1 -1
- package/dist/cjs/generated/dayjs-locales-data.cjs +43 -43
- package/dist/cjs/global/environment.cjs +1 -1
- package/dist/cjs/utils/dayjs-locales.cjs +23 -9
- package/dist/cjs/utils/field-utils.cjs +5 -1
- package/dist/cjs/{components/common/facets/category-facet/parent-value-link.cjs → utils/locale-utils.cjs} +14 -11
- package/dist/cjs/versions.cjs +1 -1
- package/dist/esm/components/commerce/atomic-commerce-category-facet/atomic-commerce-category-facet.js +19 -7
- package/dist/esm/components/commerce/atomic-commerce-interface/atomic-commerce-interface.js +25 -4
- package/dist/esm/components/commerce/atomic-commerce-pager/atomic-commerce-pager.js +3 -2
- package/dist/esm/components/commerce/atomic-commerce-products-per-page/atomic-commerce-products-per-page.js +1 -1
- package/dist/esm/components/commerce/atomic-commerce-recommendation-interface/atomic-commerce-recommendation-interface.js +25 -4
- package/dist/esm/components/common/facets/category-facet/active-value.js +31 -0
- package/dist/esm/components/common/facets/category-facet/selected-value.js +30 -0
- package/dist/esm/components/common/facets/category-facet/value-link.js +5 -6
- package/dist/esm/components/common/interface/i18n.js +6 -2
- package/dist/esm/components/common/interface/interface-controller.js +8 -4
- package/dist/esm/components/common/pager/pager-fit-controller.js +34 -0
- package/dist/esm/components/insight/atomic-insight-pager/atomic-insight-pager.js +3 -2
- package/dist/esm/components/search/atomic-category-facet/atomic-category-facet.js +19 -8
- package/dist/esm/components/search/atomic-pager/atomic-pager.js +3 -2
- package/dist/esm/components/search/atomic-result-date/atomic-result-date.js +10 -15
- package/dist/esm/components/search/atomic-results-per-page/atomic-results-per-page.js +1 -1
- package/dist/esm/generated/dayjs-locales-data.js +43 -43
- package/dist/esm/global/environment.js +1 -1
- package/dist/esm/utils/dayjs-locales.js +23 -9
- package/dist/esm/utils/field-utils.js +5 -1
- package/dist/esm/utils/locale-utils.js +12 -0
- package/dist/esm/versions.js +1 -1
- package/dist/lang/cs.json +1 -1
- package/dist/lang/da.json +1 -1
- package/dist/lang/de.json +1 -1
- package/dist/lang/el.json +1 -1
- package/dist/lang/es.json +1 -1
- package/dist/lang/fi.json +1 -1
- package/dist/lang/hu.json +1 -1
- package/dist/lang/id.json +1 -1
- package/dist/lang/it.json +1 -1
- package/dist/lang/ja.json +1 -1
- package/dist/lang/ko.json +1 -1
- package/dist/lang/nl.json +1 -1
- package/dist/lang/no.json +1 -1
- package/dist/lang/pl.json +1 -1
- package/dist/lang/pt-BR.json +1 -1
- package/dist/lang/pt.json +1 -1
- package/dist/lang/ru.json +1 -1
- package/dist/lang/sv.json +1 -1
- package/dist/lang/th.json +1 -1
- package/dist/lang/tr.json +1 -1
- package/dist/lang/zh-CN.json +1 -1
- package/dist/lang/zh-TW.json +1 -1
- package/dist/lang/zh.json +1 -1
- package/dist/types/components/commerce/atomic-commerce-category-facet/atomic-commerce-category-facet.d.ts +7 -1
- package/dist/types/components/commerce/atomic-commerce-interface/atomic-commerce-interface.d.ts +17 -0
- package/dist/types/components/commerce/atomic-commerce-pager/atomic-commerce-pager.d.ts +1 -0
- package/dist/types/components/commerce/atomic-commerce-recommendation-interface/atomic-commerce-recommendation-interface.d.ts +13 -0
- package/dist/types/components/common/facets/category-facet/active-value.d.ts +19 -0
- package/dist/types/components/common/facets/category-facet/selected-value.d.ts +22 -0
- package/dist/types/components/common/facets/category-facet/value-link.d.ts +0 -1
- package/dist/types/components/common/interface/i18n.d.ts +9 -5
- package/dist/types/components/common/pager/pager-fit-controller.d.ts +21 -0
- package/dist/types/components/common/suggestions/suggestion-manager.d.ts +1 -1
- package/dist/types/components/common/suggestions/suggestions-types.d.ts +1 -1
- package/dist/types/components/insight/atomic-insight-interface/atomic-insight-interface.d.ts +4 -0
- package/dist/types/components/insight/atomic-insight-pager/atomic-insight-pager.d.ts +1 -0
- package/dist/types/components/recommendations/atomic-recs-interface/atomic-recs-interface.d.ts +4 -0
- package/dist/types/components/search/atomic-category-facet/atomic-category-facet.d.ts +8 -2
- package/dist/types/components/search/atomic-pager/atomic-pager.d.ts +1 -0
- package/dist/types/components/search/atomic-result-date/atomic-result-date.d.ts +3 -0
- package/dist/types/components/search/atomic-search-interface/atomic-search-interface.d.ts +4 -0
- package/dist/types/utils/dayjs-locales.d.ts +1 -1
- package/dist/types/utils/field-utils.d.ts +1 -1
- package/dist/types/utils/locale-utils.d.ts +7 -0
- package/package.json +4 -4
- package/dist/esm/components/common/facets/category-facet/parent-value-link.js +0 -9
- package/dist/types/components/common/facets/category-facet/parent-value-link.d.ts +0 -6
|
@@ -30,9 +30,13 @@ function i18nBackendOptions(atomicInterface) {
|
|
|
30
30
|
}
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
|
-
function loadTranslations(atomicInterface, language) {
|
|
33
|
+
async function loadTranslations(atomicInterface, language) {
|
|
34
|
+
const { languageUtils } = atomicInterface.i18n.services;
|
|
35
|
+
const languages = languageUtils.toResolveHierarchy(languageUtils.formatLanguageCode(language), false);
|
|
36
|
+
await Promise.all(languages.filter(isI18nLocaleAvailable).map((lng)=>loadTranslationBundle(atomicInterface, lng)));
|
|
37
|
+
}
|
|
38
|
+
function loadTranslationBundle(atomicInterface, lng) {
|
|
34
39
|
const { i18n } = atomicInterface;
|
|
35
|
-
const lng = language.split('-')[0];
|
|
36
40
|
return new Promise((resolve)=>{
|
|
37
41
|
new i18next_http_backend(i18n.services, i18nBackendOptions(atomicInterface)).read(lng, i18nTranslationNamespace, (_error, data)=>{
|
|
38
42
|
if (data) i18n.addResourceBundle(lng, i18nTranslationNamespace, data, true, false);
|
|
@@ -21,8 +21,10 @@ class InterfaceController {
|
|
|
21
21
|
this.host.updateIconAssetsPath();
|
|
22
22
|
initEngine();
|
|
23
23
|
if (this.host.registerFieldsToInclude) this.host.registerFieldsToInclude();
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
await Promise.all([
|
|
25
|
+
this.i18nPromise,
|
|
26
|
+
loadDayjsLocale(this.host.language || 'en')
|
|
27
|
+
]);
|
|
26
28
|
this.initComponents();
|
|
27
29
|
}
|
|
28
30
|
onAnalyticsChange() {
|
|
@@ -35,8 +37,10 @@ class InterfaceController {
|
|
|
35
37
|
const language = newLanguage ?? this.host.language;
|
|
36
38
|
const languageWithFallback = language ?? 'en';
|
|
37
39
|
const { i18n } = this.host;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
+
Promise.all([
|
|
41
|
+
loadDayjsLocale(languageWithFallback),
|
|
42
|
+
loadTranslations(this.host, languageWithFallback)
|
|
43
|
+
]).then(()=>{
|
|
40
44
|
i18n.changeLanguage(language);
|
|
41
45
|
});
|
|
42
46
|
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
class PagerFitController {
|
|
2
|
+
hostConnected() {
|
|
3
|
+
this.resizeObserver = new ResizeObserver(()=>requestAnimationFrame(()=>this.reset()));
|
|
4
|
+
this.resizeObserver.observe(document.documentElement);
|
|
5
|
+
if (this.host.parentElement) this.resizeObserver.observe(this.host.parentElement);
|
|
6
|
+
}
|
|
7
|
+
hostDisconnected() {
|
|
8
|
+
this.resizeObserver?.disconnect();
|
|
9
|
+
}
|
|
10
|
+
hostUpdated() {
|
|
11
|
+
const root = this.host.shadowRoot;
|
|
12
|
+
const previousButton = root?.querySelector('[part="previous-button"]');
|
|
13
|
+
const nextButton = root?.querySelector('[part="next-button"]');
|
|
14
|
+
const pageButtonCount = root?.querySelectorAll('[part~="page-button"]').length ?? 0;
|
|
15
|
+
const isWrapping = !!previousButton && !!nextButton && nextButton.offsetTop > previousButton.offsetTop;
|
|
16
|
+
if (isWrapping && pageButtonCount > 1) {
|
|
17
|
+
this.maxPages = pageButtonCount - 1;
|
|
18
|
+
queueMicrotask(()=>this.host.requestUpdate());
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
getNumberOfPagesToDisplay(numberOfPages) {
|
|
22
|
+
return Math.min(numberOfPages, this.maxPages);
|
|
23
|
+
}
|
|
24
|
+
reset() {
|
|
25
|
+
this.maxPages = 1 / 0;
|
|
26
|
+
this.host.requestUpdate();
|
|
27
|
+
}
|
|
28
|
+
constructor(host){
|
|
29
|
+
this.host = host;
|
|
30
|
+
this.maxPages = 1 / 0;
|
|
31
|
+
host.addController(this);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export { PagerFitController };
|
|
@@ -6,6 +6,7 @@ import { keyed } from "lit/directives/keyed.js";
|
|
|
6
6
|
import { when } from "lit/directives/when.js";
|
|
7
7
|
import { renderPageButtons, renderPagerNextButton, renderPagerPageButton, renderPagerPreviousButton } from "../../common/pager/pager-buttons.js";
|
|
8
8
|
import { renderPagerNavigation } from "../../common/pager/pager-navigation.js";
|
|
9
|
+
import { PagerFitController } from "../../common/pager/pager-fit-controller.js";
|
|
9
10
|
import { getCurrentPagesRange } from "../../common/pager/pager-utils.js";
|
|
10
11
|
import { ValidatePropsController } from "../../common/validate-props-controller/validate-props-controller.js";
|
|
11
12
|
import { bindStateToController } from "../../../decorators/bind-state.js";
|
|
@@ -37,7 +38,7 @@ class AtomicInsightPager extends LitElement {
|
|
|
37
38
|
});
|
|
38
39
|
}
|
|
39
40
|
render() {
|
|
40
|
-
const pagesRange = getCurrentPagesRange(this.pagerState.currentPage - 1, this.numberOfPages, this.pagerState.maxPage);
|
|
41
|
+
const pagesRange = getCurrentPagesRange(this.pagerState.currentPage - 1, this.pagerFit.getNumberOfPagesToDisplay(this.numberOfPages), this.pagerState.maxPage);
|
|
41
42
|
return html`${when(this.pagerState.maxPage > 1, ()=>html`
|
|
42
43
|
${renderPagerNavigation({
|
|
43
44
|
props: {
|
|
@@ -106,7 +107,7 @@ class AtomicInsightPager extends LitElement {
|
|
|
106
107
|
});
|
|
107
108
|
}
|
|
108
109
|
constructor(){
|
|
109
|
-
super(), this.numberOfPages = 5, this.ariaMessage = new AriaLiveRegionController(this, 'atomic-insight-pager');
|
|
110
|
+
super(), this.numberOfPages = 5, this.ariaMessage = new AriaLiveRegionController(this, 'atomic-insight-pager'), this.pagerFit = new PagerFitController(this);
|
|
110
111
|
new ValidatePropsController(this, ()=>({
|
|
111
112
|
numberOfPages: this.numberOfPages
|
|
112
113
|
}), AtomicInsightPager.propsSchema);
|
|
@@ -4,13 +4,14 @@ import { LitElement, css, html, nothing } from "lit";
|
|
|
4
4
|
import { customElement, property, state } from "lit/decorators.js";
|
|
5
5
|
import { map } from "lit/directives/map.js";
|
|
6
6
|
import { when } from "lit/directives/when.js";
|
|
7
|
+
import { renderCategoryFacetActiveValue } from "../../common/facets/category-facet/active-value.js";
|
|
7
8
|
import { renderCategoryFacetAllCategoryButton } from "../../common/facets/category-facet/all-categories-button.js";
|
|
8
9
|
import { renderCategoryFacetChildrenAsTreeContainer } from "../../common/facets/category-facet/children-as-tree-container.js";
|
|
9
10
|
import { renderCategoryFacetParentAsTreeContainer } from "../../common/facets/category-facet/parent-as-tree-container.js";
|
|
10
11
|
import { renderCategoryFacetParentButton } from "../../common/facets/category-facet/parent-button.js";
|
|
11
|
-
import { renderCategoryFacetParentValueLink } from "../../common/facets/category-facet/parent-value-link.js";
|
|
12
12
|
import { renderCategoryFacetSearchResultsContainer } from "../../common/facets/category-facet/search-results-container.js";
|
|
13
13
|
import { renderCategoryFacetSearchValue } from "../../common/facets/category-facet/search-value.js";
|
|
14
|
+
import { renderCategoryFacetSelectedValue } from "../../common/facets/category-facet/selected-value.js";
|
|
14
15
|
import { renderCategoryFacetTreeValueContainer } from "../../common/facets/category-facet/value-as-tree-container.js";
|
|
15
16
|
import { renderCategoryFacetValueLink } from "../../common/facets/category-facet/value-link.js";
|
|
16
17
|
import { parseDependsOn } from "../../common/facets/depends-on.js";
|
|
@@ -168,6 +169,21 @@ class AtomicCategoryFacet extends LitElement {
|
|
|
168
169
|
}
|
|
169
170
|
});
|
|
170
171
|
}
|
|
172
|
+
renderSelectedValue() {
|
|
173
|
+
const activeValue = this.facetState.selectedValueAncestry.at(-1);
|
|
174
|
+
if (!activeValue) return nothing;
|
|
175
|
+
return renderCategoryFacetSelectedValue({
|
|
176
|
+
props: {
|
|
177
|
+
displayValue: getFieldValueCaption(this.field, activeValue.value, this.bindings.i18n),
|
|
178
|
+
label: this.label,
|
|
179
|
+
i18n: this.bindings.i18n,
|
|
180
|
+
onClearFilters: ()=>{
|
|
181
|
+
this.focusTargets.activeValueFocus.focusAfterSearch();
|
|
182
|
+
this.facet.deselectAll();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
}
|
|
171
187
|
renderValuesTree(valuesAsTrees, isRoot) {
|
|
172
188
|
if (!this.hasParents) return this.renderChildren();
|
|
173
189
|
if (isRoot) return renderCategoryFacetTreeValueContainer()(html`
|
|
@@ -212,16 +228,12 @@ class AtomicCategoryFacet extends LitElement {
|
|
|
212
228
|
const activeParent = valuesAsTrees[0];
|
|
213
229
|
const activeParentDisplayValue = getFieldValueCaption(this.field, activeParent.value, this.bindings.i18n);
|
|
214
230
|
return html`
|
|
215
|
-
${
|
|
231
|
+
${renderCategoryFacetActiveValue({
|
|
216
232
|
props: {
|
|
217
233
|
displayValue: activeParentDisplayValue,
|
|
218
234
|
numberOfResults: activeParent.numberOfResults,
|
|
219
235
|
i18n: this.bindings.i18n,
|
|
220
236
|
isLeafValue: activeParent.isLeafValue,
|
|
221
|
-
onClick: ()=>{
|
|
222
|
-
this.focusTargets.activeValueFocus.focusAfterSearch();
|
|
223
|
-
this.facet.deselectAll();
|
|
224
|
-
},
|
|
225
237
|
searchQuery: this.facetState.facetSearch.query,
|
|
226
238
|
setRef: (el)=>{
|
|
227
239
|
this.focusTargets.activeValueFocus.setTarget(el);
|
|
@@ -244,7 +256,6 @@ class AtomicCategoryFacet extends LitElement {
|
|
|
244
256
|
this.focusTargets.activeValueFocus.focusAfterSearch();
|
|
245
257
|
this.facet.toggleSelect(facetValue);
|
|
246
258
|
},
|
|
247
|
-
isParent: false,
|
|
248
259
|
isSelected,
|
|
249
260
|
searchQuery: this.facetState.facetSearch.query,
|
|
250
261
|
isLeafValue: facetValue.isLeafValue,
|
|
@@ -326,7 +337,7 @@ class AtomicCategoryFacet extends LitElement {
|
|
|
326
337
|
return renderFacetContainer()(html`
|
|
327
338
|
${this.renderHeader()}
|
|
328
339
|
${when(!this.isCollapsed, ()=>html`
|
|
329
|
-
${this.renderSearchInput()}
|
|
340
|
+
${this.renderSearchInput()} ${this.renderSelectedValue()}
|
|
330
341
|
${when(shouldDisplaySearchResults(facetSearch), ()=>html`
|
|
331
342
|
${when(facetSearch.values.length > 0, ()=>renderFacetValuesGroup({
|
|
332
343
|
props: {
|
|
@@ -7,6 +7,7 @@ import { when } from "lit/directives/when.js";
|
|
|
7
7
|
import { createAppLoadedListener } from "../../common/interface/store.js";
|
|
8
8
|
import { renderPageButtons, renderPagerNextButton, renderPagerPageButton, renderPagerPreviousButton } from "../../common/pager/pager-buttons.js";
|
|
9
9
|
import { renderPagerNavigation } from "../../common/pager/pager-navigation.js";
|
|
10
|
+
import { PagerFitController } from "../../common/pager/pager-fit-controller.js";
|
|
10
11
|
import { getCurrentPagesRange } from "../../common/pager/pager-utils.js";
|
|
11
12
|
import { ValidatePropsController } from "../../common/validate-props-controller/validate-props-controller.js";
|
|
12
13
|
import { bindStateToController } from "../../../decorators/bind-state.js";
|
|
@@ -42,7 +43,7 @@ class AtomicPager extends InitializeBindingsMixin(LitElement) {
|
|
|
42
43
|
});
|
|
43
44
|
}
|
|
44
45
|
render() {
|
|
45
|
-
const pagesRange = getCurrentPagesRange(this.pagerState.currentPage - 1, this.numberOfPages, this.pagerState.maxPage - 1);
|
|
46
|
+
const pagesRange = getCurrentPagesRange(this.pagerState.currentPage - 1, this.pagerFit.getNumberOfPagesToDisplay(this.numberOfPages), this.pagerState.maxPage - 1);
|
|
46
47
|
return html`${when(this.pagerState.maxPage > 1 && this.isAppLoaded, ()=>html` ${renderPagerNavigation({
|
|
47
48
|
props: {
|
|
48
49
|
i18n: this.bindings.i18n
|
|
@@ -107,7 +108,7 @@ class AtomicPager extends InitializeBindingsMixin(LitElement) {
|
|
|
107
108
|
});
|
|
108
109
|
}
|
|
109
110
|
constructor(){
|
|
110
|
-
super(), this.isAppLoaded = false, this.numberOfPages = 5, this.previousButtonIcon = arrow_left_rounded, this.nextButtonIcon = arrow_right_rounded, this.ariaMessage = new AriaLiveRegionController(this, 'atomic-pager');
|
|
111
|
+
super(), this.isAppLoaded = false, this.numberOfPages = 5, this.previousButtonIcon = arrow_left_rounded, this.nextButtonIcon = arrow_right_rounded, this.ariaMessage = new AriaLiveRegionController(this, 'atomic-pager'), this.pagerFit = new PagerFitController(this);
|
|
111
112
|
new ValidatePropsController(this, ()=>({
|
|
112
113
|
numberOfPages: this.numberOfPages
|
|
113
114
|
}), AtomicPager.propsSchema);
|
|
@@ -2,7 +2,7 @@ import { Schema, StringValue } from "@coveo/bueno";
|
|
|
2
2
|
import { ResultTemplatesHelpers } from "@coveo/headless";
|
|
3
3
|
import dayjs from "dayjs";
|
|
4
4
|
import calendar from "dayjs/plugin/calendar";
|
|
5
|
-
import
|
|
5
|
+
import localizedFormat from "dayjs/plugin/localizedFormat";
|
|
6
6
|
import { LitElement, html, nothing } from "lit";
|
|
7
7
|
import { customElement, property, state } from "lit/decorators.js";
|
|
8
8
|
import { when } from "lit/directives/when.js";
|
|
@@ -23,7 +23,7 @@ function _ts_metadata(metadataKey, metadataValue) {
|
|
|
23
23
|
if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(metadataKey, metadataValue);
|
|
24
24
|
}
|
|
25
25
|
dayjs.extend(calendar);
|
|
26
|
-
dayjs.extend(
|
|
26
|
+
dayjs.extend(localizedFormat);
|
|
27
27
|
class AtomicResultDate extends LightDomMixin(LitElement) {
|
|
28
28
|
initialize() {
|
|
29
29
|
if (!this.result && this.resultController.item) {
|
|
@@ -51,19 +51,14 @@ class AtomicResultDate extends LightDomMixin(LitElement) {
|
|
|
51
51
|
this.error = new Error(`Field "${this.field}" does not contain a valid date.`);
|
|
52
52
|
return null;
|
|
53
53
|
}
|
|
54
|
-
if (this.relativeTime) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
sameElse: this.format
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
return parsedValue.calendar();
|
|
66
|
-
}
|
|
54
|
+
if (this.relativeTime) return parsedValue.calendar(null, {
|
|
55
|
+
sameDay: this.bindings.i18n.t('calendar-same-day'),
|
|
56
|
+
nextDay: this.bindings.i18n.t('calendar-next-day'),
|
|
57
|
+
nextWeek: this.bindings.i18n.t('calendar-next-week'),
|
|
58
|
+
lastDay: this.bindings.i18n.t('calendar-last-day'),
|
|
59
|
+
lastWeek: this.bindings.i18n.t('calendar-last-week'),
|
|
60
|
+
sameElse: this.format
|
|
61
|
+
});
|
|
67
62
|
return parsedValue.format(this.format);
|
|
68
63
|
}
|
|
69
64
|
constructor(){
|
|
@@ -57,7 +57,7 @@ class AtomicResultsPerPage extends InitializeBindingsMixin(LitElement) {
|
|
|
57
57
|
if (!this.searchStatusState) return html``;
|
|
58
58
|
return html`
|
|
59
59
|
${when(!this.searchStatusState.hasError && this.isAppLoaded && this.searchStatusState.hasResults, ()=>html`
|
|
60
|
-
<div class="flex items-center">
|
|
60
|
+
<div class="flex flex-wrap items-center">
|
|
61
61
|
${renderLabel()(html`${this.label}`)}
|
|
62
62
|
${renderFieldsetGroup({
|
|
63
63
|
props: {
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
const locales = {
|
|
2
2
|
af: ()=>import("dayjs/locale/af"),
|
|
3
3
|
am: ()=>import("dayjs/locale/am"),
|
|
4
|
-
'ar-
|
|
5
|
-
'ar-
|
|
6
|
-
'ar-
|
|
7
|
-
'ar-
|
|
8
|
-
'ar-
|
|
9
|
-
'ar-
|
|
10
|
-
'ar-
|
|
4
|
+
'ar-iq': ()=>import("dayjs/locale/ar-iq"),
|
|
5
|
+
'ar-dz': ()=>import("dayjs/locale/ar-dz"),
|
|
6
|
+
'ar-kw': ()=>import("dayjs/locale/ar-kw"),
|
|
7
|
+
'ar-ly': ()=>import("dayjs/locale/ar-ly"),
|
|
8
|
+
'ar-ma': ()=>import("dayjs/locale/ar-ma"),
|
|
9
|
+
'ar-sa': ()=>import("dayjs/locale/ar-sa"),
|
|
10
|
+
'ar-tn': ()=>import("dayjs/locale/ar-tn"),
|
|
11
11
|
ar: ()=>import("dayjs/locale/ar"),
|
|
12
12
|
az: ()=>import("dayjs/locale/az"),
|
|
13
13
|
be: ()=>import("dayjs/locale/be"),
|
|
14
14
|
bg: ()=>import("dayjs/locale/bg"),
|
|
15
15
|
bi: ()=>import("dayjs/locale/bi"),
|
|
16
16
|
bm: ()=>import("dayjs/locale/bm"),
|
|
17
|
-
'bn-
|
|
17
|
+
'bn-bd': ()=>import("dayjs/locale/bn-bd"),
|
|
18
18
|
bn: ()=>import("dayjs/locale/bn"),
|
|
19
19
|
bo: ()=>import("dayjs/locale/bo"),
|
|
20
20
|
br: ()=>import("dayjs/locale/br"),
|
|
@@ -24,49 +24,49 @@ const locales = {
|
|
|
24
24
|
cv: ()=>import("dayjs/locale/cv"),
|
|
25
25
|
cy: ()=>import("dayjs/locale/cy"),
|
|
26
26
|
da: ()=>import("dayjs/locale/da"),
|
|
27
|
-
'de-
|
|
28
|
-
'de-
|
|
27
|
+
'de-at': ()=>import("dayjs/locale/de-at"),
|
|
28
|
+
'de-ch': ()=>import("dayjs/locale/de-ch"),
|
|
29
29
|
de: ()=>import("dayjs/locale/de"),
|
|
30
30
|
dv: ()=>import("dayjs/locale/dv"),
|
|
31
|
-
'en-
|
|
31
|
+
'en-au': ()=>import("dayjs/locale/en-au"),
|
|
32
32
|
el: ()=>import("dayjs/locale/el"),
|
|
33
|
-
'en-
|
|
34
|
-
'en-
|
|
35
|
-
'en-
|
|
36
|
-
'en-
|
|
37
|
-
'en-
|
|
38
|
-
'en-
|
|
39
|
-
'en-
|
|
40
|
-
'en-
|
|
33
|
+
'en-gb': ()=>import("dayjs/locale/en-gb"),
|
|
34
|
+
'en-ie': ()=>import("dayjs/locale/en-ie"),
|
|
35
|
+
'en-il': ()=>import("dayjs/locale/en-il"),
|
|
36
|
+
'en-in': ()=>import("dayjs/locale/en-in"),
|
|
37
|
+
'en-nz': ()=>import("dayjs/locale/en-nz"),
|
|
38
|
+
'en-sg': ()=>import("dayjs/locale/en-sg"),
|
|
39
|
+
'en-tt': ()=>import("dayjs/locale/en-tt"),
|
|
40
|
+
'en-ca': ()=>import("dayjs/locale/en-ca"),
|
|
41
41
|
en: ()=>import("dayjs/locale/en"),
|
|
42
42
|
eo: ()=>import("dayjs/locale/eo"),
|
|
43
|
-
'es-
|
|
44
|
-
'es-
|
|
45
|
-
'es-
|
|
46
|
-
'es-
|
|
43
|
+
'es-mx': ()=>import("dayjs/locale/es-mx"),
|
|
44
|
+
'es-pr': ()=>import("dayjs/locale/es-pr"),
|
|
45
|
+
'es-us': ()=>import("dayjs/locale/es-us"),
|
|
46
|
+
'es-do': ()=>import("dayjs/locale/es-do"),
|
|
47
47
|
et: ()=>import("dayjs/locale/et"),
|
|
48
48
|
eu: ()=>import("dayjs/locale/eu"),
|
|
49
49
|
fa: ()=>import("dayjs/locale/fa"),
|
|
50
50
|
fi: ()=>import("dayjs/locale/fi"),
|
|
51
|
-
'fr-
|
|
52
|
-
'fr-
|
|
51
|
+
'fr-ca': ()=>import("dayjs/locale/fr-ca"),
|
|
52
|
+
'fr-ch': ()=>import("dayjs/locale/fr-ch"),
|
|
53
53
|
fr: ()=>import("dayjs/locale/fr"),
|
|
54
54
|
fo: ()=>import("dayjs/locale/fo"),
|
|
55
55
|
fy: ()=>import("dayjs/locale/fy"),
|
|
56
56
|
ga: ()=>import("dayjs/locale/ga"),
|
|
57
57
|
gd: ()=>import("dayjs/locale/gd"),
|
|
58
58
|
gl: ()=>import("dayjs/locale/gl"),
|
|
59
|
-
'gom-
|
|
59
|
+
'gom-latn': ()=>import("dayjs/locale/gom-latn"),
|
|
60
60
|
gu: ()=>import("dayjs/locale/gu"),
|
|
61
61
|
he: ()=>import("dayjs/locale/he"),
|
|
62
62
|
hi: ()=>import("dayjs/locale/hi"),
|
|
63
63
|
hr: ()=>import("dayjs/locale/hr"),
|
|
64
64
|
ht: ()=>import("dayjs/locale/ht"),
|
|
65
65
|
hu: ()=>import("dayjs/locale/hu"),
|
|
66
|
-
'hy-
|
|
66
|
+
'hy-am': ()=>import("dayjs/locale/hy-am"),
|
|
67
67
|
id: ()=>import("dayjs/locale/id"),
|
|
68
68
|
is: ()=>import("dayjs/locale/is"),
|
|
69
|
-
'it-
|
|
69
|
+
'it-ch': ()=>import("dayjs/locale/it-ch"),
|
|
70
70
|
it: ()=>import("dayjs/locale/it"),
|
|
71
71
|
jv: ()=>import("dayjs/locale/jv"),
|
|
72
72
|
ka: ()=>import("dayjs/locale/ka"),
|
|
@@ -86,7 +86,7 @@ const locales = {
|
|
|
86
86
|
ml: ()=>import("dayjs/locale/ml"),
|
|
87
87
|
mn: ()=>import("dayjs/locale/mn"),
|
|
88
88
|
mr: ()=>import("dayjs/locale/mr"),
|
|
89
|
-
'ms-
|
|
89
|
+
'ms-my': ()=>import("dayjs/locale/ms-my"),
|
|
90
90
|
ms: ()=>import("dayjs/locale/ms"),
|
|
91
91
|
mt: ()=>import("dayjs/locale/mt"),
|
|
92
92
|
lo: ()=>import("dayjs/locale/lo"),
|
|
@@ -94,11 +94,11 @@ const locales = {
|
|
|
94
94
|
nb: ()=>import("dayjs/locale/nb"),
|
|
95
95
|
ne: ()=>import("dayjs/locale/ne"),
|
|
96
96
|
nl: ()=>import("dayjs/locale/nl"),
|
|
97
|
-
'nl-
|
|
97
|
+
'nl-be': ()=>import("dayjs/locale/nl-be"),
|
|
98
98
|
nn: ()=>import("dayjs/locale/nn"),
|
|
99
|
-
'pa-
|
|
99
|
+
'pa-in': ()=>import("dayjs/locale/pa-in"),
|
|
100
100
|
pl: ()=>import("dayjs/locale/pl"),
|
|
101
|
-
'pt-
|
|
101
|
+
'pt-br': ()=>import("dayjs/locale/pt-br"),
|
|
102
102
|
pt: ()=>import("dayjs/locale/pt"),
|
|
103
103
|
rn: ()=>import("dayjs/locale/rn"),
|
|
104
104
|
ro: ()=>import("dayjs/locale/ro"),
|
|
@@ -110,12 +110,12 @@ const locales = {
|
|
|
110
110
|
si: ()=>import("dayjs/locale/si"),
|
|
111
111
|
sk: ()=>import("dayjs/locale/sk"),
|
|
112
112
|
sl: ()=>import("dayjs/locale/sl"),
|
|
113
|
-
'oc-
|
|
113
|
+
'oc-lnc': ()=>import("dayjs/locale/oc-lnc"),
|
|
114
114
|
sq: ()=>import("dayjs/locale/sq"),
|
|
115
|
-
'sr-
|
|
115
|
+
'sr-cyrl': ()=>import("dayjs/locale/sr-cyrl"),
|
|
116
116
|
sr: ()=>import("dayjs/locale/sr"),
|
|
117
117
|
ss: ()=>import("dayjs/locale/ss"),
|
|
118
|
-
'sv-
|
|
118
|
+
'sv-fi': ()=>import("dayjs/locale/sv-fi"),
|
|
119
119
|
sv: ()=>import("dayjs/locale/sv"),
|
|
120
120
|
sw: ()=>import("dayjs/locale/sw"),
|
|
121
121
|
ta: ()=>import("dayjs/locale/ta"),
|
|
@@ -123,24 +123,24 @@ const locales = {
|
|
|
123
123
|
tet: ()=>import("dayjs/locale/tet"),
|
|
124
124
|
tg: ()=>import("dayjs/locale/tg"),
|
|
125
125
|
th: ()=>import("dayjs/locale/th"),
|
|
126
|
-
'tl-
|
|
126
|
+
'tl-ph': ()=>import("dayjs/locale/tl-ph"),
|
|
127
127
|
tlh: ()=>import("dayjs/locale/tlh"),
|
|
128
128
|
tr: ()=>import("dayjs/locale/tr"),
|
|
129
129
|
tzl: ()=>import("dayjs/locale/tzl"),
|
|
130
130
|
tzm: ()=>import("dayjs/locale/tzm"),
|
|
131
|
-
'ug-
|
|
131
|
+
'ug-cn': ()=>import("dayjs/locale/ug-cn"),
|
|
132
132
|
uk: ()=>import("dayjs/locale/uk"),
|
|
133
133
|
tk: ()=>import("dayjs/locale/tk"),
|
|
134
134
|
ur: ()=>import("dayjs/locale/ur"),
|
|
135
|
-
'uz-
|
|
135
|
+
'uz-latn': ()=>import("dayjs/locale/uz-latn"),
|
|
136
136
|
uz: ()=>import("dayjs/locale/uz"),
|
|
137
137
|
vi: ()=>import("dayjs/locale/vi"),
|
|
138
|
-
'x-
|
|
139
|
-
'tzm-
|
|
138
|
+
'x-pseudo': ()=>import("dayjs/locale/x-pseudo"),
|
|
139
|
+
'tzm-latn': ()=>import("dayjs/locale/tzm-latn"),
|
|
140
140
|
yo: ()=>import("dayjs/locale/yo"),
|
|
141
|
-
'zh-
|
|
142
|
-
'zh-
|
|
143
|
-
'zh-
|
|
141
|
+
'zh-cn': ()=>import("dayjs/locale/zh-cn"),
|
|
142
|
+
'zh-hk': ()=>import("dayjs/locale/zh-hk"),
|
|
143
|
+
'zh-tw': ()=>import("dayjs/locale/zh-tw"),
|
|
144
144
|
zh: ()=>import("dayjs/locale/zh")
|
|
145
145
|
};
|
|
146
146
|
export { locales };
|
|
@@ -1,20 +1,34 @@
|
|
|
1
1
|
import dayjs from "dayjs";
|
|
2
2
|
import { locales } from "../generated/dayjs-locales-data.js";
|
|
3
3
|
const warn = (language)=>console.warn(`Cannot load dayjs locale file for "${language}"`);
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
const getCandidateLocales = (languageInput)=>{
|
|
5
|
+
try {
|
|
6
|
+
const { language, script, region } = new Intl.Locale(languageInput);
|
|
7
|
+
return [
|
|
8
|
+
languageInput,
|
|
9
|
+
...region ? [
|
|
10
|
+
`${language}-${region}`
|
|
11
|
+
] : [],
|
|
12
|
+
...script ? [
|
|
13
|
+
`${language}-${script}`
|
|
14
|
+
] : [],
|
|
15
|
+
language
|
|
16
|
+
];
|
|
17
|
+
} catch {
|
|
18
|
+
return [
|
|
19
|
+
languageInput,
|
|
20
|
+
languageInput.split('-')[0]
|
|
21
|
+
];
|
|
9
22
|
}
|
|
10
|
-
return languageInput;
|
|
11
23
|
};
|
|
12
|
-
|
|
24
|
+
const resolveLanguage = (languageInput)=>getCandidateLocales(languageInput).map((locale)=>locale.toLowerCase()).find((locale)=>Object.hasOwn(locales, locale)) ?? languageInput;
|
|
25
|
+
async function loadDayjsLocale(languageInput) {
|
|
13
26
|
const language = resolveLanguage(languageInput);
|
|
14
27
|
if (!locales[language]) return void warn(language);
|
|
15
28
|
try {
|
|
16
|
-
locales[language]()
|
|
17
|
-
|
|
29
|
+
await locales[language]();
|
|
30
|
+
dayjs.locale(language);
|
|
31
|
+
} catch {
|
|
18
32
|
warn(language);
|
|
19
33
|
}
|
|
20
34
|
}
|
|
@@ -2,7 +2,11 @@ function getFieldCaptionNamespace(field) {
|
|
|
2
2
|
return `caption-${field}`;
|
|
3
3
|
}
|
|
4
4
|
function getFieldCaptions(field, i18n) {
|
|
5
|
-
|
|
5
|
+
const namespace = getFieldCaptionNamespace(field);
|
|
6
|
+
return (i18n.languages ?? []).reduceRight((captions, language)=>({
|
|
7
|
+
...captions,
|
|
8
|
+
...i18n.getResourceBundle(language, namespace)
|
|
9
|
+
}), {});
|
|
6
10
|
}
|
|
7
11
|
function getFieldValueCaption(field, facetValue, i18n) {
|
|
8
12
|
return i18n.t(facetValue, {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
function withCountry(language, country) {
|
|
2
|
+
if (!country) return language;
|
|
3
|
+
try {
|
|
4
|
+
if (new Intl.Locale(language).region) return language;
|
|
5
|
+
return new Intl.Locale(language, {
|
|
6
|
+
region: country
|
|
7
|
+
}).toString();
|
|
8
|
+
} catch {
|
|
9
|
+
return language;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export { withCountry };
|
package/dist/esm/versions.js
CHANGED