@aquera/nile-elements 0.0.80 → 0.0.82
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -0
- package/demo/filenames.txt +1 -1
- package/demo/variables.css +54 -0
- package/demo/variables_v2.css +51 -0
- package/dist/fixture-1a9fb5f1.cjs.js +395 -0
- package/dist/fixture-1a9fb5f1.cjs.js.map +1 -0
- package/dist/fixture-81e5a936.esm.js +569 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.iife.js +976 -563
- package/dist/internal/animate.cjs.js +1 -1
- package/dist/internal/animate.cjs.js.map +1 -1
- package/dist/internal/animate.esm.js +1 -1
- package/dist/internal/drag.cjs.js +2 -0
- package/dist/internal/drag.cjs.js.map +1 -0
- package/dist/internal/drag.esm.js +1 -0
- package/dist/internal/math.cjs.js +2 -0
- package/dist/internal/math.cjs.js.map +1 -0
- package/dist/internal/math.esm.js +1 -0
- package/dist/nile-avatar/nile-avatar.css.cjs.js +1 -1
- package/dist/nile-avatar/nile-avatar.css.cjs.js.map +1 -1
- package/dist/nile-avatar/nile-avatar.css.esm.js +7 -8
- package/dist/nile-avatar/nile-avatar.test.cjs.js +2 -0
- package/dist/nile-avatar/nile-avatar.test.cjs.js.map +1 -0
- package/dist/nile-avatar/nile-avatar.test.esm.js +1 -0
- package/dist/nile-badge/index.cjs.js +1 -1
- package/dist/nile-badge/index.esm.js +1 -1
- package/dist/nile-badge/nile-badge.cjs.js +1 -1
- package/dist/nile-badge/nile-badge.cjs.js.map +1 -1
- package/dist/nile-badge/nile-badge.css.cjs.js +1 -1
- package/dist/nile-badge/nile-badge.css.cjs.js.map +1 -1
- package/dist/nile-badge/nile-badge.css.esm.js +47 -47
- package/dist/nile-badge/nile-badge.esm.js +1 -1
- package/dist/nile-badge/nile-badge.test.cjs.js +2 -0
- package/dist/nile-badge/nile-badge.test.cjs.js.map +1 -0
- package/dist/nile-badge/nile-badge.test.esm.js +1 -0
- package/dist/nile-breadcrumb-item/nile-breadcrumb-item.css.cjs.js +1 -1
- package/dist/nile-breadcrumb-item/nile-breadcrumb-item.css.cjs.js.map +1 -1
- package/dist/nile-breadcrumb-item/nile-breadcrumb-item.css.esm.js +3 -4
- package/dist/nile-button/index.cjs.js +1 -1
- package/dist/nile-button/index.esm.js +1 -1
- package/dist/nile-button/nile-button.cjs.js +1 -1
- package/dist/nile-button/nile-button.cjs.js.map +1 -1
- package/dist/nile-button/nile-button.esm.js +1 -1
- package/dist/nile-button/nile-button.test.cjs.js +2 -0
- package/dist/nile-button/nile-button.test.cjs.js.map +1 -0
- package/dist/nile-button/nile-button.test.esm.js +4 -0
- package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js +2 -0
- package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js.map +1 -0
- package/dist/nile-button-toggle-group/nile-button-toggle-group.test.esm.js +49 -0
- package/dist/nile-calendar/index.cjs.js +1 -1
- package/dist/nile-calendar/index.esm.js +1 -1
- package/dist/nile-calendar/nile-calendar.cjs.js +1 -1
- package/dist/nile-calendar/nile-calendar.cjs.js.map +1 -1
- package/dist/nile-calendar/nile-calendar.css.cjs.js +1 -1
- package/dist/nile-calendar/nile-calendar.css.cjs.js.map +1 -1
- package/dist/nile-calendar/nile-calendar.css.esm.js +122 -191
- package/dist/nile-calendar/nile-calendar.esm.js +135 -135
- package/dist/nile-card/nile-card.test.cjs.js +2 -0
- package/dist/nile-card/nile-card.test.cjs.js.map +1 -0
- package/dist/nile-card/nile-card.test.esm.js +51 -0
- package/dist/nile-checkbox/nile-checkbox.test.cjs.js +1 -394
- package/dist/nile-checkbox/nile-checkbox.test.cjs.js.map +1 -1
- package/dist/nile-checkbox/nile-checkbox.test.esm.js +3 -571
- package/dist/nile-date-picker/nile-date-picker.cjs.js +1 -1
- package/dist/nile-date-picker/nile-date-picker.cjs.js.map +1 -1
- package/dist/nile-date-picker/nile-date-picker.esm.js +1 -1
- package/dist/nile-dialog/index.cjs.js +1 -1
- package/dist/nile-dialog/index.esm.js +1 -1
- package/dist/nile-dialog/nile-dialog.cjs.js +1 -1
- package/dist/nile-dialog/nile-dialog.cjs.js.map +1 -1
- package/dist/nile-dialog/nile-dialog.css.cjs.js +1 -1
- package/dist/nile-dialog/nile-dialog.css.cjs.js.map +1 -1
- package/dist/nile-dialog/nile-dialog.css.esm.js +4 -1
- package/dist/nile-dialog/nile-dialog.esm.js +5 -4
- package/dist/nile-drawer/index.cjs.js +1 -1
- package/dist/nile-drawer/index.esm.js +1 -1
- package/dist/nile-drawer/nile-drawer.cjs.js +1 -1
- package/dist/nile-drawer/nile-drawer.cjs.js.map +1 -1
- package/dist/nile-drawer/nile-drawer.esm.js +1 -1
- package/dist/nile-drawer/nile-drawer.test.cjs.js +2 -0
- package/dist/nile-drawer/nile-drawer.test.cjs.js.map +1 -0
- package/dist/nile-drawer/nile-drawer.test.esm.js +18 -0
- package/dist/nile-empty-state/nile-empty-state.test.cjs.js +2 -0
- package/dist/nile-empty-state/nile-empty-state.test.cjs.js.map +1 -0
- package/dist/nile-empty-state/nile-empty-state.test.esm.js +9 -0
- package/dist/nile-error-message/nile-error-message.test.cjs.js +2 -0
- package/dist/nile-error-message/nile-error-message.test.cjs.js.map +1 -0
- package/dist/nile-error-message/nile-error-message.test.esm.js +1 -0
- package/dist/nile-form-group/nile-form-group.test.cjs.js +2 -0
- package/dist/nile-form-group/nile-form-group.test.cjs.js.map +1 -0
- package/dist/nile-form-group/nile-form-group.test.esm.js +1 -0
- package/dist/nile-hero/nile-hero.test.cjs.js +2 -0
- package/dist/nile-hero/nile-hero.test.cjs.js.map +1 -0
- package/dist/nile-hero/nile-hero.test.esm.js +14 -0
- package/dist/nile-icon/icons/svg/alert.cjs.js +2 -0
- package/dist/nile-icon/icons/svg/alert.cjs.js.map +1 -0
- package/dist/nile-icon/icons/svg/alert.esm.js +1 -0
- package/dist/nile-icon/icons/svg/file-check-02.cjs.js +2 -0
- package/dist/nile-icon/icons/svg/file-check-02.cjs.js.map +1 -0
- package/dist/nile-icon/icons/svg/file-check-02.esm.js +1 -0
- package/dist/nile-icon/icons/svg/index.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/index.esm.js +1 -1
- package/dist/nile-icon/icons/svg/monitor-01.cjs.js +2 -0
- package/dist/nile-icon/icons/svg/monitor-01.cjs.js.map +1 -0
- package/dist/nile-icon/icons/svg/monitor-01.esm.js +1 -0
- package/dist/nile-icon/index.cjs.js +1 -1
- package/dist/nile-icon/index.cjs.js.map +1 -1
- package/dist/nile-icon/index.esm.js +1 -1
- package/dist/nile-icon/nile-icon.test.cjs.js +2 -0
- package/dist/nile-icon/nile-icon.test.cjs.js.map +1 -0
- package/dist/nile-icon/nile-icon.test.esm.js +1 -0
- package/dist/nile-icon-button/index.cjs.js +1 -1
- package/dist/nile-icon-button/index.esm.js +1 -1
- package/dist/nile-icon-button/nile-icon-button.cjs.js +1 -1
- package/dist/nile-icon-button/nile-icon-button.cjs.js.map +1 -1
- package/dist/nile-icon-button/nile-icon-button.esm.js +1 -1
- package/dist/nile-input/index.cjs.js +1 -1
- package/dist/nile-input/index.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-input/nile-input.test.cjs.js +2 -0
- package/dist/nile-input/nile-input.test.cjs.js.map +1 -0
- package/dist/nile-input/nile-input.test.esm.js +17 -0
- package/dist/nile-link/nile-link.test.cjs.js +2 -0
- package/dist/nile-link/nile-link.test.cjs.js.map +1 -0
- package/dist/nile-link/nile-link.test.esm.js +1 -0
- package/dist/nile-list/index.cjs.js +2 -0
- package/dist/nile-list/index.cjs.js.map +1 -0
- package/dist/nile-list/index.esm.js +1 -0
- package/dist/nile-list/nile-list.cjs.js +2 -0
- package/dist/nile-list/nile-list.cjs.js.map +1 -0
- package/dist/nile-list/nile-list.css.cjs.js +2 -0
- package/dist/nile-list/nile-list.css.cjs.js.map +1 -0
- package/dist/nile-list/nile-list.css.esm.js +8 -0
- package/dist/nile-list/nile-list.esm.js +3 -0
- package/dist/nile-list-item/index.cjs.js +2 -0
- package/dist/nile-list-item/index.cjs.js.map +1 -0
- package/dist/nile-list-item/index.esm.js +1 -0
- package/dist/nile-list-item/nile-list-item.cjs.js +2 -0
- package/dist/nile-list-item/nile-list-item.cjs.js.map +1 -0
- package/dist/nile-list-item/nile-list-item.css.cjs.js +2 -0
- package/dist/nile-list-item/nile-list-item.css.cjs.js.map +1 -0
- package/dist/nile-list-item/nile-list-item.css.esm.js +54 -0
- package/dist/nile-list-item/nile-list-item.esm.js +21 -0
- package/dist/nile-loader/nile-loader.test.cjs.js +2 -0
- package/dist/nile-loader/nile-loader.test.cjs.js.map +1 -0
- package/dist/nile-loader/nile-loader.test.esm.js +1 -0
- package/dist/nile-menu/nile-menu.cjs.js +1 -1
- package/dist/nile-menu/nile-menu.cjs.js.map +1 -1
- package/dist/nile-menu/nile-menu.css.cjs.js +1 -1
- package/dist/nile-menu/nile-menu.css.cjs.js.map +1 -1
- package/dist/nile-menu/nile-menu.css.esm.js +21 -7
- package/dist/nile-menu/nile-menu.esm.js +17 -15
- package/dist/nile-menu-item/index.cjs.js +1 -1
- package/dist/nile-menu-item/index.esm.js +1 -1
- package/dist/nile-menu-item/nile-menu-item.cjs.js +1 -1
- package/dist/nile-menu-item/nile-menu-item.cjs.js.map +1 -1
- package/dist/nile-menu-item/nile-menu-item.esm.js +1 -1
- package/dist/nile-option/index.cjs.js +1 -1
- package/dist/nile-option/index.esm.js +1 -1
- package/dist/nile-option/nile-option.cjs.js +1 -1
- package/dist/nile-option/nile-option.cjs.js.map +1 -1
- package/dist/nile-option/nile-option.esm.js +1 -1
- package/dist/nile-popover/nile-popover.cjs.js +1 -1
- package/dist/nile-popover/nile-popover.cjs.js.map +1 -1
- package/dist/nile-popover/nile-popover.css.cjs.js +1 -1
- package/dist/nile-popover/nile-popover.css.cjs.js.map +1 -1
- package/dist/nile-popover/nile-popover.css.esm.js +6 -4
- package/dist/nile-popover/nile-popover.esm.js +4 -7
- package/dist/nile-popover/nile-popover.test.cjs.js +2 -0
- package/dist/nile-popover/nile-popover.test.cjs.js.map +1 -0
- package/dist/nile-popover/nile-popover.test.esm.js +21 -0
- package/dist/nile-popup/nile-popup.css.cjs.js +1 -1
- package/dist/nile-popup/nile-popup.css.cjs.js.map +1 -1
- package/dist/nile-popup/nile-popup.css.esm.js +8 -4
- package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js +2 -0
- package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js.map +1 -0
- package/dist/nile-progress-bar/nile-progress-bar.test.esm.js +1 -0
- package/dist/nile-radio/nile-radio.test.cjs.js +2 -0
- package/dist/nile-radio/nile-radio.test.cjs.js.map +1 -0
- package/dist/nile-radio/nile-radio.test.esm.js +1 -0
- package/dist/nile-select/index.cjs.js +1 -1
- package/dist/nile-select/index.esm.js +1 -1
- package/dist/nile-select/nile-select.cjs.js +1 -1
- package/dist/nile-select/nile-select.cjs.js.map +1 -1
- package/dist/nile-select/nile-select.esm.js +3 -3
- package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js +2 -0
- package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js.map +1 -0
- package/dist/nile-slide-toggle/nile-slide-toggle.test.esm.js +1 -0
- package/dist/nile-split-panel/index.cjs.js +2 -0
- package/dist/nile-split-panel/index.cjs.js.map +1 -0
- package/dist/nile-split-panel/index.esm.js +1 -0
- package/dist/nile-split-panel/nile-split-panel.cjs.js +2 -0
- package/dist/nile-split-panel/nile-split-panel.cjs.js.map +1 -0
- package/dist/nile-split-panel/nile-split-panel.css.cjs.js +2 -0
- package/dist/nile-split-panel/nile-split-panel.css.cjs.js.map +1 -0
- package/dist/nile-split-panel/nile-split-panel.css.esm.js +87 -0
- package/dist/nile-split-panel/nile-split-panel.esm.js +21 -0
- package/dist/nile-stepper/nile-stepper.cjs.js +1 -1
- package/dist/nile-stepper/nile-stepper.cjs.js.map +1 -1
- package/dist/nile-stepper/nile-stepper.esm.js +1 -1
- package/dist/nile-stepper/nile-stepper.test.cjs.js +2 -0
- package/dist/nile-stepper/nile-stepper.test.cjs.js.map +1 -0
- package/dist/nile-stepper/nile-stepper.test.esm.js +1 -0
- package/dist/nile-tab/index.cjs.js +1 -1
- package/dist/nile-tab/index.esm.js +1 -1
- package/dist/nile-tab/nile-tab.cjs.js +1 -1
- package/dist/nile-tab/nile-tab.cjs.js.map +1 -1
- package/dist/nile-tab/nile-tab.esm.js +1 -1
- package/dist/nile-tab-group/index.cjs.js +1 -1
- package/dist/nile-tab-group/index.esm.js +1 -1
- package/dist/nile-tab-group/nile-tab-group.cjs.js +1 -1
- package/dist/nile-tab-group/nile-tab-group.cjs.js.map +1 -1
- package/dist/nile-tab-group/nile-tab-group.css.cjs.js +1 -1
- package/dist/nile-tab-group/nile-tab-group.css.cjs.js.map +1 -1
- package/dist/nile-tab-group/nile-tab-group.css.esm.js +2 -2
- package/dist/nile-tab-group/nile-tab-group.esm.js +1 -1
- package/dist/nile-table-header-item/nile-table-header-item.css.cjs.js +1 -1
- package/dist/nile-table-header-item/nile-table-header-item.css.cjs.js.map +1 -1
- package/dist/nile-table-header-item/nile-table-header-item.css.esm.js +0 -4
- package/dist/nile-tag/index.cjs.js +1 -1
- package/dist/nile-tag/index.esm.js +1 -1
- package/dist/nile-tag/nile-tag.cjs.js +1 -1
- package/dist/nile-tag/nile-tag.cjs.js.map +1 -1
- package/dist/nile-tag/nile-tag.esm.js +1 -1
- package/dist/nile-textarea/nile-textarea.test.cjs.js +2 -0
- package/dist/nile-textarea/nile-textarea.test.cjs.js.map +1 -0
- package/dist/nile-textarea/nile-textarea.test.esm.js +1 -0
- package/dist/nile-toast/index.cjs.js +1 -1
- package/dist/nile-toast/index.esm.js +1 -1
- package/dist/nile-toast/nile-toast.cjs.js +1 -1
- package/dist/nile-toast/nile-toast.cjs.js.map +1 -1
- package/dist/nile-toast/nile-toast.esm.js +1 -1
- package/dist/nile-tree/index.cjs.js +2 -0
- package/dist/nile-tree/index.cjs.js.map +1 -0
- package/dist/nile-tree/index.esm.js +1 -0
- package/dist/nile-tree/nile-tree.cjs.js +2 -0
- package/dist/nile-tree/nile-tree.cjs.js.map +1 -0
- package/dist/nile-tree/nile-tree.css.cjs.js +2 -0
- package/dist/nile-tree/nile-tree.css.cjs.js.map +1 -0
- package/dist/nile-tree/nile-tree.css.esm.js +36 -0
- package/dist/nile-tree/nile-tree.esm.js +13 -0
- package/dist/nile-tree-item/index.cjs.js +2 -0
- package/dist/nile-tree-item/index.cjs.js.map +1 -0
- package/dist/nile-tree-item/index.esm.js +1 -0
- package/dist/nile-tree-item/nile-tree-item.cjs.js +2 -0
- package/dist/nile-tree-item/nile-tree-item.cjs.js.map +1 -0
- package/dist/nile-tree-item/nile-tree-item.css.cjs.js +2 -0
- package/dist/nile-tree-item/nile-tree-item.css.cjs.js.map +1 -0
- package/dist/nile-tree-item/nile-tree-item.css.esm.js +164 -0
- package/dist/nile-tree-item/nile-tree-item.esm.js +63 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.js +5 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal/drag.d.ts +15 -0
- package/dist/src/internal/drag.js +28 -0
- package/dist/src/internal/drag.js.map +1 -0
- package/dist/src/internal/math.d.ts +2 -0
- package/dist/src/internal/math.js +12 -0
- package/dist/src/internal/math.js.map +1 -0
- package/dist/src/nile-avatar/nile-avatar.css.js +5 -6
- package/dist/src/nile-avatar/nile-avatar.css.js.map +1 -1
- package/dist/src/nile-avatar/nile-avatar.test.d.ts +1 -0
- package/dist/src/nile-avatar/nile-avatar.test.js +58 -0
- package/dist/src/nile-avatar/nile-avatar.test.js.map +1 -0
- package/dist/src/nile-badge/nile-badge.css.js +45 -45
- package/dist/src/nile-badge/nile-badge.css.js.map +1 -1
- package/dist/src/nile-badge/nile-badge.test.d.ts +1 -0
- package/dist/src/nile-badge/nile-badge.test.js +42 -0
- package/dist/src/nile-badge/nile-badge.test.js.map +1 -0
- package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.css.js +3 -4
- package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.css.js.map +1 -1
- package/dist/src/nile-button/nile-button.test.d.ts +1 -0
- package/dist/src/nile-button/nile-button.test.js +86 -0
- package/dist/src/nile-button/nile-button.test.js.map +1 -0
- package/dist/src/nile-button-toggle-group/nile-button-toggle-group.test.d.ts +2 -0
- package/dist/src/nile-button-toggle-group/nile-button-toggle-group.test.js +108 -0
- package/dist/src/nile-button-toggle-group/nile-button-toggle-group.test.js.map +1 -0
- package/dist/src/nile-calendar/nile-calendar.css.js +122 -191
- package/dist/src/nile-calendar/nile-calendar.css.js.map +1 -1
- package/dist/src/nile-calendar/nile-calendar.d.ts +8 -0
- package/dist/src/nile-calendar/nile-calendar.js +164 -167
- package/dist/src/nile-calendar/nile-calendar.js.map +1 -1
- package/dist/src/nile-card/nile-card.test.d.ts +1 -0
- package/dist/src/nile-card/nile-card.test.js +69 -0
- package/dist/src/nile-card/nile-card.test.js.map +1 -0
- package/dist/src/nile-date-picker/nile-date-picker.js +1 -0
- package/dist/src/nile-date-picker/nile-date-picker.js.map +1 -1
- package/dist/src/nile-dialog/nile-dialog.css.js +4 -1
- package/dist/src/nile-dialog/nile-dialog.css.js.map +1 -1
- package/dist/src/nile-dialog/nile-dialog.js +4 -3
- package/dist/src/nile-dialog/nile-dialog.js.map +1 -1
- package/dist/src/nile-drawer/nile-drawer.test.d.ts +1 -0
- package/dist/src/nile-drawer/nile-drawer.test.js +88 -0
- package/dist/src/nile-drawer/nile-drawer.test.js.map +1 -0
- package/dist/src/nile-empty-state/nile-empty-state.test.d.ts +1 -0
- package/dist/src/nile-empty-state/nile-empty-state.test.js +63 -0
- package/dist/src/nile-empty-state/nile-empty-state.test.js.map +1 -0
- package/dist/src/nile-error-message/nile-error-message.test.d.ts +1 -0
- package/dist/src/nile-error-message/nile-error-message.test.js +61 -0
- package/dist/src/nile-error-message/nile-error-message.test.js.map +1 -0
- package/dist/src/nile-form-group/nile-form-group.test.d.ts +1 -0
- package/dist/src/nile-form-group/nile-form-group.test.js +55 -0
- package/dist/src/nile-form-group/nile-form-group.test.js.map +1 -0
- package/dist/src/nile-hero/nile-hero.test.d.ts +1 -0
- package/dist/src/nile-hero/nile-hero.test.js +42 -0
- package/dist/src/nile-hero/nile-hero.test.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/alert.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/alert.js +5 -0
- package/dist/src/nile-icon/icons/svg/alert.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/file-check-02.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/file-check-02.js +5 -0
- package/dist/src/nile-icon/icons/svg/file-check-02.js.map +1 -0
- package/dist/src/nile-icon/icons/svg/index.d.ts +3 -0
- package/dist/src/nile-icon/icons/svg/index.js +3 -0
- package/dist/src/nile-icon/icons/svg/index.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/monitor-01.d.ts +5 -0
- package/dist/src/nile-icon/icons/svg/monitor-01.js +5 -0
- package/dist/src/nile-icon/icons/svg/monitor-01.js.map +1 -0
- package/dist/src/nile-icon/nile-icon.test.d.ts +1 -0
- package/dist/src/nile-icon/nile-icon.test.js +45 -0
- package/dist/src/nile-icon/nile-icon.test.js.map +1 -0
- package/dist/src/nile-input/nile-input.test.d.ts +1 -0
- package/dist/src/nile-input/nile-input.test.js +139 -0
- package/dist/src/nile-input/nile-input.test.js.map +1 -0
- package/dist/src/nile-link/nile-link.test.d.ts +1 -0
- package/dist/src/nile-link/nile-link.test.js +72 -0
- package/dist/src/nile-link/nile-link.test.js.map +1 -0
- package/dist/src/nile-list/index.d.ts +1 -0
- package/dist/src/nile-list/index.js +2 -0
- package/dist/src/nile-list/index.js.map +1 -0
- package/dist/src/nile-list/nile-list.css.d.ts +12 -0
- package/dist/src/nile-list/nile-list.css.js +20 -0
- package/dist/src/nile-list/nile-list.css.js.map +1 -0
- package/dist/src/nile-list/nile-list.d.ts +33 -0
- package/dist/src/nile-list/nile-list.js +47 -0
- package/dist/src/nile-list/nile-list.js.map +1 -0
- package/dist/src/nile-list-item/index.d.ts +1 -0
- package/dist/src/nile-list-item/index.js +2 -0
- package/dist/src/nile-list-item/index.js.map +1 -0
- package/dist/src/nile-list-item/nile-list-item.css.d.ts +12 -0
- package/dist/src/nile-list-item/nile-list-item.css.js +66 -0
- package/dist/src/nile-list-item/nile-list-item.css.js.map +1 -0
- package/dist/src/nile-list-item/nile-list-item.d.ts +38 -0
- package/dist/src/nile-list-item/nile-list-item.js +96 -0
- package/dist/src/nile-list-item/nile-list-item.js.map +1 -0
- package/dist/src/nile-loader/nile-loader.test.d.ts +1 -0
- package/dist/src/nile-loader/nile-loader.test.js +39 -0
- package/dist/src/nile-loader/nile-loader.test.js.map +1 -0
- package/dist/src/nile-menu/nile-menu.css.js +19 -5
- package/dist/src/nile-menu/nile-menu.css.js.map +1 -1
- package/dist/src/nile-menu/nile-menu.d.ts +1 -0
- package/dist/src/nile-menu/nile-menu.js +25 -14
- package/dist/src/nile-menu/nile-menu.js.map +1 -1
- package/dist/src/nile-popover/nile-popover.css.js +6 -4
- package/dist/src/nile-popover/nile-popover.css.js.map +1 -1
- package/dist/src/nile-popover/nile-popover.d.ts +1 -0
- package/dist/src/nile-popover/nile-popover.js +7 -6
- package/dist/src/nile-popover/nile-popover.js.map +1 -1
- package/dist/src/nile-popover/nile-popover.test.d.ts +1 -0
- package/dist/src/nile-popover/nile-popover.test.js +73 -0
- package/dist/src/nile-popover/nile-popover.test.js.map +1 -0
- package/dist/src/nile-popup/nile-popup.css.d.ts +5 -5
- package/dist/src/nile-popup/nile-popup.css.js +13 -9
- package/dist/src/nile-popup/nile-popup.css.js.map +1 -1
- package/dist/src/nile-progress-bar/nile-progress-bar.test.d.ts +1 -0
- package/dist/src/nile-progress-bar/nile-progress-bar.test.js +48 -0
- package/dist/src/nile-progress-bar/nile-progress-bar.test.js.map +1 -0
- package/dist/src/nile-radio/nile-radio.test.d.ts +1 -0
- package/dist/src/nile-radio/nile-radio.test.js +71 -0
- package/dist/src/nile-radio/nile-radio.test.js.map +1 -0
- package/dist/src/nile-select/nile-select.d.ts +1 -0
- package/dist/src/nile-select/nile-select.js +5 -1
- package/dist/src/nile-select/nile-select.js.map +1 -1
- package/dist/src/nile-slide-toggle/nile-slide-toggle.test.d.ts +1 -0
- package/dist/src/nile-slide-toggle/nile-slide-toggle.test.js +54 -0
- package/dist/src/nile-slide-toggle/nile-slide-toggle.test.js.map +1 -0
- package/dist/src/nile-split-panel/index.d.ts +1 -0
- package/dist/src/nile-split-panel/index.js +2 -0
- package/dist/src/nile-split-panel/index.js.map +1 -0
- package/dist/src/nile-split-panel/nile-split-panel.css.d.ts +12 -0
- package/dist/src/nile-split-panel/nile-split-panel.css.js +99 -0
- package/dist/src/nile-split-panel/nile-split-panel.css.js.map +1 -0
- package/dist/src/nile-split-panel/nile-split-panel.d.ts +78 -0
- package/dist/src/nile-split-panel/nile-split-panel.js +251 -0
- package/dist/src/nile-split-panel/nile-split-panel.js.map +1 -0
- package/dist/src/nile-stepper/nile-stepper.js +1 -1
- package/dist/src/nile-stepper/nile-stepper.js.map +1 -1
- package/dist/src/nile-stepper/nile-stepper.test.d.ts +0 -0
- package/dist/src/nile-stepper/nile-stepper.test.js +165 -0
- package/dist/src/nile-stepper/nile-stepper.test.js.map +1 -0
- package/dist/src/nile-tab-group/nile-tab-group.css.js +2 -2
- package/dist/src/nile-tab-group/nile-tab-group.css.js.map +1 -1
- package/dist/src/nile-tab-group/nile-tab-group.js +16 -15
- package/dist/src/nile-tab-group/nile-tab-group.js.map +1 -1
- package/dist/src/nile-table-header-item/nile-table-header-item.css.js +0 -4
- package/dist/src/nile-table-header-item/nile-table-header-item.css.js.map +1 -1
- package/dist/src/nile-textarea/nile-textarea.test.d.ts +1 -0
- package/dist/src/nile-textarea/nile-textarea.test.js +87 -0
- package/dist/src/nile-textarea/nile-textarea.test.js.map +1 -0
- package/dist/src/nile-tree/index.d.ts +1 -0
- package/dist/src/nile-tree/index.js +2 -0
- package/dist/src/nile-tree/index.js.map +1 -0
- package/dist/src/nile-tree/nile-tree.css.d.ts +12 -0
- package/dist/src/nile-tree/nile-tree.css.js +48 -0
- package/dist/src/nile-tree/nile-tree.css.js.map +1 -0
- package/dist/src/nile-tree/nile-tree.d.ts +69 -0
- package/dist/src/nile-tree/nile-tree.js +376 -0
- package/dist/src/nile-tree/nile-tree.js.map +1 -0
- package/dist/src/nile-tree-item/index.d.ts +1 -0
- package/dist/src/nile-tree-item/index.js +2 -0
- package/dist/src/nile-tree-item/index.js.map +1 -0
- package/dist/src/nile-tree-item/nile-tree-item.css.d.ts +12 -0
- package/dist/src/nile-tree-item/nile-tree-item.css.js +176 -0
- package/dist/src/nile-tree-item/nile-tree-item.css.js.map +1 -0
- package/dist/src/nile-tree-item/nile-tree-item.d.ts +96 -0
- package/dist/src/nile-tree-item/nile-tree-item.js +324 -0
- package/dist/src/nile-tree-item/nile-tree-item.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +71 -2
- package/plopfile.js +11 -0
- package/src/index.ts +6 -1
- package/src/internal/drag.ts +45 -0
- package/src/internal/math.ts +14 -0
- package/src/nile-avatar/nile-avatar.css.ts +5 -6
- package/src/nile-avatar/nile-avatar.test.ts +65 -0
- package/src/nile-badge/nile-badge.css.ts +45 -45
- package/src/nile-badge/nile-badge.test.ts +48 -0
- package/src/nile-breadcrumb-item/nile-breadcrumb-item.css.ts +3 -4
- package/src/nile-button/nile-button.test.ts +117 -0
- package/src/nile-button-toggle-group/nile-button-toggle-group.test.ts +130 -0
- package/src/nile-calendar/nile-calendar.css.ts +122 -191
- package/src/nile-calendar/nile-calendar.ts +170 -213
- package/src/nile-card/nile-card.test.ts +74 -0
- package/src/nile-date-picker/nile-date-picker.ts +5 -6
- package/src/nile-dialog/nile-dialog.css.ts +4 -1
- package/src/nile-dialog/nile-dialog.ts +4 -4
- package/src/nile-drawer/nile-drawer.test.ts +106 -0
- package/src/nile-empty-state/nile-empty-state.test.ts +69 -0
- package/src/nile-error-message/nile-error-message.test.ts +69 -0
- package/src/nile-form-group/nile-form-group.test.ts +63 -0
- package/src/nile-hero/nile-hero.test.ts +45 -0
- package/src/nile-icon/icons/svg/alert.ts +5 -0
- package/src/nile-icon/icons/svg/file-check-02.ts +5 -0
- package/src/nile-icon/icons/svg/index.ts +3 -0
- package/src/nile-icon/icons/svg/monitor-01.ts +5 -0
- package/src/nile-icon/nile-icon.test.ts +53 -0
- package/src/nile-input/nile-input.test.ts +160 -0
- package/src/nile-link/nile-link.test.ts +83 -0
- package/src/nile-list/index.ts +1 -0
- package/src/nile-list/nile-list.css.ts +22 -0
- package/src/nile-list/nile-list.ts +64 -0
- package/src/nile-list-item/index.ts +1 -0
- package/src/nile-list-item/nile-list-item.css.ts +68 -0
- package/src/nile-list-item/nile-list-item.ts +104 -0
- package/src/nile-loader/nile-loader.test.ts +45 -0
- package/src/nile-menu/nile-menu.css.ts +19 -5
- package/src/nile-menu/nile-menu.ts +27 -17
- package/src/nile-popover/nile-popover.css.ts +6 -4
- package/src/nile-popover/nile-popover.test.ts +86 -0
- package/src/nile-popover/nile-popover.ts +7 -10
- package/src/nile-popup/nile-popup.css.ts +14 -10
- package/src/nile-progress-bar/nile-progress-bar.test.ts +55 -0
- package/src/nile-radio/nile-radio.test.ts +81 -0
- package/src/nile-select/nile-select.ts +3 -1
- package/src/nile-slide-toggle/nile-slide-toggle.test.ts +61 -0
- package/src/nile-split-panel/index.ts +1 -0
- package/src/nile-split-panel/nile-split-panel.css.ts +101 -0
- package/src/nile-split-panel/nile-split-panel.ts +285 -0
- package/src/nile-stepper/nile-stepper.test.ts +174 -0
- package/src/nile-stepper/nile-stepper.ts +2 -2
- package/src/nile-tab-group/nile-tab-group.css.ts +2 -2
- package/src/nile-tab-group/nile-tab-group.ts +2 -1
- package/src/nile-table-header-item/nile-table-header-item.css.ts +0 -4
- package/src/nile-textarea/nile-textarea.test.ts +102 -0
- package/src/nile-tree/index.ts +1 -0
- package/src/nile-tree/nile-tree.css.ts +50 -0
- package/src/nile-tree/nile-tree.ts +433 -0
- package/src/nile-tree-item/index.ts +1 -0
- package/src/nile-tree-item/nile-tree-item.css.ts +178 -0
- package/src/nile-tree-item/nile-tree-item.ts +330 -0
@@ -0,0 +1,376 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright Aquera Inc 2023
|
3
|
+
*
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
6
|
+
*/
|
7
|
+
import { __decorate } from "tslib";
|
8
|
+
import { styles } from './nile-tree.css';
|
9
|
+
import NileElement from '../internal/nile-element';
|
10
|
+
import { clamp } from '../internal/math';
|
11
|
+
import { customElement, property, query } from 'lit/decorators.js';
|
12
|
+
import { html } from 'lit';
|
13
|
+
import { watch } from '../internal/watch';
|
14
|
+
import NileTreeItem from '../nile-tree-item/nile-tree-item';
|
15
|
+
function syncCheckboxes(changedTreeItem, initialSync = false) {
|
16
|
+
function syncParentItem(treeItem) {
|
17
|
+
const children = treeItem.getChildrenItems({ includeDisabled: false });
|
18
|
+
if (children.length) {
|
19
|
+
const allChecked = children.every(item => item.selected);
|
20
|
+
const allUnchecked = children.every(item => !item.selected && !item.indeterminate);
|
21
|
+
treeItem.selected = allChecked;
|
22
|
+
treeItem.indeterminate = !allChecked && !allUnchecked;
|
23
|
+
}
|
24
|
+
}
|
25
|
+
function syncAncestors(treeItem) {
|
26
|
+
const parentItem = treeItem.parentElement;
|
27
|
+
if (NileTreeItem.isTreeItem(parentItem)) {
|
28
|
+
syncParentItem(parentItem);
|
29
|
+
syncAncestors(parentItem);
|
30
|
+
}
|
31
|
+
}
|
32
|
+
function syncDescendants(treeItem) {
|
33
|
+
for (const childItem of treeItem.getChildrenItems()) {
|
34
|
+
childItem.selected = initialSync
|
35
|
+
? treeItem.selected || childItem.selected
|
36
|
+
: !childItem.disabled && treeItem.selected;
|
37
|
+
syncDescendants(childItem);
|
38
|
+
}
|
39
|
+
if (initialSync) {
|
40
|
+
syncParentItem(treeItem);
|
41
|
+
}
|
42
|
+
}
|
43
|
+
syncDescendants(changedTreeItem);
|
44
|
+
syncAncestors(changedTreeItem);
|
45
|
+
}
|
46
|
+
/**
|
47
|
+
* @summary Trees allow you to display a hierarchical list of selectable [tree items](/components/tree-item). Items with children can be expanded and collapsed as desired by the user.
|
48
|
+
*
|
49
|
+
* @event {{ selection: NileTreeItem[] }} nile-selection-change - Emitted when a tree item is selected or deselected.
|
50
|
+
*
|
51
|
+
* @slot - The default slot.
|
52
|
+
* @slot expand-icon - The icon to show when the tree item is expanded. Works best with `<nile-icon>`.
|
53
|
+
* @slot collapse-icon - The icon to show when the tree item is collapsed. Works best with `<nile-icon>`.
|
54
|
+
*
|
55
|
+
* @csspart base - The component's base wrapper.
|
56
|
+
*
|
57
|
+
* @cssproperty [--indent-size=var(--nile-spacing-medium)] - The size of the indentation for nested items.
|
58
|
+
* @cssproperty [--indent-guide-color=var(--nile-color-neutral-200)] - The color of the indentation line.
|
59
|
+
* @cssproperty [--indent-guide-offset=0] - The amount of vertical spacing to leave between the top and bottom of the
|
60
|
+
* indentation line's starting position.
|
61
|
+
* @cssproperty [--indent-guide-style=solid] - The style of the indentation line, e.g. solid, dotted, dashed.
|
62
|
+
* @cssproperty [--indent-guide-width=0] - The width of the indentation line.
|
63
|
+
*/
|
64
|
+
let NileTree = class NileTree extends NileElement {
|
65
|
+
constructor() {
|
66
|
+
super(...arguments);
|
67
|
+
/**
|
68
|
+
* The selection behavior of the tree. Single selection allows only one node to be selected at a time. Multiple
|
69
|
+
* displays checkboxes and allows more than one node to be selected. Leaf allows only leaf nodes to be selected.
|
70
|
+
*/
|
71
|
+
this.selection = 'leaf';
|
72
|
+
this.clickTarget = null;
|
73
|
+
// Initializes new items by setting the `selectable` property and the expanded/collapsed icons if any
|
74
|
+
this.initTreeItem = (item) => {
|
75
|
+
item.selectable = this.selection === 'multiple';
|
76
|
+
['expand', 'collapse']
|
77
|
+
.filter(status => !!this.querySelector(`[slot="${status}-icon"]`))
|
78
|
+
.forEach((status) => {
|
79
|
+
const existingIcon = item.querySelector(`[slot="${status}-icon"]`);
|
80
|
+
if (existingIcon === null) {
|
81
|
+
// No separator exists, add one
|
82
|
+
item.append(this.getExpandButtonIcon(status));
|
83
|
+
}
|
84
|
+
else if (existingIcon.hasAttribute('data-default')) {
|
85
|
+
// A default separator exists, replace it
|
86
|
+
existingIcon.replaceWith(this.getExpandButtonIcon(status));
|
87
|
+
}
|
88
|
+
else {
|
89
|
+
// The user provided a custom icon, leave it alone
|
90
|
+
}
|
91
|
+
});
|
92
|
+
};
|
93
|
+
}
|
94
|
+
async connectedCallback() {
|
95
|
+
super.connectedCallback();
|
96
|
+
this.handleTreeChanged = this.handleTreeChanged.bind(this);
|
97
|
+
this.handleFocusIn = this.handleFocusIn.bind(this);
|
98
|
+
this.handleFocusOut = this.handleFocusOut.bind(this);
|
99
|
+
this.setAttribute('role', 'tree');
|
100
|
+
this.setAttribute('tabindex', '0');
|
101
|
+
this.addEventListener('focusin', this.handleFocusIn);
|
102
|
+
this.addEventListener('focusout', this.handleFocusOut);
|
103
|
+
this.addEventListener('nile-lazy-change', this.handleSlotChange);
|
104
|
+
await this.updateComplete;
|
105
|
+
this.mutationObserver = new MutationObserver(this.handleTreeChanged);
|
106
|
+
this.mutationObserver.observe(this, { childList: true, subtree: true });
|
107
|
+
}
|
108
|
+
disconnectedCallback() {
|
109
|
+
super.disconnectedCallback();
|
110
|
+
this.mutationObserver.disconnect();
|
111
|
+
this.removeEventListener('focusin', this.handleFocusIn);
|
112
|
+
this.removeEventListener('focusout', this.handleFocusOut);
|
113
|
+
this.removeEventListener('nile-lazy-change', this.handleSlotChange);
|
114
|
+
}
|
115
|
+
// Generates a clone of the expand icon element to use for each tree item
|
116
|
+
getExpandButtonIcon(status) {
|
117
|
+
const slot = status === 'expand' ? this.expandedIconSlot : this.collapsedIconSlot;
|
118
|
+
const icon = slot.assignedElements({ flatten: true })[0];
|
119
|
+
// Clone it, remove ids, and slot it
|
120
|
+
if (icon) {
|
121
|
+
const clone = icon.cloneNode(true);
|
122
|
+
[clone, ...clone.querySelectorAll('[id]')].forEach(el => el.removeAttribute('id'));
|
123
|
+
clone.setAttribute('data-default', '');
|
124
|
+
clone.slot = `${status}-icon`;
|
125
|
+
return clone;
|
126
|
+
}
|
127
|
+
return null;
|
128
|
+
}
|
129
|
+
handleTreeChanged(mutations) {
|
130
|
+
for (const mutation of mutations) {
|
131
|
+
const addedNodes = [...mutation.addedNodes].filter(NileTreeItem.isTreeItem);
|
132
|
+
const removedNodes = [...mutation.removedNodes].filter(NileTreeItem.isTreeItem);
|
133
|
+
addedNodes.forEach(this.initTreeItem);
|
134
|
+
// If the focused item has been removed form the DOM, move the focus to the first focusable item
|
135
|
+
if (removedNodes.includes(this.lastFocusedItem)) {
|
136
|
+
this.focusItem(this.getFocusableItems()[0]);
|
137
|
+
}
|
138
|
+
}
|
139
|
+
}
|
140
|
+
syncTreeItems(selectedItem) {
|
141
|
+
const items = this.getAllTreeItems();
|
142
|
+
if (this.selection === 'multiple') {
|
143
|
+
syncCheckboxes(selectedItem);
|
144
|
+
}
|
145
|
+
else {
|
146
|
+
for (const item of items) {
|
147
|
+
if (item !== selectedItem) {
|
148
|
+
item.selected = false;
|
149
|
+
}
|
150
|
+
}
|
151
|
+
}
|
152
|
+
}
|
153
|
+
selectItem(selectedItem) {
|
154
|
+
const previousSelection = [...this.selectedItems];
|
155
|
+
if (this.selection === 'multiple') {
|
156
|
+
selectedItem.selected = !selectedItem.selected;
|
157
|
+
if (selectedItem.lazy) {
|
158
|
+
selectedItem.expanded = true;
|
159
|
+
}
|
160
|
+
this.syncTreeItems(selectedItem);
|
161
|
+
}
|
162
|
+
else if (this.selection === 'single' || selectedItem.isLeaf) {
|
163
|
+
selectedItem.expanded = !selectedItem.expanded;
|
164
|
+
selectedItem.selected = true;
|
165
|
+
this.syncTreeItems(selectedItem);
|
166
|
+
}
|
167
|
+
else if (this.selection === 'leaf') {
|
168
|
+
selectedItem.expanded = !selectedItem.expanded;
|
169
|
+
}
|
170
|
+
const nextSelection = this.selectedItems;
|
171
|
+
if (previousSelection.length !== nextSelection.length ||
|
172
|
+
nextSelection.some(item => !previousSelection.includes(item))) {
|
173
|
+
// Wait for the tree items' DOM to update before emitting
|
174
|
+
Promise.all(nextSelection.map(el => el.updateComplete)).then(() => {
|
175
|
+
this.emit('nile-selection-change', { detail: { selection: nextSelection } });
|
176
|
+
});
|
177
|
+
}
|
178
|
+
}
|
179
|
+
getAllTreeItems() {
|
180
|
+
return [...this.querySelectorAll('nile-tree-item')];
|
181
|
+
}
|
182
|
+
focusItem(item) {
|
183
|
+
item?.focus();
|
184
|
+
}
|
185
|
+
handleKeyDown(event) {
|
186
|
+
if (!['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft', 'Home', 'End', 'Enter', ' '].includes(event.key)) {
|
187
|
+
return;
|
188
|
+
}
|
189
|
+
const items = this.getFocusableItems();
|
190
|
+
const isLtr = true;
|
191
|
+
const isRtl = false;
|
192
|
+
if (items.length > 0) {
|
193
|
+
event.preventDefault();
|
194
|
+
const activeItemIndex = items.findIndex(item => item.matches(':focus'));
|
195
|
+
const activeItem = items[activeItemIndex];
|
196
|
+
const focusItemAt = (index) => {
|
197
|
+
const item = items[clamp(index, 0, items.length - 1)];
|
198
|
+
this.focusItem(item);
|
199
|
+
};
|
200
|
+
const toggleExpand = (expanded) => {
|
201
|
+
activeItem.expanded = expanded;
|
202
|
+
};
|
203
|
+
if (event.key === 'ArrowDown') {
|
204
|
+
// Moves focus to the next node that is focusable without opening or closing a node.
|
205
|
+
focusItemAt(activeItemIndex + 1);
|
206
|
+
}
|
207
|
+
else if (event.key === 'ArrowUp') {
|
208
|
+
// Moves focus to the next node that is focusable without opening or closing a node.
|
209
|
+
focusItemAt(activeItemIndex - 1);
|
210
|
+
}
|
211
|
+
else if ((isLtr && event.key === 'ArrowRight') || (isRtl && event.key === 'ArrowLeft')) {
|
212
|
+
//
|
213
|
+
// When focus is on a closed node, opens the node; focus does not move.
|
214
|
+
// When focus is on a open node, moves focus to the first child node.
|
215
|
+
// When focus is on an end node (a tree item with no children), does nothing.
|
216
|
+
//
|
217
|
+
if (!activeItem || activeItem.disabled || activeItem.expanded || (activeItem.isLeaf && !activeItem.lazy)) {
|
218
|
+
focusItemAt(activeItemIndex + 1);
|
219
|
+
}
|
220
|
+
else {
|
221
|
+
toggleExpand(true);
|
222
|
+
}
|
223
|
+
}
|
224
|
+
else if ((isLtr && event.key === 'ArrowLeft') || (isRtl && event.key === 'ArrowRight')) {
|
225
|
+
//
|
226
|
+
// When focus is on an open node, closes the node.
|
227
|
+
// When focus is on a child node that is also either an end node or a closed node, moves focus to its parent node.
|
228
|
+
// When focus is on a closed `tree`, does nothing.
|
229
|
+
//
|
230
|
+
if (!activeItem || activeItem.disabled || activeItem.isLeaf || !activeItem.expanded) {
|
231
|
+
focusItemAt(activeItemIndex - 1);
|
232
|
+
}
|
233
|
+
else {
|
234
|
+
toggleExpand(false);
|
235
|
+
}
|
236
|
+
}
|
237
|
+
else if (event.key === 'Home') {
|
238
|
+
// Moves focus to the first node in the tree without opening or closing a node.
|
239
|
+
focusItemAt(0);
|
240
|
+
}
|
241
|
+
else if (event.key === 'End') {
|
242
|
+
// Moves focus to the last node in the tree that is focusable without opening the node.
|
243
|
+
focusItemAt(items.length - 1);
|
244
|
+
}
|
245
|
+
else if (event.key === 'Enter' || event.key === ' ') {
|
246
|
+
// Selects the focused node.
|
247
|
+
if (!activeItem.disabled) {
|
248
|
+
this.selectItem(activeItem);
|
249
|
+
}
|
250
|
+
}
|
251
|
+
}
|
252
|
+
}
|
253
|
+
handleClick(event) {
|
254
|
+
const target = event.target;
|
255
|
+
const treeItem = target.closest('nile-tree-item');
|
256
|
+
const isExpandButton = event
|
257
|
+
.composedPath()
|
258
|
+
.some((el) => el?.classList?.contains('tree-item__expand-button'));
|
259
|
+
//
|
260
|
+
// Don't Do anything if there's no tree item, if it's disabled, or if the click doesn't match the initial target
|
261
|
+
// from mousedown. The latter case prevents the user from starting a click on one item and ending it on another,
|
262
|
+
// causing the parent node to collapse.
|
263
|
+
//
|
264
|
+
if (!treeItem || treeItem.disabled || target !== this.clickTarget) {
|
265
|
+
return;
|
266
|
+
}
|
267
|
+
if (this.selection === 'multiple' && isExpandButton) {
|
268
|
+
treeItem.expanded = !treeItem.expanded;
|
269
|
+
}
|
270
|
+
else {
|
271
|
+
this.selectItem(treeItem);
|
272
|
+
}
|
273
|
+
}
|
274
|
+
handleMouseDown(event) {
|
275
|
+
// Record the click target so we know which item the click initially targeted
|
276
|
+
this.clickTarget = event.target;
|
277
|
+
}
|
278
|
+
handleFocusOut(event) {
|
279
|
+
const relatedTarget = event.relatedTarget;
|
280
|
+
// If the element that got the focus is not in the tree
|
281
|
+
if (!relatedTarget || !this.contains(relatedTarget)) {
|
282
|
+
this.tabIndex = 0;
|
283
|
+
}
|
284
|
+
}
|
285
|
+
handleFocusIn(event) {
|
286
|
+
const target = event.target;
|
287
|
+
// If the tree has been focused, move the focus to the last focused item
|
288
|
+
if (event.target === this) {
|
289
|
+
this.focusItem(this.lastFocusedItem || this.getAllTreeItems()[0]);
|
290
|
+
}
|
291
|
+
// If the target is a tree item, update the tabindex
|
292
|
+
if (NileTreeItem.isTreeItem(target) && !target.disabled) {
|
293
|
+
if (this.lastFocusedItem) {
|
294
|
+
this.lastFocusedItem.tabIndex = -1;
|
295
|
+
}
|
296
|
+
this.lastFocusedItem = target;
|
297
|
+
this.tabIndex = -1;
|
298
|
+
target.tabIndex = 0;
|
299
|
+
}
|
300
|
+
}
|
301
|
+
handleSlotChange() {
|
302
|
+
const items = this.getAllTreeItems();
|
303
|
+
items.forEach(this.initTreeItem);
|
304
|
+
}
|
305
|
+
async handleSelectionChange() {
|
306
|
+
const isSelectionMultiple = this.selection === 'multiple';
|
307
|
+
const items = this.getAllTreeItems();
|
308
|
+
this.setAttribute('aria-multiselectable', isSelectionMultiple ? 'true' : 'false');
|
309
|
+
for (const item of items) {
|
310
|
+
item.selectable = isSelectionMultiple;
|
311
|
+
}
|
312
|
+
if (isSelectionMultiple) {
|
313
|
+
await this.updateComplete;
|
314
|
+
[...this.querySelectorAll(':scope > nile-tree-item')].forEach((treeItem) => syncCheckboxes(treeItem, true));
|
315
|
+
}
|
316
|
+
}
|
317
|
+
/** @internal Returns the list of tree items that are selected in the tree. */
|
318
|
+
get selectedItems() {
|
319
|
+
const items = this.getAllTreeItems();
|
320
|
+
const isSelected = (item) => item.selected;
|
321
|
+
return items.filter(isSelected);
|
322
|
+
}
|
323
|
+
/** @internal Gets focusable tree items in the tree. */
|
324
|
+
getFocusableItems() {
|
325
|
+
const items = this.getAllTreeItems();
|
326
|
+
const collapsedItems = new Set();
|
327
|
+
return items.filter(item => {
|
328
|
+
// Exclude disabled elements
|
329
|
+
if (item.disabled)
|
330
|
+
return false;
|
331
|
+
// Exclude those whose parent is collapsed or loading
|
332
|
+
const parent = item.parentElement?.closest('[role=treeitem]');
|
333
|
+
if (parent && (!parent.expanded || parent.loading || collapsedItems.has(parent))) {
|
334
|
+
collapsedItems.add(item);
|
335
|
+
}
|
336
|
+
return !collapsedItems.has(item);
|
337
|
+
});
|
338
|
+
}
|
339
|
+
render() {
|
340
|
+
return html `
|
341
|
+
<div
|
342
|
+
part="base"
|
343
|
+
class="tree"
|
344
|
+
@click=${this.handleClick}
|
345
|
+
@keydown=${this.handleKeyDown}
|
346
|
+
@mousedown=${this.handleMouseDown}
|
347
|
+
>
|
348
|
+
<slot @slotchange=${this.handleSlotChange}></slot>
|
349
|
+
<slot name="expand-icon" hidden aria-hidden="true"> </slot>
|
350
|
+
<slot name="collapse-icon" hidden aria-hidden="true"> </slot>
|
351
|
+
</div>
|
352
|
+
`;
|
353
|
+
}
|
354
|
+
};
|
355
|
+
NileTree.styles = styles;
|
356
|
+
__decorate([
|
357
|
+
query('slot:not([name])')
|
358
|
+
], NileTree.prototype, "defaultSlot", void 0);
|
359
|
+
__decorate([
|
360
|
+
query('slot[name=expand-icon]')
|
361
|
+
], NileTree.prototype, "expandedIconSlot", void 0);
|
362
|
+
__decorate([
|
363
|
+
query('slot[name=collapse-icon]')
|
364
|
+
], NileTree.prototype, "collapsedIconSlot", void 0);
|
365
|
+
__decorate([
|
366
|
+
property()
|
367
|
+
], NileTree.prototype, "selection", void 0);
|
368
|
+
__decorate([
|
369
|
+
watch('selection')
|
370
|
+
], NileTree.prototype, "handleSelectionChange", null);
|
371
|
+
NileTree = __decorate([
|
372
|
+
customElement('nile-tree')
|
373
|
+
], NileTree);
|
374
|
+
export { NileTree };
|
375
|
+
export default NileTree;
|
376
|
+
//# sourceMappingURL=nile-tree.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"nile-tree.js","sourceRoot":"","sources":["../../../src/nile-tree/nile-tree.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {LitElement, CSSResultArray, TemplateResult} from 'lit-element';\nimport {styles} from './nile-tree.css';\nimport NileElement from '../internal/nile-element';\nimport { clamp } from '../internal/math';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { html } from 'lit';\nimport { watch } from '../internal/watch';\nimport NileTreeItem from '../nile-tree-item/nile-tree-item';\nimport type { CSSResultGroup } from 'lit';\n\nfunction syncCheckboxes(changedTreeItem: NileTreeItem, initialSync = false) {\n function syncParentItem(treeItem: NileTreeItem) {\n const children = treeItem.getChildrenItems({ includeDisabled: false });\n\n if (children.length) {\n const allChecked = children.every(item => item.selected);\n const allUnchecked = children.every(item => !item.selected && !item.indeterminate);\n\n treeItem.selected = allChecked;\n treeItem.indeterminate = !allChecked && !allUnchecked;\n }\n }\n\n function syncAncestors(treeItem: NileTreeItem) {\n const parentItem: NileTreeItem | null = treeItem.parentElement as NileTreeItem;\n\n if (NileTreeItem.isTreeItem(parentItem)) {\n syncParentItem(parentItem);\n syncAncestors(parentItem);\n }\n }\n\n function syncDescendants(treeItem: NileTreeItem) {\n for (const childItem of treeItem.getChildrenItems()) {\n childItem.selected = initialSync\n ? treeItem.selected || childItem.selected\n : !childItem.disabled && treeItem.selected;\n\n syncDescendants(childItem);\n }\n\n if (initialSync) {\n syncParentItem(treeItem);\n }\n }\n\n syncDescendants(changedTreeItem);\n syncAncestors(changedTreeItem);\n}\n\n\n/**\n * @summary Trees allow you to display a hierarchical list of selectable [tree items](/components/tree-item). Items with children can be expanded and collapsed as desired by the user.\n *\n * @event {{ selection: NileTreeItem[] }} nile-selection-change - Emitted when a tree item is selected or deselected.\n *\n * @slot - The default slot.\n * @slot expand-icon - The icon to show when the tree item is expanded. Works best with `<nile-icon>`.\n * @slot collapse-icon - The icon to show when the tree item is collapsed. Works best with `<nile-icon>`.\n *\n * @csspart base - The component's base wrapper.\n *\n * @cssproperty [--indent-size=var(--nile-spacing-medium)] - The size of the indentation for nested items.\n * @cssproperty [--indent-guide-color=var(--nile-color-neutral-200)] - The color of the indentation line.\n * @cssproperty [--indent-guide-offset=0] - The amount of vertical spacing to leave between the top and bottom of the\n * indentation line's starting position.\n * @cssproperty [--indent-guide-style=solid] - The style of the indentation line, e.g. solid, dotted, dashed.\n * @cssproperty [--indent-guide-width=0] - The width of the indentation line.\n */\n\n@customElement('nile-tree')\nexport class NileTree extends NileElement {\n\n\tstatic styles: CSSResultGroup = styles;\n\n @query('slot:not([name])') defaultSlot: HTMLSlotElement;\n @query('slot[name=expand-icon]') expandedIconSlot: HTMLSlotElement;\n @query('slot[name=collapse-icon]') collapsedIconSlot: HTMLSlotElement;\n\n /**\n * The selection behavior of the tree. Single selection allows only one node to be selected at a time. Multiple\n * displays checkboxes and allows more than one node to be selected. Leaf allows only leaf nodes to be selected.\n */\n @property() selection: 'single' | 'multiple' | 'leaf' = 'leaf';\n\n //\n // A collection of all the items in the tree, in the order they appear. The collection is live, meaning it is\n // automatically updated when the underlying document is changed.\n //\n private lastFocusedItem: NileTreeItem;\n private mutationObserver: MutationObserver;\n private clickTarget: NileTreeItem | null = null;\n\n async connectedCallback() {\n super.connectedCallback();\n this.handleTreeChanged = this.handleTreeChanged.bind(this);\n this.handleFocusIn = this.handleFocusIn.bind(this);\n this.handleFocusOut = this.handleFocusOut.bind(this);\n\n this.setAttribute('role', 'tree');\n this.setAttribute('tabindex', '0');\n\n this.addEventListener('focusin', this.handleFocusIn);\n this.addEventListener('focusout', this.handleFocusOut);\n this.addEventListener('nile-lazy-change', this.handleSlotChange);\n\n await this.updateComplete;\n\n this.mutationObserver = new MutationObserver(this.handleTreeChanged);\n this.mutationObserver.observe(this, { childList: true, subtree: true });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n this.mutationObserver.disconnect();\n\n this.removeEventListener('focusin', this.handleFocusIn);\n this.removeEventListener('focusout', this.handleFocusOut);\n this.removeEventListener('nile-lazy-change', this.handleSlotChange);\n }\n\n // Generates a clone of the expand icon element to use for each tree item\n private getExpandButtonIcon(status: 'expand' | 'collapse') {\n const slot = status === 'expand' ? this.expandedIconSlot : this.collapsedIconSlot;\n const icon = slot.assignedElements({ flatten: true })[0] as HTMLElement;\n\n // Clone it, remove ids, and slot it\n if (icon) {\n const clone = icon.cloneNode(true) as HTMLElement;\n [clone, ...clone.querySelectorAll('[id]')].forEach(el => el.removeAttribute('id'));\n clone.setAttribute('data-default', '');\n clone.slot = `${status}-icon`;\n\n return clone;\n }\n\n return null;\n }\n\n // Initializes new items by setting the `selectable` property and the expanded/collapsed icons if any\n private initTreeItem = (item: NileTreeItem) => {\n item.selectable = this.selection === 'multiple';\n\n ['expand', 'collapse']\n .filter(status => !!this.querySelector(`[slot=\"${status}-icon\"]`))\n .forEach((status: 'expand' | 'collapse') => {\n const existingIcon = item.querySelector(`[slot=\"${status}-icon\"]`);\n\n if (existingIcon === null) {\n // No separator exists, add one\n item.append(this.getExpandButtonIcon(status)!);\n } else if (existingIcon.hasAttribute('data-default')) {\n // A default separator exists, replace it\n existingIcon.replaceWith(this.getExpandButtonIcon(status)!);\n } else {\n // The user provided a custom icon, leave it alone\n }\n });\n };\n\n private handleTreeChanged(mutations: MutationRecord[]) {\n for (const mutation of mutations) {\n const addedNodes: NileTreeItem[] = [...mutation.addedNodes].filter(NileTreeItem.isTreeItem) as NileTreeItem[];\n const removedNodes = [...mutation.removedNodes].filter(NileTreeItem.isTreeItem) as NileTreeItem[];\n\n addedNodes.forEach(this.initTreeItem);\n\n // If the focused item has been removed form the DOM, move the focus to the first focusable item\n if (removedNodes.includes(this.lastFocusedItem)) {\n this.focusItem(this.getFocusableItems()[0]);\n }\n }\n }\n\n private syncTreeItems(selectedItem: NileTreeItem) {\n const items = this.getAllTreeItems();\n\n if (this.selection === 'multiple') {\n syncCheckboxes(selectedItem);\n } else {\n for (const item of items) {\n if (item !== selectedItem) {\n item.selected = false;\n }\n }\n }\n }\n\n private selectItem(selectedItem: NileTreeItem) {\n const previousSelection = [...this.selectedItems];\n\n if (this.selection === 'multiple') {\n selectedItem.selected = !selectedItem.selected;\n if (selectedItem.lazy) {\n selectedItem.expanded = true;\n }\n this.syncTreeItems(selectedItem);\n } else if (this.selection === 'single' || selectedItem.isLeaf) {\n selectedItem.expanded = !selectedItem.expanded;\n selectedItem.selected = true;\n\n this.syncTreeItems(selectedItem);\n } else if (this.selection === 'leaf') {\n selectedItem.expanded = !selectedItem.expanded;\n }\n\n const nextSelection = this.selectedItems;\n\n if (\n previousSelection.length !== nextSelection.length ||\n nextSelection.some(item => !previousSelection.includes(item))\n ) {\n // Wait for the tree items' DOM to update before emitting\n Promise.all(nextSelection.map(el => el.updateComplete)).then(() => {\n this.emit('nile-selection-change', { detail: { selection: nextSelection } });\n });\n }\n }\n\n private getAllTreeItems() {\n return [...this.querySelectorAll<NileTreeItem>('nile-tree-item')];\n }\n\n private focusItem(item?: NileTreeItem | null) {\n item?.focus();\n }\n\n private handleKeyDown(event: KeyboardEvent) {\n if (!['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft', 'Home', 'End', 'Enter', ' '].includes(event.key)) {\n return;\n }\n\n const items = this.getFocusableItems();\n const isLtr = true;\n const isRtl = false;\n\n if (items.length > 0) {\n event.preventDefault();\n const activeItemIndex = items.findIndex(item => item.matches(':focus'));\n const activeItem: NileTreeItem | undefined = items[activeItemIndex];\n\n const focusItemAt = (index: number) => {\n const item = items[clamp(index, 0, items.length - 1)];\n this.focusItem(item);\n };\n const toggleExpand = (expanded: boolean) => {\n activeItem.expanded = expanded;\n };\n\n if (event.key === 'ArrowDown') {\n // Moves focus to the next node that is focusable without opening or closing a node.\n focusItemAt(activeItemIndex + 1);\n } else if (event.key === 'ArrowUp') {\n // Moves focus to the next node that is focusable without opening or closing a node.\n focusItemAt(activeItemIndex - 1);\n } else if ((isLtr && event.key === 'ArrowRight') || (isRtl && event.key === 'ArrowLeft')) {\n //\n // When focus is on a closed node, opens the node; focus does not move.\n // When focus is on a open node, moves focus to the first child node.\n // When focus is on an end node (a tree item with no children), does nothing.\n //\n if (!activeItem || activeItem.disabled || activeItem.expanded || (activeItem.isLeaf && !activeItem.lazy)) {\n focusItemAt(activeItemIndex + 1);\n } else {\n toggleExpand(true);\n }\n } else if ((isLtr && event.key === 'ArrowLeft') || (isRtl && event.key === 'ArrowRight')) {\n //\n // When focus is on an open node, closes the node.\n // When focus is on a child node that is also either an end node or a closed node, moves focus to its parent node.\n // When focus is on a closed `tree`, does nothing.\n //\n if (!activeItem || activeItem.disabled || activeItem.isLeaf || !activeItem.expanded) {\n focusItemAt(activeItemIndex - 1);\n } else {\n toggleExpand(false);\n }\n } else if (event.key === 'Home') {\n // Moves focus to the first node in the tree without opening or closing a node.\n focusItemAt(0);\n } else if (event.key === 'End') {\n // Moves focus to the last node in the tree that is focusable without opening the node.\n focusItemAt(items.length - 1);\n } else if (event.key === 'Enter' || event.key === ' ') {\n // Selects the focused node.\n if (!activeItem.disabled) {\n this.selectItem(activeItem);\n }\n }\n }\n }\n\n private handleClick(event: Event) {\n const target = event.target as NileTreeItem;\n const treeItem = target.closest('nile-tree-item')!;\n const isExpandButton = event\n .composedPath()\n .some((el: HTMLElement) => el?.classList?.contains('tree-item__expand-button'));\n\n //\n // Don't Do anything if there's no tree item, if it's disabled, or if the click doesn't match the initial target\n // from mousedown. The latter case prevents the user from starting a click on one item and ending it on another,\n // causing the parent node to collapse.\n //\n if (!treeItem || treeItem.disabled || target !== this.clickTarget) {\n return;\n }\n\n if (this.selection === 'multiple' && isExpandButton) {\n treeItem.expanded = !treeItem.expanded;\n } else {\n this.selectItem(treeItem);\n }\n }\n\n handleMouseDown(event: MouseEvent) {\n // Record the click target so we know which item the click initially targeted\n this.clickTarget = event.target as NileTreeItem;\n }\n\n private handleFocusOut(event: FocusEvent) {\n const relatedTarget = event.relatedTarget as HTMLElement;\n\n // If the element that got the focus is not in the tree\n if (!relatedTarget || !this.contains(relatedTarget)) {\n this.tabIndex = 0;\n }\n }\n\n private handleFocusIn(event: FocusEvent) {\n const target = event.target as NileTreeItem;\n\n // If the tree has been focused, move the focus to the last focused item\n if (event.target === this) {\n this.focusItem(this.lastFocusedItem || this.getAllTreeItems()[0]);\n }\n\n // If the target is a tree item, update the tabindex\n if (NileTreeItem.isTreeItem(target) && !target.disabled) {\n if (this.lastFocusedItem) {\n this.lastFocusedItem.tabIndex = -1;\n }\n this.lastFocusedItem = target;\n this.tabIndex = -1;\n\n target.tabIndex = 0;\n }\n }\n\n private handleSlotChange() {\n const items = this.getAllTreeItems();\n items.forEach(this.initTreeItem);\n }\n\n @watch('selection')\n async handleSelectionChange() {\n const isSelectionMultiple = this.selection === 'multiple';\n const items = this.getAllTreeItems();\n\n this.setAttribute('aria-multiselectable', isSelectionMultiple ? 'true' : 'false');\n\n for (const item of items) {\n item.selectable = isSelectionMultiple;\n }\n\n if (isSelectionMultiple) {\n await this.updateComplete;\n\n [...this.querySelectorAll(':scope > nile-tree-item')].forEach((treeItem: NileTreeItem) =>\n syncCheckboxes(treeItem, true)\n );\n }\n }\n\n /** @internal Returns the list of tree items that are selected in the tree. */\n get selectedItems(): NileTreeItem[] {\n const items = this.getAllTreeItems();\n const isSelected = (item: NileTreeItem) => item.selected;\n\n return items.filter(isSelected);\n }\n\n /** @internal Gets focusable tree items in the tree. */\n getFocusableItems() {\n const items = this.getAllTreeItems();\n const collapsedItems = new Set();\n\n return items.filter(item => {\n // Exclude disabled elements\n if (item.disabled) return false;\n\n // Exclude those whose parent is collapsed or loading\n const parent: NileTreeItem | null | undefined = item.parentElement?.closest('[role=treeitem]');\n if (parent && (!parent.expanded || parent.loading || collapsedItems.has(parent))) {\n collapsedItems.add(item);\n }\n\n return !collapsedItems.has(item);\n });\n }\n\n render() {\n return html`\n <div\n part=\"base\"\n class=\"tree\"\n @click=${this.handleClick}\n @keydown=${this.handleKeyDown}\n @mousedown=${this.handleMouseDown}\n >\n <slot @slotchange=${this.handleSlotChange}></slot>\n <slot name=\"expand-icon\" hidden aria-hidden=\"true\"> </slot>\n <slot name=\"collapse-icon\" hidden aria-hidden=\"true\"> </slot>\n </div>\n `;\n }\n}\n\nexport default NileTree;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-tree': NileTree;\n }\n}\n"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
export { NileTreeItem } from './nile-tree-item';
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nile-tree-item/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC","sourcesContent":["export { NileTreeItem } from './nile-tree-item';"]}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright Aquera Inc 2023
|
3
|
+
*
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
6
|
+
*/
|
7
|
+
/**
|
8
|
+
* TreeItem CSS
|
9
|
+
*/
|
10
|
+
export declare const styles: import("lit-element").CSSResult;
|
11
|
+
declare const _default: import("lit-element").CSSResult[];
|
12
|
+
export default _default;
|
@@ -0,0 +1,176 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright Aquera Inc 2023
|
3
|
+
*
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
6
|
+
*/
|
7
|
+
import { css } from 'lit-element';
|
8
|
+
/**
|
9
|
+
* TreeItem CSS
|
10
|
+
*/
|
11
|
+
export const styles = css `
|
12
|
+
:host {
|
13
|
+
box-sizing: border-box;
|
14
|
+
}
|
15
|
+
|
16
|
+
:host *,
|
17
|
+
:host *::before,
|
18
|
+
:host *::after {
|
19
|
+
box-sizing: inherit;
|
20
|
+
}
|
21
|
+
|
22
|
+
[hidden] {
|
23
|
+
display: none !important;
|
24
|
+
}
|
25
|
+
|
26
|
+
:host {
|
27
|
+
display: block;
|
28
|
+
outline: 0;
|
29
|
+
z-index: 0;
|
30
|
+
}
|
31
|
+
|
32
|
+
:host(:focus) {
|
33
|
+
outline: none;
|
34
|
+
}
|
35
|
+
|
36
|
+
slot:not([name])::slotted(nile-icon) {
|
37
|
+
margin-inline-end: 0.5rem;
|
38
|
+
}
|
39
|
+
|
40
|
+
.tree-item {
|
41
|
+
position: relative;
|
42
|
+
display: flex;
|
43
|
+
align-items: stretch;
|
44
|
+
flex-direction: column;
|
45
|
+
color: #777D82;
|
46
|
+
cursor: pointer;
|
47
|
+
user-select: none;
|
48
|
+
}
|
49
|
+
|
50
|
+
.tree-item__checkbox {
|
51
|
+
pointer-events: none;
|
52
|
+
}
|
53
|
+
|
54
|
+
.tree-item__expand-button,
|
55
|
+
.tree-item__checkbox,
|
56
|
+
.tree-item__label {
|
57
|
+
font-family: var(--nile-font-family-serif);
|
58
|
+
font-size: 16px;
|
59
|
+
font-weight: 400;
|
60
|
+
}
|
61
|
+
|
62
|
+
.tree-item__checkbox::part(base) {
|
63
|
+
display: flex;
|
64
|
+
align-items: center;
|
65
|
+
}
|
66
|
+
|
67
|
+
.tree-item__indentation {
|
68
|
+
display: block;
|
69
|
+
width: 1em;
|
70
|
+
flex-shrink: 0;
|
71
|
+
}
|
72
|
+
|
73
|
+
.tree-item__expand-button {
|
74
|
+
display: flex;
|
75
|
+
align-items: center;
|
76
|
+
justify-content: center;
|
77
|
+
box-sizing: content-box;
|
78
|
+
color: #C7CED4;
|
79
|
+
padding: 0.5rem;
|
80
|
+
width: 1rem;
|
81
|
+
height: 1rem;
|
82
|
+
flex-shrink: 0;
|
83
|
+
cursor: pointer;
|
84
|
+
}
|
85
|
+
|
86
|
+
.tree-item__expand-button {
|
87
|
+
transition: 250ms rotate ease;
|
88
|
+
}
|
89
|
+
|
90
|
+
.tree-item--expanded .tree-item__expand-button {
|
91
|
+
rotate: 90deg;
|
92
|
+
}
|
93
|
+
|
94
|
+
.tree-item--expanded.tree-item--rtl .tree-item__expand-button {
|
95
|
+
rotate: -90deg;
|
96
|
+
}
|
97
|
+
|
98
|
+
.tree-item--expanded slot[name='expand-icon'],
|
99
|
+
.tree-item:not(.tree-item--expanded) slot[name='collapse-icon'] {
|
100
|
+
display: none;
|
101
|
+
}
|
102
|
+
|
103
|
+
.tree-item:not(.tree-item--has-expand-button) .tree-item__expand-icon-slot {
|
104
|
+
display: none;
|
105
|
+
}
|
106
|
+
|
107
|
+
.tree-item__expand-button--visible {
|
108
|
+
cursor: pointer;
|
109
|
+
}
|
110
|
+
|
111
|
+
.tree-item__item {
|
112
|
+
display: flex;
|
113
|
+
align-items: center;
|
114
|
+
border-inline-start: solid 3px transparent;
|
115
|
+
}
|
116
|
+
|
117
|
+
.tree-item--disabled .tree-item__item {
|
118
|
+
opacity: 0.5;
|
119
|
+
outline: none;
|
120
|
+
cursor: not-allowed;
|
121
|
+
}
|
122
|
+
|
123
|
+
:host(:focus-visible) .tree-item__item {
|
124
|
+
outline: solid 3px #C7CED4;
|
125
|
+
outline-offset: 1px;
|
126
|
+
z-index: 2;
|
127
|
+
}
|
128
|
+
|
129
|
+
:host(:not([aria-disabled='true'])) .tree-item--selected .tree-item__item {
|
130
|
+
background-color: #eaecf0;
|
131
|
+
border-inline-start-color: #035da6;
|
132
|
+
}
|
133
|
+
|
134
|
+
:host(:not([aria-disabled='true'])) .tree-item__expand-button {
|
135
|
+
color: #777D82;
|
136
|
+
}
|
137
|
+
|
138
|
+
.tree-item__label {
|
139
|
+
display: flex;
|
140
|
+
align-items: center;
|
141
|
+
transition: 150ms color;
|
142
|
+
}
|
143
|
+
|
144
|
+
.tree-item__children {
|
145
|
+
display: block;
|
146
|
+
font-size: calc(1em + var(--indent-size, 1rem));
|
147
|
+
}
|
148
|
+
|
149
|
+
/* Indentation lines */
|
150
|
+
.tree-item__children {
|
151
|
+
position: relative;
|
152
|
+
}
|
153
|
+
|
154
|
+
.tree-item__children::before {
|
155
|
+
content: '';
|
156
|
+
position: absolute;
|
157
|
+
top: var(--indent-guide-offset);
|
158
|
+
bottom: var(--indent-guide-offset);
|
159
|
+
left: calc(1em - (var(--indent-guide-width) / 2) - 1px);
|
160
|
+
border-inline-end: var(--indent-guide-width) var(--indent-guide-style) var(--indent-guide-color);
|
161
|
+
z-index: 1;
|
162
|
+
}
|
163
|
+
|
164
|
+
.tree-item--rtl .tree-item__children::before {
|
165
|
+
left: auto;
|
166
|
+
right: 1em;
|
167
|
+
}
|
168
|
+
|
169
|
+
@media (forced-colors: active) {
|
170
|
+
:host(:not([aria-disabled='true'])) .tree-item--selected .tree-item__item {
|
171
|
+
outline: dashed 1px SelectedItem;
|
172
|
+
}
|
173
|
+
}
|
174
|
+
`;
|
175
|
+
export default [styles];
|
176
|
+
//# sourceMappingURL=nile-tree-item.css.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"nile-tree-item.css.js","sourceRoot":"","sources":["../../../src/nile-tree-item/nile-tree-item.css.ts"],"names":[],"mappings":"AAAA;;;;;EAKE;AAEF,OAAO,EAAC,GAAG,EAAC,MAAM,aAAa,CAAC;AAEhC;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmKxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n* Copyright Aquera Inc 2023\n*\n* This source code is licensed under the BSD-3-Clause license found in the\n* LICENSE file in the root directory of this source tree.\n*/\n\nimport {css} from 'lit-element';\n\n/**\n * TreeItem CSS\n */\nexport const styles = css`\n :host {\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit;\n }\n\n [hidden] {\n display: none !important;\n }\n\n :host {\n display: block;\n outline: 0;\n z-index: 0;\n }\n\n :host(:focus) {\n outline: none;\n }\n\n slot:not([name])::slotted(nile-icon) {\n margin-inline-end: 0.5rem;\n }\n\n .tree-item {\n position: relative;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n color: #777D82;\n cursor: pointer;\n user-select: none;\n }\n\n .tree-item__checkbox {\n pointer-events: none;\n }\n\n .tree-item__expand-button,\n .tree-item__checkbox,\n .tree-item__label {\n font-family: var(--nile-font-family-serif);\n font-size: 16px;\n font-weight: 400;\n }\n\n .tree-item__checkbox::part(base) {\n display: flex;\n align-items: center;\n }\n\n .tree-item__indentation {\n display: block;\n width: 1em;\n flex-shrink: 0;\n }\n\n .tree-item__expand-button {\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: content-box;\n color: #C7CED4;\n padding: 0.5rem;\n width: 1rem;\n height: 1rem;\n flex-shrink: 0;\n cursor: pointer;\n }\n\n .tree-item__expand-button {\n transition: 250ms rotate ease;\n }\n\n .tree-item--expanded .tree-item__expand-button {\n rotate: 90deg;\n }\n\n .tree-item--expanded.tree-item--rtl .tree-item__expand-button {\n rotate: -90deg;\n }\n\n .tree-item--expanded slot[name='expand-icon'],\n .tree-item:not(.tree-item--expanded) slot[name='collapse-icon'] {\n display: none;\n }\n\n .tree-item:not(.tree-item--has-expand-button) .tree-item__expand-icon-slot {\n display: none;\n }\n\n .tree-item__expand-button--visible {\n cursor: pointer;\n }\n\n .tree-item__item {\n display: flex;\n align-items: center;\n border-inline-start: solid 3px transparent;\n }\n\n .tree-item--disabled .tree-item__item {\n opacity: 0.5;\n outline: none;\n cursor: not-allowed;\n }\n\n :host(:focus-visible) .tree-item__item {\n outline: solid 3px #C7CED4;\n outline-offset: 1px;\n z-index: 2;\n }\n\n :host(:not([aria-disabled='true'])) .tree-item--selected .tree-item__item {\n background-color: #eaecf0;\n border-inline-start-color: #035da6;\n }\n\n :host(:not([aria-disabled='true'])) .tree-item__expand-button {\n color: #777D82;\n }\n\n .tree-item__label {\n display: flex;\n align-items: center;\n transition: 150ms color;\n }\n\n .tree-item__children {\n display: block;\n font-size: calc(1em + var(--indent-size, 1rem));\n }\n\n /* Indentation lines */\n .tree-item__children {\n position: relative;\n }\n\n .tree-item__children::before {\n content: '';\n position: absolute;\n top: var(--indent-guide-offset);\n bottom: var(--indent-guide-offset);\n left: calc(1em - (var(--indent-guide-width) / 2) - 1px);\n border-inline-end: var(--indent-guide-width) var(--indent-guide-style) var(--indent-guide-color);\n z-index: 1;\n }\n\n .tree-item--rtl .tree-item__children::before {\n left: auto;\n right: 1em;\n }\n\n @media (forced-colors: active) {\n :host(:not([aria-disabled='true'])) .tree-item--selected .tree-item__item {\n outline: dashed 1px SelectedItem;\n }\n }\n`;\n\nexport default [styles];\n"]}
|