@aquera/nile-elements 0.1.70-beta-1.0 → 0.1.70-beta-1.2
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 +15 -0
- package/demo/index.html +248 -332
- package/dist/{fixture-28d63bc4.cjs.js → fixture-5b79f853.cjs.js} +2 -2
- package/dist/{fixture-28d63bc4.cjs.js.map → fixture-5b79f853.cjs.js.map} +1 -1
- package/dist/{fixture-ba65eb22.esm.js → fixture-90b199c4.esm.js} +1 -1
- package/dist/{fixture-78a015b8.esm.js → fixture-cf7bfcf5.esm.js} +1 -1
- package/dist/{fixture-324a7ef9.cjs.js → fixture-dbd66009.cjs.js} +2 -2
- package/dist/{fixture-324a7ef9.cjs.js.map → fixture-dbd66009.cjs.js.map} +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +103 -118
- package/dist/internal/resizable-table-helper.cjs.js +1 -1
- package/dist/internal/resizable-table-helper.cjs.js.map +1 -1
- package/dist/internal/resizable-table-helper.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.test.cjs.js +1 -1
- package/dist/nile-chip/nile-chip.test.esm.js +1 -1
- package/dist/nile-code-editor/extensionSetup.cjs.js +3 -3
- package/dist/nile-code-editor/extensionSetup.cjs.js.map +1 -1
- package/dist/nile-code-editor/extensionSetup.esm.js +1 -1
- package/dist/nile-code-editor/nile-code-editor.cjs.js +2 -2
- package/dist/nile-code-editor/nile-code-editor.cjs.js.map +1 -1
- package/dist/nile-code-editor/nile-code-editor.esm.js +2 -2
- package/dist/nile-code-editor/theme.cjs.js +1 -1
- package/dist/nile-code-editor/theme.cjs.js.map +1 -1
- package/dist/nile-code-editor/theme.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.test.cjs.js +1 -1
- package/dist/nile-error-message/nile-error-message.test.esm.js +1 -1
- package/dist/nile-file-preview/nile-file-preview.test.cjs.js +1 -1
- package/dist/nile-file-preview/nile-file-preview.test.esm.js +1 -1
- package/dist/nile-file-upload/nile-file-upload.test.cjs.js +1 -1
- package/dist/nile-file-upload/nile-file-upload.test.esm.js +1 -1
- package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js +1 -1
- package/dist/nile-filter-chip/nile-filter-chip.test.esm.js +1 -1
- 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/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-option/nile-option.cjs.js +1 -1
- package/dist/nile-option/nile-option.cjs.js.map +1 -1
- package/dist/nile-option/nile-option.esm.js +2 -2
- package/dist/nile-option-group/nile-option-group.cjs.js +1 -1
- package/dist/nile-option-group/nile-option-group.cjs.js.map +1 -1
- package/dist/nile-option-group/nile-option-group.esm.js +5 -5
- 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.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 +9 -9
- 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-body/nile-table-body.cjs.js +1 -1
- package/dist/nile-table-body/nile-table-body.cjs.js.map +1 -1
- package/dist/nile-table-body/nile-table-body.esm.js +3 -2
- package/dist/nile-table-cell-item/nile-table-cell-item.cjs.js +1 -1
- package/dist/nile-table-cell-item/nile-table-cell-item.cjs.js.map +1 -1
- package/dist/nile-table-cell-item/nile-table-cell-item.esm.js +1 -1
- package/dist/nile-table-header-item/nile-table-header-item.cjs.js +1 -1
- package/dist/nile-table-header-item/nile-table-header-item.cjs.js.map +1 -1
- package/dist/nile-table-header-item/nile-table-header-item.esm.js +2 -2
- package/dist/nile-table-row/nile-table-row.cjs.js +1 -1
- package/dist/nile-table-row/nile-table-row.cjs.js.map +1 -1
- package/dist/nile-table-row/nile-table-row.css.cjs.js +1 -1
- package/dist/nile-table-row/nile-table-row.css.cjs.js.map +1 -1
- package/dist/nile-table-row/nile-table-row.css.esm.js +0 -47
- package/dist/nile-table-row/nile-table-row.esm.js +6 -33
- 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-virtual-select/nile-virtual-select.test.cjs.js +1 -1
- package/dist/nile-virtual-select/nile-virtual-select.test.esm.js +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal/resizable-helper.d.ts +59 -0
- package/dist/src/internal/resizable-helper.js +115 -0
- package/dist/src/internal/resizable-helper.js.map +1 -0
- package/dist/src/internal/resizable-styles.d.ts +16 -0
- package/dist/src/internal/resizable-styles.js +144 -0
- package/dist/src/internal/resizable-styles.js.map +1 -0
- package/dist/src/internal/resizable-table-helper.d.ts +5 -0
- package/dist/src/internal/resizable-table-helper.js +27 -4
- package/dist/src/internal/resizable-table-helper.js.map +1 -1
- package/dist/src/nile-badge/__snapshots__/nile-badge.test.snap.js +17 -0
- package/dist/src/nile-calendar/__snapshots__/nile-calendar.test.snap.js +310 -0
- package/dist/src/nile-card/__snapshots__/nile-card.test.snap.js +34 -0
- package/dist/src/nile-checkbox/__snapshots__/nile-checkbox.test.snap.js +31 -0
- package/dist/src/nile-code-editor/nile-code-editor.d.ts +2 -0
- package/dist/src/nile-code-editor/nile-code-editor.js +22 -5
- package/dist/src/nile-code-editor/nile-code-editor.js.map +1 -1
- package/dist/src/nile-code-editor/theme.d.ts +9 -0
- package/dist/src/nile-code-editor/theme.js +9 -0
- package/dist/src/nile-code-editor/theme.js.map +1 -1
- package/dist/src/nile-grid/data-processor.d.ts +37 -0
- package/dist/src/nile-grid/data-processor.js +122 -0
- package/dist/src/nile-grid/data-processor.js.map +1 -0
- package/dist/src/nile-grid/event-handlers.d.ts +35 -0
- package/dist/src/nile-grid/event-handlers.js +158 -0
- package/dist/src/nile-grid/event-handlers.js.map +1 -0
- package/dist/src/nile-grid/index.d.ts +5 -0
- package/dist/src/nile-grid/index.js +6 -0
- package/dist/src/nile-grid/index.js.map +1 -0
- package/dist/src/nile-grid/nile-grid.css.d.ts +1 -0
- package/dist/src/nile-grid/nile-grid.css.js +120 -0
- package/dist/src/nile-grid/nile-grid.css.js.map +1 -0
- package/dist/src/nile-grid/nile-grid.d.ts +39 -0
- package/dist/src/nile-grid/nile-grid.js +182 -0
- package/dist/src/nile-grid/nile-grid.js.map +1 -0
- package/dist/src/nile-grid/renderer.d.ts +8 -0
- package/dist/src/nile-grid/renderer.js +78 -0
- package/dist/src/nile-grid/renderer.js.map +1 -0
- package/dist/src/nile-grid/resize-handler.d.ts +4 -0
- package/dist/src/nile-grid/resize-handler.js +36 -0
- package/dist/src/nile-grid/resize-handler.js.map +1 -0
- package/dist/src/nile-grid/types.d.ts +32 -0
- package/dist/src/nile-grid/types.js +2 -0
- package/dist/src/nile-grid/types.js.map +1 -0
- package/dist/src/nile-grid/utils.d.ts +4 -0
- package/dist/src/nile-grid/utils.js +32 -0
- package/dist/src/nile-grid/utils.js.map +1 -0
- package/dist/src/nile-hero/__snapshots__/nile-hero.test.snap.js +47 -0
- package/dist/src/nile-icon/__snapshots__/nile-icon.test.snap.js +16 -0
- package/dist/src/nile-input/__snapshots__/nile-input.test.snap.js +75 -0
- package/dist/src/nile-option/nile-option.d.ts +1 -0
- package/dist/src/nile-option/nile-option.js +5 -0
- package/dist/src/nile-option/nile-option.js.map +1 -1
- package/dist/src/nile-popover/__snapshots__/nile-popover.test.snap.js +22 -0
- package/dist/src/nile-select/nile-select.d.ts +6 -0
- package/dist/src/nile-select/nile-select.js +59 -1
- package/dist/src/nile-select/nile-select.js.map +1 -1
- package/dist/src/nile-table-body/nile-table-body.d.ts +1 -3
- package/dist/src/nile-table-body/nile-table-body.js +3 -31
- package/dist/src/nile-table-body/nile-table-body.js.map +1 -1
- package/dist/src/nile-table-body/virtual-scroll-helper.d.ts +9 -0
- package/dist/src/nile-table-body/virtual-scroll-helper.js +24 -0
- package/dist/src/nile-table-body/virtual-scroll-helper.js.map +1 -0
- package/dist/src/nile-table-cell-item/nile-table-cell-item.d.ts +2 -1
- package/dist/src/nile-table-cell-item/nile-table-cell-item.js +12 -1
- package/dist/src/nile-table-cell-item/nile-table-cell-item.js.map +1 -1
- package/dist/src/nile-table-header-item/nile-table-header-item.d.ts +2 -1
- package/dist/src/nile-table-header-item/nile-table-header-item.js +12 -1
- package/dist/src/nile-table-header-item/nile-table-header-item.js.map +1 -1
- package/dist/src/nile-table-row/nile-table-row.css.js +0 -47
- package/dist/src/nile-table-row/nile-table-row.css.js.map +1 -1
- package/dist/src/nile-table-row/nile-table-row.d.ts +1 -10
- package/dist/src/nile-table-row/nile-table-row.js +9 -88
- package/dist/src/nile-table-row/nile-table-row.js.map +1 -1
- package/dist/src/nile-virtual-table-body/index.d.ts +2 -0
- package/dist/src/nile-virtual-table-body/index.js +3 -0
- package/dist/src/nile-virtual-table-body/index.js.map +1 -0
- package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.d.ts +1 -0
- package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.js +44 -0
- package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.js.map +1 -0
- package/dist/src/nile-virtual-table-body/nile-virtual-table-body.d.ts +50 -0
- package/dist/src/nile-virtual-table-body/nile-virtual-table-body.js +135 -0
- package/dist/src/nile-virtual-table-body/nile-virtual-table-body.js.map +1 -0
- package/dist/src/nile-virtual-table-body/renderer.d.ts +16 -0
- package/dist/src/nile-virtual-table-body/renderer.js +49 -0
- package/dist/src/nile-virtual-table-body/renderer.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -2
- package/src/index.ts +2 -1
- package/src/internal/resizable-table-helper.ts +31 -8
- package/src/nile-code-editor/nile-code-editor.ts +25 -6
- package/src/nile-code-editor/theme.ts +11 -1
- package/src/nile-option/nile-option.ts +3 -0
- package/src/nile-option-group/index.ts +1 -0
- package/src/nile-option-group/nile-option-group.css.ts +60 -0
- package/src/nile-option-group/nile-option-group.interface.ts +25 -0
- package/src/nile-option-group/nile-option-group.ts +84 -0
- package/src/nile-select/nile-select.interface.ts +5 -0
- package/src/nile-select/nile-select.ts +74 -2
- package/src/nile-table-body/nile-table-body.ts +3 -27
- package/src/nile-table-cell-item/nile-table-cell-item.ts +15 -1
- package/src/nile-table-header-item/nile-table-header-item.ts +15 -1
- package/src/nile-table-row/nile-table-row.css.ts +0 -47
- package/src/nile-table-row/nile-table-row.ts +5 -87
- package/vscode-html-custom-data.json +37 -29
- package/dist/aquera-nile-elements-0.1.57-beta-2.0.tgz +0 -0
- package/dist/axe.min-2b379f29.cjs.js +0 -12
- package/dist/axe.min-2b379f29.cjs.js.map +0 -1
- package/dist/axe.min-c2cd8733.esm.js +0 -12
- package/dist/fixture-add72f26.esm.js +0 -569
- package/dist/fixture-c1bd203f.cjs.js +0 -395
- package/dist/fixture-c1bd203f.cjs.js.map +0 -1
- package/dist/fixture-cb376a7f.cjs.js +0 -395
- package/dist/fixture-cb376a7f.cjs.js.map +0 -1
- package/dist/fixture-f2693d97.esm.js +0 -569
- package/dist/src/internal/expandable-row-helper.d.ts +0 -13
- package/dist/src/internal/expandable-row-helper.js +0 -37
- package/dist/src/internal/expandable-row-helper.js.map +0 -1
- package/dist/src/internal/expandable-row-styles.d.ts +0 -11
- package/dist/src/internal/expandable-row-styles.js +0 -27
- package/dist/src/internal/expandable-row-styles.js.map +0 -1
- package/dist/src/internal/table-expandable-helper.d.ts +0 -0
- package/dist/src/internal/table-expandable-helper.js +0 -2
- package/dist/src/internal/table-expandable-helper.js.map +0 -1
- package/dist/src/internal/table-row-expandable-helper.d.ts +0 -12
- package/dist/src/internal/table-row-expandable-helper.js +0 -32
- package/dist/src/internal/table-row-expandable-helper.js.map +0 -1
- package/dist/src/internal/table-row-expandable-styles.d.ts +0 -11
- package/dist/src/internal/table-row-expandable-styles.js +0 -12
- package/dist/src/internal/table-row-expandable-styles.js.map +0 -1
- package/dist/src/nile-group-header/index.d.ts +0 -1
- package/dist/src/nile-group-header/index.js +0 -2
- package/dist/src/nile-group-header/index.js.map +0 -1
- package/dist/src/nile-group-header/nile-group-header.css.d.ts +0 -12
- package/dist/src/nile-group-header/nile-group-header.css.js +0 -30
- package/dist/src/nile-group-header/nile-group-header.css.js.map +0 -1
- package/dist/src/nile-group-header/nile-group-header.d.ts +0 -19
- package/dist/src/nile-group-header/nile-group-header.js +0 -36
- package/dist/src/nile-group-header/nile-group-header.js.map +0 -1
- package/dist/src/nile-group-header/nile-option-header.css.d.ts +0 -12
- package/dist/src/nile-group-header/nile-option-header.css.js +0 -30
- package/dist/src/nile-group-header/nile-option-header.css.js.map +0 -1
- package/dist/src/nile-group-header/nile-option-header.d.ts +0 -33
- package/dist/src/nile-group-header/nile-option-header.js +0 -51
- package/dist/src/nile-group-header/nile-option-header.js.map +0 -1
- package/dist/src/nile-option-header/index.d.ts +0 -1
- package/dist/src/nile-option-header/index.js +0 -2
- package/dist/src/nile-option-header/index.js.map +0 -1
- package/dist/src/nile-option-header/nile-option-header.css.d.ts +0 -12
- package/dist/src/nile-option-header/nile-option-header.css.js +0 -30
- package/dist/src/nile-option-header/nile-option-header.css.js.map +0 -1
- package/dist/src/nile-option-header/nile-option-header.d.ts +0 -33
- package/dist/src/nile-option-header/nile-option-header.js +0 -51
- package/dist/src/nile-option-header/nile-option-header.js.map +0 -1
- package/dist/src/nile-table-row/TableRowExpandableHelper.d.ts +0 -9
- package/dist/src/nile-table-row/TableRowExpandableHelper.js +0 -26
- package/dist/src/nile-table-row/TableRowExpandableHelper.js.map +0 -1
- package/dist/src/nile-table-row/helper.ts.d.ts +0 -37
- package/dist/src/nile-table-row/helper.ts.js +0 -105
- package/dist/src/nile-table-row/helper.ts.js.map +0 -1
- package/dist/src/nile-table-row/nile-table-row-expandable.d.ts +0 -37
- package/dist/src/nile-table-row/nile-table-row-expandable.js +0 -105
- package/dist/src/nile-table-row/nile-table-row-expandable.js.map +0 -1
- package/dist/src/nile-table-row-expandable/index.d.ts +0 -1
- package/dist/src/nile-table-row-expandable/index.js +0 -2
- package/dist/src/nile-table-row-expandable/index.js.map +0 -1
- package/dist/src/nile-table-row-expandable/nile-table-row-expandable.css.d.ts +0 -12
- package/dist/src/nile-table-row-expandable/nile-table-row-expandable.css.js +0 -17
- package/dist/src/nile-table-row-expandable/nile-table-row-expandable.css.js.map +0 -1
- package/dist/src/nile-table-row-expandable/nile-table-row-expandable.d.ts +0 -37
- package/dist/src/nile-table-row-expandable/nile-table-row-expandable.js +0 -103
- package/dist/src/nile-table-row-expandable/nile-table-row-expandable.js.map +0 -1
- package/dist/src/nile-tooltip/nile-tooltip-utils.d.ts +0 -18
- package/dist/src/nile-tooltip/nile-tooltip-utils.js +0 -216
- package/dist/src/nile-tooltip/nile-tooltip-utils.js.map +0 -1
- package/dist/src/nile-tooltip/nile-tooltip.test.d.ts +0 -1
- package/dist/src/nile-tooltip/nile-tooltip.test.js +0 -148
- package/dist/src/nile-tooltip/nile-tooltip.test.js.map +0 -1
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/nile-grid/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAkB,MAAM,KAAK,CAAC;AAE3C,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEtE,MAAM,OAAO,YAAY;IACvB,MAAM,CAAC,YAAY,CAAC,UAAuB,EAAE,eAAwB,EAAE,aAAqE;QAC1I,OAAO,IAAI,CAAA;+DACgD,sBAAsB,CAAC,UAAU,CAAC;UACvF,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAA;;oBAEzB,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,KAAK;cACjC,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;;;6BAGzC,CAAC,CAAa,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;;;aAG/D,CAAC,CAAC,CAAC,EAAE;;SAET,CAAC;;KAEL,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,UAAU,CACf,OAAc,EACd,UAAuB,EACvB,mBAA4B,EAC5B,kBAAkE;QAElE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAA;;;;OAIV,CAAC;QACJ,CAAC;QAED,IAAI,mBAAmB,EAAE,CAAC;YACxB,OAAO,IAAI,CAAA;;YAEL,kBAAkB;;OAEvB,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAA;;UAEL,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;;KAE1F,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,qBAAqB,CAAC,GAAQ,EAAE,QAAgB,EAAE,UAAuB;QAC9E,MAAM,KAAK,GAAqB,EAAE,CAAC;QACnC,IAAI,eAAe,GAAG,CAAC,CAAC;QAExB,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;YAChE,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;YAEjC,kEAAkE;YAClE,IAAI,eAAe,GAAG,QAAQ,EAAE,CAAC;gBAC/B,SAAS;YACX,CAAC;YAED,wBAAwB;YACxB,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAE/D,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,MAAM,SAAS,GAAG,gBAAgB,eAAe,GAAG,CAAC,WAAW,OAAO,GAAG,CAAC;gBAE3E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA;0CACmB,SAAS;oBAC/B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;;SAEzB,CAAC,CAAC;gBAEH,eAAe,IAAI,OAAO,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAA;4DAC6C,sBAAsB,CAAC,UAAU,CAAC;UACpF,KAAK;;KAEV,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,sBAAsB,CAAC,GAAc,EAAE,eAAwB;QAC5E,IAAI,CAAC,eAAe;YAAE,OAAO,KAAK,CAAC;QACnC,IAAI,GAAG,CAAC,SAAS,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;CACF","sourcesContent":["import { html, TemplateResult } from 'lit';\nimport type { ColumnDef } from './types.js';\nimport { getGridTemplateColumns, calculateColSpan } from './utils.js';\n\nexport class GridRenderer {\n static renderHeader(columnDefs: ColumnDef[], enableColResize: boolean, onResizeStart: (e: MouseEvent, col: ColumnDef, index: number) => void): TemplateResult {\n return html`\n <div class=\"grid-header\" style=\"grid-template-columns: ${getGridTemplateColumns(columnDefs)};\">\n ${columnDefs.map((col, index) => html`\n <div class=\"grid-header-cell\">\n <span>${col.headerName || col.field}</span>\n ${this.shouldShowResizeHandle(col, enableColResize) ? html`\n <div \n class=\"grid-resize-handle\"\n @mousedown=${(e: MouseEvent) => onResizeStart(e, col, index)}\n title=\"Drag to resize column\"\n ></div>\n ` : ''}\n </div>\n `)}\n </div>\n `;\n }\n\n static renderBody(\n rowData: any[], \n columnDefs: ColumnDef[], \n enableVirtualScroll: boolean,\n onVirtualizeRender: (row: any, rowIndex: number) => TemplateResult\n ): TemplateResult {\n if (rowData.length === 0) {\n return html`\n <div class=\"grid-empty\">\n <div class=\"empty-text\">No data available</div>\n </div>\n `;\n }\n\n if (enableVirtualScroll) {\n return html`\n <div class=\"grid-body\">\n ${onVirtualizeRender}\n </div>\n `;\n }\n\n return html`\n <div class=\"grid-body\">\n ${rowData.map((row, rowIndex) => this.renderRowWithSpanning(row, rowIndex, columnDefs))}\n </div>\n `;\n }\n\n static renderRowWithSpanning(row: any, rowIndex: number, columnDefs: ColumnDef[]): TemplateResult {\n const cells: TemplateResult[] = [];\n let currentColIndex = 0;\n\n for (let colIndex = 0; colIndex < columnDefs.length; colIndex++) {\n const col = columnDefs[colIndex];\n \n // Check if this column should be skipped due to previous spanning\n if (currentColIndex > colIndex) {\n continue;\n }\n\n // Calculate column span\n const colSpan = calculateColSpan(col, row, rowIndex, colIndex);\n \n if (colSpan > 0) {\n const cellStyle = `grid-column: ${currentColIndex + 1} / span ${colSpan};`;\n \n cells.push(html`\n <div class=\"grid-cell\" style=\"${cellStyle}\">\n <span>${row[col.field]}</span>\n </div>\n `);\n \n currentColIndex += colSpan;\n }\n }\n\n return html`\n <div class=\"grid-row\" style=\"grid-template-columns: ${getGridTemplateColumns(columnDefs)};\">\n ${cells}\n </div>\n `;\n }\n\n private static shouldShowResizeHandle(col: ColumnDef, enableColResize: boolean): boolean {\n if (!enableColResize) return false;\n if (col.resizable === false) return false;\n return true;\n }\n}\n"]}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
export class ResizeHandler {
|
2
|
+
static handleResizeStart(event, col, columnIndex, columnDefs, gridOptions, onUpdate) {
|
3
|
+
event.preventDefault();
|
4
|
+
event.stopPropagation();
|
5
|
+
const startX = event.clientX;
|
6
|
+
const startWidth = col.width || 100;
|
7
|
+
const isShiftKey = event.shiftKey || gridOptions.colResizeDefault === 'shift';
|
8
|
+
const handleMouseMove = (e) => {
|
9
|
+
const deltaX = e.clientX - startX;
|
10
|
+
let newWidth = startWidth + deltaX;
|
11
|
+
// Ensure minimum width for usability
|
12
|
+
newWidth = Math.max(newWidth, 50);
|
13
|
+
// Update column width
|
14
|
+
col.width = newWidth;
|
15
|
+
// If shift resize, adjust adjacent column
|
16
|
+
if (isShiftKey && columnIndex < columnDefs.length - 1) {
|
17
|
+
const nextCol = columnDefs[columnIndex + 1];
|
18
|
+
const totalWidth = (col.width || 0) + (nextCol.width || 0);
|
19
|
+
const newNextWidth = totalWidth - newWidth;
|
20
|
+
// Ensure adjacent column doesn't get too narrow
|
21
|
+
if (newNextWidth >= 50) {
|
22
|
+
nextCol.width = newNextWidth;
|
23
|
+
}
|
24
|
+
}
|
25
|
+
// Force complete re-render for virtual scrolling
|
26
|
+
onUpdate();
|
27
|
+
};
|
28
|
+
const handleMouseUp = () => {
|
29
|
+
document.removeEventListener('mousemove', handleMouseMove);
|
30
|
+
document.removeEventListener('mouseup', handleMouseUp);
|
31
|
+
};
|
32
|
+
document.addEventListener('mousemove', handleMouseMove);
|
33
|
+
document.addEventListener('mouseup', handleMouseUp);
|
34
|
+
}
|
35
|
+
}
|
36
|
+
//# sourceMappingURL=resize-handler.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"resize-handler.js","sourceRoot":"","sources":["../../../src/nile-grid/resize-handler.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IACxB,MAAM,CAAC,iBAAiB,CACtB,KAAiB,EACjB,GAAc,EACd,WAAmB,EACnB,UAAuB,EACvB,WAAwB,EACxB,QAAoB;QAEpB,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC;QACpC,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC,gBAAgB,KAAK,OAAO,CAAC;QAE9E,MAAM,eAAe,GAAG,CAAC,CAAa,EAAE,EAAE;YACxC,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC;YAClC,IAAI,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;YAEnC,qCAAqC;YACrC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAElC,sBAAsB;YACtB,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC;YAErB,0CAA0C;YAC1C,IAAI,UAAU,IAAI,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtD,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;gBAC5C,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;gBAC3D,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;gBAE3C,gDAAgD;gBAChD,IAAI,YAAY,IAAI,EAAE,EAAE,CAAC;oBACvB,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC;gBAC/B,CAAC;YACH,CAAC;YAED,iDAAiD;YACjD,QAAQ,EAAE,CAAC;QACb,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAC3D,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACzD,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACxD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACtD,CAAC;CACF","sourcesContent":["import type { ColumnDef, GridOptions } from './types.js';\n\nexport class ResizeHandler {\n static handleResizeStart(\n event: MouseEvent, \n col: ColumnDef, \n columnIndex: number, \n columnDefs: ColumnDef[],\n gridOptions: GridOptions,\n onUpdate: () => void\n ): void {\n event.preventDefault();\n event.stopPropagation();\n \n const startX = event.clientX;\n const startWidth = col.width || 100;\n const isShiftKey = event.shiftKey || gridOptions.colResizeDefault === 'shift';\n \n const handleMouseMove = (e: MouseEvent) => {\n const deltaX = e.clientX - startX;\n let newWidth = startWidth + deltaX;\n \n // Ensure minimum width for usability\n newWidth = Math.max(newWidth, 50);\n \n // Update column width\n col.width = newWidth;\n \n // If shift resize, adjust adjacent column\n if (isShiftKey && columnIndex < columnDefs.length - 1) {\n const nextCol = columnDefs[columnIndex + 1];\n const totalWidth = (col.width || 0) + (nextCol.width || 0);\n const newNextWidth = totalWidth - newWidth;\n \n // Ensure adjacent column doesn't get too narrow\n if (newNextWidth >= 50) {\n nextCol.width = newNextWidth;\n }\n }\n \n // Force complete re-render for virtual scrolling\n onUpdate();\n };\n \n const handleMouseUp = () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n \n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n }\n}\n"]}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
export interface ColumnDef {
|
2
|
+
field: string;
|
3
|
+
headerName?: string;
|
4
|
+
sortable?: boolean;
|
5
|
+
width?: number;
|
6
|
+
resizable?: boolean;
|
7
|
+
minWidth?: number;
|
8
|
+
maxWidth?: number;
|
9
|
+
colSpan?: (params: ColSpanParams) => number;
|
10
|
+
}
|
11
|
+
export interface GridOptions {
|
12
|
+
rowSelection?: 'single' | 'multiple';
|
13
|
+
enableSorting?: boolean;
|
14
|
+
enableVirtualScroll?: boolean;
|
15
|
+
enableColResize?: boolean;
|
16
|
+
colResizeDefault?: 'normal' | 'shift';
|
17
|
+
}
|
18
|
+
export interface ColSpanParams {
|
19
|
+
data: any;
|
20
|
+
field: string;
|
21
|
+
rowIndex: number;
|
22
|
+
columnIndex: number;
|
23
|
+
}
|
24
|
+
export interface GridApi {
|
25
|
+
getSelectedRows: () => any[];
|
26
|
+
setRowData: (data: any[]) => void;
|
27
|
+
setColumnDefs: (defs: ColumnDef[]) => void;
|
28
|
+
}
|
29
|
+
export interface GridReadyEvent {
|
30
|
+
api: GridApi;
|
31
|
+
type: 'gridReady';
|
32
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/nile-grid/types.ts"],"names":[],"mappings":"","sourcesContent":["export interface ColumnDef {\n field: string;\n headerName?: string;\n sortable?: boolean;\n width?: number;\n resizable?: boolean;\n minWidth?: number;\n maxWidth?: number;\n colSpan?: (params: ColSpanParams) => number;\n}\n\nexport interface GridOptions {\n rowSelection?: 'single' | 'multiple';\n enableSorting?: boolean;\n enableVirtualScroll?: boolean;\n enableColResize?: boolean;\n colResizeDefault?: 'normal' | 'shift';\n}\n\nexport interface ColSpanParams {\n data: any;\n field: string;\n rowIndex: number;\n columnIndex: number;\n}\n\nexport interface GridApi {\n getSelectedRows: () => any[];\n setRowData: (data: any[]) => void;\n setColumnDefs: (defs: ColumnDef[]) => void;\n}\n\nexport interface GridReadyEvent {\n api: GridApi;\n type: 'gridReady';\n}\n"]}
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import type { ColumnDef } from './types.js';
|
2
|
+
export declare function getGridTemplateColumns(columnDefs: ColumnDef[]): string;
|
3
|
+
export declare function calculateColSpan(col: ColumnDef, row: any, rowIndex: number, colIndex: number): number;
|
4
|
+
export declare function shouldShowResizeHandle(col: ColumnDef, enableColResize: boolean): boolean;
|
@@ -0,0 +1,32 @@
|
|
1
|
+
export function getGridTemplateColumns(columnDefs) {
|
2
|
+
return columnDefs.map((col, index) => {
|
3
|
+
if (col.width) {
|
4
|
+
return `${col.width}px`;
|
5
|
+
}
|
6
|
+
// Last column takes remaining space
|
7
|
+
if (index === columnDefs.length - 1) {
|
8
|
+
return '1fr';
|
9
|
+
}
|
10
|
+
return 'auto';
|
11
|
+
}).join(' ');
|
12
|
+
}
|
13
|
+
export function calculateColSpan(col, row, rowIndex, colIndex) {
|
14
|
+
if (col.colSpan) {
|
15
|
+
const params = {
|
16
|
+
data: row,
|
17
|
+
field: col.field,
|
18
|
+
rowIndex,
|
19
|
+
columnIndex: colIndex
|
20
|
+
};
|
21
|
+
return col.colSpan(params);
|
22
|
+
}
|
23
|
+
return 1;
|
24
|
+
}
|
25
|
+
export function shouldShowResizeHandle(col, enableColResize) {
|
26
|
+
if (!enableColResize)
|
27
|
+
return false;
|
28
|
+
if (col.resizable === false)
|
29
|
+
return false;
|
30
|
+
return true;
|
31
|
+
}
|
32
|
+
//# sourceMappingURL=utils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/nile-grid/utils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,UAAuB;IAC5D,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACnC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC;QAC1B,CAAC;QACD,oCAAoC;QACpC,IAAI,KAAK,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAc,EAAE,GAAQ,EAAE,QAAgB,EAAE,QAAgB;IAC3F,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,MAAM,MAAM,GAAkB;YAC5B,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,QAAQ;YACR,WAAW,EAAE,QAAQ;SACtB,CAAC;QACF,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAc,EAAE,eAAwB;IAC7E,IAAI,CAAC,eAAe;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,GAAG,CAAC,SAAS,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import type { ColumnDef, ColSpanParams } from './types.js';\n\nexport function getGridTemplateColumns(columnDefs: ColumnDef[]): string {\n return columnDefs.map((col, index) => {\n if (col.width) {\n return `${col.width}px`;\n }\n // Last column takes remaining space\n if (index === columnDefs.length - 1) {\n return '1fr';\n }\n return 'auto';\n }).join(' ');\n}\n\nexport function calculateColSpan(col: ColumnDef, row: any, rowIndex: number, colIndex: number): number {\n if (col.colSpan) {\n const params: ColSpanParams = {\n data: row,\n field: col.field,\n rowIndex,\n columnIndex: colIndex\n };\n return col.colSpan(params);\n }\n return 1;\n}\n\nexport function shouldShowResizeHandle(col: ColumnDef, enableColResize: boolean): boolean {\n if (!enableColResize) return false;\n if (col.resizable === false) return false;\n return true;\n}\n"]}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
/* @web/test-runner snapshot v1 */
|
2
|
+
export const snapshots = {};
|
3
|
+
|
4
|
+
snapshots["NileHero renders correctly with default properties"] =
|
5
|
+
`<div
|
6
|
+
class="hero__container hero__container--expanded"
|
7
|
+
part="nile__hero__container"
|
8
|
+
>
|
9
|
+
<nile-hero-header
|
10
|
+
class="hero__header--collapsed"
|
11
|
+
hero-text="Test Hero"
|
12
|
+
icon="error"
|
13
|
+
part="nile__hero__header"
|
14
|
+
style="opacity:0"
|
15
|
+
>
|
16
|
+
</nile-hero-header>
|
17
|
+
<div
|
18
|
+
class="hero__slot__container"
|
19
|
+
style="opacity:1"
|
20
|
+
>
|
21
|
+
<div class="hero__slot">
|
22
|
+
<span class="icon__container">
|
23
|
+
<nile-icon
|
24
|
+
method="stroke"
|
25
|
+
name="error"
|
26
|
+
size="16"
|
27
|
+
>
|
28
|
+
</nile-icon>
|
29
|
+
</span>
|
30
|
+
<slot>
|
31
|
+
</slot>
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
<div
|
35
|
+
class="hero__img__container"
|
36
|
+
id="hero__img__container"
|
37
|
+
style="opacity:1"
|
38
|
+
>
|
39
|
+
<img
|
40
|
+
class="hero__img"
|
41
|
+
src=""
|
42
|
+
>
|
43
|
+
</div>
|
44
|
+
</div>
|
45
|
+
`;
|
46
|
+
/* end snapshot NileHero renders correctly with default properties */
|
47
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
/* @web/test-runner snapshot v1 */
|
2
|
+
export const snapshots = {};
|
3
|
+
|
4
|
+
snapshots["NileIcon should render the icon with the correct name"] =
|
5
|
+
`<nile-icon
|
6
|
+
description=""
|
7
|
+
method="fill"
|
8
|
+
name="info"
|
9
|
+
set="local"
|
10
|
+
size="16"
|
11
|
+
style="--nile-svg-fill: var(--nile-colors-dark-500); --nile-svg-height: 16px; --nile-svg-width: 16px;"
|
12
|
+
>
|
13
|
+
</nile-icon>
|
14
|
+
`;
|
15
|
+
/* end snapshot NileIcon should render the icon with the correct name */
|
16
|
+
|
@@ -0,0 +1,75 @@
|
|
1
|
+
/* @web/test-runner snapshot v1 */
|
2
|
+
export const snapshots = {};
|
3
|
+
|
4
|
+
snapshots["nile-input renders correctly"] =
|
5
|
+
`<div
|
6
|
+
class="form-control form-control--has-label form-control--medium"
|
7
|
+
part="form-control"
|
8
|
+
>
|
9
|
+
<label
|
10
|
+
aria-hidden="false"
|
11
|
+
class="form-control__label"
|
12
|
+
for="input"
|
13
|
+
part="form-control-label"
|
14
|
+
>
|
15
|
+
<slot name="label">
|
16
|
+
Test Label
|
17
|
+
</slot>
|
18
|
+
</label>
|
19
|
+
<div
|
20
|
+
class="form-control-input"
|
21
|
+
part="form-control-input"
|
22
|
+
>
|
23
|
+
<nile-popup
|
24
|
+
distance="5"
|
25
|
+
exportparts="input"
|
26
|
+
placement="bottom-start"
|
27
|
+
strategy="fixed"
|
28
|
+
>
|
29
|
+
<div
|
30
|
+
class="input input--empty input--medium input--standard"
|
31
|
+
part="base"
|
32
|
+
slot="anchor"
|
33
|
+
>
|
34
|
+
<slot
|
35
|
+
class="input__prefix"
|
36
|
+
name="prefix"
|
37
|
+
part="prefix"
|
38
|
+
>
|
39
|
+
</slot>
|
40
|
+
<input
|
41
|
+
aria-describedby="help-text"
|
42
|
+
autocomplete="off"
|
43
|
+
class="input__control"
|
44
|
+
id="input"
|
45
|
+
name=""
|
46
|
+
part="input"
|
47
|
+
placeholder=""
|
48
|
+
spellcheck="true"
|
49
|
+
title=""
|
50
|
+
type="text"
|
51
|
+
>
|
52
|
+
<slot
|
53
|
+
class="input__suffix"
|
54
|
+
name="suffix"
|
55
|
+
part="suffix"
|
56
|
+
>
|
57
|
+
</slot>
|
58
|
+
</div>
|
59
|
+
<div class="input__non-printable">
|
60
|
+
Non-printable character detected.
|
61
|
+
<nile-badge
|
62
|
+
class="input__remove-non-printable"
|
63
|
+
variant="error"
|
64
|
+
>
|
65
|
+
Remove All
|
66
|
+
</nile-badge>
|
67
|
+
<div class="input__srtiked-text-container">
|
68
|
+
</div>
|
69
|
+
</div>
|
70
|
+
</nile-popup>
|
71
|
+
</div>
|
72
|
+
</div>
|
73
|
+
`;
|
74
|
+
/* end snapshot nile-input renders correctly */
|
75
|
+
|
@@ -50,6 +50,7 @@ export declare class NileOption extends NileElement {
|
|
50
50
|
disabled: boolean;
|
51
51
|
/** Indicates whether the option is selected. */
|
52
52
|
selected: boolean;
|
53
|
+
groupName: string;
|
53
54
|
connectedCallback(): void;
|
54
55
|
checkIfMultipleSelect(): void;
|
55
56
|
protected updated(_changedProperties: PropertyValues): void;
|
@@ -53,6 +53,8 @@ let NileOption = class NileOption extends NileElement {
|
|
53
53
|
this.disabled = false;
|
54
54
|
/** Indicates whether the option is selected. */
|
55
55
|
this.selected = false;
|
56
|
+
/* used to pass group name to the option, so that grouped options can be shown */
|
57
|
+
this.groupName = '';
|
56
58
|
}
|
57
59
|
connectedCallback() {
|
58
60
|
super.connectedCallback();
|
@@ -191,6 +193,9 @@ __decorate([
|
|
191
193
|
__decorate([
|
192
194
|
property({ type: Boolean, reflect: true })
|
193
195
|
], NileOption.prototype, "selected", void 0);
|
196
|
+
__decorate([
|
197
|
+
property({ type: String, reflect: true })
|
198
|
+
], NileOption.prototype, "groupName", void 0);
|
194
199
|
__decorate([
|
195
200
|
watch('disabled')
|
196
201
|
], NileOption.prototype, "handleDisabledChange", null);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"nile-option.js","sourceRoot":"","sources":["../../../src/nile-option/nile-option.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,kBAAkB,CAAC;AAE1B;;;;;GAKG;AAEH;;;;;;;;;;;;;;;GAeG;AAGI,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,WAAW;IAApC;;QAOI,YAAO,GAAG,KAAK,CAAC,CAAC,qFAAqF;QACtG,aAAQ,GAAG,KAAK,CAAC,CAAC,yEAAyE;QAC3F,WAAM,GAAG,KAAK,CAAC,CAAC,uBAAuB;QACvC,qBAAgB,GAAG,KAAK,CAAC;QAElC;;;;WAIG;QAC0B,UAAK,GAAG,EAAE,CAAC;QAEX,iBAAY,GAAY,KAAK,CAAC;QAE3D,kEAAkE;QACtB,aAAQ,GAAG,KAAK,CAAC;QAE7D,gDAAgD;QACJ,aAAQ,GAAG,KAAK,CAAC;IAgI/D,CAAC;IA9HC,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAE5C,yEAAyE;QACzE,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACxF,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED,qBAAqB;QACnB,gDAAgD;QAChD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAExF,mDAAmD;QACnD,IAAI,YAAY,IAAI,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1D,6DAA6D;YAC7D,IAAG,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;gBACzF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC/B,CAAC;iBAAM,IAAI,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,MAAM,EAAE,CAAC;gBAC5D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAES,OAAO,CAAC,kBAAkC;QAClD,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEO,uBAAuB;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEtC,yCAAyC;QACzC,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,WAAW,EAAE,CAAC;YAChD,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACjC,OAAO;QACT,CAAC;QAED,4EAA4E;QAC5E,IAAI,SAAS,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;YACvC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAGD,oBAAoB;QAClB,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IAGD,oBAAoB;QAClB,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IAGD,iBAAiB;QACf,oHAAoH;QACpH,2DAA2D;QAC3D,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QAED,kCAAkC;QAClC,mBAAmB;QACnB,+FAA+F;QAC/F,WAAW;QACX,OAAO;QACP,gDAAgD;QAChD,IAAI;IACN,CAAC;IAED,gEAAgE;IAChE,YAAY;QACV,kDAAkD;QAClD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAEjD,uDAAuD;QACvD,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,YAAY,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAChD,CAAC;QAED,6DAA6D;QAC7D,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;QACP,CAAC,IAAI,CAAC,MAAM;YACZ,CAAC,CAAC,IAAI,CAAA;;oBAEM,QAAQ,CAAC;gBACf,MAAM,EAAE,IAAI;gBACZ,uBAAuB,EAAE,CAAC,IAAI,CAAC,gBAAgB;gBAC/C,iBAAiB,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB;gBAC1D,kBAAkB,EAAE,IAAI,CAAC,QAAQ;gBACjC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB;gBAC3D,eAAe,EAAE,IAAI,CAAC,QAAQ;aAC/B,CAAC;0BACY,IAAI,CAAC,gBAAgB;0BACrB,IAAI,CAAC,gBAAgB;;;YAGnC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAA,oEAAoE,IAAI,CAAC,QAAQ,mBAAmB,CAAC,CAAC,CAAC,EAAE;;;;;;4BAMrH,IAAI,CAAC,uBAAuB;;;iBAGvC;YACT,CAAC,CAAC,EAAE;KACP,CAAC;IACJ,CAAC;;AAvJM,iBAAM,GAAmB,MAAM,AAAzB,CAA0B;AAId;IAAxB,KAAK,CAAC,gBAAgB,CAAC;+CAA8B;AAE7C;IAAR,KAAK,EAAE;2CAAiB;AAChB;IAAR,KAAK,EAAE;4CAAkB;AACjB;IAAR,KAAK,EAAE;0CAAgB;AACf;IAAR,KAAK,EAAE;oDAA0B;AAOL;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;yCAAY;AAEX;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gDAA+B;AAGf;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;4CAAkB;AAGjB;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;4CAAkB;AA0D7D;IADC,KAAK,CAAC,UAAU,CAAC;sDAGjB;AAGD;IADC,KAAK,CAAC,UAAU,CAAC;sDAGjB;AAGD;IADC,KAAK,CAAC,OAAO,CAAC;mDAed;AA3GU,UAAU;IADtB,aAAa,CAAC,aAAa,CAAC;GAChB,UAAU,CAyJtB;;AAED,eAAe,UAAU,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LitElement, CSSResultArray, TemplateResult } from 'lit';\nimport { styles } from './nile-option.css';\nimport '../nile-icon';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { html } from 'lit';\nimport { watch } from '../internal/watch';\nimport type { CSSResultGroup, PropertyValues } from 'lit';\nimport NileElement from '../internal/nile-element';\nimport '../nile-checkbox';\n\n/**\n * Nile icon component.\n *\n * @tag nile-option\n *\n */\n\n/**\n * @summary Options define the selectable items within various form controls such as [select](/components/select).\n * @status stable\n *\n * @dependency nile-icon\n *\n * @slot - The option's label.\n * @slot prefix - Used to prepend an icon or similar element to the menu item.\n * @slot suffix - Used to append an icon or similar element to the menu item.\n *\n * @csspart checked-icon - The checked icon, an `<nile-icon>` element.\n * @csspart base - The component's base wrapper.\n * @csspart label - The option's label.\n * @csspart prefix - The container that wraps the prefix.\n * @csspart suffix - The container that wraps the suffix.\n */\n\n@customElement('nile-option')\nexport class NileOption extends NileElement {\n static styles: CSSResultGroup = styles;\n\n private cachedTextLabel: string;\n\n @query('.option__label') defaultSlot: HTMLSlotElement;\n\n @state() current = false; // the user has keyed into the option, but hasn't selected it yet (shows a highlight)\n @state() hasHover = false; // we need this because Safari doesn't honor :hover styles while dragging\n @state() hidden = false; // the option is hidden\n @state() isMultipleSelect = false;\n\n /**\n * The option's value. When selected, the containing form control will receive this value. The value must be unique\n * from other options in the same group. Values may not contain spaces, as spaces are used as delimiters when listing\n * multiple values.\n */\n @property({ reflect: true }) value = '';\n\n @property({ type: Boolean }) showCheckbox: boolean = false;\n\n /** Draws the option in a disabled state, preventing selection. */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /** Indicates whether the option is selected. */\n @property({ type: Boolean, reflect: true }) selected = false;\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute('role', 'option');\n this.setAttribute('aria-selected', 'false');\n\n // Find the closest parent 'nile-select' or 'nile-virtual-select' element\n const parentSelect = this.closest('nile-select') || this.closest('nile-virtual-select');\n this.checkIfMultipleSelect();\n }\n\n checkIfMultipleSelect() {\n // Find the closest parent 'nile-select' element\n const parentSelect = this.closest('nile-select') || this.closest('nile-virtual-select');\n\n // Check if the parent has the 'multiple' attribute\n if (parentSelect && parentSelect.hasAttribute('multiple')) {\n // let multipleValue = parentSelect.getAttribute('multiple');\n if(parentSelect.hasAttribute('multiple') && parentSelect.getAttribute('multiple') === '') {\n this.isMultipleSelect = true;\n } else if (parentSelect.getAttribute('multiple') === 'true') {\n this.isMultipleSelect = true;\n } else {\n this.isMultipleSelect = false;\n }\n }\n }\n\n protected updated(_changedProperties: PropertyValues): void {\n this.checkIfMultipleSelect();\n }\n\n private handleDefaultSlotChange() {\n const textLabel = this.getTextLabel();\n\n // Ignore the first time the label is set\n if (typeof this.cachedTextLabel === 'undefined') {\n this.cachedTextLabel = textLabel;\n return;\n }\n\n // When the label changes, emit a slotchange event so parent controls see it\n if (textLabel !== this.cachedTextLabel) {\n this.cachedTextLabel = textLabel;\n this.emit('slotchange');\n }\n }\n\n private handleMouseEnter() {\n this.hasHover = true;\n }\n\n private handleMouseLeave() {\n this.hasHover = false;\n }\n\n @watch('disabled')\n handleDisabledChange() {\n this.setAttribute('aria-disabled', this.disabled ? 'true' : 'false');\n }\n\n @watch('selected')\n handleSelectedChange() {\n this.setAttribute('aria-selected', this.selected ? 'true' : 'false');\n }\n\n @watch('value')\n handleValueChange() {\n // Ensure the value is a string. This ensures the next line doesn't error and allows framework users to pass numbers\n // instead of requiring them to cast the value to a string.\n if (typeof this.value !== 'string') {\n this.value = String(this.value);\n }\n\n // if (this.value.includes(' ')) {\n // console.error(\n // `Option values cannot include a space. All spaces have been replaced with underscores.`,\n // this\n // );\n // this.value = this.value.replace(/ /g, '_');\n // }\n }\n\n /** Returns a plain text label based on the option's content. */\n getTextLabel() {\n // Search for a label element inside the component\n const labelElement = this.querySelector('label');\n\n // If a label element is found, return its text content\n if (labelElement) {\n return labelElement.textContent?.trim() ?? '';\n }\n\n // If no label element is found, return the existing behavior\n return (this.textContent ?? '').trim();\n }\n\n render() {\n return html`\n ${!this.hidden\n ? html` <div\n part=\"base\"\n class=${classMap({\n option: true,\n 'option--single-select': !this.isMultipleSelect,\n 'option--current': this.selected && !this.isMultipleSelect,\n 'option--disabled': this.disabled,\n 'option--selected': this.selected && !this.isMultipleSelect,\n 'option--hover': this.hasHover,\n })}\n @mouseenter=${this.handleMouseEnter}\n @mouseleave=${this.handleMouseLeave}\n >\n\n ${this.isMultipleSelect ? html`<nile-checkbox part=\"checkbox\" class=\"option--checkbox\" .checked=${this.selected}></nile-checkbox>` : ''}\n\n <slot part=\"prefix\" name=\"prefix\" class=\"option__prefix\"></slot>\n <slot\n part=\"label\"\n class=\"option__label\"\n @slotchange=${this.handleDefaultSlotChange}\n ></slot>\n <slot part=\"suffix\" name=\"suffix\" class=\"option__suffix\"></slot>\n </div>`\n : ''}\n `;\n }\n}\n\nexport default NileOption;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-option': NileOption;\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"nile-option.js","sourceRoot":"","sources":["../../../src/nile-option/nile-option.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LitElement, CSSResultArray, TemplateResult } from 'lit';\nimport { styles } from './nile-option.css';\nimport '../nile-icon';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { html } from 'lit';\nimport { watch } from '../internal/watch';\nimport type { CSSResultGroup, PropertyValues } from 'lit';\nimport NileElement from '../internal/nile-element';\nimport '../nile-checkbox';\n\n/**\n * Nile icon component.\n *\n * @tag nile-option\n *\n */\n\n/**\n * @summary Options define the selectable items within various form controls such as [select](/components/select).\n * @status stable\n *\n * @dependency nile-icon\n *\n * @slot - The option's label.\n * @slot prefix - Used to prepend an icon or similar element to the menu item.\n * @slot suffix - Used to append an icon or similar element to the menu item.\n *\n * @csspart checked-icon - The checked icon, an `<nile-icon>` element.\n * @csspart base - The component's base wrapper.\n * @csspart label - The option's label.\n * @csspart prefix - The container that wraps the prefix.\n * @csspart suffix - The container that wraps the suffix.\n */\n\n@customElement('nile-option')\nexport class NileOption extends NileElement {\n static styles: CSSResultGroup = styles;\n\n private cachedTextLabel: string;\n\n @query('.option__label') defaultSlot: HTMLSlotElement;\n\n @state() current = false; // the user has keyed into the option, but hasn't selected it yet (shows a highlight)\n @state() hasHover = false; // we need this because Safari doesn't honor :hover styles while dragging\n @state() hidden = false; // the option is hidden\n @state() isMultipleSelect = false;\n\n /**\n * The option's value. When selected, the containing form control will receive this value. The value must be unique\n * from other options in the same group. Values may not contain spaces, as spaces are used as delimiters when listing\n * multiple values.\n */\n @property({ reflect: true }) value = '';\n\n @property({ type: Boolean }) showCheckbox: boolean = false;\n\n /** Draws the option in a disabled state, preventing selection. */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /** Indicates whether the option is selected. */\n @property({ type: Boolean, reflect: true }) selected = false;\n\n /* used to pass group name to the option, so that grouped options can be shown */\n @property({ type: String, reflect: true }) groupName: string = '';\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute('role', 'option');\n this.setAttribute('aria-selected', 'false');\n\n // Find the closest parent 'nile-select' or 'nile-virtual-select' element\n const parentSelect = this.closest('nile-select') || this.closest('nile-virtual-select');\n this.checkIfMultipleSelect();\n }\n\n checkIfMultipleSelect() {\n // Find the closest parent 'nile-select' element\n const parentSelect = this.closest('nile-select') || this.closest('nile-virtual-select');\n\n // Check if the parent has the 'multiple' attribute\n if (parentSelect && parentSelect.hasAttribute('multiple')) {\n // let multipleValue = parentSelect.getAttribute('multiple');\n if(parentSelect.hasAttribute('multiple') && parentSelect.getAttribute('multiple') === '') {\n this.isMultipleSelect = true;\n } else if (parentSelect.getAttribute('multiple') === 'true') {\n this.isMultipleSelect = true;\n } else {\n this.isMultipleSelect = false;\n }\n }\n }\n\n protected updated(_changedProperties: PropertyValues): void {\n this.checkIfMultipleSelect();\n }\n\n private handleDefaultSlotChange() {\n const textLabel = this.getTextLabel();\n\n // Ignore the first time the label is set\n if (typeof this.cachedTextLabel === 'undefined') {\n this.cachedTextLabel = textLabel;\n return;\n }\n\n // When the label changes, emit a slotchange event so parent controls see it\n if (textLabel !== this.cachedTextLabel) {\n this.cachedTextLabel = textLabel;\n this.emit('slotchange');\n }\n }\n\n private handleMouseEnter() {\n this.hasHover = true;\n }\n\n private handleMouseLeave() {\n this.hasHover = false;\n }\n\n @watch('disabled')\n handleDisabledChange() {\n this.setAttribute('aria-disabled', this.disabled ? 'true' : 'false');\n }\n\n @watch('selected')\n handleSelectedChange() {\n this.setAttribute('aria-selected', this.selected ? 'true' : 'false');\n }\n\n @watch('value')\n handleValueChange() {\n // Ensure the value is a string. This ensures the next line doesn't error and allows framework users to pass numbers\n // instead of requiring them to cast the value to a string.\n if (typeof this.value !== 'string') {\n this.value = String(this.value);\n }\n\n // if (this.value.includes(' ')) {\n // console.error(\n // `Option values cannot include a space. All spaces have been replaced with underscores.`,\n // this\n // );\n // this.value = this.value.replace(/ /g, '_');\n // }\n }\n\n /** Returns a plain text label based on the option's content. */\n getTextLabel() {\n // Search for a label element inside the component\n const labelElement = this.querySelector('label');\n\n // If a label element is found, return its text content\n if (labelElement) {\n return labelElement.textContent?.trim() ?? '';\n }\n\n // If no label element is found, return the existing behavior\n return (this.textContent ?? '').trim();\n }\n\n render() {\n return html`\n ${!this.hidden\n ? html` <div\n part=\"base\"\n class=${classMap({\n option: true,\n 'option--single-select': !this.isMultipleSelect,\n 'option--current': this.selected && !this.isMultipleSelect,\n 'option--disabled': this.disabled,\n 'option--selected': this.selected && !this.isMultipleSelect,\n 'option--hover': this.hasHover,\n })}\n @mouseenter=${this.handleMouseEnter}\n @mouseleave=${this.handleMouseLeave}\n >\n\n ${this.isMultipleSelect ? html`<nile-checkbox part=\"checkbox\" class=\"option--checkbox\" .checked=${this.selected}></nile-checkbox>` : ''}\n\n <slot part=\"prefix\" name=\"prefix\" class=\"option__prefix\"></slot>\n <slot\n part=\"label\"\n class=\"option__label\"\n @slotchange=${this.handleDefaultSlotChange}\n ></slot>\n <slot part=\"suffix\" name=\"suffix\" class=\"option__suffix\"></slot>\n </div>`\n : ''}\n `;\n }\n}\n\nexport default NileOption;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-option': NileOption;\n }\n}\n"]}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
/* @web/test-runner snapshot v1 */
|
2
|
+
export const snapshots = {};
|
3
|
+
|
4
|
+
snapshots["NilePopover renders correctly"] =
|
5
|
+
`<nile-popup
|
6
|
+
active=""
|
7
|
+
arrowplacement="anchor"
|
8
|
+
distance="18"
|
9
|
+
placement="top"
|
10
|
+
shift=""
|
11
|
+
strategy="absolute"
|
12
|
+
>
|
13
|
+
<slot
|
14
|
+
aria-describedby="tooltip"
|
15
|
+
name="anchor"
|
16
|
+
slot="anchor"
|
17
|
+
>
|
18
|
+
</slot>
|
19
|
+
</nile-popup>
|
20
|
+
`;
|
21
|
+
/* end snapshot NilePopover renders correctly */
|
22
|
+
|
@@ -159,6 +159,8 @@ export declare class NileSelect extends NileElement implements NileFormControl {
|
|
159
159
|
renderItemConfig?: RenderItemConfig;
|
160
160
|
data: any;
|
161
161
|
enableVirtualScroll: boolean;
|
162
|
+
/** To enable the group header in the select */
|
163
|
+
enableGroupHeader: boolean;
|
162
164
|
/** Gets the validity state object */
|
163
165
|
get validity(): ValidityState;
|
164
166
|
/** Gets the validation message */
|
@@ -214,6 +216,10 @@ export declare class NileSelect extends NileElement implements NileFormControl {
|
|
214
216
|
handleDisabledChange(): void;
|
215
217
|
handleValueChange(): void;
|
216
218
|
handleOpenChange(): Promise<void>;
|
219
|
+
private getAllGroupAttributes;
|
220
|
+
getUniqueGroupNames(arr: NileOption[]): string[];
|
221
|
+
handleGroupSearchChange(): void;
|
222
|
+
handleGroupShowSelected(): void;
|
217
223
|
/** Shows the listbox. */
|
218
224
|
show(): Promise<void>;
|
219
225
|
/** Hides the listbox. */
|
@@ -169,6 +169,8 @@ let NileSelect = class NileSelect extends NileElement {
|
|
169
169
|
this.noResultsMessage = 'No results found';
|
170
170
|
this.data = [];
|
171
171
|
this.enableVirtualScroll = false;
|
172
|
+
/** To enable the group header in the select */
|
173
|
+
this.enableGroupHeader = false;
|
172
174
|
this.options = [];
|
173
175
|
}
|
174
176
|
connectedCallback() {
|
@@ -196,6 +198,9 @@ let NileSelect = class NileSelect extends NileElement {
|
|
196
198
|
}
|
197
199
|
}
|
198
200
|
firstUpdated(_changedProperties) {
|
201
|
+
if (this.enableGroupHeader) {
|
202
|
+
this.handleGroupSearchChange();
|
203
|
+
}
|
199
204
|
if (_changedProperties.has('multiple')) {
|
200
205
|
this.setCheckBoxInOption(this.multiple);
|
201
206
|
}
|
@@ -262,6 +267,9 @@ let NileSelect = class NileSelect extends NileElement {
|
|
262
267
|
el.hidden = this.showSelected;
|
263
268
|
}
|
264
269
|
});
|
270
|
+
if (this.enableGroupHeader) {
|
271
|
+
this.handleGroupShowSelected();
|
272
|
+
}
|
265
273
|
// this.requestUpdate();
|
266
274
|
}
|
267
275
|
/**
|
@@ -274,6 +282,9 @@ let NileSelect = class NileSelect extends NileElement {
|
|
274
282
|
el.selected = false;
|
275
283
|
el.hidden = false;
|
276
284
|
});
|
285
|
+
if (this.enableGroupHeader) {
|
286
|
+
this.handleGroupShowSelected();
|
287
|
+
}
|
277
288
|
this.value = '';
|
278
289
|
this.selectionChanged();
|
279
290
|
this.emit('nile-change', { value: this.value, name: this.name });
|
@@ -391,6 +402,9 @@ let NileSelect = class NileSelect extends NileElement {
|
|
391
402
|
this.showSelected = false;
|
392
403
|
this.value = '';
|
393
404
|
this.displayInput.focus({ preventScroll: true });
|
405
|
+
if (this.enableGroupHeader) {
|
406
|
+
this.handleGroupShowSelected();
|
407
|
+
}
|
394
408
|
// Emit after update
|
395
409
|
this.updateComplete.then(() => {
|
396
410
|
const val = { value: this.multiple ? this.value : '', name: this.name };
|
@@ -443,6 +457,9 @@ let NileSelect = class NileSelect extends NileElement {
|
|
443
457
|
el.hidden = this.showSelected;
|
444
458
|
}
|
445
459
|
});
|
460
|
+
if (this.enableGroupHeader) {
|
461
|
+
this.handleGroupShowSelected();
|
462
|
+
}
|
446
463
|
this.requestUpdate();
|
447
464
|
}
|
448
465
|
}
|
@@ -473,6 +490,9 @@ let NileSelect = class NileSelect extends NileElement {
|
|
473
490
|
el.hidden = this.showSelected;
|
474
491
|
}
|
475
492
|
});
|
493
|
+
if (this.enableGroupHeader) {
|
494
|
+
this.handleGroupShowSelected();
|
495
|
+
}
|
476
496
|
// Emit after updating
|
477
497
|
this.updateComplete.then(() => {
|
478
498
|
this.nileInput({ value: this.value, name: this.name });
|
@@ -616,6 +636,9 @@ let NileSelect = class NileSelect extends NileElement {
|
|
616
636
|
}
|
617
637
|
handleSearchChange(e) {
|
618
638
|
this.searchValue = e.detail.value;
|
639
|
+
if (this.enableGroupHeader) {
|
640
|
+
this.handleGroupSearchChange();
|
641
|
+
}
|
619
642
|
if (!this.disableLocalSearch) {
|
620
643
|
let filteredOptions = this.filterOptions(this.searchValue);
|
621
644
|
if (filteredOptions.length === 0) {
|
@@ -666,8 +689,12 @@ let NileSelect = class NileSelect extends NileElement {
|
|
666
689
|
if (this.open && !this.disabled) {
|
667
690
|
// Reset the current option
|
668
691
|
this.setCurrentOption(this.selectedOptions[0] || this.getFirstOption());
|
669
|
-
// Show
|
670
692
|
this.emit('nile-show', { value: this.value, name: this.name });
|
693
|
+
if (this.enableGroupHeader) {
|
694
|
+
this.getAllGroupAttributes().forEach((el) => {
|
695
|
+
el.element.classList.remove('nile-group-hidden');
|
696
|
+
});
|
697
|
+
}
|
671
698
|
this.addOpenListeners();
|
672
699
|
this.showNoResults = !this.getAllOptions()?.length;
|
673
700
|
await stopAnimations(this);
|
@@ -705,6 +732,34 @@ let NileSelect = class NileSelect extends NileElement {
|
|
705
732
|
this.emit('nile-after-hide', { value: this.value, name: this.name });
|
706
733
|
}
|
707
734
|
}
|
735
|
+
getAllGroupAttributes() {
|
736
|
+
return Array.from(this.querySelectorAll('nile-option-group[name]')).map((el) => ({
|
737
|
+
name: el?.getAttribute('name') || '',
|
738
|
+
data: el?.getAttribute('data'),
|
739
|
+
element: el
|
740
|
+
}));
|
741
|
+
}
|
742
|
+
getUniqueGroupNames(arr) {
|
743
|
+
return Array.from(new Set(arr.map(obj => obj?.groupName)));
|
744
|
+
}
|
745
|
+
handleGroupSearchChange() {
|
746
|
+
const filtered = new Set(this.getUniqueGroupNames(this.filterOptions(this.searchValue)));
|
747
|
+
this.getAllGroupAttributes().forEach(({ name, element }) => {
|
748
|
+
element?.classList.toggle('nile-group-hidden', !filtered.has(name));
|
749
|
+
});
|
750
|
+
}
|
751
|
+
handleGroupShowSelected() {
|
752
|
+
const visibleGroups = new Set();
|
753
|
+
if (this.showSelected) {
|
754
|
+
this.getAllOptions().forEach((option) => {
|
755
|
+
if (!option.hidden)
|
756
|
+
visibleGroups.add(option.groupName);
|
757
|
+
});
|
758
|
+
}
|
759
|
+
this.getAllGroupAttributes().forEach(({ name, element }) => {
|
760
|
+
element?.classList.toggle('nile-group-hidden', this.showSelected && !visibleGroups.has(name));
|
761
|
+
});
|
762
|
+
}
|
708
763
|
/** Shows the listbox. */
|
709
764
|
async show() {
|
710
765
|
if (this.open || this.disabled) {
|
@@ -1282,6 +1337,9 @@ __decorate([
|
|
1282
1337
|
__decorate([
|
1283
1338
|
property({ type: Boolean })
|
1284
1339
|
], NileSelect.prototype, "enableVirtualScroll", void 0);
|
1340
|
+
__decorate([
|
1341
|
+
property({ type: Boolean, reflect: true, attribute: true })
|
1342
|
+
], NileSelect.prototype, "enableGroupHeader", void 0);
|
1285
1343
|
__decorate([
|
1286
1344
|
watch('disabled', { waitUntilFirstUpdate: true })
|
1287
1345
|
], NileSelect.prototype, "handleDisabledChange", null);
|