@aquera/nile-elements 0.1.50-beta-1.0 → 0.1.50
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/README.md +4 -4
- package/demo/index.html +33 -150
- package/dist/axe.min-2720cd56.esm.js +1 -0
- package/dist/axe.min-69d47269.cjs.js +2 -0
- package/dist/axe.min-69d47269.cjs.js.map +1 -0
- package/dist/{fixture-372df3b0.esm.js → fixture-e7023246.esm.js} +1 -1
- package/dist/{fixture-161dee0b.cjs.js → fixture-fe6c932e.cjs.js} +2 -2
- package/dist/fixture-fe6c932e.cjs.js.map +1 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +10339 -0
- package/dist/internal/form.cjs.js +1 -1
- package/dist/internal/form.cjs.js.map +1 -1
- package/dist/internal/form.esm.js +1 -1
- package/dist/nile-accordion/nile-accordian.test.cjs.js +1 -1
- package/dist/nile-accordion/nile-accordian.test.esm.js +1 -1
- package/dist/nile-auto-complete/index.cjs.js +1 -1
- package/dist/nile-auto-complete/index.esm.js +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.cjs.js +17 -1
- package/dist/nile-auto-complete/nile-auto-complete.cjs.js.map +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.esm.js +29 -8
- package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js.map +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.test.esm.js +1 -1
- package/dist/nile-avatar/nile-avatar.test.cjs.js +1 -1
- package/dist/nile-avatar/nile-avatar.test.esm.js +1 -1
- package/dist/nile-badge/nile-badge.test.cjs.js +1 -1
- package/dist/nile-badge/nile-badge.test.esm.js +1 -1
- package/dist/nile-button/nile-button.test.cjs.js +1 -1
- package/dist/nile-button/nile-button.test.esm.js +1 -1
- package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js +1 -1
- package/dist/nile-button-toggle-group/nile-button-toggle-group.test.esm.js +1 -1
- package/dist/nile-calendar/nile-calendar.test.cjs.js +1 -1
- package/dist/nile-calendar/nile-calendar.test.cjs.js.map +1 -1
- package/dist/nile-calendar/nile-calendar.test.esm.js +1 -1
- package/dist/nile-card/nile-card.test.cjs.js +1 -1
- package/dist/nile-card/nile-card.test.esm.js +1 -1
- package/dist/nile-checkbox/nile-checkbox.test.cjs.js +1 -1
- package/dist/nile-checkbox/nile-checkbox.test.esm.js +1 -1
- package/dist/nile-chip/nile-chip.cjs.js +1 -1
- package/dist/nile-chip/nile-chip.cjs.js.map +1 -1
- package/dist/nile-chip/nile-chip.esm.js +1 -0
- package/dist/nile-chip/nile-chip.test.cjs.js +1 -1
- package/dist/nile-chip/nile-chip.test.cjs.js.map +1 -1
- package/dist/nile-chip/nile-chip.test.esm.js +1 -1
- package/dist/nile-dialog/nile-dialog.test.cjs.js +1 -1
- package/dist/nile-dialog/nile-dialog.test.esm.js +1 -1
- package/dist/nile-drawer/nile-drawer.test.cjs.js +1 -1
- package/dist/nile-drawer/nile-drawer.test.esm.js +1 -1
- package/dist/nile-dropdown/nile-dropdown.test.cjs.js +1 -1
- package/dist/nile-dropdown/nile-dropdown.test.esm.js +1 -1
- package/dist/nile-empty-state/nile-empty-state.test.cjs.js +1 -1
- package/dist/nile-empty-state/nile-empty-state.test.esm.js +1 -1
- package/dist/nile-error-message/nile-error-message.test.cjs.js +1 -1
- package/dist/nile-error-message/nile-error-message.test.esm.js +1 -1
- package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js +1 -1
- package/dist/nile-filter-chip/nile-filter-chip.test.esm.js +1 -1
- package/dist/nile-form-group/nile-form-group.test.cjs.js +1 -1
- package/dist/nile-form-group/nile-form-group.test.esm.js +1 -1
- package/dist/nile-form-help-text/nile-form-help-text.test.cjs.js +1 -1
- package/dist/nile-form-help-text/nile-form-help-text.test.esm.js +1 -1
- package/dist/nile-hero/nile-hero.test.cjs.js +1 -1
- package/dist/nile-hero/nile-hero.test.esm.js +1 -1
- package/dist/nile-icon/nile-icon.test.cjs.js +1 -1
- package/dist/nile-icon/nile-icon.test.esm.js +1 -1
- package/dist/nile-input/nile-input.test.cjs.js +1 -1
- package/dist/nile-input/nile-input.test.esm.js +1 -1
- package/dist/nile-link/nile-link.test.cjs.js +1 -1
- package/dist/nile-link/nile-link.test.esm.js +1 -1
- package/dist/nile-loader/nile-loader.test.cjs.js +1 -1
- package/dist/nile-loader/nile-loader.test.esm.js +1 -1
- package/dist/nile-option/nile-option.cjs.js +1 -1
- package/dist/nile-option/nile-option.cjs.js.map +1 -1
- package/dist/nile-option/nile-option.css.cjs.js +1 -1
- package/dist/nile-option/nile-option.css.cjs.js.map +1 -1
- package/dist/nile-option/nile-option.css.esm.js +1 -1
- package/dist/nile-option/nile-option.esm.js +2 -2
- package/dist/nile-pagination/nile-pagination.cjs.js +1 -1
- package/dist/nile-pagination/nile-pagination.cjs.js.map +1 -1
- package/dist/nile-pagination/nile-pagination.css.cjs.js +1 -1
- package/dist/nile-pagination/nile-pagination.css.cjs.js.map +1 -1
- package/dist/nile-pagination/nile-pagination.css.esm.js +152 -39
- package/dist/nile-pagination/nile-pagination.esm.js +118 -29
- package/dist/nile-popover/nile-popover.test.cjs.js +1 -1
- package/dist/nile-popover/nile-popover.test.esm.js +1 -1
- package/dist/nile-popup/nile-popup.test.cjs.js +1 -1
- package/dist/nile-popup/nile-popup.test.esm.js +1 -1
- package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js +1 -1
- package/dist/nile-progress-bar/nile-progress-bar.test.esm.js +1 -1
- package/dist/nile-radio/nile-radio.test.cjs.js +1 -1
- package/dist/nile-radio/nile-radio.test.esm.js +1 -1
- package/dist/nile-radio-group/nile-radio-group.test.cjs.js +1 -1
- package/dist/nile-radio-group/nile-radio-group.test.esm.js +1 -1
- package/dist/nile-select/index.cjs.js +1 -1
- package/dist/nile-select/index.esm.js +1 -1
- package/dist/nile-select/nile-select.cjs.js +1 -1
- package/dist/nile-select/nile-select.cjs.js.map +1 -1
- package/dist/nile-select/nile-select.esm.js +2 -2
- package/dist/nile-select/nile-select.test.cjs.js +1 -1
- package/dist/nile-select/nile-select.test.cjs.js.map +1 -1
- package/dist/nile-select/nile-select.test.esm.js +2 -2
- package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js +1 -1
- package/dist/nile-slide-toggle/nile-slide-toggle.test.esm.js +1 -1
- package/dist/nile-tab-group/nile-tab-group.test.cjs.js +1 -1
- package/dist/nile-tab-group/nile-tab-group.test.esm.js +1 -1
- package/dist/nile-textarea/nile-textarea.test.cjs.js +1 -1
- package/dist/nile-textarea/nile-textarea.test.esm.js +1 -1
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.js +0 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal/form.js +2 -2
- package/dist/src/internal/form.js.map +1 -1
- package/dist/src/nile-chip/nile-chip.js +1 -0
- package/dist/src/nile-chip/nile-chip.js.map +1 -1
- package/dist/src/nile-option/nile-option.css.js +1 -1
- package/dist/src/nile-option/nile-option.css.js.map +1 -1
- package/dist/src/nile-option/nile-option.d.ts +1 -5
- package/dist/src/nile-option/nile-option.js +6 -21
- package/dist/src/nile-option/nile-option.js.map +1 -1
- package/dist/src/nile-pagination/nile-pagination.css.js +151 -38
- package/dist/src/nile-pagination/nile-pagination.css.js.map +1 -1
- package/dist/src/nile-pagination/nile-pagination.d.ts +3 -0
- package/dist/src/nile-pagination/nile-pagination.js +167 -40
- package/dist/src/nile-pagination/nile-pagination.js.map +1 -1
- package/dist/src/nile-select/nile-select.d.ts +2 -11
- package/dist/src/nile-select/nile-select.js +18 -37
- package/dist/src/nile-select/nile-select.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -1
- package/rollup.config.js +27 -39
- package/src/index.ts +1 -3
- package/src/internal/form.ts +2 -2
- package/src/nile-chip/nile-chip.ts +1 -0
- package/src/nile-option/nile-option.css.ts +1 -1
- package/src/nile-option/nile-option.ts +3 -17
- package/src/nile-pagination/nile-pagination.css.ts +151 -38
- package/src/nile-pagination/nile-pagination.ts +188 -46
- package/src/nile-select/nile-select.ts +9 -35
- package/vscode-html-custom-data.json +3 -230
- package/dist/axe.min-2b379f29.cjs.js +0 -12
- package/dist/axe.min-2b379f29.cjs.js.map +0 -1
- package/dist/axe.min-c2cd8733.esm.js +0 -12
- package/dist/fixture-161dee0b.cjs.js.map +0 -1
- package/dist/nile-select/virtual-scroll-helper.cjs.js +0 -2
- package/dist/nile-select/virtual-scroll-helper.cjs.js.map +0 -1
- package/dist/nile-select/virtual-scroll-helper.esm.js +0 -38
- package/dist/nile-virtual-select/index.cjs.js +0 -2
- package/dist/nile-virtual-select/index.cjs.js.map +0 -1
- package/dist/nile-virtual-select/index.esm.js +0 -1
- package/dist/nile-virtual-select/nile-virtual-select.cjs.js +0 -2
- package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +0 -1
- package/dist/nile-virtual-select/nile-virtual-select.css.cjs.js +0 -2
- package/dist/nile-virtual-select/nile-virtual-select.css.cjs.js.map +0 -1
- package/dist/nile-virtual-select/nile-virtual-select.css.esm.js +0 -467
- package/dist/nile-virtual-select/nile-virtual-select.esm.js +0 -227
- package/dist/nile-virtual-select/nile-virtual-select.test.cjs.js +0 -2
- package/dist/nile-virtual-select/nile-virtual-select.test.cjs.js.map +0 -1
- package/dist/nile-virtual-select/nile-virtual-select.test.esm.js +0 -49
- package/dist/nile-virtual-select/renderer.cjs.js +0 -2
- package/dist/nile-virtual-select/renderer.cjs.js.map +0 -1
- package/dist/nile-virtual-select/renderer.esm.js +0 -18
- package/dist/nile-virtual-select/search-manager.cjs.js +0 -2
- package/dist/nile-virtual-select/search-manager.cjs.js.map +0 -1
- package/dist/nile-virtual-select/search-manager.esm.js +0 -1
- package/dist/nile-virtual-select/selection-manager.cjs.js +0 -2
- package/dist/nile-virtual-select/selection-manager.cjs.js.map +0 -1
- package/dist/nile-virtual-select/selection-manager.esm.js +0 -1
- package/dist/nile-virtual-select/types.cjs.js +0 -2
- package/dist/nile-virtual-select/types.cjs.js.map +0 -1
- package/dist/nile-virtual-select/types.esm.js +0 -1
- package/dist/src/nile-select/virtual-scroll-helper.d.ts +0 -9
- package/dist/src/nile-select/virtual-scroll-helper.js +0 -51
- package/dist/src/nile-select/virtual-scroll-helper.js.map +0 -1
- package/dist/src/nile-virtual-select/index.d.ts +0 -1
- package/dist/src/nile-virtual-select/index.js +0 -2
- package/dist/src/nile-virtual-select/index.js.map +0 -1
- package/dist/src/nile-virtual-select/nile-virtual-select.css.d.ts +0 -12
- package/dist/src/nile-virtual-select/nile-virtual-select.css.js +0 -479
- package/dist/src/nile-virtual-select/nile-virtual-select.css.js.map +0 -1
- package/dist/src/nile-virtual-select/nile-virtual-select.d.ts +0 -263
- package/dist/src/nile-virtual-select/nile-virtual-select.js +0 -1183
- package/dist/src/nile-virtual-select/nile-virtual-select.js.map +0 -1
- package/dist/src/nile-virtual-select/nile-virtual-select.test.d.ts +0 -7
- package/dist/src/nile-virtual-select/nile-virtual-select.test.js +0 -341
- package/dist/src/nile-virtual-select/nile-virtual-select.test.js.map +0 -1
- package/dist/src/nile-virtual-select/renderer.d.ts +0 -11
- package/dist/src/nile-virtual-select/renderer.js +0 -51
- package/dist/src/nile-virtual-select/renderer.js.map +0 -1
- package/dist/src/nile-virtual-select/search-manager.d.ts +0 -12
- package/dist/src/nile-virtual-select/search-manager.js +0 -40
- package/dist/src/nile-virtual-select/search-manager.js.map +0 -1
- package/dist/src/nile-virtual-select/selection-manager.d.ts +0 -12
- package/dist/src/nile-virtual-select/selection-manager.js +0 -64
- package/dist/src/nile-virtual-select/selection-manager.js.map +0 -1
- package/dist/src/nile-virtual-select/types.d.ts +0 -50
- package/dist/src/nile-virtual-select/types.js +0 -8
- package/dist/src/nile-virtual-select/types.js.map +0 -1
- package/dist/virtualize-a4a40d96.esm.js +0 -22
- package/dist/virtualize-b6a2fbe0.cjs.js +0 -18
- package/dist/virtualize-b6a2fbe0.cjs.js.map +0 -1
- package/src/nile-select/virtual-scroll-helper.ts +0 -56
- package/src/nile-virtual-select/index.ts +0 -1
- package/src/nile-virtual-select/nile-virtual-select.css.ts +0 -481
- package/src/nile-virtual-select/nile-virtual-select.test.ts +0 -414
- package/src/nile-virtual-select/nile-virtual-select.ts +0 -1268
- package/src/nile-virtual-select/renderer.ts +0 -73
- package/src/nile-virtual-select/search-manager.ts +0 -50
- package/src/nile-virtual-select/selection-manager.ts +0 -75
- package/src/nile-virtual-select/types.ts +0 -54
@@ -4,6 +4,7 @@
|
|
4
4
|
* This source code is licensed under the BSD-3-Clause license found in the
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
6
6
|
*/
|
7
|
+
|
7
8
|
import { LitElement, html, CSSResultArray, TemplateResult } from 'lit';
|
8
9
|
import { customElement, property, query, state } from 'lit/decorators.js';
|
9
10
|
import { styles } from './nile-pagination.css';
|
@@ -21,33 +22,51 @@ export class NilePagination extends NileElement {
|
|
21
22
|
return [styles];
|
22
23
|
}
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
25
|
+
@property({attribute: 'totalitems',reflect: true,converter: {
|
26
|
+
fromAttribute: (v: string) => {
|
27
|
+
const n = Number(v);
|
28
|
+
return Number.isFinite(n) && n >= 0 ? Math.floor(n) : 0;
|
29
|
+
},
|
30
|
+
},
|
31
|
+
})totalItems: number = 0;
|
31
32
|
|
32
|
-
@property({attribute: '
|
33
|
+
@property({attribute: 'currentpage', reflect: true, converter: {
|
34
|
+
fromAttribute: (v: string) => {
|
33
35
|
const n = Number(v);
|
34
|
-
return Number.isFinite(n) && n >= 1 ? Math.floor(n) :
|
36
|
+
return Number.isFinite(n) && n >= 1 ? Math.floor(n) : 1;
|
37
|
+
},
|
38
|
+
},
|
39
|
+
})currentPage: number = 1;
|
35
40
|
|
41
|
+
@property({attribute: 'pagesize',reflect: true,converter: {
|
42
|
+
fromAttribute: (v: string) => {
|
43
|
+
const n = Number(v);
|
44
|
+
return Number.isFinite(n) && n >= 1 ? Math.floor(n) : 50;
|
45
|
+
},
|
46
|
+
},
|
47
|
+
})pageSize: number = 50;
|
36
48
|
|
37
|
-
@property({ attribute: 'pagesizeoptions', reflect: false,converter: { fromAttribute: (v: string) => {
|
49
|
+
@property({ attribute: 'pagesizeoptions', reflect: false, converter: { fromAttribute: (v: string) => {
|
50
|
+
try {
|
51
|
+
const arr = JSON.parse(v);
|
38
52
|
if (Array.isArray(arr) && arr.every(x => typeof x === 'number')) {
|
39
53
|
return arr as number[];
|
40
54
|
}
|
41
|
-
} catch {}
|
55
|
+
} catch {}
|
56
|
+
return [10, 25, 50, 100];
|
57
|
+
}}})
|
58
|
+
pageSizeOptions: number[] = [10, 25, 50, 100];
|
42
59
|
|
43
|
-
@property({ type: String })
|
60
|
+
@property({ type: String })variant: 'fluid' | 'compact' = 'fluid';
|
44
61
|
@property({ type: Boolean }) disabled = false;
|
45
62
|
@property({ type: Boolean }) showTitle = true;
|
46
63
|
|
47
64
|
@state() private _pageSizeOpen = false;
|
65
|
+
@state() private _pageOpen = false;
|
48
66
|
@query('.page-size-dropdown') private _pageSizeDropdown!: HTMLElement;
|
49
67
|
|
50
68
|
firstUpdated() {
|
69
|
+
if (this._pageSizeDropdown) {
|
51
70
|
this._pageSizeDropdown.addEventListener('nile-show', () => {
|
52
71
|
this._pageSizeOpen = true;
|
53
72
|
});
|
@@ -55,31 +74,49 @@ export class NilePagination extends NileElement {
|
|
55
74
|
this._pageSizeOpen = false;
|
56
75
|
});
|
57
76
|
}
|
58
|
-
|
77
|
+
}
|
78
|
+
|
59
79
|
private get totalPages(): number {
|
60
80
|
return Math.max(1, calculateTotalPages(this.totalItems, this.pageSize));
|
61
81
|
}
|
62
82
|
|
63
|
-
private goToPage(
|
83
|
+
private goToPage(newPage: number) {
|
84
|
+
|
64
85
|
if (this.disabled) return;
|
65
|
-
this.currentPage
|
66
|
-
this.
|
86
|
+
const previousPage = this.currentPage;
|
87
|
+
this.currentPage = newPage;
|
88
|
+
this.emit('nile-change', { page: newPage, previousPage, pageSize: this.pageSize });
|
67
89
|
}
|
68
90
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
91
|
+
private onPageSizeSelect(newSize: number) {
|
92
|
+
if (this.disabled || this.pageSize === newSize) return;
|
93
|
+
|
94
|
+
const previousPage = this.currentPage;
|
95
|
+
this.pageSize = newSize;
|
96
|
+
this.currentPage = 1;
|
97
|
+
this.emit('nile-change', {
|
98
|
+
page: 1,
|
99
|
+
previousPage,
|
100
|
+
pageSize: newSize
|
101
|
+
});
|
102
|
+
}
|
103
|
+
|
104
|
+
private renderCompactRangeText(): TemplateResult {
|
105
|
+
const full = getRangeText(this.totalItems, this.pageSize, this.currentPage);
|
106
|
+
const trimmed = full.replace(/^Showing\s*/, '');
|
107
|
+
return html`<div class="range-text">${trimmed}</div>`;
|
108
|
+
}
|
109
|
+
|
75
110
|
|
76
111
|
private renderRangeText(): TemplateResult {
|
77
112
|
if (this.totalItems === 0) {
|
78
113
|
return html`<div class="range-text">Showing 0 of 0</div>`;
|
79
114
|
}
|
80
|
-
return html
|
81
|
-
|
82
|
-
|
115
|
+
return html`
|
116
|
+
<div part="range-text" class="range-text">
|
117
|
+
${getRangeText(this.totalItems, this.pageSize, this.currentPage)}
|
118
|
+
</div>
|
119
|
+
`;
|
83
120
|
}
|
84
121
|
|
85
122
|
private renderPageSizeSelect(): TemplateResult | null {
|
@@ -87,13 +124,65 @@ export class NilePagination extends NileElement {
|
|
87
124
|
return html`
|
88
125
|
<div class="page-size-select">
|
89
126
|
<nile-dropdown class="page-size-dropdown" ?disabled=${this.disabled}>
|
90
|
-
<nile-button
|
127
|
+
<nile-button
|
128
|
+
slot="trigger"
|
129
|
+
variant="tertiary"
|
130
|
+
class="down ${this._pageSizeOpen ? 'open' : ''}"
|
91
131
|
?disabled=${this.disabled}
|
92
132
|
>
|
93
133
|
${this.pageSize}
|
94
|
-
<nile-icon
|
134
|
+
<nile-icon
|
135
|
+
name="chevrondown"
|
136
|
+
size="14"
|
137
|
+
color="var(--nile-colors-dark-500)"
|
138
|
+
class="chevron"
|
139
|
+
></nile-icon>
|
95
140
|
</nile-button>
|
96
|
-
<nile-menu
|
141
|
+
<nile-menu>
|
142
|
+
<div class="down-scroll-wrapper">
|
143
|
+
${this.pageSizeOptions.map(
|
144
|
+
size => html`
|
145
|
+
<nile-menu-item
|
146
|
+
?disabled=${this.disabled}
|
147
|
+
@click=${() => this.onPageSizeSelect(size)}
|
148
|
+
>
|
149
|
+
${size}
|
150
|
+
</nile-menu-item>
|
151
|
+
`
|
152
|
+
)}
|
153
|
+
</div>
|
154
|
+
</nile-menu>
|
155
|
+
</nile-dropdown>
|
156
|
+
<span part="pagesize-label" class="page-size-label">Items per page</span>
|
157
|
+
</div>
|
158
|
+
`;
|
159
|
+
}
|
160
|
+
|
161
|
+
|
162
|
+
private renderCompactPageSize(): TemplateResult {
|
163
|
+
return html`
|
164
|
+
<nile-dropdown
|
165
|
+
class="compact-dropdown"
|
166
|
+
?disabled=${this.disabled}
|
167
|
+
@nile-show=${() => (this._pageSizeOpen = true)}
|
168
|
+
@nile-after-hide=${() => (this._pageSizeOpen = false)}
|
169
|
+
>
|
170
|
+
<nile-button
|
171
|
+
slot="trigger"
|
172
|
+
variant="tertiary"
|
173
|
+
class="down ${this._pageSizeOpen ? 'open' : ''}"
|
174
|
+
?disabled=${this.disabled}
|
175
|
+
>
|
176
|
+
${this.pageSize}
|
177
|
+
<nile-icon
|
178
|
+
name="chevrondown"
|
179
|
+
size="14"
|
180
|
+
color="var(--nile-colors-dark-500)"
|
181
|
+
class="chevron"
|
182
|
+
></nile-icon>
|
183
|
+
</nile-button>
|
184
|
+
<nile-menu>
|
185
|
+
<div class="compact-scroll-wrapper">
|
97
186
|
${this.pageSizeOptions.map(
|
98
187
|
size => html`
|
99
188
|
<nile-menu-item
|
@@ -101,14 +190,15 @@ export class NilePagination extends NileElement {
|
|
101
190
|
@click=${() => this.onPageSizeSelect(size)}
|
102
191
|
>
|
103
192
|
${size}
|
104
|
-
</nile-menu-item
|
193
|
+
</nile-menu-item>
|
194
|
+
`
|
105
195
|
)}
|
106
|
-
</
|
107
|
-
</nile-
|
108
|
-
|
109
|
-
</div>
|
196
|
+
</div>
|
197
|
+
</nile-menu>
|
198
|
+
</nile-dropdown>
|
110
199
|
`;
|
111
200
|
}
|
201
|
+
|
112
202
|
|
113
203
|
private renderPrevButton(): TemplateResult {
|
114
204
|
return html`
|
@@ -164,7 +254,8 @@ export class NilePagination extends NileElement {
|
|
164
254
|
@click=${() => this.goToPage(page)}
|
165
255
|
>
|
166
256
|
${page}
|
167
|
-
</nile-menu-item
|
257
|
+
</nile-menu-item>
|
258
|
+
`
|
168
259
|
)}
|
169
260
|
</div>
|
170
261
|
</nile-menu>
|
@@ -172,7 +263,6 @@ export class NilePagination extends NileElement {
|
|
172
263
|
</li>
|
173
264
|
`;
|
174
265
|
}
|
175
|
-
|
176
266
|
return html`
|
177
267
|
<li>
|
178
268
|
<nile-button
|
@@ -187,10 +277,56 @@ export class NilePagination extends NileElement {
|
|
187
277
|
}
|
188
278
|
|
189
279
|
private renderPageList(): TemplateResult {
|
280
|
+
if (this.variant === 'compact') {
|
281
|
+
return html`
|
282
|
+
<nav aria-label="Pagination">
|
283
|
+
<ul class="pagination compact-pagination">
|
284
|
+
${this.renderPrevButton()}
|
285
|
+
<li>
|
286
|
+
<nile-dropdown
|
287
|
+
class="compact-dropdown1"
|
288
|
+
?disabled=${this.disabled}
|
289
|
+
@nile-show=${() => (this._pageOpen = true)}
|
290
|
+
@nile-after-hide=${() => (this._pageOpen = false)}
|
291
|
+
>
|
292
|
+
<nile-button
|
293
|
+
slot="trigger"
|
294
|
+
variant="tertiary"
|
295
|
+
class="current-page-btn ${this._pageOpen ? 'open' : ''}"
|
296
|
+
?disabled=${this.disabled}
|
297
|
+
>
|
298
|
+
${this.currentPage}
|
299
|
+
<nile-icon
|
300
|
+
name="chevrondown"
|
301
|
+
size="14"
|
302
|
+
class="chevron"
|
303
|
+
></nile-icon>
|
304
|
+
</nile-button>
|
305
|
+
<nile-menu>
|
306
|
+
<div class="compact-scroll-wrapper1">
|
307
|
+
${Array.from({ length: this.totalPages }, (_, i) => i + 1).map(
|
308
|
+
p => html`
|
309
|
+
<nile-menu-item
|
310
|
+
?disabled=${this.disabled}
|
311
|
+
@click=${() => this.goToPage(p)}
|
312
|
+
>
|
313
|
+
${p}
|
314
|
+
</nile-menu-item>
|
315
|
+
`
|
316
|
+
)}
|
317
|
+
</div>
|
318
|
+
</nile-menu>
|
319
|
+
</nile-dropdown>
|
320
|
+
</li>
|
321
|
+
${this.renderNextButton()}
|
322
|
+
</ul>
|
323
|
+
</nav>
|
324
|
+
`;
|
325
|
+
}
|
190
326
|
const items = getPaginationItems(this.totalPages, this.currentPage);
|
191
327
|
return html`
|
192
328
|
<nav aria-label="Pagination">
|
193
|
-
<ul class="pagination">
|
329
|
+
<ul part="page-list" class="pagination">
|
194
330
|
${this.renderPrevButton()}
|
195
331
|
${items.map((item, idx) => this.renderPageItem(item, idx, items))}
|
196
332
|
${this.renderNextButton()}
|
@@ -199,17 +335,23 @@ export class NilePagination extends NileElement {
|
|
199
335
|
`;
|
200
336
|
}
|
201
337
|
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
338
|
+
public render(): TemplateResult {
|
339
|
+
return html`
|
340
|
+
<div part="wrapper" class="pagination-wrapper ${this.variant}">
|
341
|
+
<div part="pager-container" class="pager-container">
|
342
|
+
${this.variant === 'fluid' && this.showTitle
|
343
|
+
? this.renderRangeText()
|
344
|
+
: this.variant === 'compact'
|
345
|
+
? this.renderCompactRangeText()
|
346
|
+
: null}
|
347
|
+
${this.variant === 'fluid'
|
348
|
+
? this.renderPageSizeSelect()
|
349
|
+
: this.renderCompactPageSize()}
|
210
350
|
</div>
|
211
|
-
|
212
|
-
|
351
|
+
${this.renderPageList()}
|
352
|
+
</div>
|
353
|
+
`;
|
354
|
+
}
|
213
355
|
}
|
214
356
|
|
215
357
|
declare global {
|
@@ -33,11 +33,8 @@ import type { CSSResultGroup, PropertyValues } from 'lit';
|
|
33
33
|
import type { NileFormControl } from '../internal/nile-element';
|
34
34
|
import type NileOption from '../nile-option/nile-option';
|
35
35
|
import type NilePopup from '../nile-popup/nile-popup';
|
36
|
-
import type { RenderItemConfig } from '../nile-virtual-select/types.js';
|
37
36
|
import { unsafeHTML } from 'lit/directives/unsafe-html.js';
|
38
37
|
import { ifDefined } from 'lit/directives/if-defined.js';
|
39
|
-
import '../nile-virtual-select/nile-virtual-select';
|
40
|
-
import { VirtualScrollHelper } from './virtual-scroll-helper';
|
41
38
|
|
42
39
|
type NileRemoveEvent = CustomEvent<Record<PropertyKey, never>>;
|
43
40
|
|
@@ -56,7 +53,6 @@ type NileRemoveEvent = CustomEvent<Record<PropertyKey, never>>;
|
|
56
53
|
* @dependency nile-icon
|
57
54
|
* @dependency nile-popup
|
58
55
|
* @dependency nile-tag
|
59
|
-
* @dependency nile-virtual-select
|
60
56
|
*
|
61
57
|
* @slot - The listbox options. Must be `<nile-option>` elements. You can use `<nile-divider>` to group items visually.
|
62
58
|
* @slot label - The input's label. Alternatively, you can use the `label` attribute.
|
@@ -95,15 +91,14 @@ type NileRemoveEvent = CustomEvent<Record<PropertyKey, never>>;
|
|
95
91
|
*/
|
96
92
|
|
97
93
|
@customElement('nile-select')
|
98
|
-
export class NileSelect extends NileElement implements NileFormControl{
|
94
|
+
export class NileSelect extends NileElement implements NileFormControl {
|
99
95
|
static styles: CSSResultGroup = styles;
|
100
96
|
|
101
97
|
// protected override BUBBLES=false;
|
102
98
|
|
103
|
-
private formControlController
|
104
|
-
|
105
|
-
|
106
|
-
|
99
|
+
private readonly formControlController = new FormControlController(this, {
|
100
|
+
assumeInteractionOn: ['nile-blur', 'nile-input'],
|
101
|
+
});
|
107
102
|
private readonly hasSlotController = new HasSlotController(
|
108
103
|
this,
|
109
104
|
'help-text',
|
@@ -237,13 +232,6 @@ export class NileSelect extends NileElement implements NileFormControl{
|
|
237
232
|
|
238
233
|
@property({ type: String }) noResultsMessage: string = 'No results found';
|
239
234
|
|
240
|
-
/** Enhanced configuration for rendering items with support for display text, value, and search text */
|
241
|
-
@property({ attribute: false }) renderItemConfig?: RenderItemConfig;
|
242
|
-
|
243
|
-
@property({ type: Array }) data: any = [];
|
244
|
-
|
245
|
-
@property({ type: Boolean }) enableVirtualScroll = false;
|
246
|
-
|
247
235
|
/** Gets the validity state object */
|
248
236
|
get validity() {
|
249
237
|
return this.valueInput?.validity;
|
@@ -254,18 +242,8 @@ export class NileSelect extends NileElement implements NileFormControl{
|
|
254
242
|
return this.valueInput?.validationMessage;
|
255
243
|
}
|
256
244
|
|
257
|
-
constructor() {
|
258
|
-
super();
|
259
|
-
}
|
260
|
-
|
261
245
|
connectedCallback() {
|
262
246
|
super.connectedCallback();
|
263
|
-
if(!this.enableVirtualScroll) {
|
264
|
-
this.formControlController = new FormControlController(this, {
|
265
|
-
assumeInteractionOn: ['nile-blur', 'nile-input'],
|
266
|
-
});
|
267
|
-
}
|
268
|
-
this.virtualScrollHelper = new VirtualScrollHelper(this);
|
269
247
|
this.handleDocumentFocusIn = this.handleDocumentFocusIn.bind(this);
|
270
248
|
this.handleDocumentKeyDown = this.handleDocumentKeyDown.bind(this);
|
271
249
|
this.handleDocumentMouseDown = this.handleDocumentMouseDown.bind(this);
|
@@ -769,7 +747,7 @@ export class NileSelect extends NileElement implements NileFormControl{
|
|
769
747
|
|
770
748
|
// Update validity
|
771
749
|
this.updateComplete.then(() => {
|
772
|
-
this.formControlController
|
750
|
+
this.formControlController.updateValidity();
|
773
751
|
});
|
774
752
|
|
775
753
|
this.calculateTotalWidthOfTags();
|
@@ -820,8 +798,8 @@ export class NileSelect extends NileElement implements NileFormControl{
|
|
820
798
|
}
|
821
799
|
|
822
800
|
private handleInvalid(event: Event) {
|
823
|
-
this.formControlController
|
824
|
-
this.formControlController
|
801
|
+
this.formControlController.setValidity(false);
|
802
|
+
this.formControlController.emitInvalidEvent(event);
|
825
803
|
}
|
826
804
|
|
827
805
|
@watch('disabled', { waitUntilFirstUpdate: true })
|
@@ -924,7 +902,7 @@ export class NileSelect extends NileElement implements NileFormControl{
|
|
924
902
|
|
925
903
|
/** Gets the associated form, if one exists. */
|
926
904
|
getForm(): HTMLFormElement | null {
|
927
|
-
return this.formControlController
|
905
|
+
return this.formControlController.getForm();
|
928
906
|
}
|
929
907
|
|
930
908
|
/** Checks for validity and shows the browser's validation message if the control is invalid. */
|
@@ -935,7 +913,7 @@ export class NileSelect extends NileElement implements NileFormControl{
|
|
935
913
|
/** Sets a custom validation message. Pass an empty string to restore validity. */
|
936
914
|
setCustomValidity(message: string) {
|
937
915
|
this.valueInput.setCustomValidity(message);
|
938
|
-
this.formControlController
|
916
|
+
this.formControlController.updateValidity();
|
939
917
|
}
|
940
918
|
|
941
919
|
/** Sets focus on the control. */
|
@@ -1008,10 +986,6 @@ export class NileSelect extends NileElement implements NileFormControl{
|
|
1008
986
|
}
|
1009
987
|
|
1010
988
|
render() {
|
1011
|
-
if(this.enableVirtualScroll) {
|
1012
|
-
return this.virtualScrollHelper.renderVirtualizedContent();
|
1013
|
-
}
|
1014
|
-
|
1015
989
|
const hasLabelSlot = this.hasSlotController.test('label');
|
1016
990
|
const hasHelpTextSlot = this.hasSlotController.test('help-text');
|
1017
991
|
const hasLabelSuffixSlot = this.hasSlotController.test('label-suffix');
|