@limetech/lime-elements 40.4.1 → 40.5.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/CHANGELOG.md +18 -0
- package/dist/cjs/component-UyqdiWGc.js +1576 -0
- package/dist/cjs/lime-elements.cjs.js +1 -1
- package/dist/cjs/limel-action-bar_3.cjs.entry.js +1 -1
- package/dist/cjs/limel-ai-avatar.cjs.entry.js +1 -1
- package/dist/cjs/{limel-breadcrumbs_8.cjs.entry.js → limel-breadcrumbs_6.cjs.entry.js} +221 -2175
- package/dist/cjs/limel-callout.cjs.entry.js +1 -1
- package/dist/cjs/limel-chart.cjs.entry.js +1 -1
- package/dist/cjs/limel-chip-set.cjs.entry.js +1 -1
- package/dist/cjs/limel-chip_2.cjs.entry.js +1 -1
- package/dist/cjs/limel-code-diff.cjs.entry.js +1 -1
- package/dist/cjs/limel-code-editor.cjs.entry.js +1 -1
- package/dist/cjs/limel-collapsible-section.cjs.entry.js +1 -1
- package/dist/cjs/limel-drag-handle.cjs.entry.js +1 -1
- package/dist/cjs/limel-email-viewer.cjs.entry.js +1 -1
- package/dist/cjs/limel-file-viewer.cjs.entry.js +1 -1
- package/dist/cjs/limel-file.cjs.entry.js +1 -1
- package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js +1 -1
- package/dist/cjs/limel-helper-line_3.cjs.entry.js +454 -0
- package/dist/cjs/limel-list-item.cjs.entry.js +1 -1
- package/dist/cjs/limel-pagination-jump.cjs.entry.js +182 -0
- package/dist/cjs/limel-pagination.cjs.entry.js +165 -126
- package/dist/cjs/limel-picker.cjs.entry.js +1 -1
- package/dist/cjs/limel-popover_2.cjs.entry.js +33 -25
- package/dist/cjs/limel-profile-picture.cjs.entry.js +1 -1
- package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +1 -1
- package/dist/cjs/limel-slider.cjs.entry.js +1 -1
- package/dist/cjs/limel-snackbar.cjs.entry.js +1 -1
- package/dist/cjs/limel-table.cjs.entry.js +1 -1
- package/dist/cjs/limel-text-editor-link-menu.cjs.entry.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/pagination.util-B5zzH8vg.js +135 -0
- package/dist/cjs/{translations-C5T2-_rH.js → translations-DFFpR6AZ.js} +32 -0
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/menu/menu.js +44 -22
- package/dist/collection/components/pagination/jump/pagination-jump.css +11 -0
- package/dist/collection/components/pagination/jump/pagination-jump.js +331 -0
- package/dist/collection/components/pagination/pagination.css +8 -4
- package/dist/collection/components/pagination/pagination.js +167 -10
- package/dist/collection/components/pagination/pagination.util.js +25 -8
- package/dist/collection/components/popover/popover.js +33 -25
- package/dist/collection/translations/da.js +4 -0
- package/dist/collection/translations/de.js +4 -0
- package/dist/collection/translations/en.js +4 -0
- package/dist/collection/translations/fi.js +4 -0
- package/dist/collection/translations/fr.js +4 -0
- package/dist/collection/translations/nl.js +4 -0
- package/dist/collection/translations/no.js +4 -0
- package/dist/collection/translations/sv.js +4 -0
- package/dist/esm/component-B2Vy44Z3.js +1570 -0
- package/dist/esm/lime-elements.js +1 -1
- package/dist/esm/limel-action-bar_3.entry.js +1 -1
- package/dist/esm/limel-ai-avatar.entry.js +1 -1
- package/dist/esm/{limel-breadcrumbs_8.entry.js → limel-breadcrumbs_6.entry.js} +47 -1999
- package/dist/esm/limel-callout.entry.js +1 -1
- package/dist/esm/limel-chart.entry.js +1 -1
- package/dist/esm/limel-chip-set.entry.js +1 -1
- package/dist/esm/limel-chip_2.entry.js +1 -1
- package/dist/esm/limel-code-diff.entry.js +1 -1
- package/dist/esm/limel-code-editor.entry.js +1 -1
- package/dist/esm/limel-collapsible-section.entry.js +1 -1
- package/dist/esm/limel-drag-handle.entry.js +1 -1
- package/dist/esm/limel-email-viewer.entry.js +1 -1
- package/dist/esm/limel-file-viewer.entry.js +1 -1
- package/dist/esm/limel-file.entry.js +1 -1
- package/dist/esm/limel-flatpickr-adapter.entry.js +1 -1
- package/dist/esm/limel-helper-line_3.entry.js +450 -0
- package/dist/esm/limel-list-item.entry.js +1 -1
- package/dist/esm/limel-pagination-jump.entry.js +180 -0
- package/dist/esm/limel-pagination.entry.js +165 -126
- package/dist/esm/limel-picker.entry.js +1 -1
- package/dist/esm/limel-popover_2.entry.js +33 -25
- package/dist/esm/limel-profile-picture.entry.js +1 -1
- package/dist/esm/limel-prosemirror-adapter.entry.js +1 -1
- package/dist/esm/limel-slider.entry.js +1 -1
- package/dist/esm/limel-snackbar.entry.js +1 -1
- package/dist/esm/limel-table.entry.js +1 -1
- package/dist/esm/limel-text-editor-link-menu.entry.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/pagination.util-CSC2LJ7P.js +132 -0
- package/dist/esm/{translations-Bwm2y2E4.js → translations-DMtX4tTX.js} +32 -0
- package/dist/lime-elements/lime-elements.esm.js +1 -1
- package/dist/lime-elements/{p-2bbdac10.entry.js → p-11a96a8c.entry.js} +1 -1
- package/dist/lime-elements/p-1dd86ad4.entry.js +1 -0
- package/dist/lime-elements/p-1e93473a.entry.js +1 -0
- package/dist/lime-elements/{p-a41b5ff3.entry.js → p-2e568c56.entry.js} +1 -1
- package/dist/lime-elements/{p-de631fc3.entry.js → p-2f57c3fa.entry.js} +1 -1
- package/dist/lime-elements/p-3735111e.entry.js +1 -0
- package/dist/lime-elements/{p-c823054d.entry.js → p-452b9b01.entry.js} +1 -1
- package/dist/lime-elements/{p-f333f12d.entry.js → p-4855dc9b.entry.js} +1 -1
- package/dist/lime-elements/{p-a462aeb7.entry.js → p-4902fb3f.entry.js} +1 -1
- package/dist/lime-elements/p-507cc8a1.entry.js +159 -0
- package/dist/lime-elements/{p-dadd2e17.entry.js → p-531b6a64.entry.js} +1 -1
- package/dist/lime-elements/{p-b194a212.entry.js → p-5698e493.entry.js} +1 -1
- package/dist/lime-elements/{p-65a9adfc.entry.js → p-67f02b69.entry.js} +1 -1
- package/dist/lime-elements/{p-1162dd39.entry.js → p-867681aa.entry.js} +1 -1
- package/dist/lime-elements/{p-f72ee01b.entry.js → p-90df3e1b.entry.js} +1 -1
- package/dist/lime-elements/{p-22f85b99.entry.js → p-955292eb.entry.js} +1 -1
- package/dist/lime-elements/{p-c2ff132c.entry.js → p-9b631363.entry.js} +1 -1
- package/dist/lime-elements/{p-8af3e4a1.entry.js → p-9d3437ac.entry.js} +1 -1
- package/dist/lime-elements/p-B8hoCfhT.js +1 -0
- package/dist/lime-elements/p-BwJGg-WI.js +89 -0
- package/dist/lime-elements/p-CSC2LJ7P.js +1 -0
- package/dist/lime-elements/p-a1de9bbe.entry.js +1 -0
- package/dist/lime-elements/{p-b5484494.entry.js → p-acba5700.entry.js} +1 -1
- package/dist/lime-elements/{p-f6361b03.entry.js → p-b8c76487.entry.js} +1 -1
- package/dist/lime-elements/{p-ac9c5c88.entry.js → p-cafec335.entry.js} +1 -1
- package/dist/lime-elements/{p-48928b4f.entry.js → p-d146feda.entry.js} +1 -1
- package/dist/lime-elements/{p-532ea234.entry.js → p-deceda00.entry.js} +1 -1
- package/dist/lime-elements/{p-e508771f.entry.js → p-f04f7c8e.entry.js} +1 -1
- package/dist/lime-elements/{p-51dc5f0b.entry.js → p-f3c108c9.entry.js} +1 -1
- package/dist/lime-elements/{p-24041bbb.entry.js → p-fbcd99a3.entry.js} +1 -1
- package/dist/types/components/menu/menu.d.ts +11 -0
- package/dist/types/components/pagination/jump/pagination-jump.d.ts +102 -0
- package/dist/types/components/pagination/pagination.d.ts +81 -0
- package/dist/types/components/pagination/pagination.util.d.ts +12 -2
- package/dist/types/components/popover/popover.d.ts +8 -1
- package/dist/types/components.d.ts +145 -0
- package/dist/types/translations/da.d.ts +4 -0
- package/dist/types/translations/de.d.ts +4 -0
- package/dist/types/translations/en.d.ts +4 -0
- package/dist/types/translations/fi.d.ts +4 -0
- package/dist/types/translations/fr.d.ts +4 -0
- package/dist/types/translations/nl.d.ts +4 -0
- package/dist/types/translations/no.d.ts +4 -0
- package/dist/types/translations/sv.d.ts +4 -0
- package/package.json +1 -1
- package/dist/cjs/limel-helper-line.cjs.entry.js +0 -42
- package/dist/esm/limel-helper-line.entry.js +0 -40
- package/dist/lime-elements/p-1a478498.entry.js +0 -248
- package/dist/lime-elements/p-4c65dee7.entry.js +0 -1
- package/dist/lime-elements/p-DAFuhe5e.js +0 -1
- package/dist/lime-elements/p-b4988a9b.entry.js +0 -1
- package/dist/lime-elements/p-f81dc23a.entry.js +0 -1
|
@@ -84,6 +84,7 @@ export class Menu {
|
|
|
84
84
|
this.keepOpenOnSelect = false;
|
|
85
85
|
this.shouldRestoreFocusOnClose = false;
|
|
86
86
|
this.normalizedHotkeyCache = new Map();
|
|
87
|
+
this.triggersDisabledByMenu = new WeakSet();
|
|
87
88
|
this.cachedSubMenuSource = null;
|
|
88
89
|
this.cachedSubMenuItems = null;
|
|
89
90
|
this.handleDocumentKeyDown = (event) => {
|
|
@@ -363,20 +364,32 @@ export class Menu {
|
|
|
363
364
|
this.handleSelect(parent);
|
|
364
365
|
};
|
|
365
366
|
this.setTriggerAttributes = (element) => {
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
367
|
+
element.setAttribute('aria-haspopup', 'true');
|
|
368
|
+
element.setAttribute('aria-controls', this.portalId);
|
|
369
|
+
element.setAttribute('role', 'button');
|
|
370
|
+
// `aria-expanded` is needed even when the menu is closed. Without
|
|
371
|
+
// it, the trigger reads as an ordinary button to a screen reader.
|
|
372
|
+
element.setAttribute('aria-expanded', String(this.open));
|
|
373
|
+
this.setTriggerDisabled(element);
|
|
374
|
+
};
|
|
375
|
+
/**
|
|
376
|
+
* `disabled` has to be removed rather than set to `false`, because the
|
|
377
|
+
* presence of the attribute is what disables the element. Only the one the
|
|
378
|
+
* menu put there may go: a consumer can disable their own trigger, and
|
|
379
|
+
* stripping that attribute would re-enable it on every render.
|
|
380
|
+
* @param element - the slotted trigger element
|
|
381
|
+
*/
|
|
382
|
+
this.setTriggerDisabled = (element) => {
|
|
383
|
+
if (this.disabled) {
|
|
384
|
+
if (!element.hasAttribute('disabled')) {
|
|
385
|
+
element.setAttribute('disabled', 'true');
|
|
386
|
+
this.triggersDisabledByMenu.add(element);
|
|
379
387
|
}
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
390
|
+
if (this.triggersDisabledByMenu.has(element)) {
|
|
391
|
+
element.removeAttribute('disabled');
|
|
392
|
+
this.triggersDisabledByMenu.delete(element);
|
|
380
393
|
}
|
|
381
394
|
};
|
|
382
395
|
this.onClose = () => {
|
|
@@ -579,7 +592,7 @@ export class Menu {
|
|
|
579
592
|
const cssProperties = this.getCssProperties();
|
|
580
593
|
const dropdownZIndex = getComputedStyle(this.host).getPropertyValue('--dropdown-z-index');
|
|
581
594
|
const menuSurfaceWidth = this.getMenuSurfaceWidth(cssProperties['--menu-surface-width']);
|
|
582
|
-
return (h("div", { key: '
|
|
595
|
+
return (h("div", { key: 'c66307a5cc7257e2b394f0b5d56d6fbc6fce18b1', class: "mdc-menu-surface--anchor", onClick: this.onTriggerClick }, h("slot", { key: '7c37448e29deaee202f74d3288d21697529c82b5', ref: this.setTriggerRef, name: "trigger" }), this.renderNotificationBadge(), h("limel-portal", { key: 'f7f1b14ae5c6e19fa8e9651c2a847db0bb246427', visible: this.open, containerId: this.portalId, openDirection: this.openDirection, position: "absolute", containerStyle: { 'z-index': dropdownZIndex } }, h("limel-menu-surface", { key: 'c2fd7257bfe8ccf820b8aabc6a8959f6d5d1cd2f', open: this.open, onDismiss: this.onClose, style: Object.assign(Object.assign({}, cssProperties), { '--menu-surface-width': menuSurfaceWidth, '--limel-menu-surface-display': 'flex', '--limel-menu-surface-flex-direction': 'column' }), class: {
|
|
583
596
|
'has-grid-layout': this.gridLayout,
|
|
584
597
|
} }, this.renderSearchField(), this.renderBreadcrumb(), this.renderLoader(), this.renderEmptyMessage(), this.renderMenuList()))));
|
|
585
598
|
}
|
|
@@ -589,24 +602,33 @@ export class Menu {
|
|
|
589
602
|
this.setFocus();
|
|
590
603
|
}
|
|
591
604
|
connectedCallback() {
|
|
592
|
-
|
|
593
|
-
document.addEventListener('keydown', this.handleDocumentKeyDown, true);
|
|
594
|
-
}
|
|
605
|
+
this.setupGlobalHandlers();
|
|
595
606
|
}
|
|
596
607
|
disconnectedCallback() {
|
|
597
|
-
|
|
608
|
+
this.teardownGlobalHandlers();
|
|
598
609
|
}
|
|
599
610
|
openWatcher(newValue) {
|
|
600
|
-
|
|
601
|
-
if (
|
|
602
|
-
document.addEventListener('keydown', this.handleDocumentKeyDown, true);
|
|
611
|
+
this.setupGlobalHandlers();
|
|
612
|
+
if (newValue) {
|
|
603
613
|
this.setFocus();
|
|
604
614
|
}
|
|
605
615
|
else {
|
|
606
|
-
document.removeEventListener('keydown', this.handleDocumentKeyDown, true);
|
|
607
616
|
this.clearSearch();
|
|
608
617
|
}
|
|
609
618
|
}
|
|
619
|
+
setupGlobalHandlers() {
|
|
620
|
+
// Stencil keeps firing `@Watch` on a detached instance, so `open` can
|
|
621
|
+
// still flip after `disconnectedCallback` has run. Listening then
|
|
622
|
+
// would leave a listener behind that no disconnect takes down.
|
|
623
|
+
if (!this.open || !this.host.isConnected) {
|
|
624
|
+
this.teardownGlobalHandlers();
|
|
625
|
+
return;
|
|
626
|
+
}
|
|
627
|
+
document.addEventListener('keydown', this.handleDocumentKeyDown, true);
|
|
628
|
+
}
|
|
629
|
+
teardownGlobalHandlers() {
|
|
630
|
+
document.removeEventListener('keydown', this.handleDocumentKeyDown, true);
|
|
631
|
+
}
|
|
610
632
|
isFromTextInput(event) {
|
|
611
633
|
const path = typeof event.composedPath === 'function'
|
|
612
634
|
? event.composedPath()
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
import { h, Host, } from "@stencil/core";
|
|
2
|
+
import translate from "../../../global/translations";
|
|
3
|
+
import { ENTER } from "../../../util/keycodes";
|
|
4
|
+
import { pageFromInput } from "../pagination.util";
|
|
5
|
+
const FIRST_PAGE = 1;
|
|
6
|
+
const FALLBACK_LANGUAGE = 'en';
|
|
7
|
+
/**
|
|
8
|
+
* A field for going straight to a page, which `limel-pagination` puts inside
|
|
9
|
+
* the popover its `···` opens.
|
|
10
|
+
*
|
|
11
|
+
* It draws nothing until it is opened, so a pagination that is merely on
|
|
12
|
+
* screen pays for an empty element rather than a form. It lives in a
|
|
13
|
+
* component of its own because the popover carries its content into a shadow
|
|
14
|
+
* root elsewhere on the page, where a parent's stylesheet cannot reach it —
|
|
15
|
+
* a component brings its own.
|
|
16
|
+
*
|
|
17
|
+
* @private
|
|
18
|
+
* @exampleComponent limel-example-pagination-jump-basic
|
|
19
|
+
*/
|
|
20
|
+
export class PaginationJump {
|
|
21
|
+
constructor() {
|
|
22
|
+
/**
|
|
23
|
+
* Whether the field is being shown.
|
|
24
|
+
*/
|
|
25
|
+
this.open = false;
|
|
26
|
+
/**
|
|
27
|
+
* The page to start from, which is the one the user is on.
|
|
28
|
+
*/
|
|
29
|
+
this.page = FIRST_PAGE;
|
|
30
|
+
/**
|
|
31
|
+
* How many pages there are, which is as far as a jump can go.
|
|
32
|
+
*/
|
|
33
|
+
this.pageCount = FIRST_PAGE;
|
|
34
|
+
/**
|
|
35
|
+
* Set while a page is being fetched, so that another cannot be asked for.
|
|
36
|
+
*/
|
|
37
|
+
this.loading = false;
|
|
38
|
+
/**
|
|
39
|
+
* The language used for the labels and for the way numbers are written.
|
|
40
|
+
*/
|
|
41
|
+
this.language = 'en';
|
|
42
|
+
/** What the field shows: the page it opened with, then what is typed. */
|
|
43
|
+
this.value = '';
|
|
44
|
+
this.shouldFocusField = false;
|
|
45
|
+
/**
|
|
46
|
+
* Only to keep what is on screen honest. `limel-input-field` draws an
|
|
47
|
+
* unfocused number through its `value` prop, so a field left pinned to
|
|
48
|
+
* the page it opened with would show that again the moment the keyboard
|
|
49
|
+
* moved to the button, while the button submitted something else.
|
|
50
|
+
*
|
|
51
|
+
* @param event - the field reporting what it now holds
|
|
52
|
+
*/
|
|
53
|
+
this.handleChange = (event) => {
|
|
54
|
+
var _a;
|
|
55
|
+
event.stopPropagation();
|
|
56
|
+
this.value = String((_a = event.detail) !== null && _a !== void 0 ? _a : '');
|
|
57
|
+
};
|
|
58
|
+
this.handleKeyDown = (event) => {
|
|
59
|
+
if (event.key !== ENTER) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
event.preventDefault();
|
|
63
|
+
this.commit();
|
|
64
|
+
};
|
|
65
|
+
this.commit = () => {
|
|
66
|
+
const page = this.target;
|
|
67
|
+
if (page === null || this.loading) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
this.jump.emit(page);
|
|
71
|
+
};
|
|
72
|
+
this.setField = (element) => {
|
|
73
|
+
this.field = element;
|
|
74
|
+
};
|
|
75
|
+
this.translate = (key, params) => {
|
|
76
|
+
return translate.get(key, this.language, params);
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
componentWillLoad() {
|
|
80
|
+
this.handleOpenChange();
|
|
81
|
+
}
|
|
82
|
+
handleLanguageChange() {
|
|
83
|
+
this.numberFormat = undefined;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Opening starts the field again rather than leaving what was last typed,
|
|
87
|
+
* so it always offers the page the user is on now.
|
|
88
|
+
*/
|
|
89
|
+
handleOpenChange() {
|
|
90
|
+
if (!this.open) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
this.value = String(this.page);
|
|
94
|
+
this.shouldFocusField = true;
|
|
95
|
+
}
|
|
96
|
+
componentDidRender() {
|
|
97
|
+
if (!this.shouldFocusField) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
this.shouldFocusField = false;
|
|
101
|
+
this.focusField();
|
|
102
|
+
}
|
|
103
|
+
render() {
|
|
104
|
+
if (!this.open) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
return (h(Host, { onKeyDown: this.handleKeyDown }, h("limel-input-field", { type: "number", label: this.translate('pagination.page-number'), placeholder: this.pageRange, value: this.value, onChange: this.handleChange, min: FIRST_PAGE, max: this.pageCount, step: 1, ref: this.setField }), h("limel-button", { primary: true, label: this.translate('pagination.go'), disabled: this.loading, onClick: this.commit })));
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* The page that is in the field now, or `null` when it holds none.
|
|
111
|
+
*
|
|
112
|
+
* Read from the field itself rather than from its `change` event, which
|
|
113
|
+
* arrives on a debounce: a page typed and submitted inside that window
|
|
114
|
+
* would otherwise be submitted as whatever preceded it.
|
|
115
|
+
*/
|
|
116
|
+
get target() {
|
|
117
|
+
var _a, _b;
|
|
118
|
+
const typed = (_b = (_a = this.nativeField) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : this.value;
|
|
119
|
+
return pageFromInput(typed, this.pageCount);
|
|
120
|
+
}
|
|
121
|
+
/** `1–492`, so that being moved to 492 is a stated bound, not a surprise. */
|
|
122
|
+
get pageRange() {
|
|
123
|
+
return this.translate('pagination.page-range', {
|
|
124
|
+
first: this.formatNumber(FIRST_PAGE),
|
|
125
|
+
last: this.formatNumber(this.pageCount),
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
/** `limel-input-field` wraps a native field but does not expose it. */
|
|
129
|
+
get nativeField() {
|
|
130
|
+
var _a, _b;
|
|
131
|
+
return (_b = (_a = this.field) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('input');
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* The field delegates focus to the input it wraps, so focusing the host
|
|
135
|
+
* is enough. Selecting as well, so the page the user is on is both the
|
|
136
|
+
* starting value and out of the way of the first keystroke.
|
|
137
|
+
*/
|
|
138
|
+
focusField() {
|
|
139
|
+
const host = this.field;
|
|
140
|
+
host === null || host === void 0 ? void 0 : host.componentOnReady().then(() => {
|
|
141
|
+
// A frame later, so the popover has been put where it belongs
|
|
142
|
+
// before the field takes the keyboard.
|
|
143
|
+
requestAnimationFrame(() => {
|
|
144
|
+
var _a, _b;
|
|
145
|
+
host.focus();
|
|
146
|
+
(_b = (_a = host.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('input')) === null || _b === void 0 ? void 0 : _b.select();
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* The parent warns about a language it cannot use, so this one only has
|
|
152
|
+
* to keep drawing.
|
|
153
|
+
*
|
|
154
|
+
* @param value - the number to write out
|
|
155
|
+
* @returns the number in the current language
|
|
156
|
+
*/
|
|
157
|
+
formatNumber(value) {
|
|
158
|
+
var _a;
|
|
159
|
+
(_a = this.numberFormat) !== null && _a !== void 0 ? _a : (this.numberFormat = this.createNumberFormat());
|
|
160
|
+
return this.numberFormat.format(value);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* The pagination hands down the language it settled on, so this only has
|
|
164
|
+
* to survive being handed one directly, as the example page does.
|
|
165
|
+
*
|
|
166
|
+
* @returns a formatter, in that language where it can be used
|
|
167
|
+
*/
|
|
168
|
+
createNumberFormat() {
|
|
169
|
+
try {
|
|
170
|
+
return new Intl.NumberFormat(this.language);
|
|
171
|
+
}
|
|
172
|
+
catch (_a) {
|
|
173
|
+
return new Intl.NumberFormat(FALLBACK_LANGUAGE);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
static get is() { return "limel-pagination-jump"; }
|
|
177
|
+
static get encapsulation() { return "shadow"; }
|
|
178
|
+
static get originalStyleUrls() {
|
|
179
|
+
return {
|
|
180
|
+
"$": ["pagination-jump.scss"]
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
static get styleUrls() {
|
|
184
|
+
return {
|
|
185
|
+
"$": ["pagination-jump.css"]
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
static get properties() {
|
|
189
|
+
return {
|
|
190
|
+
"open": {
|
|
191
|
+
"type": "boolean",
|
|
192
|
+
"mutable": false,
|
|
193
|
+
"complexType": {
|
|
194
|
+
"original": "boolean",
|
|
195
|
+
"resolved": "boolean",
|
|
196
|
+
"references": {}
|
|
197
|
+
},
|
|
198
|
+
"required": false,
|
|
199
|
+
"optional": false,
|
|
200
|
+
"docs": {
|
|
201
|
+
"tags": [],
|
|
202
|
+
"text": "Whether the field is being shown."
|
|
203
|
+
},
|
|
204
|
+
"getter": false,
|
|
205
|
+
"setter": false,
|
|
206
|
+
"reflect": true,
|
|
207
|
+
"attribute": "open",
|
|
208
|
+
"defaultValue": "false"
|
|
209
|
+
},
|
|
210
|
+
"page": {
|
|
211
|
+
"type": "number",
|
|
212
|
+
"mutable": false,
|
|
213
|
+
"complexType": {
|
|
214
|
+
"original": "number",
|
|
215
|
+
"resolved": "number",
|
|
216
|
+
"references": {}
|
|
217
|
+
},
|
|
218
|
+
"required": false,
|
|
219
|
+
"optional": false,
|
|
220
|
+
"docs": {
|
|
221
|
+
"tags": [],
|
|
222
|
+
"text": "The page to start from, which is the one the user is on."
|
|
223
|
+
},
|
|
224
|
+
"getter": false,
|
|
225
|
+
"setter": false,
|
|
226
|
+
"reflect": false,
|
|
227
|
+
"attribute": "page",
|
|
228
|
+
"defaultValue": "1"
|
|
229
|
+
},
|
|
230
|
+
"pageCount": {
|
|
231
|
+
"type": "number",
|
|
232
|
+
"mutable": false,
|
|
233
|
+
"complexType": {
|
|
234
|
+
"original": "number",
|
|
235
|
+
"resolved": "number",
|
|
236
|
+
"references": {}
|
|
237
|
+
},
|
|
238
|
+
"required": false,
|
|
239
|
+
"optional": false,
|
|
240
|
+
"docs": {
|
|
241
|
+
"tags": [],
|
|
242
|
+
"text": "How many pages there are, which is as far as a jump can go."
|
|
243
|
+
},
|
|
244
|
+
"getter": false,
|
|
245
|
+
"setter": false,
|
|
246
|
+
"reflect": false,
|
|
247
|
+
"attribute": "page-count",
|
|
248
|
+
"defaultValue": "1"
|
|
249
|
+
},
|
|
250
|
+
"loading": {
|
|
251
|
+
"type": "boolean",
|
|
252
|
+
"mutable": false,
|
|
253
|
+
"complexType": {
|
|
254
|
+
"original": "boolean",
|
|
255
|
+
"resolved": "boolean",
|
|
256
|
+
"references": {}
|
|
257
|
+
},
|
|
258
|
+
"required": false,
|
|
259
|
+
"optional": false,
|
|
260
|
+
"docs": {
|
|
261
|
+
"tags": [],
|
|
262
|
+
"text": "Set while a page is being fetched, so that another cannot be asked for."
|
|
263
|
+
},
|
|
264
|
+
"getter": false,
|
|
265
|
+
"setter": false,
|
|
266
|
+
"reflect": false,
|
|
267
|
+
"attribute": "loading",
|
|
268
|
+
"defaultValue": "false"
|
|
269
|
+
},
|
|
270
|
+
"language": {
|
|
271
|
+
"type": "string",
|
|
272
|
+
"mutable": false,
|
|
273
|
+
"complexType": {
|
|
274
|
+
"original": "Languages",
|
|
275
|
+
"resolved": "\"da\" | \"de\" | \"en\" | \"fi\" | \"fr\" | \"nb\" | \"nl\" | \"no\" | \"sv\"",
|
|
276
|
+
"references": {
|
|
277
|
+
"Languages": {
|
|
278
|
+
"location": "import",
|
|
279
|
+
"path": "../../date-picker/date.types",
|
|
280
|
+
"id": "src/components/date-picker/date.types.ts::Languages",
|
|
281
|
+
"referenceLocation": "Languages"
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
},
|
|
285
|
+
"required": false,
|
|
286
|
+
"optional": false,
|
|
287
|
+
"docs": {
|
|
288
|
+
"tags": [],
|
|
289
|
+
"text": "The language used for the labels and for the way numbers are written."
|
|
290
|
+
},
|
|
291
|
+
"getter": false,
|
|
292
|
+
"setter": false,
|
|
293
|
+
"reflect": false,
|
|
294
|
+
"attribute": "language",
|
|
295
|
+
"defaultValue": "'en'"
|
|
296
|
+
}
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
static get states() {
|
|
300
|
+
return {
|
|
301
|
+
"value": {}
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
static get events() {
|
|
305
|
+
return [{
|
|
306
|
+
"method": "jump",
|
|
307
|
+
"name": "jump",
|
|
308
|
+
"bubbles": true,
|
|
309
|
+
"cancelable": true,
|
|
310
|
+
"composed": true,
|
|
311
|
+
"docs": {
|
|
312
|
+
"tags": [],
|
|
313
|
+
"text": "Asks for the page that was typed, already brought within the set."
|
|
314
|
+
},
|
|
315
|
+
"complexType": {
|
|
316
|
+
"original": "number",
|
|
317
|
+
"resolved": "number",
|
|
318
|
+
"references": {}
|
|
319
|
+
}
|
|
320
|
+
}];
|
|
321
|
+
}
|
|
322
|
+
static get watchers() {
|
|
323
|
+
return [{
|
|
324
|
+
"propName": "language",
|
|
325
|
+
"methodName": "handleLanguageChange"
|
|
326
|
+
}, {
|
|
327
|
+
"propName": "open",
|
|
328
|
+
"methodName": "handleOpenChange"
|
|
329
|
+
}];
|
|
330
|
+
}
|
|
331
|
+
}
|
|
@@ -186,14 +186,18 @@ button limel-spinner {
|
|
|
186
186
|
pointer-events: none;
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
-
|
|
189
|
+
limel-popover {
|
|
190
190
|
display: inline-flex;
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.gap {
|
|
194
194
|
width: 1.75rem;
|
|
195
|
+
padding: 0;
|
|
195
196
|
color: rgb(var(--contrast-1100));
|
|
196
197
|
}
|
|
198
|
+
.gap[aria-expanded=true] {
|
|
199
|
+
box-shadow: var(--button-shadow-inset-pressed) !important;
|
|
200
|
+
}
|
|
197
201
|
|
|
198
202
|
.arrow span {
|
|
199
203
|
display: block;
|