@aquera/nile-elements 0.1.67-beta-1.9 → 0.1.67-beta-2.1

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 (213) hide show
  1. package/README.md +1 -23
  2. package/demo/index.html +61 -1
  3. package/dist/index.cjs.js +1 -1
  4. package/dist/index.esm.js +1 -1
  5. package/dist/index.js +5640 -7857
  6. package/dist/internal/form.cjs.js +1 -1
  7. package/dist/internal/form.cjs.js.map +1 -1
  8. package/dist/internal/form.esm.js +1 -1
  9. package/dist/internal/resizable-table-styles.cjs.js +1 -1
  10. package/dist/internal/resizable-table-styles.cjs.js.map +1 -1
  11. package/dist/internal/resizable-table-styles.esm.js +3 -15
  12. package/dist/nile-accordion/nile-accordian.test.cjs.js +1 -1
  13. package/dist/nile-accordion/nile-accordian.test.esm.js +1 -1
  14. package/dist/nile-auto-complete/index.cjs.js +1 -1
  15. package/dist/nile-auto-complete/index.esm.js +1 -1
  16. package/dist/nile-auto-complete/nile-auto-complete.cjs.js +17 -1
  17. package/dist/nile-auto-complete/nile-auto-complete.cjs.js.map +1 -1
  18. package/dist/nile-auto-complete/nile-auto-complete.esm.js +29 -8
  19. package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js +1 -1
  20. package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js.map +1 -1
  21. package/dist/nile-auto-complete/nile-auto-complete.test.esm.js +1 -1
  22. package/dist/nile-avatar/nile-avatar.test.cjs.js +1 -1
  23. package/dist/nile-avatar/nile-avatar.test.esm.js +1 -1
  24. package/dist/nile-badge/nile-badge.test.cjs.js +1 -1
  25. package/dist/nile-badge/nile-badge.test.esm.js +1 -1
  26. package/dist/nile-button/nile-button.test.cjs.js +1 -1
  27. package/dist/nile-button/nile-button.test.esm.js +1 -1
  28. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js +1 -1
  29. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.esm.js +1 -1
  30. package/dist/nile-calendar/nile-calendar.test.cjs.js +1 -1
  31. package/dist/nile-calendar/nile-calendar.test.cjs.js.map +1 -1
  32. package/dist/nile-calendar/nile-calendar.test.esm.js +1 -1
  33. package/dist/nile-card/nile-card.test.cjs.js +1 -1
  34. package/dist/nile-card/nile-card.test.esm.js +1 -1
  35. package/dist/nile-checkbox/nile-checkbox.test.cjs.js +1 -1
  36. package/dist/nile-checkbox/nile-checkbox.test.esm.js +1 -1
  37. package/dist/nile-chip/nile-chip.cjs.js +1 -1
  38. package/dist/nile-chip/nile-chip.cjs.js.map +1 -1
  39. package/dist/nile-chip/nile-chip.esm.js +1 -1
  40. package/dist/nile-chip/nile-chip.test.cjs.js +1 -1
  41. package/dist/nile-chip/nile-chip.test.cjs.js.map +1 -1
  42. package/dist/nile-chip/nile-chip.test.esm.js +1 -1
  43. package/dist/nile-code-editor/extensionSetup.cjs.js +5 -5
  44. package/dist/nile-code-editor/extensionSetup.cjs.js.map +1 -1
  45. package/dist/nile-code-editor/extensionSetup.esm.js +1 -1
  46. package/dist/nile-code-editor/nile-code-editor.cjs.js +2 -2
  47. package/dist/nile-code-editor/nile-code-editor.cjs.js.map +1 -1
  48. package/dist/nile-code-editor/nile-code-editor.esm.js +3 -3
  49. package/dist/nile-code-editor/theme.cjs.js +1 -1
  50. package/dist/nile-code-editor/theme.cjs.js.map +1 -1
  51. package/dist/nile-code-editor/theme.esm.js +1 -1
  52. package/dist/nile-dialog/nile-dialog.test.cjs.js +1 -1
  53. package/dist/nile-dialog/nile-dialog.test.esm.js +1 -1
  54. package/dist/nile-drawer/nile-drawer.test.cjs.js +1 -1
  55. package/dist/nile-drawer/nile-drawer.test.esm.js +1 -1
  56. package/dist/nile-dropdown/nile-dropdown.test.cjs.js +1 -1
  57. package/dist/nile-dropdown/nile-dropdown.test.esm.js +1 -1
  58. package/dist/nile-empty-state/nile-empty-state.test.cjs.js +1 -1
  59. package/dist/nile-empty-state/nile-empty-state.test.esm.js +1 -1
  60. package/dist/nile-error-message/nile-error-message.test.cjs.js +1 -1
  61. package/dist/nile-error-message/nile-error-message.test.esm.js +1 -1
  62. package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js +1 -1
  63. package/dist/nile-filter-chip/nile-filter-chip.test.esm.js +1 -1
  64. package/dist/nile-form-group/nile-form-group.test.cjs.js +1 -1
  65. package/dist/nile-form-group/nile-form-group.test.esm.js +1 -1
  66. package/dist/nile-form-help-text/nile-form-help-text.test.cjs.js +1 -1
  67. package/dist/nile-form-help-text/nile-form-help-text.test.esm.js +1 -1
  68. package/dist/nile-hero/nile-hero.test.cjs.js +1 -1
  69. package/dist/nile-hero/nile-hero.test.esm.js +1 -1
  70. package/dist/nile-icon/nile-icon.test.cjs.js +1 -1
  71. package/dist/nile-icon/nile-icon.test.esm.js +1 -1
  72. package/dist/nile-input/nile-input.test.cjs.js +1 -1
  73. package/dist/nile-input/nile-input.test.esm.js +1 -1
  74. package/dist/nile-link/nile-link.test.cjs.js +1 -1
  75. package/dist/nile-link/nile-link.test.esm.js +1 -1
  76. package/dist/nile-loader/nile-loader.test.cjs.js +1 -1
  77. package/dist/nile-loader/nile-loader.test.esm.js +1 -1
  78. package/dist/nile-option/nile-option.cjs.js +1 -1
  79. package/dist/nile-option/nile-option.cjs.js.map +1 -1
  80. package/dist/nile-option/nile-option.esm.js +3 -3
  81. package/dist/nile-popover/index.cjs.js +1 -1
  82. package/dist/nile-popover/index.esm.js +1 -1
  83. package/dist/nile-popover/nile-popover.cjs.js +11 -3
  84. package/dist/nile-popover/nile-popover.cjs.js.map +1 -1
  85. package/dist/nile-popover/nile-popover.esm.js +13 -7
  86. package/dist/nile-popover/nile-popover.test.cjs.js +1 -1
  87. package/dist/nile-popover/nile-popover.test.cjs.js.map +1 -1
  88. package/dist/nile-popover/nile-popover.test.esm.js +3 -3
  89. package/dist/nile-popup/nile-popup.test.cjs.js +1 -1
  90. package/dist/nile-popup/nile-popup.test.esm.js +1 -1
  91. package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js +1 -1
  92. package/dist/nile-progress-bar/nile-progress-bar.test.esm.js +1 -1
  93. package/dist/nile-radio/nile-radio.test.cjs.js +1 -1
  94. package/dist/nile-radio/nile-radio.test.esm.js +1 -1
  95. package/dist/nile-radio-group/nile-radio-group.test.cjs.js +1 -1
  96. package/dist/nile-radio-group/nile-radio-group.test.esm.js +1 -1
  97. package/dist/nile-select/index.cjs.js +1 -1
  98. package/dist/nile-select/index.esm.js +1 -1
  99. package/dist/nile-select/nile-select.cjs.js +1 -1
  100. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  101. package/dist/nile-select/nile-select.esm.js +9 -9
  102. package/dist/nile-select/nile-select.test.cjs.js +1 -1
  103. package/dist/nile-select/nile-select.test.cjs.js.map +1 -1
  104. package/dist/nile-select/nile-select.test.esm.js +2 -2
  105. package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js +1 -1
  106. package/dist/nile-slide-toggle/nile-slide-toggle.test.esm.js +1 -1
  107. package/dist/nile-tab-group/nile-tab-group.test.cjs.js +1 -1
  108. package/dist/nile-tab-group/nile-tab-group.test.esm.js +1 -1
  109. package/dist/nile-table-cell-item/nile-table-cell-item.css.cjs.js +1 -1
  110. package/dist/nile-table-cell-item/nile-table-cell-item.css.cjs.js.map +1 -1
  111. package/dist/nile-table-cell-item/nile-table-cell-item.css.esm.js +6 -2
  112. package/dist/nile-table-header-item/nile-table-header-item.css.cjs.js +1 -1
  113. package/dist/nile-table-header-item/nile-table-header-item.css.cjs.js.map +1 -1
  114. package/dist/nile-table-header-item/nile-table-header-item.css.esm.js +4 -2
  115. package/dist/nile-table-row/nile-table-row.cjs.js +1 -1
  116. package/dist/nile-table-row/nile-table-row.cjs.js.map +1 -1
  117. package/dist/nile-table-row/nile-table-row.css.cjs.js +1 -1
  118. package/dist/nile-table-row/nile-table-row.css.cjs.js.map +1 -1
  119. package/dist/nile-table-row/nile-table-row.css.esm.js +51 -0
  120. package/dist/nile-table-row/nile-table-row.esm.js +26 -6
  121. package/dist/nile-textarea/nile-textarea.test.cjs.js +1 -1
  122. package/dist/nile-textarea/nile-textarea.test.esm.js +1 -1
  123. package/dist/src/index.d.ts +0 -4
  124. package/dist/src/index.js +0 -4
  125. package/dist/src/index.js.map +1 -1
  126. package/dist/src/internal/form.js +3 -3
  127. package/dist/src/internal/form.js.map +1 -1
  128. package/dist/src/internal/resizable-table-styles.js +0 -12
  129. package/dist/src/internal/resizable-table-styles.js.map +1 -1
  130. package/dist/src/nile-chip/nile-chip.js +1 -10
  131. package/dist/src/nile-chip/nile-chip.js.map +1 -1
  132. package/dist/src/nile-code-editor/nile-code-editor.d.ts +0 -3
  133. package/dist/src/nile-code-editor/nile-code-editor.js +3 -23
  134. package/dist/src/nile-code-editor/nile-code-editor.js.map +1 -1
  135. package/dist/src/nile-code-editor/theme.d.ts +0 -6
  136. package/dist/src/nile-code-editor/theme.js +2 -8
  137. package/dist/src/nile-code-editor/theme.js.map +1 -1
  138. package/dist/src/nile-option/nile-option.d.ts +1 -4
  139. package/dist/src/nile-option/nile-option.js +15 -27
  140. package/dist/src/nile-option/nile-option.js.map +1 -1
  141. package/dist/src/nile-select/nile-select.d.ts +3 -20
  142. package/dist/src/nile-select/nile-select.js +22 -123
  143. package/dist/src/nile-select/nile-select.js.map +1 -1
  144. package/dist/src/nile-table-cell-item/nile-table-cell-item.css.js +4 -0
  145. package/dist/src/nile-table-cell-item/nile-table-cell-item.css.js.map +1 -1
  146. package/dist/src/nile-table-header-item/nile-table-header-item.css.js +2 -0
  147. package/dist/src/nile-table-header-item/nile-table-header-item.css.js.map +1 -1
  148. package/dist/src/nile-table-row/nile-table-row-expandable.d.ts +37 -0
  149. package/dist/src/nile-table-row/nile-table-row-expandable.js +105 -0
  150. package/dist/src/nile-table-row/nile-table-row-expandable.js.map +1 -0
  151. package/dist/src/nile-table-row/nile-table-row.css.js +51 -0
  152. package/dist/src/nile-table-row/nile-table-row.css.js.map +1 -1
  153. package/dist/src/nile-table-row/nile-table-row.d.ts +4 -0
  154. package/dist/src/nile-table-row/nile-table-row.js +58 -11
  155. package/dist/src/nile-table-row/nile-table-row.js.map +1 -1
  156. package/dist/src/nile-table-row-expandable/index.d.ts +1 -0
  157. package/dist/src/nile-table-row-expandable/index.js +2 -0
  158. package/dist/src/nile-table-row-expandable/index.js.map +1 -0
  159. package/dist/src/nile-table-row-expandable/nile-table-row-expandable.css.d.ts +12 -0
  160. package/dist/src/nile-table-row-expandable/nile-table-row-expandable.css.js +17 -0
  161. package/dist/src/nile-table-row-expandable/nile-table-row-expandable.css.js.map +1 -0
  162. package/dist/src/nile-table-row-expandable/nile-table-row-expandable.d.ts +37 -0
  163. package/dist/src/nile-table-row-expandable/nile-table-row-expandable.js +103 -0
  164. package/dist/src/nile-table-row-expandable/nile-table-row-expandable.js.map +1 -0
  165. package/dist/tsconfig.tsbuildinfo +1 -1
  166. package/package.json +3 -4
  167. package/src/index.ts +1 -5
  168. package/src/internal/form.ts +3 -3
  169. package/src/internal/resizable-table-styles.ts +0 -12
  170. package/src/nile-chip/nile-chip.ts +1 -9
  171. package/src/nile-code-editor/nile-code-editor.ts +4 -25
  172. package/src/nile-code-editor/theme.ts +2 -8
  173. package/src/nile-option/nile-option.ts +12 -22
  174. package/src/nile-select/nile-select.ts +15 -139
  175. package/src/nile-table-cell-item/nile-table-cell-item.css.ts +4 -0
  176. package/src/nile-table-header-item/nile-table-header-item.css.ts +2 -0
  177. package/src/nile-table-row/nile-table-row.css.ts +51 -0
  178. package/src/nile-table-row/nile-table-row.ts +50 -7
  179. package/vscode-html-custom-data.json +23 -400
  180. package/src/nile-file-preview/index.ts +0 -1
  181. package/src/nile-file-preview/nile-file-preview.css.ts +0 -589
  182. package/src/nile-file-preview/nile-file-preview.template.ts +0 -259
  183. package/src/nile-file-preview/nile-file-preview.test.ts +0 -38
  184. package/src/nile-file-preview/nile-file-preview.ts +0 -205
  185. package/src/nile-file-preview/types/index.ts +0 -2
  186. package/src/nile-file-preview/types/nile-file-preview.enums.ts +0 -32
  187. package/src/nile-file-preview/types/nile-file-preview.interface.ts +0 -4
  188. package/src/nile-file-preview/utils/index.ts +0 -1
  189. package/src/nile-file-preview/utils/nile-file-preview.util.ts +0 -72
  190. package/src/nile-file-upload/index.ts +0 -1
  191. package/src/nile-file-upload/nile-file-upload.css.ts +0 -624
  192. package/src/nile-file-upload/nile-file-upload.template.ts +0 -217
  193. package/src/nile-file-upload/nile-file-upload.test.ts +0 -38
  194. package/src/nile-file-upload/nile-file-upload.ts +0 -161
  195. package/src/nile-file-upload/types/file-upload.enums.ts +0 -46
  196. package/src/nile-file-upload/types/file-upload.type.ts +0 -5
  197. package/src/nile-file-upload/types/index.ts +0 -2
  198. package/src/nile-file-upload/utils/drag-drop.util.ts +0 -106
  199. package/src/nile-file-upload/utils/file-validation.util.ts +0 -216
  200. package/src/nile-option-group/index.ts +0 -1
  201. package/src/nile-option-group/nile-option-group.css.ts +0 -60
  202. package/src/nile-option-group/nile-option-group.interface.ts +0 -24
  203. package/src/nile-option-group/nile-option-group.ts +0 -84
  204. package/src/nile-select/nile-select.interface.ts +0 -5
  205. package/src/nile-select/virtual-scroll-helper.ts +0 -56
  206. package/src/nile-virtual-select/index.ts +0 -1
  207. package/src/nile-virtual-select/nile-virtual-select.css.ts +0 -491
  208. package/src/nile-virtual-select/nile-virtual-select.test.ts +0 -774
  209. package/src/nile-virtual-select/nile-virtual-select.ts +0 -1314
  210. package/src/nile-virtual-select/renderer.ts +0 -102
  211. package/src/nile-virtual-select/search-manager.ts +0 -50
  212. package/src/nile-virtual-select/selection-manager.ts +0 -75
  213. package/src/nile-virtual-select/types.ts +0 -54
@@ -1,259 +0,0 @@
1
- /**
2
- * Template File for nile-preview component
3
- */
4
-
5
- import './nile-file-preview.css';
6
- import { html, TemplateResult } from 'lit';
7
- import { FilePreviewErrorMessages, RemoveFileDetail } from './types';
8
- import { removeFile, cancelFileUpload } from './utils';
9
- import { formatFileSize, truncateString, getFileType } from './utils/nile-file-preview.util';
10
- import { NileFilePreview } from './nile-file-preview';
11
-
12
- export function getHorizontalUploadingState(
13
- file: File,
14
- uploadStatus: number
15
- ): TemplateResult {
16
- return html`
17
- <div class="uploading" part="horizontal-uploading-state">
18
- <nile-loader width="24" height="24"></nile-loader>
19
- <div class="progress-bar-container">
20
- <div class="progress-bar-percent">
21
- <p>Uploading File...</p>
22
- <p>${uploadStatus}%</p>
23
- </div>
24
- <nile-progress-bar
25
- part="horizontal-progress-bar"
26
- value="${uploadStatus}"
27
- ></nile-progress-bar>
28
- <p class="horizontal-file-name">${file.name}</p>
29
- </div>
30
- <slot @click=${(e: CustomEvent<RemoveFileDetail>) => cancelFileUpload(file, e)} name="cancelIcon">
31
- <nile-icon
32
- name="close"
33
- size="14"
34
- class="icon"
35
- ></nile-icon>
36
- </slot>
37
- </div>
38
- `;
39
- }
40
-
41
- export function getHorizontalPreviewState(
42
- url: string,
43
- file: File,
44
- originalUrl: string
45
- ): TemplateResult {
46
- return html`
47
- <div class="preview horizontal-div" part="horizontal-preview-state">
48
- <div class="preview-inner">
49
- <div class="preview-image-container">
50
- <img
51
- class="image-preview"
52
- src=${url}
53
- alt=${file.name}
54
- />
55
- </div>
56
- <div class="preview-file-info">
57
- <p>${file.name}</p>
58
- <p>${getFileType(file.type)} &#8226; ${formatFileSize(Number(file.size))}</p>
59
- </div>
60
- </div>
61
- <div class="preview-actions">
62
- <slot @click=${(e: CustomEvent<RemoveFileDetail>) => removeFile(file, e, originalUrl)} name="cancel-icon">
63
- <nile-icon
64
- name="trash"
65
- size="14"
66
- class="icon"
67
- ></nile-icon>
68
- </slot>
69
- </div>
70
- </div>
71
- `;
72
- }
73
-
74
- export function getHorizontalNoPreviewState(
75
- file: File,
76
- originalUrl: string
77
- ): TemplateResult {
78
- return html`
79
- <div class="no-preview horizontal-div" part="horizontal-no-preview-state">
80
- <div class="no-preview-container">
81
- <div class="document-icon">
82
- <nile-icon name="general" size="20" color="var(--nile-colors-blue-500)"></nile-icon>
83
- </div>
84
- <div class="preview-file-info">
85
- <p>${file.name}</p>
86
- <p>${getFileType(file.type)} &#8226; ${formatFileSize(Number(file.size))}</p>
87
- </div>
88
- </div>
89
- <div>
90
- <slot @click=${(e: CustomEvent<RemoveFileDetail>) => removeFile(file, e, originalUrl)} name="cancelIcon">
91
- <nile-icon
92
- name="trash"
93
- size="14"
94
- class="icon"
95
- ></nile-icon>
96
- </slot>
97
- </div>
98
- </div>
99
- `;
100
- }
101
-
102
- export function getHorizontalErrorState(
103
- file: File,
104
- errorMessage: string,
105
- originalUrl: string,
106
- nileFilePreview: NileFilePreview
107
- ): TemplateResult {
108
- truncateString(nileFilePreview);
109
- return html`
110
- <div class="error horizontal-div" part="horizontal-error-state">
111
- <div class="error-container">
112
- <div class="error-icon">
113
- <nile-icon name="info-icon" size="20" color="var(--nile-colors-red-700)"></nile-icon>
114
- </div>
115
- <div class="file-info">
116
- <p class="horizontal-file-name">${file.name}</p>
117
- ${
118
- nileFilePreview.isStringTruncated
119
- ? html`<nile-tooltip content=${errorMessage}>
120
- <span>${errorMessage}</span>
121
- </nile-tooltip>`
122
- : html`<span>${errorMessage}</span>`
123
- }
124
- </div>
125
- </div>
126
- <slot @click=${(e: CustomEvent<RemoveFileDetail>) => removeFile(file, e, originalUrl)} name="cancelIcon">
127
- <nile-icon
128
- name="close"
129
- size="14"
130
- class="icon"
131
- ></nile-icon>
132
- </slot>
133
- </div>
134
- `;
135
- }
136
-
137
- // vertical states
138
- export function getVerticalUploadingState(
139
- file: File,
140
- uploadStatus: number
141
- ): TemplateResult {
142
- return html`
143
- <div class="vertical-div vertical-uploading" part="vertical-uploading-state">
144
- <div class="loading">
145
- <nile-loader width="24" height="24"></nile-loader>
146
- </div>
147
-
148
- <div class="progress-bar-container">
149
- <div class="progress-bar-percent">
150
- <p>Uploading...</p>
151
- <p>${uploadStatus}%</p>
152
- </div>
153
- <nile-progress-bar value=${uploadStatus}></nile-progress-bar>
154
- <p class="vertical-file-name">${file.name}</p>
155
- </div>
156
-
157
- <slot @click=${(e: CustomEvent<RemoveFileDetail>) => cancelFileUpload(file, e)} name="cancelIcon">
158
- <nile-icon
159
- name="close"
160
- size="14"
161
- class="icon corner-icon"
162
- ></nile-icon>
163
- </slot>
164
- </div>
165
- `;
166
- }
167
-
168
-
169
- export function getVerticalPreviewState(
170
- url: string,
171
- file: File,
172
- originalUrl: string
173
- ): TemplateResult {
174
- return html`
175
- <div class="vertical-div vertical-preview" part="vertical-preview-state">
176
- <div>
177
- <img
178
- class="image-preview"
179
- src=${url}
180
- alt=${file.name}
181
- />
182
- </div>
183
-
184
- <div class="content-container">
185
- <p>${file.name}</p>
186
- <p>${getFileType(file.type)} &#8226; ${formatFileSize(Number(file.size))}</p>
187
- </div>
188
-
189
- <slot @click=${(e: CustomEvent<RemoveFileDetail>) => removeFile(file, e, originalUrl)} name="cancelIcon">
190
- <nile-icon
191
- name="trash"
192
- size="14"
193
- class="icon corner-icon"
194
- ></nile-icon>
195
- </slot>
196
- </div>
197
- `;
198
- }
199
-
200
- export function getVerticalNoPreviewState(
201
- file: File,
202
- originalUrl: string
203
- ): TemplateResult {
204
- return html`
205
- <div class="vertical-div vertical-no-preview" part="vertical-no-preview-state">
206
- <div class="vertical-document-icon">
207
- <nile-icon name="general" size="20" color="var(--nile-colors-blue-500)"></nile-icon>
208
- </div>
209
-
210
- <div class="content-container">
211
- <p>${file.name}</p>
212
- <p>${getFileType(file.type)} &#8226; ${formatFileSize(Number(file.size))}</p>
213
- </div>
214
-
215
- <slot @click=${(e: CustomEvent<RemoveFileDetail>) => removeFile(file, e, originalUrl)} name="cancelIcon">
216
- <nile-icon
217
- name="trash"
218
- size="14"
219
- class="icon corner-icon"
220
- ></nile-icon>
221
- </slot>
222
- </div>
223
- `;
224
- }
225
-
226
- export function getVerticalErrorState(
227
- file: File,
228
- errorMessage: string,
229
- originalUrl: string,
230
- nileFilePreview: NileFilePreview
231
- ): TemplateResult {
232
- truncateString(nileFilePreview);
233
- return html`
234
- <div class="vertical-div vertical-error" part="vertical-error-state">
235
- <div class="vertical-document-icon error-bg">
236
- <nile-icon name="info-icon" size="20" color="var(--nile-colors-red-700)"></nile-icon>
237
- </div>
238
-
239
- <div class="file-info-vertical-state">
240
- <p class="vertical-file-name">${file.name}</p>
241
- ${
242
- nileFilePreview.isStringTruncated
243
- ? html`<nile-tooltip content=${errorMessage}>
244
- <span>${errorMessage}</span>
245
- </nile-tooltip>`
246
- : html`<span>${errorMessage}</span>`
247
- }
248
- </div>
249
-
250
- <slot @click=${(e: CustomEvent<RemoveFileDetail>) => removeFile(file, e, originalUrl)} name="cancelIcon">
251
- <nile-icon
252
- name="close"
253
- size="14"
254
- class="icon corner-icon"
255
- ></nile-icon>
256
- </slot>
257
- </div>
258
- `;
259
- }
@@ -1,38 +0,0 @@
1
- /**
2
- * Copyright Aquera Inc 2025
3
- *
4
- * This source code is licensed under the BSD-3-Clause license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
-
8
-
9
- import { fixture, assert, expect, html } from '@open-wc/testing';
10
- import './nile-file-preview'; // Just import to register the element
11
-
12
- describe('<nile-preview>', () => {
13
- let element: HTMLElement;
14
-
15
- beforeEach(async () => {
16
- element = await fixture(html`<nile-file-preview></nile-file-preview>`);
17
- });
18
-
19
- it('passes accessibility test', async () => {
20
- await expect(element).to.be.accessible();
21
- });
22
-
23
- it('renders with the correct tag name', () => {
24
- expect(element.tagName.toLowerCase()).to.equal('nile-preview');
25
- });
26
-
27
- it('renders with slot content when provided', async () => {
28
- const testContent = 'Test Content';
29
- element = await fixture(html`<nile-file-preview>${testContent}</nile-file-preview>`);
30
-
31
- const slot = (element.shadowRoot!.querySelector('slot') as HTMLSlotElement);
32
- assert.exists(slot, 'Slot should exist');
33
-
34
- const assignedNodes = slot.assignedNodes({ flatten: true });
35
- expect(assignedNodes.length).to.be.greaterThan(0);
36
- expect(assignedNodes[0].textContent?.trim()).to.equal(testContent);
37
- });
38
- });
@@ -1,205 +0,0 @@
1
- /**
2
- * Copyright Aquera Inc 2025
3
- *
4
- * This source code is licensed under the BSD-3-Clause license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
-
8
- import {styles} from './nile-file-preview.css';
9
- import NileElement from '../internal/nile-element';
10
- import { customElement, property } from 'lit/decorators.js';
11
- import { generatePreviewUrl } from './utils';
12
- import { FilePreviewState, FilePreviewVariant, FilePreviewErrorMessages, FilePreviewEvent } from './types';
13
- import { LitElement, html, CSSResultArray, TemplateResult, PropertyValues } from 'lit';
14
- import {
15
- getHorizontalErrorState,
16
- getHorizontalNoPreviewState,
17
- getHorizontalPreviewState,
18
- getHorizontalUploadingState,
19
- getVerticalErrorState,
20
- getVerticalNoPreviewState,
21
- getVerticalPreviewState,
22
- getVerticalUploadingState
23
- } from './nile-file-preview.template';
24
-
25
-
26
- /**
27
- * Nile preview component.
28
- *
29
- * @tag nile-preview
30
- *
31
- */
32
- @customElement('nile-file-preview')
33
- export class NileFilePreview extends NileElement {
34
- /**
35
- * The styles for nile-preview
36
- * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`
37
- */
38
- public static get styles(): CSSResultArray {
39
- return [styles];
40
- }
41
-
42
- @property({ type: String }) errorMessage: string = "";
43
- @property({ type: Object }) inputFile: File;
44
- @property({ type: String }) fileUrl: string = "";
45
- @property({ type: Number }) uploadStatus: number = 0;
46
- @property({ type: String }) state: FilePreviewState = FilePreviewState.DEFAULT;
47
- @property({ type: String }) variant: FilePreviewVariant = FilePreviewVariant.HORIZONTAL;
48
- @property({ type: String }) inputFileName: string = "";
49
- private inputFileHtml: TemplateResult | null = null;
50
- private originalUrl: string = "";
51
- public isStringTruncated: boolean = false;
52
-
53
- /**
54
- * Render method
55
- * @slot This is a slot test
56
- */
57
-
58
- connectedCallback(): void {
59
- super.connectedCallback();
60
- this.emit(FilePreviewEvent.NILE_INIT);
61
- }
62
-
63
- protected firstUpdated(_changedProperties: PropertyValues): void {
64
- super.firstUpdated(_changedProperties);
65
- }
66
-
67
- protected updated(changedProperties: PropertyValues): void {
68
- if(changedProperties.has('uploadStatus') && this.uploadStatus) {
69
- if(this.uploadStatus < 100) {
70
- this.createUploadState(this.inputFile, this.uploadStatus);
71
- } else {
72
- this.createState(this.inputFile);
73
- }
74
- } else if (changedProperties.has('inputFile') && this.inputFile) {
75
- this.createState(this.inputFile);
76
- this.emit(FilePreviewEvent.NILE_RECEIVE);
77
-
78
- } else if (changedProperties.has('fileUrl') && this.fileUrl) {
79
- this.handleFileUrl(this.fileUrl);
80
- this.emit(FilePreviewEvent.NILE_RECEIVE);
81
-
82
- } else if (changedProperties.has('errorMessage')) {
83
- this.createState(this.inputFile);
84
- }
85
- }
86
-
87
- private createUploadState( file: File, uploadStatus: number): void {
88
- const isHorizontal = this.variant === FilePreviewVariant.HORIZONTAL;
89
-
90
- this.inputFileHtml = isHorizontal
91
- ? getHorizontalUploadingState(file, uploadStatus)
92
- : getVerticalUploadingState(file, uploadStatus);
93
-
94
- this.requestUpdate();
95
- }
96
-
97
- private async handleFileUrl(url: string): Promise<void> {
98
- this.originalUrl = url;
99
- try {
100
- const response = await fetch(url);
101
- const blob = await response.blob();
102
- const fileName = this.inputFileName || url.split('/').pop() || FilePreviewErrorMessages.UNKNOWN_FILE_NAME;
103
- const file = new File([blob], fileName, { type: blob.type });
104
-
105
- this.createState(file);
106
- } catch (error) {
107
- const dummyFile = new File([], this.inputFileName || FilePreviewErrorMessages.UNKNOWN_FILE_NAME, { type: 'application/octet-stream' });
108
- this.errorMessage = FilePreviewErrorMessages.FAILED_TO_LOAD;
109
- console.error(this.errorMessage);
110
-
111
- this.inputFileHtml = this.variant === FilePreviewVariant.HORIZONTAL
112
- ? getHorizontalErrorState(dummyFile, this.errorMessage, this.originalUrl, this)
113
- : getVerticalErrorState(dummyFile, this.errorMessage, this.originalUrl, this);
114
- this.requestUpdate();
115
- }
116
- }
117
-
118
- public async createState(file: File): Promise<void> {
119
- const isHorizontal = this.variant === FilePreviewVariant.HORIZONTAL;
120
-
121
- if (!this.errorMessage) {
122
- if (file && file.type.startsWith('image/')) {
123
- try {
124
- const url = await generatePreviewUrl(file);
125
- this.inputFileHtml = isHorizontal
126
- ? getHorizontalPreviewState(url, file, this.originalUrl)
127
- : getVerticalPreviewState(url, file, this.originalUrl);
128
- } catch (error) {
129
- this.inputFileHtml = isHorizontal
130
- ? getHorizontalNoPreviewState(file, this.originalUrl)
131
- : getVerticalNoPreviewState(file, this.originalUrl);
132
- }
133
- } else {
134
- this.inputFileHtml = isHorizontal
135
- ? getHorizontalNoPreviewState(file, this.originalUrl)
136
- : getVerticalNoPreviewState(file, this.originalUrl);
137
- }
138
- } else {
139
- this.inputFileHtml = isHorizontal
140
- ? getHorizontalErrorState(file, this.errorMessage, this.originalUrl, this)
141
- : getVerticalErrorState(file, this.errorMessage, this.originalUrl, this);
142
- }
143
- this.requestUpdate();
144
- }
145
-
146
- private customFile = new File([], "Harsh", { type: "image/png" })
147
-
148
- getState(): TemplateResult {
149
- if(this.variant === "horizontal") return this.getHorizontalStates();
150
- return this.getVerticalStates();
151
- }
152
-
153
- getHorizontalStates(): TemplateResult {
154
- switch(this.state) {
155
- case FilePreviewState.UPLOADING:
156
- return getHorizontalUploadingState(this.customFile, 2);
157
- case FilePreviewState.PREVIEW:
158
- return getHorizontalPreviewState("https://s6.imgcdn.dev/YINe6a.jpg", this.customFile, this.originalUrl);
159
- case FilePreviewState.NO_PREVIEW:
160
- return getHorizontalNoPreviewState(this.customFile, this.originalUrl);
161
- case FilePreviewState.ERROR:
162
- return getHorizontalErrorState(this.customFile, FilePreviewErrorMessages.CUSTOM_ERROR, this.originalUrl, this);
163
- default:
164
- return this.inputFileHtml || html``;
165
- }
166
- }
167
-
168
- getVerticalStates(): TemplateResult {
169
- switch(this.state) {
170
- case FilePreviewState.UPLOADING:
171
- return getVerticalUploadingState(this.customFile, 2);
172
- case FilePreviewState.PREVIEW:
173
- return getVerticalPreviewState("https://s6.imgcdn.dev/YINe6a.jpg", this.customFile, this.originalUrl);
174
- case FilePreviewState.NO_PREVIEW:
175
- return getVerticalNoPreviewState(this.customFile, this.originalUrl);
176
- case FilePreviewState.ERROR:
177
- return getVerticalErrorState(this.customFile, FilePreviewErrorMessages.CUSTOM_ERROR, this.originalUrl, this);
178
- default:
179
- return this.inputFileHtml || html``;
180
- }
181
- }
182
-
183
- public render(): TemplateResult {
184
- if (this.state) {
185
- return this.getState();
186
- }
187
- return html`${this.inputFileHtml ?? html``}`;
188
- }
189
-
190
-
191
- disconnectedCallback(): void {
192
- super.disconnectedCallback();
193
- this.emit(FilePreviewEvent.NILE_DESTROY);
194
- }
195
-
196
- /* #endregion */
197
- }
198
-
199
- export default NileFilePreview;
200
-
201
- declare global {
202
- interface HTMLElementTagNameMap {
203
- 'nile-file-preview': NileFilePreview;
204
- }
205
- }
@@ -1,2 +0,0 @@
1
- export * from './nile-file-preview.enums';
2
- export * from './nile-file-preview.interface';
@@ -1,32 +0,0 @@
1
- export enum FilePreviewState {
2
- DEFAULT = 'default',
3
- UPLOADING = 'uploading',
4
- PREVIEW = 'preview',
5
- NO_PREVIEW = 'no-preview',
6
- ERROR = 'error'
7
- }
8
-
9
- export enum FilePreviewVariant {
10
- HORIZONTAL = 'horizontal',
11
- VERTICAL = 'vertical'
12
- }
13
-
14
- export enum FilePreviewErrorMessages {
15
- INVALID_FORMAT = "Invalid File Format. Please try again.",
16
- SIZE_LIMIT = "File exceeds size limit.",
17
- FAILED_TO_LOAD = "Failed to load file from URL",
18
- UNKNOWN_FILE_NAME = 'unknown-file',
19
- UPLOAD_CANCEL = "File upload cancelled.",
20
- NO_FILE_SELECTED = "No file selected.",
21
- UNABLE_TO_GENEARTE_URL = "Unable to generate the url.",
22
- NETWORK_ERROR = "Network error! Please try again later.",
23
- CUSTOM_ERROR = "Error Occured!"
24
- }
25
-
26
- export enum FilePreviewEvent {
27
- NILE_INIT = "nile-init",
28
- NILE_RECEIVE = "nile-receive",
29
- NILE_REMOVE = "nile-remove",
30
- NILE_CANCEL_UPLOAD = "nile-cancel-upload",
31
- NILE_DESTROY = "nile-destroy"
32
- }
@@ -1,4 +0,0 @@
1
- export type RemoveFileDetail = {
2
- value: File;
3
- url: string;
4
- };
@@ -1 +0,0 @@
1
- export * from './nile-file-preview.util'
@@ -1,72 +0,0 @@
1
- import NileFilePreview from "../nile-file-preview";
2
- import { RemoveFileDetail, FilePreviewEvent, FilePreviewErrorMessages } from "../types";
3
-
4
- export const generatePreviewUrl = (file: File): Promise<string> => {
5
- return new Promise((resolve, reject) => {
6
- const reader = new FileReader();
7
-
8
- if (file) {
9
- reader.readAsDataURL(file);
10
- } else {
11
- reject(FilePreviewErrorMessages.NO_FILE_SELECTED);
12
- }
13
-
14
- reader.onload = () => {
15
- const previewUrl = reader.result as string;
16
- resolve(previewUrl);
17
- };
18
-
19
- reader.onerror = (error) => {
20
- reject(FilePreviewErrorMessages.UNABLE_TO_GENEARTE_URL);
21
- }
22
- });
23
- }
24
-
25
- export const removeFile = (removeFile: File, e: CustomEvent<RemoveFileDetail>, originalUrl: string): void => {
26
- if (e.target) {
27
- e.target.dispatchEvent(
28
- new CustomEvent(FilePreviewEvent.NILE_REMOVE, {
29
- detail: { value: removeFile, url: originalUrl },
30
- bubbles: true,
31
- composed: true,
32
- })
33
- );
34
- }
35
- };
36
-
37
- export const cancelFileUpload = (file: File, e: CustomEvent<RemoveFileDetail>) => {
38
- if(e.target) {
39
- e.target.dispatchEvent(
40
- new CustomEvent(FilePreviewEvent.NILE_CANCEL_UPLOAD, {
41
- detail: { file: file },
42
- bubbles: true,
43
- composed: true,
44
- })
45
- );
46
- }
47
- }
48
-
49
- export const formatFileSize = (bytes: number): string => {
50
- const kb = bytes / 1024;
51
- const mb = kb / 1024;
52
- const gb = mb / 1024;
53
-
54
- if (gb >= 1) return gb.toFixed(2) + ' GB';
55
- if (mb >= 1) return mb.toFixed(2) + ' MB';
56
- if (kb >= 1) return kb.toFixed(2) + ' KB';
57
- return bytes + ' B';
58
- }
59
-
60
- export const getFileType = (type: string): string => {
61
- return type.split('/')[1].toUpperCase();
62
- }
63
-
64
- export const truncateString = (nileFilePreview: NileFilePreview): void => {
65
- if(nileFilePreview.variant === 'vertical' && nileFilePreview.errorMessage.length > 34) {
66
- nileFilePreview.isStringTruncated = true;
67
- nileFilePreview.requestUpdate();
68
- } else if(nileFilePreview.variant === 'horizontal' && nileFilePreview.errorMessage.length > 96) {
69
- nileFilePreview.isStringTruncated = true;
70
- nileFilePreview.requestUpdate();
71
- }
72
- }
@@ -1 +0,0 @@
1
- export { NileFileUpload } from './nile-file-upload';