@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.
- package/README.md +12 -72
- package/demo/index.css +4 -7
- package/demo/index.html +38 -20
- package/demo/variables.css +0 -13
- package/demo/variables_v2.css +0 -13
- package/dist/fixture-178ed8d2.esm.js +569 -0
- package/dist/{fixture-d5b55278.cjs.js → fixture-bb486165.cjs.js} +2 -2
- package/dist/{fixture-d5b55278.cjs.js.map → fixture-bb486165.cjs.js.map} +1 -1
- package/dist/{fixture-df8b52d7.esm.js → fixture-c4e75e04.esm.js} +1 -1
- package/dist/fixture-d7bf42eb.cjs.js +395 -0
- package/dist/fixture-d7bf42eb.cjs.js.map +1 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/internal/animate.cjs.js +1 -1
- package/dist/internal/animate.cjs.js.map +1 -1
- package/dist/internal/animate.esm.js +1 -1
- package/dist/nile-accordion/nile-accordian.test.cjs.js +1 -1
- package/dist/nile-accordion/nile-accordian.test.esm.js +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.test.esm.js +1 -1
- package/dist/nile-avatar/nile-avatar.test.cjs.js +1 -1
- package/dist/nile-avatar/nile-avatar.test.esm.js +1 -1
- package/dist/nile-badge/nile-badge.test.cjs.js +1 -1
- package/dist/nile-badge/nile-badge.test.esm.js +1 -1
- package/dist/nile-button/nile-button.test.cjs.js +1 -1
- package/dist/nile-button/nile-button.test.esm.js +1 -1
- package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js +1 -1
- package/dist/nile-button-toggle-group/nile-button-toggle-group.test.esm.js +1 -1
- package/dist/nile-calendar/nile-calendar.test.cjs.js +1 -1
- package/dist/nile-calendar/nile-calendar.test.esm.js +1 -1
- package/dist/nile-card/nile-card.test.cjs.js +1 -1
- package/dist/nile-card/nile-card.test.esm.js +1 -1
- package/dist/nile-checkbox/nile-checkbox.test.cjs.js +1 -1
- package/dist/nile-checkbox/nile-checkbox.test.esm.js +1 -1
- package/dist/nile-chip/nile-chip.cjs.js +1 -1
- package/dist/nile-chip/nile-chip.cjs.js.map +1 -1
- package/dist/nile-chip/nile-chip.esm.js +8 -17
- package/dist/nile-chip/nile-chip.test.cjs.js +1 -1
- package/dist/nile-chip/nile-chip.test.esm.js +1 -1
- package/dist/nile-dialog/nile-dialog.test.cjs.js +1 -1
- package/dist/nile-dialog/nile-dialog.test.esm.js +1 -1
- package/dist/nile-drawer/nile-drawer.test.cjs.js +1 -1
- package/dist/nile-drawer/nile-drawer.test.esm.js +1 -1
- package/dist/nile-dropdown/nile-dropdown.test.cjs.js +1 -1
- package/dist/nile-dropdown/nile-dropdown.test.esm.js +1 -1
- package/dist/nile-empty-state/nile-empty-state.test.cjs.js +1 -1
- package/dist/nile-empty-state/nile-empty-state.test.esm.js +1 -1
- package/dist/nile-error-message/nile-error-message.cjs.js +1 -1
- package/dist/nile-error-message/nile-error-message.cjs.js.map +1 -1
- package/dist/nile-error-message/nile-error-message.css.cjs.js +1 -1
- package/dist/nile-error-message/nile-error-message.css.cjs.js.map +1 -1
- package/dist/nile-error-message/nile-error-message.css.esm.js +4 -6
- package/dist/nile-error-message/nile-error-message.esm.js +4 -4
- package/dist/nile-error-message/nile-error-message.test.cjs.js +1 -1
- package/dist/nile-error-message/nile-error-message.test.esm.js +1 -1
- package/dist/nile-error-notification/nile-error-notification.css.cjs.js +1 -1
- package/dist/nile-error-notification/nile-error-notification.css.cjs.js.map +1 -1
- package/dist/nile-error-notification/nile-error-notification.css.esm.js +1 -1
- package/dist/nile-filter-chip/nile-filter-chip.cjs.js +1 -1
- package/dist/nile-filter-chip/nile-filter-chip.cjs.js.map +1 -1
- package/dist/nile-filter-chip/nile-filter-chip.css.cjs.js +1 -1
- package/dist/nile-filter-chip/nile-filter-chip.css.cjs.js.map +1 -1
- package/dist/nile-filter-chip/nile-filter-chip.css.esm.js +17 -40
- package/dist/nile-filter-chip/nile-filter-chip.esm.js +8 -17
- package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js +1 -1
- package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js.map +1 -1
- package/dist/nile-filter-chip/nile-filter-chip.test.esm.js +12 -12
- package/dist/nile-form-group/nile-form-group.test.cjs.js +1 -1
- package/dist/nile-form-group/nile-form-group.test.esm.js +1 -1
- package/dist/nile-form-help-text/nile-form-help-text.test.cjs.js +1 -1
- package/dist/nile-form-help-text/nile-form-help-text.test.esm.js +1 -1
- package/dist/nile-hero/nile-hero.test.cjs.js +1 -1
- package/dist/nile-hero/nile-hero.test.esm.js +1 -1
- package/dist/nile-icon/icons/svg/accessreview.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/accessreview.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/accessreview.esm.js +1 -1
- package/dist/nile-icon/nile-icon.test.cjs.js +1 -1
- package/dist/nile-icon/nile-icon.test.esm.js +1 -1
- package/dist/nile-input/nile-input.test.cjs.js +1 -1
- package/dist/nile-input/nile-input.test.esm.js +1 -1
- package/dist/nile-link/nile-link.test.cjs.js +1 -1
- package/dist/nile-link/nile-link.test.esm.js +1 -1
- package/dist/nile-loader/nile-loader.test.cjs.js +1 -1
- package/dist/nile-loader/nile-loader.test.esm.js +1 -1
- package/dist/nile-popover/nile-popover.test.cjs.js +1 -1
- package/dist/nile-popover/nile-popover.test.esm.js +1 -1
- package/dist/nile-popup/nile-popup.test.cjs.js +1 -1
- package/dist/nile-popup/nile-popup.test.esm.js +1 -1
- package/dist/nile-progress-bar/nile-progress-bar.css.cjs.js +1 -1
- package/dist/nile-progress-bar/nile-progress-bar.css.cjs.js.map +1 -1
- package/dist/nile-progress-bar/nile-progress-bar.css.esm.js +0 -1
- package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js +1 -1
- package/dist/nile-progress-bar/nile-progress-bar.test.esm.js +1 -1
- package/dist/nile-radio/nile-radio.test.cjs.js +1 -1
- package/dist/nile-radio/nile-radio.test.esm.js +1 -1
- package/dist/nile-radio-group/nile-radio-group.test.cjs.js +1 -1
- package/dist/nile-radio-group/nile-radio-group.test.esm.js +1 -1
- package/dist/nile-select/nile-select.cjs.js +1 -1
- package/dist/nile-select/nile-select.cjs.js.map +1 -1
- package/dist/nile-select/nile-select.esm.js +1 -1
- package/dist/nile-select/nile-select.test.cjs.js +1 -1
- package/dist/nile-select/nile-select.test.esm.js +1 -1
- package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js +1 -1
- package/dist/nile-slide-toggle/nile-slide-toggle.test.esm.js +1 -1
- package/dist/nile-tab-group/nile-tab-group.test.cjs.js +1 -1
- package/dist/nile-tab-group/nile-tab-group.test.esm.js +1 -1
- package/dist/nile-table/nile-table.cjs.js.map +1 -1
- package/dist/nile-textarea/nile-textarea.test.cjs.js +1 -1
- package/dist/nile-textarea/nile-textarea.test.esm.js +1 -1
- package/dist/nile-tooltip/index.cjs.js +1 -1
- package/dist/nile-tooltip/index.esm.js +1 -1
- package/dist/nile-tooltip/nile-tooltip.cjs.js +1 -1
- package/dist/nile-tooltip/nile-tooltip.cjs.js.map +1 -1
- package/dist/nile-tooltip/nile-tooltip.css.cjs.js +1 -1
- package/dist/nile-tooltip/nile-tooltip.css.cjs.js.map +1 -1
- package/dist/nile-tooltip/nile-tooltip.css.esm.js +45 -78
- package/dist/nile-tooltip/nile-tooltip.esm.js +28 -23
- package/dist/nile-tooltip/nile-tooltip.test.cjs.js +1 -1
- package/dist/nile-tooltip/nile-tooltip.test.esm.js +1 -1
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.js +0 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/nile-chip/nile-chip.js +0 -9
- package/dist/src/nile-chip/nile-chip.js.map +1 -1
- package/dist/src/nile-error-message/nile-error-message.css.js +4 -6
- package/dist/src/nile-error-message/nile-error-message.css.js.map +1 -1
- package/dist/src/nile-error-message/nile-error-message.d.ts +0 -4
- package/dist/src/nile-error-message/nile-error-message.js +0 -20
- package/dist/src/nile-error-message/nile-error-message.js.map +1 -1
- package/dist/src/nile-error-notification/nile-error-notification.css.js +1 -1
- package/dist/src/nile-error-notification/nile-error-notification.css.js.map +1 -1
- package/dist/src/nile-filter-chip/nile-filter-chip.css.js +17 -40
- package/dist/src/nile-filter-chip/nile-filter-chip.css.js.map +1 -1
- package/dist/src/nile-filter-chip/nile-filter-chip.d.ts +2 -3
- package/dist/src/nile-filter-chip/nile-filter-chip.js +10 -23
- package/dist/src/nile-filter-chip/nile-filter-chip.js.map +1 -1
- package/dist/src/nile-filter-chip/nile-filter-chip.test.js +7 -7
- package/dist/src/nile-filter-chip/nile-filter-chip.test.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/accessreview.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/accessreview.js +1 -1
- package/dist/src/nile-icon/icons/svg/accessreview.js.map +1 -1
- package/dist/src/nile-new-error/index.d.ts +1 -0
- package/dist/src/nile-new-error/index.js +2 -0
- package/dist/src/nile-new-error/index.js.map +1 -0
- package/dist/src/nile-new-error/nile-new-error.css.d.ts +12 -0
- package/dist/src/nile-new-error/nile-new-error.css.js +38 -0
- package/dist/src/nile-new-error/nile-new-error.css.js.map +1 -0
- package/dist/src/nile-new-error/nile-new-error.d.ts +36 -0
- package/dist/src/nile-new-error/nile-new-error.js +74 -0
- package/dist/src/nile-new-error/nile-new-error.js.map +1 -0
- package/dist/src/nile-progress-bar/nile-progress-bar.css.js +0 -1
- package/dist/src/nile-progress-bar/nile-progress-bar.css.js.map +1 -1
- package/dist/src/nile-select/nile-select.js +1 -1
- package/dist/src/nile-select/nile-select.js.map +1 -1
- package/dist/src/nile-table/nile-table.js.map +1 -1
- package/dist/src/nile-tooltip/nile-tooltip.css.js +43 -76
- package/dist/src/nile-tooltip/nile-tooltip.css.js.map +1 -1
- package/dist/src/nile-tooltip/nile-tooltip.d.ts +46 -24
- package/dist/src/nile-tooltip/nile-tooltip.js +232 -235
- package/dist/src/nile-tooltip/nile-tooltip.js.map +1 -1
- package/dist/src/nile-virtual-list/index.d.ts +1 -0
- package/dist/src/nile-virtual-list/index.js +2 -0
- package/dist/src/nile-virtual-list/index.js.map +1 -0
- package/dist/src/nile-virtual-list/nile-virtual-list.css.d.ts +12 -0
- package/dist/src/nile-virtual-list/nile-virtual-list.css.js +25 -0
- package/dist/src/nile-virtual-list/nile-virtual-list.css.js.map +1 -0
- package/dist/src/nile-virtual-list/nile-virtual-list.d.ts +28 -0
- package/dist/src/nile-virtual-list/nile-virtual-list.js +69 -0
- package/dist/src/nile-virtual-list/nile-virtual-list.js.map +1 -0
- package/dist/src/nile-virtual-scroll/index.d.ts +1 -0
- package/dist/src/nile-virtual-scroll/index.js +2 -0
- package/dist/src/nile-virtual-scroll/index.js.map +1 -0
- package/dist/src/nile-virtual-scroll/nile-virtual-scroll.css.d.ts +12 -0
- package/dist/src/nile-virtual-scroll/nile-virtual-scroll.css.js +17 -0
- package/dist/src/nile-virtual-scroll/nile-virtual-scroll.css.js.map +1 -0
- package/dist/src/nile-virtual-scroll/nile-virtual-scroll.d.ts +54 -0
- package/dist/src/nile-virtual-scroll/nile-virtual-scroll.js +196 -0
- package/dist/src/nile-virtual-scroll/nile-virtual-scroll.js.map +1 -0
- package/dist/src/nile-virtual-scroll/nile-virtual-scroll.utils.d.ts +23 -0
- package/dist/src/nile-virtual-scroll/nile-virtual-scroll.utils.js +48 -0
- package/dist/src/nile-virtual-scroll/nile-virtual-scroll.utils.js.map +1 -0
- package/dist/src/nile-virtual-select/event-handlers.d.ts +19 -0
- package/dist/src/nile-virtual-select/event-handlers.js +153 -0
- package/dist/src/nile-virtual-select/event-handlers.js.map +1 -0
- package/dist/src/nile-virtual-select/index.d.ts +1 -0
- package/dist/src/nile-virtual-select/index.js +2 -0
- package/dist/src/nile-virtual-select/index.js.map +1 -0
- package/dist/src/nile-virtual-select/models.d.ts +33 -0
- package/dist/src/nile-virtual-select/models.js +5 -0
- package/dist/src/nile-virtual-select/models.js.map +1 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.css.d.ts +12 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.css.js +463 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.css.js.map +1 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.d.ts +239 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.js +1287 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.js.map +1 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.test.js +2 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.test.js.map +1 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.utils.d.ts +0 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.utils.js +2 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.utils.js.map +1 -0
- package/dist/src/nile-virtual-select/option-utils.d.ts +15 -0
- package/dist/src/nile-virtual-select/option-utils.js +59 -0
- package/dist/src/nile-virtual-select/option-utils.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/plop-templates/lit/index.ts.hbs +1 -1
- package/plop-templates/lit/lit.css.ts.hbs +1 -1
- package/plop-templates/lit/lit.ts.hbs +3 -7
- package/plopfile.js +1 -32
- package/src/index.ts +1 -2
- package/src/nile-chip/nile-chip.ts +0 -9
- package/src/nile-error-message/nile-error-message.css.ts +4 -6
- package/src/nile-error-message/nile-error-message.ts +0 -18
- package/src/nile-error-notification/nile-error-notification.css.ts +1 -1
- package/src/nile-icon/icons/svg/accessreview.ts +1 -1
- package/src/nile-progress-bar/nile-progress-bar.css.ts +0 -1
- package/src/nile-select/nile-select.ts +1 -1
- package/src/nile-table/nile-table.ts +2 -2
- package/src/nile-tooltip/nile-tooltip.css.ts +44 -77
- package/src/nile-tooltip/nile-tooltip.ts +230 -268
- package/vscode-html-custom-data.json +95 -144
- package/plop-templates/lit/lit.template.ts.hbs +0 -3
- package/plop-templates/lit/lit.test.ts.hbs +0 -38
- package/plop-templates/lit/sub-components/index.ts.hbs +0 -4
- package/plop-templates/lit/types/type.ts.hbs +0 -3
- package/plop-templates/lit/utils/lit.utils.ts.hbs +0 -4
- package/src/nile-filter-chip/index.ts +0 -1
- package/src/nile-filter-chip/nile-filter-chip.css.ts +0 -138
- package/src/nile-filter-chip/nile-filter-chip.test.ts +0 -92
- package/src/nile-filter-chip/nile-filter-chip.ts +0 -136
- package/src/nile-tooltip/nile-tooltip-utils.ts +0 -271
- package/src/nile-tooltip/nile-tooltip.test.ts +0 -168
- /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 @@
|
|
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 @@
|
|
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;
|