@aquera/nile-elements 1.5.1 → 1.5.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/README.md +9 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +253 -197
- package/dist/nile-auto-complete/nile-auto-complete.cjs.js +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.cjs.js.map +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.css.cjs.js +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.css.cjs.js.map +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.css.esm.js +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.esm.js +1 -1
- package/dist/nile-file-preview/nile-file-preview.cjs.js +1 -1
- package/dist/nile-file-preview/nile-file-preview.cjs.js.map +1 -1
- package/dist/nile-file-preview/nile-file-preview.css.cjs.js +1 -1
- package/dist/nile-file-preview/nile-file-preview.css.cjs.js.map +1 -1
- package/dist/nile-file-preview/nile-file-preview.css.esm.js +2 -2
- package/dist/nile-file-preview/nile-file-preview.esm.js +1 -1
- package/dist/nile-file-preview/nile-file-preview.template.cjs.js +1 -1
- package/dist/nile-file-preview/nile-file-preview.template.cjs.js.map +1 -1
- package/dist/nile-file-preview/nile-file-preview.template.esm.js +55 -25
- package/dist/nile-file-preview/utils/index.cjs.js +1 -1
- package/dist/nile-file-preview/utils/index.esm.js +1 -1
- package/dist/nile-file-preview/utils/nile-file-preview.util.cjs.js +1 -1
- package/dist/nile-file-preview/utils/nile-file-preview.util.cjs.js.map +1 -1
- package/dist/nile-file-preview/utils/nile-file-preview.util.esm.js +1 -1
- package/dist/nile-file-upload/nile-file-upload.cjs.js +1 -1
- package/dist/nile-file-upload/nile-file-upload.cjs.js.map +1 -1
- package/dist/nile-file-upload/nile-file-upload.css.cjs.js +1 -1
- package/dist/nile-file-upload/nile-file-upload.css.cjs.js.map +1 -1
- package/dist/nile-file-upload/nile-file-upload.css.esm.js +15 -5
- package/dist/nile-file-upload/nile-file-upload.esm.js +2 -2
- package/dist/nile-file-upload/nile-file-upload.template.cjs.js +2 -2
- package/dist/nile-file-upload/nile-file-upload.template.cjs.js.map +1 -1
- package/dist/nile-file-upload/nile-file-upload.template.esm.js +36 -32
- package/dist/nile-file-upload/types/file-upload.enums.cjs.js +1 -1
- package/dist/nile-file-upload/types/file-upload.enums.cjs.js.map +1 -1
- package/dist/nile-file-upload/types/file-upload.enums.esm.js +1 -1
- package/dist/nile-file-upload/types/index.cjs.js +1 -1
- package/dist/nile-file-upload/types/index.esm.js +1 -1
- package/dist/nile-file-upload/utils/drag-drop.util.cjs.js +1 -1
- package/dist/nile-file-upload/utils/drag-drop.util.cjs.js.map +1 -1
- package/dist/nile-file-upload/utils/drag-drop.util.esm.js +1 -1
- package/dist/nile-file-upload/utils/file-validation.util.cjs.js +4 -2
- package/dist/nile-file-upload/utils/file-validation.util.cjs.js.map +1 -1
- package/dist/nile-file-upload/utils/file-validation.util.esm.js +1 -1
- package/dist/nile-grid/index.cjs.js +1 -1
- package/dist/nile-grid/index.esm.js +1 -1
- package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.cjs.js +1 -1
- package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.cjs.js.map +1 -1
- package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js +1 -1
- package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js.map +1 -1
- package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.css.esm.js +2 -0
- package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.esm.js +1 -1
- package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.utils.cjs.js +1 -1
- package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.utils.cjs.js.map +1 -1
- package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.utils.esm.js +1 -1
- package/dist/nile-grid/nile-grid-head/nile-grid-head.css.cjs.js +1 -1
- package/dist/nile-grid/nile-grid-head/nile-grid-head.css.cjs.js.map +1 -1
- package/dist/nile-grid/nile-grid-head/nile-grid-head.css.esm.js +8 -2
- package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.cjs.js +1 -1
- package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.cjs.js.map +1 -1
- package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.css.cjs.js +1 -1
- package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.css.cjs.js.map +1 -1
- package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.css.esm.js +2 -1
- package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.esm.js +3 -3
- package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.cjs.js +1 -1
- package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.cjs.js.map +1 -1
- package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.esm.js +1 -1
- package/dist/nile-grid/nile-grid.cjs.js +1 -1
- package/dist/nile-grid/nile-grid.cjs.js.map +1 -1
- package/dist/nile-grid/nile-grid.css.cjs.js +1 -1
- package/dist/nile-grid/nile-grid.css.cjs.js.map +1 -1
- package/dist/nile-grid/nile-grid.css.esm.js +1 -0
- package/dist/nile-grid/nile-grid.esm.js +5 -3
- package/dist/nile-grid/nile-grid.layout.cjs.js +1 -1
- package/dist/nile-grid/nile-grid.layout.esm.js +1 -1
- package/dist/nile-grid/nile-grid.resize.cjs.js +1 -1
- package/dist/nile-grid/nile-grid.resize.esm.js +1 -1
- package/dist/nile-grid/nile-grid.utils.cjs.js +1 -1
- package/dist/nile-grid/nile-grid.utils.cjs.js.map +1 -1
- package/dist/nile-grid/nile-grid.utils.esm.js +1 -1
- package/dist/nile-grid/nile-grid.width.cjs.js +1 -1
- package/dist/nile-grid/nile-grid.width.cjs.js.map +1 -1
- package/dist/nile-grid/nile-grid.width.esm.js +1 -1
- package/dist/nile-input/nile-input.cjs.js +1 -1
- package/dist/nile-input/nile-input.cjs.js.map +1 -1
- package/dist/nile-input/nile-input.esm.js +1 -1
- package/dist/nile-popover/index.cjs.js +1 -1
- package/dist/nile-popover/index.esm.js +1 -1
- package/dist/nile-popover/nile-popover.cjs.js +4 -4
- package/dist/nile-popover/nile-popover.cjs.js.map +1 -1
- package/dist/nile-popover/nile-popover.esm.js +11 -6
- package/dist/src/nile-accordion/nile-accordian.test.js +101 -99
- package/dist/src/nile-accordion/nile-accordian.test.js.map +1 -1
- package/dist/src/nile-auto-complete/nile-auto-complete.css.js +1 -1
- package/dist/src/nile-auto-complete/nile-auto-complete.css.js.map +1 -1
- package/dist/src/nile-auto-complete/nile-auto-complete.js +1 -1
- package/dist/src/nile-auto-complete/nile-auto-complete.js.map +1 -1
- package/dist/src/nile-auto-complete/nile-auto-complete.test.js +104 -112
- package/dist/src/nile-auto-complete/nile-auto-complete.test.js.map +1 -1
- package/dist/src/nile-avatar/nile-avatar.test.d.ts +0 -1
- package/dist/src/nile-avatar/nile-avatar.test.js +103 -87
- package/dist/src/nile-avatar/nile-avatar.test.js.map +1 -1
- package/dist/src/nile-badge/nile-badge.test.js +554 -35
- package/dist/src/nile-badge/nile-badge.test.js.map +1 -1
- package/dist/src/nile-breadcrumb/nile-breadcrumb.test.d.ts +2 -0
- package/dist/src/nile-breadcrumb/nile-breadcrumb.test.js +106 -0
- package/dist/src/nile-breadcrumb/nile-breadcrumb.test.js.map +1 -0
- package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.test.d.ts +1 -0
- package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.test.js +108 -0
- package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.test.js.map +1 -0
- package/dist/src/nile-button/nile-button.test.js +499 -39
- package/dist/src/nile-button/nile-button.test.js.map +1 -1
- package/dist/src/nile-button-filter/nile-button-filter.test.d.ts +1 -0
- package/dist/src/nile-button-filter/nile-button-filter.test.js +108 -0
- package/dist/src/nile-button-filter/nile-button-filter.test.js.map +1 -0
- package/dist/src/nile-button-toggle/nile-button-toggle.test.d.ts +1 -0
- package/dist/src/nile-button-toggle/nile-button-toggle.test.js +108 -0
- package/dist/src/nile-button-toggle/nile-button-toggle.test.js.map +1 -0
- package/dist/src/nile-button-toggle-group/nile-button-toggle-group.test.d.ts +1 -1
- package/dist/src/nile-button-toggle-group/nile-button-toggle-group.test.js +105 -104
- package/dist/src/nile-button-toggle-group/nile-button-toggle-group.test.js.map +1 -1
- package/dist/src/nile-calendar/nile-calendar.test.d.ts +0 -6
- package/dist/src/nile-calendar/nile-calendar.test.js +103 -318
- package/dist/src/nile-calendar/nile-calendar.test.js.map +1 -1
- package/dist/src/nile-card/nile-card.test.js +102 -66
- package/dist/src/nile-card/nile-card.test.js.map +1 -1
- package/dist/src/nile-checkbox/nile-checkbox.test.js +547 -108
- package/dist/src/nile-checkbox/nile-checkbox.test.js.map +1 -1
- package/dist/src/nile-chip/nile-chip.test.d.ts +0 -2
- package/dist/src/nile-chip/nile-chip.test.js +101 -102
- package/dist/src/nile-chip/nile-chip.test.js.map +1 -1
- package/dist/src/nile-circular-progressbar/nile-circular-progressbar.test.d.ts +1 -0
- package/dist/src/nile-circular-progressbar/nile-circular-progressbar.test.js +108 -0
- package/dist/src/nile-circular-progressbar/nile-circular-progressbar.test.js.map +1 -0
- package/dist/src/nile-date-picker/nile-date-picker.test.d.ts +1 -0
- package/dist/src/nile-date-picker/nile-date-picker.test.js +108 -0
- package/dist/src/nile-date-picker/nile-date-picker.test.js.map +1 -0
- package/dist/src/nile-dialog/nile-dialog.test.d.ts +0 -1
- package/dist/src/nile-dialog/nile-dialog.test.js +104 -126
- package/dist/src/nile-dialog/nile-dialog.test.js.map +1 -1
- package/dist/src/nile-divider/nile-divider.test.d.ts +1 -0
- package/dist/src/nile-divider/nile-divider.test.js +560 -0
- package/dist/src/nile-divider/nile-divider.test.js.map +1 -0
- package/dist/src/nile-drawer/nile-drawer.test.js +106 -86
- package/dist/src/nile-drawer/nile-drawer.test.js.map +1 -1
- package/dist/src/nile-dropdown/nile-dropdown.test.js +104 -148
- package/dist/src/nile-dropdown/nile-dropdown.test.js.map +1 -1
- package/dist/src/nile-empty-state/nile-empty-state.test.js +107 -59
- package/dist/src/nile-empty-state/nile-empty-state.test.js.map +1 -1
- package/dist/src/nile-error-message/nile-error-message.test.js +105 -55
- package/dist/src/nile-error-message/nile-error-message.test.js.map +1 -1
- package/dist/src/nile-error-notification/nile-error-notification.test.d.ts +1 -0
- package/dist/src/nile-error-notification/nile-error-notification.test.js +108 -0
- package/dist/src/nile-error-notification/nile-error-notification.test.js.map +1 -0
- package/dist/src/nile-file-preview/nile-file-preview.css.js +2 -2
- package/dist/src/nile-file-preview/nile-file-preview.css.js.map +1 -1
- package/dist/src/nile-file-preview/nile-file-preview.d.ts +1 -4
- package/dist/src/nile-file-preview/nile-file-preview.js +21 -47
- package/dist/src/nile-file-preview/nile-file-preview.js.map +1 -1
- package/dist/src/nile-file-preview/nile-file-preview.template.d.ts +6 -6
- package/dist/src/nile-file-preview/nile-file-preview.template.js +53 -23
- package/dist/src/nile-file-preview/nile-file-preview.template.js.map +1 -1
- package/dist/src/nile-file-preview/nile-file-preview.test.d.ts +0 -6
- package/dist/src/nile-file-preview/nile-file-preview.test.js +106 -28
- package/dist/src/nile-file-preview/nile-file-preview.test.js.map +1 -1
- package/dist/src/nile-file-preview/utils/nile-file-preview.util.d.ts +3 -2
- package/dist/src/nile-file-preview/utils/nile-file-preview.util.js +32 -7
- package/dist/src/nile-file-preview/utils/nile-file-preview.util.js.map +1 -1
- package/dist/src/nile-file-upload/nile-file-upload.css.js +15 -5
- package/dist/src/nile-file-upload/nile-file-upload.css.js.map +1 -1
- package/dist/src/nile-file-upload/nile-file-upload.d.ts +4 -1
- package/dist/src/nile-file-upload/nile-file-upload.js +13 -1
- package/dist/src/nile-file-upload/nile-file-upload.js.map +1 -1
- package/dist/src/nile-file-upload/nile-file-upload.template.js +19 -15
- package/dist/src/nile-file-upload/nile-file-upload.template.js.map +1 -1
- package/dist/src/nile-file-upload/nile-file-upload.test.d.ts +0 -6
- package/dist/src/nile-file-upload/nile-file-upload.test.js +106 -28
- package/dist/src/nile-file-upload/nile-file-upload.test.js.map +1 -1
- package/dist/src/nile-file-upload/types/file-upload.enums.d.ts +17 -3
- package/dist/src/nile-file-upload/types/file-upload.enums.js +17 -1
- package/dist/src/nile-file-upload/types/file-upload.enums.js.map +1 -1
- package/dist/src/nile-file-upload/utils/drag-drop.util.d.ts +2 -0
- package/dist/src/nile-file-upload/utils/drag-drop.util.js +14 -8
- package/dist/src/nile-file-upload/utils/drag-drop.util.js.map +1 -1
- package/dist/src/nile-file-upload/utils/file-validation.util.js +89 -10
- package/dist/src/nile-file-upload/utils/file-validation.util.js.map +1 -1
- package/dist/src/nile-filter-chip/nile-filter-chip.test.js +102 -77
- package/dist/src/nile-filter-chip/nile-filter-chip.test.js.map +1 -1
- package/dist/src/nile-form-error-message/nile-form-error-message.test.d.ts +1 -0
- package/dist/src/nile-form-error-message/nile-form-error-message.test.js +108 -0
- package/dist/src/nile-form-error-message/nile-form-error-message.test.js.map +1 -0
- package/dist/src/nile-form-group/nile-form-group.test.js +104 -51
- package/dist/src/nile-form-group/nile-form-group.test.js.map +1 -1
- package/dist/src/nile-form-help-text/nile-form-help-text.test.js +104 -84
- package/dist/src/nile-form-help-text/nile-form-help-text.test.js.map +1 -1
- package/dist/src/nile-format-date/nile-format-date.test.d.ts +1 -0
- package/dist/src/nile-format-date/nile-format-date.test.js +108 -0
- package/dist/src/nile-format-date/nile-format-date.test.js.map +1 -0
- package/dist/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.css.js +2 -0
- package/dist/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.css.js.map +1 -1
- package/dist/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.js +1 -1
- package/dist/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.js.map +1 -1
- package/dist/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.utils.d.ts +1 -1
- package/dist/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.utils.js +2 -2
- package/dist/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.utils.js.map +1 -1
- package/dist/src/nile-grid/nile-grid-head/nile-grid-head.css.js +6 -0
- package/dist/src/nile-grid/nile-grid-head/nile-grid-head.css.js.map +1 -1
- package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.css.js +2 -1
- package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.css.js.map +1 -1
- package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.js +6 -5
- package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.js.map +1 -1
- package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.d.ts +15 -1
- package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.js +26 -2
- package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.js.map +1 -1
- package/dist/src/nile-grid/nile-grid.css.js +1 -0
- package/dist/src/nile-grid/nile-grid.css.js.map +1 -1
- package/dist/src/nile-grid/nile-grid.d.ts +31 -3
- package/dist/src/nile-grid/nile-grid.js +107 -30
- package/dist/src/nile-grid/nile-grid.js.map +1 -1
- package/dist/src/nile-grid/nile-grid.layout.d.ts +2 -9
- package/dist/src/nile-grid/nile-grid.layout.js +120 -106
- package/dist/src/nile-grid/nile-grid.layout.js.map +1 -1
- package/dist/src/nile-grid/nile-grid.resize.d.ts +1 -0
- package/dist/src/nile-grid/nile-grid.resize.js +7 -3
- package/dist/src/nile-grid/nile-grid.resize.js.map +1 -1
- package/dist/src/nile-grid/nile-grid.utils.d.ts +7 -0
- package/dist/src/nile-grid/nile-grid.utils.js +37 -2
- package/dist/src/nile-grid/nile-grid.utils.js.map +1 -1
- package/dist/src/nile-grid/nile-grid.width.d.ts +2 -1
- package/dist/src/nile-grid/nile-grid.width.js +38 -8
- package/dist/src/nile-grid/nile-grid.width.js.map +1 -1
- package/dist/src/nile-grid/types/nile-grid.types.d.ts +5 -0
- package/dist/src/nile-grid/types/nile-grid.types.js.map +1 -1
- package/dist/src/nile-heading/nile-heading.test.d.ts +1 -0
- package/dist/src/nile-heading/nile-heading.test.js +108 -0
- package/dist/src/nile-heading/nile-heading.test.js.map +1 -0
- package/dist/src/nile-hero/nile-hero.test.js +101 -38
- package/dist/src/nile-hero/nile-hero.test.js.map +1 -1
- package/dist/src/nile-icon/nile-icon.test.js +103 -40
- package/dist/src/nile-icon/nile-icon.test.js.map +1 -1
- package/dist/src/nile-icon-button/nile-icon-button.test.d.ts +1 -0
- package/dist/src/nile-icon-button/nile-icon-button.test.js +568 -0
- package/dist/src/nile-icon-button/nile-icon-button.test.js.map +1 -0
- package/dist/src/nile-inline-edit/nile-inline-edit.test.d.ts +1 -0
- package/dist/src/nile-inline-edit/nile-inline-edit.test.js +108 -0
- package/dist/src/nile-inline-edit/nile-inline-edit.test.js.map +1 -0
- package/dist/src/nile-input/nile-input.js +1 -1
- package/dist/src/nile-input/nile-input.js.map +1 -1
- package/dist/src/nile-input/nile-input.test.js +109 -139
- package/dist/src/nile-input/nile-input.test.js.map +1 -1
- package/dist/src/nile-link/nile-link.test.js +103 -67
- package/dist/src/nile-link/nile-link.test.js.map +1 -1
- package/dist/src/nile-list/nile-list.test.d.ts +1 -0
- package/dist/src/nile-list/nile-list.test.js +108 -0
- package/dist/src/nile-list/nile-list.test.js.map +1 -0
- package/dist/src/nile-list-item/nile-list-item.test.d.ts +1 -0
- package/dist/src/nile-list-item/nile-list-item.test.js +108 -0
- package/dist/src/nile-list-item/nile-list-item.test.js.map +1 -0
- package/dist/src/nile-lite-tooltip/nile-lite-tooltip.test.d.ts +2 -0
- package/dist/src/nile-lite-tooltip/nile-lite-tooltip.test.js +109 -0
- package/dist/src/nile-lite-tooltip/nile-lite-tooltip.test.js.map +1 -0
- package/dist/src/nile-loader/nile-loader.test.js +107 -40
- package/dist/src/nile-loader/nile-loader.test.js.map +1 -1
- package/dist/src/nile-menu/nile-menu.test.d.ts +1 -0
- package/dist/src/nile-menu/nile-menu.test.js +113 -0
- package/dist/src/nile-menu/nile-menu.test.js.map +1 -0
- package/dist/src/nile-menu-item/nile-menu-item.test.d.ts +1 -0
- package/dist/src/nile-menu-item/nile-menu-item.test.js +113 -0
- package/dist/src/nile-menu-item/nile-menu-item.test.js.map +1 -0
- package/dist/src/nile-option/nile-option.test.d.ts +1 -0
- package/dist/src/nile-option/nile-option.test.js +108 -0
- package/dist/src/nile-option/nile-option.test.js.map +1 -0
- package/dist/src/nile-option-group/nile-option-group.test.d.ts +1 -0
- package/dist/src/nile-option-group/nile-option-group.test.js +108 -0
- package/dist/src/nile-option-group/nile-option-group.test.js.map +1 -0
- package/dist/src/nile-page-header/nile-page-header.test.d.ts +1 -0
- package/dist/src/nile-page-header/nile-page-header.test.js +108 -0
- package/dist/src/nile-page-header/nile-page-header.test.js.map +1 -0
- package/dist/src/nile-pagination/nile-pagination.test.d.ts +1 -0
- package/dist/src/nile-pagination/nile-pagination.test.js +108 -0
- package/dist/src/nile-pagination/nile-pagination.test.js.map +1 -0
- package/dist/src/nile-popover/nile-popover.test.js +103 -68
- package/dist/src/nile-popover/nile-popover.test.js.map +1 -1
- package/dist/src/nile-popup/nile-popup.test.js +104 -65
- package/dist/src/nile-popup/nile-popup.test.js.map +1 -1
- package/dist/src/nile-progress-bar/nile-progress-bar.test.js +104 -44
- package/dist/src/nile-progress-bar/nile-progress-bar.test.js.map +1 -1
- package/dist/src/nile-radio/nile-radio.test.js +103 -66
- package/dist/src/nile-radio/nile-radio.test.js.map +1 -1
- package/dist/src/nile-radio-group/nile-radio-group.test.d.ts +0 -1
- package/dist/src/nile-radio-group/nile-radio-group.test.js +105 -171
- package/dist/src/nile-radio-group/nile-radio-group.test.js.map +1 -1
- package/dist/src/nile-section-message/nile-section-message.test.d.ts +1 -0
- package/dist/src/nile-section-message/nile-section-message.test.js +108 -0
- package/dist/src/nile-section-message/nile-section-message.test.js.map +1 -0
- package/dist/src/nile-select/nile-select.test.d.ts +0 -5
- package/dist/src/nile-select/nile-select.test.js +105 -244
- package/dist/src/nile-select/nile-select.test.js.map +1 -1
- package/dist/src/nile-skeleton-loader/nile-skeleton-loader.test.d.ts +1 -0
- package/dist/src/nile-skeleton-loader/nile-skeleton-loader.test.js +108 -0
- package/dist/src/nile-skeleton-loader/nile-skeleton-loader.test.js.map +1 -0
- package/dist/src/nile-slide-toggle/nile-slide-toggle.test.js +104 -50
- package/dist/src/nile-slide-toggle/nile-slide-toggle.test.js.map +1 -1
- package/dist/src/nile-slider/nile-slider.test.d.ts +1 -0
- package/dist/src/nile-slider/nile-slider.test.js +108 -0
- package/dist/src/nile-slider/nile-slider.test.js.map +1 -0
- package/dist/src/nile-spinner/nile-spinner.test.d.ts +1 -0
- package/dist/src/nile-spinner/nile-spinner.test.js +569 -0
- package/dist/src/nile-spinner/nile-spinner.test.js.map +1 -0
- package/dist/src/nile-split-panel/nile-split-panel.test.d.ts +1 -0
- package/dist/src/nile-split-panel/nile-split-panel.test.js +108 -0
- package/dist/src/nile-split-panel/nile-split-panel.test.js.map +1 -0
- package/dist/src/nile-stepper/nile-stepper.test.d.ts +2 -0
- package/dist/src/nile-stepper/nile-stepper.test.js +109 -0
- package/dist/src/nile-stepper/nile-stepper.test.js.map +1 -0
- package/dist/src/nile-stepper-item/nile-stepper-item.test.d.ts +1 -0
- package/dist/src/nile-stepper-item/nile-stepper-item.test.js +108 -0
- package/dist/src/nile-stepper-item/nile-stepper-item.test.js.map +1 -0
- package/dist/src/nile-tab/nile-tab.test.d.ts +1 -0
- package/dist/src/nile-tab/nile-tab.test.js +108 -0
- package/dist/src/nile-tab/nile-tab.test.js.map +1 -0
- package/dist/src/nile-tab-group/nile-tab-group.test.js +105 -172
- package/dist/src/nile-tab-group/nile-tab-group.test.js.map +1 -1
- package/dist/src/nile-tab-panel/nile-tab-panel.test.d.ts +1 -0
- package/dist/src/nile-tab-panel/nile-tab-panel.test.js +108 -0
- package/dist/src/nile-tab-panel/nile-tab-panel.test.js.map +1 -0
- package/dist/src/nile-tag/nile-tag.test.d.ts +1 -0
- package/dist/src/nile-tag/nile-tag.test.js +574 -0
- package/dist/src/nile-tag/nile-tag.test.js.map +1 -0
- package/dist/src/nile-textarea/nile-textarea.test.d.ts +1 -1
- package/dist/src/nile-textarea/nile-textarea.test.js +105 -84
- package/dist/src/nile-textarea/nile-textarea.test.js.map +1 -1
- package/dist/src/nile-title/nile-title.test.d.ts +1 -0
- package/dist/src/nile-title/nile-title.test.js +108 -0
- package/dist/src/nile-title/nile-title.test.js.map +1 -0
- package/dist/src/nile-toast/nile-toast.test.d.ts +1 -0
- package/dist/src/nile-toast/nile-toast.test.js +526 -0
- package/dist/src/nile-toast/nile-toast.test.js.map +1 -0
- package/dist/src/nile-toolbar/nile-toolbar.test.d.ts +1 -0
- package/dist/src/nile-toolbar/nile-toolbar.test.js +108 -0
- package/dist/src/nile-toolbar/nile-toolbar.test.js.map +1 -0
- package/dist/src/nile-tooltip/nile-tooltip.test.d.ts +1 -0
- package/dist/src/nile-tooltip/nile-tooltip.test.js +546 -0
- package/dist/src/nile-tooltip/nile-tooltip.test.js.map +1 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.test.d.ts +1 -7
- package/dist/src/nile-virtual-select/nile-virtual-select.test.js +105 -628
- package/dist/src/nile-virtual-select/nile-virtual-select.test.js.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/rollup.config.js +7 -1
- package/src/nile-accordion/nile-accordian.test.ts +102 -116
- package/src/nile-auto-complete/nile-auto-complete.css.ts +1 -1
- package/src/nile-auto-complete/nile-auto-complete.test.ts +102 -145
- package/src/nile-auto-complete/nile-auto-complete.ts +1 -1
- package/src/nile-avatar/nile-avatar.test.ts +102 -112
- package/src/nile-badge/nile-badge.test.ts +642 -30
- package/src/nile-breadcrumb/nile-breadcrumb.test.ts +107 -0
- package/src/nile-breadcrumb-item/nile-breadcrumb-item.test.ts +106 -0
- package/src/nile-button/nile-button.test.ts +593 -61
- package/src/nile-button-filter/nile-button-filter.test.ts +106 -0
- package/src/nile-button-toggle/nile-button-toggle.test.ts +106 -0
- package/src/nile-button-toggle-group/nile-button-toggle-group.test.ts +104 -126
- package/src/nile-calendar/nile-calendar.test.ts +102 -406
- package/src/nile-card/nile-card.test.ts +103 -71
- package/src/nile-checkbox/nile-checkbox.test.ts +614 -108
- package/src/nile-chip/nile-chip.test.ts +102 -136
- package/src/nile-circular-progressbar/nile-circular-progressbar.test.ts +106 -0
- package/src/nile-date-picker/nile-date-picker.test.ts +106 -0
- package/src/nile-dialog/nile-dialog.test.ts +102 -164
- package/src/nile-divider/nile-divider.test.ts +659 -0
- package/src/nile-drawer/nile-drawer.test.ts +105 -105
- package/src/nile-dropdown/nile-dropdown.test.ts +102 -190
- package/src/nile-empty-state/nile-empty-state.test.ts +104 -67
- package/src/nile-error-message/nile-error-message.test.ts +104 -67
- package/src/nile-error-notification/nile-error-notification.test.ts +106 -0
- package/src/nile-file-preview/nile-file-preview.css.ts +2 -2
- package/src/nile-file-preview/nile-file-preview.template.ts +59 -23
- package/src/nile-file-preview/nile-file-preview.test.ts +105 -37
- package/src/nile-file-preview/nile-file-preview.ts +23 -56
- package/src/nile-file-preview/utils/nile-file-preview.util.ts +37 -8
- package/src/nile-file-upload/nile-file-upload.css.ts +15 -5
- package/src/nile-file-upload/nile-file-upload.template.ts +22 -18
- package/src/nile-file-upload/nile-file-upload.test.ts +105 -37
- package/src/nile-file-upload/nile-file-upload.ts +11 -3
- package/src/nile-file-upload/types/file-upload.enums.ts +20 -4
- package/src/nile-file-upload/utils/drag-drop.util.ts +20 -11
- package/src/nile-file-upload/utils/file-validation.util.ts +104 -22
- package/src/nile-filter-chip/nile-filter-chip.test.ts +103 -89
- package/src/nile-form-error-message/nile-form-error-message.test.ts +106 -0
- package/src/nile-form-group/nile-form-group.test.ts +103 -60
- package/src/nile-form-help-text/nile-form-help-text.test.ts +102 -106
- package/src/nile-format-date/nile-format-date.test.ts +106 -0
- package/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.css.ts +2 -0
- package/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.ts +1 -1
- package/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.utils.ts +2 -1
- package/src/nile-grid/nile-grid-head/nile-grid-head.css.ts +6 -0
- package/src/nile-grid/nile-grid-head-item/nile-grid-head-item.css.ts +2 -1
- package/src/nile-grid/nile-grid-head-item/nile-grid-head-item.ts +7 -5
- package/src/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.ts +30 -1
- package/src/nile-grid/nile-grid.css.ts +1 -0
- package/src/nile-grid/nile-grid.layout.ts +122 -133
- package/src/nile-grid/nile-grid.resize.ts +15 -9
- package/src/nile-grid/nile-grid.ts +102 -28
- package/src/nile-grid/nile-grid.utils.ts +45 -3
- package/src/nile-grid/nile-grid.width.ts +45 -14
- package/src/nile-grid/types/nile-grid.types.ts +7 -1
- package/src/nile-heading/nile-heading.test.ts +106 -0
- package/src/nile-hero/nile-hero.test.ts +103 -42
- package/src/nile-icon/nile-icon.test.ts +103 -50
- package/src/nile-icon-button/nile-icon-button.test.ts +667 -0
- package/src/nile-inline-edit/nile-inline-edit.test.ts +106 -0
- package/src/nile-input/nile-input.test.ts +105 -164
- package/src/nile-input/nile-input.ts +1 -1
- package/src/nile-link/nile-link.test.ts +104 -81
- package/src/nile-list/nile-list.test.ts +106 -0
- package/src/nile-list-item/nile-list-item.test.ts +106 -0
- package/src/nile-lite-tooltip/nile-lite-tooltip.test.ts +107 -0
- package/src/nile-loader/nile-loader.test.ts +103 -48
- package/src/nile-menu/nile-menu.test.ts +106 -0
- package/src/nile-menu-item/nile-menu-item.test.ts +106 -0
- package/src/nile-option/nile-option.test.ts +106 -0
- package/src/nile-option-group/nile-option-group.test.ts +106 -0
- package/src/nile-page-header/nile-page-header.test.ts +106 -0
- package/src/nile-pagination/nile-pagination.test.ts +106 -0
- package/src/nile-popover/nile-popover.test.ts +103 -83
- package/src/nile-popup/nile-popup.test.ts +102 -82
- package/src/nile-progress-bar/nile-progress-bar.test.ts +103 -52
- package/src/nile-radio/nile-radio.test.ts +103 -78
- package/src/nile-radio-group/nile-radio-group.test.ts +104 -213
- package/src/nile-section-message/nile-section-message.test.ts +106 -0
- package/src/nile-select/nile-select.test.ts +105 -308
- package/src/nile-skeleton-loader/nile-skeleton-loader.test.ts +106 -0
- package/src/nile-slide-toggle/nile-slide-toggle.test.ts +103 -58
- package/src/nile-slider/nile-slider.test.ts +106 -0
- package/src/nile-spinner/nile-spinner.test.ts +668 -0
- package/src/nile-split-panel/nile-split-panel.test.ts +106 -0
- package/src/nile-stepper/nile-stepper.test.ts +107 -0
- package/src/nile-stepper-item/nile-stepper-item.test.ts +106 -0
- package/src/nile-tab/nile-tab.test.ts +106 -0
- package/src/nile-tab-group/nile-tab-group.test.ts +104 -211
- package/src/nile-tab-panel/nile-tab-panel.test.ts +106 -0
- package/src/nile-tag/nile-tag.test.ts +675 -0
- package/src/nile-textarea/nile-textarea.test.ts +104 -100
- package/src/nile-title/nile-title.test.ts +106 -0
- package/src/nile-toast/nile-toast.test.ts +625 -0
- package/src/nile-toolbar/nile-toolbar.test.ts +106 -0
- package/src/nile-tooltip/nile-tooltip.test.ts +645 -0
- package/src/nile-virtual-select/nile-virtual-select.test.ts +104 -772
- package/vscode-html-custom-data.json +10 -5
- package/web-test-runner.config.mjs +4 -2
- package/dist/axe.min-2720cd56.esm.js +0 -1
- package/dist/axe.min-69d47269.cjs.js +0 -2
- package/dist/axe.min-69d47269.cjs.js.map +0 -1
- package/dist/css-tag-bb10c0fa.cjs.js +0 -6
- package/dist/css-tag-bb10c0fa.cjs.js.map +0 -1
- package/dist/css-tag-dc564feb.esm.js +0 -6
- package/dist/fixture-958445f8.cjs.js +0 -395
- package/dist/fixture-958445f8.cjs.js.map +0 -1
- package/dist/fixture-985bba12.esm.js +0 -569
- package/dist/nile-accordion/nile-accordian.test.cjs.js +0 -2
- package/dist/nile-accordion/nile-accordian.test.cjs.js.map +0 -1
- package/dist/nile-accordion/nile-accordian.test.esm.js +0 -1
- package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js +0 -2
- package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js.map +0 -1
- package/dist/nile-auto-complete/nile-auto-complete.test.esm.js +0 -9
- package/dist/nile-avatar/nile-avatar.test.cjs.js +0 -2
- package/dist/nile-avatar/nile-avatar.test.cjs.js.map +0 -1
- package/dist/nile-avatar/nile-avatar.test.esm.js +0 -11
- package/dist/nile-badge/nile-badge.test.cjs.js +0 -2
- package/dist/nile-badge/nile-badge.test.cjs.js.map +0 -1
- package/dist/nile-badge/nile-badge.test.esm.js +0 -1
- package/dist/nile-button/nile-button.test.cjs.js +0 -2
- package/dist/nile-button/nile-button.test.cjs.js.map +0 -1
- package/dist/nile-button/nile-button.test.esm.js +0 -4
- package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js +0 -2
- package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js.map +0 -1
- package/dist/nile-button-toggle-group/nile-button-toggle-group.test.esm.js +0 -49
- package/dist/nile-calendar/nile-calendar.test.cjs.js +0 -2
- package/dist/nile-calendar/nile-calendar.test.cjs.js.map +0 -1
- package/dist/nile-calendar/nile-calendar.test.esm.js +0 -11
- package/dist/nile-card/nile-card.test.cjs.js +0 -2
- package/dist/nile-card/nile-card.test.cjs.js.map +0 -1
- package/dist/nile-card/nile-card.test.esm.js +0 -51
- package/dist/nile-checkbox/nile-checkbox.test.cjs.js +0 -2
- package/dist/nile-checkbox/nile-checkbox.test.cjs.js.map +0 -1
- package/dist/nile-checkbox/nile-checkbox.test.esm.js +0 -17
- package/dist/nile-chip/nile-chip.test.cjs.js +0 -2
- package/dist/nile-chip/nile-chip.test.cjs.js.map +0 -1
- package/dist/nile-chip/nile-chip.test.esm.js +0 -1
- package/dist/nile-dialog/nile-dialog.test.cjs.js +0 -2
- package/dist/nile-dialog/nile-dialog.test.cjs.js.map +0 -1
- package/dist/nile-dialog/nile-dialog.test.esm.js +0 -7
- package/dist/nile-drawer/nile-drawer.test.cjs.js +0 -2
- package/dist/nile-drawer/nile-drawer.test.cjs.js.map +0 -1
- package/dist/nile-drawer/nile-drawer.test.esm.js +0 -17
- package/dist/nile-dropdown/nile-dropdown.test.cjs.js +0 -2
- package/dist/nile-dropdown/nile-dropdown.test.cjs.js.map +0 -1
- package/dist/nile-dropdown/nile-dropdown.test.esm.js +0 -28
- package/dist/nile-empty-state/nile-empty-state.test.cjs.js +0 -2
- package/dist/nile-empty-state/nile-empty-state.test.cjs.js.map +0 -1
- package/dist/nile-empty-state/nile-empty-state.test.esm.js +0 -9
- package/dist/nile-error-message/nile-error-message.test.cjs.js +0 -2
- package/dist/nile-error-message/nile-error-message.test.cjs.js.map +0 -1
- package/dist/nile-error-message/nile-error-message.test.esm.js +0 -1
- package/dist/nile-file-preview/nile-file-preview.test.cjs.js +0 -2
- package/dist/nile-file-preview/nile-file-preview.test.cjs.js.map +0 -1
- package/dist/nile-file-preview/nile-file-preview.test.esm.js +0 -1
- package/dist/nile-file-upload/nile-file-upload.test.cjs.js +0 -2
- package/dist/nile-file-upload/nile-file-upload.test.cjs.js.map +0 -1
- package/dist/nile-file-upload/nile-file-upload.test.esm.js +0 -1
- package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js +0 -2
- package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js.map +0 -1
- package/dist/nile-filter-chip/nile-filter-chip.test.esm.js +0 -20
- package/dist/nile-form-group/nile-form-group.test.cjs.js +0 -2
- package/dist/nile-form-group/nile-form-group.test.cjs.js.map +0 -1
- package/dist/nile-form-group/nile-form-group.test.esm.js +0 -1
- package/dist/nile-form-help-text/nile-form-help-text.test.cjs.js +0 -2
- package/dist/nile-form-help-text/nile-form-help-text.test.cjs.js.map +0 -1
- package/dist/nile-form-help-text/nile-form-help-text.test.esm.js +0 -1
- package/dist/nile-hero/nile-hero.test.cjs.js +0 -2
- package/dist/nile-hero/nile-hero.test.cjs.js.map +0 -1
- package/dist/nile-hero/nile-hero.test.esm.js +0 -14
- package/dist/nile-icon/nile-icon.test.cjs.js +0 -2
- package/dist/nile-icon/nile-icon.test.cjs.js.map +0 -1
- package/dist/nile-icon/nile-icon.test.esm.js +0 -1
- package/dist/nile-input/nile-input.test.cjs.js +0 -2
- package/dist/nile-input/nile-input.test.cjs.js.map +0 -1
- package/dist/nile-input/nile-input.test.esm.js +0 -17
- package/dist/nile-link/nile-link.test.cjs.js +0 -2
- package/dist/nile-link/nile-link.test.cjs.js.map +0 -1
- package/dist/nile-link/nile-link.test.esm.js +0 -1
- package/dist/nile-loader/nile-loader.test.cjs.js +0 -2
- package/dist/nile-loader/nile-loader.test.cjs.js.map +0 -1
- package/dist/nile-loader/nile-loader.test.esm.js +0 -1
- package/dist/nile-popover/nile-popover.test.cjs.js +0 -2
- package/dist/nile-popover/nile-popover.test.cjs.js.map +0 -1
- package/dist/nile-popover/nile-popover.test.esm.js +0 -21
- package/dist/nile-popup/nile-popup.test.cjs.js +0 -2
- package/dist/nile-popup/nile-popup.test.cjs.js.map +0 -1
- package/dist/nile-popup/nile-popup.test.esm.js +0 -1
- package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js +0 -2
- package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js.map +0 -1
- package/dist/nile-progress-bar/nile-progress-bar.test.esm.js +0 -1
- package/dist/nile-radio/nile-radio.test.cjs.js +0 -2
- package/dist/nile-radio/nile-radio.test.cjs.js.map +0 -1
- package/dist/nile-radio/nile-radio.test.esm.js +0 -1
- package/dist/nile-radio-group/nile-radio-group.test.cjs.js +0 -2
- package/dist/nile-radio-group/nile-radio-group.test.cjs.js.map +0 -1
- package/dist/nile-radio-group/nile-radio-group.test.esm.js +0 -57
- package/dist/nile-select/nile-select.test.cjs.js +0 -2
- package/dist/nile-select/nile-select.test.cjs.js.map +0 -1
- package/dist/nile-select/nile-select.test.esm.js +0 -55
- package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js +0 -2
- package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js.map +0 -1
- package/dist/nile-slide-toggle/nile-slide-toggle.test.esm.js +0 -1
- package/dist/nile-tab-group/nile-tab-group.test.cjs.js +0 -2
- package/dist/nile-tab-group/nile-tab-group.test.cjs.js.map +0 -1
- package/dist/nile-tab-group/nile-tab-group.test.esm.js +0 -65
- package/dist/nile-textarea/nile-textarea.test.cjs.js +0 -2
- package/dist/nile-textarea/nile-textarea.test.cjs.js.map +0 -1
- package/dist/nile-textarea/nile-textarea.test.esm.js +0 -1
- package/dist/nile-virtual-select/nile-virtual-select.test.cjs.js +0 -2
- package/dist/nile-virtual-select/nile-virtual-select.test.cjs.js.map +0 -1
- package/dist/nile-virtual-select/nile-virtual-select.test.esm.js +0 -93
- package/dist/scopedElementsWrapper-31107e48.esm.js +0 -1
- package/dist/scopedElementsWrapper-9b188ea6.cjs.js +0 -2
- package/dist/scopedElementsWrapper-9b188ea6.cjs.js.map +0 -1
- package/dist/sinon-esm-68c8e378.esm.js +0 -1
- package/dist/sinon-esm-97570c13.cjs.js +0 -2
- package/dist/sinon-esm-97570c13.cjs.js.map +0 -1
|
@@ -1,39 +1,79 @@
|
|
|
1
1
|
import { getHead, getBody } from './nile-grid.utils';
|
|
2
|
-
import {
|
|
3
|
-
import { computeColumnWidths } from './nile-grid.width';
|
|
2
|
+
import { addVariablesValue, computeColumnWidths } from './nile-grid.width';
|
|
4
3
|
import { NILE_GRID_HEAD_ITEM } from './types/nile-grid.enums';
|
|
5
4
|
/**
|
|
6
5
|
* @param nileGrid Parent NileGrid instance
|
|
7
6
|
* @param slotEl <slot> element hosting head/body
|
|
8
7
|
* @param ensureWidths Function to ensure columnWidths length matches colCount
|
|
9
|
-
* @param rebuildTemplate Function(colCount, widths) -> grid-template string
|
|
10
8
|
* @param stickyLeftIndexes Mutable list of left-sticky column indexes
|
|
11
9
|
* @param stickyRightIndexes Mutable list of right-sticky column indexes
|
|
12
10
|
* @returns void
|
|
13
11
|
*/
|
|
14
|
-
export const layout = (nileGrid, slotEl, ensureWidths,
|
|
12
|
+
export const layout = (nileGrid, slotEl, ensureWidths, stickyLeftIndexes, stickyRightIndexes) => {
|
|
15
13
|
const head = getHead(slotEl);
|
|
16
14
|
const body = getBody(slotEl);
|
|
17
|
-
if (!body)
|
|
15
|
+
if (!head && !body)
|
|
18
16
|
return;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
17
|
+
let colCount = nileGrid.colCount || 0;
|
|
18
|
+
let headerChanged = false;
|
|
19
|
+
if (nileGrid.needsStructureLayout) {
|
|
20
|
+
headerChanged = true;
|
|
21
|
+
nileGrid.headRows = head ? Array.from(head.querySelectorAll('nile-grid-row')) : [];
|
|
22
|
+
colCount = 0;
|
|
23
|
+
if (nileGrid.headRows.length) {
|
|
24
|
+
colCount = computeHeadLayout(nileGrid, nileGrid.headRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);
|
|
25
|
+
}
|
|
26
|
+
if (body) {
|
|
27
|
+
nileGrid.bodyRows = Array.from(body.querySelectorAll('nile-grid-row'));
|
|
28
|
+
if (colCount) {
|
|
29
|
+
computeBodyLayout(nileGrid, nileGrid.bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
colCount = computeBodyLayout(nileGrid, nileGrid.bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (nileGrid.stickyLeftIndexes.length || nileGrid.stickyRightIndexes.length) {
|
|
36
|
+
cacheStickyEls(nileGrid);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
nileGrid.stickyLeftHeadEls = [];
|
|
40
|
+
nileGrid.stickyRightHeadEls = [];
|
|
41
|
+
nileGrid.stickyLeftBodyEls = [];
|
|
42
|
+
nileGrid.stickyRightBodyEls = [];
|
|
43
|
+
nileGrid.shadowLeftVisibleSticky = false;
|
|
44
|
+
nileGrid.shadowRightVisibleSticky = false;
|
|
45
|
+
}
|
|
46
|
+
nileGrid.colCount = colCount;
|
|
47
|
+
nileGrid.needsStructureLayout = false;
|
|
48
|
+
nileGrid.needsSpanLayout = false;
|
|
49
|
+
nileGrid.needsWidthLayout = true;
|
|
27
50
|
}
|
|
28
|
-
else {
|
|
29
|
-
|
|
51
|
+
else if (nileGrid.needsSpanLayout && body) {
|
|
52
|
+
const bodyRows = nileGrid.bodyRows;
|
|
53
|
+
colCount = nileGrid.colCount || 0;
|
|
54
|
+
if (colCount) {
|
|
55
|
+
computeBodyLayout(nileGrid, bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);
|
|
56
|
+
}
|
|
57
|
+
nileGrid.needsSpanLayout = false;
|
|
58
|
+
}
|
|
59
|
+
if (nileGrid.needsWidthLayout) {
|
|
60
|
+
colCount = nileGrid.colCount || colCount;
|
|
61
|
+
if (!colCount)
|
|
62
|
+
return;
|
|
63
|
+
ensureWidths(colCount);
|
|
64
|
+
computeColumnWidths(nileGrid, colCount, nileGrid.columnWidths, slotEl, nileGrid.lockedWidthColumns, headerChanged);
|
|
65
|
+
addVariablesValue(nileGrid);
|
|
66
|
+
applyColumnsTemplate(nileGrid, nileGrid.columnWidths);
|
|
67
|
+
nileGrid.needsWidthLayout = false;
|
|
30
68
|
}
|
|
31
|
-
setTimeout(() => {
|
|
32
|
-
computeColumnWidths(nileGrid, colCount, nileGrid.columnWidths, slotEl, nileGrid.lockedWidthColumns);
|
|
33
|
-
});
|
|
34
|
-
ensureWidths(colCount);
|
|
35
|
-
nileGrid.colTemplate = rebuildTemplate(colCount, nileGrid.columnWidths);
|
|
36
69
|
};
|
|
70
|
+
export function cacheStickyEls(nileGrid) {
|
|
71
|
+
const { head, body } = getHeadAndBody(nileGrid);
|
|
72
|
+
nileGrid.stickyLeftHeadEls = head ? Array.from(head.querySelectorAll('nile-grid-head-item[data-sticky="left"]')) : [];
|
|
73
|
+
nileGrid.stickyRightHeadEls = head ? Array.from(head.querySelectorAll('nile-grid-head-item[data-sticky="right"]')) : [];
|
|
74
|
+
nileGrid.stickyLeftBodyEls = body ? Array.from(body.querySelectorAll('nile-grid-cell-item[data-sticky="left"]')) : [];
|
|
75
|
+
nileGrid.stickyRightBodyEls = body ? Array.from(body.querySelectorAll('nile-grid-cell-item[data-sticky="right"]')) : [];
|
|
76
|
+
}
|
|
37
77
|
/**
|
|
38
78
|
* @param nileGrid The parent NileGrid instance
|
|
39
79
|
* @param rows Array of grid row elements
|
|
@@ -45,11 +85,11 @@ export const layout = (nileGrid, slotEl, ensureWidths, rebuildTemplate, stickyLe
|
|
|
45
85
|
* @param opts Options controlling layout behavior
|
|
46
86
|
* @returns Final computed column count
|
|
47
87
|
*/
|
|
48
|
-
function layoutRows(nileGrid, rows, carry, colCount, stickyLeftIndexes, stickyRightIndexes,
|
|
88
|
+
function layoutRows(nileGrid, rows, carry, colCount, stickyLeftIndexes, stickyRightIndexes, opts) {
|
|
49
89
|
rows.forEach((row, rIdx) => {
|
|
50
90
|
if (nileGrid.hoverable)
|
|
51
91
|
row.setAttribute('hover', 'true');
|
|
52
|
-
colCount = layoutSingleRow(nileGrid, row, rIdx, carry, colCount, stickyLeftIndexes, stickyRightIndexes,
|
|
92
|
+
colCount = layoutSingleRow(nileGrid, row, rIdx, carry, colCount, stickyLeftIndexes, stickyRightIndexes, opts);
|
|
53
93
|
});
|
|
54
94
|
return colCount;
|
|
55
95
|
}
|
|
@@ -61,18 +101,18 @@ function layoutRows(nileGrid, rows, carry, colCount, stickyLeftIndexes, stickyRi
|
|
|
61
101
|
* @param colCount Current column count
|
|
62
102
|
* @param stickyLeftIndexes Sticky-left indexes
|
|
63
103
|
* @param stickyRightIndexes Sticky-right indexes
|
|
64
|
-
* @param columnWidths Column widths array
|
|
65
104
|
* @param opts Layout options
|
|
66
105
|
* @returns Updated column count
|
|
67
106
|
*/
|
|
68
|
-
function layoutSingleRow(nileGrid, row, rIdx, carry, colCount, stickyLeftIndexes, stickyRightIndexes,
|
|
107
|
+
function layoutSingleRow(nileGrid, row, rIdx, carry, colCount, stickyLeftIndexes, stickyRightIndexes, opts) {
|
|
69
108
|
let c = 1;
|
|
70
109
|
const rStart = rIdx + 1;
|
|
71
|
-
const
|
|
110
|
+
const tag = opts.itemSelector.toLowerCase();
|
|
111
|
+
const items = Array.from(row.children).filter((child) => child.tagName.toLowerCase() === tag);
|
|
72
112
|
for (const el of items) {
|
|
73
113
|
while ((carry[c - 1] || 0) > 0)
|
|
74
114
|
c++;
|
|
75
|
-
({ c, colCount } = layoutCell(nileGrid, el, c, rStart, carry, colCount, stickyLeftIndexes, stickyRightIndexes,
|
|
115
|
+
({ c, colCount } = layoutCell(nileGrid, el, c, rStart, carry, colCount, stickyLeftIndexes, stickyRightIndexes, opts));
|
|
76
116
|
}
|
|
77
117
|
decrementCarry(carry);
|
|
78
118
|
return colCount;
|
|
@@ -86,18 +126,19 @@ function layoutSingleRow(nileGrid, row, rIdx, carry, colCount, stickyLeftIndexes
|
|
|
86
126
|
* @param colCount Current max column count
|
|
87
127
|
* @param stickyLeftIndexes Left sticky indexes
|
|
88
128
|
* @param stickyRightIndexes Right sticky indexes
|
|
89
|
-
* @param columnWidths Column widths
|
|
90
129
|
* @param opts Sticky and layout options
|
|
91
130
|
* @returns Updated column index and column count
|
|
92
131
|
*/
|
|
93
|
-
function layoutCell(nileGrid, el, c, rStart, carry, colCount, stickyLeftIndexes, stickyRightIndexes,
|
|
132
|
+
function layoutCell(nileGrid, el, c, rStart, carry, colCount, stickyLeftIndexes, stickyRightIndexes, opts) {
|
|
94
133
|
const colspan = Math.max(1, +el.getAttribute('colspan') || 1);
|
|
95
134
|
const rowspan = Math.max(1, +el.getAttribute('rowspan') || 1);
|
|
96
135
|
handleRowspan(nileGrid, el, rowspan);
|
|
97
136
|
const cStart = c;
|
|
98
137
|
const cEnd = c + colspan;
|
|
99
138
|
setGridPosition(el, cStart, cEnd, rStart, rowspan);
|
|
100
|
-
|
|
139
|
+
if (opts.useStickyAttr || stickyLeftIndexes.length || stickyRightIndexes.length) {
|
|
140
|
+
handleSticky(el, cStart, opts, stickyLeftIndexes, stickyRightIndexes);
|
|
141
|
+
}
|
|
101
142
|
for (let k = 0; k < colspan; k++) {
|
|
102
143
|
carry[c - 1 + k] = Math.max(carry[c - 1 + k] || 0, rowspan);
|
|
103
144
|
}
|
|
@@ -121,12 +162,14 @@ function handleRowspan(nileGrid, el, rowspan) {
|
|
|
121
162
|
nileGrid.headHeight = el.getBoundingClientRect().height;
|
|
122
163
|
el.style.height = `${(nileGrid.headHeight * rowspan) + (rowspan - 1)}px`;
|
|
123
164
|
el.style.backgroundColor = "var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))";
|
|
165
|
+
el.style.backgroundColor = "var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))";
|
|
124
166
|
}
|
|
125
167
|
else {
|
|
126
168
|
if (!nileGrid.cellHeight)
|
|
127
169
|
nileGrid.cellHeight = el.getBoundingClientRect().height;
|
|
128
170
|
el.style.height = `${(nileGrid.cellHeight * rowspan) + (rowspan - 1)}px`;
|
|
129
171
|
el.style.backgroundColor = "var(--nile-colors-white-base, var(--ng-colors-bg-primary))";
|
|
172
|
+
el.style.backgroundColor = "var(--nile-colors-white-base, var(--ng-colors-bg-primary))";
|
|
130
173
|
}
|
|
131
174
|
}
|
|
132
175
|
/**
|
|
@@ -148,16 +191,15 @@ function setGridPosition(el, cStart, cEnd, rStart, rowspan) {
|
|
|
148
191
|
* @param opts Sticky configuration options
|
|
149
192
|
* @param stickyLeftIndexes Left sticky indexes
|
|
150
193
|
* @param stickyRightIndexes Right sticky indexes
|
|
151
|
-
* @param columnWidths Array of column widths
|
|
152
194
|
*/
|
|
153
|
-
function handleSticky(el, cStart, opts, stickyLeftIndexes, stickyRightIndexes
|
|
195
|
+
function handleSticky(el, cStart, opts, stickyLeftIndexes, stickyRightIndexes) {
|
|
154
196
|
if (opts.useStickyAttr && el.getAttribute('sticky') === "left" && !stickyLeftIndexes.includes(cStart - 1)) {
|
|
155
197
|
stickyLeftIndexes.push(cStart - 1);
|
|
156
198
|
}
|
|
157
199
|
if (opts.useStickyAttr && el.getAttribute('sticky') === "right" && !stickyRightIndexes.includes(cStart - 1)) {
|
|
158
200
|
stickyRightIndexes.push(cStart - 1);
|
|
159
201
|
}
|
|
160
|
-
applySticky(el, cStart - 1, stickyLeftIndexes, stickyRightIndexes
|
|
202
|
+
applySticky(el, cStart - 1, stickyLeftIndexes, stickyRightIndexes);
|
|
161
203
|
}
|
|
162
204
|
/**
|
|
163
205
|
* @param carry Rowspan tracking array
|
|
@@ -174,19 +216,18 @@ function decrementCarry(carry) {
|
|
|
174
216
|
* @param colIndex Column index
|
|
175
217
|
* @param stickyLeftIndexes Sticky-left indexes
|
|
176
218
|
* @param stickyRightIndexes Sticky-right indexes
|
|
177
|
-
* @param columnWidths Column widths array
|
|
178
219
|
*/
|
|
179
|
-
function applySticky(el, colIndex, stickyLeftIndexes, stickyRightIndexes
|
|
220
|
+
function applySticky(el, colIndex, stickyLeftIndexes, stickyRightIndexes) {
|
|
180
221
|
const onLeft = stickyLeftIndexes.includes(colIndex);
|
|
181
222
|
const onRight = stickyRightIndexes.includes(colIndex);
|
|
182
223
|
if (!onLeft && !onRight)
|
|
183
224
|
return;
|
|
184
225
|
prepareStickyElement(el);
|
|
185
226
|
if (onLeft && !onRight) {
|
|
186
|
-
applyLeftSticky(el, colIndex
|
|
227
|
+
applyLeftSticky(el, colIndex);
|
|
187
228
|
}
|
|
188
229
|
else {
|
|
189
|
-
applyRightSticky(el, colIndex
|
|
230
|
+
applyRightSticky(el, colIndex);
|
|
190
231
|
}
|
|
191
232
|
}
|
|
192
233
|
/**
|
|
@@ -194,7 +235,6 @@ function applySticky(el, colIndex, stickyLeftIndexes, stickyRightIndexes, column
|
|
|
194
235
|
*/
|
|
195
236
|
function prepareStickyElement(el) {
|
|
196
237
|
el.style.position = 'sticky';
|
|
197
|
-
el.style.zIndex = '1';
|
|
198
238
|
el.style.left = '';
|
|
199
239
|
el.style.right = '';
|
|
200
240
|
el.removeAttribute('data-sticky');
|
|
@@ -203,39 +243,60 @@ function prepareStickyElement(el) {
|
|
|
203
243
|
* @param el Target element
|
|
204
244
|
* @param colIndex Column index
|
|
205
245
|
* @param stickyLeftIndexes Sticky-left column indexes
|
|
206
|
-
* @param columnWidths Column width array
|
|
207
246
|
*/
|
|
208
|
-
function applyLeftSticky(el, colIndex
|
|
247
|
+
function applyLeftSticky(el, colIndex) {
|
|
209
248
|
el.setAttribute('data-sticky', 'left');
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
249
|
+
if (el.tagName === NILE_GRID_HEAD_ITEM) {
|
|
250
|
+
el.style.backgroundColor = "var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))";
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
el.style.backgroundColor = 'var(--nile-colors-white-base, var(--ng-colors-bg-primary))';
|
|
254
|
+
}
|
|
255
|
+
el.style.zIndex = '1';
|
|
256
|
+
el.style.left = `var(--sticky-left-${colIndex})`;
|
|
214
257
|
}
|
|
215
258
|
/**
|
|
216
259
|
* @param el Target element
|
|
217
260
|
* @param colIndex Column index
|
|
218
261
|
* @param stickyRightIndexes Sticky-right indexes
|
|
219
|
-
* @param columnWidths Column widths array
|
|
220
262
|
*/
|
|
221
|
-
function applyRightSticky(el, colIndex
|
|
263
|
+
function applyRightSticky(el, colIndex) {
|
|
222
264
|
el.setAttribute('data-sticky', 'right');
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
265
|
+
if (el.tagName === NILE_GRID_HEAD_ITEM) {
|
|
266
|
+
el.style.backgroundColor = "var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))";
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
el.style.backgroundColor = 'var(--nile-colors-white-base, var(--ng-colors-bg-primary))';
|
|
270
|
+
}
|
|
271
|
+
el.style.zIndex = '1';
|
|
272
|
+
el.style.right = `var(--sticky-right-${colIndex})`;
|
|
228
273
|
}
|
|
229
274
|
/**
|
|
230
275
|
* @param nileGrid Grid instance to sync shadows for
|
|
231
276
|
*/
|
|
232
277
|
export function syncStickyShadows(nileGrid) {
|
|
278
|
+
if (!nileGrid.stickyLeftIndexes.length && !nileGrid.stickyRightIndexes.length) {
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
233
281
|
const { showRightOnLeftStickies, showLeftOnRightStickies } = getShadowStates(nileGrid);
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
282
|
+
if (nileGrid.shadowLeftVisibleSticky === showRightOnLeftStickies &&
|
|
283
|
+
nileGrid.shadowRightVisibleSticky === showLeftOnRightStickies) {
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
nileGrid.shadowLeftVisibleSticky = showRightOnLeftStickies;
|
|
287
|
+
nileGrid.shadowRightVisibleSticky = showLeftOnRightStickies;
|
|
288
|
+
for (const el of nileGrid.stickyLeftHeadEls) {
|
|
289
|
+
el.classList.toggle('shadow-left', showRightOnLeftStickies);
|
|
290
|
+
}
|
|
291
|
+
for (const el of nileGrid.stickyLeftBodyEls) {
|
|
292
|
+
el.classList.toggle('shadow-left', showRightOnLeftStickies);
|
|
293
|
+
}
|
|
294
|
+
for (const el of nileGrid.stickyRightHeadEls) {
|
|
295
|
+
el.classList.toggle('shadow-right', showLeftOnRightStickies);
|
|
296
|
+
}
|
|
297
|
+
for (const el of nileGrid.stickyRightBodyEls) {
|
|
298
|
+
el.classList.toggle('shadow-right', showLeftOnRightStickies);
|
|
299
|
+
}
|
|
239
300
|
}
|
|
240
301
|
/**
|
|
241
302
|
* @param nileGrid Grid instance
|
|
@@ -248,37 +309,6 @@ function getShadowStates(nileGrid) {
|
|
|
248
309
|
showLeftOnRightStickies: nileGrid.scrollLeft < max
|
|
249
310
|
};
|
|
250
311
|
}
|
|
251
|
-
/**
|
|
252
|
-
* @param root Root element (head or body)
|
|
253
|
-
* @param tag Target tag selector
|
|
254
|
-
* @param side Sticky side ('left' or 'right')
|
|
255
|
-
* @param cls Shadow CSS class to toggle
|
|
256
|
-
* @param on Whether to apply or remove the shadow
|
|
257
|
-
*/
|
|
258
|
-
function toggleStickyShadow(root, tag, side, cls, on) {
|
|
259
|
-
if (!root)
|
|
260
|
-
return;
|
|
261
|
-
const sel = `${tag}[data-sticky="${side}"]`;
|
|
262
|
-
root.querySelectorAll(sel).forEach(el => el.classList.toggle(cls, on));
|
|
263
|
-
}
|
|
264
|
-
/** rebuildTemplate
|
|
265
|
-
* @param colCount Number of columns
|
|
266
|
-
* @param columnWidths Array of explicit column widths (px)
|
|
267
|
-
* @returns CSS grid-template-columns string
|
|
268
|
-
*/
|
|
269
|
-
export const rebuildTemplate = (colCount, columnWidths) => {
|
|
270
|
-
const parts = [];
|
|
271
|
-
for (let i = 0; i < colCount; i++) {
|
|
272
|
-
const explicit = columnWidths[i];
|
|
273
|
-
if (i === colCount - 1) {
|
|
274
|
-
parts.push(`minmax(${explicit}px, auto)`);
|
|
275
|
-
}
|
|
276
|
-
else {
|
|
277
|
-
parts.push(`${explicit}px`);
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
return parts.join(' ');
|
|
281
|
-
};
|
|
282
312
|
/** computeHeadLayout
|
|
283
313
|
* @param nileGrid Grid instance
|
|
284
314
|
* @param headRows Header rows (<nile-grid-row>[])
|
|
@@ -286,11 +316,10 @@ export const rebuildTemplate = (colCount, columnWidths) => {
|
|
|
286
316
|
* @param colCount Current column count
|
|
287
317
|
* @param stickyLeftIndexes Left-sticky indexes
|
|
288
318
|
* @param stickyRightIndexes Right-sticky indexes
|
|
289
|
-
* @param columnWidths Column widths array
|
|
290
319
|
* @returns Final column count after header layout
|
|
291
320
|
*/
|
|
292
|
-
function computeHeadLayout(nileGrid, headRows, carryHead, colCount, stickyLeftIndexes, stickyRightIndexes
|
|
293
|
-
return layoutRows(nileGrid, headRows, carryHead, colCount, stickyLeftIndexes, stickyRightIndexes,
|
|
321
|
+
function computeHeadLayout(nileGrid, headRows, carryHead, colCount, stickyLeftIndexes, stickyRightIndexes) {
|
|
322
|
+
return layoutRows(nileGrid, headRows, carryHead, colCount, stickyLeftIndexes, stickyRightIndexes, {
|
|
294
323
|
itemSelector: 'nile-grid-head-item',
|
|
295
324
|
useStickyAttr: true,
|
|
296
325
|
handleRowBg: false,
|
|
@@ -303,11 +332,10 @@ function computeHeadLayout(nileGrid, headRows, carryHead, colCount, stickyLeftIn
|
|
|
303
332
|
* @param colCount Current column count
|
|
304
333
|
* @param stickyLeftIndexes Left-sticky indexes
|
|
305
334
|
* @param stickyRightIndexes Right-sticky indexes
|
|
306
|
-
* @param columnWidths Column widths array
|
|
307
335
|
* @returns Final column count after body layout
|
|
308
336
|
*/
|
|
309
|
-
function computeBodyLayout(nileGrid, bodyRows, carryBody, colCount, stickyLeftIndexes, stickyRightIndexes
|
|
310
|
-
return layoutRows(nileGrid, bodyRows, carryBody, colCount, stickyLeftIndexes, stickyRightIndexes,
|
|
337
|
+
function computeBodyLayout(nileGrid, bodyRows, carryBody, colCount, stickyLeftIndexes, stickyRightIndexes) {
|
|
338
|
+
return layoutRows(nileGrid, bodyRows, carryBody, colCount, stickyLeftIndexes, stickyRightIndexes, {
|
|
311
339
|
itemSelector: 'nile-grid-cell-item',
|
|
312
340
|
useStickyAttr: false,
|
|
313
341
|
handleRowBg: true,
|
|
@@ -317,7 +345,6 @@ function computeBodyLayout(nileGrid, bodyRows, carryBody, colCount, stickyLeftIn
|
|
|
317
345
|
* @param nileGrid Grid container element
|
|
318
346
|
* @param colCount Total number of columns
|
|
319
347
|
* @param columnWidths Column width array
|
|
320
|
-
* @param headElement Header element for template update
|
|
321
348
|
*/
|
|
322
349
|
export function applyColumnsTemplate(nileGrid, columnWidths) {
|
|
323
350
|
const cols = columnWidths
|
|
@@ -330,19 +357,6 @@ export function applyColumnsTemplate(nileGrid, columnWidths) {
|
|
|
330
357
|
.join(' ');
|
|
331
358
|
nileGrid.style.setProperty('--nile-grid-columns', cols);
|
|
332
359
|
}
|
|
333
|
-
/**
|
|
334
|
-
* @param order Array of sticky column indexes
|
|
335
|
-
* @param pos Current position within order
|
|
336
|
-
* @param widths Column widths
|
|
337
|
-
* @param base Base offset value
|
|
338
|
-
* @returns Computed pixel offset
|
|
339
|
-
*/
|
|
340
|
-
function computeOffset(order, pos, widths, base = 0) {
|
|
341
|
-
let total = base;
|
|
342
|
-
for (let i = 0; i < pos; i++)
|
|
343
|
-
total += widths[order[i]] ?? 0;
|
|
344
|
-
return total;
|
|
345
|
-
}
|
|
346
360
|
/**
|
|
347
361
|
* @param nileGrid Grid instance
|
|
348
362
|
* @returns Head and body elements from the grid slot
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nile-grid.layout.js","sourceRoot":"","sources":["../../../src/nile-grid/nile-grid.layout.ts"],"names":[],"mappings":"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","sourcesContent":["import { NileGrid } from './nile-grid';\nimport { getHead, getBody } from './nile-grid.utils';\nimport { getScrollbarComp } from './nile-grid.resize';\nimport { computeColumnWidths } from './nile-grid.width';\nimport { NILE_GRID_HEAD_ITEM } from './types/nile-grid.enums';\n\n/**\n * @param nileGrid Parent NileGrid instance\n * @param slotEl <slot> element hosting head/body\n * @param ensureWidths Function to ensure columnWidths length matches colCount\n * @param rebuildTemplate Function(colCount, widths) -> grid-template string\n * @param stickyLeftIndexes Mutable list of left-sticky column indexes\n * @param stickyRightIndexes Mutable list of right-sticky column indexes\n * @returns void\n */\nexport const layout = (\n nileGrid: NileGrid,\n slotEl: any,\n ensureWidths: any,\n rebuildTemplate: any,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[]\n) => {\n const head = getHead(slotEl);\n const body = getBody(slotEl);\n if (!body) return;\n\n const headRows = head\n ? (Array.from(head.querySelectorAll('nile-grid-row')) as HTMLElement[])\n : [];\n const bodyRows = Array.from(\n body.querySelectorAll('nile-grid-row')\n ) as HTMLElement[];\n\n let colCount = 0;\n colCount = computeHeadLayout(nileGrid, headRows, [], colCount, stickyLeftIndexes, stickyRightIndexes, nileGrid.columnWidths);\n if (colCount) {\n computeBodyLayout(nileGrid, bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes, nileGrid.columnWidths);\n } else {\n colCount = computeBodyLayout(nileGrid, bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes, nileGrid.columnWidths);\n }\n\n setTimeout(() => {\n computeColumnWidths(nileGrid, colCount, nileGrid.columnWidths, slotEl, nileGrid.lockedWidthColumns); \n });\n ensureWidths(colCount);\n nileGrid.colTemplate = rebuildTemplate(colCount, nileGrid.columnWidths);\n};\n\n/** \n * @param nileGrid The parent NileGrid instance\n * @param rows Array of grid row elements\n * @param carry Array tracking rowspan, colspan continuation\n * @param colCount Total column count\n * @param stickyLeftIndexes List of sticky-left column indexes\n * @param stickyRightIndexes List of sticky-right column indexes\n * @param columnWidths Computed column widths\n * @param opts Options controlling layout behavior\n * @returns Final computed column count\n */\nfunction layoutRows(\n nileGrid: NileGrid,\n rows: HTMLElement[],\n carry: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n columnWidths: number[],\n opts: { itemSelector: string; useStickyAttr?: boolean; handleRowBg?: boolean }\n): number {\n rows.forEach((row, rIdx) => {\n if (nileGrid.hoverable) row.setAttribute('hover', 'true');\n colCount = layoutSingleRow(\n nileGrid,\n row,\n rIdx,\n carry,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n columnWidths,\n opts\n );\n });\n return colCount;\n}\n\n/**\n * @param nileGrid The grid element being processed\n * @param row Single row element to layout\n * @param rIdx Row index in the grid\n * @param carry Rowspan tracking array\n * @param colCount Current column count\n * @param stickyLeftIndexes Sticky-left indexes\n * @param stickyRightIndexes Sticky-right indexes\n * @param columnWidths Column widths array\n * @param opts Layout options\n * @returns Updated column count\n */\nfunction layoutSingleRow(\n nileGrid: NileGrid,\n row: HTMLElement,\n rIdx: number,\n carry: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n columnWidths: number[],\n opts: { itemSelector: string; useStickyAttr?: boolean }\n): number {\n let c = 1;\n const rStart = rIdx + 1;\n const items = [...row.querySelectorAll(opts.itemSelector)] as HTMLElement[];\n\n for (const el of items) {\n while ((carry[c - 1] || 0) > 0) c++;\n ({ c, colCount } = layoutCell(\n nileGrid,\n el,\n c,\n rStart,\n carry,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n columnWidths,\n opts\n ));\n }\n decrementCarry(carry);\n return colCount;\n}\n\n/**\n * @param nileGrid The parent grid\n * @param el Cell element being laid out\n * @param c Current column index\n * @param rStart Row start index\n * @param carry Rowspan carry array\n * @param colCount Current max column count\n * @param stickyLeftIndexes Left sticky indexes\n * @param stickyRightIndexes Right sticky indexes\n * @param columnWidths Column widths\n * @param opts Sticky and layout options\n * @returns Updated column index and column count\n */\nfunction layoutCell(\n nileGrid: NileGrid,\n el: HTMLElement,\n c: number,\n rStart: number,\n carry: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n columnWidths: number[],\n opts: { useStickyAttr?: boolean }\n) {\n const colspan = Math.max(1, +el.getAttribute('colspan')! || 1);\n const rowspan = Math.max(1, +el.getAttribute('rowspan')! || 1);\n handleRowspan(nileGrid, el, rowspan);\n\n const cStart = c;\n const cEnd = c + colspan;\n setGridPosition(el, cStart, cEnd, rStart, rowspan);\n handleSticky(\n el,\n cStart,\n opts,\n stickyLeftIndexes,\n stickyRightIndexes,\n columnWidths\n );\n\n for (let k = 0; k < colspan; k++) {\n carry[c - 1 + k] = Math.max(carry[c - 1 + k] || 0, rowspan);\n }\n return {\n c: cEnd,\n colCount: Math.max(colCount, cEnd - 1),\n };\n}\n\n/** \n * @param nileGrid The grid container \n * @param el Element that spans multiple rows \n * @param rowspan Number of rows to span \n */\nfunction handleRowspan(nileGrid: NileGrid, el: HTMLElement, rowspan: number) {\n if (rowspan <= 1) return;\n el.style.position = \"absolute\";\n el.style.zIndex = \"1\";\n\n if (el.tagName === NILE_GRID_HEAD_ITEM) {\n if (!nileGrid.headHeight) nileGrid.headHeight = el.getBoundingClientRect().height;\n el.style.height = `${(nileGrid.headHeight * rowspan) + (rowspan - 1)}px`;\n el.style.backgroundColor = \"var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))\";\n } else {\n if (!nileGrid.cellHeight) nileGrid.cellHeight = el.getBoundingClientRect().height;\n el.style.height = `${(nileGrid.cellHeight * rowspan) + (rowspan - 1)}px`;\n el.style.backgroundColor = \"var(--nile-colors-white-base, var(--ng-colors-bg-primary))\";\n }\n}\n\n/**\n * @param el Grid item element\n * @param cStart Starting column index\n * @param cEnd Ending column index\n * @param rStart Starting row index\n * @param rowspan Row span value\n */\nfunction setGridPosition(\n el: HTMLElement,\n cStart: number,\n cEnd: number,\n rStart: number,\n rowspan: number\n) {\n const rEnd = rStart + rowspan;\n el.style.gridColumn = `${cStart} / ${cEnd}`;\n el.style.gridRow = `${rStart} / ${rEnd}`;\n (el as any).dataset.cStart = String(cStart);\n}\n\n/**\n * @param el Grid item element\n * @param cStart Column start index\n * @param opts Sticky configuration options\n * @param stickyLeftIndexes Left sticky indexes\n * @param stickyRightIndexes Right sticky indexes\n * @param columnWidths Array of column widths\n */\nfunction handleSticky(\n el: HTMLElement,\n cStart: number,\n opts: { useStickyAttr?: boolean },\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n columnWidths: number[]\n) {\n if (opts.useStickyAttr && el.getAttribute('sticky') === \"left\" && !stickyLeftIndexes.includes(cStart - 1)) {\n stickyLeftIndexes.push(cStart - 1);\n }\n if (opts.useStickyAttr && el.getAttribute('sticky') === \"right\" && !stickyRightIndexes.includes(cStart - 1)) {\n stickyRightIndexes.push(cStart - 1);\n }\n applySticky(el, cStart - 1, stickyLeftIndexes, stickyRightIndexes, columnWidths);\n}\n\n/**\n * @param carry Rowspan tracking array\n */\nfunction decrementCarry(carry: number[]) {\n for (let i = 0; i < carry.length; i++) {\n if (carry[i] > 0) {\n carry[i]--;\n }\n }\n}\n\n/**\n * @param el Target grid cell element\n * @param colIndex Column index\n * @param stickyLeftIndexes Sticky-left indexes\n * @param stickyRightIndexes Sticky-right indexes\n * @param columnWidths Column widths array\n */\nfunction applySticky(\n el: HTMLElement,\n colIndex: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n columnWidths: number[]\n) {\n const onLeft = stickyLeftIndexes.includes(colIndex);\n const onRight = stickyRightIndexes.includes(colIndex);\n if (!onLeft && !onRight) return;\n\n prepareStickyElement(el);\n if (onLeft && !onRight) {\n applyLeftSticky(el, colIndex, stickyLeftIndexes, columnWidths);\n } else {\n applyRightSticky(el, colIndex, stickyRightIndexes, columnWidths);\n }\n}\n\n/**\n * @param el Grid item element to prepare for sticky positioning\n */\nfunction prepareStickyElement(el: HTMLElement) {\n el.style.position = 'sticky';\n el.style.zIndex = '1';\n el.style.left = '';\n el.style.right = '';\n el.removeAttribute('data-sticky');\n}\n\n/**\n * @param el Target element\n * @param colIndex Column index\n * @param stickyLeftIndexes Sticky-left column indexes\n * @param columnWidths Column width array\n */\nfunction applyLeftSticky(\n el: HTMLElement,\n colIndex: number,\n stickyLeftIndexes: number[],\n columnWidths: number[]\n) {\n el.setAttribute('data-sticky', 'left');\n const leftOrder = [...stickyLeftIndexes].sort((a, b) => a - b);\n const pos = leftOrder.indexOf(colIndex);\n const left = computeOffset(leftOrder, pos, columnWidths);\n el.style.left = `${Math.max(0, Math.round(left))}px`;\n}\n\n/**\n * @param el Target element\n * @param colIndex Column index\n * @param stickyRightIndexes Sticky-right indexes\n * @param columnWidths Column widths array\n */\nfunction applyRightSticky(\n el: HTMLElement,\n colIndex: number,\n stickyRightIndexes: number[],\n columnWidths: number[]\n) {\n el.setAttribute('data-sticky', 'right');\n const rightOrder = [...stickyRightIndexes].sort((a, b) => b - a);\n const pos = rightOrder.indexOf(colIndex);\n const scrollbarComp = getScrollbarComp(el);\n const right = computeOffset(rightOrder, pos, columnWidths, scrollbarComp);\n el.style.right = `${Math.max(0, Math.round(right - 2))}px`;\n}\n\n/**\n * @param nileGrid Grid instance to sync shadows for\n */\nexport function syncStickyShadows(nileGrid: NileGrid) {\n const { showRightOnLeftStickies, showLeftOnRightStickies } = getShadowStates(nileGrid);\n const { head, body } = getHeadAndBody(nileGrid);\n\n toggleStickyShadow(head, 'nile-grid-head-item', 'left', 'shadow-right', showRightOnLeftStickies);\n toggleStickyShadow(body, 'nile-grid-cell-item', 'left', 'shadow-right', showRightOnLeftStickies);\n toggleStickyShadow(head, 'nile-grid-head-item', 'right', 'shadow-left', showLeftOnRightStickies);\n toggleStickyShadow(body, 'nile-grid-cell-item', 'right', 'shadow-left', showLeftOnRightStickies);\n}\n\n/**\n * @param nileGrid Grid instance\n * @returns Object containing booleans for left/right shadow visibility\n */\nfunction getShadowStates(nileGrid: NileGrid) {\n const max = Math.max(0, nileGrid.scrollWidth - nileGrid.clientWidth);\n return {\n showRightOnLeftStickies: nileGrid.scrollLeft > 0,\n showLeftOnRightStickies: nileGrid.scrollLeft < max\n };\n}\n\n/**\n * @param root Root element (head or body)\n * @param tag Target tag selector\n * @param side Sticky side ('left' or 'right')\n * @param cls Shadow CSS class to toggle\n * @param on Whether to apply or remove the shadow\n */\nfunction toggleStickyShadow(\n root: HTMLElement | undefined,\n tag: string,\n side: 'left' | 'right',\n cls: string,\n on: boolean\n) {\n if (!root) return;\n const sel = `${tag}[data-sticky=\"${side}\"]`;\n root.querySelectorAll<HTMLElement>(sel).forEach(el => el.classList.toggle(cls, on));\n}\n\n/** rebuildTemplate\n * @param colCount Number of columns\n * @param columnWidths Array of explicit column widths (px)\n * @returns CSS grid-template-columns string\n */\nexport const rebuildTemplate = (\n colCount: number,\n columnWidths: number[]\n): string => {\n const parts: string[] = [];\n\n for (let i = 0; i < colCount; i++) {\n const explicit = columnWidths[i];\n if (i === colCount - 1) {\n parts.push(`minmax(${explicit}px, auto)`);\n } else {\n parts.push(`${explicit}px`);\n }\n }\n return parts.join(' ');\n};\n\n/** computeHeadLayout\n * @param nileGrid Grid instance\n * @param headRows Header rows (<nile-grid-row>[])\n * @param carryHead Rowspan carry tracking array\n * @param colCount Current column count\n * @param stickyLeftIndexes Left-sticky indexes\n * @param stickyRightIndexes Right-sticky indexes\n * @param columnWidths Column widths array\n * @returns Final column count after header layout\n */\nfunction computeHeadLayout(\n nileGrid: NileGrid,\n headRows: HTMLElement[],\n carryHead: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n columnWidths: number[]\n): number {\n return layoutRows(\n nileGrid,\n headRows,\n carryHead,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n columnWidths,\n {\n itemSelector: 'nile-grid-head-item',\n useStickyAttr: true,\n handleRowBg: false,\n }\n );\n}\n\n/** computeBodyLayout\n * @param nileGrid Grid instance\n * @param bodyRows Body rows (<nile-grid-row>[])\n * @param carryBody Rowspan carry tracking array\n * @param colCount Current column count\n * @param stickyLeftIndexes Left-sticky indexes\n * @param stickyRightIndexes Right-sticky indexes\n * @param columnWidths Column widths array\n * @returns Final column count after body layout\n */\nfunction computeBodyLayout(\n nileGrid: NileGrid,\n bodyRows: HTMLElement[],\n carryBody: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n columnWidths: number[]\n): number {\n return layoutRows(\n nileGrid,\n bodyRows,\n carryBody,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n columnWidths,\n {\n itemSelector: 'nile-grid-cell-item',\n useStickyAttr: false,\n handleRowBg: true,\n }\n );\n}\n\n/**\n * @param nileGrid Grid container element\n * @param colCount Total number of columns\n * @param columnWidths Column width array\n * @param headElement Header element for template update\n */\nexport function applyColumnsTemplate(\n nileGrid: NileGrid,\n columnWidths: number[]\n) {\n const cols = columnWidths\n .map((w, idx) => {\n if (idx === columnWidths.length - 1) {\n return `minmax(${Math.round(w)}px, auto)`;\n }\n return `${Math.max(0, Math.round(w))}px`;\n })\n .join(' ');\n nileGrid.style.setProperty('--nile-grid-columns', cols);\n}\n\n/**\n * @param order Array of sticky column indexes\n * @param pos Current position within order\n * @param widths Column widths\n * @param base Base offset value\n * @returns Computed pixel offset\n */\nfunction computeOffset(\n order: number[],\n pos: number,\n widths: number[],\n base = 0\n) {\n let total = base;\n for (let i = 0; i < pos; i++) total += widths[order[i]] ?? 0;\n return total;\n}\n\n/**\n * @param nileGrid Grid instance\n * @returns Head and body elements from the grid slot\n */\nfunction getHeadAndBody(nileGrid: NileGrid) {\n if (!nileGrid.shadowRoot) return { head: undefined, body: undefined };\n const assigned = nileGrid.slotEl.assignedElements();\n const find = (tag: string) =>\n assigned.find(n => n.tagName.toLowerCase() === tag) as HTMLElement | undefined;\n return { head: find('nile-grid-head'), body: find('nile-grid-body') };\n}"]}
|
|
1
|
+
{"version":3,"file":"nile-grid.layout.js","sourceRoot":"","sources":["../../../src/nile-grid/nile-grid.layout.ts"],"names":[],"mappings":"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","sourcesContent":["import { NileGrid } from './nile-grid';\nimport { getHead, getBody } from './nile-grid.utils';\nimport { getScrollbarComp } from './nile-grid.resize';\nimport { addVariablesValue, computeColumnWidths } from './nile-grid.width';\nimport { NILE_GRID_HEAD_ITEM } from './types/nile-grid.enums';\n\n/**\n * @param nileGrid Parent NileGrid instance\n * @param slotEl <slot> element hosting head/body\n * @param ensureWidths Function to ensure columnWidths length matches colCount\n * @param stickyLeftIndexes Mutable list of left-sticky column indexes\n * @param stickyRightIndexes Mutable list of right-sticky column indexes\n * @returns void\n */\nexport const layout = (\n nileGrid: NileGrid,\n slotEl: any,\n ensureWidths: any,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[]\n) => {\n const head = getHead(slotEl);\n const body = getBody(slotEl);\n if (!head && !body) return;\n\n let colCount = nileGrid.colCount || 0;\n let headerChanged = false;\n\n if (nileGrid.needsStructureLayout) {\n headerChanged = true;\n \n nileGrid.headRows = head ? (Array.from(head.querySelectorAll('nile-grid-row')) as HTMLElement[]) : [];\n colCount = 0;\n if (nileGrid.headRows.length) {\n colCount = computeHeadLayout(nileGrid, nileGrid.headRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);\n }\n\n if (body) {\n nileGrid.bodyRows = Array.from(body.querySelectorAll('nile-grid-row')) as HTMLElement[];\n if (colCount) {\n computeBodyLayout(nileGrid, nileGrid.bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);\n } else {\n colCount = computeBodyLayout(nileGrid, nileGrid.bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);\n }\n }\n\n if (nileGrid.stickyLeftIndexes.length || nileGrid.stickyRightIndexes.length) {\n cacheStickyEls(nileGrid);\n } else {\n nileGrid.stickyLeftHeadEls = [];\n nileGrid.stickyRightHeadEls = [];\n nileGrid.stickyLeftBodyEls = [];\n nileGrid.stickyRightBodyEls = [];\n nileGrid.shadowLeftVisibleSticky = false;\n nileGrid.shadowRightVisibleSticky = false;\n }\n\n nileGrid.colCount = colCount;\n nileGrid.needsStructureLayout = false;\n nileGrid.needsSpanLayout = false;\n nileGrid.needsWidthLayout = true;\n } else if (nileGrid.needsSpanLayout && body) {\n const bodyRows = nileGrid.bodyRows;\n colCount = nileGrid.colCount || 0;\n if (colCount) {\n computeBodyLayout(nileGrid, bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes);\n }\n nileGrid.needsSpanLayout = false;\n }\n\n if (nileGrid.needsWidthLayout) {\n colCount = nileGrid.colCount || colCount;\n if (!colCount) return;\n\n ensureWidths(colCount);\n computeColumnWidths(nileGrid, colCount, nileGrid.columnWidths, slotEl, nileGrid.lockedWidthColumns, headerChanged);\n addVariablesValue(nileGrid);\n applyColumnsTemplate(nileGrid, nileGrid.columnWidths);\n nileGrid.needsWidthLayout = false;\n }\n};\n\nexport function cacheStickyEls(nileGrid: NileGrid) {\n const { head, body } = getHeadAndBody(nileGrid);\n\n nileGrid.stickyLeftHeadEls = head ? Array.from(head.querySelectorAll('nile-grid-head-item[data-sticky=\"left\"]')) : [];\n nileGrid.stickyRightHeadEls = head ? Array.from(head.querySelectorAll('nile-grid-head-item[data-sticky=\"right\"]')) : [];\n nileGrid.stickyLeftBodyEls = body ? Array.from(body.querySelectorAll('nile-grid-cell-item[data-sticky=\"left\"]')) : [];\n nileGrid.stickyRightBodyEls = body ? Array.from(body.querySelectorAll('nile-grid-cell-item[data-sticky=\"right\"]')) : [];\n}\n\n/** \n * @param nileGrid The parent NileGrid instance\n * @param rows Array of grid row elements\n * @param carry Array tracking rowspan, colspan continuation\n * @param colCount Total column count\n * @param stickyLeftIndexes List of sticky-left column indexes\n * @param stickyRightIndexes List of sticky-right column indexes\n * @param columnWidths Computed column widths\n * @param opts Options controlling layout behavior\n * @returns Final computed column count\n */\nfunction layoutRows(\n nileGrid: NileGrid,\n rows: HTMLElement[],\n carry: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n opts: { itemSelector: string; useStickyAttr?: boolean; handleRowBg?: boolean }\n): number {\n rows.forEach((row, rIdx) => {\n if (nileGrid.hoverable) row.setAttribute('hover', 'true');\n colCount = layoutSingleRow(\n nileGrid,\n row,\n rIdx,\n carry,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n opts\n );\n });\n return colCount;\n}\n\n/**\n * @param nileGrid The grid element being processed\n * @param row Single row element to layout\n * @param rIdx Row index in the grid\n * @param carry Rowspan tracking array\n * @param colCount Current column count\n * @param stickyLeftIndexes Sticky-left indexes\n * @param stickyRightIndexes Sticky-right indexes\n * @param opts Layout options\n * @returns Updated column count\n */\nfunction layoutSingleRow(\n nileGrid: NileGrid,\n row: HTMLElement,\n rIdx: number,\n carry: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n opts: { itemSelector: string; useStickyAttr?: boolean }\n): number {\n let c = 1;\n const rStart = rIdx + 1;\n const tag = opts.itemSelector.toLowerCase();\n const items = Array.from(row.children).filter(\n (child): child is HTMLElement =>\n child.tagName.toLowerCase() === tag\n );\n\n for (const el of items) {\n while ((carry[c - 1] || 0) > 0) c++;\n ({ c, colCount } = layoutCell(\n nileGrid,\n el,\n c,\n rStart,\n carry,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n opts\n ));\n }\n decrementCarry(carry);\n return colCount;\n}\n\n/**\n * @param nileGrid The parent grid\n * @param el Cell element being laid out\n * @param c Current column index\n * @param rStart Row start index\n * @param carry Rowspan carry array\n * @param colCount Current max column count\n * @param stickyLeftIndexes Left sticky indexes\n * @param stickyRightIndexes Right sticky indexes\n * @param opts Sticky and layout options\n * @returns Updated column index and column count\n */\nfunction layoutCell(\n nileGrid: NileGrid,\n el: HTMLElement,\n c: number,\n rStart: number,\n carry: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n opts: { useStickyAttr?: boolean }\n) {\n const colspan = Math.max(1, +el.getAttribute('colspan')! || 1);\n const rowspan = Math.max(1, +el.getAttribute('rowspan')! || 1);\n handleRowspan(nileGrid, el, rowspan);\n\n const cStart = c;\n const cEnd = c + colspan;\n setGridPosition(el, cStart, cEnd, rStart, rowspan);\n if (opts.useStickyAttr || stickyLeftIndexes.length || stickyRightIndexes.length) {\n handleSticky(el, cStart, opts, stickyLeftIndexes, stickyRightIndexes);\n }\n\n for (let k = 0; k < colspan; k++) {\n carry[c - 1 + k] = Math.max(carry[c - 1 + k] || 0, rowspan);\n }\n return {\n c: cEnd,\n colCount: Math.max(colCount, cEnd - 1),\n };\n}\n\n/** \n * @param nileGrid The grid container \n * @param el Element that spans multiple rows \n * @param rowspan Number of rows to span \n */\nfunction handleRowspan(nileGrid: NileGrid, el: HTMLElement, rowspan: number) {\n if (rowspan <= 1) return;\n el.style.position = \"absolute\";\n el.style.zIndex = \"1\";\n\n if (el.tagName === NILE_GRID_HEAD_ITEM) {\n if (!nileGrid.headHeight) nileGrid.headHeight = el.getBoundingClientRect().height;\n el.style.height = `${(nileGrid.headHeight * rowspan) + (rowspan - 1)}px`;\n el.style.backgroundColor = \"var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))\";\n el.style.backgroundColor = \"var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))\";\n } else {\n if (!nileGrid.cellHeight) nileGrid.cellHeight = el.getBoundingClientRect().height;\n el.style.height = `${(nileGrid.cellHeight * rowspan) + (rowspan - 1)}px`;\n el.style.backgroundColor = \"var(--nile-colors-white-base, var(--ng-colors-bg-primary))\";\n el.style.backgroundColor = \"var(--nile-colors-white-base, var(--ng-colors-bg-primary))\";\n }\n}\n\n/**\n * @param el Grid item element\n * @param cStart Starting column index\n * @param cEnd Ending column index\n * @param rStart Starting row index\n * @param rowspan Row span value\n */\nfunction setGridPosition(\n el: HTMLElement,\n cStart: number,\n cEnd: number,\n rStart: number,\n rowspan: number\n) {\n const rEnd = rStart + rowspan;\n el.style.gridColumn = `${cStart} / ${cEnd}`;\n el.style.gridRow = `${rStart} / ${rEnd}`;\n (el as any).dataset.cStart = String(cStart);\n}\n\n/**\n * @param el Grid item element\n * @param cStart Column start index\n * @param opts Sticky configuration options\n * @param stickyLeftIndexes Left sticky indexes\n * @param stickyRightIndexes Right sticky indexes\n */\nfunction handleSticky(\n el: HTMLElement,\n cStart: number,\n opts: { useStickyAttr?: boolean },\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n) {\n if (opts.useStickyAttr && el.getAttribute('sticky') === \"left\" && !stickyLeftIndexes.includes(cStart - 1)) {\n stickyLeftIndexes.push(cStart - 1);\n }\n if (opts.useStickyAttr && el.getAttribute('sticky') === \"right\" && !stickyRightIndexes.includes(cStart - 1)) {\n stickyRightIndexes.push(cStart - 1);\n }\n applySticky(el, cStart - 1, stickyLeftIndexes, stickyRightIndexes);\n}\n\n/**\n * @param carry Rowspan tracking array\n */\nfunction decrementCarry(carry: number[]) {\n for (let i = 0; i < carry.length; i++) {\n if (carry[i] > 0) {\n carry[i]--;\n }\n }\n}\n\n/**\n * @param el Target grid cell element\n * @param colIndex Column index\n * @param stickyLeftIndexes Sticky-left indexes\n * @param stickyRightIndexes Sticky-right indexes\n */\nfunction applySticky(\n el: HTMLElement,\n colIndex: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n) {\n const onLeft = stickyLeftIndexes.includes(colIndex);\n const onRight = stickyRightIndexes.includes(colIndex);\n if (!onLeft && !onRight) return;\n\n prepareStickyElement(el);\n if (onLeft && !onRight) {\n applyLeftSticky(el, colIndex);\n } else {\n applyRightSticky(el, colIndex);\n }\n}\n\n/**\n * @param el Grid item element to prepare for sticky positioning\n */\nfunction prepareStickyElement(el: HTMLElement) {\n el.style.position = 'sticky';\n el.style.left = '';\n el.style.right = '';\n el.removeAttribute('data-sticky');\n}\n\n/**\n * @param el Target element\n * @param colIndex Column index\n * @param stickyLeftIndexes Sticky-left column indexes\n */\nfunction applyLeftSticky(\n el: HTMLElement,\n colIndex: number,\n) {\n el.setAttribute('data-sticky', 'left');\n if (el.tagName === NILE_GRID_HEAD_ITEM) {\n el.style.backgroundColor = \"var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))\";\n }\n else {\n el.style.backgroundColor = 'var(--nile-colors-white-base, var(--ng-colors-bg-primary))';\n }\n el.style.zIndex = '1';\n el.style.left = `var(--sticky-left-${colIndex})`;\n}\n\n/**\n * @param el Target element\n * @param colIndex Column index\n * @param stickyRightIndexes Sticky-right indexes\n */\nfunction applyRightSticky(\n el: HTMLElement,\n colIndex: number,\n) {\n el.setAttribute('data-sticky', 'right');\n if (el.tagName === NILE_GRID_HEAD_ITEM) {\n el.style.backgroundColor = \"var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary))\";\n }\n else {\n el.style.backgroundColor = 'var(--nile-colors-white-base, var(--ng-colors-bg-primary))';\n }\n el.style.zIndex = '1';\n el.style.right = `var(--sticky-right-${colIndex})`;\n}\n\n/**\n * @param nileGrid Grid instance to sync shadows for\n */\nexport function syncStickyShadows(nileGrid: NileGrid) {\n if (!nileGrid.stickyLeftIndexes.length && !nileGrid.stickyRightIndexes.length) {\n return;\n }\n\n const { showRightOnLeftStickies, showLeftOnRightStickies } = getShadowStates(nileGrid);\n\n if (\n nileGrid.shadowLeftVisibleSticky === showRightOnLeftStickies &&\n nileGrid.shadowRightVisibleSticky === showLeftOnRightStickies\n ) {\n return;\n }\n\n nileGrid.shadowLeftVisibleSticky = showRightOnLeftStickies;\n nileGrid.shadowRightVisibleSticky = showLeftOnRightStickies;\n \n\n for (const el of nileGrid.stickyLeftHeadEls) {\n el.classList.toggle('shadow-left', showRightOnLeftStickies);\n }\n for (const el of nileGrid.stickyLeftBodyEls) {\n el.classList.toggle('shadow-left', showRightOnLeftStickies);\n }\n for (const el of nileGrid.stickyRightHeadEls) {\n el.classList.toggle('shadow-right', showLeftOnRightStickies);\n }\n for (const el of nileGrid.stickyRightBodyEls) {\n el.classList.toggle('shadow-right', showLeftOnRightStickies);\n }\n}\n\n\n/**\n * @param nileGrid Grid instance\n * @returns Object containing booleans for left/right shadow visibility\n */\nfunction getShadowStates(nileGrid: NileGrid) {\n const max = Math.max(0, nileGrid.scrollWidth - nileGrid.clientWidth);\n return {\n showRightOnLeftStickies: nileGrid.scrollLeft > 0,\n showLeftOnRightStickies: nileGrid.scrollLeft < max\n };\n}\n\n/** computeHeadLayout\n * @param nileGrid Grid instance\n * @param headRows Header rows (<nile-grid-row>[])\n * @param carryHead Rowspan carry tracking array\n * @param colCount Current column count\n * @param stickyLeftIndexes Left-sticky indexes\n * @param stickyRightIndexes Right-sticky indexes\n * @returns Final column count after header layout\n */\nfunction computeHeadLayout(\n nileGrid: NileGrid,\n headRows: HTMLElement[],\n carryHead: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n): number {\n return layoutRows(\n nileGrid,\n headRows,\n carryHead,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n {\n itemSelector: 'nile-grid-head-item',\n useStickyAttr: true,\n handleRowBg: false,\n }\n );\n}\n\n/** computeBodyLayout\n * @param nileGrid Grid instance\n * @param bodyRows Body rows (<nile-grid-row>[])\n * @param carryBody Rowspan carry tracking array\n * @param colCount Current column count\n * @param stickyLeftIndexes Left-sticky indexes\n * @param stickyRightIndexes Right-sticky indexes\n * @returns Final column count after body layout\n */\nfunction computeBodyLayout(\n nileGrid: NileGrid,\n bodyRows: HTMLElement[],\n carryBody: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n): number {\n return layoutRows(\n nileGrid,\n bodyRows,\n carryBody,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n {\n itemSelector: 'nile-grid-cell-item',\n useStickyAttr: false,\n handleRowBg: true,\n }\n );\n}\n\n/**\n * @param nileGrid Grid container element\n * @param colCount Total number of columns\n * @param columnWidths Column width array\n */\nexport function applyColumnsTemplate(\n nileGrid: NileGrid,\n columnWidths: number[]\n) {\n const cols = columnWidths\n .map((w, idx) => {\n if (idx === columnWidths.length - 1) {\n return `minmax(${Math.round(w)}px, auto)`;\n }\n return `${Math.max(0, Math.round(w))}px`;\n })\n .join(' ');\n nileGrid.style.setProperty('--nile-grid-columns', cols);\n}\n\n/**\n * @param nileGrid Grid instance\n * @returns Head and body elements from the grid slot\n */\nfunction getHeadAndBody(nileGrid: NileGrid) {\n if (!nileGrid.shadowRoot) return { head: undefined, body: undefined };\n const assigned = nileGrid.slotEl.assignedElements();\n const find = (tag: string) =>\n assigned.find(n => n.tagName.toLowerCase() === tag) as HTMLElement | undefined;\n return { head: find('nile-grid-head'), body: find('nile-grid-body') };\n}"]}
|
|
@@ -56,3 +56,4 @@ export declare function getScrollbarComp(el: HTMLElement): number;
|
|
|
56
56
|
* @param columnWidths New column width array
|
|
57
57
|
*/
|
|
58
58
|
export declare function applyAfterResize(grid: any, col: number): void;
|
|
59
|
+
export declare function updateResizeGuides(grid: NileGrid, col: number): void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { takeFromRight, giveToRight, totalReducibleRight } from './nile-grid.width';
|
|
2
|
-
import {
|
|
2
|
+
import { applyColumnsTemplate } from './nile-grid.layout';
|
|
3
3
|
/**
|
|
4
4
|
* @param minColumnWidth Minimum allowed column width
|
|
5
5
|
* @param resizeStart Guide line element (start)
|
|
@@ -36,6 +36,7 @@ export const resizeLinesHandler = (minColumnWidth, resizeStart, resizeEnd, col,
|
|
|
36
36
|
*/
|
|
37
37
|
export function computeNewWidth(opts) {
|
|
38
38
|
const { target, col, widthPx, floor, columnWidths } = opts;
|
|
39
|
+
// move this outside - getAttribute
|
|
39
40
|
const hasSpan = !!target.getAttribute('colspan') &&
|
|
40
41
|
parseInt(target.getAttribute('colspan'), 10) > 1;
|
|
41
42
|
const prevW = columnWidths[col] ?? floor;
|
|
@@ -72,6 +73,8 @@ export function resizeNoScroll({ grid, col, prevW, newW, floor }) {
|
|
|
72
73
|
*/
|
|
73
74
|
export function resizeWithScroll(opts) {
|
|
74
75
|
const { grid, col, newW } = opts;
|
|
76
|
+
if (grid.lockedWidthColumns?.[col])
|
|
77
|
+
return;
|
|
75
78
|
grid.columnWidths[col] = newW;
|
|
76
79
|
}
|
|
77
80
|
/**
|
|
@@ -88,8 +91,9 @@ export function getScrollbarComp(el) {
|
|
|
88
91
|
*/
|
|
89
92
|
export function applyAfterResize(grid, col) {
|
|
90
93
|
resizeLinesHandler(grid.minColumnWidth, grid.resizeStart, grid.resizeEnd, col, grid.scrollHeight, grid.columnWidths);
|
|
91
|
-
grid.colTemplate = rebuildTemplate(grid.columnWidths.length, grid.columnWidths);
|
|
92
|
-
syncStickyShadows(grid);
|
|
93
94
|
applyColumnsTemplate(grid, grid.columnWidths);
|
|
94
95
|
}
|
|
96
|
+
export function updateResizeGuides(grid, col) {
|
|
97
|
+
resizeLinesHandler(grid.minColumnWidth, grid.resizeStart, grid.resizeEnd, col, grid.scrollHeight, grid.columnWidths);
|
|
98
|
+
}
|
|
95
99
|
//# sourceMappingURL=nile-grid.resize.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nile-grid.resize.js","sourceRoot":"","sources":["../../../src/nile-grid/nile-grid.resize.ts"],"names":[],"mappings":"AACA,OAAO,EAAG,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"nile-grid.resize.js","sourceRoot":"","sources":["../../../src/nile-grid/nile-grid.resize.ts"],"names":[],"mappings":"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","sourcesContent":["import { NileGrid } from './nile-grid';\nimport { takeFromRight, giveToRight, totalReducibleRight } from './nile-grid.width';\nimport { applyColumnsTemplate } from './nile-grid.layout';\n\n/**\n * @param minColumnWidth Minimum allowed column width\n * @param resizeStart Guide line element (start)\n * @param resizeEnd Guide line element (end)\n * @param col Active column index\n * @param scrollHeight Height to apply to guides\n * @param columnWidths Current column widths\n * @returns void\n */\nexport const resizeLinesHandler = (\n minColumnWidth: number,\n resizeStart: HTMLElement,\n resizeEnd: HTMLElement,\n col: number,\n scrollHeight: number,\n columnWidths: number[],\n) => {\n resizeStart.style.display = 'block';\n resizeEnd.style.display = 'block';\n resizeStart.style.height = scrollHeight + 'px';\n resizeEnd.style.height = scrollHeight + 'px';\n const floor = minColumnWidth;\n const safe = (n: number) => Math.max(0, Math.round(n || 0));\n const sum = (arr: number[], endExclusive: number) => safe(arr.slice(0, Math.max(0, endExclusive)).reduce((a, b) => a + (b || 0), 0));\n\n const totalGridWidth = safe(columnWidths.reduce((a, b) => a + (b || 0), 0));\n const baseLeft = sum(columnWidths, col);\n const appliedColWidth = safe(Math.max(floor, columnWidths[col] ?? floor));\n let handleLeft = baseLeft + appliedColWidth;\n\n const minEdge = baseLeft + floor;\n const maxEdge = totalGridWidth;\n handleLeft = Math.min(Math.max(handleLeft, minEdge), maxEdge);\n handleLeft = Math.max(handleLeft, 20);\n\n resizeStart.style.left = `${handleLeft - 6}px`;\n resizeEnd.style.left = `${handleLeft - 2}px`;\n};\n\n/**\n * @param targetWidth New computed width in pixels\n * @param min Minimum allowed width\n * @param max Maximum allowed width\n * @returns Adjusted column width\n */\nexport function computeNewWidth(opts: {\n target: HTMLElement;\n col: number;\n widthPx: number;\n floor: number;\n columnWidths: number[];\n}) {\n const { target, col, widthPx, floor, columnWidths } = opts;\n\n // move this outside - getAttribute\n const hasSpan =\n !!target.getAttribute('colspan') &&\n parseInt(target.getAttribute('colspan')!, 10) > 1;\n const prevW = columnWidths[col] ?? floor;\n const newWraw = hasSpan ? widthPx - (columnWidths[col - 1] ?? 0) : widthPx;\n const newW = Math.max(floor, Math.round(Number.isFinite(newWraw) ? newWraw : prevW));\n return { prevW, newW, delta0: newW - prevW };\n}\n\n/**\n * @param columnWidths Current widths array\n * @param containerWidth Container total width\n */\nexport function resizeNoScroll({ grid, col, prevW, newW, floor }: {\n grid: NileGrid;\n col: number;\n prevW: number;\n newW: number;\n floor: number;\n}) {\n if (grid.lockedWidthColumns?.[col]) return;\n let delta = newW - prevW;\n if (delta > 0) {\n const rightReducible = totalReducibleRight(grid.columnWidths, col + 1, floor, grid.lockedWidthColumns);\n if (rightReducible <= 0) return;\n delta = Math.min(delta, rightReducible);\n grid.columnWidths[col] = prevW + delta;\n takeFromRight(grid.columnWidths, col + 1, delta, floor, grid.lockedWidthColumns);\n } else {\n const newColW = Math.max(floor, newW);\n const actualShrink = prevW - newColW;\n grid.columnWidths[col] = newColW;\n giveToRight(grid.columnWidths, col + 1, actualShrink);\n }\n}\n\n/**\n * @param columnWidths Current widths\n * @param containerWidth Container width\n */\nexport function resizeWithScroll(opts: {\n grid: NileGrid;\n col: number;\n newW: number;\n}) {\n const { grid, col, newW } = opts;\n if (grid.lockedWidthColumns?.[col]) return;\n grid.columnWidths[col] = newW;\n}\n\n/**\n * @param el Target element within grid\n * @returns Scrollbar width compensation value\n */\nexport function getScrollbarComp(el: HTMLElement) {\n const scroller = el.closest('nile-grid') as HTMLElement | null;\n return scroller ? scroller.offsetWidth - scroller.clientWidth : 0;\n}\n\n/**\n * @param nileGrid The parent grid\n * @param columnWidths New column width array\n */\nexport function applyAfterResize(grid: any, col: number) {\n resizeLinesHandler(\n grid.minColumnWidth,\n grid.resizeStart,\n grid.resizeEnd,\n col,\n grid.scrollHeight,\n grid.columnWidths\n );\n applyColumnsTemplate(grid, grid.columnWidths);\n}\n\nexport function updateResizeGuides(grid: NileGrid, col: number) {\n resizeLinesHandler(\n grid.minColumnWidth,\n grid.resizeStart,\n grid.resizeEnd,\n col,\n grid.scrollHeight,\n grid.columnWidths\n );\n}"]}
|
|
@@ -25,3 +25,10 @@ export declare const getHead: (slotEl: any) => HTMLElement;
|
|
|
25
25
|
* @returns <nile-grid-body> element or null
|
|
26
26
|
*/
|
|
27
27
|
export declare const getBody: (slotEl: any) => HTMLElement;
|
|
28
|
+
export declare const scrollEventHandler: (el: NileGrid) => void;
|
|
29
|
+
/** copyArrayValuesInPlace
|
|
30
|
+
* @param target Target array
|
|
31
|
+
* @param source Source array
|
|
32
|
+
* @returns void
|
|
33
|
+
*/
|
|
34
|
+
export declare function copyArrayValuesInPlace(target: number[], source: number[]): void;
|