@aquera/nile-elements 0.1.36-beta-1.2 → 0.1.36-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 (234) hide show
  1. package/README.md +12 -72
  2. package/demo/index.css +4 -7
  3. package/demo/index.html +38 -20
  4. package/demo/variables.css +0 -13
  5. package/demo/variables_v2.css +0 -13
  6. package/dist/fixture-178ed8d2.esm.js +569 -0
  7. package/dist/{fixture-d5b55278.cjs.js → fixture-bb486165.cjs.js} +2 -2
  8. package/dist/{fixture-d5b55278.cjs.js.map → fixture-bb486165.cjs.js.map} +1 -1
  9. package/dist/{fixture-df8b52d7.esm.js → fixture-c4e75e04.esm.js} +1 -1
  10. package/dist/fixture-d7bf42eb.cjs.js +395 -0
  11. package/dist/fixture-d7bf42eb.cjs.js.map +1 -0
  12. package/dist/index.cjs.js +1 -1
  13. package/dist/index.esm.js +1 -1
  14. package/dist/internal/animate.cjs.js +1 -1
  15. package/dist/internal/animate.cjs.js.map +1 -1
  16. package/dist/internal/animate.esm.js +1 -1
  17. package/dist/nile-accordion/nile-accordian.test.cjs.js +1 -1
  18. package/dist/nile-accordion/nile-accordian.test.esm.js +1 -1
  19. package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js +1 -1
  20. package/dist/nile-auto-complete/nile-auto-complete.test.esm.js +1 -1
  21. package/dist/nile-avatar/nile-avatar.test.cjs.js +1 -1
  22. package/dist/nile-avatar/nile-avatar.test.esm.js +1 -1
  23. package/dist/nile-badge/nile-badge.test.cjs.js +1 -1
  24. package/dist/nile-badge/nile-badge.test.esm.js +1 -1
  25. package/dist/nile-button/nile-button.test.cjs.js +1 -1
  26. package/dist/nile-button/nile-button.test.esm.js +1 -1
  27. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js +1 -1
  28. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.esm.js +1 -1
  29. package/dist/nile-calendar/nile-calendar.test.cjs.js +1 -1
  30. package/dist/nile-calendar/nile-calendar.test.esm.js +1 -1
  31. package/dist/nile-card/nile-card.test.cjs.js +1 -1
  32. package/dist/nile-card/nile-card.test.esm.js +1 -1
  33. package/dist/nile-checkbox/nile-checkbox.test.cjs.js +1 -1
  34. package/dist/nile-checkbox/nile-checkbox.test.esm.js +1 -1
  35. package/dist/nile-chip/nile-chip.cjs.js +1 -1
  36. package/dist/nile-chip/nile-chip.cjs.js.map +1 -1
  37. package/dist/nile-chip/nile-chip.esm.js +8 -17
  38. package/dist/nile-chip/nile-chip.test.cjs.js +1 -1
  39. package/dist/nile-chip/nile-chip.test.esm.js +1 -1
  40. package/dist/nile-dialog/nile-dialog.test.cjs.js +1 -1
  41. package/dist/nile-dialog/nile-dialog.test.esm.js +1 -1
  42. package/dist/nile-drawer/nile-drawer.test.cjs.js +1 -1
  43. package/dist/nile-drawer/nile-drawer.test.esm.js +1 -1
  44. package/dist/nile-dropdown/nile-dropdown.test.cjs.js +1 -1
  45. package/dist/nile-dropdown/nile-dropdown.test.esm.js +1 -1
  46. package/dist/nile-empty-state/nile-empty-state.test.cjs.js +1 -1
  47. package/dist/nile-empty-state/nile-empty-state.test.esm.js +1 -1
  48. package/dist/nile-error-message/nile-error-message.cjs.js +1 -1
  49. package/dist/nile-error-message/nile-error-message.cjs.js.map +1 -1
  50. package/dist/nile-error-message/nile-error-message.css.cjs.js +1 -1
  51. package/dist/nile-error-message/nile-error-message.css.cjs.js.map +1 -1
  52. package/dist/nile-error-message/nile-error-message.css.esm.js +4 -6
  53. package/dist/nile-error-message/nile-error-message.esm.js +4 -4
  54. package/dist/nile-error-message/nile-error-message.test.cjs.js +1 -1
  55. package/dist/nile-error-message/nile-error-message.test.esm.js +1 -1
  56. package/dist/nile-error-notification/nile-error-notification.css.cjs.js +1 -1
  57. package/dist/nile-error-notification/nile-error-notification.css.cjs.js.map +1 -1
  58. package/dist/nile-error-notification/nile-error-notification.css.esm.js +1 -1
  59. package/dist/nile-filter-chip/nile-filter-chip.cjs.js +1 -1
  60. package/dist/nile-filter-chip/nile-filter-chip.cjs.js.map +1 -1
  61. package/dist/nile-filter-chip/nile-filter-chip.css.cjs.js +1 -1
  62. package/dist/nile-filter-chip/nile-filter-chip.css.cjs.js.map +1 -1
  63. package/dist/nile-filter-chip/nile-filter-chip.css.esm.js +17 -40
  64. package/dist/nile-filter-chip/nile-filter-chip.esm.js +8 -17
  65. package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js +1 -1
  66. package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js.map +1 -1
  67. package/dist/nile-filter-chip/nile-filter-chip.test.esm.js +12 -12
  68. package/dist/nile-form-group/nile-form-group.test.cjs.js +1 -1
  69. package/dist/nile-form-group/nile-form-group.test.esm.js +1 -1
  70. package/dist/nile-form-help-text/nile-form-help-text.test.cjs.js +1 -1
  71. package/dist/nile-form-help-text/nile-form-help-text.test.esm.js +1 -1
  72. package/dist/nile-hero/nile-hero.test.cjs.js +1 -1
  73. package/dist/nile-hero/nile-hero.test.esm.js +1 -1
  74. package/dist/nile-icon/icons/svg/accessreview.cjs.js +1 -1
  75. package/dist/nile-icon/icons/svg/accessreview.cjs.js.map +1 -1
  76. package/dist/nile-icon/icons/svg/accessreview.esm.js +1 -1
  77. package/dist/nile-icon/nile-icon.test.cjs.js +1 -1
  78. package/dist/nile-icon/nile-icon.test.esm.js +1 -1
  79. package/dist/nile-input/nile-input.test.cjs.js +1 -1
  80. package/dist/nile-input/nile-input.test.esm.js +1 -1
  81. package/dist/nile-link/nile-link.test.cjs.js +1 -1
  82. package/dist/nile-link/nile-link.test.esm.js +1 -1
  83. package/dist/nile-loader/nile-loader.test.cjs.js +1 -1
  84. package/dist/nile-loader/nile-loader.test.esm.js +1 -1
  85. package/dist/nile-popover/nile-popover.test.cjs.js +1 -1
  86. package/dist/nile-popover/nile-popover.test.esm.js +1 -1
  87. package/dist/nile-popup/nile-popup.test.cjs.js +1 -1
  88. package/dist/nile-popup/nile-popup.test.esm.js +1 -1
  89. package/dist/nile-progress-bar/nile-progress-bar.css.cjs.js +1 -1
  90. package/dist/nile-progress-bar/nile-progress-bar.css.cjs.js.map +1 -1
  91. package/dist/nile-progress-bar/nile-progress-bar.css.esm.js +0 -1
  92. package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js +1 -1
  93. package/dist/nile-progress-bar/nile-progress-bar.test.esm.js +1 -1
  94. package/dist/nile-radio/nile-radio.test.cjs.js +1 -1
  95. package/dist/nile-radio/nile-radio.test.esm.js +1 -1
  96. package/dist/nile-radio-group/nile-radio-group.test.cjs.js +1 -1
  97. package/dist/nile-radio-group/nile-radio-group.test.esm.js +1 -1
  98. package/dist/nile-select/nile-select.cjs.js +1 -1
  99. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  100. package/dist/nile-select/nile-select.esm.js +1 -1
  101. package/dist/nile-select/nile-select.test.cjs.js +1 -1
  102. package/dist/nile-select/nile-select.test.esm.js +1 -1
  103. package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js +1 -1
  104. package/dist/nile-slide-toggle/nile-slide-toggle.test.esm.js +1 -1
  105. package/dist/nile-tab-group/nile-tab-group.test.cjs.js +1 -1
  106. package/dist/nile-tab-group/nile-tab-group.test.esm.js +1 -1
  107. package/dist/nile-table/nile-table.cjs.js.map +1 -1
  108. package/dist/nile-textarea/nile-textarea.test.cjs.js +1 -1
  109. package/dist/nile-textarea/nile-textarea.test.esm.js +1 -1
  110. package/dist/nile-tooltip/index.cjs.js +1 -1
  111. package/dist/nile-tooltip/index.esm.js +1 -1
  112. package/dist/nile-tooltip/nile-tooltip.cjs.js +1 -1
  113. package/dist/nile-tooltip/nile-tooltip.cjs.js.map +1 -1
  114. package/dist/nile-tooltip/nile-tooltip.css.cjs.js +1 -1
  115. package/dist/nile-tooltip/nile-tooltip.css.cjs.js.map +1 -1
  116. package/dist/nile-tooltip/nile-tooltip.css.esm.js +45 -78
  117. package/dist/nile-tooltip/nile-tooltip.esm.js +28 -23
  118. package/dist/nile-tooltip/nile-tooltip.test.cjs.js +1 -1
  119. package/dist/nile-tooltip/nile-tooltip.test.esm.js +1 -1
  120. package/dist/src/index.d.ts +0 -1
  121. package/dist/src/index.js +0 -1
  122. package/dist/src/index.js.map +1 -1
  123. package/dist/src/nile-chip/nile-chip.js +0 -9
  124. package/dist/src/nile-chip/nile-chip.js.map +1 -1
  125. package/dist/src/nile-error-message/nile-error-message.css.js +4 -6
  126. package/dist/src/nile-error-message/nile-error-message.css.js.map +1 -1
  127. package/dist/src/nile-error-message/nile-error-message.d.ts +0 -4
  128. package/dist/src/nile-error-message/nile-error-message.js +0 -20
  129. package/dist/src/nile-error-message/nile-error-message.js.map +1 -1
  130. package/dist/src/nile-error-notification/nile-error-notification.css.js +1 -1
  131. package/dist/src/nile-error-notification/nile-error-notification.css.js.map +1 -1
  132. package/dist/src/nile-filter-chip/nile-filter-chip.css.js +17 -40
  133. package/dist/src/nile-filter-chip/nile-filter-chip.css.js.map +1 -1
  134. package/dist/src/nile-filter-chip/nile-filter-chip.d.ts +2 -3
  135. package/dist/src/nile-filter-chip/nile-filter-chip.js +10 -23
  136. package/dist/src/nile-filter-chip/nile-filter-chip.js.map +1 -1
  137. package/dist/src/nile-filter-chip/nile-filter-chip.test.js +7 -7
  138. package/dist/src/nile-filter-chip/nile-filter-chip.test.js.map +1 -1
  139. package/dist/src/nile-icon/icons/svg/accessreview.d.ts +1 -1
  140. package/dist/src/nile-icon/icons/svg/accessreview.js +1 -1
  141. package/dist/src/nile-icon/icons/svg/accessreview.js.map +1 -1
  142. package/dist/src/nile-new-error/index.d.ts +1 -0
  143. package/dist/src/nile-new-error/index.js +2 -0
  144. package/dist/src/nile-new-error/index.js.map +1 -0
  145. package/dist/src/nile-new-error/nile-new-error.css.d.ts +12 -0
  146. package/dist/src/nile-new-error/nile-new-error.css.js +38 -0
  147. package/dist/src/nile-new-error/nile-new-error.css.js.map +1 -0
  148. package/dist/src/nile-new-error/nile-new-error.d.ts +36 -0
  149. package/dist/src/nile-new-error/nile-new-error.js +74 -0
  150. package/dist/src/nile-new-error/nile-new-error.js.map +1 -0
  151. package/dist/src/nile-progress-bar/nile-progress-bar.css.js +0 -1
  152. package/dist/src/nile-progress-bar/nile-progress-bar.css.js.map +1 -1
  153. package/dist/src/nile-select/nile-select.js +1 -1
  154. package/dist/src/nile-select/nile-select.js.map +1 -1
  155. package/dist/src/nile-table/nile-table.js.map +1 -1
  156. package/dist/src/nile-tooltip/nile-tooltip.css.js +43 -76
  157. package/dist/src/nile-tooltip/nile-tooltip.css.js.map +1 -1
  158. package/dist/src/nile-tooltip/nile-tooltip.d.ts +46 -24
  159. package/dist/src/nile-tooltip/nile-tooltip.js +232 -235
  160. package/dist/src/nile-tooltip/nile-tooltip.js.map +1 -1
  161. package/dist/src/nile-virtual-list/index.d.ts +1 -0
  162. package/dist/src/nile-virtual-list/index.js +2 -0
  163. package/dist/src/nile-virtual-list/index.js.map +1 -0
  164. package/dist/src/nile-virtual-list/nile-virtual-list.css.d.ts +12 -0
  165. package/dist/src/nile-virtual-list/nile-virtual-list.css.js +25 -0
  166. package/dist/src/nile-virtual-list/nile-virtual-list.css.js.map +1 -0
  167. package/dist/src/nile-virtual-list/nile-virtual-list.d.ts +28 -0
  168. package/dist/src/nile-virtual-list/nile-virtual-list.js +69 -0
  169. package/dist/src/nile-virtual-list/nile-virtual-list.js.map +1 -0
  170. package/dist/src/nile-virtual-scroll/index.d.ts +1 -0
  171. package/dist/src/nile-virtual-scroll/index.js +2 -0
  172. package/dist/src/nile-virtual-scroll/index.js.map +1 -0
  173. package/dist/src/nile-virtual-scroll/nile-virtual-scroll.css.d.ts +12 -0
  174. package/dist/src/nile-virtual-scroll/nile-virtual-scroll.css.js +17 -0
  175. package/dist/src/nile-virtual-scroll/nile-virtual-scroll.css.js.map +1 -0
  176. package/dist/src/nile-virtual-scroll/nile-virtual-scroll.d.ts +54 -0
  177. package/dist/src/nile-virtual-scroll/nile-virtual-scroll.js +196 -0
  178. package/dist/src/nile-virtual-scroll/nile-virtual-scroll.js.map +1 -0
  179. package/dist/src/nile-virtual-scroll/nile-virtual-scroll.utils.d.ts +23 -0
  180. package/dist/src/nile-virtual-scroll/nile-virtual-scroll.utils.js +48 -0
  181. package/dist/src/nile-virtual-scroll/nile-virtual-scroll.utils.js.map +1 -0
  182. package/dist/src/nile-virtual-select/event-handlers.d.ts +19 -0
  183. package/dist/src/nile-virtual-select/event-handlers.js +153 -0
  184. package/dist/src/nile-virtual-select/event-handlers.js.map +1 -0
  185. package/dist/src/nile-virtual-select/index.d.ts +1 -0
  186. package/dist/src/nile-virtual-select/index.js +2 -0
  187. package/dist/src/nile-virtual-select/index.js.map +1 -0
  188. package/dist/src/nile-virtual-select/models.d.ts +33 -0
  189. package/dist/src/nile-virtual-select/models.js +5 -0
  190. package/dist/src/nile-virtual-select/models.js.map +1 -0
  191. package/dist/src/nile-virtual-select/nile-virtual-select.css.d.ts +12 -0
  192. package/dist/src/nile-virtual-select/nile-virtual-select.css.js +463 -0
  193. package/dist/src/nile-virtual-select/nile-virtual-select.css.js.map +1 -0
  194. package/dist/src/nile-virtual-select/nile-virtual-select.d.ts +239 -0
  195. package/dist/src/nile-virtual-select/nile-virtual-select.js +1287 -0
  196. package/dist/src/nile-virtual-select/nile-virtual-select.js.map +1 -0
  197. package/dist/src/nile-virtual-select/nile-virtual-select.test.js +2 -0
  198. package/dist/src/nile-virtual-select/nile-virtual-select.test.js.map +1 -0
  199. package/dist/src/nile-virtual-select/nile-virtual-select.utils.d.ts +0 -0
  200. package/dist/src/nile-virtual-select/nile-virtual-select.utils.js +2 -0
  201. package/dist/src/nile-virtual-select/nile-virtual-select.utils.js.map +1 -0
  202. package/dist/src/nile-virtual-select/option-utils.d.ts +15 -0
  203. package/dist/src/nile-virtual-select/option-utils.js +59 -0
  204. package/dist/src/nile-virtual-select/option-utils.js.map +1 -0
  205. package/dist/tsconfig.tsbuildinfo +1 -1
  206. package/package.json +2 -2
  207. package/plop-templates/lit/index.ts.hbs +1 -1
  208. package/plop-templates/lit/lit.css.ts.hbs +1 -1
  209. package/plop-templates/lit/lit.ts.hbs +3 -7
  210. package/plopfile.js +1 -32
  211. package/src/index.ts +1 -2
  212. package/src/nile-chip/nile-chip.ts +0 -9
  213. package/src/nile-error-message/nile-error-message.css.ts +4 -6
  214. package/src/nile-error-message/nile-error-message.ts +0 -18
  215. package/src/nile-error-notification/nile-error-notification.css.ts +1 -1
  216. package/src/nile-icon/icons/svg/accessreview.ts +1 -1
  217. package/src/nile-progress-bar/nile-progress-bar.css.ts +0 -1
  218. package/src/nile-select/nile-select.ts +1 -1
  219. package/src/nile-table/nile-table.ts +2 -2
  220. package/src/nile-tooltip/nile-tooltip.css.ts +44 -77
  221. package/src/nile-tooltip/nile-tooltip.ts +230 -268
  222. package/vscode-html-custom-data.json +95 -144
  223. package/plop-templates/lit/lit.template.ts.hbs +0 -3
  224. package/plop-templates/lit/lit.test.ts.hbs +0 -38
  225. package/plop-templates/lit/sub-components/index.ts.hbs +0 -4
  226. package/plop-templates/lit/types/type.ts.hbs +0 -3
  227. package/plop-templates/lit/utils/lit.utils.ts.hbs +0 -4
  228. package/src/nile-filter-chip/index.ts +0 -1
  229. package/src/nile-filter-chip/nile-filter-chip.css.ts +0 -138
  230. package/src/nile-filter-chip/nile-filter-chip.test.ts +0 -92
  231. package/src/nile-filter-chip/nile-filter-chip.ts +0 -136
  232. package/src/nile-tooltip/nile-tooltip-utils.ts +0 -271
  233. package/src/nile-tooltip/nile-tooltip.test.ts +0 -168
  234. /package/{plop-templates/lit/types/index.ts.hbs → dist/src/nile-virtual-select/nile-virtual-select.test.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nile-virtual-scroll.utils.js","sourceRoot":"","sources":["../../../src/nile-virtual-scroll/nile-virtual-scroll.utils.ts"],"names":[],"mappings":"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","sourcesContent":["interface ScrollParams {\n currentScrollTop: number;\n itemHeight: number;\n height: number;\n items: any[];\n bufferSize: number;\n}\n\ninterface GetVisibleItemsParams {\n startIndex: number;\n endIndex: number;\n items: any[];\n templateContent: any;\n}\n\nexport const VIRTUAL_LIST_KEY = 'data-itemValue';\n\nexport const stringToDOM = (htmlString: string) => {\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n return doc.body.firstChild; // Returns the first element\n};\n\nexport const interpolateString = (template: string, item: any): string => {\n return new Function('item', `return \\`${template}\\`;`)(item);\n};\n\nexport const isHTMLElement = (obj: any) => {\n return obj instanceof HTMLElement;\n};\n\nexport const getStartAndEndIndices = ({\n currentScrollTop,\n itemHeight,\n height,\n items,\n bufferSize,\n}: ScrollParams): { startIndex: number; endIndex: number } => {\n let startIndex = Math.floor(currentScrollTop / itemHeight);\n let endIndex =\n startIndex +\n Math.min(Math.ceil(height / itemHeight), items.length) +\n Math.floor((bufferSize * 2) / itemHeight);\n\n if (startIndex < 0) {\n startIndex = 0;\n }\n\n if (endIndex >= items.length) {\n endIndex = items.length - 1;\n }\n\n return { startIndex, endIndex };\n};\n\nexport const getVisibleItems = ({\n startIndex,\n endIndex,\n items,\n templateContent,\n}: GetVisibleItemsParams): HTMLElement[] => {\n const currentVisibleItems: HTMLElement[] = [];\n let currentVisibleIndices = Array.from(\n { length: endIndex - startIndex + 1 },\n (_, index) => startIndex + index\n );\n\n for(let visibleIndex of currentVisibleIndices) {\n const virtualItem = items[visibleIndex];\n if (isHTMLElement(virtualItem)) {\n if (!currentVisibleItems.includes(virtualItem)) {\n currentVisibleItems.push(virtualItem);\n }\n } else {\n if(currentVisibleIndices.includes(virtualItem.index)) {\n let element = stringToDOM(\n interpolateString(templateContent, virtualItem)\n ) as HTMLElement;\n if (element) {\n element.setAttribute(VIRTUAL_LIST_KEY, `${virtualItem.name}`);\n currentVisibleItems.push(element);\n }\n }\n }\n }\n\n return currentVisibleItems;\n};\n"]}
@@ -0,0 +1,19 @@
1
+ import type { NileVirtualSelect } from './nile-virtual-select';
2
+ export declare class SelectEventHandlers {
3
+ private select;
4
+ constructor(select: NileVirtualSelect);
5
+ setupEventHandlers(): void;
6
+ addOpenListeners(): void;
7
+ removeOpenListeners(): void;
8
+ removeEventHandlers(): void;
9
+ handleFocus(): void;
10
+ handleBlur(): void;
11
+ handleDocumentFocusIn(event: FocusEvent): void;
12
+ handleDocumentKeyDown(event: KeyboardEvent): void;
13
+ handleDocumentMouseDown(event: MouseEvent): void;
14
+ handleLabelClick(): void;
15
+ handleComboboxMouseDown(event: MouseEvent): void;
16
+ handleComboboxKeyDown(event: KeyboardEvent): void;
17
+ handleSearchFocus(): void;
18
+ handleSearchBlur(): void;
19
+ }
@@ -0,0 +1,153 @@
1
+ export class SelectEventHandlers {
2
+ constructor(select) {
3
+ this.select = select;
4
+ // Bind methods to this instance
5
+ this.handleDocumentFocusIn = this.handleDocumentFocusIn.bind(this);
6
+ this.handleDocumentKeyDown = this.handleDocumentKeyDown.bind(this);
7
+ this.handleDocumentMouseDown = this.handleDocumentMouseDown.bind(this);
8
+ }
9
+ setupEventHandlers() {
10
+ // No listeners added initially - they're added when the select opens
11
+ }
12
+ addOpenListeners() {
13
+ document.addEventListener('focusin', this.handleDocumentFocusIn);
14
+ document.addEventListener('keydown', this.handleDocumentKeyDown);
15
+ document.addEventListener('mousedown', this.handleDocumentMouseDown);
16
+ }
17
+ removeOpenListeners() {
18
+ document.removeEventListener('focusin', this.handleDocumentFocusIn);
19
+ document.removeEventListener('keydown', this.handleDocumentKeyDown);
20
+ document.removeEventListener('mousedown', this.handleDocumentMouseDown);
21
+ }
22
+ removeEventHandlers() {
23
+ this.removeOpenListeners();
24
+ }
25
+ handleFocus() {
26
+ this.select.hasFocus = true;
27
+ this.select.displayInput.setSelectionRange(0, 0);
28
+ this.select.emit('nile-focus', { value: this.select.value, name: this.select.name });
29
+ }
30
+ handleBlur() {
31
+ this.select.hasFocus = false;
32
+ this.select.emit('nile-blur', { value: this.select.value, name: this.select.name });
33
+ }
34
+ handleDocumentFocusIn(event) {
35
+ // Close when focusing out of the select
36
+ const path = event.composedPath();
37
+ if (this.select && !path.includes(this.select)) {
38
+ this.select.hide();
39
+ }
40
+ }
41
+ handleDocumentKeyDown(event) {
42
+ const target = event.target;
43
+ const isClearButton = target.closest('.select__clear') !== null;
44
+ const isIconButton = target.closest('nile-icon-button') !== null;
45
+ // Ignore presses when the target is an icon button (e.g. the remove button in <nile-tag>)
46
+ if (isClearButton || isIconButton) {
47
+ return;
48
+ }
49
+ // Close when pressing escape
50
+ if (event.key === 'Escape' && this.select.open) {
51
+ event.preventDefault();
52
+ event.stopPropagation();
53
+ this.select.hide();
54
+ this.select.displayInput.focus({ preventScroll: true });
55
+ }
56
+ // Handle enter and space. When pressing space, we allow for type to select behaviors so if there's anything in the
57
+ // buffer we _don't_ close it.
58
+ if (event.key === 'Enter' ||
59
+ (event.key === ' ' && this.select.typeToSelectString === '')) {
60
+ event.preventDefault();
61
+ event.stopImmediatePropagation();
62
+ // If it's not open, open it
63
+ if (!this.select.open) {
64
+ this.select.show();
65
+ return;
66
+ }
67
+ // If it is open, update the value based on the current selection and close it
68
+ if (this.select.currentOption && !this.select.currentOption.disabled) {
69
+ if (this.select.multiple) {
70
+ this.select.toggleOptionSelection(this.select.currentOption);
71
+ }
72
+ else {
73
+ this.select.setSelectedOptions(this.select.currentOption);
74
+ }
75
+ // Emit after updating
76
+ this.select.updateComplete.then(() => {
77
+ this.select.nileInput({ value: this.select.value, name: this.select.name });
78
+ this.select.nileChange({ value: this.select.value, name: this.select.name });
79
+ });
80
+ if (!this.select.multiple) {
81
+ this.select.hide();
82
+ this.select.displayInput.focus({ preventScroll: true });
83
+ }
84
+ }
85
+ return;
86
+ }
87
+ // All other "printable" keys trigger type to select
88
+ if (event.key.length === 1 || event.key === 'Backspace') {
89
+ const allOptions = this.select.optionUtils.getAllOptions(this.select);
90
+ // Don't block important key combos like CMD+R
91
+ if (event.metaKey || event.ctrlKey || event.altKey) {
92
+ return;
93
+ }
94
+ // Open, unless the key that triggered is backspace
95
+ if (!this.select.open) {
96
+ if (event.key === 'Backspace') {
97
+ return;
98
+ }
99
+ this.select.show();
100
+ }
101
+ event.stopPropagation();
102
+ event.preventDefault();
103
+ clearTimeout(this.select.typeToSelectTimeout);
104
+ this.select.typeToSelectTimeout = window.setTimeout(() => (this.select.typeToSelectString = ''), 1000);
105
+ if (event.key === 'Backspace') {
106
+ this.select.typeToSelectString = this.select.typeToSelectString.slice(0, -1);
107
+ }
108
+ else {
109
+ this.select.typeToSelectString += event.key.toLowerCase();
110
+ }
111
+ for (const option of allOptions) {
112
+ const label = option.getTextLabel().toLowerCase();
113
+ if (label.startsWith(this.select.typeToSelectString)) {
114
+ this.select.setCurrentOption(option);
115
+ break;
116
+ }
117
+ }
118
+ }
119
+ }
120
+ handleDocumentMouseDown(event) {
121
+ // Close when clicking outside of the select
122
+ const path = event.composedPath();
123
+ if (this.select && !path.includes(this.select)) {
124
+ this.select.hide();
125
+ }
126
+ }
127
+ handleLabelClick() {
128
+ this.select.displayInput.focus();
129
+ this.select.hide();
130
+ }
131
+ handleComboboxMouseDown(event) {
132
+ const path = event.composedPath();
133
+ const isIconButton = path.some(el => el instanceof Element && el.tagName.toLowerCase() === 'nile-icon-button');
134
+ // Ignore disabled controls and clicks on tags (remove buttons)
135
+ if (this.select.disabled || isIconButton) {
136
+ return;
137
+ }
138
+ event.preventDefault();
139
+ this.select.displayInput.focus({ preventScroll: true });
140
+ this.select.open = !this.select.open;
141
+ }
142
+ handleComboboxKeyDown(event) {
143
+ event.stopPropagation();
144
+ this.handleDocumentKeyDown(event);
145
+ }
146
+ handleSearchFocus() {
147
+ document.removeEventListener('keydown', this.handleDocumentKeyDown);
148
+ }
149
+ handleSearchBlur() {
150
+ document.addEventListener('keydown', this.handleDocumentKeyDown);
151
+ }
152
+ }
153
+ //# sourceMappingURL=event-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-handlers.js","sourceRoot":"","sources":["../../../src/nile-virtual-select/event-handlers.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NileVirtualSelect } from './nile-virtual-select';\nimport type NileOption from '../nile-option/nile-option';\nimport { scrollIntoView } from '../internal/scroll';\n\nexport class SelectEventHandlers {\n private select: NileVirtualSelect;\n \n constructor(select: NileVirtualSelect) {\n this.select = select;\n \n // Bind methods to this instance\n this.handleDocumentFocusIn = this.handleDocumentFocusIn.bind(this);\n this.handleDocumentKeyDown = this.handleDocumentKeyDown.bind(this);\n this.handleDocumentMouseDown = this.handleDocumentMouseDown.bind(this);\n }\n \n setupEventHandlers() {\n // No listeners added initially - they're added when the select opens\n }\n \n addOpenListeners() {\n document.addEventListener('focusin', this.handleDocumentFocusIn);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n }\n\n removeOpenListeners() {\n document.removeEventListener('focusin', this.handleDocumentFocusIn);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n }\n \n removeEventHandlers() {\n this.removeOpenListeners();\n }\n \n handleFocus() {\n this.select.hasFocus = true;\n this.select.displayInput.setSelectionRange(0, 0);\n this.select.emit('nile-focus', { value: this.select.value, name: this.select.name });\n }\n\n handleBlur() {\n this.select.hasFocus = false;\n this.select.emit('nile-blur', { value: this.select.value, name: this.select.name });\n }\n\n handleDocumentFocusIn(event: FocusEvent) {\n // Close when focusing out of the select\n const path = event.composedPath();\n if (this.select && !path.includes(this.select)) {\n this.select.hide();\n }\n }\n\n handleDocumentKeyDown(event: KeyboardEvent) {\n const target = event.target as HTMLElement;\n const isClearButton = target.closest('.select__clear') !== null;\n const isIconButton = target.closest('nile-icon-button') !== null;\n\n // Ignore presses when the target is an icon button (e.g. the remove button in <nile-tag>)\n if (isClearButton || isIconButton) {\n return;\n }\n\n // Close when pressing escape\n if (event.key === 'Escape' && this.select.open) {\n event.preventDefault();\n event.stopPropagation();\n this.select.hide();\n this.select.displayInput.focus({ preventScroll: true });\n }\n\n // Handle enter and space. When pressing space, we allow for type to select behaviors so if there's anything in the\n // buffer we _don't_ close it.\n if (\n event.key === 'Enter' ||\n (event.key === ' ' && (this.select as any).typeToSelectString === '')\n ) {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n // If it's not open, open it\n if (!this.select.open) {\n this.select.show();\n return;\n }\n\n // If it is open, update the value based on the current selection and close it\n if (this.select.currentOption && !this.select.currentOption.disabled) {\n if (this.select.multiple) {\n this.select.toggleOptionSelection(this.select.currentOption);\n } else {\n this.select.setSelectedOptions(this.select.currentOption);\n }\n\n // Emit after updating\n this.select.updateComplete.then(() => {\n this.select.nileInput({ value: this.select.value, name: this.select.name });\n this.select.nileChange({ value: this.select.value, name: this.select.name });\n });\n\n if (!this.select.multiple) {\n this.select.hide();\n this.select.displayInput.focus({ preventScroll: true });\n }\n }\n\n return;\n }\n\n // All other \"printable\" keys trigger type to select\n if (event.key.length === 1 || event.key === 'Backspace') {\n const allOptions = (this.select as any).optionUtils.getAllOptions(this.select);\n\n // Don't block important key combos like CMD+R\n if (event.metaKey || event.ctrlKey || event.altKey) {\n return;\n }\n\n // Open, unless the key that triggered is backspace\n if (!this.select.open) {\n if (event.key === 'Backspace') {\n return;\n }\n\n this.select.show();\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n clearTimeout((this.select as any).typeToSelectTimeout);\n (this.select as any).typeToSelectTimeout = window.setTimeout(\n () => ((this.select as any).typeToSelectString = ''),\n 1000\n );\n\n if (event.key === 'Backspace') {\n (this.select as any).typeToSelectString = (this.select as any).typeToSelectString.slice(0, -1);\n } else {\n (this.select as any).typeToSelectString += event.key.toLowerCase();\n }\n\n for (const option of allOptions) {\n const label = option.getTextLabel().toLowerCase();\n\n if (label.startsWith((this.select as any).typeToSelectString)) {\n this.select.setCurrentOption(option);\n break;\n }\n }\n }\n }\n\n handleDocumentMouseDown(event: MouseEvent) {\n // Close when clicking outside of the select\n const path = event.composedPath();\n if (this.select && !path.includes(this.select)) {\n this.select.hide();\n }\n }\n\n handleLabelClick() {\n this.select.displayInput.focus();\n this.select.hide();\n }\n\n handleComboboxMouseDown(event: MouseEvent) {\n const path = event.composedPath();\n const isIconButton = path.some(\n el =>\n el instanceof Element && el.tagName.toLowerCase() === 'nile-icon-button'\n );\n\n // Ignore disabled controls and clicks on tags (remove buttons)\n if (this.select.disabled || isIconButton) {\n return;\n }\n\n event.preventDefault();\n this.select.displayInput.focus({ preventScroll: true });\n this.select.open = !this.select.open;\n }\n\n handleComboboxKeyDown(event: KeyboardEvent) {\n event.stopPropagation();\n this.handleDocumentKeyDown(event);\n }\n \n handleSearchFocus() {\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n handleSearchBlur() {\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n }\n}"]}
@@ -0,0 +1 @@
1
+ export { NileVirtualSelect } from './nile-virtual-select';
@@ -0,0 +1,2 @@
1
+ export { NileVirtualSelect } from './nile-virtual-select';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nile-virtual-select/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC","sourcesContent":["export { NileVirtualSelect } from './nile-virtual-select';\n"]}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Types and interfaces for nile-virtual-select
3
+ */
4
+ import type NileOption from '../nile-option/nile-option';
5
+ export type NileRemoveEvent = CustomEvent<Record<PropertyKey, never>>;
6
+ export interface SelectChangeEventDetail {
7
+ value: string | string[];
8
+ name: string;
9
+ }
10
+ export interface SelectClearEventDetail {
11
+ value: string | string[];
12
+ name: string;
13
+ }
14
+ export interface SelectInputEventDetail {
15
+ value: string | string[];
16
+ name: string;
17
+ }
18
+ export interface TagRemoveEventDetail {
19
+ value: string | string[];
20
+ name: string;
21
+ removedtagvalue: string;
22
+ }
23
+ export interface SelectSize {
24
+ size: 'small' | 'medium' | 'large';
25
+ }
26
+ export interface SelectPlacement {
27
+ placement: 'top' | 'bottom';
28
+ }
29
+ export interface VirtualOptionState {
30
+ option: NileOption;
31
+ visible: boolean;
32
+ index: number;
33
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Types and interfaces for nile-virtual-select
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/nile-virtual-select/models.ts"],"names":[],"mappings":"AAAA;;GAEG","sourcesContent":["/**\n * Types and interfaces for nile-virtual-select\n */\n\nimport type NileOption from '../nile-option/nile-option';\n\nexport type NileRemoveEvent = CustomEvent<Record<PropertyKey, never>>;\n\nexport interface SelectChangeEventDetail {\n value: string | string[];\n name: string;\n}\n\nexport interface SelectClearEventDetail {\n value: string | string[];\n name: string;\n}\n\nexport interface SelectInputEventDetail {\n value: string | string[];\n name: string;\n}\n\nexport interface TagRemoveEventDetail {\n value: string | string[];\n name: string;\n removedtagvalue: string;\n}\n\nexport interface SelectSize {\n size: 'small' | 'medium' | 'large';\n}\n\nexport interface SelectPlacement {\n placement: 'top' | 'bottom';\n}\n\nexport interface VirtualOptionState {\n option: NileOption;\n visible: boolean;\n index: number;\n}"]}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Copyright Aquera Inc 2023
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
+ * Select_2 CSS
9
+ */
10
+ export declare const styles: import("lit").CSSResult;
11
+ declare const _default: import("lit").CSSResult[];
12
+ export default _default;