@aquera/nile-elements 0.0.52 → 0.0.54

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 (65) hide show
  1. package/demo/variables.css +5 -0
  2. package/demo/variables_v2.css +5 -0
  3. package/dist/index.iife.js +289 -220
  4. package/dist/nile-input/nile-input.css.cjs.js +1 -1
  5. package/dist/nile-input/nile-input.css.cjs.js.map +1 -1
  6. package/dist/nile-input/nile-input.css.esm.js +3 -0
  7. package/dist/nile-table-body/nile-table-body.css.cjs.js +1 -1
  8. package/dist/nile-table-body/nile-table-body.css.cjs.js.map +1 -1
  9. package/dist/nile-table-body/nile-table-body.css.esm.js +10 -0
  10. package/dist/nile-table-cell-item/nile-table-cell-item.cjs.js +1 -1
  11. package/dist/nile-table-cell-item/nile-table-cell-item.cjs.js.map +1 -1
  12. package/dist/nile-table-cell-item/nile-table-cell-item.css.cjs.js +1 -1
  13. package/dist/nile-table-cell-item/nile-table-cell-item.css.cjs.js.map +1 -1
  14. package/dist/nile-table-cell-item/nile-table-cell-item.css.esm.js +3 -0
  15. package/dist/nile-table-cell-item/nile-table-cell-item.esm.js +2 -2
  16. package/dist/nile-table-header-item/index.cjs.js +1 -1
  17. package/dist/nile-table-header-item/index.esm.js +1 -1
  18. package/dist/nile-table-header-item/nile-table-header-item.cjs.js +1 -1
  19. package/dist/nile-table-header-item/nile-table-header-item.cjs.js.map +1 -1
  20. package/dist/nile-table-header-item/nile-table-header-item.esm.js +3 -8
  21. package/dist/nile-table-row/nile-table-row.cjs.js +1 -1
  22. package/dist/nile-table-row/nile-table-row.cjs.js.map +1 -1
  23. package/dist/nile-table-row/nile-table-row.css.cjs.js +1 -1
  24. package/dist/nile-table-row/nile-table-row.css.cjs.js.map +1 -1
  25. package/dist/nile-table-row/nile-table-row.css.esm.js +7 -2
  26. package/dist/nile-table-row/nile-table-row.esm.js +1 -1
  27. package/dist/nile-textarea/index.cjs.js +1 -1
  28. package/dist/nile-textarea/index.esm.js +1 -1
  29. package/dist/nile-textarea/nile-textarea.cjs.js +1 -1
  30. package/dist/nile-textarea/nile-textarea.cjs.js.map +1 -1
  31. package/dist/nile-textarea/nile-textarea.css.cjs.js +1 -1
  32. package/dist/nile-textarea/nile-textarea.css.cjs.js.map +1 -1
  33. package/dist/nile-textarea/nile-textarea.css.esm.js +43 -8
  34. package/dist/nile-textarea/nile-textarea.esm.js +58 -40
  35. package/dist/src/nile-input/nile-input.css.js +3 -0
  36. package/dist/src/nile-input/nile-input.css.js.map +1 -1
  37. package/dist/src/nile-table-body/nile-table-body.css.js +10 -0
  38. package/dist/src/nile-table-body/nile-table-body.css.js.map +1 -1
  39. package/dist/src/nile-table-cell-item/nile-table-cell-item.css.js +3 -0
  40. package/dist/src/nile-table-cell-item/nile-table-cell-item.css.js.map +1 -1
  41. package/dist/src/nile-table-cell-item/nile-table-cell-item.js +1 -1
  42. package/dist/src/nile-table-cell-item/nile-table-cell-item.js.map +1 -1
  43. package/dist/src/nile-table-header-item/nile-table-header-item.d.ts +4 -0
  44. package/dist/src/nile-table-header-item/nile-table-header-item.js +17 -7
  45. package/dist/src/nile-table-header-item/nile-table-header-item.js.map +1 -1
  46. package/dist/src/nile-table-row/nile-table-row.css.js +5 -0
  47. package/dist/src/nile-table-row/nile-table-row.css.js.map +1 -1
  48. package/dist/src/nile-table-row/nile-table-row.js +1 -1
  49. package/dist/src/nile-table-row/nile-table-row.js.map +1 -1
  50. package/dist/src/nile-textarea/nile-textarea.css.js +43 -8
  51. package/dist/src/nile-textarea/nile-textarea.css.js.map +1 -1
  52. package/dist/src/nile-textarea/nile-textarea.d.ts +7 -2
  53. package/dist/src/nile-textarea/nile-textarea.js +107 -45
  54. package/dist/src/nile-textarea/nile-textarea.js.map +1 -1
  55. package/dist/tsconfig.tsbuildinfo +1 -1
  56. package/package.json +1 -1
  57. package/src/nile-input/nile-input.css.ts +3 -0
  58. package/src/nile-table-body/nile-table-body.css.ts +10 -0
  59. package/src/nile-table-cell-item/nile-table-cell-item.css.ts +3 -0
  60. package/src/nile-table-cell-item/nile-table-cell-item.ts +1 -1
  61. package/src/nile-table-header-item/nile-table-header-item.ts +13 -6
  62. package/src/nile-table-row/nile-table-row.css.ts +5 -0
  63. package/src/nile-table-row/nile-table-row.ts +1 -1
  64. package/src/nile-textarea/nile-textarea.css.ts +43 -8
  65. package/src/nile-textarea/nile-textarea.ts +127 -62
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Webcomponent nile-elements following open-wc recommendations",
4
4
  "license": "MIT",
5
5
  "author": "nile-elements",
6
- "version": "0.0.52",
6
+ "version": "0.0.54",
7
7
  "main": "dist/src/index.js",
8
8
  "type": "module",
9
9
  "module": "dist/src/index.js",
@@ -486,6 +486,7 @@ export const styles = css`
486
486
  font-size: 12px;
487
487
  max-height: 300px;
488
488
  overflow-y: scroll;
489
+ line-height: 16px;
489
490
  }
490
491
 
491
492
  .input__remove-non-printable {
@@ -493,12 +494,14 @@ export const styles = css`
493
494
  margin-left: 10px;
494
495
  font-size: 14px;
495
496
  color: var(--nile-colors-dark-900);
497
+ cursor: pointer;
496
498
  }
497
499
 
498
500
  .input__srtiked-text-container {
499
501
  margin-top: 4px;
500
502
  color: var(--nile-colors-dark-900);
501
503
  word-wrap: break-all;
504
+ line-height: 16px;
502
505
  }
503
506
 
504
507
  .input__srtiked-text {
@@ -13,6 +13,8 @@ import { css } from 'lit-element';
13
13
  export const styles = css`
14
14
  :host {
15
15
  box-sizing: border-box;
16
+ --nile-table-background--odd: var(--nile-table-body-row-odd-background-color);
17
+ --nile-table-background--even: var(--nile-table-body-row-even-background-color);
16
18
  }
17
19
  .base {
18
20
  width: max-content;
@@ -28,6 +30,14 @@ export const styles = css`
28
30
  display: table;
29
31
  border-collapse: collapse;
30
32
  }
33
+
34
+ slot::slotted(nile-table-row:nth-child(odd)) {
35
+ border-bottom: 1px solid var(--nile-table-row-border-color);
36
+ background: var(--nile-table-background--odd);
37
+ }
38
+ slot::slotted(nile-table-row:nth-child(even)) {
39
+ background: var(--nile-table-background--even);
40
+ }
31
41
  `;
32
42
 
33
43
  export default [styles];
@@ -15,6 +15,9 @@ export const styles = css`
15
15
  box-sizing: border-box;
16
16
  display: table-cell;
17
17
  --min--height: 52px;
18
+ --max--cell-width:auto;
19
+ max-width: var(--max--cell-width);
20
+ overflow: hidden;
18
21
  }
19
22
 
20
23
  .column {
@@ -45,7 +45,7 @@ export class NileTableCellItem extends NileElement {
45
45
  public render(): TemplateResult {
46
46
  return html`
47
47
  ${this.hasSlotController.test('[default]')
48
- ? html` <slot class="column"> </slot>`
48
+ ? html` <slot class="column" part="nile__table-cell"> </slot>`
49
49
  : ''}
50
50
  `;
51
51
  }
@@ -34,6 +34,13 @@ export class NileTableHeaderItem extends NileElement {
34
34
  return [styles];
35
35
  }
36
36
 
37
+ /** Enables the sort functionality. */
38
+ @property({ type: Boolean, reflect: true }) havesort = false;
39
+
40
+ /** Places the icon . */
41
+ @property({ type: String, reflect: true, attribute: 'icon-name' }) iconName =
42
+ '';
43
+
37
44
  /* #endregion */
38
45
 
39
46
  /* #region Methods */
@@ -43,6 +50,9 @@ export class NileTableHeaderItem extends NileElement {
43
50
  * @slot This is a slot test
44
51
  */
45
52
  private handleClick(e: any) {
53
+ if (!this.havesort) {
54
+ return;
55
+ }
46
56
  let curr_sort_string =
47
57
  e.target?.parentElement?.children[0]?.assignedNodes()[0];
48
58
  this.emit('nile-click-sort', { value: curr_sort_string });
@@ -51,12 +61,9 @@ export class NileTableHeaderItem extends NileElement {
51
61
  return html` ${this.hasSlotController.test('[default]')
52
62
  ? html` <div class="headers">
53
63
  <slot @click=${this.handleClick}> </slot>
54
- <nile-icon name="info2" size="16"></nile-icon>
55
- <nile-icon
56
- name="sort"
57
- size="16"
58
- @click=${this.handleClick}
59
- ></nile-icon>
64
+ ${this.iconName
65
+ ? html` <nile-icon name="${this.iconName}" size="16" @click=${this.handleClick}></nile-icon>`
66
+ : html``}
60
67
  </div>`
61
68
  : html``}`;
62
69
  }
@@ -14,6 +14,11 @@ export const styles = css`
14
14
  :host {
15
15
  display: table-row;
16
16
  border-bottom: 1px solid #e4e2e4;
17
+ --nile-header-background:var(--nile-table-header-background-color);
18
+ }
19
+
20
+ slot::slotted(nile-table-header-item) {
21
+ background-color: var(--nile-header-background);
17
22
  }
18
23
  `;
19
24
 
@@ -42,7 +42,7 @@ export class NileTableRow extends NileElement {
42
42
  * @slot This is a slot test
43
43
  */
44
44
  public render(): TemplateResult {
45
- return html` <slot class="row"></slot> `;
45
+ return html` <slot part="nile-row"></slot> `;
46
46
  }
47
47
 
48
48
  /* #endregion */
@@ -27,8 +27,8 @@ export const styles = css`
27
27
  font-family: var(--nile-font-family-serif);
28
28
  font-size: 14px;
29
29
  font-style: normal;
30
- font-weight: var(--nile-textarea-label-font-weight);
31
- line-height: var(--nile-textarea-label-line-height);
30
+ font-weight: var(--nile-textarea-label-font-weight);
31
+ line-height: var(--nile-textarea-label-line-height);
32
32
  letter-spacing: 0.2px;
33
33
  }
34
34
 
@@ -87,13 +87,13 @@ export const styles = css`
87
87
  /* Standard textareas */
88
88
  .textarea--standard {
89
89
  background-color: var(--nile-colors-white-base);
90
- border: 1px solid var(--nile-textarea-standard-border-color);
91
- box-shadow:var(--nile-textarea-standard-box-shadow);
90
+ border: 1px solid var(--nile-textarea-standard-border-color);
91
+ box-shadow:var(--nile-textarea-standard-box-shadow);
92
92
  }
93
93
 
94
94
  .textarea--standard:hover:not(.textarea--disabled) {
95
95
  background-color: var(--nile-colors-white-base);
96
- border-color: var(--nile-textarea-standard-hover-border-color);
96
+ border-color: var(--nile-textarea-standard-hover-border-color);
97
97
  border-radius: var(--nile-radius-base-standard);
98
98
  }
99
99
 
@@ -104,7 +104,7 @@ export const styles = css`
104
104
 
105
105
  .textarea--standard.textarea--focused:not(.textarea--disabled) {
106
106
  background-color: var(--nile-colors-white-base);
107
- border-color: var(--nile-textarea-standard-focused-border-color);
107
+ border-color: var(--nile-textarea-standard-focused-border-color);
108
108
  box-shadow:var(--nile-textarea-standard-focused-box-shadow);
109
109
  }
110
110
 
@@ -114,11 +114,11 @@ export const styles = css`
114
114
  }
115
115
 
116
116
  .textarea--standard.textarea--disabled {
117
- border-color: var(--nile-textarea-standard-disabled-border-color);
117
+ border-color: var(--nile-textarea-standard-disabled-border-color);
118
118
  background: var(--nile-textarea-standard-disabled-background-color);
119
119
  opacity: 0.5;
120
120
  cursor: not-allowed;
121
- box-shadow:var(--nile-textarea-standard-disabled-box-shadow);
121
+ box-shadow:var(--nile-textarea-standard-disabled-box-shadow);
122
122
  }
123
123
 
124
124
  .textarea--standard.textarea--disabled .textarea__control {
@@ -205,6 +205,41 @@ export const styles = css`
205
205
  box-shadow: 0px 1px 2px 0px rgba(16, 24, 40, 0.05),
206
206
  0px 0px 0px 4px rgba(240, 68, 56, 0.24);
207
207
  }
208
+
209
+ .input__non-printable {
210
+ border-radius: 4px;
211
+ max-width: 400px;
212
+ background-color: var(--nile-colors-white-base);
213
+ border: 1px solid var(--nile-colors-red-500);
214
+ color: var(--nile-colors-red-500);
215
+ padding: 10px;
216
+ font-size: 12px;
217
+ max-height: 300px;
218
+ overflow-y: scroll;
219
+ line-height: 16px;
220
+ }
221
+
222
+ .input__remove-non-printable {
223
+ color: var(--nile-colors-red-500);
224
+ margin-left: 10px;
225
+ font-size: 14px;
226
+ color: var(--nile-colors-dark-900);
227
+ cursor: pointer;
228
+ }
229
+
230
+ .input__srtiked-text-container {
231
+ margin-top: 4px;
232
+ color: var(--nile-colors-dark-900);
233
+ word-wrap: break-all;
234
+ line-height: 16px;
235
+ }
236
+
237
+ .input__srtiked-text {
238
+ text-decoration: line-through;
239
+ text-decoration-color: var(--nile-colors-white-base);
240
+ color: var(--nile-colors-white-base);
241
+ background-color: var(--nile-colors-red-500);
242
+ }
208
243
  `;
209
244
 
210
245
  export default [styles];
@@ -11,13 +11,13 @@ import {styles} from './nile-textarea.css';
11
11
  import { classMap } from 'lit/directives/class-map.js';
12
12
  import { query, state } from 'lit/decorators.js';
13
13
  import { defaultValue } from '../internal/default-value';
14
- import { FormControlController } from '../internal/form';
15
14
  import { HasSlotController } from '../internal/slot';
16
15
  import { ifDefined } from 'lit/directives/if-defined.js';
17
16
  import { live } from 'lit/directives/live.js';
18
17
  import { watch } from '../internal/watch';
19
18
  import NileElement from '../internal/nile-element';
20
19
  import type { CSSResultGroup } from 'lit';
20
+ import { unsafeHTML } from 'lit/directives/unsafe-html.js';
21
21
 
22
22
  /**
23
23
  * @summary Textareas collect data from the user and allow multiple lines of text.
@@ -111,9 +111,6 @@ export class NileTextarea extends NileElement {
111
111
  /** Sets the input to a success state, changing its visual appearance. */
112
112
  @property({ type: Boolean }) success = false;
113
113
 
114
- /** Sets the input to a destructive state, changing its visual appearance. */
115
- @property({ type: Boolean }) destructive = false;
116
-
117
114
  /** Controls whether and how text input is automatically capitalized as it is entered by the user. */
118
115
  @property() autocapitalize: 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters';
119
116
 
@@ -154,6 +151,12 @@ export class NileTextarea extends NileElement {
154
151
 
155
152
  @property({ type: Boolean, reflect: true }) fullHeight = false;
156
153
 
154
+ @property({type: Boolean}) checkNonPrintableChar: boolean = false;
155
+
156
+ @state() hasPrintableCharacters: boolean = false;
157
+
158
+ @state() markedValue: string;
159
+
157
160
  connectedCallback() {
158
161
  super.connectedCallback();
159
162
  this.resizeObserver = new ResizeObserver(() => this.setTextareaHeight());
@@ -227,6 +230,52 @@ export class NileTextarea extends NileElement {
227
230
  async handleValueChange() {
228
231
  await this.updateComplete;
229
232
  this.setTextareaHeight();
233
+
234
+ if(this.checkNonPrintableChar){
235
+ this.markNonPrintableCharacters();
236
+ }
237
+ }
238
+
239
+ /** checks non printable characters in the value. */
240
+ markNonPrintableCharacters() {
241
+ let markedValue = '';
242
+ this.hasPrintableCharacters = false;
243
+ if (this.value) {
244
+ for (let i = 0, n = this.value.length; i < n; i++) {
245
+ const charCode = this.value.charCodeAt(i);
246
+
247
+ if ((charCode > 255 && charCode !== 9109) || [129, 143, 144, 157, 160].includes(charCode)) {
248
+ markedValue += `<span class="input__srtiked-text">${this.value.charAt(i)}</span>`;
249
+ this.hasPrintableCharacters = true;
250
+ } else {
251
+ markedValue += this.value.charAt(i);
252
+ }
253
+ }
254
+ }
255
+
256
+ this.markedValue = markedValue;
257
+ this.emit('nile-value-marked', { value: this.markedValue, hasNonPrintableCharacters: this.hasPrintableCharacters });
258
+ }
259
+
260
+
261
+ /** Removes all non printable characters from the value. */
262
+ removeAllNonPrintableCharacters() {
263
+ let cleanedValue = '';
264
+
265
+ if (this.value) {
266
+ for (let i = 0, n = this.value.length; i < n; i++) {
267
+ const charCode = this.value.charCodeAt(i);
268
+
269
+ // Consider a character printable if it's not in the specified non-printable ranges
270
+ if (!(charCode > 255 && charCode !== 9109) && ![129, 143, 144, 157, 160].includes(charCode)) {
271
+ cleanedValue += this.value.charAt(i);
272
+ }
273
+ }
274
+ }
275
+
276
+ this.value = cleanedValue;
277
+ this.emit('nile-npchar-removed', { value: this.value });
278
+
230
279
  }
231
280
 
232
281
  /** Sets focus on the textarea. */
@@ -302,7 +351,7 @@ export class NileTextarea extends NileElement {
302
351
  'form-control': true,
303
352
  'form-control--medium': this.size === 'medium',
304
353
  'form-control--has-label': hasLabel,
305
- 'form-control--has-help-text': hasHelpText
354
+ 'form-control--has-help-text': hasHelpText,
306
355
  })}
307
356
  >
308
357
  <label
@@ -314,73 +363,89 @@ export class NileTextarea extends NileElement {
314
363
  <slot name="label">${this.label}</slot>
315
364
  </label>
316
365
 
317
- <div part="form-control-input" class="form-control-input">
318
- <div
319
- part="base"
320
- class=${classMap({
321
- textarea: true,
322
- 'textarea--medium': this.size === 'medium',
323
- 'textarea--warning': this.warning,
324
- 'textarea--error': this.error,
325
- 'textarea--success': this.success,
326
- 'textarea--destructive': this.destructive,
327
- 'textarea--standard': !this.filled,
328
- 'textarea--disabled': this.disabled,
329
- 'textarea--focused': this.hasFocus,
330
- 'textarea--empty': !this.value,
331
- 'textarea--resize-none': this.resize === 'none',
332
- 'textarea--resize-vertical': this.resize === 'vertical',
333
- 'textarea--resize-auto': this.resize === 'auto'
334
- })}
335
- >
336
- <textarea
337
- part="textarea"
338
- id="input"
339
- class="textarea__control"
340
- title=${this.title /* An empty title prevents browser validation tooltips from appearing on hover */}
341
- name=${ifDefined(this.name)}
342
- .value=${live(this.value)}
343
- ?disabled=${this.disabled}
344
- ?readonly=${this.readonly}
345
- ?required=${this.required}
346
- placeholder=${ifDefined(this.placeholder)}
347
- rows=${ifDefined(this.rows)}
348
- minlength=${ifDefined(this.minlength)}
349
- maxlength=${ifDefined(this.maxlength)}
350
- autocapitalize=${ifDefined(this.autocapitalize)}
351
- autocorrect=${ifDefined(this.autocorrect)}
352
- ?autofocus=${this.autofocus}
353
- spellcheck=${ifDefined(this.spellcheck)}
354
- enterkeyhint=${ifDefined(this.enterkeyhint)}
355
- inputmode=${ifDefined(this.inputmode)}
356
- aria-describedby="help-text"
357
- @change=${this.handleChange}
358
- @input=${this.handleInput}
359
- @focus=${this.handleFocus}
360
- @blur=${this.handleBlur}
361
-
362
-
363
- ></textarea>
366
+ <nile-popup
367
+ ?active=${this.hasPrintableCharacters}
368
+ placement="bottom-start"
369
+ distance="5"
370
+ strategy="fixed"
371
+ >
372
+ <div part="form-control-input" class="form-control-input" slot="anchor">
373
+ <div
374
+ part="base"
375
+ class=${classMap({
376
+ textarea: true,
377
+ 'textarea--medium': this.size === 'medium',
378
+ 'textarea--warning': this.warning,
379
+ 'textarea--error': this.error,
380
+ 'textarea--success': this.success,
381
+ 'textarea--standard': !this.filled,
382
+ 'textarea--disabled': this.disabled,
383
+ 'textarea--focused': this.hasFocus,
384
+ 'textarea--empty': !this.value,
385
+ 'textarea--resize-none': this.resize === 'none',
386
+ 'textarea--resize-vertical': this.resize === 'vertical',
387
+ 'textarea--resize-auto': this.resize === 'auto',
388
+ })}
389
+ >
390
+ <textarea
391
+ part="textarea"
392
+ id="input"
393
+ class="textarea__control"
394
+ title=${
395
+ this
396
+ .title /* An empty title prevents browser validation tooltips from appearing on hover */
397
+ }
398
+ name=${ifDefined(this.name)}
399
+ .value=${live(this.value)}
400
+ ?disabled=${this.disabled}
401
+ ?readonly=${this.readonly}
402
+ ?required=${this.required}
403
+ placeholder=${ifDefined(this.placeholder)}
404
+ rows=${ifDefined(this.rows)}
405
+ minlength=${ifDefined(this.minlength)}
406
+ maxlength=${ifDefined(this.maxlength)}
407
+ autocapitalize=${ifDefined(this.autocapitalize)}
408
+ autocorrect=${ifDefined(this.autocorrect)}
409
+ ?autofocus=${this.autofocus}
410
+ spellcheck=${ifDefined(this.spellcheck)}
411
+ enterkeyhint=${ifDefined(this.enterkeyhint)}
412
+ inputmode=${ifDefined(this.inputmode)}
413
+ aria-describedby="help-text"
414
+ @change=${this.handleChange}
415
+ @input=${this.handleInput}
416
+ @focus=${this.handleFocus}
417
+ @blur=${this.handleBlur}
418
+ ></textarea>
419
+ </div>
364
420
  </div>
365
- </div>
366
421
 
367
- ${
368
- hasHelpText
422
+ ${hasHelpText
369
423
  ? html`
370
424
  <nile-form-help-text>${this.helpText}</nile-form-help-text>
371
425
  `
372
- : ``
373
- }
374
-
375
- ${
376
- hasErrorMessage
426
+ : ``}
427
+ ${hasErrorMessage
377
428
  ? html`
378
429
  <nile-form-error-message
379
430
  >${this.errorMessage}</nile-form-error-message
380
431
  >
381
432
  `
382
- : ``
383
- }
433
+ : ``}
434
+ <div class="input__non-printable">
435
+ Non-printable character detected.
436
+ <nile-badge
437
+ variant="error"
438
+ @click=${this.removeAllNonPrintableCharacters}
439
+ class="input__remove-non-printable"
440
+ >
441
+ Remove All
442
+ </nile-badge>
443
+
444
+ <div class="input__srtiked-text-container">
445
+ ${unsafeHTML(this.markedValue)}
446
+ </div>
447
+ </div>
448
+ </nile-popup>
384
449
  </div>
385
450
  `;
386
451
  }