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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-button.mjs","sources":["../../../src/button/button-group.component.ts","../../../src/button/button-icon.component.ts","../../../src/button/button-icon.component.html","../../../src/button/button.component.ts","../../../src/button/button.component.html","../../../src/button/button.module.ts","../../../src/button/ngx-tethys-button.ts"],"sourcesContent":["import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { Component, HostBinding, Input, OnInit, ViewEncapsulation } from '@angular/core';\n\nexport type ButtonGroupSize = 'sm' | 'lg' | 'xs' | 'md';\n\nexport type ButtonGroupType = 'outline-primary' | 'outline-default';\n\nconst buttonGroupSizeMap = {\n sm: ['btn-group-sm'],\n md: ['btn-group-md'],\n lg: ['btn-group-lg'],\n xs: ['btn-group-xs']\n};\n\n/**\n * 按钮分组组件\n * @name thy-button-group\n * @order 30\n */\n@Component({\n selector: 'thy-button-group',\n template: '<ng-content></ng-content>',\n encapsulation: ViewEncapsulation.None\n})\nexport class ThyButtonGroup implements OnInit {\n private initialized = false;\n\n private type: string;\n\n private size: string;\n\n private hostRenderer = useHostRenderer();\n\n /**\n * 大小\n * @type xs | sm | md | lg\n * @default md\n */\n @Input()\n set thySize(size: ButtonGroupSize) {\n this.size = size;\n if (this.initialized) {\n this.setClasses();\n }\n }\n\n /**\n * 类型\n * @type outline-default | outline-primary\n * @default outline-default\n */\n @Input()\n set thyType(type: ButtonGroupType) {\n this.type = type;\n if (this.initialized) {\n this.setClasses();\n }\n }\n\n /**\n * 是否需要最小宽度,默认按钮最小宽度为80px\n * @default false\n */\n @Input()\n set thyClearMinWidth(value: string) {\n this.thyClearMinWidthClassName = coerceBooleanProperty(value);\n }\n\n @HostBinding('class.btn-group') _isButtonGroup = true;\n @HostBinding(`class.btn-group-clear-min-width`)\n thyClearMinWidthClassName = false;\n\n constructor() {}\n\n ngOnInit() {\n this.setClasses();\n this.initialized = true;\n }\n\n private setClasses() {\n let classNames: string[] = [];\n if (this.type) {\n classNames.push(`btn-group-${this.type}`);\n }\n if (buttonGroupSizeMap[this.size]) {\n classNames.push(buttonGroupSizeMap[this.size]);\n }\n this.hostRenderer.updateClass(classNames);\n }\n}\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nexport type ThyButtonIconShape = '' | 'circle-dashed' | 'circle-solid' | 'circle-thick-dashed' | 'circle-thick-solid' | 'self-icon';\n\nconst sizeClassesMap = {\n lg: ['btn-icon-lg'],\n md: ['btn-icon-md'],\n sm: ['btn-icon-sm'],\n xs: ['btn-icon-xs']\n};\n\nconst shapeClassesMap = {\n 'circle-dashed': ['btn-icon-circle', 'circle-dashed'],\n 'circle-solid': ['btn-icon-circle', 'circle-solid'],\n 'circle-thick-dashed': ['btn-icon-circle', 'circle-dashed', 'border-thick'],\n 'circle-thick-solid': ['btn-icon-circle', 'circle-solid', 'border-thick'],\n 'self-icon': ['btn-icon-self-circle']\n};\n\nconst themeClassesMap: any = {\n 'danger-weak': ['btn-icon-danger-weak']\n};\n\n/**\n * 操作按钮图标,支持`thy-button-icon`组件和`thyButtonIcon`指令两种形式\n * @name thy-button-icon,[thy-button-icon],[thyButtonIcon]\n * @order 20\n */\n@Component({\n selector: 'thy-button-icon,[thy-button-icon],[thyButtonIcon]',\n templateUrl: './button-icon.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ThyIcon, NgClass]\n})\nexport class ThyButtonIcon implements OnInit {\n /**\n * 大小\n * @type xs | sm | md | lg\n * @default 36px\n */\n @Input()\n set thySize(size: string) {\n this.size = size;\n this.setClasses();\n }\n\n /**\n * 图标, 和`thyButtonIcon`相同,当使用`thy-button-icon`时,只能使用 thyIcon 设置图标\n */\n @Input()\n set thyIcon(icon: string) {\n this.setIconClass(icon);\n }\n\n /**\n * 图标按钮的图标\n */\n @Input()\n set thyButtonIcon(icon: string) {\n this.setIconClass(icon);\n }\n\n /**\n * 展示的形状,默认只显示字体图标图标,circle-dashed, circle-solid 展示成虚线,实线边框圆形图标, circle-thick-dashed, circle-thick-solid 边框加粗\n */\n @Input()\n set thyShape(value: ThyButtonIconShape) {\n this.shape = value;\n this.setClasses();\n }\n\n /**\n * 亮色,颜色更浅,适合左侧导航顶部的按钮\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n set thyLight(value: boolean) {\n this._isLighted = value;\n }\n\n /**\n * 设置为选中状态\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n set thyActive(value: boolean) {\n this._isActive = value;\n }\n\n /**\n * 按钮展示类型,默认图标移上去显示主色, danger-weak 鼠标移上去显示 danger 红色\n */\n @Input()\n set thyTheme(value: string) {\n this.theme = value;\n this.setClasses();\n }\n\n constructor() {}\n\n private initialized = false;\n\n private shape: ThyButtonIconShape;\n\n private size: string;\n\n private hostRenderer = useHostRenderer();\n\n iconPrefix = 'wtf';\n\n iconClasses: string[];\n\n icon: string;\n\n theme: string;\n\n svgIconName: string;\n\n @HostBinding('class.btn') _isBtn = true;\n @HostBinding('class.btn-icon') _isBtnIcon = true;\n @HostBinding('class.btn-icon-light') _isLighted = false;\n @HostBinding('class.btn-icon-active') _isActive = false;\n\n @Input() thyColor: string;\n\n private setIconClass(icon: string) {\n if (icon) {\n if (icon.includes('wtf')) {\n const classes = icon.split(' ');\n if (classes.length === 1) {\n classes.unshift('wtf');\n }\n this.iconClasses = classes;\n this.svgIconName = null;\n } else {\n this.svgIconName = icon;\n }\n } else {\n this.iconClasses = null;\n this.svgIconName = null;\n }\n }\n\n private setClasses(first = false) {\n // 设置样式判断是否已经初始化,未初始化直接返回,除非是初次调用\n // 只有 ngOnInit 调用会传入 first = true\n if (!first && !this.initialized) {\n return;\n }\n const classes = sizeClassesMap[this.size] ? [...sizeClassesMap[this.size]] : [];\n if (this.shape && shapeClassesMap[this.shape]) {\n shapeClassesMap[this.shape].forEach((className: string) => {\n classes.push(className);\n });\n }\n if (this.theme && themeClassesMap[this.theme]) {\n themeClassesMap[this.theme].forEach((className: string) => {\n classes.push(className);\n });\n }\n this.hostRenderer.updateClass(classes);\n }\n\n ngOnInit() {\n this.setClasses(true);\n this.initialized = true;\n }\n}\n","@if (svgIconName) {\n <thy-icon [thyIconName]=\"svgIconName\" [style.color]=\"thyColor\" [style.borderColor]=\"thyColor\"></thy-icon>\n} @else {\n @if (iconClasses) {\n <i [ngClass]=\"iconClasses\" [style.color]=\"thyColor\" [style.borderColor]=\"thyColor\"></i>\n }\n}\n<ng-content></ng-content>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnInit,\n Renderer2,\n ViewEncapsulation,\n AfterViewInit,\n inject\n} from '@angular/core';\n\nimport { assertIconOnly, coerceBooleanProperty } from 'ngx-tethys/util';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass } from '@angular/common';\n\nexport type ThyButtonType =\n | 'primary'\n | 'secondary'\n | 'info'\n | 'outline-primary'\n | 'outline-default'\n | 'danger'\n | 'link'\n | 'link-secondary'\n | 'warning'\n | 'outline-warning'\n | 'success'\n | 'outline-success'\n | 'outline-info'\n | 'outline-danger'\n | 'link-danger-weak'\n | 'link-danger'\n | 'link-success';\n\nconst btnTypeClassesMap = {\n primary: ['btn-primary'],\n secondary: ['btn-primary', 'btn-md'],\n info: ['btn-info'],\n warning: ['btn-warning'],\n danger: ['btn-danger'],\n 'outline-primary': ['btn-outline-primary'],\n 'outline-default': ['btn-outline-default'],\n link: ['btn-link'], // 链接按钮\n 'link-info': ['btn-link', 'btn-link-info'], // 幽灵链接按钮\n 'link-secondary': ['btn-link', 'btn-link-primary-weak'], // 幽灵链接按钮\n 'link-danger-weak': ['btn-link', 'btn-link-danger-weak'], // 幽灵危险按钮\n 'link-danger': ['btn-link', 'btn-link-danger'], // 危险按钮\n 'link-success': ['btn-link', 'btn-link-success'] // 成功按钮\n};\n\nconst iconOnlyClass = 'thy-btn-icon-only';\n\n/**\n * 操作按钮,支持组件`thy-button`和`thyButton`指令两种形式\n * @name thy-button,[thy-button],[thyButton]\n * @order 10\n */\n@Component({\n selector: 'thy-button,[thy-button],[thyButton]',\n templateUrl: './button.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-btn btn'\n },\n imports: [ThyIcon, NgClass]\n})\nexport class ThyButton implements OnInit, AfterViewInit {\n private elementRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n private _initialized = false;\n\n private _originalText: string;\n\n private _type: string;\n\n private _size: string;\n\n private _icon: string;\n\n private _loading: boolean;\n\n private _loadingText: string;\n\n // 圆角方形\n _isRadiusSquare = false;\n\n iconClass: string[];\n\n svgIconName: string;\n\n private get nativeElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n private hostRenderer = useHostRenderer();\n\n /**\n * 按钮类型,支持添加前缀`outline-`实现线框按钮,支持添加前缀`link-`实现按钮链接\n * @type primary | info | warning | danger | success\n * @default primary\n */\n @Input()\n set thyButton(value: ThyButtonType) {\n this.setBtnType(value);\n }\n\n /**\n * 和`thyButton`参数一样,一般使用`thyButton`,为了减少参数输入, 当通过`thy-button`使用时,只能使用该参数控制类型\n * @default primary\n */\n @Input()\n set thyType(value: ThyButtonType) {\n this.setBtnType(value);\n }\n\n /**\n * 加载状态\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n set thyLoading(value: boolean) {\n if (!this._loading && value) {\n this._loading = value;\n const textElement = this.nativeElement.querySelector('span');\n this._originalText = textElement ? textElement.innerText : '';\n this.setLoadingStatus();\n } else {\n this._loading = value;\n this.setLoadingStatus();\n }\n }\n\n /**\n * 加载状态时显示的文案\n */\n @Input()\n set thyLoadingText(value: string) {\n if (this._loadingText !== value) {\n this._loadingText = value;\n if (this._loading) {\n this.setLoadingText(this._loadingText);\n }\n }\n }\n\n /**\n * 按钮大小\n * @type xs | sm | md | default | lg\n * @default default\n */\n @Input()\n set thySize(size: string) {\n this._size = size;\n if (this._initialized) {\n this.updateClasses();\n }\n }\n\n /**\n * 按钮中显示的图标,支持SVG图标名称,比如`angle-left`,也支持传之前的 wtf 字体,比如: wtf-plus\n */\n @Input()\n set thyIcon(icon: string) {\n this._icon = icon;\n if (this._icon) {\n if (icon.includes('wtf')) {\n const classes = this._icon.split(' ');\n if (classes.length === 1) {\n classes.unshift('wtf');\n }\n this.iconClass = classes;\n this.svgIconName = null;\n } else {\n this.svgIconName = icon;\n }\n } else {\n this.iconClass = null;\n this.svgIconName = null;\n }\n }\n\n /**\n * 按钮整块展示\n * @default false\n */\n @HostBinding(`class.btn-block`)\n @Input({ transform: coerceBooleanProperty })\n thyBlock: boolean;\n\n private setBtnType(value: ThyButtonType) {\n if (value) {\n if (value.includes('-square')) {\n this._type = value.replace('-square', '');\n this._isRadiusSquare = true;\n } else {\n this._type = value;\n }\n\n if (this._initialized) {\n this.updateClasses();\n }\n }\n }\n\n private setLoadingText(text: string) {\n const spanElement = this.nativeElement.querySelector('span');\n if (spanElement) {\n this.renderer.setProperty(spanElement, 'innerText', text);\n }\n }\n\n private setLoadingStatus() {\n const innerText = this._loading ? this._loadingText : this._originalText;\n this.updateClasses();\n if (innerText) {\n this.setLoadingText(innerText);\n }\n }\n\n private updateClasses() {\n let classNames: string[] = [];\n if (btnTypeClassesMap[this._type]) {\n classNames = [...btnTypeClassesMap[this._type]];\n } else {\n if (this._type) {\n classNames.push(`btn-${this._type}`);\n }\n }\n if (this._size) {\n classNames.push(`btn-${this._size}`);\n }\n if (this._isRadiusSquare) {\n classNames.push('btn-square');\n }\n if (this._loading) {\n classNames.push('loading');\n }\n this.hostRenderer.updateClass(classNames);\n }\n\n ngOnInit() {\n this.updateClasses();\n this._initialized = true;\n }\n\n ngAfterViewInit() {\n if (assertIconOnly(this.nativeElement)) {\n this.hostRenderer.addClass(iconOnlyClass);\n } else {\n this.hostRenderer.removeClass(iconOnlyClass);\n }\n this.wrapSpanForText(this.nativeElement.childNodes);\n }\n\n private wrapSpanForText(nodes: NodeList): void {\n nodes.forEach(node => {\n if (node.nodeName === '#text') {\n const span = this.renderer.createElement('span');\n const parent = this.renderer.parentNode(node);\n this.renderer.addClass(span, 'thy-btn-wrap-span');\n this.renderer.insertBefore(parent, span, node);\n this.renderer.appendChild(span, node);\n }\n });\n }\n}\n","@if (svgIconName) {\n <thy-icon [thyIconName]=\"svgIconName\"></thy-icon>\n} @else {\n @if (iconClass) {\n <i [ngClass]=\"iconClass\"></i>\n }\n}\n<ng-content></ng-content>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyButtonGroup } from './button-group.component';\nimport { ThyButtonIcon } from './button-icon.component';\nimport { ThyButton } from './button.component';\n\n@NgModule({\n imports: [CommonModule, ThyIconModule, ThyButton, ThyButtonIcon, ThyButtonGroup],\n exports: [ThyButton, ThyButtonIcon, ThyButtonGroup]\n})\nexport class ThyButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["coerceBooleanProperty"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-button.mjs","sources":["../../../src/button/button-group.component.ts","../../../src/button/button-icon.component.ts","../../../src/button/button-icon.component.html","../../../src/button/button.component.ts","../../../src/button/button.component.html","../../../src/button/button.module.ts","../../../src/button/ngx-tethys-button.ts"],"sourcesContent":["import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { Component, effect, HostBinding, input, Input, OnInit, ViewEncapsulation } from '@angular/core';\n\nexport type ButtonGroupSize = 'sm' | 'lg' | 'xs' | 'md';\n\nexport type ButtonGroupType = 'outline-primary' | 'outline-default';\n\nconst buttonGroupSizeMap = {\n sm: ['btn-group-sm'],\n md: ['btn-group-md'],\n lg: ['btn-group-lg'],\n xs: ['btn-group-xs']\n};\n\n/**\n * 按钮分组组件\n * @name thy-button-group\n * @order 30\n */\n@Component({\n selector: 'thy-button-group',\n template: '<ng-content></ng-content>',\n host: {\n class: 'btn-group',\n '[class.btn-group-clear-min-width]': 'thyClearMinWidth()'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class ThyButtonGroup {\n private hostRenderer = useHostRenderer();\n\n /**\n * 大小\n * @type xs | sm | md | lg\n * @default md\n */\n readonly thySize = input<ButtonGroupSize>();\n\n /**\n * 类型\n * @type outline-default | outline-primary\n * @default outline-default\n */\n readonly thyType = input<ButtonGroupType>();\n\n /**\n * 是否需要最小宽度,默认按钮最小宽度为80px\n * @default false\n */\n readonly thyClearMinWidth = input(false, { transform: coerceBooleanProperty });\n\n constructor() {\n effect(() => {\n this.setClasses();\n });\n }\n\n private setClasses() {\n const type = this.thyType();\n const size = this.thySize();\n let classNames: string[] = [];\n if (type) {\n classNames.push(`btn-group-${type}`);\n }\n if (buttonGroupSizeMap[size]) {\n classNames = classNames.concat(...buttonGroupSizeMap[size]);\n }\n this.hostRenderer.updateClass(classNames);\n }\n}\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit, ViewEncapsulation, computed, effect, input } from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { coerceBooleanProperty, ThyBooleanInput } from 'ngx-tethys/util';\n\nexport type ThyButtonIconShape = '' | 'circle-dashed' | 'circle-solid' | 'circle-thick-dashed' | 'circle-thick-solid' | 'self-icon';\n\nconst sizeClassesMap: Record<string, string[]> = {\n lg: ['btn-icon-lg'],\n md: ['btn-icon-md'],\n sm: ['btn-icon-sm'],\n xs: ['btn-icon-xs']\n};\n\nconst shapeClassesMap = {\n 'circle-dashed': ['btn-icon-circle', 'circle-dashed'],\n 'circle-solid': ['btn-icon-circle', 'circle-solid'],\n 'circle-thick-dashed': ['btn-icon-circle', 'circle-dashed', 'border-thick'],\n 'circle-thick-solid': ['btn-icon-circle', 'circle-solid', 'border-thick'],\n 'self-icon': ['btn-icon-self-circle']\n};\n\nconst themeClassesMap: any = {\n 'danger-weak': ['btn-icon-danger-weak']\n};\n\n/**\n * 操作按钮图标,支持`thy-button-icon`组件和`thyButtonIcon`指令两种形式\n * @name thy-button-icon,[thy-button-icon],[thyButtonIcon]\n * @order 20\n */\n@Component({\n selector: 'thy-button-icon,[thy-button-icon],[thyButtonIcon]',\n templateUrl: './button-icon.component.html',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'btn btn-icon',\n '[class.btn-icon-light]': 'thyLight()',\n '[class.btn-icon-active]': 'thyActive()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ThyIcon, NgClass]\n})\nexport class ThyButtonIcon {\n /**\n * 大小\n * @type xs | sm | md | lg\n * @default 36px\n */\n readonly thySize = input<string>();\n\n /**\n * 图标, 和`thyButtonIcon`相同,当使用`thy-button-icon`时,只能使用 thyIcon 设置图标\n */\n readonly thyIcon = input<string>();\n\n /**\n * 图标按钮的图标\n */\n readonly thyButtonIcon = input<string>();\n\n /**\n * 展示的形状,默认只显示字体图标图标,circle-dashed, circle-solid 展示成虚线,实线边框圆形图标, circle-thick-dashed, circle-thick-solid 边框加粗\n */\n readonly thyShape = input<ThyButtonIconShape>();\n\n /**\n * 亮色,颜色更浅,适合左侧导航顶部的按钮\n * @default false\n */\n readonly thyLight = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n /**\n * 设置为选中状态\n * @default false\n */\n readonly thyActive = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n /**\n * 按钮展示类型,默认图标移上去显示主色, danger-weak 鼠标移上去显示 danger 红色\n */\n readonly thyTheme = input<string>();\n\n readonly thyColor = input<string>();\n\n constructor() {\n effect(() => {\n this.setClasses();\n });\n }\n\n private hostRenderer = useHostRenderer();\n\n private icon = computed(() => {\n return this.thyButtonIcon() || this.thyIcon();\n });\n\n private isWtfIcon = computed(() => {\n const icon = this.icon();\n return icon && icon.includes('wtf');\n });\n\n protected svgIconName = computed(() => {\n if (!this.isWtfIcon()) {\n return this.icon();\n }\n return null;\n });\n\n protected iconClasses = computed<string[]>(() => {\n const icon = this.icon();\n if (this.isWtfIcon()) {\n const classes = icon.split(' ');\n if (classes.length === 1) {\n classes.unshift('wtf');\n }\n return classes;\n }\n return null;\n });\n\n private setClasses() {\n const size = this.thySize();\n const shape = this.thyShape();\n const theme = this.thyTheme();\n const classes = sizeClassesMap[size] ? [...sizeClassesMap[size]] : [];\n if (shape && shapeClassesMap[shape]) {\n shapeClassesMap[shape].forEach((className: string) => {\n classes.push(className);\n });\n }\n if (theme && themeClassesMap[theme]) {\n themeClassesMap[theme].forEach((className: string) => {\n classes.push(className);\n });\n }\n this.hostRenderer.updateClass(classes);\n }\n}\n","@if (svgIconName()) {\n <thy-icon [thyIconName]=\"svgIconName()\" [style.color]=\"thyColor()\" [style.borderColor]=\"thyColor()\"></thy-icon>\n} @else {\n @if (iconClasses()) {\n <i [ngClass]=\"iconClasses()\" [style.color]=\"thyColor()\" [style.borderColor]=\"thyColor()\"></i>\n }\n}\n<ng-content></ng-content>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Renderer2,\n ViewEncapsulation,\n inject,\n input,\n computed,\n effect,\n afterNextRender\n} from '@angular/core';\n\nimport { assertIconOnly, coerceBooleanProperty, ThyBooleanInput } from 'ngx-tethys/util';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass } from '@angular/common';\n\nexport type ThyButtonType =\n | 'primary'\n | 'secondary'\n | 'info'\n | 'outline-primary'\n | 'outline-default'\n | 'danger'\n | 'link'\n | 'link-secondary'\n | 'warning'\n | 'outline-warning'\n | 'success'\n | 'outline-success'\n | 'outline-info'\n | 'outline-danger'\n | 'link-danger-weak'\n | 'link-danger'\n | 'link-success';\n\nconst btnTypeClassesMap: Record<string, string[]> = {\n primary: ['btn-primary'],\n secondary: ['btn-primary', 'btn-md'],\n info: ['btn-info'],\n warning: ['btn-warning'],\n danger: ['btn-danger'],\n 'outline-primary': ['btn-outline-primary'],\n 'outline-default': ['btn-outline-default'],\n link: ['btn-link'], // 链接按钮\n 'link-info': ['btn-link', 'btn-link-info'], // 幽灵链接按钮\n 'link-secondary': ['btn-link', 'btn-link-primary-weak'], // 幽灵链接按钮\n 'link-danger-weak': ['btn-link', 'btn-link-danger-weak'], // 幽灵危险按钮\n 'link-danger': ['btn-link', 'btn-link-danger'], // 危险按钮\n 'link-success': ['btn-link', 'btn-link-success'] // 成功按钮\n};\n\nconst iconOnlyClass = 'thy-btn-icon-only';\n\n/**\n * 操作按钮,支持组件`thy-button`和`thyButton`指令两种形式\n * @name thy-button,[thy-button],[thyButton]\n * @order 10\n */\n@Component({\n selector: 'thy-button,[thy-button],[thyButton]',\n templateUrl: './button.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-btn btn',\n '[class.btn-block]': 'thyBlock()'\n },\n imports: [ThyIcon, NgClass]\n})\nexport class ThyButton {\n private elementRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n private _originalText: string;\n\n private get nativeElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n private hostRenderer = useHostRenderer();\n\n /**\n * 按钮类型,支持添加前缀`outline-`实现线框按钮,支持添加前缀`link-`实现按钮链接\n * @type primary | info | warning | danger | success\n * @default primary\n */\n readonly thyButton = input<ThyButtonType>();\n\n /**\n * 和`thyButton`参数一样,一般使用`thyButton`,为了减少参数输入, 当通过`thy-button`使用时,只能使用该参数控制类型\n * @default primary\n */\n readonly thyType = input<ThyButtonType>();\n\n /**\n * 加载状态\n * @default false\n */\n readonly thyLoading = input<boolean, ThyBooleanInput>(false, {\n transform: value => {\n if (!this.thyLoading() && value) {\n const textElement = this.nativeElement?.querySelector('span');\n this._originalText = textElement ? textElement.innerText : '';\n }\n return coerceBooleanProperty(value);\n }\n });\n\n /**\n * 加载状态时显示的文案\n */\n readonly thyLoadingText = input<string>();\n\n /**\n * 按钮大小\n * @type xs | sm | md | default | lg\n * @default default\n */\n readonly thySize = input<string>();\n\n /**\n * 按钮中显示的图标,支持SVG图标名称,比如`angle-left`,也支持传之前的 wtf 字体,比如: wtf-plus\n */\n readonly thyIcon = input<string>();\n\n /**\n * 按钮整块展示\n * @default false\n */\n readonly thyBlock = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n private isWtfIcon = computed(() => {\n const icon = this.thyIcon();\n return icon && icon.includes('wtf');\n });\n\n protected svgIconName = computed(() => {\n if (!this.isWtfIcon()) {\n return this.thyIcon();\n }\n return null;\n });\n\n protected iconClass = computed<string[]>(() => {\n const icon = this.thyIcon();\n if (this.isWtfIcon()) {\n const classes = icon.split(' ');\n if (classes.length === 1) {\n classes.unshift('wtf');\n }\n return classes;\n }\n return null;\n });\n\n private buttonType = computed(() => {\n return this.thyButton() || this.thyType();\n });\n\n protected isRadiusSquare = computed(() => {\n const type = this.buttonType();\n return !!type?.includes('-square');\n });\n\n protected type = computed(() => {\n const type = this.buttonType();\n if (this.isRadiusSquare()) {\n return type.replace('-square', '');\n } else {\n return type;\n }\n });\n\n private setButtonText() {\n const text = this.thyLoading() ? this.thyLoadingText() : this._originalText;\n const spanElement = this.nativeElement.querySelector('span');\n if (spanElement && text) {\n this.renderer.setProperty(spanElement, 'innerText', text);\n }\n }\n\n private updateClasses() {\n const type = this.type();\n if (!type) {\n return;\n }\n\n let classNames: string[] = [];\n if (btnTypeClassesMap[type]) {\n classNames = [...btnTypeClassesMap[type]];\n } else {\n if (type) {\n classNames.push(`btn-${type}`);\n }\n }\n\n const size = this.thySize();\n if (size) {\n classNames.push(`btn-${size}`);\n }\n if (this.isRadiusSquare()) {\n classNames.push('btn-square');\n }\n const loading = this.thyLoading();\n if (loading) {\n classNames.push('loading');\n }\n this.hostRenderer.updateClass(classNames);\n }\n\n constructor() {\n effect(() => {\n this.updateClasses();\n });\n\n effect(() => {\n this.setButtonText();\n });\n\n afterNextRender(() => {\n if (assertIconOnly(this.nativeElement)) {\n this.hostRenderer.addClass(iconOnlyClass);\n } else {\n this.hostRenderer.removeClass(iconOnlyClass);\n }\n this.wrapSpanForText(this.nativeElement.childNodes);\n });\n }\n\n private wrapSpanForText(nodes: NodeList): void {\n nodes.forEach(node => {\n if (node.nodeName === '#text') {\n const span = this.renderer.createElement('span');\n const parent = this.renderer.parentNode(node);\n this.renderer.addClass(span, 'thy-btn-wrap-span');\n this.renderer.insertBefore(parent, span, node);\n this.renderer.appendChild(span, node);\n }\n });\n }\n}\n","@if (svgIconName()) {\n <thy-icon [thyIconName]=\"svgIconName()\"></thy-icon>\n} @else {\n @if (iconClass()) {\n <i [ngClass]=\"iconClass()\"></i>\n }\n}\n<ng-content></ng-content>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyButtonGroup } from './button-group.component';\nimport { ThyButtonIcon } from './button-icon.component';\nimport { ThyButton } from './button.component';\n\n@NgModule({\n imports: [CommonModule, ThyIconModule, ThyButton, ThyButtonIcon, ThyButtonGroup],\n exports: [ThyButton, ThyButtonIcon, ThyButtonGroup]\n})\nexport class ThyButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["coerceBooleanProperty"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ChangeDetectorRef,
|
|
2
|
+
import { inject, ChangeDetectorRef, input, output, effect, HostBinding, Component, Directive, contentChild, TemplateRef, computed, forwardRef, ChangeDetectionStrategy, ViewEncapsulation, NgModule } from '@angular/core';
|
|
3
3
|
import { NgTemplateOutlet, JsonPipe, CommonModule } from '@angular/common';
|
|
4
4
|
import * as i1 from '@angular/forms';
|
|
5
5
|
import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
@@ -24,18 +24,26 @@ class ThyCalendarHeader {
|
|
|
24
24
|
this.dateHelper = inject(DateHelperService);
|
|
25
25
|
this.locale = injectLocale('calendar');
|
|
26
26
|
this.className = true;
|
|
27
|
+
/**
|
|
28
|
+
* 当前选中日期
|
|
29
|
+
*/
|
|
30
|
+
this.currentDate = input();
|
|
31
|
+
/**
|
|
32
|
+
* 自定义渲染右侧操作项
|
|
33
|
+
*/
|
|
34
|
+
this.operationRender = input();
|
|
27
35
|
/**
|
|
28
36
|
* 日期选择范围(年)发生变化的回调
|
|
29
37
|
*/
|
|
30
|
-
this.yearChange =
|
|
38
|
+
this.yearChange = output();
|
|
31
39
|
/**
|
|
32
40
|
* 日期选择范围(月)发生变化的回调
|
|
33
41
|
*/
|
|
34
|
-
this.monthChange =
|
|
42
|
+
this.monthChange = output();
|
|
35
43
|
/**
|
|
36
44
|
* 日期选择范围(日期)发生变化的回调
|
|
37
45
|
*/
|
|
38
|
-
this.dateRangeChange =
|
|
46
|
+
this.dateRangeChange = output();
|
|
39
47
|
this.pickerFormat = this.locale().yearMonthFormat;
|
|
40
48
|
this.dateRanges = [
|
|
41
49
|
{
|
|
@@ -49,12 +57,9 @@ class ThyCalendarHeader {
|
|
|
49
57
|
}
|
|
50
58
|
}
|
|
51
59
|
];
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
*/
|
|
56
|
-
set currentDate(value) {
|
|
57
|
-
this.setDate(value);
|
|
60
|
+
effect(() => {
|
|
61
|
+
this.setDate();
|
|
62
|
+
});
|
|
58
63
|
}
|
|
59
64
|
ngOnInit() { }
|
|
60
65
|
onChangeMonth(month) {
|
|
@@ -77,10 +82,11 @@ class ThyCalendarHeader {
|
|
|
77
82
|
this.onChangeRange(this.date);
|
|
78
83
|
this.cdr.detectChanges();
|
|
79
84
|
}
|
|
80
|
-
setDate(
|
|
81
|
-
this.
|
|
85
|
+
setDate() {
|
|
86
|
+
const currentDate = this.currentDate();
|
|
87
|
+
this.isCurrentDate(currentDate);
|
|
82
88
|
if (this.isCurrent) {
|
|
83
|
-
this._currentDate =
|
|
89
|
+
this._currentDate = currentDate;
|
|
84
90
|
const dateRange = {
|
|
85
91
|
...this.dateRanges[0],
|
|
86
92
|
key: 'exception',
|
|
@@ -100,24 +106,14 @@ class ThyCalendarHeader {
|
|
|
100
106
|
currentDate.getMonth() !== getMonth(new TinyDate().getTime()) || currentDate.getYear() !== getYear(new TinyDate().getTime());
|
|
101
107
|
}
|
|
102
108
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyCalendarHeader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
103
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyCalendarHeader, isStandalone: true, selector: "thy-calendar-header", inputs: { currentDate: "currentDate", operationRender: "operationRender" }, outputs: { yearChange: "yearChange", monthChange: "monthChange", dateRangeChange: "dateRangeChange" }, host: { properties: { "class.thy-calendar-full-header-container": "this.className" } }, ngImport: i0, template: "<div class=\"thy-calendar-full-header-left\">\n <thy-date-range\n class=\"select-date-range\"\n [ngModel]=\"date\"\n [thyHiddenMenu]=\"true\"\n [thyCustomKey]=\"'exception'\"\n [thyPickerFormat]=\"pickerFormat\"\n (ngModelChange)=\"onChangeRange($event)\"></thy-date-range>\n @if (isCurrent) {\n <button thyButton=\"outline-default-square\" thySize=\"md\" (click)=\"backToday()\">{{ locale().today }}</button>\n }\n</div>\n<div class=\"thy-calendar-full-header-right\">\n <ng-container *ngTemplateOutlet=\"$any(operationRender); context: { $implicit: operationRender }\">\n <span>{{ operationRender | json }}</span>\n </ng-container>\n</div>\n", dependencies: [{ kind: "component", type: ThyDateRange, selector: "thy-date-range", inputs: ["thyOptionalDateRanges", "thyHiddenMenu", "thyDisabledSwitch", "thyCustomTextValue", "thyMinDate", "thyMaxDate", "thyCustomKey", "thyPickerFormat", "thyDisabledDate", "thySeparator"], outputs: ["thyOnCalendarChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ThyButton, selector: "thy-button,[thy-button],[thyButton]", inputs: ["thyButton", "thyType", "thyLoading", "thyLoadingText", "thySize", "thyIcon", "thyBlock"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: JsonPipe, name: "json" }] }); }
|
|
109
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyCalendarHeader, isStandalone: true, selector: "thy-calendar-header", inputs: { currentDate: { classPropertyName: "currentDate", publicName: "currentDate", isSignal: true, isRequired: false, transformFunction: null }, operationRender: { classPropertyName: "operationRender", publicName: "operationRender", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { yearChange: "yearChange", monthChange: "monthChange", dateRangeChange: "dateRangeChange" }, host: { properties: { "class.thy-calendar-full-header-container": "this.className" } }, ngImport: i0, template: "<div class=\"thy-calendar-full-header-left\">\n <thy-date-range\n class=\"select-date-range\"\n [ngModel]=\"date\"\n [thyHiddenMenu]=\"true\"\n [thyCustomKey]=\"'exception'\"\n [thyPickerFormat]=\"pickerFormat\"\n (ngModelChange)=\"onChangeRange($event)\"></thy-date-range>\n @if (isCurrent) {\n <button thyButton=\"outline-default-square\" thySize=\"md\" (click)=\"backToday()\">{{ locale().today }}</button>\n }\n</div>\n<div class=\"thy-calendar-full-header-right\">\n <ng-container *ngTemplateOutlet=\"$any(operationRender()); context: { $implicit: operationRender() }\">\n <span>{{ operationRender() | json }}</span>\n </ng-container>\n</div>\n", dependencies: [{ kind: "component", type: ThyDateRange, selector: "thy-date-range", inputs: ["thyOptionalDateRanges", "thyHiddenMenu", "thyDisabledSwitch", "thyCustomTextValue", "thyMinDate", "thyMaxDate", "thyCustomKey", "thyPickerFormat", "thyDisabledDate", "thySeparator"], outputs: ["thyOnCalendarChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ThyButton, selector: "thy-button,[thy-button],[thyButton]", inputs: ["thyButton", "thyType", "thyLoading", "thyLoadingText", "thySize", "thyIcon", "thyBlock"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: JsonPipe, name: "json" }] }); }
|
|
104
110
|
}
|
|
105
111
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyCalendarHeader, decorators: [{
|
|
106
112
|
type: Component,
|
|
107
|
-
args: [{ selector: 'thy-calendar-header', imports: [ThyDateRange, FormsModule, ThyButton, NgTemplateOutlet, JsonPipe], template: "<div class=\"thy-calendar-full-header-left\">\n <thy-date-range\n class=\"select-date-range\"\n [ngModel]=\"date\"\n [thyHiddenMenu]=\"true\"\n [thyCustomKey]=\"'exception'\"\n [thyPickerFormat]=\"pickerFormat\"\n (ngModelChange)=\"onChangeRange($event)\"></thy-date-range>\n @if (isCurrent) {\n <button thyButton=\"outline-default-square\" thySize=\"md\" (click)=\"backToday()\">{{ locale().today }}</button>\n }\n</div>\n<div class=\"thy-calendar-full-header-right\">\n <ng-container *ngTemplateOutlet=\"$any(operationRender); context: { $implicit: operationRender }\">\n <span>{{ operationRender | json }}</span>\n </ng-container>\n</div>\n" }]
|
|
108
|
-
}], propDecorators: { className: [{
|
|
113
|
+
args: [{ selector: 'thy-calendar-header', imports: [ThyDateRange, FormsModule, ThyButton, NgTemplateOutlet, JsonPipe], template: "<div class=\"thy-calendar-full-header-left\">\n <thy-date-range\n class=\"select-date-range\"\n [ngModel]=\"date\"\n [thyHiddenMenu]=\"true\"\n [thyCustomKey]=\"'exception'\"\n [thyPickerFormat]=\"pickerFormat\"\n (ngModelChange)=\"onChangeRange($event)\"></thy-date-range>\n @if (isCurrent) {\n <button thyButton=\"outline-default-square\" thySize=\"md\" (click)=\"backToday()\">{{ locale().today }}</button>\n }\n</div>\n<div class=\"thy-calendar-full-header-right\">\n <ng-container *ngTemplateOutlet=\"$any(operationRender()); context: { $implicit: operationRender() }\">\n <span>{{ operationRender() | json }}</span>\n </ng-container>\n</div>\n" }]
|
|
114
|
+
}], ctorParameters: () => [], propDecorators: { className: [{
|
|
109
115
|
type: HostBinding,
|
|
110
116
|
args: ['class.thy-calendar-full-header-container']
|
|
111
|
-
}], currentDate: [{
|
|
112
|
-
type: Input
|
|
113
|
-
}], operationRender: [{
|
|
114
|
-
type: Input
|
|
115
|
-
}], yearChange: [{
|
|
116
|
-
type: Output
|
|
117
|
-
}], monthChange: [{
|
|
118
|
-
type: Output
|
|
119
|
-
}], dateRangeChange: [{
|
|
120
|
-
type: Output
|
|
121
117
|
}] } });
|
|
122
118
|
|
|
123
119
|
/**
|
|
@@ -157,38 +153,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
157
153
|
* @order 10
|
|
158
154
|
*/
|
|
159
155
|
class ThyCalendar {
|
|
160
|
-
constructor() {
|
|
161
|
-
this.cdr = inject(ChangeDetectorRef);
|
|
162
|
-
this.className = true;
|
|
163
|
-
this.className1 = true;
|
|
164
|
-
/**
|
|
165
|
-
* 展示模式
|
|
166
|
-
* @type month | year
|
|
167
|
-
*/
|
|
168
|
-
this.thyMode = 'month';
|
|
169
|
-
/**
|
|
170
|
-
* 日期选择变化的回调
|
|
171
|
-
*/
|
|
172
|
-
this.thySelectChange = new EventEmitter();
|
|
173
|
-
/**
|
|
174
|
-
* 日期选择变化的回调
|
|
175
|
-
*/
|
|
176
|
-
this.thyValueChange = new EventEmitter();
|
|
177
|
-
/**
|
|
178
|
-
* 日期选择范围变化的回调
|
|
179
|
-
*/
|
|
180
|
-
this.thyDateRangeChange = new EventEmitter();
|
|
181
|
-
this.currentDate = new TinyDate();
|
|
182
|
-
this.prefixCls = 'thy-calendar-full';
|
|
183
|
-
this.onChangeFn = () => { };
|
|
184
|
-
this.onTouchFn = () => { };
|
|
185
|
-
}
|
|
186
|
-
get dateCell() {
|
|
187
|
-
return (this.thyDateCell || this.thyDateCellChild);
|
|
188
|
-
}
|
|
189
|
-
get headerOperation() {
|
|
190
|
-
return (this.thyCalendarHeaderOperation || this.thyCalendarHeaderOperationChild);
|
|
191
|
-
}
|
|
192
156
|
ngOnInit() { }
|
|
193
157
|
onYearSelect(year) {
|
|
194
158
|
const date = this.currentDate.setYear(year);
|
|
@@ -225,45 +189,79 @@ class ThyCalendar {
|
|
|
225
189
|
this.thyValueChange.emit(date.nativeDate);
|
|
226
190
|
}
|
|
227
191
|
}
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
192
|
+
constructor() {
|
|
193
|
+
this.cdr = inject(ChangeDetectorRef);
|
|
194
|
+
this.className = true;
|
|
195
|
+
this.className1 = true;
|
|
196
|
+
/**
|
|
197
|
+
* 展示模式
|
|
198
|
+
* @type month | year
|
|
199
|
+
*/
|
|
200
|
+
this.thyMode = input('month');
|
|
201
|
+
/**
|
|
202
|
+
* (可双向绑定)展示日期,默认为当前日期
|
|
203
|
+
*/
|
|
204
|
+
this.thyValue = input();
|
|
205
|
+
/**
|
|
206
|
+
* 不可选择的日期
|
|
207
|
+
*/
|
|
208
|
+
this.thyDisabledDate = input();
|
|
209
|
+
/**
|
|
210
|
+
* 日期选择变化的回调
|
|
211
|
+
*/
|
|
212
|
+
this.thySelectChange = output();
|
|
213
|
+
/**
|
|
214
|
+
* 日期选择变化的回调
|
|
215
|
+
*/
|
|
216
|
+
this.thyValueChange = output();
|
|
217
|
+
/**
|
|
218
|
+
* 日期选择范围变化的回调
|
|
219
|
+
*/
|
|
220
|
+
this.thyDateRangeChange = output();
|
|
221
|
+
/**
|
|
222
|
+
* (可作为内容)自定义渲染日期单元格,模板内容会被追加到单元格
|
|
223
|
+
*/
|
|
224
|
+
this.thyDateCell = input();
|
|
225
|
+
/**
|
|
226
|
+
* 追加到单元格的自定义模板
|
|
227
|
+
*/
|
|
228
|
+
this.thyDateCellChild = contentChild(ThyDateCellDirective, { read: TemplateRef });
|
|
229
|
+
this.dateCell = computed(() => {
|
|
230
|
+
return (this.thyDateCell() || this.thyDateCellChild());
|
|
231
|
+
});
|
|
232
|
+
/**
|
|
233
|
+
* (可作为内容)自定义渲染右上角操作项
|
|
234
|
+
*/
|
|
235
|
+
this.thyCalendarHeaderOperation = input();
|
|
236
|
+
/**
|
|
237
|
+
* 右上角操作项的自定义模板
|
|
238
|
+
*/
|
|
239
|
+
this.thyCalendarHeaderOperationChild = contentChild(ThyCalendarHeaderOperationDirective, { read: TemplateRef });
|
|
240
|
+
this.headerOperation = computed(() => {
|
|
241
|
+
return (this.thyCalendarHeaderOperation() || this.thyCalendarHeaderOperationChild());
|
|
242
|
+
});
|
|
243
|
+
this.currentDate = new TinyDate();
|
|
244
|
+
this.prefixCls = 'thy-calendar-full';
|
|
245
|
+
this.onChangeFn = () => { };
|
|
246
|
+
this.onTouchFn = () => { };
|
|
247
|
+
effect(() => {
|
|
248
|
+
if (this.thyValue()) {
|
|
249
|
+
this.updateDate(new TinyDate(this.thyValue()), false);
|
|
250
|
+
}
|
|
251
|
+
});
|
|
232
252
|
}
|
|
233
253
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyCalendar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
234
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyCalendar, isStandalone: true, selector: "thy-calendar", inputs: { thyMode: "thyMode", thyValue: "thyValue", thyDisabledDate: "thyDisabledDate", thyDateCell: "thyDateCell", thyCalendarHeaderOperation: "thyCalendarHeaderOperation" }, outputs: { thySelectChange: "thySelectChange", thyValueChange: "thyValueChange", thyDateRangeChange: "thyDateRangeChange" }, host: { properties: { "class.thy-calendar-container": "this.className", "class.thy-calendar-full": "this.className1" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ThyCalendar), multi: true }], queries: [{ propertyName: "thyDateCellChild", first: true, predicate: ThyDateCellDirective, descendants: true, read: TemplateRef }, { propertyName: "thyCalendarHeaderOperationChild", first: true, predicate: ThyCalendarHeaderOperationDirective, descendants: true, read: TemplateRef
|
|
254
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyCalendar, isStandalone: true, selector: "thy-calendar", inputs: { thyMode: { classPropertyName: "thyMode", publicName: "thyMode", isSignal: true, isRequired: false, transformFunction: null }, thyValue: { classPropertyName: "thyValue", publicName: "thyValue", isSignal: true, isRequired: false, transformFunction: null }, thyDisabledDate: { classPropertyName: "thyDisabledDate", publicName: "thyDisabledDate", isSignal: true, isRequired: false, transformFunction: null }, thyDateCell: { classPropertyName: "thyDateCell", publicName: "thyDateCell", isSignal: true, isRequired: false, transformFunction: null }, thyCalendarHeaderOperation: { classPropertyName: "thyCalendarHeaderOperation", publicName: "thyCalendarHeaderOperation", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thySelectChange: "thySelectChange", thyValueChange: "thyValueChange", thyDateRangeChange: "thyDateRangeChange" }, host: { properties: { "class.thy-calendar-container": "this.className", "class.thy-calendar-full": "this.className1" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ThyCalendar), multi: true }], queries: [{ propertyName: "thyDateCellChild", first: true, predicate: ThyDateCellDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "thyCalendarHeaderOperationChild", first: true, predicate: ThyCalendarHeaderOperationDirective, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "<thy-calendar-header\n [operationRender]=\"headerOperation()\"\n (monthChange)=\"onMonthSelect($event)\"\n (yearChange)=\"onYearSelect($event)\"\n (dateRangeChange)=\"onDateRangeSelect($event)\"\n [currentDate]=\"currentDate\"></thy-calendar-header>\n\n<div class=\"thy-calendar-panel\">\n <div class=\"thy-calendar-{{ thyMode() === 'month' ? 'date' : 'month' }}-panel\">\n <div class=\"thy-calendar-body\">\n @if (thyMode() === 'month') {\n <date-table\n [prefixCls]=\"prefixCls\"\n [value]=\"currentDate\"\n [activeDate]=\"currentDate\"\n [selectedValue]=\"currentDate\"\n [cellRender]=\"dateCell()\"\n [disabledDate]=\"thyDisabledDate()\"\n (valueChange)=\"onDateSelect($event)\"></date-table>\n } @else {\n <month-table [value]=\"currentDate\" [disabledDate]=\"thyDisabledDate()\" (valueChange)=\"onDateSelect($event)\"></month-table>\n }\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: ThyCalendarHeader, selector: "thy-calendar-header", inputs: ["currentDate", "operationRender"], outputs: ["yearChange", "monthChange", "dateRangeChange"] }, { kind: "component", type: DateTable, selector: "date-table", outputs: ["dayHover"], exportAs: ["dateTable"] }, { kind: "component", type: MonthTable, selector: "month-table", exportAs: ["monthTable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
235
255
|
}
|
|
236
256
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyCalendar, decorators: [{
|
|
237
257
|
type: Component,
|
|
238
|
-
args: [{ selector: 'thy-calendar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ThyCalendar), multi: true }], imports: [ThyCalendarHeader, DateTable, MonthTable], template: "<thy-calendar-header\n [operationRender]=\"headerOperation\"\n (monthChange)=\"onMonthSelect($event)\"\n (yearChange)=\"onYearSelect($event)\"\n (dateRangeChange)=\"onDateRangeSelect($event)\"\n [currentDate]=\"currentDate\"
|
|
239
|
-
}], propDecorators: { className: [{
|
|
258
|
+
args: [{ selector: 'thy-calendar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ThyCalendar), multi: true }], imports: [ThyCalendarHeader, DateTable, MonthTable], template: "<thy-calendar-header\n [operationRender]=\"headerOperation()\"\n (monthChange)=\"onMonthSelect($event)\"\n (yearChange)=\"onYearSelect($event)\"\n (dateRangeChange)=\"onDateRangeSelect($event)\"\n [currentDate]=\"currentDate\"></thy-calendar-header>\n\n<div class=\"thy-calendar-panel\">\n <div class=\"thy-calendar-{{ thyMode() === 'month' ? 'date' : 'month' }}-panel\">\n <div class=\"thy-calendar-body\">\n @if (thyMode() === 'month') {\n <date-table\n [prefixCls]=\"prefixCls\"\n [value]=\"currentDate\"\n [activeDate]=\"currentDate\"\n [selectedValue]=\"currentDate\"\n [cellRender]=\"dateCell()\"\n [disabledDate]=\"thyDisabledDate()\"\n (valueChange)=\"onDateSelect($event)\"></date-table>\n } @else {\n <month-table [value]=\"currentDate\" [disabledDate]=\"thyDisabledDate()\" (valueChange)=\"onDateSelect($event)\"></month-table>\n }\n </div>\n </div>\n</div>\n" }]
|
|
259
|
+
}], ctorParameters: () => [], propDecorators: { className: [{
|
|
240
260
|
type: HostBinding,
|
|
241
261
|
args: ['class.thy-calendar-container']
|
|
242
262
|
}], className1: [{
|
|
243
263
|
type: HostBinding,
|
|
244
264
|
args: ['class.thy-calendar-full']
|
|
245
|
-
}], thyMode: [{
|
|
246
|
-
type: Input
|
|
247
|
-
}], thyValue: [{
|
|
248
|
-
type: Input
|
|
249
|
-
}], thyDisabledDate: [{
|
|
250
|
-
type: Input
|
|
251
|
-
}], thySelectChange: [{
|
|
252
|
-
type: Output
|
|
253
|
-
}], thyValueChange: [{
|
|
254
|
-
type: Output
|
|
255
|
-
}], thyDateRangeChange: [{
|
|
256
|
-
type: Output
|
|
257
|
-
}], thyDateCell: [{
|
|
258
|
-
type: Input
|
|
259
|
-
}], thyDateCellChild: [{
|
|
260
|
-
type: ContentChild,
|
|
261
|
-
args: [ThyDateCellDirective, { read: TemplateRef }]
|
|
262
|
-
}], thyCalendarHeaderOperation: [{
|
|
263
|
-
type: Input
|
|
264
|
-
}], thyCalendarHeaderOperationChild: [{
|
|
265
|
-
type: ContentChild,
|
|
266
|
-
args: [ThyCalendarHeaderOperationDirective, { read: TemplateRef }]
|
|
267
265
|
}] } });
|
|
268
266
|
|
|
269
267
|
class ThyCalendarModule {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-calendar.mjs","sources":["../../../src/calendar/calendar-header.component.ts","../../../src/calendar/calendar-header.component.html","../../../src/calendar/calendar-cells.ts","../../../src/calendar/calendar.component.ts","../../../src/calendar/calendar.component.html","../../../src/calendar/module.ts","../../../src/calendar/ngx-tethys-calendar.ts"],"sourcesContent":["import { DateRangeItemInfo, ThyDateRange } from 'ngx-tethys/date-range';\nimport { endOfMonth, FunctionProp, getMonth, getUnixTime, getYear, startOfMonth, TinyDate } from 'ngx-tethys/util';\n\nimport { JsonPipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectorRef, Component, EventEmitter, HostBinding, inject, Input, OnInit, Output, Signal, TemplateRef } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyButton } from 'ngx-tethys/button';\nimport { DateHelperService } from 'ngx-tethys/date-picker';\nimport { injectLocale, ThyCalendarLocale } from 'ngx-tethys/i18n';\n\n/**\n * 日历头部操作栏组件\n * @name thy-calendar-header\n * @order 20\n */\n@Component({\n selector: 'thy-calendar-header',\n templateUrl: './calendar-header.component.html',\n imports: [ThyDateRange, FormsModule, ThyButton, NgTemplateOutlet, JsonPipe]\n})\nexport class ThyCalendarHeader implements OnInit {\n private cdr = inject(ChangeDetectorRef);\n private dateHelper = inject(DateHelperService);\n public locale: Signal<ThyCalendarLocale> = injectLocale('calendar');\n\n @HostBinding('class.thy-calendar-full-header-container') className = true;\n\n /**\n * 当前选中日期\n */\n @Input()\n set currentDate(value: TinyDate) {\n this.setDate(value);\n }\n\n /**\n * \t自定义渲染右侧操作项\n */\n @Input() operationRender: FunctionProp<TemplateRef<any>>;\n\n /**\n * 日期选择范围(年)发生变化的回调\n */\n @Output() readonly yearChange: EventEmitter<number> = new EventEmitter();\n\n /**\n * 日期选择范围(月)发生变化的回调\n */\n @Output() readonly monthChange: EventEmitter<number> = new EventEmitter();\n\n /**\n * 日期选择范围(日期)发生变化的回调\n */\n @Output() readonly dateRangeChange: EventEmitter<DateRangeItemInfo> = new EventEmitter();\n\n public pickerFormat = this.locale().yearMonthFormat;\n\n public dateRanges: DateRangeItemInfo[] = [\n {\n key: 'month',\n text: this.dateHelper.format(new TinyDate().nativeDate, this.pickerFormat),\n begin: getUnixTime(startOfMonth(new TinyDate().getTime())),\n end: getUnixTime(endOfMonth(new TinyDate().getTime())),\n timestamp: {\n interval: 1,\n unit: 'month'\n }\n }\n ];\n\n public date: DateRangeItemInfo;\n\n private _currentDate: TinyDate;\n\n public isCurrent: boolean;\n\n ngOnInit(): void {}\n\n onChangeMonth(month: DateRangeItemInfo) {\n const currentMonth = TinyDate.fromUnixTime(month.end).getMonth();\n this.monthChange.emit(currentMonth);\n }\n\n onChangeYear(year: DateRangeItemInfo) {\n const currentYear = TinyDate.fromUnixTime(year.begin).getFullYear();\n this.yearChange.emit(currentYear);\n }\n\n onChangeRange(dateRange: DateRangeItemInfo) {\n this.isCurrentDate(this._currentDate);\n this.onChangeYear(dateRange);\n this.onChangeMonth(dateRange);\n this.dateRangeChange.emit(dateRange);\n }\n\n backToday() {\n this._currentDate = new TinyDate();\n this.date = { ...this.dateRanges[0] };\n this.onChangeRange(this.date);\n this.cdr.detectChanges();\n }\n\n setDate(value: TinyDate) {\n this.isCurrentDate(value);\n if (this.isCurrent) {\n this._currentDate = value;\n const dateRange = {\n ...this.dateRanges[0],\n key: 'exception',\n text: this._currentDate.format(this.pickerFormat),\n begin: getUnixTime(startOfMonth(this._currentDate.getTime())),\n end: getUnixTime(endOfMonth(this._currentDate.getTime()))\n };\n this.date = dateRange;\n } else {\n this._currentDate = new TinyDate();\n this.date = { ...this.dateRanges[0] };\n }\n }\n\n isCurrentDate(currentDate: TinyDate) {\n this.isCurrent =\n currentDate.getMonth() !== getMonth(new TinyDate().getTime()) || currentDate.getYear() !== getYear(new TinyDate().getTime());\n }\n}\n","<div class=\"thy-calendar-full-header-left\">\n <thy-date-range\n class=\"select-date-range\"\n [ngModel]=\"date\"\n [thyHiddenMenu]=\"true\"\n [thyCustomKey]=\"'exception'\"\n [thyPickerFormat]=\"pickerFormat\"\n (ngModelChange)=\"onChangeRange($event)\"></thy-date-range>\n @if (isCurrent) {\n <button thyButton=\"outline-default-square\" thySize=\"md\" (click)=\"backToday()\">{{ locale().today }}</button>\n }\n</div>\n<div class=\"thy-calendar-full-header-right\">\n <ng-container *ngTemplateOutlet=\"$any(operationRender); context: { $implicit: operationRender }\">\n <span>{{ operationRender | json }}</span>\n </ng-container>\n</div>\n","import { Directive } from '@angular/core';\n\n/**\n * 自定义日期单元格,模板内容会被追加到单元格,可通过 *thyDateCell 传入模板\n * @name thyDateCell\n */\n@Directive({\n selector: '[thyDateCell]',\n exportAs: 'thyDateCell'\n})\nexport class ThyDateCellDirective {}\n\n/**\n * 自定义右上角操作项,可通过 *thyCalendarHeaderOperation传入模板\n * @name thyCalendarHeaderOperation\n */\n@Directive({\n selector: '[thyCalendarHeaderOperation]',\n exportAs: 'thyCalendarHeaderOperation'\n})\nexport class ThyCalendarHeaderOperationDirective {}\n","import { DateRangeItemInfo } from 'ngx-tethys/date-range';\nimport { TinyDate } from 'ngx-tethys/util';\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n forwardRef,\n HostBinding,\n inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { DateTable, MonthTable } from 'ngx-tethys/date-picker';\nimport { ThyDateCellDirective as DateCell, ThyCalendarHeaderOperationDirective as HeaderOperation } from './calendar-cells';\n\nimport { ThyCalendarHeader } from './calendar-header.component';\n\nexport type CalendarMode = 'month' | 'year';\ntype CalendarDateTemplate = TemplateRef<{ $implicit: Date }>;\n\n/**\n * 日历组件\n * @name thy-calendar\n * @order 10\n */\n@Component({\n selector: 'thy-calendar',\n templateUrl: './calendar.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ThyCalendar), multi: true }],\n imports: [ThyCalendarHeader, DateTable, MonthTable]\n})\nexport class ThyCalendar implements OnInit, OnChanges {\n private cdr = inject(ChangeDetectorRef);\n\n @HostBinding('class.thy-calendar-container') className = true;\n\n @HostBinding('class.thy-calendar-full') className1 = true;\n\n /**\n * 展示模式\n * @type month | year\n */\n @Input() thyMode: CalendarMode = 'month';\n\n /**\n * (可双向绑定)展示日期,默认为当前日期\n */\n @Input() thyValue?: Date;\n\n /**\n * 不可选择的日期\n */\n @Input() thyDisabledDate?: (date: Date) => boolean;\n\n /**\n * 日期选择变化的回调\n */\n @Output() thySelectChange: EventEmitter<Date> = new EventEmitter();\n\n /**\n * 日期选择变化的回调\n */\n @Output() thyValueChange: EventEmitter<Date> = new EventEmitter();\n\n /**\n * 日期选择范围变化的回调\n */\n @Output() thyDateRangeChange: EventEmitter<DateRangeItemInfo> = new EventEmitter();\n\n /**\n * (可作为内容)自定义渲染日期单元格,模板内容会被追加到单元格\n */\n @Input() thyDateCell?: CalendarDateTemplate;\n\n /**\n * 追加到单元格的自定义模板\n */\n @ContentChild(DateCell, { read: TemplateRef }) thyDateCellChild?: CalendarDateTemplate;\n get dateCell(): CalendarDateTemplate {\n return (this.thyDateCell || this.thyDateCellChild)!;\n }\n\n /**\n * (可作为内容)自定义渲染右上角操作项\n */\n @Input() thyCalendarHeaderOperation?: CalendarDateTemplate;\n\n /**\n * 右上角操作项的自定义模板\n */\n @ContentChild(HeaderOperation, { read: TemplateRef }) thyCalendarHeaderOperationChild?: CalendarDateTemplate;\n get headerOperation(): CalendarDateTemplate {\n return (this.thyCalendarHeaderOperation || this.thyCalendarHeaderOperationChild)!;\n }\n\n public currentDate = new TinyDate();\n\n public prefixCls = 'thy-calendar-full';\n\n private onChangeFn: (date: Date) => void = () => {};\n\n private onTouchFn: () => void = () => {};\n\n ngOnInit(): void {}\n\n onYearSelect(year: number): void {\n const date = this.currentDate.setYear(year);\n this.updateDate(date);\n }\n\n onMonthSelect(month: number): void {\n const date = this.currentDate.setMonth(month);\n this.updateDate(date);\n }\n\n onDateSelect(date: TinyDate): void {\n // Only currentDate is enough in calendar\n // this.value = date;\n this.updateDate(date);\n }\n\n onDateRangeSelect(date: DateRangeItemInfo) {\n this.thyDateRangeChange.emit(date);\n }\n\n writeValue(value: Date | null): void {\n this.updateDate(new TinyDate(value as Date), false);\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (date: Date) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchFn = fn;\n }\n\n private updateDate(date: TinyDate, touched: boolean = true): void {\n this.currentDate = date;\n\n if (touched) {\n this.onChangeFn(date.nativeDate);\n this.onTouchFn();\n this.thySelectChange.emit(date.nativeDate);\n this.thyValueChange.emit(date.nativeDate);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.thyValue) {\n this.updateDate(new TinyDate(this.thyValue), false);\n }\n }\n}\n","<thy-calendar-header\n [operationRender]=\"headerOperation\"\n (monthChange)=\"onMonthSelect($event)\"\n (yearChange)=\"onYearSelect($event)\"\n (dateRangeChange)=\"onDateRangeSelect($event)\"\n [currentDate]=\"currentDate\"\n></thy-calendar-header>\n\n<div class=\"thy-calendar-panel\">\n <div class=\"thy-calendar-{{ thyMode === 'month' ? 'date' : 'month' }}-panel\">\n <div class=\"thy-calendar-body\">\n @if (thyMode === 'month') {\n <date-table\n [prefixCls]=\"prefixCls\"\n [value]=\"currentDate\"\n [activeDate]=\"currentDate\"\n [selectedValue]=\"currentDate\"\n [cellRender]=\"dateCell\"\n [disabledDate]=\"thyDisabledDate\"\n (valueChange)=\"onDateSelect($event)\"\n ></date-table>\n } @else {\n <month-table [value]=\"currentDate\" [disabledDate]=\"thyDisabledDate\" (valueChange)=\"onDateSelect($event)\"></month-table>\n }\n </div>\n </div>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyCalendarHeader } from './calendar-header.component';\nimport { ThyCalendar } from './calendar.component';\nimport { ThyCalendarHeaderOperationDirective, ThyDateCellDirective } from './calendar-cells';\nimport { LibPackerModule } from 'ngx-tethys/date-picker';\nimport { ThySelectModule } from 'ngx-tethys/select';\nimport { ThyRadioModule } from 'ngx-tethys/radio';\nimport { ThyButtonModule } from 'ngx-tethys/button';\nimport { ThyDateRangeModule } from 'ngx-tethys/date-range';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThySharedModule,\n ThyIconModule,\n LibPackerModule,\n ThySelectModule,\n ThyRadioModule,\n ThyButtonModule,\n ThyDateRangeModule,\n ThyCalendarHeader,\n ThyCalendar,\n ThyDateCellDirective,\n ThyCalendarHeaderOperationDirective\n ],\n exports: [ThyCalendarHeader, ThyCalendar, ThyDateCellDirective, ThyCalendarHeaderOperationDirective]\n})\nexport class ThyCalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["DateCell","HeaderOperation"],"mappings":";;;;;;;;;;;;;;;AAUA;;;;AAIG;MAMU,iBAAiB,CAAA;AAL9B,IAAA,WAAA,GAAA;AAMY,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACvC,QAAA,IAAA,CAAA,MAAM,GAA8B,YAAY,CAAC,UAAU,CAAC;QAEV,IAAS,CAAA,SAAA,GAAG,IAAI;AAezE;;AAEG;AACgB,QAAA,IAAA,CAAA,UAAU,GAAyB,IAAI,YAAY,EAAE;AAExE;;AAEG;AACgB,QAAA,IAAA,CAAA,WAAW,GAAyB,IAAI,YAAY,EAAE;AAEzE;;AAEG;AACgB,QAAA,IAAA,CAAA,eAAe,GAAoC,IAAI,YAAY,EAAE;AAEjF,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,eAAe;AAE5C,QAAA,IAAA,CAAA,UAAU,GAAwB;AACrC,YAAA;AACI,gBAAA,GAAG,EAAE,OAAO;AACZ,gBAAA,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;AAC1E,gBAAA,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,IAAI,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1D,gBAAA,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC,IAAI,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;AACtD,gBAAA,SAAS,EAAE;AACP,oBAAA,QAAQ,EAAE,CAAC;AACX,oBAAA,IAAI,EAAE;AACT;AACJ;SACJ;AAwDJ;AAjGG;;AAEG;IACH,IACI,WAAW,CAAC,KAAe,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;;AA4CvB,IAAA,QAAQ;AAER,IAAA,aAAa,CAAC,KAAwB,EAAA;AAClC,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;AAChE,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;;AAGvC,IAAA,YAAY,CAAC,IAAuB,EAAA;AAChC,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;AACnE,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;;AAGrC,IAAA,aAAa,CAAC,SAA4B,EAAA;AACtC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;AACrC,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;AAC7B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;;IAGxC,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,QAAQ,EAAE;AAClC,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;AACrC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;AAG5B,IAAA,OAAO,CAAC,KAAe,EAAA;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,YAAA,MAAM,SAAS,GAAG;AACd,gBAAA,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACrB,gBAAA,GAAG,EAAE,WAAW;gBAChB,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;AACjD,gBAAA,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;AAC7D,gBAAA,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;aAC3D;AACD,YAAA,IAAI,CAAC,IAAI,GAAG,SAAS;;aAClB;AACH,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;;;AAI7C,IAAA,aAAa,CAAC,WAAqB,EAAA;AAC/B,QAAA,IAAI,CAAC,SAAS;AACV,YAAA,WAAW,CAAC,QAAQ,EAAE,KAAK,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC;;8GAtG3H,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,0CAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpB9B,kqBAiBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDCc,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEjE,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACI,qBAAqB,EAAA,OAAA,EAEtB,CAAC,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAA,QAAA,EAAA,kqBAAA,EAAA;8BAOlB,SAAS,EAAA,CAAA;sBAAjE,WAAW;uBAAC,0CAA0C;gBAMnD,WAAW,EAAA,CAAA;sBADd;gBAQQ,eAAe,EAAA,CAAA;sBAAvB;gBAKkB,UAAU,EAAA,CAAA;sBAA5B;gBAKkB,WAAW,EAAA,CAAA;sBAA7B;gBAKkB,eAAe,EAAA,CAAA;sBAAjC;;;AEnDL;;;AAGG;MAKU,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE;AACb,iBAAA;;AAGD;;;AAGG;MAKU,mCAAmC,CAAA;8GAAnC,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnC,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAJ/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,QAAQ,EAAE;AACb,iBAAA;;;ACWD;;;;AAIG;MASU,WAAW,CAAA;AARxB,IAAA,WAAA,GAAA;AASY,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAEM,IAAS,CAAA,SAAA,GAAG,IAAI;QAErB,IAAU,CAAA,UAAA,GAAG,IAAI;AAEzD;;;AAGG;QACM,IAAO,CAAA,OAAA,GAAiB,OAAO;AAYxC;;AAEG;AACO,QAAA,IAAA,CAAA,eAAe,GAAuB,IAAI,YAAY,EAAE;AAElE;;AAEG;AACO,QAAA,IAAA,CAAA,cAAc,GAAuB,IAAI,YAAY,EAAE;AAEjE;;AAEG;AACO,QAAA,IAAA,CAAA,kBAAkB,GAAoC,IAAI,YAAY,EAAE;AA4B3E,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,QAAQ,EAAE;QAE5B,IAAS,CAAA,SAAA,GAAG,mBAAmB;AAE9B,QAAA,IAAA,CAAA,UAAU,GAAyB,MAAK,GAAG;AAE3C,QAAA,IAAA,CAAA,SAAS,GAAe,MAAK,GAAG;AAqD3C;AA5EG,IAAA,IAAI,QAAQ,GAAA;QACR,QAAQ,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,gBAAgB;;AAYrD,IAAA,IAAI,eAAe,GAAA;QACf,QAAQ,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,+BAA+B;;AAWnF,IAAA,QAAQ;AAER,IAAA,YAAY,CAAC,IAAY,EAAA;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3C,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;;AAGzB,IAAA,aAAa,CAAC,KAAa,EAAA;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC7C,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;;AAGzB,IAAA,YAAY,CAAC,IAAc,EAAA;;;AAGvB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;;AAGzB,IAAA,iBAAiB,CAAC,IAAuB,EAAA;AACrC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGtC,IAAA,UAAU,CAAC,KAAkB,EAAA;QACzB,IAAI,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,KAAa,CAAC,EAAE,KAAK,CAAC;AACnD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAG3B,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AACrC,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;AAGxB,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGf,IAAA,UAAU,CAAC,IAAc,EAAE,OAAA,GAAmB,IAAI,EAAA;AACtD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QAEvB,IAAI,OAAO,EAAE;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;YAChC,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YAC1C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;;;AAIjD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;;;8GAxHlD,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,keAHT,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAiDtFA,oBAAQ,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,WAAW,EAa7B,EAAA,EAAA,YAAA,EAAA,iCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAAC,mCAAe,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,kDCtGtD,m9BA4BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDac,iBAAiB,EAAE,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,uGAAE,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAEzC,WAAW,EAAA,UAAA,EAAA,CAAA;kBARvB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,iBAET,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAiB,WAAA,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,OAAA,EAC3F,CAAC,iBAAiB,EAAE,SAAS,EAAE,UAAU,CAAC,EAAA,QAAA,EAAA,m9BAAA,EAAA;8BAKN,SAAS,EAAA,CAAA;sBAArD,WAAW;uBAAC,8BAA8B;gBAEH,UAAU,EAAA,CAAA;sBAAjD,WAAW;uBAAC,yBAAyB;gBAM7B,OAAO,EAAA,CAAA;sBAAf;gBAKQ,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,eAAe,EAAA,CAAA;sBAAvB;gBAKS,eAAe,EAAA,CAAA;sBAAxB;gBAKS,cAAc,EAAA,CAAA;sBAAvB;gBAKS,kBAAkB,EAAA,CAAA;sBAA3B;gBAKQ,WAAW,EAAA,CAAA;sBAAnB;gBAK8C,gBAAgB,EAAA,CAAA;sBAA9D,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAAD,oBAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;gBAQpC,0BAA0B,EAAA,CAAA;sBAAlC;gBAKqD,+BAA+B,EAAA,CAAA;sBAApF,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAAC,mCAAe,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;;;MEtE3C,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAhBtB,YAAY;YACZ,WAAW;YACX,eAAe;YACf,aAAa;YACb,eAAe;YACf,eAAe;YACf,cAAc;YACd,eAAe;YACf,kBAAkB;YAClB,iBAAiB;YACjB,WAAW;YACX,oBAAoB;AACpB,YAAA,mCAAmC,aAE7B,iBAAiB,EAAE,WAAW,EAAE,oBAAoB,EAAE,mCAAmC,CAAA,EAAA,CAAA,CAAA;AAE1F,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAhBtB,YAAY;YACZ,WAAW;YACX,eAAe;YACf,aAAa;YACb,eAAe;YACf,eAAe;YACf,cAAc;YACd,eAAe;YACf,kBAAkB;YAClB,iBAAiB;YACjB,WAAW,CAAA,EAAA,CAAA,CAAA;;2FAMN,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAlB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,WAAW;wBACX,eAAe;wBACf,aAAa;wBACb,eAAe;wBACf,eAAe;wBACf,cAAc;wBACd,eAAe;wBACf,kBAAkB;wBAClB,iBAAiB;wBACjB,WAAW;wBACX,oBAAoB;wBACpB;AACH,qBAAA;oBACD,OAAO,EAAE,CAAC,iBAAiB,EAAE,WAAW,EAAE,oBAAoB,EAAE,mCAAmC;AACtG,iBAAA;;;AC/BD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-calendar.mjs","sources":["../../../src/calendar/calendar-header.component.ts","../../../src/calendar/calendar-header.component.html","../../../src/calendar/calendar-cells.ts","../../../src/calendar/calendar.component.ts","../../../src/calendar/calendar.component.html","../../../src/calendar/module.ts","../../../src/calendar/ngx-tethys-calendar.ts"],"sourcesContent":["import { DateRangeItemInfo, ThyDateRange } from 'ngx-tethys/date-range';\nimport { endOfMonth, FunctionProp, getMonth, getUnixTime, getYear, startOfMonth, TinyDate } from 'ngx-tethys/util';\n\nimport { JsonPipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectorRef, Component, effect, HostBinding, inject, input, OnInit, output, Signal, TemplateRef } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyButton } from 'ngx-tethys/button';\nimport { DateHelperService } from 'ngx-tethys/date-picker';\nimport { injectLocale, ThyCalendarLocale } from 'ngx-tethys/i18n';\n\n/**\n * 日历头部操作栏组件\n * @name thy-calendar-header\n * @order 20\n */\n@Component({\n selector: 'thy-calendar-header',\n templateUrl: './calendar-header.component.html',\n imports: [ThyDateRange, FormsModule, ThyButton, NgTemplateOutlet, JsonPipe]\n})\nexport class ThyCalendarHeader implements OnInit {\n private cdr = inject(ChangeDetectorRef);\n private dateHelper = inject(DateHelperService);\n public locale: Signal<ThyCalendarLocale> = injectLocale('calendar');\n\n @HostBinding('class.thy-calendar-full-header-container') className = true;\n\n /**\n * 当前选中日期\n */\n readonly currentDate = input<TinyDate>();\n\n /**\n * \t自定义渲染右侧操作项\n */\n readonly operationRender = input<FunctionProp<TemplateRef<any>>>();\n\n /**\n * 日期选择范围(年)发生变化的回调\n */\n readonly yearChange = output<number>();\n\n /**\n * 日期选择范围(月)发生变化的回调\n */\n readonly monthChange = output<number>();\n\n /**\n * 日期选择范围(日期)发生变化的回调\n */\n readonly dateRangeChange = output<DateRangeItemInfo>();\n\n public pickerFormat = this.locale().yearMonthFormat;\n\n public dateRanges: DateRangeItemInfo[] = [\n {\n key: 'month',\n text: this.dateHelper.format(new TinyDate().nativeDate, this.pickerFormat),\n begin: getUnixTime(startOfMonth(new TinyDate().getTime())),\n end: getUnixTime(endOfMonth(new TinyDate().getTime())),\n timestamp: {\n interval: 1,\n unit: 'month'\n }\n }\n ];\n\n public date: DateRangeItemInfo;\n\n private _currentDate: TinyDate;\n\n public isCurrent: boolean;\n\n constructor() {\n effect(() => {\n this.setDate();\n });\n }\n\n ngOnInit(): void {}\n\n onChangeMonth(month: DateRangeItemInfo) {\n const currentMonth = TinyDate.fromUnixTime(month.end).getMonth();\n this.monthChange.emit(currentMonth);\n }\n\n onChangeYear(year: DateRangeItemInfo) {\n const currentYear = TinyDate.fromUnixTime(year.begin).getFullYear();\n this.yearChange.emit(currentYear);\n }\n\n onChangeRange(dateRange: DateRangeItemInfo) {\n this.isCurrentDate(this._currentDate);\n this.onChangeYear(dateRange);\n this.onChangeMonth(dateRange);\n this.dateRangeChange.emit(dateRange);\n }\n\n backToday() {\n this._currentDate = new TinyDate();\n this.date = { ...this.dateRanges[0] };\n this.onChangeRange(this.date);\n this.cdr.detectChanges();\n }\n\n setDate() {\n const currentDate = this.currentDate();\n this.isCurrentDate(currentDate);\n if (this.isCurrent) {\n this._currentDate = currentDate;\n const dateRange = {\n ...this.dateRanges[0],\n key: 'exception',\n text: this._currentDate.format(this.pickerFormat),\n begin: getUnixTime(startOfMonth(this._currentDate.getTime())),\n end: getUnixTime(endOfMonth(this._currentDate.getTime()))\n };\n this.date = dateRange;\n } else {\n this._currentDate = new TinyDate();\n this.date = { ...this.dateRanges[0] };\n }\n }\n\n isCurrentDate(currentDate: TinyDate) {\n this.isCurrent =\n currentDate.getMonth() !== getMonth(new TinyDate().getTime()) || currentDate.getYear() !== getYear(new TinyDate().getTime());\n }\n}\n","<div class=\"thy-calendar-full-header-left\">\n <thy-date-range\n class=\"select-date-range\"\n [ngModel]=\"date\"\n [thyHiddenMenu]=\"true\"\n [thyCustomKey]=\"'exception'\"\n [thyPickerFormat]=\"pickerFormat\"\n (ngModelChange)=\"onChangeRange($event)\"></thy-date-range>\n @if (isCurrent) {\n <button thyButton=\"outline-default-square\" thySize=\"md\" (click)=\"backToday()\">{{ locale().today }}</button>\n }\n</div>\n<div class=\"thy-calendar-full-header-right\">\n <ng-container *ngTemplateOutlet=\"$any(operationRender()); context: { $implicit: operationRender() }\">\n <span>{{ operationRender() | json }}</span>\n </ng-container>\n</div>\n","import { Directive } from '@angular/core';\n\n/**\n * 自定义日期单元格,模板内容会被追加到单元格,可通过 *thyDateCell 传入模板\n * @name thyDateCell\n */\n@Directive({\n selector: '[thyDateCell]',\n exportAs: 'thyDateCell'\n})\nexport class ThyDateCellDirective {}\n\n/**\n * 自定义右上角操作项,可通过 *thyCalendarHeaderOperation传入模板\n * @name thyCalendarHeaderOperation\n */\n@Directive({\n selector: '[thyCalendarHeaderOperation]',\n exportAs: 'thyCalendarHeaderOperation'\n})\nexport class ThyCalendarHeaderOperationDirective {}\n","import { DateRangeItemInfo } from 'ngx-tethys/date-range';\nimport { TinyDate } from 'ngx-tethys/util';\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n contentChild,\n effect,\n forwardRef,\n HostBinding,\n inject,\n input,\n OnInit,\n output,\n Signal,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { DateTable, MonthTable } from 'ngx-tethys/date-picker';\nimport { ThyDateCellDirective as DateCell, ThyCalendarHeaderOperationDirective as HeaderOperation } from './calendar-cells';\n\nimport { ThyCalendarHeader } from './calendar-header.component';\n\nexport type CalendarMode = 'month' | 'year';\ntype CalendarDateTemplate = TemplateRef<{ $implicit: Date }>;\n\n/**\n * 日历组件\n * @name thy-calendar\n * @order 10\n */\n@Component({\n selector: 'thy-calendar',\n templateUrl: './calendar.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ThyCalendar), multi: true }],\n imports: [ThyCalendarHeader, DateTable, MonthTable]\n})\nexport class ThyCalendar implements OnInit {\n private cdr = inject(ChangeDetectorRef);\n\n @HostBinding('class.thy-calendar-container') className = true;\n\n @HostBinding('class.thy-calendar-full') className1 = true;\n\n /**\n * 展示模式\n * @type month | year\n */\n readonly thyMode = input<CalendarMode>('month');\n\n /**\n * (可双向绑定)展示日期,默认为当前日期\n */\n readonly thyValue = input<Date>();\n\n /**\n * 不可选择的日期\n */\n readonly thyDisabledDate = input<(date: Date) => boolean>();\n\n /**\n * 日期选择变化的回调\n */\n readonly thySelectChange = output<Date>();\n\n /**\n * 日期选择变化的回调\n */\n readonly thyValueChange = output<Date>();\n\n /**\n * 日期选择范围变化的回调\n */\n readonly thyDateRangeChange = output<DateRangeItemInfo>();\n\n /**\n * (可作为内容)自定义渲染日期单元格,模板内容会被追加到单元格\n */\n readonly thyDateCell = input<CalendarDateTemplate>();\n\n /**\n * 追加到单元格的自定义模板\n */\n readonly thyDateCellChild = contentChild(DateCell, { read: TemplateRef });\n\n readonly dateCell: Signal<CalendarDateTemplate> = computed(() => {\n return (this.thyDateCell() || this.thyDateCellChild())!;\n });\n\n /**\n * (可作为内容)自定义渲染右上角操作项\n */\n readonly thyCalendarHeaderOperation = input<CalendarDateTemplate>();\n\n /**\n * 右上角操作项的自定义模板\n */\n readonly thyCalendarHeaderOperationChild = contentChild(HeaderOperation, { read: TemplateRef });\n\n readonly headerOperation: Signal<CalendarDateTemplate> = computed(() => {\n return (this.thyCalendarHeaderOperation() || this.thyCalendarHeaderOperationChild())!;\n });\n\n public currentDate = new TinyDate();\n\n public prefixCls = 'thy-calendar-full';\n\n private onChangeFn: (date: Date) => void = () => {};\n\n private onTouchFn: () => void = () => {};\n\n ngOnInit(): void {}\n\n onYearSelect(year: number): void {\n const date = this.currentDate.setYear(year);\n this.updateDate(date);\n }\n\n onMonthSelect(month: number): void {\n const date = this.currentDate.setMonth(month);\n this.updateDate(date);\n }\n\n onDateSelect(date: TinyDate): void {\n // Only currentDate is enough in calendar\n // this.value = date;\n this.updateDate(date);\n }\n\n onDateRangeSelect(date: DateRangeItemInfo) {\n this.thyDateRangeChange.emit(date);\n }\n\n writeValue(value: Date | null): void {\n this.updateDate(new TinyDate(value as Date), false);\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (date: Date) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchFn = fn;\n }\n\n private updateDate(date: TinyDate, touched: boolean = true): void {\n this.currentDate = date;\n\n if (touched) {\n this.onChangeFn(date.nativeDate);\n this.onTouchFn();\n this.thySelectChange.emit(date.nativeDate);\n this.thyValueChange.emit(date.nativeDate);\n }\n }\n\n constructor() {\n effect(() => {\n if (this.thyValue()) {\n this.updateDate(new TinyDate(this.thyValue()), false);\n }\n });\n }\n}\n","<thy-calendar-header\n [operationRender]=\"headerOperation()\"\n (monthChange)=\"onMonthSelect($event)\"\n (yearChange)=\"onYearSelect($event)\"\n (dateRangeChange)=\"onDateRangeSelect($event)\"\n [currentDate]=\"currentDate\"></thy-calendar-header>\n\n<div class=\"thy-calendar-panel\">\n <div class=\"thy-calendar-{{ thyMode() === 'month' ? 'date' : 'month' }}-panel\">\n <div class=\"thy-calendar-body\">\n @if (thyMode() === 'month') {\n <date-table\n [prefixCls]=\"prefixCls\"\n [value]=\"currentDate\"\n [activeDate]=\"currentDate\"\n [selectedValue]=\"currentDate\"\n [cellRender]=\"dateCell()\"\n [disabledDate]=\"thyDisabledDate()\"\n (valueChange)=\"onDateSelect($event)\"></date-table>\n } @else {\n <month-table [value]=\"currentDate\" [disabledDate]=\"thyDisabledDate()\" (valueChange)=\"onDateSelect($event)\"></month-table>\n }\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyCalendarHeader } from './calendar-header.component';\nimport { ThyCalendar } from './calendar.component';\nimport { ThyCalendarHeaderOperationDirective, ThyDateCellDirective } from './calendar-cells';\nimport { LibPackerModule } from 'ngx-tethys/date-picker';\nimport { ThySelectModule } from 'ngx-tethys/select';\nimport { ThyRadioModule } from 'ngx-tethys/radio';\nimport { ThyButtonModule } from 'ngx-tethys/button';\nimport { ThyDateRangeModule } from 'ngx-tethys/date-range';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThySharedModule,\n ThyIconModule,\n LibPackerModule,\n ThySelectModule,\n ThyRadioModule,\n ThyButtonModule,\n ThyDateRangeModule,\n ThyCalendarHeader,\n ThyCalendar,\n ThyDateCellDirective,\n ThyCalendarHeaderOperationDirective\n ],\n exports: [ThyCalendarHeader, ThyCalendar, ThyDateCellDirective, ThyCalendarHeaderOperationDirective]\n})\nexport class ThyCalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["DateCell","HeaderOperation"],"mappings":"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"}
|