@aquera/nile-elements 0.1.50-beta-1.2 → 0.1.50-beta-1.4

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.
Files changed (48) hide show
  1. package/README.md +8 -0
  2. package/dist/index.js +389 -195
  3. package/dist/nile-content-editor/nile-content-editor.css.cjs.js +1 -1
  4. package/dist/nile-content-editor/nile-content-editor.css.cjs.js.map +1 -1
  5. package/dist/nile-content-editor/nile-content-editor.css.esm.js +2 -2
  6. package/dist/nile-input/nile-input.css.cjs.js +1 -1
  7. package/dist/nile-input/nile-input.css.cjs.js.map +1 -1
  8. package/dist/nile-input/nile-input.css.esm.js +4 -4
  9. package/dist/nile-pagination/nile-pagination.cjs.js +1 -1
  10. package/dist/nile-pagination/nile-pagination.cjs.js.map +1 -1
  11. package/dist/nile-pagination/nile-pagination.css.cjs.js +1 -1
  12. package/dist/nile-pagination/nile-pagination.css.cjs.js.map +1 -1
  13. package/dist/nile-pagination/nile-pagination.css.esm.js +170 -63
  14. package/dist/nile-pagination/nile-pagination.esm.js +120 -33
  15. package/dist/nile-stepper/nile-stepper.css.cjs.js +1 -1
  16. package/dist/nile-stepper/nile-stepper.css.cjs.js.map +1 -1
  17. package/dist/nile-stepper/nile-stepper.css.esm.js +2 -2
  18. package/dist/nile-stepper-item/nile-stepper-item.css.cjs.js +1 -1
  19. package/dist/nile-stepper-item/nile-stepper-item.css.cjs.js.map +1 -1
  20. package/dist/nile-stepper-item/nile-stepper-item.css.esm.js +5 -5
  21. package/dist/nile-tab/nile-tab.css.cjs.js +1 -1
  22. package/dist/nile-tab/nile-tab.css.cjs.js.map +1 -1
  23. package/dist/nile-tab/nile-tab.css.esm.js +3 -3
  24. package/dist/src/nile-content-editor/nile-content-editor.css.js +2 -2
  25. package/dist/src/nile-content-editor/nile-content-editor.css.js.map +1 -1
  26. package/dist/src/nile-input/nile-input.css.js +4 -4
  27. package/dist/src/nile-input/nile-input.css.js.map +1 -1
  28. package/dist/src/nile-pagination/nile-pagination.css.js +168 -61
  29. package/dist/src/nile-pagination/nile-pagination.css.js.map +1 -1
  30. package/dist/src/nile-pagination/nile-pagination.d.ts +3 -0
  31. package/dist/src/nile-pagination/nile-pagination.js +169 -44
  32. package/dist/src/nile-pagination/nile-pagination.js.map +1 -1
  33. package/dist/src/nile-stepper/nile-stepper.css.js +2 -2
  34. package/dist/src/nile-stepper/nile-stepper.css.js.map +1 -1
  35. package/dist/src/nile-stepper-item/nile-stepper-item.css.js +3 -3
  36. package/dist/src/nile-stepper-item/nile-stepper-item.css.js.map +1 -1
  37. package/dist/src/nile-tab/nile-tab.css.js +1 -1
  38. package/dist/src/nile-tab/nile-tab.css.js.map +1 -1
  39. package/dist/tsconfig.tsbuildinfo +1 -1
  40. package/package.json +1 -1
  41. package/src/nile-content-editor/nile-content-editor.css.ts +2 -2
  42. package/src/nile-input/nile-input.css.ts +4 -4
  43. package/src/nile-pagination/nile-pagination.css.ts +168 -61
  44. package/src/nile-pagination/nile-pagination.ts +190 -50
  45. package/src/nile-stepper/nile-stepper.css.ts +3 -3
  46. package/src/nile-stepper-item/nile-stepper-item.css.ts +3 -3
  47. package/src/nile-tab/nile-tab.css.ts +1 -1
  48. package/vscode-html-custom-data.json +1 -1
@@ -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
- @property({attribute: 'totalitems',reflect: true, converter: { fromAttribute: (v: string) => {const n = Number(v);
26
- return Number.isFinite(n) && n >= 0 ? Math.floor(n) : 0; }}})totalItems: number = 0;
27
-
28
- @property({ attribute: 'currentpage',reflect: true,converter: { fromAttribute: (v: string) => { const n = Number(v);
29
- return Number.isFinite(n) && n >= 1 ? Math.floor(n) : 1;}}}) currentPage : number = 1;
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: 'pagesize',reflect: true, converter: { fromAttribute: (v: string) => {
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) : 50;}}}) pageSize: number = 50;
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) => { try { const arr = JSON.parse(v);
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 {}return [10, 25, 50, 100];}}}) pageSizeOptions: number[] = [10, 25, 50, 100];
55
+ } catch {}
56
+ return [10, 25, 50, 100];
57
+ }}})
58
+ pageSizeOptions: number[] = [10, 25, 50, 100];
42
59
 
43
- @property({ type: String }) variant: 'fluid' | 'compact' = 'fluid';
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(page: number) {
83
+ private goToPage(newPage: number) {
84
+
64
85
  if (this.disabled) return;
65
- this.currentPage = page;
66
- this.emit('nile-change', { page: this.currentPage, pageSize: this.pageSize });
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
- private onPageSizeSelect(size: number) {
70
- if (this.disabled || this.pageSize === size) return;
71
- this.pageSize = size;
72
- this.currentPage = 1;
73
- this.emit('nile-change', { page: 1, pageSize: size });
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`<div class="range-text">
81
- ${getRangeText(this.totalItems, this.pageSize, this.currentPage)}
82
- </div>`;
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 slot="trigger" variant="tertiary" class="down ${this._pageSizeOpen ? 'open' : ''}"
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 name="chevrondown" size="14" color="var(--nile-colors-dark-500,var(--ng-colors-fg-quaternary-400))" class="chevron"></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 class="page-size-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,25 +190,25 @@ 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
- </nile-menu>
107
- </nile-dropdown>
108
- <span class="page-size-label">Items per page</span>
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`
115
205
  <li>
116
206
  <nile-button
117
- class="arrow"
118
207
  variant="tertiary"
119
208
  ?disabled=${this.currentPage === 1 || this.disabled}
120
209
  @click=${() => this.goToPage(this.currentPage - 1)}
121
210
  >
122
- <nile-icon name="arrowleft" color="var(--nile-colors-dark-500, var(--ng-colors-fg-quaternary-400))" size="14"></nile-icon>
211
+ <nile-icon name="arrowleft" size="14"></nile-icon>
123
212
  </nile-button>
124
213
  </li>
125
214
  `;
@@ -130,11 +219,10 @@ export class NilePagination extends NileElement {
130
219
  <li>
131
220
  <nile-button
132
221
  variant="tertiary"
133
- class="arrow"
134
222
  ?disabled=${this.currentPage === this.totalPages || this.disabled}
135
223
  @click=${() => this.goToPage(this.currentPage + 1)}
136
224
  >
137
- <nile-icon name="arrowright" color="var(--nile-colors-dark-500, var(--ng-colors-fg-quaternary-400))" size="14"></nile-icon>
225
+ <nile-icon name="arrowright" size="14"></nile-icon>
138
226
  </nile-button>
139
227
  </li>
140
228
  `;
@@ -166,7 +254,8 @@ export class NilePagination extends NileElement {
166
254
  @click=${() => this.goToPage(page)}
167
255
  >
168
256
  ${page}
169
- </nile-menu-item>`
257
+ </nile-menu-item>
258
+ `
170
259
  )}
171
260
  </div>
172
261
  </nile-menu>
@@ -174,7 +263,6 @@ export class NilePagination extends NileElement {
174
263
  </li>
175
264
  `;
176
265
  }
177
-
178
266
  return html`
179
267
  <li>
180
268
  <nile-button
@@ -189,10 +277,56 @@ export class NilePagination extends NileElement {
189
277
  }
190
278
 
191
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
+ }
192
326
  const items = getPaginationItems(this.totalPages, this.currentPage);
193
327
  return html`
194
328
  <nav aria-label="Pagination">
195
- <ul class="pagination">
329
+ <ul part="page-list" class="pagination">
196
330
  ${this.renderPrevButton()}
197
331
  ${items.map((item, idx) => this.renderPageItem(item, idx, items))}
198
332
  ${this.renderNextButton()}
@@ -201,17 +335,23 @@ export class NilePagination extends NileElement {
201
335
  `;
202
336
  }
203
337
 
204
- public render(): TemplateResult {
205
- return html`
206
- <div class="pagination-wrapper ${this.variant}">
207
- <div class="pager-container">
208
- ${this.showTitle ? this.renderRangeText() : null}
209
- ${this.renderPageSizeSelect()}
210
- </div>
211
- ${this.renderPageList()}
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()}
212
350
  </div>
213
- `;
214
- }
351
+ ${this.renderPageList()}
352
+ </div>
353
+ `;
354
+ }
215
355
  }
216
356
 
217
357
  declare global {
@@ -24,15 +24,15 @@ export const styles = css`
24
24
  .nile-stepper--horizontal{
25
25
  display:flex;
26
26
  align-items:center;
27
- padding: var( --nile-spacing-2xl, var(--ng-spacing-2xl));
27
+ padding: var( --nile-spacing-spacing-3xl, var(--ng-spacing-2xl));
28
28
  }
29
29
 
30
30
  .nile-stepper--vertical{
31
31
  height:100%;
32
32
  display:flex;
33
33
  flex-direction:column;
34
- padding: var( --nile-spacing-2xl, var(--ng-spacing-2xl));
34
+ padding: var( --nile-spacing-spacing-3xl, var(--ng-spacing-2xl));
35
35
  }
36
36
  `;
37
37
 
38
- export default [styles];
38
+ export default [styles];
@@ -32,7 +32,7 @@ export const styles = css`
32
32
  --item-spacing: var( --nile-spacing-md, var(--ng-spacing-md));
33
33
  --stepper-item-title-size: var( --nile-type-scale-2, var(--ng-font-size-text-sm) );
34
34
  --stepper-item-subtitle-size: var( --nile-type-scale-1, var(--ng-font-size-text-sm) );
35
- --stepper-item-text-line-height: var( --nile-line-height-xsmall, var(--ng-line-height-text-sm) );
35
+ --stepper-item-text-line-height: var( --nile-height-16px, var(--ng-line-height-text-sm) );
36
36
  --circle-height:18px;
37
37
  }
38
38
 
@@ -40,7 +40,7 @@ export const styles = css`
40
40
  --item-spacing: var( --nile-spacing-md, var(--ng-spacing-lg));
41
41
  --stepper-item-title-size: var( --nile-type-scale-3, var(--ng-font-size-text-sm) );
42
42
  --stepper-item-subtitle-size: var( --nile-type-scale-2, var(--ng-font-size-text-sm) );
43
- --stepper-item-text-line-height: var( --nile-line-height-small, var(--ng-line-height-text-md) );
43
+ --stepper-item-text-line-height: var( --nile-height-18px, var(--ng-line-height-text-md) );
44
44
  --circle-height:22px;
45
45
  }
46
46
 
@@ -48,7 +48,7 @@ export const styles = css`
48
48
  --item-spacing: var( --nile-spacing-lg, var(--ng-spacing-lg));
49
49
  --stepper-item-title-size: var( --nile-type-scale-4, var(--ng-font-size-text-md) );
50
50
  --stepper-item-subtitle-size: var( --nile-type-scale-3, var(--ng-font-size-text-md) );
51
- --stepper-item-text-line-height: var( --nile-line-height-medium, var(--ng-line-height-text-lg) );
51
+ --stepper-item-text-line-height: var( --nile-height-22px, var(--ng-line-height-text-lg) );
52
52
  --circle-height:26px;
53
53
  }
54
54
 
@@ -36,7 +36,7 @@ export const styles = css`
36
36
  width: 100%;
37
37
  align-items: center;
38
38
  border-radius: var(--tab-border-radius);
39
- color: var(--nile-colors-inherit, var(--ng-colors-text-quaternary-500));
39
+ color: var(--nile-colors-gray-light-mode-500, var(--ng-colors-text-quaternary-500));
40
40
  padding: var(--tab-padding);
41
41
  white-space: nowrap;
42
42
  user-select: none;
@@ -2563,7 +2563,7 @@
2563
2563
  },
2564
2564
  {
2565
2565
  "name": "nile-pagination",
2566
- "description": "Attributes:\n\n * `totalitems` {`number`} - \n\n * `currentpage` {`number`} - \n\n * `pagesize` {`number`} - \n\n * `pagesizeoptions` {`number[]`} - \n\n * `variant` {`\"fluid\" | \"compact\"`} - \n\n * `disabled` {`boolean`} - \n\n * `showTitle` {`boolean`} - \n\nProperties:\n\n * `totalItems` {`number`} - \n\n * `currentPage` {`number`} - \n\n * `pageSize` {`number`} - \n\n * `pageSizeOptions` {`number[]`} - \n\n * `variant` {`\"fluid\" | \"compact\"`} - \n\n * `disabled` {`boolean`} - \n\n * `showTitle` {`boolean`} - \n\n * `_pageSizeOpen` {`boolean`} - \n\n * `_pageSizeDropdown` {`HTMLElement`} - \n\n * `totalPages` {`number`} - \n\n * `BUBBLES` {`boolean`} - \n\n * `COMPOSED` {`boolean`} - \n\n * `CANCELABLE` {`boolean`} - ",
2566
+ "description": "Attributes:\n\n * `totalitems` {`number`} - \n\n * `currentpage` {`number`} - \n\n * `pagesize` {`number`} - \n\n * `pagesizeoptions` {`number[]`} - \n\n * `variant` {`\"fluid\" | \"compact\"`} - \n\n * `disabled` {`boolean`} - \n\n * `showTitle` {`boolean`} - \n\nProperties:\n\n * `totalItems` {`number`} - \n\n * `currentPage` {`number`} - \n\n * `pageSize` {`number`} - \n\n * `pageSizeOptions` {`number[]`} - \n\n * `variant` {`\"fluid\" | \"compact\"`} - \n\n * `disabled` {`boolean`} - \n\n * `showTitle` {`boolean`} - \n\n * `_pageSizeOpen` {`boolean`} - \n\n * `_pageOpen` {`boolean`} - \n\n * `_pageSizeDropdown` {`HTMLElement`} - \n\n * `totalPages` {`number`} - \n\n * `BUBBLES` {`boolean`} - \n\n * `COMPOSED` {`boolean`} - \n\n * `CANCELABLE` {`boolean`} - ",
2567
2567
  "attributes": [
2568
2568
  {
2569
2569
  "name": "totalitems",