ngx-tethys 19.0.16 → 19.1.0-next.1
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/CHANGELOG.md +31 -11
- package/README.md +0 -1
- package/action/action.component.d.ts +14 -23
- package/action/actions.component.d.ts +5 -7
- package/affix/affix.component.d.ts +9 -13
- package/alert/alert.component.d.ts +1 -1
- package/anchor/anchor-link.component.d.ts +8 -8
- package/anchor/anchor.component.d.ts +15 -21
- package/arrow-switcher/arrow-switcher.component.d.ts +15 -22
- package/autocomplete/autocomplete.component.d.ts +10 -17
- package/autocomplete/autocomplete.trigger.directive.d.ts +10 -18
- package/avatar/avatar-list/avatar-list.component.d.ts +8 -14
- package/avatar/avatar.component.d.ts +25 -39
- package/back-top/back-top.component.d.ts +9 -12
- package/badge/badge.component.d.ts +19 -59
- package/breadcrumb/breadcrumb.component.d.ts +15 -20
- package/button/button-group.component.d.ts +5 -12
- package/button/button-icon.component.d.ts +14 -27
- package/button/button.component.d.ts +17 -26
- package/calendar/calendar-header.component.d.ts +9 -8
- package/calendar/calendar.component.d.ts +16 -16
- package/card/card.component.d.ts +5 -11
- package/card/content.component.d.ts +3 -8
- package/card/header.component.d.ts +7 -8
- package/carousel/carousel.component.d.ts +22 -27
- package/cascader/cascader-li.component.d.ts +13 -21
- package/cascader/cascader-search-option.component.d.ts +8 -16
- package/cascader/cascader.component.d.ts +58 -80
- package/checkbox/checkbox.component.d.ts +2 -5
- package/collapse/collapse-item.component.d.ts +12 -19
- package/collapse/collapse.component.d.ts +6 -12
- package/collapse/collapse.token.d.ts +3 -3
- package/color-picker/color-picker-custom-panel.component.d.ts +5 -5
- package/color-picker/color-picker-panel.component.d.ts +7 -11
- package/color-picker/color-picker.component.d.ts +19 -35
- package/color-picker/parts/alpha/alpha.component.d.ts +8 -8
- package/color-picker/parts/hue/hue.component.d.ts +6 -6
- package/color-picker/parts/indicator/indicator.component.d.ts +4 -3
- package/color-picker/parts/inputs/inputs.component.d.ts +9 -9
- package/color-picker/parts/saturation/saturation.component.d.ts +9 -9
- package/comment/comment.component.d.ts +4 -5
- package/copy/copy.directive.d.ts +8 -9
- package/date-picker/abstract-picker.component.d.ts +8 -7
- package/date-picker/lib/calendar/calendar-footer.component.d.ts +2 -1
- package/date-picker/lib/popups/inner-popup.component.d.ts +2 -1
- package/date-picker/picker.component.d.ts +2 -1
- package/date-range/date-range.component.d.ts +2 -2
- package/dialog/body/dialog-body.component.d.ts +2 -6
- package/dialog/confirm/confirm.component.d.ts +2 -2
- package/dialog/footer/dialog-footer.component.d.ts +6 -9
- package/dialog/header/dialog-header.component.d.ts +9 -11
- package/divider/divider.component.d.ts +12 -16
- package/dot/dot.component.d.ts +5 -13
- package/drag-drop/drag-handle.directive.d.ts +2 -1
- package/drag-drop/drag.directive.d.ts +2 -1
- package/drag-drop/drop-container.directive.d.ts +2 -1
- package/dropdown/dropdown-active.directive.d.ts +4 -5
- package/dropdown/dropdown-menu-item.directive.d.ts +7 -14
- package/dropdown/dropdown-menu.component.d.ts +6 -12
- package/dropdown/dropdown-submenu.component.d.ts +2 -4
- package/dropdown/dropdown.directive.d.ts +14 -24
- package/empty/empty.component.d.ts +21 -27
- package/fesm2022/ngx-tethys-action.mjs +63 -101
- package/fesm2022/ngx-tethys-action.mjs.map +1 -1
- package/fesm2022/ngx-tethys-affix.mjs +40 -41
- package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
- package/fesm2022/ngx-tethys-anchor.mjs +91 -118
- package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
- package/fesm2022/ngx-tethys-arrow-switcher.mjs +51 -77
- package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
- package/fesm2022/ngx-tethys-autocomplete.mjs +69 -103
- package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
- package/fesm2022/ngx-tethys-avatar.mjs +117 -162
- package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
- package/fesm2022/ngx-tethys-back-top.mjs +33 -46
- package/fesm2022/ngx-tethys-back-top.mjs.map +1 -1
- package/fesm2022/ngx-tethys-badge.mjs +104 -208
- package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
- package/fesm2022/ngx-tethys-breadcrumb.mjs +66 -70
- package/fesm2022/ngx-tethys-breadcrumb.mjs.map +1 -1
- package/fesm2022/ngx-tethys-button.mjs +225 -322
- package/fesm2022/ngx-tethys-button.mjs.map +1 -1
- package/fesm2022/ngx-tethys-calendar.mjs +85 -87
- package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
- package/fesm2022/ngx-tethys-card.mjs +72 -77
- package/fesm2022/ngx-tethys-card.mjs.map +1 -1
- package/fesm2022/ngx-tethys-carousel.mjs +83 -99
- package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
- package/fesm2022/ngx-tethys-cascader.mjs +313 -468
- package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2022/ngx-tethys-checkbox.mjs +10 -17
- package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
- package/fesm2022/ngx-tethys-collapse.mjs +66 -71
- package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
- package/fesm2022/ngx-tethys-color-picker.mjs +187 -246
- package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-comment.mjs +16 -10
- package/fesm2022/ngx-tethys-comment.mjs.map +1 -1
- package/fesm2022/ngx-tethys-copy.mjs +25 -28
- package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dialog.mjs +81 -82
- package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
- package/fesm2022/ngx-tethys-divider.mjs +49 -58
- package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dot.mjs +45 -68
- package/fesm2022/ngx-tethys-dot.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dropdown.mjs +155 -203
- package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
- package/fesm2022/ngx-tethys-empty.mjs +107 -95
- package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
- package/fesm2022/ngx-tethys-flexible-text.mjs +67 -86
- package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
- package/fesm2022/ngx-tethys-form.mjs +161 -200
- package/fesm2022/ngx-tethys-form.mjs.map +1 -1
- package/fesm2022/ngx-tethys-fullscreen.mjs +21 -23
- package/fesm2022/ngx-tethys-fullscreen.mjs.map +1 -1
- package/fesm2022/ngx-tethys-grid.mjs +161 -158
- package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
- package/fesm2022/ngx-tethys-i18n.mjs +25 -25
- package/fesm2022/ngx-tethys-i18n.mjs.map +1 -1
- package/fesm2022/ngx-tethys-icon.mjs +44 -59
- package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
- package/fesm2022/ngx-tethys-image.mjs +40 -36
- package/fesm2022/ngx-tethys-image.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input-number.mjs +101 -114
- package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input.mjs +268 -271
- package/fesm2022/ngx-tethys-input.mjs.map +1 -1
- package/fesm2022/ngx-tethys-list.mjs +1 -1
- package/fesm2022/ngx-tethys-list.mjs.map +1 -1
- package/fesm2022/ngx-tethys-loading.mjs +17 -35
- package/fesm2022/ngx-tethys-loading.mjs.map +1 -1
- package/fesm2022/ngx-tethys-mention.mjs +52 -74
- package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
- package/fesm2022/ngx-tethys-menu.mjs +106 -179
- package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
- package/fesm2022/ngx-tethys-nav.mjs +169 -201
- package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
- package/fesm2022/ngx-tethys-pagination.mjs +230 -294
- package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
- package/fesm2022/ngx-tethys-popover.mjs +67 -70
- package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
- package/fesm2022/ngx-tethys-progress.mjs +194 -246
- package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property.mjs +99 -113
- package/fesm2022/ngx-tethys-property.mjs.map +1 -1
- package/fesm2022/ngx-tethys-radio.mjs +60 -76
- package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
- package/fesm2022/ngx-tethys-rate.mjs +115 -157
- package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
- package/fesm2022/ngx-tethys-resizable.mjs +111 -157
- package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
- package/fesm2022/ngx-tethys-result.mjs +46 -28
- package/fesm2022/ngx-tethys-result.mjs.map +1 -1
- package/fesm2022/ngx-tethys-segment.mjs +84 -103
- package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
- package/fesm2022/ngx-tethys-skeleton.mjs +339 -342
- package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slide.mjs +37 -56
- package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slider.mjs +75 -108
- package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-space.mjs +25 -51
- package/fesm2022/ngx-tethys-space.mjs.map +1 -1
- package/fesm2022/ngx-tethys-statistic.mjs +114 -151
- package/fesm2022/ngx-tethys-statistic.mjs.map +1 -1
- package/fesm2022/ngx-tethys-stepper.mjs +74 -107
- package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
- package/fesm2022/ngx-tethys-strength.mjs +52 -66
- package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
- package/fesm2022/ngx-tethys-switch.mjs +80 -140
- package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
- package/fesm2022/ngx-tethys-table.mjs +1 -1
- package/fesm2022/ngx-tethys-table.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tabs.mjs +69 -87
- package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tag.mjs +42 -64
- package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
- package/fesm2022/ngx-tethys-timeline.mjs +104 -129
- package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
- package/fesm2022/ngx-tethys-transfer.mjs +98 -119
- package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree-select.mjs +2 -4
- package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree.mjs +281 -401
- package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
- package/fesm2022/ngx-tethys-typography.mjs +36 -33
- package/fesm2022/ngx-tethys-typography.mjs.map +1 -1
- package/fesm2022/ngx-tethys-upload.mjs +93 -132
- package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
- package/fesm2022/ngx-tethys-util.mjs.map +1 -1
- package/fesm2022/ngx-tethys-vote.mjs +53 -99
- package/fesm2022/ngx-tethys-vote.mjs.map +1 -1
- package/fesm2022/ngx-tethys-watermark.mjs +36 -40
- package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/flexible-text/flexible-text.component.d.ts +9 -15
- package/form/form-group-error/form-group-error.component.d.ts +2 -3
- package/form/form-group-label.directive.d.ts +2 -1
- package/form/form-group.component.d.ts +17 -24
- package/form/form-submit.directive.d.ts +2 -2
- package/form/form.directive.d.ts +6 -8
- package/form/from-group-footer/form-group-footer.component.d.ts +2 -2
- package/form/validator/confirm-validator.directive.d.ts +2 -2
- package/form/validator/unique-validator.directive.d.ts +2 -2
- package/fullscreen/fullscreen.component.d.ts +7 -7
- package/grid/flex.d.ts +13 -20
- package/grid/thy-col.directive.d.ts +6 -9
- package/grid/thy-grid-item.component.d.ts +3 -4
- package/grid/thy-grid.component.d.ts +11 -12
- package/grid/thy-row.directive.d.ts +11 -14
- package/icon/icon.component.d.ts +10 -17
- package/image/image.directive.d.ts +10 -12
- package/image/image.token.d.ts +5 -5
- package/input/input-count.component.d.ts +4 -5
- package/input/input-group.component.d.ts +20 -20
- package/input/input-search.component.d.ts +15 -20
- package/input/input.component.d.ts +20 -21
- package/input/input.directive.d.ts +4 -6
- package/input-number/input-number.component.d.ts +21 -29
- package/layout/header.component.d.ts +4 -9
- package/layout/sidebar-header.component.d.ts +2 -1
- package/layout/sidebar.component.d.ts +8 -7
- package/list/list.component.d.ts +2 -1
- package/list/selection/selection-list.d.ts +4 -3
- package/loading/loading.component.d.ts +4 -10
- package/mention/mention.directive.d.ts +6 -7
- package/mention/suggestions/suggestions.component.d.ts +8 -9
- package/menu/group/menu-group.component.d.ts +16 -33
- package/menu/item/action/menu-item-action.component.d.ts +7 -8
- package/menu/item/icon/menu-item-icon.component.d.ts +2 -2
- package/menu/item/menu-item.component.d.ts +4 -4
- package/menu/item/name/menu-item-name.component.d.ts +2 -3
- package/menu/menu.component.d.ts +3 -7
- package/nav/icon-nav/icon-nav-link.directive.d.ts +3 -7
- package/nav/icon-nav/icon-nav.component.d.ts +3 -8
- package/nav/nav-ink-bar.directive.d.ts +4 -6
- package/nav/nav-item.directive.d.ts +7 -10
- package/nav/nav.component.d.ts +20 -48
- package/package.json +1 -1
- package/pagination/pagination.component.d.ts +48 -109
- package/popover/header/popover-header.component.d.ts +7 -6
- package/popover/popover.directive.d.ts +11 -18
- package/progress/progress-circle.component.d.ts +35 -26
- package/progress/progress-strip.component.d.ts +10 -14
- package/progress/progress.component.d.ts +16 -26
- package/property/examples/single/single.component.scss +6 -0
- package/property/properties.component.d.ts +6 -15
- package/property/property-item.component.d.ts +22 -34
- package/property/styles/properties.scss +124 -52
- package/property-operation/property-operation.component.d.ts +6 -5
- package/radio/button/radio-button.component.d.ts +2 -2
- package/radio/group/radio-group.component.d.ts +13 -16
- package/radio/radio.component.d.ts +2 -2
- package/radio/radio.token.d.ts +2 -2
- package/rate/rate-item.component.d.ts +8 -10
- package/rate/rate.component.d.ts +20 -30
- package/resizable/resizable.directive.d.ts +18 -36
- package/resizable/resize-handle.component.d.ts +6 -6
- package/resizable/resize-handles.component.d.ts +5 -8
- package/result/result.component.d.ts +9 -10
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/segment/segment-item.component.d.ts +9 -14
- package/segment/segment.component.d.ts +11 -14
- package/segment/segment.token.d.ts +4 -3
- package/select/custom-select/custom-select.component.d.ts +11 -10
- package/select/native-select/native-select.component.d.ts +2 -1
- package/shared/base-form-check.component.d.ts +3 -2
- package/shared/directives/thy-autofocus.directive.d.ts +3 -2
- package/shared/directives/thy-scroll.directive.d.ts +2 -1
- package/shared/directives/thy-show.d.ts +2 -1
- package/shared/option/group/option-group.component.d.ts +2 -1
- package/shared/option/list-option/list-option.component.d.ts +2 -7
- package/shared/option/option.component.d.ts +2 -1
- package/shared/select/select-control/select-control.component.d.ts +7 -6
- package/skeleton/skeleton-circle.component.d.ts +16 -19
- package/skeleton/skeleton-rectangle.component.d.ts +20 -23
- package/skeleton/skeleton.component.d.ts +5 -6
- package/skeleton/stylized/bullet-list.component.d.ts +11 -13
- package/skeleton/stylized/list.component.d.ts +10 -12
- package/skeleton/stylized/paragraph.component.d.ts +12 -14
- package/slide/slide-body/slide-body-section.component.d.ts +2 -5
- package/slide/slide-header/slide-header.component.d.ts +6 -9
- package/slider/slider.component.d.ts +17 -24
- package/space/space.component.d.ts +10 -16
- package/statistic/statistic.component.d.ts +35 -40
- package/stepper/step-header.component.d.ts +6 -10
- package/stepper/step.component.d.ts +6 -6
- package/stepper/stepper.component.d.ts +15 -20
- package/strength/strength.component.d.ts +8 -13
- package/switch/switch.component.d.ts +24 -35
- package/table/table-column.component.d.ts +6 -5
- package/table/table-skeleton.component.d.ts +3 -10
- package/table/table.component.d.ts +11 -10
- package/tabs/tab-content.component.d.ts +4 -4
- package/tabs/tab.component.d.ts +4 -5
- package/tabs/tabs.component.d.ts +13 -15
- package/tag/tag.component.d.ts +10 -16
- package/time-picker/time-picker-panel.component.d.ts +3 -2
- package/time-picker/time-picker.component.d.ts +6 -5
- package/timeline/timeline-item.component.d.ts +9 -13
- package/timeline/timeline.component.d.ts +13 -17
- package/tooltip/tooltip.directive.d.ts +3 -2
- package/transfer/transfer-list.component.d.ts +15 -15
- package/transfer/transfer.component.d.ts +20 -23
- package/tree/tree-abstract.d.ts +5 -5
- package/tree/tree-node.component.d.ts +24 -46
- package/tree/tree.class.d.ts +4 -4
- package/tree/tree.component.d.ts +47 -74
- package/tree/tree.service.d.ts +3 -4
- package/tree-select/tree-select.component.d.ts +10 -9
- package/typography/bg-color.directive.d.ts +3 -3
- package/typography/text/text.component.d.ts +2 -2
- package/typography/text-color.directive.d.ts +3 -3
- package/upload/file-drop.directive.d.ts +9 -11
- package/upload/file-select-base.d.ts +6 -10
- package/upload/file-select.component.d.ts +10 -20
- package/util/helpers/helpers.d.ts +2 -1
- package/vote/vote.component.d.ts +13 -32
- package/watermark/watermark.directive.d.ts +7 -9
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, IterableDiffers,
|
|
2
|
+
import { inject, IterableDiffers, input, numberAttribute, output, ViewEncapsulation, Component, contentChild, computed, effect, NgModule } from '@angular/core';
|
|
3
3
|
import { ThyFlexibleText, ThyFlexibleTextModule } from 'ngx-tethys/flexible-text';
|
|
4
4
|
import { ThyIcon, ThyIconModule } from 'ngx-tethys/icon';
|
|
5
5
|
import { NgClass, NgTemplateOutlet, CommonModule } from '@angular/common';
|
|
@@ -7,6 +7,7 @@ import { moveItemInArray, transferArrayItem, CdkDropListGroup, CdkDropList, CdkD
|
|
|
7
7
|
import { ThyList, ThyListItem, ThyListModule } from 'ngx-tethys/list';
|
|
8
8
|
import { ThyDragDropDirective, ThySharedModule } from 'ngx-tethys/shared';
|
|
9
9
|
import { injectLocale } from 'ngx-tethys/i18n';
|
|
10
|
+
import { coerceBooleanProperty } from 'ngx-tethys/util';
|
|
10
11
|
import { ThyButtonModule } from 'ngx-tethys/button';
|
|
11
12
|
|
|
12
13
|
var TransferDirection;
|
|
@@ -24,12 +25,20 @@ class ThyTransferList {
|
|
|
24
25
|
this.lockItems = [];
|
|
25
26
|
this.unlockItems = [];
|
|
26
27
|
this.locale = injectLocale('transfer');
|
|
27
|
-
this.
|
|
28
|
-
this.
|
|
29
|
-
this.
|
|
30
|
-
this.
|
|
28
|
+
this.title = input();
|
|
29
|
+
this.items = input();
|
|
30
|
+
this.draggable = input(false, { transform: coerceBooleanProperty });
|
|
31
|
+
this.canLock = input(false, { transform: coerceBooleanProperty });
|
|
32
|
+
this.maxLock = input(undefined, { transform: numberAttribute });
|
|
33
|
+
this.max = input(undefined, { transform: numberAttribute });
|
|
34
|
+
this.disabled = input(false, { transform: coerceBooleanProperty });
|
|
35
|
+
this.template = input();
|
|
36
|
+
this.renderContentRef = input();
|
|
37
|
+
this.draggableUpdate = output();
|
|
38
|
+
this.selectItem = output();
|
|
39
|
+
this.unselectItem = output();
|
|
31
40
|
this.lockListEnterPredicate = () => {
|
|
32
|
-
return this.lockItems.length < this.maxLock;
|
|
41
|
+
return this.lockItems.length < this.maxLock();
|
|
33
42
|
};
|
|
34
43
|
this.unlockListEnterPredicate = (event) => {
|
|
35
44
|
return !event.data.isFixed;
|
|
@@ -43,20 +52,20 @@ class ThyTransferList {
|
|
|
43
52
|
}
|
|
44
53
|
ngOnInit() {
|
|
45
54
|
this._combineTransferData();
|
|
46
|
-
if (this.canLock) {
|
|
55
|
+
if (this.canLock()) {
|
|
47
56
|
this._lockDiff = this.differs.find(this.lockItems).create();
|
|
48
57
|
this._unlockDiff = this.differs.find(this.unlockItems).create();
|
|
49
58
|
}
|
|
50
59
|
else {
|
|
51
60
|
this._unlockDiff = this.differs.find(this.unlockItems).create();
|
|
52
61
|
}
|
|
53
|
-
this._diff = this.differs.find(this.items).create();
|
|
62
|
+
this._diff = this.differs.find(this.items()).create();
|
|
54
63
|
}
|
|
55
64
|
_combineTransferData() {
|
|
56
65
|
this.lockItems = [];
|
|
57
66
|
this.unlockItems = [];
|
|
58
|
-
if (this.canLock) {
|
|
59
|
-
(this.items || []).forEach(item => {
|
|
67
|
+
if (this.canLock()) {
|
|
68
|
+
(this.items() || []).forEach(item => {
|
|
60
69
|
if (item.isLock) {
|
|
61
70
|
this.lockItems.push(item);
|
|
62
71
|
}
|
|
@@ -66,7 +75,7 @@ class ThyTransferList {
|
|
|
66
75
|
});
|
|
67
76
|
}
|
|
68
77
|
else {
|
|
69
|
-
this.unlockItems = this.items;
|
|
78
|
+
this.unlockItems = this.items();
|
|
70
79
|
}
|
|
71
80
|
}
|
|
72
81
|
_afterChangeItems(changes, items) {
|
|
@@ -86,9 +95,9 @@ class ThyTransferList {
|
|
|
86
95
|
});
|
|
87
96
|
}
|
|
88
97
|
ngDoCheck() {
|
|
89
|
-
const changes = this._diff.diff(this.items);
|
|
98
|
+
const changes = this._diff.diff(this.items());
|
|
90
99
|
if (changes) {
|
|
91
|
-
this._afterChangeItems(changes, this.items);
|
|
100
|
+
this._afterChangeItems(changes, this.items());
|
|
92
101
|
this._combineTransferData();
|
|
93
102
|
}
|
|
94
103
|
if (this._lockDiff) {
|
|
@@ -127,40 +136,14 @@ class ThyTransferList {
|
|
|
127
136
|
});
|
|
128
137
|
}
|
|
129
138
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyTransferList, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
130
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyTransferList, isStandalone: true, selector: "thy-transfer-list", inputs: { title: "title", items: "items", draggable: "draggable", canLock: "canLock", maxLock: "maxLock", max: "max", disabled: "disabled", template: "template",
|
|
139
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyTransferList, isStandalone: true, selector: "thy-transfer-list", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, draggable: { classPropertyName: "draggable", publicName: "draggable", isSignal: true, isRequired: false, transformFunction: null }, canLock: { classPropertyName: "canLock", publicName: "canLock", isSignal: true, isRequired: false, transformFunction: null }, maxLock: { classPropertyName: "maxLock", publicName: "maxLock", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null }, renderContentRef: { classPropertyName: "renderContentRef", publicName: "renderContentRef", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { draggableUpdate: "draggableUpdate", selectItem: "selectItem", unselectItem: "unselectItem" }, host: { classAttribute: "thy-transfer-list" }, ngImport: i0, template: "<div class=\"thy-transfer-list-header\">\n <span class=\"thy-transfer-list-header-title\"\n >{{ title() }} \u00B7 {{ items()?.length }}\n @if (max()) {\n <span>{{ locale().maxLimit.replace('{max}', max()?.toString() ?? '') }}</span>\n }\n </span>\n</div>\n@if (!renderContentRef()) {\n <div class=\"thy-transfer-list-body\" cdkDropListGroup [cdkDropListGroupDisabled]=\"!draggable()\">\n @if (canLock()) {\n <div class=\"thy-transfer-list-group-name\">{{ locale().maxLockLimit.replace('{maxLock}', maxLock()?.toString() ?? '') }}</div>\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n id=\"lock\"\n [cdkDropListData]=\"lockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"lockListEnterPredicate\">\n @if (lockItems.length === 0) {\n <div class=\"cdk-drop-list-empty\"></div>\n }\n @for (item of lockItems; track $index) {\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n [ngClass]=\"{ active: item.checked }\">\n <ng-template [ngTemplateOutlet]=\"template()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n }\n </thy-list>\n <div class=\"thy-transfer-list-group-name\">{{ locale().unlocked }}</div>\n }\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n [cdkDropListDisabled]=\"!draggable()\"\n id=\"unlock\"\n [cdkDropListData]=\"unlockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"unlockListEnterPredicate\">\n @if (unlockItems.length === 0) {\n <div class=\"cdk-drop-list-empty\"></div>\n }\n @for (item of unlockItems; track $index) {\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n [ngClass]=\"{ active: item.checked, disabled: disabled() && item.direction === 'left' }\">\n <ng-template [ngTemplateOutlet]=\"template()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n }\n </thy-list>\n </div>\n} @else {\n <div class=\"thy-transfer-list-body\">\n <ng-container\n *ngTemplateOutlet=\"\n renderContentRef();\n context: {\n $implicit: items(),\n onSelectItem: onSelectItem,\n onUnselectItem: onUnselectItem\n }\n \"></ng-container>\n </div>\n}\n", dependencies: [{ kind: "directive", type: CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "component", type: ThyList, selector: "thy-list", inputs: ["thyDivided"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: ThyDragDropDirective, selector: "[thyDragDrop]" }, { kind: "component", type: ThyListItem, selector: "thy-list-item,[thy-list-item]" }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
131
140
|
}
|
|
132
141
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyTransferList, decorators: [{
|
|
133
142
|
type: Component,
|
|
134
|
-
args: [{ selector: 'thy-transfer-list',
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
type: Input
|
|
139
|
-
}], draggable: [{
|
|
140
|
-
type: Input
|
|
141
|
-
}], canLock: [{
|
|
142
|
-
type: Input
|
|
143
|
-
}], maxLock: [{
|
|
144
|
-
type: Input
|
|
145
|
-
}], max: [{
|
|
146
|
-
type: Input
|
|
147
|
-
}], disabled: [{
|
|
148
|
-
type: Input
|
|
149
|
-
}], template: [{
|
|
150
|
-
type: Input
|
|
151
|
-
}], contentRef: [{
|
|
152
|
-
type: Input,
|
|
153
|
-
args: ['renderContentRef']
|
|
154
|
-
}], draggableUpdate: [{
|
|
155
|
-
type: Output
|
|
156
|
-
}], selectItem: [{
|
|
157
|
-
type: Output
|
|
158
|
-
}], unselectItem: [{
|
|
159
|
-
type: Output
|
|
160
|
-
}], hostClass: [{
|
|
161
|
-
type: HostBinding,
|
|
162
|
-
args: ['class']
|
|
163
|
-
}] } });
|
|
143
|
+
args: [{ selector: 'thy-transfer-list', host: {
|
|
144
|
+
class: 'thy-transfer-list'
|
|
145
|
+
}, encapsulation: ViewEncapsulation.None, imports: [CdkDropListGroup, ThyList, CdkDropList, ThyDragDropDirective, ThyListItem, CdkDrag, NgClass, NgTemplateOutlet], template: "<div class=\"thy-transfer-list-header\">\n <span class=\"thy-transfer-list-header-title\"\n >{{ title() }} \u00B7 {{ items()?.length }}\n @if (max()) {\n <span>{{ locale().maxLimit.replace('{max}', max()?.toString() ?? '') }}</span>\n }\n </span>\n</div>\n@if (!renderContentRef()) {\n <div class=\"thy-transfer-list-body\" cdkDropListGroup [cdkDropListGroupDisabled]=\"!draggable()\">\n @if (canLock()) {\n <div class=\"thy-transfer-list-group-name\">{{ locale().maxLockLimit.replace('{maxLock}', maxLock()?.toString() ?? '') }}</div>\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n id=\"lock\"\n [cdkDropListData]=\"lockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"lockListEnterPredicate\">\n @if (lockItems.length === 0) {\n <div class=\"cdk-drop-list-empty\"></div>\n }\n @for (item of lockItems; track $index) {\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n [ngClass]=\"{ active: item.checked }\">\n <ng-template [ngTemplateOutlet]=\"template()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n }\n </thy-list>\n <div class=\"thy-transfer-list-group-name\">{{ locale().unlocked }}</div>\n }\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n [cdkDropListDisabled]=\"!draggable()\"\n id=\"unlock\"\n [cdkDropListData]=\"unlockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"unlockListEnterPredicate\">\n @if (unlockItems.length === 0) {\n <div class=\"cdk-drop-list-empty\"></div>\n }\n @for (item of unlockItems; track $index) {\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n [ngClass]=\"{ active: item.checked, disabled: disabled() && item.direction === 'left' }\">\n <ng-template [ngTemplateOutlet]=\"template()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n }\n </thy-list>\n </div>\n} @else {\n <div class=\"thy-transfer-list-body\">\n <ng-container\n *ngTemplateOutlet=\"\n renderContentRef();\n context: {\n $implicit: items(),\n onSelectItem: onSelectItem,\n onUnselectItem: onUnselectItem\n }\n \"></ng-container>\n </div>\n}\n" }]
|
|
146
|
+
}], ctorParameters: () => [] });
|
|
164
147
|
|
|
165
148
|
/**
|
|
166
149
|
* 穿梭框组件
|
|
@@ -169,54 +152,84 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
169
152
|
*/
|
|
170
153
|
class ThyTransfer {
|
|
171
154
|
constructor() {
|
|
172
|
-
this.hostClass = 'thy-transfer';
|
|
173
155
|
this.leftDataSource = [];
|
|
174
156
|
this.rightDataSource = [];
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
157
|
+
/**
|
|
158
|
+
* 数据源
|
|
159
|
+
* @type ThyTransferItem[]
|
|
160
|
+
*/
|
|
161
|
+
this.thyData = input([]);
|
|
162
|
+
this.thyRenderLeftTemplateRef = input();
|
|
163
|
+
this.thyRenderRightTemplateRef = input();
|
|
164
|
+
/**
|
|
165
|
+
* title集合,title[0]为左标题,title[1]为右标题
|
|
166
|
+
* @type string[]
|
|
167
|
+
*/
|
|
168
|
+
this.thyTitles = input([]);
|
|
169
|
+
/**
|
|
170
|
+
* 右侧列表是否可以锁定
|
|
171
|
+
* @default false
|
|
172
|
+
*/
|
|
173
|
+
this.thyRightCanLock = input(false, { transform: coerceBooleanProperty });
|
|
174
|
+
/**
|
|
175
|
+
* 右侧锁定最大数量
|
|
176
|
+
*/
|
|
177
|
+
this.thyRightLockMax = input(undefined, { transform: numberAttribute });
|
|
178
|
+
/**
|
|
179
|
+
* 右侧选择最大数量
|
|
180
|
+
*/
|
|
181
|
+
this.thyRightMax = input(undefined, { transform: numberAttribute });
|
|
182
|
+
/**
|
|
183
|
+
* 设置是否自动移动
|
|
184
|
+
* @description.en-us Currently not implemented, in order to support the selections move
|
|
185
|
+
* @default true
|
|
186
|
+
*/
|
|
187
|
+
this.thyAutoMove = input(true, { transform: coerceBooleanProperty });
|
|
188
|
+
/**
|
|
189
|
+
* 左侧列表是否拖动
|
|
190
|
+
* @default false
|
|
191
|
+
*/
|
|
192
|
+
this.thyLeftDraggable = input(false, { transform: coerceBooleanProperty });
|
|
193
|
+
/**
|
|
194
|
+
* 右侧列表是否拖动
|
|
195
|
+
* @default false
|
|
196
|
+
*/
|
|
197
|
+
this.thyRightDraggable = input(false, { transform: coerceBooleanProperty });
|
|
178
198
|
/**
|
|
179
199
|
* @type EventEmitter<ThyTransferDragEvent>
|
|
180
200
|
*/
|
|
181
|
-
this.thyDraggableUpdate =
|
|
201
|
+
this.thyDraggableUpdate = output();
|
|
182
202
|
/**
|
|
183
203
|
* Transfer变化的回调事件
|
|
184
204
|
* @type EventEmitter<ThyTransferChangeEvent>
|
|
185
205
|
*/
|
|
186
|
-
this.thyChange =
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
this.leftTitle =
|
|
203
|
-
this.rightTitle =
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
* @description.en-us Currently not implemented, in order to support the selections move
|
|
208
|
-
* @default true
|
|
209
|
-
*/
|
|
210
|
-
set thyAutoMove(value) {
|
|
211
|
-
this._autoMove = value;
|
|
206
|
+
this.thyChange = output();
|
|
207
|
+
/**
|
|
208
|
+
* 设置自定义Item渲染数据模板
|
|
209
|
+
* @type TemplateRef
|
|
210
|
+
*/
|
|
211
|
+
this.templateRef = contentChild('renderTemplate');
|
|
212
|
+
/**
|
|
213
|
+
* 设置自定义左侧内容模板
|
|
214
|
+
* @type TemplateRef
|
|
215
|
+
*/
|
|
216
|
+
this.leftContentRef = contentChild('renderLeftTemplate');
|
|
217
|
+
/**
|
|
218
|
+
* 设置自定义右侧内容模板
|
|
219
|
+
* @type TemplateRef
|
|
220
|
+
*/
|
|
221
|
+
this.rightContentRef = contentChild('renderRightTemplate');
|
|
222
|
+
this.leftTitle = computed(() => this.thyTitles()[0] || '');
|
|
223
|
+
this.rightTitle = computed(() => this.thyTitles()[1] || '');
|
|
224
|
+
effect(() => {
|
|
225
|
+
this.initializeTransferData();
|
|
226
|
+
});
|
|
212
227
|
}
|
|
213
228
|
ngOnInit() { }
|
|
214
229
|
initializeTransferData(data = []) {
|
|
215
|
-
this.allDataSource = [];
|
|
216
230
|
this.leftDataSource = [];
|
|
217
231
|
this.rightDataSource = [];
|
|
218
|
-
|
|
219
|
-
this.allDataSource.push(item);
|
|
232
|
+
this.thyData().forEach(item => {
|
|
220
233
|
if (item.direction === TransferDirection.left) {
|
|
221
234
|
this.leftDataSource.push(item);
|
|
222
235
|
}
|
|
@@ -229,12 +242,12 @@ class ThyTransfer {
|
|
|
229
242
|
if (event.item.isFixed) {
|
|
230
243
|
return;
|
|
231
244
|
}
|
|
232
|
-
if (this.thyRightMax <= this.rightDataSource.length && from === TransferDirection.left) {
|
|
245
|
+
if (this.thyRightMax() <= this.rightDataSource.length && from === TransferDirection.left) {
|
|
233
246
|
return;
|
|
234
247
|
}
|
|
235
248
|
const to = from === TransferDirection.left ? TransferDirection.right : TransferDirection.left;
|
|
236
249
|
event.item.checked = !event.item.checked;
|
|
237
|
-
if (this.
|
|
250
|
+
if (this.thyAutoMove()) {
|
|
238
251
|
this.onMove(to);
|
|
239
252
|
}
|
|
240
253
|
}
|
|
@@ -292,48 +305,14 @@ class ThyTransfer {
|
|
|
292
305
|
: [...otherListData.lock, ...otherListData.unlock];
|
|
293
306
|
}
|
|
294
307
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyTransfer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
295
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyTransfer, isStandalone: true, selector: "thy-transfer", inputs: { thyData: "thyData",
|
|
308
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyTransfer, isStandalone: true, selector: "thy-transfer", inputs: { thyData: { classPropertyName: "thyData", publicName: "thyData", isSignal: true, isRequired: false, transformFunction: null }, thyRenderLeftTemplateRef: { classPropertyName: "thyRenderLeftTemplateRef", publicName: "thyRenderLeftTemplateRef", isSignal: true, isRequired: false, transformFunction: null }, thyRenderRightTemplateRef: { classPropertyName: "thyRenderRightTemplateRef", publicName: "thyRenderRightTemplateRef", isSignal: true, isRequired: false, transformFunction: null }, thyTitles: { classPropertyName: "thyTitles", publicName: "thyTitles", isSignal: true, isRequired: false, transformFunction: null }, thyRightCanLock: { classPropertyName: "thyRightCanLock", publicName: "thyRightCanLock", isSignal: true, isRequired: false, transformFunction: null }, thyRightLockMax: { classPropertyName: "thyRightLockMax", publicName: "thyRightLockMax", isSignal: true, isRequired: false, transformFunction: null }, thyRightMax: { classPropertyName: "thyRightMax", publicName: "thyRightMax", isSignal: true, isRequired: false, transformFunction: null }, thyAutoMove: { classPropertyName: "thyAutoMove", publicName: "thyAutoMove", isSignal: true, isRequired: false, transformFunction: null }, thyLeftDraggable: { classPropertyName: "thyLeftDraggable", publicName: "thyLeftDraggable", isSignal: true, isRequired: false, transformFunction: null }, thyRightDraggable: { classPropertyName: "thyRightDraggable", publicName: "thyRightDraggable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thyDraggableUpdate: "thyDraggableUpdate", thyChange: "thyChange" }, host: { classAttribute: "thy-transfer" }, queries: [{ propertyName: "templateRef", first: true, predicate: ["renderTemplate"], descendants: true, isSignal: true }, { propertyName: "leftContentRef", first: true, predicate: ["renderLeftTemplate"], descendants: true, isSignal: true }, { propertyName: "rightContentRef", first: true, predicate: ["renderRightTemplate"], descendants: true, isSignal: true }], ngImport: i0, template: "<thy-transfer-list\n [items]=\"thyData()\"\n [title]=\"leftTitle()\"\n [draggable]=\"thyLeftDraggable()\"\n [disabled]=\"thyRightMax() <= rightDataSource.length\"\n [renderContentRef]=\"leftContentRef()\"\n (draggableUpdate)=\"onDragUpdate('left', $event)\"\n [template]=\"leftTemplateRef\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\">\n <ng-template #leftTemplateRef let-item>\n <div (click)=\"onSelect(item.direction === 'left' ? 'left' : 'right', { item: item })\" class=\"list-item-content\">\n @if (thyLeftDraggable()) {\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n }\n <div class=\"item-name\" [ngClass]=\"{ 'un-select-item': item.direction !== 'right' }\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n @if (item.direction === 'right') {\n <thy-icon class=\"text-primary item-status\" thyIconName=\"check\"></thy-icon>\n }\n </div>\n </ng-template>\n</thy-transfer-list>\n\n<div class=\"thy-transfer-operation\">\n <div class=\"thy-transfer-operation-body\">\n <thy-icon thyIconName=\"angle-right\" class=\"operation-link\"></thy-icon>\n <br />\n <thy-icon thyIconName=\"angle-left\" class=\"operation-link\"></thy-icon>\n </div>\n</div>\n\n<thy-transfer-list\n [items]=\"rightDataSource\"\n [title]=\"rightTitle()\"\n [draggable]=\"thyRightDraggable()\"\n (draggableUpdate)=\"onDragUpdate('right', $event)\"\n [canLock]=\"thyRightCanLock()\"\n [maxLock]=\"thyRightLockMax()\"\n [max]=\"thyRightMax()\"\n [template]=\"rightTemplateRef\"\n [renderContentRef]=\"rightContentRef()\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\">\n <ng-template #rightTemplateRef let-item>\n @if (thyRightDraggable()) {\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n }\n <div class=\"item-name\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n @if (item.direction === 'right' && !item.isFixed) {\n <a class=\"link-secondary\" (click)=\"onSelect('right', { item: item })\">\n <thy-icon class=\"item-status\" thyIconName=\"close\"></thy-icon>\n </a>\n }\n </ng-template>\n</thy-transfer-list>\n\n<ng-template #thyTransferListItem let-item>\n @if (templateRef()) {\n <ng-template [ngTemplateOutlet]=\"templateRef()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n }\n @if (!templateRef()) {\n <thy-flexible-text [thyTooltipContent]=\"item.title\">\n {{ item.title }}\n </thy-flexible-text>\n }\n</ng-template>\n", dependencies: [{ kind: "component", type: ThyTransferList, selector: "thy-transfer-list", inputs: ["title", "items", "draggable", "canLock", "maxLock", "max", "disabled", "template", "renderContentRef"], outputs: ["draggableUpdate", "selectItem", "unselectItem"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThyFlexibleText, selector: "thy-flexible-text,[thyFlexibleText]", inputs: ["thyTooltipTrigger", "thyContainerClass", "thyTooltipContent", "thyTooltipPlacement", "thyTooltipOffset"], exportAs: ["thyFlexibleText"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
296
309
|
}
|
|
297
310
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyTransfer, decorators: [{
|
|
298
311
|
type: Component,
|
|
299
|
-
args: [{ selector: 'thy-transfer',
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
}], thyData: [{
|
|
304
|
-
type: Input
|
|
305
|
-
}], thyrenderLeftTemplateRef: [{
|
|
306
|
-
type: Input
|
|
307
|
-
}], thyrenderRightTemplateRef: [{
|
|
308
|
-
type: Input
|
|
309
|
-
}], thyTitles: [{
|
|
310
|
-
type: Input
|
|
311
|
-
}], thyRightCanLock: [{
|
|
312
|
-
type: Input
|
|
313
|
-
}], thyRightLockMax: [{
|
|
314
|
-
type: Input
|
|
315
|
-
}], thyRightMax: [{
|
|
316
|
-
type: Input
|
|
317
|
-
}], thyAutoMove: [{
|
|
318
|
-
type: Input
|
|
319
|
-
}], thyLeftDraggable: [{
|
|
320
|
-
type: Input
|
|
321
|
-
}], thyRightDraggable: [{
|
|
322
|
-
type: Input
|
|
323
|
-
}], thyDraggableUpdate: [{
|
|
324
|
-
type: Output
|
|
325
|
-
}], thyChange: [{
|
|
326
|
-
type: Output
|
|
327
|
-
}], templateRef: [{
|
|
328
|
-
type: ContentChild,
|
|
329
|
-
args: ['renderTemplate']
|
|
330
|
-
}], leftContentRef: [{
|
|
331
|
-
type: ContentChild,
|
|
332
|
-
args: ['renderLeftTemplate']
|
|
333
|
-
}], rightContentRef: [{
|
|
334
|
-
type: ContentChild,
|
|
335
|
-
args: ['renderRightTemplate']
|
|
336
|
-
}] } });
|
|
312
|
+
args: [{ selector: 'thy-transfer', host: {
|
|
313
|
+
class: 'thy-transfer'
|
|
314
|
+
}, encapsulation: ViewEncapsulation.None, imports: [ThyTransferList, ThyIcon, NgClass, NgTemplateOutlet, ThyFlexibleText], template: "<thy-transfer-list\n [items]=\"thyData()\"\n [title]=\"leftTitle()\"\n [draggable]=\"thyLeftDraggable()\"\n [disabled]=\"thyRightMax() <= rightDataSource.length\"\n [renderContentRef]=\"leftContentRef()\"\n (draggableUpdate)=\"onDragUpdate('left', $event)\"\n [template]=\"leftTemplateRef\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\">\n <ng-template #leftTemplateRef let-item>\n <div (click)=\"onSelect(item.direction === 'left' ? 'left' : 'right', { item: item })\" class=\"list-item-content\">\n @if (thyLeftDraggable()) {\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n }\n <div class=\"item-name\" [ngClass]=\"{ 'un-select-item': item.direction !== 'right' }\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n @if (item.direction === 'right') {\n <thy-icon class=\"text-primary item-status\" thyIconName=\"check\"></thy-icon>\n }\n </div>\n </ng-template>\n</thy-transfer-list>\n\n<div class=\"thy-transfer-operation\">\n <div class=\"thy-transfer-operation-body\">\n <thy-icon thyIconName=\"angle-right\" class=\"operation-link\"></thy-icon>\n <br />\n <thy-icon thyIconName=\"angle-left\" class=\"operation-link\"></thy-icon>\n </div>\n</div>\n\n<thy-transfer-list\n [items]=\"rightDataSource\"\n [title]=\"rightTitle()\"\n [draggable]=\"thyRightDraggable()\"\n (draggableUpdate)=\"onDragUpdate('right', $event)\"\n [canLock]=\"thyRightCanLock()\"\n [maxLock]=\"thyRightLockMax()\"\n [max]=\"thyRightMax()\"\n [template]=\"rightTemplateRef\"\n [renderContentRef]=\"rightContentRef()\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\">\n <ng-template #rightTemplateRef let-item>\n @if (thyRightDraggable()) {\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n }\n <div class=\"item-name\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n @if (item.direction === 'right' && !item.isFixed) {\n <a class=\"link-secondary\" (click)=\"onSelect('right', { item: item })\">\n <thy-icon class=\"item-status\" thyIconName=\"close\"></thy-icon>\n </a>\n }\n </ng-template>\n</thy-transfer-list>\n\n<ng-template #thyTransferListItem let-item>\n @if (templateRef()) {\n <ng-template [ngTemplateOutlet]=\"templateRef()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n }\n @if (!templateRef()) {\n <thy-flexible-text [thyTooltipContent]=\"item.title\">\n {{ item.title }}\n </thy-flexible-text>\n }\n</ng-template>\n" }]
|
|
315
|
+
}], ctorParameters: () => [] });
|
|
337
316
|
|
|
338
317
|
class ThyTransferModule {
|
|
339
318
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyTransferModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-transfer.mjs","sources":["../../../src/transfer/transfer.interface.ts","../../../src/transfer/transfer-list.component.ts","../../../src/transfer/transfer-list.component.html","../../../src/transfer/transfer.component.ts","../../../src/transfer/transfer.component.html","../../../src/transfer/transfer.module.ts","../../../src/transfer/ngx-tethys-transfer.ts"],"sourcesContent":["export type Direction = 'left' | 'right';\n\nexport enum TransferDirection {\n left = 'left',\n right = 'right'\n}\n\nexport interface ThyTransferData {\n source: ThyTransferModel;\n target: ThyTransferModel;\n}\n\nexport interface ThyTransferModel {\n title?: string;\n data: Array<any>;\n}\n\n/**\n * @public\n * @order 20\n */\nexport interface ThyTransferItem {\n /**\n * 数据标题\n */\n title: string;\n\n /**\n * 设置方向,可选值 [left,right]\n */\n direction?: Direction;\n\n order?: number;\n\n disabled?: boolean;\n\n /**\n * 选中状态\n */\n checked?: boolean;\n\n isLock?: boolean;\n\n groupId?: string;\n\n isFixed?: boolean;\n\n /**\n * 自定义数据\n */\n [key: string]: any;\n}\n\nexport interface ThyTransferSelectEvent {\n item: ThyTransferItem;\n}\n\nexport interface ThyTransferChangeEvent {\n from?: string;\n to?: string;\n items?: ThyTransferItem[];\n left?: InnerTransferList;\n right?: InnerTransferList;\n}\n\nexport interface ThyTransferDragEvent {\n oldIndex?: number;\n newIndex?: number;\n model?: ThyTransferItem;\n models?: ThyTransferItem[];\n left?: InnerTransferList;\n right?: InnerTransferList;\n}\n\nexport interface InnerTransferDragEvent {\n dragEvent?: ThyTransferDragEvent;\n listData?: InnerTransferList;\n}\n\nexport interface InnerTransferList {\n lock?: ThyTransferItem[];\n unlock?: ThyTransferItem[];\n}\n","import { CdkDrag, CdkDragDrop, CdkDropList, CdkDropListGroup, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport {\n Component,\n DoCheck,\n EventEmitter,\n HostBinding,\n Input,\n IterableChanges,\n IterableDiffer,\n IterableDiffers,\n OnInit,\n Output,\n Signal,\n TemplateRef,\n ViewEncapsulation,\n inject\n} from '@angular/core';\n\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ThyList, ThyListItem } from 'ngx-tethys/list';\nimport { ThyDragDropDirective } from 'ngx-tethys/shared';\nimport { InnerTransferDragEvent, ThyTransferDragEvent, ThyTransferItem, ThyTransferSelectEvent } from './transfer.interface';\nimport { injectLocale, ThyTransferLocale } from 'ngx-tethys/i18n';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-transfer-list',\n templateUrl: './transfer-list.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [CdkDropListGroup, ThyList, CdkDropList, ThyDragDropDirective, ThyListItem, CdkDrag, NgClass, NgTemplateOutlet]\n})\nexport class ThyTransferList implements OnInit, DoCheck {\n private differs = inject(IterableDiffers);\n\n public lockItems: ThyTransferItem[] = [];\n\n public unlockItems: ThyTransferItem[] = [];\n\n private _diff: IterableDiffer<ThyTransferItem>;\n\n private _lockDiff: IterableDiffer<ThyTransferItem>;\n\n private _unlockDiff: IterableDiffer<ThyTransferItem>;\n\n locale: Signal<ThyTransferLocale> = injectLocale('transfer');\n\n @Input() title: string;\n\n @Input() items: ThyTransferItem[];\n\n @Input() draggable: boolean;\n\n @Input() canLock: boolean;\n\n @Input() maxLock: number;\n\n @Input() max: number;\n\n @Input() disabled: boolean;\n\n @Input() template: TemplateRef<any>;\n\n @Input('renderContentRef') contentRef: TemplateRef<any>;\n\n @Output() draggableUpdate: EventEmitter<InnerTransferDragEvent> = new EventEmitter<InnerTransferDragEvent>();\n\n @Output() selectItem: EventEmitter<ThyTransferSelectEvent> = new EventEmitter<ThyTransferSelectEvent>();\n\n @Output() unselectItem: EventEmitter<ThyTransferSelectEvent> = new EventEmitter<ThyTransferSelectEvent>();\n\n @HostBinding('class') hostClass = 'thy-transfer-list';\n\n ngOnInit() {\n this._combineTransferData();\n if (this.canLock) {\n this._lockDiff = this.differs.find(this.lockItems).create();\n this._unlockDiff = this.differs.find(this.unlockItems).create();\n } else {\n this._unlockDiff = this.differs.find(this.unlockItems).create();\n }\n this._diff = this.differs.find(this.items).create();\n }\n\n private _combineTransferData() {\n this.lockItems = [];\n this.unlockItems = [];\n if (this.canLock) {\n (this.items || []).forEach(item => {\n if (item.isLock) {\n this.lockItems.push(item);\n } else {\n this.unlockItems.push(item);\n }\n });\n } else {\n this.unlockItems = this.items;\n }\n }\n\n private _afterChangeItems(changes: IterableChanges<ThyTransferItem>, items: ThyTransferItem[]) {\n // 数据发生变化时,更改order值\n changes.forEachAddedItem(record => {\n record.item.order = record.currentIndex;\n });\n changes.forEachRemovedItem(() => {\n items.forEach((item, index) => {\n item.order = index;\n });\n });\n changes.forEachMovedItem(() => {\n items.forEach((item, index) => {\n item.order = index;\n });\n });\n }\n\n ngDoCheck() {\n const changes = this._diff.diff(this.items);\n if (changes) {\n this._afterChangeItems(changes, this.items);\n this._combineTransferData();\n }\n if (this._lockDiff) {\n const lockChanges = this._lockDiff.diff(this.lockItems);\n if (lockChanges) {\n this._afterChangeItems(lockChanges, this.lockItems);\n }\n }\n const unlockChanges = this._unlockDiff.diff(this.unlockItems);\n if (unlockChanges) {\n this._afterChangeItems(unlockChanges, this.unlockItems);\n }\n }\n\n lockListEnterPredicate = () => {\n return this.lockItems.length < this.maxLock;\n };\n\n unlockListEnterPredicate = (event: CdkDrag<ThyTransferItem>) => {\n return !event.data.isFixed;\n };\n\n onSelectItem = (item: ThyTransferItem) => {\n this.selectItem.emit({ item });\n };\n\n onUnselectItem = (item: ThyTransferItem) => {\n this.unselectItem.emit({ item });\n };\n\n drop(event: CdkDragDrop<ThyTransferItem[]>) {\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n } else {\n transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);\n (event.previousContainer.data || []).forEach(item => {\n item.isLock = event.previousContainer.id === 'lock';\n });\n\n (event.container.data || []).forEach(item => {\n item.isLock = event.container.id === 'lock';\n });\n }\n const dragEvent: ThyTransferDragEvent = {\n model: event.item.data,\n models: event.container.data,\n oldIndex: event.previousIndex,\n newIndex: event.currentIndex\n };\n this.draggableUpdate.emit({\n dragEvent: dragEvent,\n listData: { lock: this.lockItems, unlock: this.unlockItems }\n });\n }\n}\n","<div class=\"thy-transfer-list-header\">\n <span class=\"thy-transfer-list-header-title\"\n >{{ title }} · {{ items?.length }}\n @if (max) {\n <span>{{ locale().maxLimit.replace('{max}', max) }}</span>\n }\n </span>\n</div>\n@if (!contentRef) {\n <div class=\"thy-transfer-list-body\" cdkDropListGroup [cdkDropListGroupDisabled]=\"!draggable\">\n @if (canLock) {\n <div class=\"thy-transfer-list-group-name\">{{ locale().maxLockLimit.replace('{maxLock}', maxLock) }}</div>\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n id=\"lock\"\n [cdkDropListData]=\"lockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"lockListEnterPredicate\">\n @if (lockItems.length === 0) {\n <div class=\"cdk-drop-list-empty\"></div>\n }\n @for (item of lockItems; track $index) {\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n [ngClass]=\"{ active: item.checked }\">\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n }\n </thy-list>\n <div class=\"thy-transfer-list-group-name\">{{ locale().unlocked }}</div>\n }\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n [cdkDropListDisabled]=\"!draggable\"\n id=\"unlock\"\n [cdkDropListData]=\"unlockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"unlockListEnterPredicate\">\n @if (unlockItems.length === 0) {\n <div class=\"cdk-drop-list-empty\"></div>\n }\n @for (item of unlockItems; track $index) {\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n [ngClass]=\"{ active: item.checked, disabled: disabled && item.direction === 'left' }\">\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n }\n </thy-list>\n </div>\n} @else {\n <div class=\"thy-transfer-list-body\">\n <ng-container\n *ngTemplateOutlet=\"\n contentRef;\n context: {\n $implicit: items,\n onSelectItem: onSelectItem,\n onUnselectItem: onUnselectItem\n }\n \"></ng-container>\n </div>\n}\n","import { Component, ContentChild, EventEmitter, HostBinding, Input, OnInit, Output, TemplateRef, ViewEncapsulation } from '@angular/core';\n\nimport {\n Direction,\n InnerTransferDragEvent,\n ThyTransferChangeEvent,\n ThyTransferDragEvent,\n ThyTransferItem,\n ThyTransferSelectEvent,\n TransferDirection\n} from './transfer.interface';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ThyTransferList } from './transfer-list.component';\n\n/**\n * 穿梭框组件\n * @name thy-transfer\n * @order 10\n */\n@Component({\n selector: 'thy-transfer',\n templateUrl: './transfer.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [ThyTransferList, ThyIcon, NgClass, NgTemplateOutlet, ThyFlexibleText]\n})\nexport class ThyTransfer implements OnInit {\n @HostBinding('class') hostClass = 'thy-transfer';\n\n public leftDataSource: ThyTransferItem[] = [];\n\n public rightDataSource: ThyTransferItem[] = [];\n\n public allDataSource: ThyTransferItem[] = [];\n\n public leftTitle: string;\n\n public rightTitle: string;\n\n public rightDraggable = false;\n\n private _autoMove = true;\n\n /**\n * 数据源\n * @type ThyTransferItem[]\n */\n @Input()\n set thyData(value: ThyTransferItem[]) {\n if (value) {\n this.initializeTransferData(value);\n }\n }\n\n @Input() thyrenderLeftTemplateRef: TemplateRef<any>;\n\n @Input() thyrenderRightTemplateRef: TemplateRef<any>;\n\n /**\n * title集合,title[0]为左标题,title[1]为右标题\n * @type string[]\n */\n @Input()\n set thyTitles(value: string[]) {\n this.leftTitle = value[0] || '';\n this.rightTitle = value[1] || '';\n }\n\n /**\n * 右侧列表是否可以锁定\n * @default false\n */\n @Input() thyRightCanLock: boolean;\n\n /**\n * 右侧锁定最大数量\n */\n @Input() thyRightLockMax: number;\n\n /**\n * 右侧选择最大数量\n */\n @Input() thyRightMax: number;\n\n /**\n * 设置是否自动移动\n * @description.en-us Currently not implemented, in order to support the selections move\n * @default true\n */\n @Input()\n set thyAutoMove(value: boolean) {\n this._autoMove = value;\n }\n\n /**\n * 左侧列表是否拖动\n * @default false\n */\n @Input() thyLeftDraggable: boolean;\n\n /**\n * 右侧列表是否拖动\n * @default false\n */\n @Input() thyRightDraggable: boolean;\n\n /**\n * @type EventEmitter<ThyTransferDragEvent>\n */\n @Output() thyDraggableUpdate: EventEmitter<ThyTransferDragEvent> = new EventEmitter<ThyTransferDragEvent>();\n\n /**\n * Transfer变化的回调事件\n * @type EventEmitter<ThyTransferChangeEvent>\n */\n @Output() thyChange: EventEmitter<ThyTransferChangeEvent> = new EventEmitter<ThyTransferChangeEvent>();\n\n /**\n * 设置自定义Item渲染数据模板\n * @type TemplateRef\n */\n @ContentChild('renderTemplate') templateRef: TemplateRef<any>;\n\n /**\n * 设置自定义左侧内容模板\n * @type TemplateRef\n */\n @ContentChild('renderLeftTemplate') leftContentRef: TemplateRef<any>;\n\n /**\n * 设置自定义右侧内容模板\n * @type TemplateRef\n */\n @ContentChild('renderRightTemplate') rightContentRef: TemplateRef<any>;\n\n ngOnInit() {}\n\n initializeTransferData(data: ThyTransferItem[] = []) {\n this.allDataSource = [];\n this.leftDataSource = [];\n this.rightDataSource = [];\n data.forEach(item => {\n this.allDataSource.push(item);\n if (item.direction === TransferDirection.left) {\n this.leftDataSource.push(item);\n }\n if (item.direction === TransferDirection.right) {\n this.rightDataSource.push(item);\n }\n });\n }\n\n onSelect(from: Direction, event: ThyTransferSelectEvent) {\n if (event.item.isFixed) {\n return;\n }\n if (this.thyRightMax <= this.rightDataSource.length && from === TransferDirection.left) {\n return;\n }\n const to = from === TransferDirection.left ? TransferDirection.right : TransferDirection.left;\n event.item.checked = !event.item.checked;\n if (this._autoMove) {\n this.onMove(to);\n }\n }\n\n selectItem(event: ThyTransferSelectEvent) {\n this.onSelect(TransferDirection.left, event);\n }\n\n unselectItem(event: ThyTransferSelectEvent) {\n this.onSelect(TransferDirection.right, event);\n }\n\n private groupListByIsLock(list: ThyTransferItem[] = []) {\n const lock: ThyTransferItem[] = [],\n unlock: ThyTransferItem[] = [];\n list.forEach(item => {\n if (item.isLock) {\n lock.push(item);\n } else {\n unlock.push(item);\n }\n });\n return { lock: lock, unlock: unlock };\n }\n\n onMove(to: Direction) {\n const fromDataSource = to === TransferDirection.right ? this.leftDataSource : this.rightDataSource;\n const toDataSource = to === TransferDirection.right ? this.rightDataSource : this.leftDataSource;\n const selections = fromDataSource.filter(item => item.checked);\n const changeEvent: ThyTransferChangeEvent = {\n from: to === TransferDirection.right ? TransferDirection.left : TransferDirection.right,\n to: to,\n items: [...selections]\n };\n selections.forEach(item => {\n const index = fromDataSource.indexOf(item);\n const removed = fromDataSource.splice(index, 1)[0];\n removed.checked = !removed.checked;\n removed.direction = to;\n toDataSource.push(removed);\n });\n this.thyChange.emit({\n ...changeEvent,\n left: this.groupListByIsLock(this.leftDataSource),\n right: this.groupListByIsLock(this.rightDataSource)\n });\n }\n\n onDragUpdate(direction: Direction, event: InnerTransferDragEvent) {\n const otherDirectionData = direction === TransferDirection.left ? this.rightDataSource : this.leftDataSource;\n const otherListData = this.groupListByIsLock(otherDirectionData);\n this.thyDraggableUpdate.emit({\n ...event.dragEvent,\n left: direction === TransferDirection.left ? event.listData : otherListData,\n right: direction === TransferDirection.right ? event.listData : otherListData\n });\n\n this.rightDataSource =\n direction === TransferDirection.right\n ? [...event.listData.lock, ...event.listData.unlock]\n : [...otherListData.lock, ...otherListData.unlock];\n }\n}\n","<thy-transfer-list\n [items]=\"allDataSource\"\n [title]=\"leftTitle\"\n [draggable]=\"thyLeftDraggable\"\n [disabled]=\"thyRightMax <= rightDataSource.length\"\n [renderContentRef]=\"leftContentRef\"\n (draggableUpdate)=\"onDragUpdate('left', $event)\"\n [template]=\"leftTemplateRef\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\"\n >\n <ng-template #leftTemplateRef let-item>\n <div (click)=\"onSelect(item.direction === 'left' ? 'left' : 'right', { item: item })\" class=\"list-item-content\">\n @if (thyLeftDraggable) {\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n }\n <div class=\"item-name\" [ngClass]=\"{ 'un-select-item': item.direction !== 'right' }\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n @if (item.direction === 'right') {\n <thy-icon class=\"text-primary item-status\" thyIconName=\"check\"></thy-icon>\n }\n </div>\n </ng-template>\n</thy-transfer-list>\n\n<div class=\"thy-transfer-operation\">\n <div class=\"thy-transfer-operation-body\">\n <thy-icon thyIconName=\"angle-right\" class=\"operation-link\"></thy-icon>\n <br />\n <thy-icon thyIconName=\"angle-left\" class=\"operation-link\"></thy-icon>\n </div>\n</div>\n\n<thy-transfer-list\n [items]=\"rightDataSource\"\n [title]=\"rightTitle\"\n [draggable]=\"thyRightDraggable\"\n (draggableUpdate)=\"onDragUpdate('right', $event)\"\n [canLock]=\"thyRightCanLock\"\n [maxLock]=\"thyRightLockMax\"\n [max]=\"thyRightMax\"\n [template]=\"rightTemplateRef\"\n [renderContentRef]=\"rightContentRef\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\"\n >\n <ng-template #rightTemplateRef let-item>\n @if (thyRightDraggable) {\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n }\n <div class=\"item-name\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n @if (item.direction === 'right' && !item.isFixed) {\n <a class=\"link-secondary\" (click)=\"onSelect('right', { item: item })\">\n <thy-icon class=\"item-status\" thyIconName=\"close\"></thy-icon>\n </a>\n }\n </ng-template>\n</thy-transfer-list>\n\n<ng-template #thyTransferListItem let-item>\n @if (templateRef) {\n <ng-template [ngTemplateOutlet]=\"templateRef\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n }\n @if (!templateRef) {\n <thy-flexible-text [thyTooltipContent]=\"item.title\">\n {{ item.title }}\n </thy-flexible-text>\n }\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyTransfer } from './transfer.component';\nimport { ThyTransferList } from './transfer-list.component';\nimport { ThyButtonModule } from 'ngx-tethys/button';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyListModule } from 'ngx-tethys/list';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyFlexibleTextModule } from 'ngx-tethys/flexible-text';\n@NgModule({\n imports: [\n CommonModule,\n ThyButtonModule,\n DragDropModule,\n ThyIconModule,\n ThyListModule,\n ThySharedModule,\n ThyFlexibleTextModule,\n ThyTransfer,\n ThyTransferList\n ],\n exports: [ThyTransfer]\n})\nexport class ThyTransferModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-transfer.mjs","sources":["../../../src/transfer/transfer.interface.ts","../../../src/transfer/transfer-list.component.ts","../../../src/transfer/transfer-list.component.html","../../../src/transfer/transfer.component.ts","../../../src/transfer/transfer.component.html","../../../src/transfer/transfer.module.ts","../../../src/transfer/ngx-tethys-transfer.ts"],"sourcesContent":["export type Direction = 'left' | 'right';\n\nexport enum TransferDirection {\n left = 'left',\n right = 'right'\n}\n\nexport interface ThyTransferData {\n source: ThyTransferModel;\n target: ThyTransferModel;\n}\n\nexport interface ThyTransferModel {\n title?: string;\n data: Array<any>;\n}\n\n/**\n * @public\n * @order 20\n */\nexport interface ThyTransferItem {\n /**\n * 数据标题\n */\n title: string;\n\n /**\n * 设置方向,可选值 [left,right]\n */\n direction?: Direction;\n\n order?: number;\n\n disabled?: boolean;\n\n /**\n * 选中状态\n */\n checked?: boolean;\n\n isLock?: boolean;\n\n groupId?: string;\n\n isFixed?: boolean;\n\n /**\n * 自定义数据\n */\n [key: string]: any;\n}\n\nexport interface ThyTransferSelectEvent {\n item: ThyTransferItem;\n}\n\nexport interface ThyTransferChangeEvent {\n from?: string;\n to?: string;\n items?: ThyTransferItem[];\n left?: InnerTransferList;\n right?: InnerTransferList;\n}\n\nexport interface ThyTransferDragEvent {\n oldIndex?: number;\n newIndex?: number;\n model?: ThyTransferItem;\n models?: ThyTransferItem[];\n left?: InnerTransferList;\n right?: InnerTransferList;\n}\n\nexport interface InnerTransferDragEvent {\n dragEvent?: ThyTransferDragEvent;\n listData?: InnerTransferList;\n}\n\nexport interface InnerTransferList {\n lock?: ThyTransferItem[];\n unlock?: ThyTransferItem[];\n}\n","import { CdkDrag, CdkDragDrop, CdkDropList, CdkDropListGroup, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport {\n Component,\n DoCheck,\n IterableChanges,\n IterableDiffer,\n IterableDiffers,\n OnInit,\n Signal,\n TemplateRef,\n ViewEncapsulation,\n inject,\n input,\n numberAttribute,\n output\n} from '@angular/core';\n\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ThyList, ThyListItem } from 'ngx-tethys/list';\nimport { ThyDragDropDirective } from 'ngx-tethys/shared';\nimport { InnerTransferDragEvent, ThyTransferDragEvent, ThyTransferItem, ThyTransferSelectEvent } from './transfer.interface';\nimport { injectLocale, ThyTransferLocale } from 'ngx-tethys/i18n';\nimport { coerceBooleanProperty, ThyBooleanInput } from 'ngx-tethys/util';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-transfer-list',\n templateUrl: './transfer-list.component.html',\n host: {\n class: 'thy-transfer-list'\n },\n encapsulation: ViewEncapsulation.None,\n imports: [CdkDropListGroup, ThyList, CdkDropList, ThyDragDropDirective, ThyListItem, CdkDrag, NgClass, NgTemplateOutlet]\n})\nexport class ThyTransferList implements OnInit, DoCheck {\n private differs = inject(IterableDiffers);\n\n public lockItems: ThyTransferItem[] = [];\n\n public unlockItems: ThyTransferItem[] = [];\n\n private _diff: IterableDiffer<ThyTransferItem>;\n\n private _lockDiff: IterableDiffer<ThyTransferItem>;\n\n private _unlockDiff: IterableDiffer<ThyTransferItem>;\n\n locale: Signal<ThyTransferLocale> = injectLocale('transfer');\n\n readonly title = input<string>();\n\n readonly items = input<ThyTransferItem[]>();\n\n readonly draggable = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n readonly canLock = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n readonly maxLock = input<number, unknown>(undefined, { transform: numberAttribute });\n\n readonly max = input<number, unknown>(undefined, { transform: numberAttribute });\n\n readonly disabled = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n readonly template = input<TemplateRef<any>>();\n\n readonly renderContentRef = input<TemplateRef<any>>();\n\n readonly draggableUpdate = output<InnerTransferDragEvent>();\n\n readonly selectItem = output<ThyTransferSelectEvent>();\n\n readonly unselectItem = output<ThyTransferSelectEvent>();\n\n constructor() {}\n\n ngOnInit() {\n this._combineTransferData();\n if (this.canLock()) {\n this._lockDiff = this.differs.find(this.lockItems).create();\n this._unlockDiff = this.differs.find(this.unlockItems).create();\n } else {\n this._unlockDiff = this.differs.find(this.unlockItems).create();\n }\n this._diff = this.differs.find(this.items()).create();\n }\n\n private _combineTransferData() {\n this.lockItems = [];\n this.unlockItems = [];\n if (this.canLock()) {\n (this.items() || []).forEach(item => {\n if (item.isLock) {\n this.lockItems.push(item);\n } else {\n this.unlockItems.push(item);\n }\n });\n } else {\n this.unlockItems = this.items();\n }\n }\n\n private _afterChangeItems(changes: IterableChanges<ThyTransferItem>, items: ThyTransferItem[]) {\n // 数据发生变化时,更改order值\n changes.forEachAddedItem(record => {\n record.item.order = record.currentIndex;\n });\n changes.forEachRemovedItem(() => {\n items.forEach((item, index) => {\n item.order = index;\n });\n });\n changes.forEachMovedItem(() => {\n items.forEach((item, index) => {\n item.order = index;\n });\n });\n }\n\n ngDoCheck() {\n const changes = this._diff.diff(this.items());\n if (changes) {\n this._afterChangeItems(changes, this.items());\n this._combineTransferData();\n }\n if (this._lockDiff) {\n const lockChanges = this._lockDiff.diff(this.lockItems);\n if (lockChanges) {\n this._afterChangeItems(lockChanges, this.lockItems);\n }\n }\n const unlockChanges = this._unlockDiff.diff(this.unlockItems);\n if (unlockChanges) {\n this._afterChangeItems(unlockChanges, this.unlockItems);\n }\n }\n\n lockListEnterPredicate = () => {\n return this.lockItems.length < this.maxLock();\n };\n\n unlockListEnterPredicate = (event: CdkDrag<ThyTransferItem>) => {\n return !event.data.isFixed;\n };\n\n onSelectItem = (item: ThyTransferItem) => {\n this.selectItem.emit({ item });\n };\n\n onUnselectItem = (item: ThyTransferItem) => {\n this.unselectItem.emit({ item });\n };\n\n drop(event: CdkDragDrop<ThyTransferItem[]>) {\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n } else {\n transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);\n (event.previousContainer.data || []).forEach(item => {\n item.isLock = event.previousContainer.id === 'lock';\n });\n\n (event.container.data || []).forEach(item => {\n item.isLock = event.container.id === 'lock';\n });\n }\n const dragEvent: ThyTransferDragEvent = {\n model: event.item.data,\n models: event.container.data,\n oldIndex: event.previousIndex,\n newIndex: event.currentIndex\n };\n this.draggableUpdate.emit({\n dragEvent: dragEvent,\n listData: { lock: this.lockItems, unlock: this.unlockItems }\n });\n }\n}\n","<div class=\"thy-transfer-list-header\">\n <span class=\"thy-transfer-list-header-title\"\n >{{ title() }} · {{ items()?.length }}\n @if (max()) {\n <span>{{ locale().maxLimit.replace('{max}', max()?.toString() ?? '') }}</span>\n }\n </span>\n</div>\n@if (!renderContentRef()) {\n <div class=\"thy-transfer-list-body\" cdkDropListGroup [cdkDropListGroupDisabled]=\"!draggable()\">\n @if (canLock()) {\n <div class=\"thy-transfer-list-group-name\">{{ locale().maxLockLimit.replace('{maxLock}', maxLock()?.toString() ?? '') }}</div>\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n id=\"lock\"\n [cdkDropListData]=\"lockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"lockListEnterPredicate\">\n @if (lockItems.length === 0) {\n <div class=\"cdk-drop-list-empty\"></div>\n }\n @for (item of lockItems; track $index) {\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n [ngClass]=\"{ active: item.checked }\">\n <ng-template [ngTemplateOutlet]=\"template()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n }\n </thy-list>\n <div class=\"thy-transfer-list-group-name\">{{ locale().unlocked }}</div>\n }\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n [cdkDropListDisabled]=\"!draggable()\"\n id=\"unlock\"\n [cdkDropListData]=\"unlockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"unlockListEnterPredicate\">\n @if (unlockItems.length === 0) {\n <div class=\"cdk-drop-list-empty\"></div>\n }\n @for (item of unlockItems; track $index) {\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n [ngClass]=\"{ active: item.checked, disabled: disabled() && item.direction === 'left' }\">\n <ng-template [ngTemplateOutlet]=\"template()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n }\n </thy-list>\n </div>\n} @else {\n <div class=\"thy-transfer-list-body\">\n <ng-container\n *ngTemplateOutlet=\"\n renderContentRef();\n context: {\n $implicit: items(),\n onSelectItem: onSelectItem,\n onUnselectItem: onUnselectItem\n }\n \"></ng-container>\n </div>\n}\n","import {\n Component,\n OnInit,\n TemplateRef,\n ViewEncapsulation,\n computed,\n input,\n output,\n contentChild,\n numberAttribute,\n effect\n} from '@angular/core';\n\nimport {\n Direction,\n InnerTransferDragEvent,\n ThyTransferChangeEvent,\n ThyTransferDragEvent,\n ThyTransferItem,\n ThyTransferSelectEvent,\n TransferDirection\n} from './transfer.interface';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ThyTransferList } from './transfer-list.component';\nimport { coerceBooleanProperty, ThyBooleanInput } from 'ngx-tethys/util';\n\n/**\n * 穿梭框组件\n * @name thy-transfer\n * @order 10\n */\n@Component({\n selector: 'thy-transfer',\n templateUrl: './transfer.component.html',\n host: {\n class: 'thy-transfer'\n },\n encapsulation: ViewEncapsulation.None,\n imports: [ThyTransferList, ThyIcon, NgClass, NgTemplateOutlet, ThyFlexibleText]\n})\nexport class ThyTransfer implements OnInit {\n public leftDataSource: ThyTransferItem[] = [];\n\n public rightDataSource: ThyTransferItem[] = [];\n /**\n * 数据源\n * @type ThyTransferItem[]\n */\n readonly thyData = input<ThyTransferItem[]>([]);\n\n readonly thyRenderLeftTemplateRef = input<TemplateRef<any>>();\n\n readonly thyRenderRightTemplateRef = input<TemplateRef<any>>();\n\n /**\n * title集合,title[0]为左标题,title[1]为右标题\n * @type string[]\n */\n readonly thyTitles = input<string[]>([]);\n\n /**\n * 右侧列表是否可以锁定\n * @default false\n */\n readonly thyRightCanLock = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n /**\n * 右侧锁定最大数量\n */\n readonly thyRightLockMax = input<number, unknown>(undefined, { transform: numberAttribute });\n\n /**\n * 右侧选择最大数量\n */\n readonly thyRightMax = input<number, unknown>(undefined, { transform: numberAttribute });\n\n /**\n * 设置是否自动移动\n * @description.en-us Currently not implemented, in order to support the selections move\n * @default true\n */\n readonly thyAutoMove = input<boolean, ThyBooleanInput>(true, { transform: coerceBooleanProperty });\n\n /**\n * 左侧列表是否拖动\n * @default false\n */\n readonly thyLeftDraggable = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n /**\n * 右侧列表是否拖动\n * @default false\n */\n readonly thyRightDraggable = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n /**\n * @type EventEmitter<ThyTransferDragEvent>\n */\n thyDraggableUpdate = output<ThyTransferDragEvent>();\n\n /**\n * Transfer变化的回调事件\n * @type EventEmitter<ThyTransferChangeEvent>\n */\n thyChange = output<ThyTransferChangeEvent>();\n\n /**\n * 设置自定义Item渲染数据模板\n * @type TemplateRef\n */\n readonly templateRef = contentChild<TemplateRef<any>>('renderTemplate');\n\n /**\n * 设置自定义左侧内容模板\n * @type TemplateRef\n */\n readonly leftContentRef = contentChild<TemplateRef<any>>('renderLeftTemplate');\n\n /**\n * 设置自定义右侧内容模板\n * @type TemplateRef\n */\n readonly rightContentRef = contentChild<TemplateRef<any>>('renderRightTemplate');\n\n readonly leftTitle = computed(() => this.thyTitles()[0] || '');\n\n readonly rightTitle = computed(() => this.thyTitles()[1] || '');\n\n constructor() {\n effect(() => {\n this.initializeTransferData();\n });\n }\n\n ngOnInit() {}\n\n initializeTransferData(data: ThyTransferItem[] = []) {\n this.leftDataSource = [];\n this.rightDataSource = [];\n this.thyData().forEach(item => {\n if (item.direction === TransferDirection.left) {\n this.leftDataSource.push(item);\n }\n if (item.direction === TransferDirection.right) {\n this.rightDataSource.push(item);\n }\n });\n }\n\n onSelect(from: Direction, event: ThyTransferSelectEvent) {\n if (event.item.isFixed) {\n return;\n }\n if (this.thyRightMax() <= this.rightDataSource.length && from === TransferDirection.left) {\n return;\n }\n const to = from === TransferDirection.left ? TransferDirection.right : TransferDirection.left;\n event.item.checked = !event.item.checked;\n if (this.thyAutoMove()) {\n this.onMove(to);\n }\n }\n\n selectItem(event: ThyTransferSelectEvent) {\n this.onSelect(TransferDirection.left, event);\n }\n\n unselectItem(event: ThyTransferSelectEvent) {\n this.onSelect(TransferDirection.right, event);\n }\n\n private groupListByIsLock(list: ThyTransferItem[] = []) {\n const lock: ThyTransferItem[] = [],\n unlock: ThyTransferItem[] = [];\n list.forEach(item => {\n if (item.isLock) {\n lock.push(item);\n } else {\n unlock.push(item);\n }\n });\n return { lock: lock, unlock: unlock };\n }\n\n onMove(to: Direction) {\n const fromDataSource = to === TransferDirection.right ? this.leftDataSource : this.rightDataSource;\n const toDataSource = to === TransferDirection.right ? this.rightDataSource : this.leftDataSource;\n const selections = fromDataSource.filter(item => item.checked);\n const changeEvent: ThyTransferChangeEvent = {\n from: to === TransferDirection.right ? TransferDirection.left : TransferDirection.right,\n to: to,\n items: [...selections]\n };\n selections.forEach(item => {\n const index = fromDataSource.indexOf(item);\n const removed = fromDataSource.splice(index, 1)[0];\n removed.checked = !removed.checked;\n removed.direction = to;\n toDataSource.push(removed);\n });\n this.thyChange.emit({\n ...changeEvent,\n left: this.groupListByIsLock(this.leftDataSource),\n right: this.groupListByIsLock(this.rightDataSource)\n });\n }\n\n onDragUpdate(direction: Direction, event: InnerTransferDragEvent) {\n const otherDirectionData = direction === TransferDirection.left ? this.rightDataSource : this.leftDataSource;\n const otherListData = this.groupListByIsLock(otherDirectionData);\n this.thyDraggableUpdate.emit({\n ...event.dragEvent,\n left: direction === TransferDirection.left ? event.listData : otherListData,\n right: direction === TransferDirection.right ? event.listData : otherListData\n });\n\n this.rightDataSource =\n direction === TransferDirection.right\n ? [...event.listData.lock, ...event.listData.unlock]\n : [...otherListData.lock, ...otherListData.unlock];\n }\n}\n","<thy-transfer-list\n [items]=\"thyData()\"\n [title]=\"leftTitle()\"\n [draggable]=\"thyLeftDraggable()\"\n [disabled]=\"thyRightMax() <= rightDataSource.length\"\n [renderContentRef]=\"leftContentRef()\"\n (draggableUpdate)=\"onDragUpdate('left', $event)\"\n [template]=\"leftTemplateRef\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\">\n <ng-template #leftTemplateRef let-item>\n <div (click)=\"onSelect(item.direction === 'left' ? 'left' : 'right', { item: item })\" class=\"list-item-content\">\n @if (thyLeftDraggable()) {\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n }\n <div class=\"item-name\" [ngClass]=\"{ 'un-select-item': item.direction !== 'right' }\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n @if (item.direction === 'right') {\n <thy-icon class=\"text-primary item-status\" thyIconName=\"check\"></thy-icon>\n }\n </div>\n </ng-template>\n</thy-transfer-list>\n\n<div class=\"thy-transfer-operation\">\n <div class=\"thy-transfer-operation-body\">\n <thy-icon thyIconName=\"angle-right\" class=\"operation-link\"></thy-icon>\n <br />\n <thy-icon thyIconName=\"angle-left\" class=\"operation-link\"></thy-icon>\n </div>\n</div>\n\n<thy-transfer-list\n [items]=\"rightDataSource\"\n [title]=\"rightTitle()\"\n [draggable]=\"thyRightDraggable()\"\n (draggableUpdate)=\"onDragUpdate('right', $event)\"\n [canLock]=\"thyRightCanLock()\"\n [maxLock]=\"thyRightLockMax()\"\n [max]=\"thyRightMax()\"\n [template]=\"rightTemplateRef\"\n [renderContentRef]=\"rightContentRef()\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\">\n <ng-template #rightTemplateRef let-item>\n @if (thyRightDraggable()) {\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n }\n <div class=\"item-name\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n @if (item.direction === 'right' && !item.isFixed) {\n <a class=\"link-secondary\" (click)=\"onSelect('right', { item: item })\">\n <thy-icon class=\"item-status\" thyIconName=\"close\"></thy-icon>\n </a>\n }\n </ng-template>\n</thy-transfer-list>\n\n<ng-template #thyTransferListItem let-item>\n @if (templateRef()) {\n <ng-template [ngTemplateOutlet]=\"templateRef()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n }\n @if (!templateRef()) {\n <thy-flexible-text [thyTooltipContent]=\"item.title\">\n {{ item.title }}\n </thy-flexible-text>\n }\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyTransfer } from './transfer.component';\nimport { ThyTransferList } from './transfer-list.component';\nimport { ThyButtonModule } from 'ngx-tethys/button';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyListModule } from 'ngx-tethys/list';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyFlexibleTextModule } from 'ngx-tethys/flexible-text';\n@NgModule({\n imports: [\n CommonModule,\n ThyButtonModule,\n DragDropModule,\n ThyIconModule,\n ThyListModule,\n ThySharedModule,\n ThyFlexibleTextModule,\n ThyTransfer,\n ThyTransferList\n ],\n exports: [ThyTransfer]\n})\nexport class ThyTransferModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ViewportRuler, CdkOverlayOrigin, CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
|
|
2
2
|
import { isPlatformBrowser, NgTemplateOutlet, NgClass, NgStyle, CommonModule } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { inject, ElementRef, NgZone, ChangeDetectorRef, PLATFORM_ID,
|
|
4
|
+
import { inject, ElementRef, NgZone, ChangeDetectorRef, PLATFORM_ID, output, forwardRef, Input, ViewChild, ContentChild, HostBinding, Component, NgModule } from '@angular/core';
|
|
5
5
|
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
6
6
|
import { ThyEmpty, ThyEmptyModule } from 'ngx-tethys/empty';
|
|
7
7
|
import { ThyIcon, ThyIconModule } from 'ngx-tethys/icon';
|
|
@@ -209,7 +209,7 @@ class ThyTreeSelect extends TabIndexDisabledControlValueAccessorMixin {
|
|
|
209
209
|
/**
|
|
210
210
|
* 树选择组件展开和折叠状态事件
|
|
211
211
|
*/
|
|
212
|
-
this.thyExpandStatusChange =
|
|
212
|
+
this.thyExpandStatusChange = output();
|
|
213
213
|
}
|
|
214
214
|
ngOnInit() {
|
|
215
215
|
this.isMulti = this.thyMultiple;
|
|
@@ -514,8 +514,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
514
514
|
type: Input
|
|
515
515
|
}], thyGetNodeChildren: [{
|
|
516
516
|
type: Input
|
|
517
|
-
}], thyExpandStatusChange: [{
|
|
518
|
-
type: Output
|
|
519
517
|
}] } });
|
|
520
518
|
const DEFAULT_ITEM_SIZE = 40;
|
|
521
519
|
/**
|