@aquera/nile-elements 0.1.74 → 0.1.75-beta-1.3
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/demo/index.html +95 -9
- package/dist/{fixture-3bfb4490.cjs.js → fixture-5b79f853.cjs.js} +2 -2
- package/dist/{fixture-3bfb4490.cjs.js.map → fixture-5b79f853.cjs.js.map} +1 -1
- package/dist/fixture-90b199c4.esm.js +569 -0
- package/dist/{fixture-8edec91c.esm.js → fixture-cf7bfcf5.esm.js} +1 -1
- package/dist/fixture-dbd66009.cjs.js +395 -0
- package/dist/fixture-dbd66009.cjs.js.map +1 -0
- package/dist/index.js +41 -17
- 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.cjs.js.map +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-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-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/index.cjs.js +1 -1
- package/dist/nile-select/index.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 +2 -2
- package/dist/nile-select/nile-select.test.cjs.js +1 -1
- package/dist/nile-select/nile-select.test.cjs.js.map +1 -1
- package/dist/nile-select/nile-select.test.esm.js +1 -1
- package/dist/nile-select/virtual-scroll-helper.cjs.js +1 -1
- package/dist/nile-select/virtual-scroll-helper.cjs.js.map +1 -1
- package/dist/nile-select/virtual-scroll-helper.esm.js +1 -0
- 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-textarea/nile-textarea.test.cjs.js +1 -1
- package/dist/nile-textarea/nile-textarea.test.esm.js +1 -1
- package/dist/nile-virtual-select/index.cjs.js +1 -1
- package/dist/nile-virtual-select/index.esm.js +1 -1
- package/dist/nile-virtual-select/nile-virtual-select.cjs.js +1 -1
- package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +1 -1
- package/dist/nile-virtual-select/nile-virtual-select.css.cjs.js +1 -1
- package/dist/nile-virtual-select/nile-virtual-select.css.cjs.js.map +1 -1
- package/dist/nile-virtual-select/nile-virtual-select.css.esm.js +18 -0
- package/dist/nile-virtual-select/nile-virtual-select.esm.js +15 -11
- 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/nile-virtual-select/renderer.cjs.js +1 -1
- package/dist/nile-virtual-select/renderer.cjs.js.map +1 -1
- package/dist/nile-virtual-select/renderer.esm.js +11 -10
- package/dist/nile-virtual-select/selection-manager.cjs.js +1 -1
- package/dist/nile-virtual-select/selection-manager.cjs.js.map +1 -1
- package/dist/nile-virtual-select/selection-manager.esm.js +1 -1
- package/dist/nile-virtual-select/temp_nile-virtual-select copy.cjs.js +2 -0
- package/dist/nile-virtual-select/temp_nile-virtual-select copy.cjs.js.map +1 -0
- package/dist/nile-virtual-select/temp_nile-virtual-select copy.esm.js +231 -0
- 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/virtualizer-error-handler.d.ts +30 -0
- package/dist/src/internal/virtualizer-error-handler.js +82 -0
- package/dist/src/internal/virtualizer-error-handler.js.map +1 -0
- package/dist/src/lib/index.d.ts +7 -0
- package/dist/src/lib/index.js +8 -0
- package/dist/src/lib/index.js.map +1 -0
- package/dist/src/lib/virtualize.d.ts +32 -0
- package/dist/src/lib/virtualize.js +105 -0
- package/dist/src/lib/virtualize.js.map +1 -0
- package/dist/src/lib/virtualize.test.d.ts +7 -0
- package/dist/src/lib/virtualize.test.js +57 -0
- package/dist/src/lib/virtualize.test.js.map +1 -0
- 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-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-icon/icons/svg/ng-action.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-action.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-action.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-activity.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-activity.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-activity.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-alert-circle.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-alert-circle.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-alert-circle.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-align-center.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-align-center.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-align-center.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-annotation-x.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-annotation-x.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-annotation-x.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-arrow-down.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-arrow-down.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-arrow-down.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-arrow-narrow-down.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-arrow-narrow-down.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-arrow-narrow-down.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-arrow-narrow-left.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-arrow-narrow-left.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-arrow-narrow-left.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-arrow-narrow-right.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-arrow-narrow-right.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-arrow-narrow-right.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-arrow-up.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-arrow-up.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-arrow-up.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-bar-chart-12.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-bar-chart-12.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-bar-chart-12.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-bell-01.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-bell-01.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-bell-01.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-bell-ringing-04.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-bell-ringing-04.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-bell-ringing-04.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-bold-01.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-bold-01.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-bold-01.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-building-01.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-building-01.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-building-01.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-building-05.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-building-05.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-building-05.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-button-loading-blue-animated.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-button-loading-blue-animated.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-button-loading-blue-animated.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-button-loading-blue.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-button-loading-blue.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-button-loading-blue.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-calendar-plus-02.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-calendar-plus-02.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-calendar-plus-02.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-calendar.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-calendar.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-calendar.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-check-circle-broken.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-check-circle-broken.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-check-circle-broken.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-check-circle.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-check-circle.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-check-circle.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-check-square-broken.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-check-square-broken.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-check-square-broken.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-check.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-check.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-check.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-chevron-down.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-chevron-down.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-chevron-down.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-chevron-left.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-chevron-left.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-chevron-left.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-chevron-right.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-chevron-right.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-chevron-right.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-chevron-selector-vertical.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-chevron-selector-vertical.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-chevron-selector-vertical.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-chevron-up-double.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-chevron-up-double.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-chevron-up-double.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-chevron-up.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-chevron-up.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-chevron-up.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-copy-03.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-copy-03.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-copy-03.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-dataflow-04.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-dataflow-04.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-dataflow-04.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-dots-grid.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-dots-grid.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-dots-grid.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-dots-vertical.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-dots-vertical.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-dots-vertical.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-download-01.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-download-01.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-download-01.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-dropdown.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-dropdown.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-dropdown.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-edit-02.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-edit-02.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-edit-02.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-edit-05.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-edit-05.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-edit-05.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-expand-06.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-expand-06.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-expand-06.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-eye-off.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-eye-off.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-eye-off.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-eye.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-eye.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-eye.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-file-02.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-file-02.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-file-02.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-file-06.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-file-06.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-file-06.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-file-check-02.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-file-check-02.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-file-check-02.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-file-question-03.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-file-question-03.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-file-question-03.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-filter-lines.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-filter-lines.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-filter-lines.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-grid-01.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-grid-01.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-grid-01.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-help-circle.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-help-circle.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-help-circle.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-image-03.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-image-03.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-image-03.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-image-user-left.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-image-user-left.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-image-user-left.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-info-circle.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-info-circle.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-info-circle.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-italic-01.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-italic-01.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-italic-01.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-layers-three-01.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-layers-three-01.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-layers-three-01.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-list.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-list.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-list.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-lock-03.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-lock-03.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-lock-03.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-log-out-01.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-log-out-01.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-log-out-01.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-mail-01.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-mail-01.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-mail-01.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-mail-04.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-mail-04.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-mail-04.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-marker-pin-01.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-marker-pin-01.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-marker-pin-01.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-menu-05.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-menu-05.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-menu-05.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-message-text-square-01.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-message-text-square-01.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-message-text-square-01.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-minimize-02.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-minimize-02.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-minimize-02.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-minus.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-minus.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-minus.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-plus.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-plus.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-plus.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-refresh-cw-02.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-refresh-cw-02.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-refresh-cw-02.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-rocket-02.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-rocket-02.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-rocket-02.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-search-lg.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-search-lg.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-search-lg.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-send-01.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-send-01.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-send-01.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-settings-01.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-settings-01.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-settings-01.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-share-04.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-share-04.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-share-04.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-share-06.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-share-06.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-share-06.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-stars-02.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-stars-02.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-stars-02.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-trash-01.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-trash-01.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-trash-01.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-trash-03.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-trash-03.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-trash-03.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-trend-up-01.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-trend-up-01.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-trend-up-01.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-underline-01.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-underline-01.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-underline-01.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-upload-01.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-upload-01.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-upload-01.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-upload-cloud-02.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-upload-cloud-02.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-upload-cloud-02.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-user-01.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-user-01.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-user-01.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-user-check-02-1.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-user-check-02-1.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-user-check-02-1.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-user-check-02.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-user-check-02.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-user-check-02.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-user-plus-02.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-user-plus-02.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-user-plus-02.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-user-right-01.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-user-right-01.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-user-right-01.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-users-01.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-users-01.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-users-01.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-x-circle.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-x-circle.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-x-circle.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-x-close.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-x-close.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-x-close.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/ng-x-square.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/ng-x-square.js +5 -0
- package/dist/src/nile-icon/icons/svg/ng-x-square.js.map +1 -0
- package/dist/src/nile-input/__snapshots__/nile-input.test.snap.js +75 -0
- package/dist/src/nile-popover/__snapshots__/nile-popover.test.snap.js +22 -0
- package/dist/src/nile-select/nile-select.d.ts +2 -0
- package/dist/src/nile-select/nile-select.js +8 -2
- package/dist/src/nile-select/nile-select.js.map +1 -1
- package/dist/src/nile-select/virtual-scroll-helper.js +1 -0
- package/dist/src/nile-select/virtual-scroll-helper.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-virtual-select/nile-virtual-select.css.js +18 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.css.js.map +1 -1
- package/dist/src/nile-virtual-select/nile-virtual-select.d.ts +18 -1
- package/dist/src/nile-virtual-select/nile-virtual-select.js +106 -21
- package/dist/src/nile-virtual-select/nile-virtual-select.js.map +1 -1
- package/dist/src/nile-virtual-select/renderer.d.ts +2 -2
- package/dist/src/nile-virtual-select/renderer.js +9 -8
- package/dist/src/nile-virtual-select/renderer.js.map +1 -1
- package/dist/src/nile-virtual-select/selection-manager.js +1 -1
- package/dist/src/nile-virtual-select/selection-manager.js.map +1 -1
- package/dist/src/nile-virtual-select/temp_nile-virtual-select copy.d.ts +273 -0
- package/dist/src/nile-virtual-select/temp_nile-virtual-select copy.js +1305 -0
- package/dist/src/nile-virtual-select/temp_nile-virtual-select copy.js.map +1 -0
- package/dist/src/nile-virtual-select/virtualizer-error-handler.d.ts +21 -0
- package/dist/src/nile-virtual-select/virtualizer-error-handler.js +56 -0
- package/dist/src/nile-virtual-select/virtualizer-error-handler.js.map +1 -0
- 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 +1 -1
- package/src/nile-select/nile-select.ts +6 -2
- package/src/nile-select/virtual-scroll-helper.ts +1 -0
- package/src/nile-virtual-select/nile-virtual-select.css.ts +18 -0
- package/src/nile-virtual-select/nile-virtual-select.ts +121 -25
- package/src/nile-virtual-select/renderer.ts +10 -8
- package/src/nile-virtual-select/selection-manager.ts +1 -1
- package/vscode-html-custom-data.json +28 -2
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"virtualize.js","sourceRoot":"","sources":["../../../src/lib/virtualize.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2025\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 { html, type TemplateResult, render } from 'lit';\n\nexport interface VirtualizeOptions {\n items: any[];\n renderItem: (item: any, index: number) => TemplateResult;\n scroller?: boolean;\n itemHeight?: number;\n containerHeight?: number;\n overscan?: number;\n}\n\n/**\n * Custom virtualize function that mimics the @lit-labs/virtualizer API\n * but uses our own implementation for better control and customization\n */\nexport function virtualize(options: VirtualizeOptions): TemplateResult {\n const {\n items = [],\n renderItem,\n scroller = true,\n itemHeight = 40,\n containerHeight = 300,\n overscan = 5\n } = options;\n\n // If no items, return empty template\n if (!items.length) {\n return html``;\n }\n\n // For small datasets, render all items without virtualization\n if (items.length < 10) {\n return html`\n ${items.map((item, index) => renderItem(item, index))}\n `;\n }\n\n // Create a unique ID for this virtualizer instance\n const virtualizerId = `virtualizer-${Math.random().toString(36).substr(2, 9)}`;\n \n return html`\n <div \n id=\"${virtualizerId}\"\n class=\"custom-virtualizer\"\n style=\"\n height: ${containerHeight}px; \n overflow-y: auto; \n position: relative;\n contain: layout style paint;\n \"\n @scroll=${(e: Event) => {\n const container = e.target as HTMLElement;\n const scrollTop = container.scrollTop;\n \n // Calculate visible range\n const start = Math.max(0, Math.floor(scrollTop / itemHeight) - overscan);\n const end = Math.min(\n start + Math.ceil(containerHeight / itemHeight) + (overscan * 2),\n items.length\n );\n \n // Update the virtualized content\n updateVirtualizedContent(container, items, renderItem, start, end, itemHeight);\n }}\n >\n ${(() => {\n // Initial render - show first visible items\n const start = 0;\n const end = Math.min(\n Math.ceil(containerHeight / itemHeight) + (overscan * 2),\n items.length\n );\n \n return html`\n ${updateVirtualizedContent(null, items, renderItem, start, end, itemHeight)}\n `;\n })()}\n </div>\n `;\n}\n\n/**\n * Update the virtualized content based on scroll position\n */\nfunction updateVirtualizedContent(\n container: HTMLElement | null,\n items: any[],\n renderItem: (item: any, index: number) => TemplateResult,\n start: number,\n end: number,\n itemHeight: number\n): TemplateResult {\n const visibleItems = items.slice(start, end);\n const spacerBefore = start * itemHeight;\n const spacerAfter = (items.length - end) * itemHeight;\n \n return html`\n ${spacerBefore > 0 ? html`<div style=\"height: ${spacerBefore}px; flex-shrink: 0;\"></div>` : ''}\n ${visibleItems.map((item, index) => \n html`<div style=\"height: ${itemHeight}px; flex-shrink: 0;\">${renderItem(item, start + index)}</div>`\n )}\n ${spacerAfter > 0 ? html`<div style=\"height: ${spacerAfter}px; flex-shrink: 0;\"></div>` : ''}\n `;\n}\n\n/**\n * Enhanced virtualize function with better performance and scroll handling\n */\nexport function createVirtualizer(options: VirtualizeOptions) {\n const {\n items = [],\n renderItem,\n scroller = true,\n itemHeight = 40,\n containerHeight = 300,\n overscan = 5\n } = options;\n\n let scrollTop = 0;\n let isScrolling = false;\n let scrollTimeout: ReturnType<typeof setTimeout> | undefined;\n\n const handleScroll = (e: Event) => {\n const container = e.target as HTMLElement;\n scrollTop = container.scrollTop;\n isScrolling = true;\n\n // Debounce scroll end detection\n if (scrollTimeout) {\n clearTimeout(scrollTimeout);\n }\n \n scrollTimeout = setTimeout(() => {\n isScrolling = false;\n }, 150);\n };\n\n return {\n handleScroll,\n getVisibleRange: () => {\n const start = Math.max(0, Math.floor(scrollTop / itemHeight) - overscan);\n const end = Math.min(\n start + Math.ceil(containerHeight / itemHeight) + (overscan * 2),\n items.length\n );\n return { start, end };\n },\n getTotalHeight: () => items.length * itemHeight,\n scrollToItem: (index: number, container: HTMLElement) => {\n const scrollPosition = index * itemHeight;\n container.scrollTop = scrollPosition;\n scrollTop = scrollPosition;\n }\n };\n}\n"]}
|
@@ -0,0 +1,57 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright Aquera Inc 2025
|
3
|
+
*
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
6
|
+
*/
|
7
|
+
import { expect } from '@open-wc/testing';
|
8
|
+
import { html } from 'lit';
|
9
|
+
import { virtualize } from './virtualize.js';
|
10
|
+
describe('Custom Virtualize', () => {
|
11
|
+
it('should render empty template for empty items array', () => {
|
12
|
+
const result = virtualize({
|
13
|
+
items: [],
|
14
|
+
renderItem: () => html `<div>test</div>`
|
15
|
+
});
|
16
|
+
expect(result).to.exist;
|
17
|
+
});
|
18
|
+
it('should render all items for small datasets without virtualization', () => {
|
19
|
+
const items = Array.from({ length: 5 }, (_, i) => ({ id: i, name: `Item ${i}` }));
|
20
|
+
const result = virtualize({
|
21
|
+
items,
|
22
|
+
renderItem: (item) => html `<div>${item.name}</div>`
|
23
|
+
});
|
24
|
+
expect(result).to.exist;
|
25
|
+
});
|
26
|
+
it('should use virtualization for large datasets', () => {
|
27
|
+
const items = Array.from({ length: 100 }, (_, i) => ({ id: i, name: `Item ${i}` }));
|
28
|
+
const result = virtualize({
|
29
|
+
items,
|
30
|
+
renderItem: (item) => html `<div>${item.name}</div>`,
|
31
|
+
itemHeight: 40,
|
32
|
+
containerHeight: 300
|
33
|
+
});
|
34
|
+
expect(result).to.exist;
|
35
|
+
});
|
36
|
+
it('should accept scroller option', () => {
|
37
|
+
const items = Array.from({ length: 50 }, (_, i) => ({ id: i, name: `Item ${i}` }));
|
38
|
+
const result = virtualize({
|
39
|
+
items,
|
40
|
+
renderItem: (item) => html `<div>${item.name}</div>`,
|
41
|
+
scroller: true
|
42
|
+
});
|
43
|
+
expect(result).to.exist;
|
44
|
+
});
|
45
|
+
it('should accept custom itemHeight and containerHeight', () => {
|
46
|
+
const items = Array.from({ length: 50 }, (_, i) => ({ id: i, name: `Item ${i}` }));
|
47
|
+
const result = virtualize({
|
48
|
+
items,
|
49
|
+
renderItem: (item) => html `<div>${item.name}</div>`,
|
50
|
+
itemHeight: 60,
|
51
|
+
containerHeight: 400,
|
52
|
+
overscan: 10
|
53
|
+
});
|
54
|
+
expect(result).to.exist;
|
55
|
+
});
|
56
|
+
});
|
57
|
+
//# sourceMappingURL=virtualize.test.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"virtualize.test.js","sourceRoot":"","sources":["../../../src/lib/virtualize.test.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2025\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 { expect } from '@open-wc/testing';\nimport { html } from 'lit';\nimport { virtualize } from './virtualize.js';\n\ndescribe('Custom Virtualize', () => {\n it('should render empty template for empty items array', () => {\n const result = virtualize({\n items: [],\n renderItem: () => html`<div>test</div>`\n });\n \n expect(result).to.exist;\n });\n\n it('should render all items for small datasets without virtualization', () => {\n const items = Array.from({ length: 5 }, (_, i) => ({ id: i, name: `Item ${i}` }));\n \n const result = virtualize({\n items,\n renderItem: (item) => html`<div>${item.name}</div>`\n });\n \n expect(result).to.exist;\n });\n\n it('should use virtualization for large datasets', () => {\n const items = Array.from({ length: 100 }, (_, i) => ({ id: i, name: `Item ${i}` }));\n \n const result = virtualize({\n items,\n renderItem: (item) => html`<div>${item.name}</div>`,\n itemHeight: 40,\n containerHeight: 300\n });\n \n expect(result).to.exist;\n });\n\n it('should accept scroller option', () => {\n const items = Array.from({ length: 50 }, (_, i) => ({ id: i, name: `Item ${i}` }));\n \n const result = virtualize({\n items,\n renderItem: (item) => html`<div>${item.name}</div>`,\n scroller: true\n });\n \n expect(result).to.exist;\n });\n\n it('should accept custom itemHeight and containerHeight', () => {\n const items = Array.from({ length: 50 }, (_, i) => ({ id: i, name: `Item ${i}` }));\n \n const result = virtualize({\n items,\n renderItem: (item) => html`<div>${item.name}</div>`,\n itemHeight: 60,\n containerHeight: 400,\n overscan: 10\n });\n \n expect(result).to.exist;\n });\n});\n"]}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
/* @web/test-runner snapshot v1 */
|
2
|
+
export const snapshots = {};
|
3
|
+
|
4
|
+
snapshots["NileBadge should display the default slot content"] =
|
5
|
+
`<span
|
6
|
+
class="badge badge--badge-color badge--normal"
|
7
|
+
part="base"
|
8
|
+
>
|
9
|
+
<slot
|
10
|
+
class="badge__content"
|
11
|
+
part="content"
|
12
|
+
>
|
13
|
+
</slot>
|
14
|
+
</span>
|
15
|
+
`;
|
16
|
+
/* end snapshot NileBadge should display the default slot content */
|
17
|
+
|
@@ -0,0 +1,310 @@
|
|
1
|
+
/* @web/test-runner snapshot v1 */
|
2
|
+
export const snapshots = {};
|
3
|
+
|
4
|
+
snapshots["NileCalendar renders correctly with default properties"] =
|
5
|
+
`<div class="base">
|
6
|
+
<div class="calendar-config hidden">
|
7
|
+
<div class="calendar-switcher">
|
8
|
+
<nile-tab-group
|
9
|
+
centered=""
|
10
|
+
value="absolute"
|
11
|
+
>
|
12
|
+
<nile-tab
|
13
|
+
active=""
|
14
|
+
aria-disabled="false"
|
15
|
+
aria-selected="true"
|
16
|
+
centered=""
|
17
|
+
id="nile-tab-1"
|
18
|
+
panel="absolute"
|
19
|
+
role="tab"
|
20
|
+
slot="nav"
|
21
|
+
>
|
22
|
+
Absolute
|
23
|
+
</nile-tab>
|
24
|
+
<nile-tab
|
25
|
+
aria-disabled="false"
|
26
|
+
aria-selected="false"
|
27
|
+
centered=""
|
28
|
+
id="nile-tab-2"
|
29
|
+
panel="relative"
|
30
|
+
role="tab"
|
31
|
+
slot="nav"
|
32
|
+
>
|
33
|
+
Relative
|
34
|
+
</nile-tab>
|
35
|
+
</nile-tab-group>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
<div class="calendar-wrapper">
|
39
|
+
<div class="calendar-container">
|
40
|
+
<div class="calendar">
|
41
|
+
<div class="calendar-header">
|
42
|
+
<nile-icon
|
43
|
+
class="calendar-header__month-navigation"
|
44
|
+
color="black"
|
45
|
+
description=""
|
46
|
+
method="fill"
|
47
|
+
name="arrowleft"
|
48
|
+
set="local"
|
49
|
+
size="16"
|
50
|
+
style="--nile-svg-fill: black; --nile-svg-height: 16px; --nile-svg-width: 16px;"
|
51
|
+
>
|
52
|
+
</nile-icon>
|
53
|
+
<span>
|
54
|
+
August
|
55
|
+
2025
|
56
|
+
</span>
|
57
|
+
<nile-icon
|
58
|
+
class="calendar-header__month-navigation"
|
59
|
+
color="black"
|
60
|
+
description=""
|
61
|
+
method="fill"
|
62
|
+
name="arrowright"
|
63
|
+
set="local"
|
64
|
+
size="16"
|
65
|
+
style="--nile-svg-fill: black; --nile-svg-height: 16px; --nile-svg-width: 16px;"
|
66
|
+
>
|
67
|
+
</nile-icon>
|
68
|
+
</div>
|
69
|
+
<div class="days_container">
|
70
|
+
<div class="day_name">
|
71
|
+
Su
|
72
|
+
</div>
|
73
|
+
<div class="day_name">
|
74
|
+
Mo
|
75
|
+
</div>
|
76
|
+
<div class="day_name">
|
77
|
+
Tu
|
78
|
+
</div>
|
79
|
+
<div class="day_name">
|
80
|
+
We
|
81
|
+
</div>
|
82
|
+
<div class="day_name">
|
83
|
+
Th
|
84
|
+
</div>
|
85
|
+
<div class="day_name">
|
86
|
+
Fr
|
87
|
+
</div>
|
88
|
+
<div class="day_name">
|
89
|
+
Sa
|
90
|
+
</div>
|
91
|
+
<div class="day_date filler">
|
92
|
+
<span style="position:relative;">
|
93
|
+
27
|
94
|
+
</span>
|
95
|
+
</div>
|
96
|
+
<div class="day_date filler">
|
97
|
+
<span style="position:relative;">
|
98
|
+
28
|
99
|
+
</span>
|
100
|
+
</div>
|
101
|
+
<div class="day_date filler">
|
102
|
+
<span style="position:relative;">
|
103
|
+
29
|
104
|
+
</span>
|
105
|
+
</div>
|
106
|
+
<div class="day_date filler">
|
107
|
+
<span style="position:relative;">
|
108
|
+
30
|
109
|
+
</span>
|
110
|
+
</div>
|
111
|
+
<div class="day_date filler">
|
112
|
+
<span style="position:relative;">
|
113
|
+
31
|
114
|
+
</span>
|
115
|
+
</div>
|
116
|
+
<div class="day_date">
|
117
|
+
<span style="position:relative;">
|
118
|
+
1
|
119
|
+
</span>
|
120
|
+
</div>
|
121
|
+
<div class="day_date">
|
122
|
+
<span style="position:relative;">
|
123
|
+
2
|
124
|
+
</span>
|
125
|
+
</div>
|
126
|
+
<div class="day_date">
|
127
|
+
<span style="position:relative;">
|
128
|
+
3
|
129
|
+
</span>
|
130
|
+
</div>
|
131
|
+
<div class="day_date">
|
132
|
+
<span style="position:relative;">
|
133
|
+
4
|
134
|
+
<div class="current__date__dot">
|
135
|
+
</div>
|
136
|
+
</span>
|
137
|
+
</div>
|
138
|
+
<div class="day_date">
|
139
|
+
<span style="position:relative;">
|
140
|
+
5
|
141
|
+
</span>
|
142
|
+
</div>
|
143
|
+
<div class="day_date">
|
144
|
+
<span style="position:relative;">
|
145
|
+
6
|
146
|
+
</span>
|
147
|
+
</div>
|
148
|
+
<div class="day_date">
|
149
|
+
<span style="position:relative;">
|
150
|
+
7
|
151
|
+
</span>
|
152
|
+
</div>
|
153
|
+
<div class="day_date">
|
154
|
+
<span style="position:relative;">
|
155
|
+
8
|
156
|
+
</span>
|
157
|
+
</div>
|
158
|
+
<div class="day_date">
|
159
|
+
<span style="position:relative;">
|
160
|
+
9
|
161
|
+
</span>
|
162
|
+
</div>
|
163
|
+
<div class="day_date">
|
164
|
+
<span style="position:relative;">
|
165
|
+
10
|
166
|
+
</span>
|
167
|
+
</div>
|
168
|
+
<div class="day_date">
|
169
|
+
<span style="position:relative;">
|
170
|
+
11
|
171
|
+
</span>
|
172
|
+
</div>
|
173
|
+
<div class="day_date">
|
174
|
+
<span style="position:relative;">
|
175
|
+
12
|
176
|
+
</span>
|
177
|
+
</div>
|
178
|
+
<div class="day_date">
|
179
|
+
<span style="position:relative;">
|
180
|
+
13
|
181
|
+
</span>
|
182
|
+
</div>
|
183
|
+
<div class="day_date">
|
184
|
+
<span style="position:relative;">
|
185
|
+
14
|
186
|
+
</span>
|
187
|
+
</div>
|
188
|
+
<div class="day_date">
|
189
|
+
<span style="position:relative;">
|
190
|
+
15
|
191
|
+
</span>
|
192
|
+
</div>
|
193
|
+
<div class="day_date">
|
194
|
+
<span style="position:relative;">
|
195
|
+
16
|
196
|
+
</span>
|
197
|
+
</div>
|
198
|
+
<div class="day_date">
|
199
|
+
<span style="position:relative;">
|
200
|
+
17
|
201
|
+
</span>
|
202
|
+
</div>
|
203
|
+
<div class="day_date">
|
204
|
+
<span style="position:relative;">
|
205
|
+
18
|
206
|
+
</span>
|
207
|
+
</div>
|
208
|
+
<div class="day_date">
|
209
|
+
<span style="position:relative;">
|
210
|
+
19
|
211
|
+
</span>
|
212
|
+
</div>
|
213
|
+
<div class="day_date">
|
214
|
+
<span style="position:relative;">
|
215
|
+
20
|
216
|
+
</span>
|
217
|
+
</div>
|
218
|
+
<div class="day_date">
|
219
|
+
<span style="position:relative;">
|
220
|
+
21
|
221
|
+
</span>
|
222
|
+
</div>
|
223
|
+
<div class="day_date">
|
224
|
+
<span style="position:relative;">
|
225
|
+
22
|
226
|
+
</span>
|
227
|
+
</div>
|
228
|
+
<div class="day_date">
|
229
|
+
<span style="position:relative;">
|
230
|
+
23
|
231
|
+
</span>
|
232
|
+
</div>
|
233
|
+
<div class="day_date">
|
234
|
+
<span style="position:relative;">
|
235
|
+
24
|
236
|
+
</span>
|
237
|
+
</div>
|
238
|
+
<div class="day_date">
|
239
|
+
<span style="position:relative;">
|
240
|
+
25
|
241
|
+
</span>
|
242
|
+
</div>
|
243
|
+
<div class="day_date">
|
244
|
+
<span style="position:relative;">
|
245
|
+
26
|
246
|
+
</span>
|
247
|
+
</div>
|
248
|
+
<div class="day_date">
|
249
|
+
<span style="position:relative;">
|
250
|
+
27
|
251
|
+
</span>
|
252
|
+
</div>
|
253
|
+
<div class="day_date">
|
254
|
+
<span style="position:relative;">
|
255
|
+
28
|
256
|
+
</span>
|
257
|
+
</div>
|
258
|
+
<div class="day_date">
|
259
|
+
<span style="position:relative;">
|
260
|
+
29
|
261
|
+
</span>
|
262
|
+
</div>
|
263
|
+
<div class="day_date">
|
264
|
+
<span style="position:relative;">
|
265
|
+
30
|
266
|
+
</span>
|
267
|
+
</div>
|
268
|
+
<div class="day_date">
|
269
|
+
<span style="position:relative;">
|
270
|
+
31
|
271
|
+
</span>
|
272
|
+
</div>
|
273
|
+
<div class="day_date filler">
|
274
|
+
<span style="position:relative;">
|
275
|
+
1
|
276
|
+
</span>
|
277
|
+
</div>
|
278
|
+
<div class="day_date filler">
|
279
|
+
<span style="position:relative;">
|
280
|
+
2
|
281
|
+
</span>
|
282
|
+
</div>
|
283
|
+
<div class="day_date filler">
|
284
|
+
<span style="position:relative;">
|
285
|
+
3
|
286
|
+
</span>
|
287
|
+
</div>
|
288
|
+
<div class="day_date filler">
|
289
|
+
<span style="position:relative;">
|
290
|
+
4
|
291
|
+
</span>
|
292
|
+
</div>
|
293
|
+
<div class="day_date filler">
|
294
|
+
<span style="position:relative;">
|
295
|
+
5
|
296
|
+
</span>
|
297
|
+
</div>
|
298
|
+
<div class="day_date filler">
|
299
|
+
<span style="position:relative;">
|
300
|
+
6
|
301
|
+
</span>
|
302
|
+
</div>
|
303
|
+
</div>
|
304
|
+
</div>
|
305
|
+
</div>
|
306
|
+
</div>
|
307
|
+
</div>
|
308
|
+
`;
|
309
|
+
/* end snapshot NileCalendar renders correctly with default properties */
|
310
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
/* @web/test-runner snapshot v1 */
|
2
|
+
export const snapshots = {};
|
3
|
+
|
4
|
+
snapshots["Nile Card should render the card properly"] =
|
5
|
+
`<div
|
6
|
+
class="card card--has-footer"
|
7
|
+
part="base"
|
8
|
+
>
|
9
|
+
<div
|
10
|
+
class="body__wrapper"
|
11
|
+
part="body__wrapper"
|
12
|
+
>
|
13
|
+
<slot
|
14
|
+
class="card__header"
|
15
|
+
name="header"
|
16
|
+
part="header"
|
17
|
+
>
|
18
|
+
</slot>
|
19
|
+
<slot
|
20
|
+
class="card__body"
|
21
|
+
part="body"
|
22
|
+
>
|
23
|
+
</slot>
|
24
|
+
</div>
|
25
|
+
<slot
|
26
|
+
class="card__footer"
|
27
|
+
name="footer"
|
28
|
+
part="footer"
|
29
|
+
>
|
30
|
+
</slot>
|
31
|
+
</div>
|
32
|
+
`;
|
33
|
+
/* end snapshot Nile Card should render the card properly */
|
34
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
/* @web/test-runner snapshot v1 */
|
2
|
+
export const snapshots = {};
|
3
|
+
|
4
|
+
snapshots["NileCheckbox renders correctly with default properties"] =
|
5
|
+
`<label
|
6
|
+
class="checkbox checkbox--medium"
|
7
|
+
part="base"
|
8
|
+
>
|
9
|
+
<input
|
10
|
+
aria-checked="false"
|
11
|
+
class="checkbox__input"
|
12
|
+
name=""
|
13
|
+
title=""
|
14
|
+
type="checkbox"
|
15
|
+
>
|
16
|
+
<span
|
17
|
+
class="checkbox__control"
|
18
|
+
part="control"
|
19
|
+
>
|
20
|
+
</span>
|
21
|
+
<div
|
22
|
+
class="checkbox__label"
|
23
|
+
part="label"
|
24
|
+
>
|
25
|
+
<slot>
|
26
|
+
</slot>
|
27
|
+
</div>
|
28
|
+
</label>
|
29
|
+
`;
|
30
|
+
/* end snapshot NileCheckbox renders correctly with default properties */
|
31
|
+
|
@@ -0,0 +1,37 @@
|
|
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
|
+
import type { GridColumnDef, GridRowData, GridOptions } from './types.js';
|
8
|
+
export declare class GridDataProcessor {
|
9
|
+
private options;
|
10
|
+
private pageSize;
|
11
|
+
private currentPage;
|
12
|
+
private sortField;
|
13
|
+
private sortDirection;
|
14
|
+
private filterText;
|
15
|
+
constructor(options: GridOptions, pageSize?: number);
|
16
|
+
setOptions(options: GridOptions): void;
|
17
|
+
setPageSize(pageSize: number): void;
|
18
|
+
setCurrentPage(page: number): void;
|
19
|
+
setSortField(field: string): void;
|
20
|
+
setSortDirection(direction: 'asc' | 'desc'): void;
|
21
|
+
setFilterText(text: string): void;
|
22
|
+
processData(data: GridRowData[], columns: GridColumnDef[]): {
|
23
|
+
filteredData: GridRowData[];
|
24
|
+
sortedData: GridRowData[];
|
25
|
+
paginatedData: GridRowData[];
|
26
|
+
totalPages: number;
|
27
|
+
};
|
28
|
+
private applyFilters;
|
29
|
+
private applySorting;
|
30
|
+
private applyPagination;
|
31
|
+
getSortClass(column: GridColumnDef): string;
|
32
|
+
getSortIcon(column: GridColumnDef): string;
|
33
|
+
isAllSelected(paginatedData: GridRowData[]): boolean;
|
34
|
+
isPartiallySelected(paginatedData: GridRowData[]): boolean;
|
35
|
+
getSortField(): string;
|
36
|
+
getSortDirection(): 'asc' | 'desc';
|
37
|
+
}
|
@@ -0,0 +1,122 @@
|
|
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
|
+
export class GridDataProcessor {
|
8
|
+
constructor(options, pageSize = 20) {
|
9
|
+
this.options = options;
|
10
|
+
this.pageSize = pageSize;
|
11
|
+
this.currentPage = 1;
|
12
|
+
this.sortField = '';
|
13
|
+
this.sortDirection = 'asc';
|
14
|
+
this.filterText = '';
|
15
|
+
}
|
16
|
+
setOptions(options) {
|
17
|
+
this.options = options;
|
18
|
+
}
|
19
|
+
setPageSize(pageSize) {
|
20
|
+
this.pageSize = pageSize;
|
21
|
+
}
|
22
|
+
setCurrentPage(page) {
|
23
|
+
this.currentPage = page;
|
24
|
+
}
|
25
|
+
setSortField(field) {
|
26
|
+
this.sortField = field;
|
27
|
+
}
|
28
|
+
setSortDirection(direction) {
|
29
|
+
this.sortDirection = direction;
|
30
|
+
}
|
31
|
+
setFilterText(text) {
|
32
|
+
this.filterText = text;
|
33
|
+
}
|
34
|
+
processData(data, columns) {
|
35
|
+
// Apply filtering
|
36
|
+
const filteredData = this.applyFilters(data, columns);
|
37
|
+
// Apply sorting
|
38
|
+
const sortedData = this.applySorting(filteredData, columns);
|
39
|
+
// Apply pagination
|
40
|
+
const totalPages = Math.ceil(sortedData.length / this.pageSize);
|
41
|
+
const paginatedData = this.applyPagination(sortedData);
|
42
|
+
return {
|
43
|
+
filteredData,
|
44
|
+
sortedData,
|
45
|
+
paginatedData,
|
46
|
+
totalPages
|
47
|
+
};
|
48
|
+
}
|
49
|
+
applyFilters(data, columns) {
|
50
|
+
if (!this.filterText || !this.options.enableFiltering) {
|
51
|
+
return data;
|
52
|
+
}
|
53
|
+
return data.filter(row => {
|
54
|
+
return columns.some(column => {
|
55
|
+
const value = row[column.field];
|
56
|
+
if (value == null)
|
57
|
+
return false;
|
58
|
+
return String(value).toLowerCase().includes(this.filterText.toLowerCase());
|
59
|
+
});
|
60
|
+
});
|
61
|
+
}
|
62
|
+
applySorting(data, columns) {
|
63
|
+
if (!this.sortField || !this.options.enableSorting) {
|
64
|
+
return data;
|
65
|
+
}
|
66
|
+
const column = columns.find(col => col.field === this.sortField);
|
67
|
+
if (!column)
|
68
|
+
return data;
|
69
|
+
return [...data].sort((a, b) => {
|
70
|
+
const aVal = a[column.field];
|
71
|
+
const bVal = b[column.field];
|
72
|
+
if (aVal == null && bVal == null)
|
73
|
+
return 0;
|
74
|
+
if (aVal == null)
|
75
|
+
return 1;
|
76
|
+
if (bVal == null)
|
77
|
+
return -1;
|
78
|
+
if (typeof aVal === 'string' && typeof bVal === 'string') {
|
79
|
+
return this.sortDirection === 'asc'
|
80
|
+
? aVal.localeCompare(bVal)
|
81
|
+
: bVal.localeCompare(aVal);
|
82
|
+
}
|
83
|
+
if (typeof aVal === 'number' && typeof bVal === 'number') {
|
84
|
+
return this.sortDirection === 'asc' ? aVal - bVal : bVal - aVal;
|
85
|
+
}
|
86
|
+
return 0;
|
87
|
+
});
|
88
|
+
}
|
89
|
+
applyPagination(data) {
|
90
|
+
if (!this.options.enablePagination) {
|
91
|
+
return data;
|
92
|
+
}
|
93
|
+
const startIndex = (this.currentPage - 1) * this.pageSize;
|
94
|
+
const endIndex = startIndex + this.pageSize;
|
95
|
+
return data.slice(startIndex, endIndex);
|
96
|
+
}
|
97
|
+
getSortClass(column) {
|
98
|
+
if (this.sortField !== column.field)
|
99
|
+
return '';
|
100
|
+
return this.sortDirection === 'asc' ? 'sort-asc' : 'sort-desc';
|
101
|
+
}
|
102
|
+
getSortIcon(column) {
|
103
|
+
if (this.sortField !== column.field)
|
104
|
+
return '↕';
|
105
|
+
return this.sortDirection === 'asc' ? '↑' : '↓';
|
106
|
+
}
|
107
|
+
isAllSelected(paginatedData) {
|
108
|
+
return paginatedData.length > 0 && paginatedData.every(row => row.selected);
|
109
|
+
}
|
110
|
+
isPartiallySelected(paginatedData) {
|
111
|
+
const selectedCount = paginatedData.filter(row => row.selected).length;
|
112
|
+
return selectedCount > 0 && selectedCount < paginatedData.length;
|
113
|
+
}
|
114
|
+
// Getters for event handlers
|
115
|
+
getSortField() {
|
116
|
+
return this.sortField;
|
117
|
+
}
|
118
|
+
getSortDirection() {
|
119
|
+
return this.sortDirection;
|
120
|
+
}
|
121
|
+
}
|
122
|
+
//# sourceMappingURL=data-processor.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"data-processor.js","sourceRoot":"","sources":["../../../src/nile-grid/data-processor.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 type { GridColumnDef, GridRowData, GridOptions } from './types.js';\n\nexport class GridDataProcessor {\n private options: GridOptions;\n private pageSize: number;\n private currentPage: number;\n private sortField: string;\n private sortDirection: 'asc' | 'desc';\n private filterText: string;\n\n constructor(options: GridOptions, pageSize: number = 20) {\n this.options = options;\n this.pageSize = pageSize;\n this.currentPage = 1;\n this.sortField = '';\n this.sortDirection = 'asc';\n this.filterText = '';\n }\n\n setOptions(options: GridOptions): void {\n this.options = options;\n }\n\n setPageSize(pageSize: number): void {\n this.pageSize = pageSize;\n }\n\n setCurrentPage(page: number): void {\n this.currentPage = page;\n }\n\n setSortField(field: string): void {\n this.sortField = field;\n }\n\n setSortDirection(direction: 'asc' | 'desc'): void {\n this.sortDirection = direction;\n }\n\n setFilterText(text: string): void {\n this.filterText = text;\n }\n\n processData(data: GridRowData[], columns: GridColumnDef[]): {\n filteredData: GridRowData[];\n sortedData: GridRowData[];\n paginatedData: GridRowData[];\n totalPages: number;\n } {\n // Apply filtering\n const filteredData = this.applyFilters(data, columns);\n \n // Apply sorting\n const sortedData = this.applySorting(filteredData, columns);\n \n // Apply pagination\n const totalPages = Math.ceil(sortedData.length / this.pageSize);\n const paginatedData = this.applyPagination(sortedData);\n\n return {\n filteredData,\n sortedData,\n paginatedData,\n totalPages\n };\n }\n\n private applyFilters(data: GridRowData[], columns: GridColumnDef[]): GridRowData[] {\n if (!this.filterText || !this.options.enableFiltering) {\n return data;\n }\n\n return data.filter(row => {\n return columns.some(column => {\n const value = row[column.field];\n if (value == null) return false;\n return String(value).toLowerCase().includes(this.filterText.toLowerCase());\n });\n });\n }\n\n private applySorting(data: GridRowData[], columns: GridColumnDef[]): GridRowData[] {\n if (!this.sortField || !this.options.enableSorting) {\n return data;\n }\n\n const column = columns.find(col => col.field === this.sortField);\n if (!column) return data;\n\n return [...data].sort((a, b) => {\n const aVal = a[column.field];\n const bVal = b[column.field];\n \n if (aVal == null && bVal == null) return 0;\n if (aVal == null) return 1;\n if (bVal == null) return -1;\n\n if (typeof aVal === 'string' && typeof bVal === 'string') {\n return this.sortDirection === 'asc' \n ? aVal.localeCompare(bVal)\n : bVal.localeCompare(aVal);\n }\n\n if (typeof aVal === 'number' && typeof bVal === 'number') {\n return this.sortDirection === 'asc' ? aVal - bVal : bVal - aVal;\n }\n\n return 0;\n });\n }\n\n private applyPagination(data: GridRowData[]): GridRowData[] {\n if (!this.options.enablePagination) {\n return data;\n }\n\n const startIndex = (this.currentPage - 1) * this.pageSize;\n const endIndex = startIndex + this.pageSize;\n return data.slice(startIndex, endIndex);\n }\n\n getSortClass(column: GridColumnDef): string {\n if (this.sortField !== column.field) return '';\n return this.sortDirection === 'asc' ? 'sort-asc' : 'sort-desc';\n }\n\n getSortIcon(column: GridColumnDef): string {\n if (this.sortField !== column.field) return '↕';\n return this.sortDirection === 'asc' ? '↑' : '↓';\n }\n\n isAllSelected(paginatedData: GridRowData[]): boolean {\n return paginatedData.length > 0 && paginatedData.every(row => row.selected);\n }\n\n isPartiallySelected(paginatedData: GridRowData[]): boolean {\n const selectedCount = paginatedData.filter(row => row.selected).length;\n return selectedCount > 0 && selectedCount < paginatedData.length;\n }\n\n // Getters for event handlers\n getSortField(): string {\n return this.sortField;\n }\n\n getSortDirection(): 'asc' | 'desc' {\n return this.sortDirection;\n }\n}\n"]}
|