ngx-tethys 22.0.1 → 22.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +55 -0
- package/button/styles/button-group.scss +25 -18
- package/button/styles/button.scss +3 -1
- package/button/styles/mixin.scss +7 -2
- package/button/styles/theme.scss +3 -1
- package/cascader/styles/cascader.scss +5 -0
- package/date-picker/styles/index.scss +5 -0
- package/date-picker/styles/picker.scss +5 -0
- package/fesm2022/ngx-tethys-action.mjs +13 -4
- package/fesm2022/ngx-tethys-action.mjs.map +1 -1
- package/fesm2022/ngx-tethys-alert.mjs +34 -13
- package/fesm2022/ngx-tethys-alert.mjs.map +1 -1
- package/fesm2022/ngx-tethys-arrow-switcher.mjs +17 -6
- package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
- package/fesm2022/ngx-tethys-autocomplete.mjs +11 -3
- package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
- package/fesm2022/ngx-tethys-badge.mjs +17 -5
- package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
- package/fesm2022/ngx-tethys-breadcrumb.mjs +1 -1
- package/fesm2022/ngx-tethys-breadcrumb.mjs.map +1 -1
- package/fesm2022/ngx-tethys-button.mjs +54 -27
- package/fesm2022/ngx-tethys-button.mjs.map +1 -1
- package/fesm2022/ngx-tethys-calendar.mjs +1 -1
- package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
- package/fesm2022/ngx-tethys-card.mjs +1 -3
- package/fesm2022/ngx-tethys-card.mjs.map +1 -1
- package/fesm2022/ngx-tethys-carousel.mjs +1 -1
- package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
- package/fesm2022/ngx-tethys-cascader.mjs +37 -29
- package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2022/ngx-tethys-collapse.mjs +19 -8
- package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
- package/fesm2022/ngx-tethys-color-picker.mjs +1 -1
- package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-core.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-picker.mjs +36 -24
- package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-range.mjs +2 -2
- package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dialog.mjs +194 -196
- package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
- package/fesm2022/ngx-tethys-divider.mjs +18 -7
- package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dot.mjs +18 -7
- package/fesm2022/ngx-tethys-dot.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dropdown.mjs +16 -5
- package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
- package/fesm2022/ngx-tethys-form.mjs +447 -101
- package/fesm2022/ngx-tethys-form.mjs.map +1 -1
- package/fesm2022/ngx-tethys-image.mjs +1 -1
- package/fesm2022/ngx-tethys-image.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input-number.mjs +11 -5
- package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input.mjs +61 -20
- package/fesm2022/ngx-tethys-input.mjs.map +1 -1
- package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
- package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
- package/fesm2022/ngx-tethys-menu.mjs +36 -6
- package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
- package/fesm2022/ngx-tethys-message.mjs.map +1 -1
- package/fesm2022/ngx-tethys-native-table.mjs +26 -11
- package/fesm2022/ngx-tethys-native-table.mjs.map +1 -1
- package/fesm2022/ngx-tethys-nav.mjs +26 -16
- package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
- package/fesm2022/ngx-tethys-notify.mjs +1 -1
- package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
- package/fesm2022/ngx-tethys-pagination.mjs +1 -1
- package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
- package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
- package/fesm2022/ngx-tethys-progress.mjs +81 -55
- package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property-operation.mjs +32 -24
- package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property.mjs.map +1 -1
- package/fesm2022/ngx-tethys-radio.mjs +1 -0
- package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
- package/fesm2022/ngx-tethys-segment.mjs +0 -1
- package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
- package/fesm2022/ngx-tethys-select.mjs +29 -11
- package/fesm2022/ngx-tethys-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-shared.mjs +17 -8
- package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slide.mjs +1 -1
- package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slider.mjs +38 -13
- package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-space.mjs.map +1 -1
- package/fesm2022/ngx-tethys-statistic.mjs +20 -10
- package/fesm2022/ngx-tethys-statistic.mjs.map +1 -1
- package/fesm2022/ngx-tethys-stepper.mjs +1 -1
- package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
- package/fesm2022/ngx-tethys-strength.mjs +9 -1
- package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
- package/fesm2022/ngx-tethys-switch.mjs +20 -11
- package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
- package/fesm2022/ngx-tethys-table.mjs +28 -17
- package/fesm2022/ngx-tethys-table.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tabs.mjs +17 -23
- package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
- package/fesm2022/ngx-tethys-time-picker.mjs +12 -6
- package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-timeline.mjs +2 -8
- package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree-select.mjs +12 -7
- package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
- package/fesm2022/ngx-tethys-typography.mjs +0 -1
- package/fesm2022/ngx-tethys-typography.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/form/styles/forms.scss +1 -0
- package/form/styles/mixin.scss +37 -0
- package/form/styles/theme.scss +1 -0
- package/input/styles/input.scss +28 -19
- package/input-number/styles/input-number.scss +22 -3
- package/menu/examples/variant/variant.component.scss +21 -0
- package/nav/examples/pulled/pulled.component.scss +6 -0
- package/package.json +1 -1
- package/schematics/ng-update/update-22/badge-dot-hollow-migration.spec.js +4 -4
- package/schematics/ng-update/update-22/button-appearance-migration.js +16 -6
- package/schematics/ng-update/update-22/button-appearance-migration.spec.js +6 -5
- package/schematics/ng-update/update-22/button-group-appearance-migration.d.ts +6 -0
- package/schematics/ng-update/update-22/button-group-appearance-migration.js +157 -0
- package/schematics/ng-update/update-22/button-group-appearance-migration.spec.d.ts +1 -0
- package/schematics/ng-update/update-22/button-group-appearance-migration.spec.js +56 -0
- package/schematics/ng-update/update-22/class-name-migration.spec.js +135 -0
- package/schematics/ng-update/update-22/divider-deeper-migration.js +12 -5
- package/schematics/ng-update/update-22/divider-deeper-migration.spec.js +9 -1
- package/schematics/ng-update/update-22/index.js +9 -1
- package/schematics/ng-update/update-22/index.spec.js +844 -3
- package/schematics/ng-update/update-22/input-search-appearance-migration.d.ts +6 -0
- package/schematics/ng-update/update-22/input-search-appearance-migration.js +94 -0
- package/schematics/ng-update/update-22/input-search-appearance-migration.spec.d.ts +1 -0
- package/schematics/ng-update/update-22/input-search-appearance-migration.spec.js +41 -0
- package/schematics/ng-update/update-22/menu-theme-migration.d.ts +14 -0
- package/schematics/ng-update/update-22/menu-theme-migration.js +108 -0
- package/schematics/ng-update/update-22/menu-theme-migration.spec.d.ts +1 -0
- package/schematics/ng-update/update-22/menu-theme-migration.spec.js +42 -0
- package/schematics/ng-update/update-22/select-borderless-migration.d.ts +6 -0
- package/schematics/ng-update/update-22/select-borderless-migration.js +111 -0
- package/schematics/ng-update/update-22/select-borderless-migration.spec.d.ts +1 -0
- package/schematics/ng-update/update-22/select-borderless-migration.spec.js +49 -0
- package/schematics/ng-update/update-22/update-data.js +155 -1
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/select/styles/custom-select.scss +5 -0
- package/select/styles/theme.scss +10 -0
- package/shared/select/select-control/select-control.scss +4 -3
- package/time-picker/styles/time-picker.scss +11 -2
- package/types/ngx-tethys-action.d.ts +14 -5
- package/types/ngx-tethys-alert.d.ts +28 -8
- package/types/ngx-tethys-arrow-switcher.d.ts +16 -5
- package/types/ngx-tethys-autocomplete.d.ts +8 -2
- package/types/ngx-tethys-badge.d.ts +14 -4
- package/types/ngx-tethys-button.d.ts +41 -12
- package/types/ngx-tethys-card.d.ts +3 -6
- package/types/ngx-tethys-cascader.d.ts +9 -3
- package/types/ngx-tethys-collapse.d.ts +18 -5
- package/types/ngx-tethys-core.d.ts +2 -1
- package/types/ngx-tethys-date-picker.d.ts +15 -3
- package/types/ngx-tethys-dialog.d.ts +1 -3
- package/types/ngx-tethys-divider.d.ts +20 -9
- package/types/ngx-tethys-dot.d.ts +25 -13
- package/types/ngx-tethys-dropdown.d.ts +16 -5
- package/types/ngx-tethys-form.d.ts +198 -55
- package/types/ngx-tethys-input-number.d.ts +8 -2
- package/types/ngx-tethys-input.d.ts +43 -12
- package/types/ngx-tethys-menu.d.ts +16 -4
- package/types/ngx-tethys-native-table.d.ts +21 -6
- package/types/ngx-tethys-nav.d.ts +18 -7
- package/types/ngx-tethys-progress.d.ts +42 -18
- package/types/ngx-tethys-property-operation.d.ts +6 -0
- package/types/ngx-tethys-segment.d.ts +0 -1
- package/types/ngx-tethys-select.d.ts +23 -5
- package/types/ngx-tethys-shared.d.ts +12 -3
- package/types/ngx-tethys-slider.d.ts +22 -8
- package/types/ngx-tethys-space.d.ts +3 -1
- package/types/ngx-tethys-statistic.d.ts +23 -9
- package/types/ngx-tethys-stepper.d.ts +1 -1
- package/types/ngx-tethys-strength.d.ts +5 -0
- package/types/ngx-tethys-switch.d.ts +15 -4
- package/types/ngx-tethys-table.d.ts +24 -8
- package/types/ngx-tethys-tabs.d.ts +17 -8
- package/types/ngx-tethys-time-picker.d.ts +8 -2
- package/types/ngx-tethys-timeline.d.ts +13 -14
- package/types/ngx-tethys-tree-select.d.ts +8 -3
- package/types/ngx-tethys-typography.d.ts +0 -1
- /package/action/examples/{type/type.component.scss → color/color.component.scss} +0 -0
- /package/badge/examples/{type/type.component.scss → color/color.component.scss} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,61 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [22.0.3](github.com/atinc/ngx-tethys/compare/22.0.2...22.0.3) (2026-09-24)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **radio:** support md size class for radio-group #TINFR-4085 ([#3947](/github.com/atinc/ngx-tethys/issues/3947)) ([aaafd1a](github.com/atinc/ngx-tethys/commits/aaafd1a1e347db9e4719b5ff185ca70e9b5e9b17)), closes [#TINFR-4085](github.com/atinc/ngx-tethys/issues/TINFR-4085)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* **action:** add thyColor and ThyActionColor, deprecate thyType and ThyActionType #TINFR-4096 ([#3957](/github.com/atinc/ngx-tethys/issues/3957)) ([5f81cd9](github.com/atinc/ngx-tethys/commits/5f81cd9519816718e6e039233a31d6d32ce25d6f)), closes [#TINFR-4096](github.com/atinc/ngx-tethys/issues/TINFR-4096)
|
|
16
|
+
* **arrow-switcher:** add thyVariant and ThyArrowSwitcherVariant, deprecate thyTheme and ThyArrowSwitcherTheme #TINFR-4094 ([#3955](/github.com/atinc/ngx-tethys/issues/3955)) ([07f6160](github.com/atinc/ngx-tethys/commits/07f616046fc21d8d8c8238dd88af65cc69317a60)), closes [#TINFR-4094](github.com/atinc/ngx-tethys/issues/TINFR-4094)
|
|
17
|
+
* **autocomplete:** support thyAppearance outline | subtle | ghost #TINFR-4110 ([#3967](/github.com/atinc/ngx-tethys/issues/3967)) ([6ea6f71](github.com/atinc/ngx-tethys/commits/6ea6f71744e61bd20ddf884b097a901f588601fd)), closes [#TINFR-4110](github.com/atinc/ngx-tethys/issues/TINFR-4110)
|
|
18
|
+
* **badge:** add thyColor, ThyBadgeColor and mark thyType as deprecated #TINFR-4089 ([#3951](/github.com/atinc/ngx-tethys/issues/3951)) ([8895cbc](github.com/atinc/ngx-tethys/commits/8895cbcc7a76558a7102f6b353cbce42d0e17de5)), closes [#TINFR-4089](github.com/atinc/ngx-tethys/issues/TINFR-4089)
|
|
19
|
+
* **button:** support thyAppearance for button-group and mark thyType deprecated #TINFR-3995 ([#3946](/github.com/atinc/ngx-tethys/issues/3946)) ([83e39cd](github.com/atinc/ngx-tethys/commits/83e39cdbad171277b02b589202989036524af1a6)), closes [#TINFR-3995](github.com/atinc/ngx-tethys/issues/TINFR-3995)
|
|
20
|
+
* **cascader:** support thyAppearance outline | subtle | ghost #TINFR-4109 ([#3970](/github.com/atinc/ngx-tethys/issues/3970)) ([825f4c0](github.com/atinc/ngx-tethys/commits/825f4c0d4c47ba732ed0f9da376c2b6974273ed1)), closes [#TINFR-4109](github.com/atinc/ngx-tethys/issues/TINFR-4109)
|
|
21
|
+
* **datePicker:** support thyAppearance outline | subtle | ghost #TIN… ([#3968](/github.com/atinc/ngx-tethys/issues/3968)) ([3af16c9](github.com/atinc/ngx-tethys/commits/3af16c917ce25e66e6580a5a4922486b7844ed46))
|
|
22
|
+
* **divider:** support thyAppearance,ThyDividerAppearance,and mark thyStyle,ThyDividerStyle as deprecated #TINFR-4087 ([#3949](/github.com/atinc/ngx-tethys/issues/3949)) ([3dff1b6](github.com/atinc/ngx-tethys/commits/3dff1b681051b9cd0fc7ffc300c9b17a5ca67236)), closes [#TINFR-4087](github.com/atinc/ngx-tethys/issues/TINFR-4087) [#TINFR-4087](github.com/atinc/ngx-tethys/issues/TINFR-4087)
|
|
23
|
+
* **dropdown:** introduce thyColor and ThyDropdownMenuItemColor, mark thyType and ThyDropdownMenuItemType as deprecated #TINFR-4095 ([#3956](/github.com/atinc/ngx-tethys/issues/3956)) ([0a246de](github.com/atinc/ngx-tethys/commits/0a246defaeeb04b5a8f0669196edf15962c0f9db)), closes [#TINFR-4095](github.com/atinc/ngx-tethys/issues/TINFR-4095)
|
|
24
|
+
* **form:** 支持由 schema 驱动的动态表单 #TINFR-4119 ([#3966](/github.com/atinc/ngx-tethys/issues/3966)) ([c3fffeb](github.com/atinc/ngx-tethys/commits/c3fffeb8fcc35a12abbcbef62b960683162d7d64)), closes [#TINFR-4119](github.com/atinc/ngx-tethys/issues/TINFR-4119) [#TINFR-4119](github.com/atinc/ngx-tethys/issues/TINFR-4119)
|
|
25
|
+
* **input-number:** support thyAppearance outline | subtle | ghost #TINFR-4113 ([#3971](/github.com/atinc/ngx-tethys/issues/3971)) ([cddd76c](github.com/atinc/ngx-tethys/commits/cddd76c3f90c0c5a543d9f9ab22a467436844d21)), closes [#TINFR-4113](github.com/atinc/ngx-tethys/issues/TINFR-4113)
|
|
26
|
+
* **input-search:** add thyAppearance,ThyInputSearchAppearance and mark thyTheme,ThyInputSearchTheme as deprecated #TINFR-4099 ([#3958](/github.com/atinc/ngx-tethys/issues/3958)) ([2f0cdc8](github.com/atinc/ngx-tethys/commits/2f0cdc8344e4e9b8fa9624eac8d190834fd6c1dd)), closes [#TINFR-4099](github.com/atinc/ngx-tethys/issues/TINFR-4099)
|
|
27
|
+
* **input-search:** rename thyTheme and ThyInputSearchTheme to thyVariant and ThyInputSearchVariant #TINFR-4099 ([1bfe11b](github.com/atinc/ngx-tethys/commits/1bfe11b03f36218c0a770058a04830199493a3e7)), closes [#TINFR-4099](github.com/atinc/ngx-tethys/issues/TINFR-4099)
|
|
28
|
+
* **input:** support thyAppearance outline | subtle | ghost #TINFR-4107 ([#3960](/github.com/atinc/ngx-tethys/issues/3960)) ([2cc4e35](github.com/atinc/ngx-tethys/commits/2cc4e3561388f508e31c4d05726124ea0d289f52)), closes [#TINFR-4107](github.com/atinc/ngx-tethys/issues/TINFR-4107)
|
|
29
|
+
* **menu:** thyVariant,ThyMenuVariant support compact,loose and thyTheme,ThyMenuTheme support light,dark #TINFR-4070 ([#3945](/github.com/atinc/ngx-tethys/issues/3945)) ([a29b087](github.com/atinc/ngx-tethys/commits/a29b08712c2f58261097dcba748dab4fc02ac934)), closes [#TINFR-4070](github.com/atinc/ngx-tethys/issues/TINFR-4070) [#TINFR-4078](github.com/atinc/ngx-tethys/issues/TINFR-4078)
|
|
30
|
+
* **nav, property-operation:** deprecate thy-icon-nav, thyIconNavLink, thy-property-operation, and related components #NEXUS-5493 ([#3961](/github.com/atinc/ngx-tethys/issues/3961)) ([a7a5829](github.com/atinc/ngx-tethys/commits/a7a582910527b264950813ca65dd36e6b71a7787)), closes [#NEXUS-5493](github.com/atinc/ngx-tethys/issues/NEXUS-5493)
|
|
31
|
+
* **progress:** add thyColor,ThyProgressColor,ThyProgressShape,ThyProgressGapPosition and mark thyType,ThyProgressType,ThyProgressShapeType,ThyProgressGapPositionType as deprecated #TINFR-4090 ([#3952](/github.com/atinc/ngx-tethys/issues/3952)) ([a6970c9](github.com/atinc/ngx-tethys/commits/a6970c9c821eb981c55d1a8015dda8355b137c22)), closes [#TINFR-4090](github.com/atinc/ngx-tethys/issues/TINFR-4090)
|
|
32
|
+
* **select:** support thyAppearance outline | subtle | ghost #TINFR-4108 ([#3965](/github.com/atinc/ngx-tethys/issues/3965)) ([26bd3a0](github.com/atinc/ngx-tethys/commits/26bd3a02daddaa3cea0648eb864a78bcea2ad526)), closes [#TINFR-4108](github.com/atinc/ngx-tethys/issues/TINFR-4108)
|
|
33
|
+
* **slider:** thyColor support primary | success | info | warning | danger | string,mark thyType, ThySliderType as deprecated #TINFR-4086 ([#3948](/github.com/atinc/ngx-tethys/issues/3948)) ([a25b133](github.com/atinc/ngx-tethys/commits/a25b1330fb89c4ab7f2930921f9260396a242538)), closes [#TINFR-4086](github.com/atinc/ngx-tethys/issues/TINFR-4086)
|
|
34
|
+
* **statistic:** deprecate thyShape and ThyStatisticShape, introduce thyAppearance and ThyStatisticAppearance, ThyStatisticColorType → ThyStatisticColor, ThyStatisticSizes → ThyStatisticSize #TINFR-4091 ([#3953](/github.com/atinc/ngx-tethys/issues/3953)) ([3fc074b](github.com/atinc/ngx-tethys/commits/3fc074b9647872c5f345542343e436d590b9221d)), closes [#TINFR-4091](github.com/atinc/ngx-tethys/issues/TINFR-4091)
|
|
35
|
+
* **strength:** deprecate thy-strength and ThyStrengthModule, scheduled for removal in v23 ([#3962](/github.com/atinc/ngx-tethys/issues/3962)) ([f25087e](github.com/atinc/ngx-tethys/commits/f25087e989fb20c06c79a7d64b8178e1c9a40d5e))
|
|
36
|
+
* **switch:** add thyColor, ThySwitchColor and mark thyType as deprecated #TINFR-4088 ([#3950](/github.com/atinc/ngx-tethys/issues/3950)) ([ae1bed7](github.com/atinc/ngx-tethys/commits/ae1bed75399a236f01f94b15a7d5383aae5dbafb)), closes [#TINFR-4088](github.com/atinc/ngx-tethys/issues/TINFR-4088)
|
|
37
|
+
* **table:** add thyAppearance,deprecate thyTheme in thy-native-table and thy-table-skeleton ([#3959](/github.com/atinc/ngx-tethys/issues/3959)) ([50c2870](github.com/atinc/ngx-tethys/commits/50c2870f9aef5433c81bf1303db0cfe72532d60f))
|
|
38
|
+
* **time-picker:** support thyAppearance outline | subtle | ghost #TINFR-4114 ([#3972](/github.com/atinc/ngx-tethys/issues/3972)) ([a95c881](github.com/atinc/ngx-tethys/commits/a95c8810f4182ad98ebaec0d3cf9edf0d35d87d5)), closes [#TINFR-4114](github.com/atinc/ngx-tethys/issues/TINFR-4114)
|
|
39
|
+
* **timeline:** rename thyColor to ThyTimelineColor and ThyTimeMode to ThyTimelineMode; mark old types as deprecated #TINFR-4092 ([#3954](/github.com/atinc/ngx-tethys/issues/3954)) ([c1de9ef](github.com/atinc/ngx-tethys/commits/c1de9efb2e189d2cadb91f58b4dab1d638b4c03d)), closes [#TINFR-4092](github.com/atinc/ngx-tethys/issues/TINFR-4092)
|
|
40
|
+
* **tree-select:** support thyAppearance outline | subtle | ghost #TINFR-4115 ([#3974](/github.com/atinc/ngx-tethys/issues/3974)) ([4c26815](github.com/atinc/ngx-tethys/commits/4c268155d4e570f42c8c81508351d6100d7640bf)), closes [#TINFR-4115](github.com/atinc/ngx-tethys/issues/TINFR-4115)
|
|
41
|
+
|
|
42
|
+
## [22.0.2](github.com/atinc/ngx-tethys/compare/22.0.0...22.0.2) (2026-09-14)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
### Bug Fixes
|
|
46
|
+
|
|
47
|
+
* **input:** omit native type when thyType is null or undefined #TINFR-3994 ([cba2115](github.com/atinc/ngx-tethys/commits/cba21156a006fa9fd86094a3705570580ed538e2)), closes [#TINFR-3994](github.com/atinc/ngx-tethys/issues/TINFR-3994)
|
|
48
|
+
* **tabs:** keep current active tab when tabs change dynamically #NEXUS-5367 ([#3943](/github.com/atinc/ngx-tethys/issues/3943)) ([de469c2](github.com/atinc/ngx-tethys/commits/de469c20fe7797b9b1ea44a8ca11989a1e90d7e9)), closes [#NEXUS-5367](github.com/atinc/ngx-tethys/issues/NEXUS-5367)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
### Features
|
|
52
|
+
|
|
53
|
+
* **alert:** support thyColor, thyAppearance, ThyAlertColor, ThyAlertAppearance and mark thyType, thyTheme, ThyAlertTheme, ThyAlertType as deprecated #TINFR-3829 ([#3938](/github.com/atinc/ngx-tethys/issues/3938)) ([07b3eb0](github.com/atinc/ngx-tethys/commits/07b3eb0b30f2353b1f29cfcaa85fdb1725c05ef8)), closes [#TINFR-3829](github.com/atinc/ngx-tethys/issues/TINFR-3829)
|
|
54
|
+
* **button:** add thyColor, ThyButtonColor and mark thyType,ThyButtonType as deprecated #TINFR-4066 ([#3941](/github.com/atinc/ngx-tethys/issues/3941)) ([41e4cb2](github.com/atinc/ngx-tethys/commits/41e4cb254e134a87b0eee31e008dae26713d9397)), closes [#TINFR-4066](github.com/atinc/ngx-tethys/issues/TINFR-4066)
|
|
55
|
+
* **collapse:** support ThyCollapseAppearance, thyAppearance and mark thyTheme, ThyCollapseTheme as deprecated #TINFR-4068 ([#3939](/github.com/atinc/ngx-tethys/issues/3939)) ([734429b](github.com/atinc/ngx-tethys/commits/734429b4aece8bf50b1532ac62fb0c2ea920d2f6)), closes [#TINFR-4068](github.com/atinc/ngx-tethys/issues/TINFR-4068) [#TINFR-4068](github.com/atinc/ngx-tethys/issues/TINFR-4068)
|
|
56
|
+
* **dot:** support thyAppearance,ThyDotAppearance and mark thyTheme,ThyThemeType as deprecated #TINFR-4067 ([#3940](/github.com/atinc/ngx-tethys/issues/3940)) ([ecfe1c0](github.com/atinc/ngx-tethys/commits/ecfe1c057d7824ec91e20ab54ee2c8a2ca2db58b)), closes [#TINFR-4067](github.com/atinc/ngx-tethys/issues/TINFR-4067) [#TINFR-4067](github.com/atinc/ngx-tethys/issues/TINFR-4067)
|
|
57
|
+
* **nav:** add thyVariant instead of thyType #TINFR-3839 ([8745cf9](github.com/atinc/ngx-tethys/commits/8745cf9acd5c61e0dd1446c29129280a50ce5c04)), closes [#TINFR-3839](github.com/atinc/ngx-tethys/issues/TINFR-3839)
|
|
58
|
+
* **tabs:** add thyVariant,ThyTabsVariant and mark thyType,ThyTabsType as deprecated #TINFR-3840 ([#3942](/github.com/atinc/ngx-tethys/issues/3942)) ([2ed0ef9](github.com/atinc/ngx-tethys/commits/2ed0ef91146e3598a2c8643713b31138ad86d97a)), closes [#TINFR-3840](github.com/atinc/ngx-tethys/issues/TINFR-3840)
|
|
59
|
+
|
|
5
60
|
## [22.0.1](github.com/atinc/ngx-tethys/compare/22.0.0...22.0.1) (2026-09-10)
|
|
6
61
|
|
|
7
62
|
|
|
@@ -80,9 +80,7 @@
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
// Sizing
|
|
84
|
-
//
|
|
85
|
-
// Remix the default button sizing classes into new ones for easier manipulation.
|
|
83
|
+
// Sizing(保留给 radio-group 等仍使用 btn-group-{size} 的场景;thy-button-group 已改为同步子按钮 size)
|
|
86
84
|
|
|
87
85
|
.btn-group-xs > .btn {
|
|
88
86
|
@extend .btn-xs;
|
|
@@ -114,7 +112,17 @@
|
|
|
114
112
|
}
|
|
115
113
|
}
|
|
116
114
|
|
|
117
|
-
// type
|
|
115
|
+
// type(thyType 兼容,勿删)
|
|
116
|
+
|
|
117
|
+
@mixin btn-group-divider {
|
|
118
|
+
position: absolute;
|
|
119
|
+
content: '';
|
|
120
|
+
width: bootstrap-variables.$btn-border-width;
|
|
121
|
+
height: 100%;
|
|
122
|
+
top: 0;
|
|
123
|
+
left: 0px;
|
|
124
|
+
background: rgba(variables.$white, 0.3);
|
|
125
|
+
}
|
|
118
126
|
|
|
119
127
|
@each $color, $value in functions-variables.$theme-colors {
|
|
120
128
|
.btn-group-#{$color} > .btn {
|
|
@@ -122,13 +130,7 @@
|
|
|
122
130
|
// 按钮中间的分割线
|
|
123
131
|
&:not(:first-child) {
|
|
124
132
|
&::before {
|
|
125
|
-
|
|
126
|
-
content: '';
|
|
127
|
-
width: bootstrap-variables.$btn-border-width;
|
|
128
|
-
height: 100%;
|
|
129
|
-
top: 0;
|
|
130
|
-
left: 0px;
|
|
131
|
-
background: rgba(variables.$white, 0.3);
|
|
133
|
+
@include btn-group-divider;
|
|
132
134
|
}
|
|
133
135
|
}
|
|
134
136
|
}
|
|
@@ -136,13 +138,7 @@
|
|
|
136
138
|
.btn-group-#{$color} {
|
|
137
139
|
.btn:not(:first-child) {
|
|
138
140
|
&::before {
|
|
139
|
-
|
|
140
|
-
content: '';
|
|
141
|
-
width: bootstrap-variables.$btn-border-width;
|
|
142
|
-
height: 100%;
|
|
143
|
-
top: 0;
|
|
144
|
-
left: 0px;
|
|
145
|
-
background: rgba(variables.$white, 0.3);
|
|
141
|
+
@include btn-group-divider;
|
|
146
142
|
}
|
|
147
143
|
}
|
|
148
144
|
}
|
|
@@ -161,6 +157,17 @@
|
|
|
161
157
|
}
|
|
162
158
|
}
|
|
163
159
|
|
|
160
|
+
// thyAppearance="fill":实心色按钮组中间分割线
|
|
161
|
+
.btn-group-fill {
|
|
162
|
+
@each $color, $value in functions-variables.$theme-colors {
|
|
163
|
+
> .btn-#{$color}:not(:first-child) {
|
|
164
|
+
&::before {
|
|
165
|
+
@include btn-group-divider;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
164
171
|
// The clickable button for toggling the menu
|
|
165
172
|
// Set the same inset shadow as the :active state
|
|
166
173
|
.btn-group.show .dropdown-toggle {
|
|
@@ -97,7 +97,9 @@ fieldset:disabled a.btn {
|
|
|
97
97
|
variables.$gray-200
|
|
98
98
|
);
|
|
99
99
|
|
|
100
|
-
&:hover
|
|
100
|
+
&:hover,
|
|
101
|
+
&:not(:disabled):not(.disabled):active,
|
|
102
|
+
&:not(:disabled):not(.disabled).active {
|
|
101
103
|
@include shadow.box-shadow(0px 2px 5px 1px variables.$gray-80);
|
|
102
104
|
}
|
|
103
105
|
}
|
package/button/styles/mixin.scss
CHANGED
|
@@ -22,7 +22,10 @@
|
|
|
22
22
|
color: $color;
|
|
23
23
|
@include gradients.gradient-bg($background);
|
|
24
24
|
border-color: $border;
|
|
25
|
-
|
|
25
|
+
&:hover,
|
|
26
|
+
&:not(:disabled):not(.disabled):active,
|
|
27
|
+
&:not(:disabled):not(.disabled).active,
|
|
28
|
+
.show > &.dropdown-toggle {
|
|
26
29
|
color: $hover-color;
|
|
27
30
|
@include gradients.gradient-bg($hover-background);
|
|
28
31
|
border-color: $hover-border;
|
|
@@ -88,7 +91,9 @@
|
|
|
88
91
|
}
|
|
89
92
|
|
|
90
93
|
@mixin button-hover-box-shadow($color) {
|
|
91
|
-
&:hover
|
|
94
|
+
&:hover,
|
|
95
|
+
&:not(:disabled):not(.disabled):active,
|
|
96
|
+
&:not(:disabled):not(.disabled).active {
|
|
92
97
|
@include shadow.box-shadow(0px 2px 5px 1px rgba($color, 0.6));
|
|
93
98
|
}
|
|
94
99
|
}
|
package/button/styles/theme.scss
CHANGED
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
.btn-default {
|
|
7
7
|
@include button-variant($gray-700, $gray-700, $gray-200, $gray-200, $gray-200, $gray-200, $gray-200, $gray-200);
|
|
8
8
|
|
|
9
|
-
&:hover
|
|
9
|
+
&:hover,
|
|
10
|
+
&:not(:disabled):not(.disabled):active,
|
|
11
|
+
&:not(:disabled):not(.disabled).active {
|
|
10
12
|
box-shadow: 0px 2px 5px 1px $gray-80;
|
|
11
13
|
}
|
|
12
14
|
}
|
|
@@ -122,6 +122,11 @@
|
|
|
122
122
|
cursor: variables.$hand-cursor;
|
|
123
123
|
.panel-is-opened {
|
|
124
124
|
border-color: variables.$primary;
|
|
125
|
+
|
|
126
|
+
&.form-control-ghost {
|
|
127
|
+
border-color: transparent;
|
|
128
|
+
background-color: transparent;
|
|
129
|
+
}
|
|
125
130
|
}
|
|
126
131
|
.form-control {
|
|
127
132
|
padding-right: variables.$input-padding-x-md + variables.$font-size-md;
|
|
@@ -46,10 +46,19 @@ class ThyAction {
|
|
|
46
46
|
this.hostRenderer = useHostRenderer();
|
|
47
47
|
this.feedbackTimer = null;
|
|
48
48
|
/**
|
|
49
|
-
*
|
|
49
|
+
* 操作图标的颜色
|
|
50
|
+
* @type primary | success | danger | warning
|
|
51
|
+
*/
|
|
52
|
+
this.thyColor = input(/* @ts-ignore */
|
|
53
|
+
...(ngDevMode ? [undefined, { debugName: "thyColor" }] : /* istanbul ignore next */ []));
|
|
54
|
+
/**
|
|
55
|
+
* 操作图标的类型(已废弃,将在 v23 彻底删除),请使用 thyColor
|
|
56
|
+
* @deprecated please use thyColor, will be removed in v23
|
|
50
57
|
* @type primary | success | danger | warning
|
|
51
58
|
*/
|
|
52
59
|
this.thyType = input('primary', { ...(ngDevMode ? { debugName: "thyType" } : /* istanbul ignore next */ {}), transform: (value) => value || 'primary' });
|
|
60
|
+
this.color = computed(() => this.thyColor() || this.thyType() || 'primary', /* @ts-ignore */
|
|
61
|
+
...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
|
|
53
62
|
/**
|
|
54
63
|
* 操作图标,支持传参同时也支持在投影中写 thy-icon 组件
|
|
55
64
|
*/
|
|
@@ -135,7 +144,7 @@ class ThyAction {
|
|
|
135
144
|
}
|
|
136
145
|
updateClasses() {
|
|
137
146
|
const classNames = [];
|
|
138
|
-
classNames.push(`action-${this.
|
|
147
|
+
classNames.push(`action-${this.color()}`);
|
|
139
148
|
if (this.thyAppearance() === 'lite') {
|
|
140
149
|
classNames.push('thy-action-lite');
|
|
141
150
|
}
|
|
@@ -145,7 +154,7 @@ class ThyAction {
|
|
|
145
154
|
this.feedbackTimer?.unsubscribe();
|
|
146
155
|
}
|
|
147
156
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ThyAction, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
148
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: ThyAction, isStandalone: true, selector: "thy-action, [thyAction]", inputs: { thyType: { classPropertyName: "thyType", publicName: "thyType", isSignal: true, isRequired: false, transformFunction: null }, thyIcon: { classPropertyName: "thyIcon", publicName: "thyIcon", isSignal: true, isRequired: false, transformFunction: null }, thyActionIcon: { classPropertyName: "thyActionIcon", publicName: "thyActionIcon", isSignal: true, isRequired: false, transformFunction: null }, thyActive: { classPropertyName: "thyActive", publicName: "thyActive", isSignal: true, isRequired: false, transformFunction: null }, thyActionActive: { classPropertyName: "thyActionActive", publicName: "thyActionActive", isSignal: true, isRequired: false, transformFunction: null }, thyAppearance: { classPropertyName: "thyAppearance", publicName: "thyAppearance", isSignal: true, isRequired: false, transformFunction: null }, thyHoverIcon: { classPropertyName: "thyHoverIcon", publicName: "thyHoverIcon", isSignal: true, isRequired: false, transformFunction: null }, thyDisabled: { classPropertyName: "thyDisabled", publicName: "thyDisabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.active": "active()", "class.thy-action-hover-icon": "thyHoverIcon()", "class.thy-action-has-feedback": "!!feedback()", "class.disabled": "thyDisabled()" }, classAttribute: "thy-action" }, ngImport: i0, template: "@if (icon() && !feedback()) {\n <thy-icon [thyIconName]=\"icon()\"></thy-icon>\n}\n@if (feedbackOptions()?.icon) {\n <thy-icon [class]=\"feedbackOptions()?.class\" [thyIconName]=\"$safeNavigationMigration(feedbackOptions()?.icon)\"></thy-icon>\n}\n@if (thyHoverIcon()) {\n <thy-icon class=\"hover-icon\" [thyIconName]=\"thyHoverIcon()\"></thy-icon>\n}\n<ng-content></ng-content>\n", dependencies: [{ kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }] }); }
|
|
157
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: ThyAction, isStandalone: true, selector: "thy-action, [thyAction]", inputs: { thyColor: { classPropertyName: "thyColor", publicName: "thyColor", isSignal: true, isRequired: false, transformFunction: null }, thyType: { classPropertyName: "thyType", publicName: "thyType", isSignal: true, isRequired: false, transformFunction: null }, thyIcon: { classPropertyName: "thyIcon", publicName: "thyIcon", isSignal: true, isRequired: false, transformFunction: null }, thyActionIcon: { classPropertyName: "thyActionIcon", publicName: "thyActionIcon", isSignal: true, isRequired: false, transformFunction: null }, thyActive: { classPropertyName: "thyActive", publicName: "thyActive", isSignal: true, isRequired: false, transformFunction: null }, thyActionActive: { classPropertyName: "thyActionActive", publicName: "thyActionActive", isSignal: true, isRequired: false, transformFunction: null }, thyAppearance: { classPropertyName: "thyAppearance", publicName: "thyAppearance", isSignal: true, isRequired: false, transformFunction: null }, thyHoverIcon: { classPropertyName: "thyHoverIcon", publicName: "thyHoverIcon", isSignal: true, isRequired: false, transformFunction: null }, thyDisabled: { classPropertyName: "thyDisabled", publicName: "thyDisabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.active": "active()", "class.thy-action-hover-icon": "thyHoverIcon()", "class.thy-action-has-feedback": "!!feedback()", "class.disabled": "thyDisabled()" }, classAttribute: "thy-action" }, ngImport: i0, template: "@if (icon() && !feedback()) {\n <thy-icon [thyIconName]=\"icon()\"></thy-icon>\n}\n@if (feedbackOptions()?.icon) {\n <thy-icon [class]=\"feedbackOptions()?.class\" [thyIconName]=\"$safeNavigationMigration(feedbackOptions()?.icon)\"></thy-icon>\n}\n@if (thyHoverIcon()) {\n <thy-icon class=\"hover-icon\" [thyIconName]=\"thyHoverIcon()\"></thy-icon>\n}\n<ng-content></ng-content>\n", dependencies: [{ kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }] }); }
|
|
149
158
|
}
|
|
150
159
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ThyAction, decorators: [{
|
|
151
160
|
type: Component,
|
|
@@ -156,7 +165,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
156
165
|
'[class.thy-action-has-feedback]': '!!feedback()',
|
|
157
166
|
'[class.disabled]': 'thyDisabled()'
|
|
158
167
|
}, imports: [ThyIcon], template: "@if (icon() && !feedback()) {\n <thy-icon [thyIconName]=\"icon()\"></thy-icon>\n}\n@if (feedbackOptions()?.icon) {\n <thy-icon [class]=\"feedbackOptions()?.class\" [thyIconName]=\"$safeNavigationMigration(feedbackOptions()?.icon)\"></thy-icon>\n}\n@if (thyHoverIcon()) {\n <thy-icon class=\"hover-icon\" [thyIconName]=\"thyHoverIcon()\"></thy-icon>\n}\n<ng-content></ng-content>\n" }]
|
|
159
|
-
}], ctorParameters: () => [], propDecorators: { thyType: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyType", required: false }] }], thyIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyIcon", required: false }] }], thyActionIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyActionIcon", required: false }] }], thyActive: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyActive", required: false }] }], thyActionActive: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyActionActive", required: false }] }], thyAppearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyAppearance", required: false }] }], thyHoverIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyHoverIcon", required: false }] }], thyDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyDisabled", required: false }] }] } });
|
|
168
|
+
}], ctorParameters: () => [], propDecorators: { thyColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyColor", required: false }] }], thyType: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyType", required: false }] }], thyIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyIcon", required: false }] }], thyActionIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyActionIcon", required: false }] }], thyActive: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyActive", required: false }] }], thyActionActive: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyActionActive", required: false }] }], thyAppearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyAppearance", required: false }] }], thyHoverIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyHoverIcon", required: false }] }], thyDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyDisabled", required: false }] }] } });
|
|
160
169
|
|
|
161
170
|
/**
|
|
162
171
|
* Actions 组件
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-action.mjs","sources":["../../../src/action/action.component.ts","../../../src/action/action.component.html","../../../src/action/actions.component.ts","../../../src/action/action.module.ts","../../../src/action/ngx-tethys-action.ts"],"sourcesContent":["import {\n AfterViewInit,\n Component,\n DestroyRef,\n ElementRef,\n OnDestroy,\n OnInit,\n Renderer2,\n Signal,\n WritableSignal,\n computed,\n effect,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\nimport { Subscription, timer } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport type ThyActionType = 'primary' | 'success' | 'danger' | 'warning';\n\nexport type ThyActionAppearance = 'fill' | 'lite';\n\nexport type ThyActionFeedback = 'success' | 'error';\n\nexport interface ThyActionFeedbackOptions {\n icon?: string;\n class?: string;\n duration?: number;\n}\n\nconst defaultFeedbackOptions: Record<ThyActionFeedback, ThyActionFeedbackOptions> = {\n success: {\n icon: 'check-circle-fill',\n class: 'text-success',\n duration: 3000\n },\n error: {\n icon: 'close-circle-fill',\n class: 'text-danger',\n duration: 3000\n }\n};\n/**\n * 立即操作组件\n * @name thy-action,[thyAction]\n */\n@Component({\n selector: 'thy-action, [thyAction]',\n templateUrl: './action.component.html',\n host: {\n class: 'thy-action',\n '[class.active]': 'active()',\n '[class.thy-action-hover-icon]': 'thyHoverIcon()',\n '[class.thy-action-has-feedback]': '!!feedback()',\n '[class.disabled]': 'thyDisabled()'\n },\n imports: [ThyIcon]\n})\nexport class ThyAction implements OnInit, AfterViewInit, OnDestroy {\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private renderer = inject(Renderer2);\n private destroyRef = inject(DestroyRef);\n\n public readonly icon: Signal<string> = computed(() => this.thyActionIcon() || this.thyIcon());\n\n feedback: WritableSignal<ThyActionFeedback | null> = signal(null);\n\n feedbackOptions: WritableSignal<ThyActionFeedbackOptions | null> = signal(null);\n\n readonly active: Signal<boolean> = computed(() => this.thyActionActive() || this.thyActive());\n\n private hostRenderer = useHostRenderer();\n\n private feedbackTimer: Subscription | null = null;\n\n /**\n * 操作图标的类型\n * @type primary | success | danger | warning\n */\n readonly thyType = input<ThyActionType, ThyActionType>('primary', {\n transform: (value: ThyActionType) => value || 'primary'\n });\n\n /**\n * 操作图标,支持传参同时也支持在投影中写 thy-icon 组件\n */\n readonly thyIcon = input<string>('');\n\n /**\n * 操作图标,当 thyIcon 和其他指令参数名有冲突时使用 thyActionIcon\n */\n readonly thyActionIcon = input<string>('');\n\n /**\n * 操作的图标 Active 状态,设置为 true 时会在 Item 上添加 active class\n */\n readonly thyActive = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 操作的图标 Active 状态,当 thyActive 和其他指令参数名有冲突时使用 thyActionActive\n */\n readonly thyActionActive = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 操作图标的外观,fill(背景色填充) | lite(简单文本颜色变化)\n * @type fill | lite\n * @default fill\n */\n readonly thyAppearance = input<ThyActionAppearance>('fill');\n\n /**\n * Hover 展示的图标\n */\n readonly thyHoverIcon = input<string>();\n\n /**\n * 是否处于禁用状态\n */\n readonly thyDisabled = input(false, { transform: coerceBooleanProperty });\n\n ngOnInit(): void {\n this.updateClasses();\n }\n\n ngAfterViewInit() {\n this.wrapSpanForText(this.elementRef.nativeElement.childNodes);\n }\n\n constructor() {\n effect(() => {\n this.updateClasses();\n });\n }\n\n setMarginRight(marginRight: string) {\n this.elementRef.nativeElement.style.marginRight = marginRight;\n }\n\n /**\n * 触发成功反馈操作\n */\n success(options?: ThyActionFeedbackOptions) {\n this.setFeedback('success', options);\n }\n\n /**\n * 触发失败反馈操作\n */\n error(options?: ThyActionFeedbackOptions) {\n this.setFeedback('error', options);\n }\n\n private setFeedback(feedback: ThyActionFeedback, options: ThyActionFeedbackOptions | undefined) {\n if (this.thyDisabled()) {\n return;\n }\n options = Object.assign({}, defaultFeedbackOptions[feedback], options);\n this.feedback.set(feedback);\n this.feedbackOptions.set(options);\n\n if (options.duration) {\n if (this.feedbackTimer) {\n this.feedbackTimer.unsubscribe();\n }\n this.feedbackTimer = timer(options.duration)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.feedback.set(null);\n this.feedbackOptions.set(null);\n });\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-action-wrap-span');\n this.renderer.insertBefore(parent, span, node);\n this.renderer.appendChild(span, node);\n }\n });\n }\n\n private updateClasses() {\n const classNames: string[] = [];\n classNames.push(`action-${this.thyType()}`);\n if (this.thyAppearance() === 'lite') {\n classNames.push('thy-action-lite');\n }\n this.hostRenderer.updateClass(classNames);\n }\n\n ngOnDestroy(): void {\n this.feedbackTimer?.unsubscribe();\n }\n}\n","@if (icon() && !feedback()) {\n <thy-icon [thyIconName]=\"icon()\"></thy-icon>\n}\n@if (feedbackOptions()?.icon) {\n <thy-icon [class]=\"feedbackOptions()?.class\" [thyIconName]=\"$safeNavigationMigration(feedbackOptions()?.icon)\"></thy-icon>\n}\n@if (thyHoverIcon()) {\n <thy-icon class=\"hover-icon\" [thyIconName]=\"thyHoverIcon()\"></thy-icon>\n}\n<ng-content></ng-content>\n","import { Component, OnInit, contentChildren, effect, input } from '@angular/core';\nimport { ThySpacingSize, getNumericSize } from 'ngx-tethys/core';\nimport { ThyAction } from './action.component';\n\n/**\n * Actions 组件\n * @name thy-actions\n */\n@Component({\n selector: 'thy-actions',\n template: ` <ng-content></ng-content> `,\n host: {\n class: 'thy-actions'\n }\n})\nexport class ThyActions implements OnInit {\n readonly actions = contentChildren<ThyAction>(ThyAction);\n\n /**\n * 大小,支持 `zero` | `xxs` | `xs` | `sm` | `md` | `lg` | `xlg` 和自定义数字大小\n * @type string | number\n */\n readonly thySize = input<ThySpacingSize>('md');\n\n constructor() {\n effect(() => {\n this.setActionsSize();\n });\n }\n\n ngOnInit(): void {}\n\n private setActionsSize() {\n const actions: ThyAction[] = Array.from(this.actions());\n actions.forEach((action: ThyAction, index) => {\n // can't set marginRight value for last item\n if (index !== actions.length - 1) {\n action.setMarginRight(`${getNumericSize(this.thySize(), 'md')}px`);\n }\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyAction } from './action.component';\nimport { ThyActions } from './actions.component';\n\n@NgModule({\n imports: [CommonModule, ThyIconModule, ThyAction, ThyActions],\n exports: [ThyAction, ThyActions]\n})\nexport class ThyActionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-action.mjs","sources":["../../../src/action/action.component.ts","../../../src/action/action.component.html","../../../src/action/actions.component.ts","../../../src/action/action.module.ts","../../../src/action/ngx-tethys-action.ts"],"sourcesContent":["import {\n AfterViewInit,\n Component,\n DestroyRef,\n ElementRef,\n OnDestroy,\n OnInit,\n Renderer2,\n Signal,\n WritableSignal,\n computed,\n effect,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\nimport { Subscription, timer } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport type ThyActionColor = 'primary' | 'success' | 'danger' | 'warning';\n\n/** @deprecated use ThyActionColor, will be removed in v23 */\nexport type ThyActionType = ThyActionColor;\n\nexport type ThyActionAppearance = 'fill' | 'lite';\n\nexport type ThyActionFeedback = 'success' | 'error';\n\nexport interface ThyActionFeedbackOptions {\n icon?: string;\n class?: string;\n duration?: number;\n}\n\nconst defaultFeedbackOptions: Record<ThyActionFeedback, ThyActionFeedbackOptions> = {\n success: {\n icon: 'check-circle-fill',\n class: 'text-success',\n duration: 3000\n },\n error: {\n icon: 'close-circle-fill',\n class: 'text-danger',\n duration: 3000\n }\n};\n/**\n * 立即操作组件\n * @name thy-action,[thyAction]\n */\n@Component({\n selector: 'thy-action, [thyAction]',\n templateUrl: './action.component.html',\n host: {\n class: 'thy-action',\n '[class.active]': 'active()',\n '[class.thy-action-hover-icon]': 'thyHoverIcon()',\n '[class.thy-action-has-feedback]': '!!feedback()',\n '[class.disabled]': 'thyDisabled()'\n },\n imports: [ThyIcon]\n})\nexport class ThyAction implements OnInit, AfterViewInit, OnDestroy {\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private renderer = inject(Renderer2);\n private destroyRef = inject(DestroyRef);\n\n public readonly icon: Signal<string> = computed(() => this.thyActionIcon() || this.thyIcon());\n\n feedback: WritableSignal<ThyActionFeedback | null> = signal(null);\n\n feedbackOptions: WritableSignal<ThyActionFeedbackOptions | null> = signal(null);\n\n readonly active: Signal<boolean> = computed(() => this.thyActionActive() || this.thyActive());\n\n private hostRenderer = useHostRenderer();\n\n private feedbackTimer: Subscription | null = null;\n\n /**\n * 操作图标的颜色\n * @type primary | success | danger | warning\n */\n readonly thyColor = input<ThyActionColor>();\n\n /**\n * 操作图标的类型(已废弃,将在 v23 彻底删除),请使用 thyColor\n * @deprecated please use thyColor, will be removed in v23\n * @type primary | success | danger | warning\n */\n readonly thyType = input<ThyActionType, ThyActionType>('primary', {\n transform: (value: ThyActionType) => value || 'primary'\n });\n\n readonly color = computed(() => this.thyColor() || this.thyType() || 'primary');\n\n /**\n * 操作图标,支持传参同时也支持在投影中写 thy-icon 组件\n */\n readonly thyIcon = input<string>('');\n\n /**\n * 操作图标,当 thyIcon 和其他指令参数名有冲突时使用 thyActionIcon\n */\n readonly thyActionIcon = input<string>('');\n\n /**\n * 操作的图标 Active 状态,设置为 true 时会在 Item 上添加 active class\n */\n readonly thyActive = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 操作的图标 Active 状态,当 thyActive 和其他指令参数名有冲突时使用 thyActionActive\n */\n readonly thyActionActive = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 操作图标的外观,fill(背景色填充) | lite(简单文本颜色变化)\n * @type fill | lite\n * @default fill\n */\n readonly thyAppearance = input<ThyActionAppearance>('fill');\n\n /**\n * Hover 展示的图标\n */\n readonly thyHoverIcon = input<string>();\n\n /**\n * 是否处于禁用状态\n */\n readonly thyDisabled = input(false, { transform: coerceBooleanProperty });\n\n ngOnInit(): void {\n this.updateClasses();\n }\n\n ngAfterViewInit() {\n this.wrapSpanForText(this.elementRef.nativeElement.childNodes);\n }\n\n constructor() {\n effect(() => {\n this.updateClasses();\n });\n }\n\n setMarginRight(marginRight: string) {\n this.elementRef.nativeElement.style.marginRight = marginRight;\n }\n\n /**\n * 触发成功反馈操作\n */\n success(options?: ThyActionFeedbackOptions) {\n this.setFeedback('success', options);\n }\n\n /**\n * 触发失败反馈操作\n */\n error(options?: ThyActionFeedbackOptions) {\n this.setFeedback('error', options);\n }\n\n private setFeedback(feedback: ThyActionFeedback, options: ThyActionFeedbackOptions | undefined) {\n if (this.thyDisabled()) {\n return;\n }\n options = Object.assign({}, defaultFeedbackOptions[feedback], options);\n this.feedback.set(feedback);\n this.feedbackOptions.set(options);\n\n if (options.duration) {\n if (this.feedbackTimer) {\n this.feedbackTimer.unsubscribe();\n }\n this.feedbackTimer = timer(options.duration)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.feedback.set(null);\n this.feedbackOptions.set(null);\n });\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-action-wrap-span');\n this.renderer.insertBefore(parent, span, node);\n this.renderer.appendChild(span, node);\n }\n });\n }\n\n private updateClasses() {\n const classNames: string[] = [];\n classNames.push(`action-${this.color()}`);\n if (this.thyAppearance() === 'lite') {\n classNames.push('thy-action-lite');\n }\n this.hostRenderer.updateClass(classNames);\n }\n\n ngOnDestroy(): void {\n this.feedbackTimer?.unsubscribe();\n }\n}\n","@if (icon() && !feedback()) {\n <thy-icon [thyIconName]=\"icon()\"></thy-icon>\n}\n@if (feedbackOptions()?.icon) {\n <thy-icon [class]=\"feedbackOptions()?.class\" [thyIconName]=\"$safeNavigationMigration(feedbackOptions()?.icon)\"></thy-icon>\n}\n@if (thyHoverIcon()) {\n <thy-icon class=\"hover-icon\" [thyIconName]=\"thyHoverIcon()\"></thy-icon>\n}\n<ng-content></ng-content>\n","import { Component, OnInit, contentChildren, effect, input } from '@angular/core';\nimport { ThySpacingSize, getNumericSize } from 'ngx-tethys/core';\nimport { ThyAction } from './action.component';\n\n/**\n * Actions 组件\n * @name thy-actions\n */\n@Component({\n selector: 'thy-actions',\n template: ` <ng-content></ng-content> `,\n host: {\n class: 'thy-actions'\n }\n})\nexport class ThyActions implements OnInit {\n readonly actions = contentChildren<ThyAction>(ThyAction);\n\n /**\n * 大小,支持 `zero` | `xxs` | `xs` | `sm` | `md` | `lg` | `xlg` 和自定义数字大小\n * @type string | number\n */\n readonly thySize = input<ThySpacingSize>('md');\n\n constructor() {\n effect(() => {\n this.setActionsSize();\n });\n }\n\n ngOnInit(): void {}\n\n private setActionsSize() {\n const actions: ThyAction[] = Array.from(this.actions());\n actions.forEach((action: ThyAction, index) => {\n // can't set marginRight value for last item\n if (index !== actions.length - 1) {\n action.setMarginRight(`${getNumericSize(this.thySize(), 'md')}px`);\n }\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyAction } from './action.component';\nimport { ThyActions } from './actions.component';\n\n@NgModule({\n imports: [CommonModule, ThyIconModule, ThyAction, ThyActions],\n exports: [ThyAction, ThyActions]\n})\nexport class ThyActionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -32,19 +32,39 @@ class ThyAlert {
|
|
|
32
32
|
}, /* @ts-ignore */
|
|
33
33
|
...(ngDevMode ? [{ debugName: "messageIsTemplate" }] : /* istanbul ignore next */ []));
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
35
|
+
* 指定警告提示的颜色
|
|
36
|
+
* @type success | warning | danger | info | primary | primary-weak | success-weak | warning-weak | danger-weak
|
|
37
|
+
* @default info
|
|
38
|
+
*/
|
|
39
|
+
this.thyColor = input(/* @ts-ignore */
|
|
40
|
+
...(ngDevMode ? [undefined, { debugName: "thyColor" }] : /* istanbul ignore next */ []));
|
|
41
|
+
/**
|
|
42
|
+
* 指定警告提示的外观
|
|
43
|
+
* @type fill | bordered | naked
|
|
44
|
+
* @default fill
|
|
45
|
+
*/
|
|
46
|
+
this.thyAppearance = input(/* @ts-ignore */
|
|
47
|
+
...(ngDevMode ? [undefined, { debugName: "thyAppearance" }] : /* istanbul ignore next */ []));
|
|
48
|
+
/**
|
|
49
|
+
* 指定警告提示的类型(已废弃),请使用 thyColor
|
|
50
|
+
* @deprecated please use thyColor
|
|
36
51
|
* @type success | warning | danger | info | primary | primary-weak | success-weak | warning-weak | danger-weak
|
|
37
52
|
* @default info
|
|
38
53
|
*/
|
|
39
54
|
this.thyType = input('info', /* @ts-ignore */
|
|
40
55
|
...(ngDevMode ? [{ debugName: "thyType" }] : /* istanbul ignore next */ []));
|
|
41
56
|
/**
|
|
42
|
-
*
|
|
57
|
+
* 指定警告提示的主题(已废弃,将在 v23 彻底移除),请使用 thyAppearance
|
|
58
|
+
* @deprecated please use thyAppearance, will be removed in v23
|
|
43
59
|
* @type fill | bordered | naked
|
|
44
60
|
* @default fill
|
|
45
61
|
*/
|
|
46
62
|
this.thyTheme = input('fill', /* @ts-ignore */
|
|
47
63
|
...(ngDevMode ? [{ debugName: "thyTheme" }] : /* istanbul ignore next */ []));
|
|
64
|
+
this.color = computed(() => this.thyColor() || this.thyType() || 'info', /* @ts-ignore */
|
|
65
|
+
...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
|
|
66
|
+
this.appearance = computed(() => this.thyAppearance() || this.thyTheme() || 'fill', /* @ts-ignore */
|
|
67
|
+
...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
|
|
48
68
|
/**
|
|
49
69
|
* 显示警告提示的内容
|
|
50
70
|
*/
|
|
@@ -57,11 +77,12 @@ class ThyAlert {
|
|
|
57
77
|
...(ngDevMode ? [undefined, { debugName: "thyIcon" }] : /* istanbul ignore next */ []));
|
|
58
78
|
this.icon = computed(() => {
|
|
59
79
|
const icon = this.thyIcon();
|
|
80
|
+
const color = this.color();
|
|
60
81
|
if (icon) {
|
|
61
|
-
return isString(icon) ? icon : typeIconsMap[
|
|
82
|
+
return isString(icon) ? icon : typeIconsMap[color];
|
|
62
83
|
}
|
|
63
84
|
else {
|
|
64
|
-
return icon === 'false' || icon === false ? '' : typeIconsMap[
|
|
85
|
+
return icon === 'false' || icon === false ? '' : typeIconsMap[color];
|
|
65
86
|
}
|
|
66
87
|
}, /* @ts-ignore */
|
|
67
88
|
...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
|
|
@@ -85,24 +106,24 @@ class ThyAlert {
|
|
|
85
106
|
}
|
|
86
107
|
updateClass() {
|
|
87
108
|
// 兼容 'primary-weak', 'success-weak', 'warning-weak', 'danger-weak' types
|
|
88
|
-
let
|
|
89
|
-
let
|
|
90
|
-
if (weakTypes.includes(
|
|
91
|
-
|
|
92
|
-
|
|
109
|
+
let appearance = this.appearance();
|
|
110
|
+
let color = this.color();
|
|
111
|
+
if (weakTypes.includes(color)) {
|
|
112
|
+
appearance = 'bordered';
|
|
113
|
+
color = color.split('-')[0];
|
|
93
114
|
}
|
|
94
|
-
this.hostRenderer.updateClass([`thy-alert-${
|
|
115
|
+
this.hostRenderer.updateClass([`thy-alert-${appearance}`, `thy-alert-${appearance}-${color}`]);
|
|
95
116
|
}
|
|
96
117
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ThyAlert, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
97
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: ThyAlert, isStandalone: true, selector: "thy-alert", inputs: { thyType: { classPropertyName: "thyType", publicName: "thyType", isSignal: true, isRequired: false, transformFunction: null }, thyTheme: { classPropertyName: "thyTheme", publicName: "thyTheme", isSignal: true, isRequired: false, transformFunction: null }, thyMessage: { classPropertyName: "thyMessage", publicName: "thyMessage", isSignal: true, isRequired: false, transformFunction: null }, thyIcon: { classPropertyName: "thyIcon", publicName: "thyIcon", isSignal: true, isRequired: false, transformFunction: null }, thyCloseable: { classPropertyName: "thyCloseable", publicName: "thyCloseable", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.thy-alert-hidden": "hidden" }, classAttribute: "thy-alert" }, queries: [{ propertyName: "alertOperation", first: true, predicate: ["operation"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"thy-alert-content\">\n @if (icon()) {\n <thy-icon class=\"thy-alert-icon\" [thyIconName]=\"icon()\"></thy-icon>\n }\n @if (
|
|
118
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: ThyAlert, isStandalone: true, selector: "thy-alert", inputs: { thyColor: { classPropertyName: "thyColor", publicName: "thyColor", isSignal: true, isRequired: false, transformFunction: null }, thyAppearance: { classPropertyName: "thyAppearance", publicName: "thyAppearance", isSignal: true, isRequired: false, transformFunction: null }, thyType: { classPropertyName: "thyType", publicName: "thyType", isSignal: true, isRequired: false, transformFunction: null }, thyTheme: { classPropertyName: "thyTheme", publicName: "thyTheme", isSignal: true, isRequired: false, transformFunction: null }, thyMessage: { classPropertyName: "thyMessage", publicName: "thyMessage", isSignal: true, isRequired: false, transformFunction: null }, thyIcon: { classPropertyName: "thyIcon", publicName: "thyIcon", isSignal: true, isRequired: false, transformFunction: null }, thyCloseable: { classPropertyName: "thyCloseable", publicName: "thyCloseable", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.thy-alert-hidden": "hidden" }, classAttribute: "thy-alert" }, queries: [{ propertyName: "alertOperation", first: true, predicate: ["operation"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"thy-alert-content\">\n @if (icon()) {\n <thy-icon class=\"thy-alert-icon\" [thyIconName]=\"icon()\"></thy-icon>\n }\n @if (appearance() === 'naked') {\n <span class=\"thy-alert-tips\">Tips\uFF1A </span>\n }\n @if (messageIsTemplate()) {\n <ng-template *ngTemplateOutlet=\"thyMessage()\"></ng-template>\n } @else if (thyMessage()) {\n <span>{{ thyMessage() }}</span>\n }\n @if (alertOperation()) {\n <div class=\"thy-alert-operation\">\n <ng-container [ngTemplateOutlet]=\"alertOperation()\"></ng-container>\n </div>\n }\n</div>\n@if (thyCloseable()) {\n <a href=\"javascript:;\" class=\"thy-alert-close\" (click)=\"closeAlert()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n}\n", dependencies: [{ kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
98
119
|
}
|
|
99
120
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ThyAlert, decorators: [{
|
|
100
121
|
type: Component,
|
|
101
122
|
args: [{ selector: 'thy-alert', host: {
|
|
102
123
|
class: 'thy-alert',
|
|
103
124
|
'[class.thy-alert-hidden]': 'hidden'
|
|
104
|
-
}, imports: [ThyIcon, NgTemplateOutlet], template: "<div class=\"thy-alert-content\">\n @if (icon()) {\n <thy-icon class=\"thy-alert-icon\" [thyIconName]=\"icon()\"></thy-icon>\n }\n @if (
|
|
105
|
-
}], ctorParameters: () => [], propDecorators: { thyType: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyType", required: false }] }], thyTheme: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyTheme", required: false }] }], thyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyMessage", required: false }] }], thyIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyIcon", required: false }] }], thyCloseable: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyCloseable", required: false }] }], alertOperation: [{ type: i0.ContentChild, args: ['operation', { isSignal: true }] }] } });
|
|
125
|
+
}, imports: [ThyIcon, NgTemplateOutlet], template: "<div class=\"thy-alert-content\">\n @if (icon()) {\n <thy-icon class=\"thy-alert-icon\" [thyIconName]=\"icon()\"></thy-icon>\n }\n @if (appearance() === 'naked') {\n <span class=\"thy-alert-tips\">Tips\uFF1A </span>\n }\n @if (messageIsTemplate()) {\n <ng-template *ngTemplateOutlet=\"thyMessage()\"></ng-template>\n } @else if (thyMessage()) {\n <span>{{ thyMessage() }}</span>\n }\n @if (alertOperation()) {\n <div class=\"thy-alert-operation\">\n <ng-container [ngTemplateOutlet]=\"alertOperation()\"></ng-container>\n </div>\n }\n</div>\n@if (thyCloseable()) {\n <a href=\"javascript:;\" class=\"thy-alert-close\" (click)=\"closeAlert()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n}\n" }]
|
|
126
|
+
}], ctorParameters: () => [], propDecorators: { thyColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyColor", required: false }] }], thyAppearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyAppearance", required: false }] }], thyType: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyType", required: false }] }], thyTheme: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyTheme", required: false }] }], thyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyMessage", required: false }] }], thyIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyIcon", required: false }] }], thyCloseable: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyCloseable", required: false }] }], alertOperation: [{ type: i0.ContentChild, args: ['operation', { isSignal: true }] }] } });
|
|
106
127
|
|
|
107
128
|
/**
|
|
108
129
|
* 操作按钮的样式指令,可为警告内容添加自定义操作按钮样式
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-alert.mjs","sources":["../../../src/alert/alert.component.ts","../../../src/alert/alert.component.html","../../../src/alert/alert.directive.ts","../../../src/alert/alert.module.ts","../../../src/alert/ngx-tethys-alert.ts"],"sourcesContent":["import { Component, TemplateRef, input, contentChild, effect, computed } from '@angular/core';\nimport { coerceBooleanProperty, isString } from 'ngx-tethys/util';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgTemplateOutlet } from '@angular/common';\n\nconst weakTypes = ['primary-weak', 'success-weak', 'warning-weak', 'danger-weak'];\n\ntype ThyAlertType =\n | 'success'\n | 'warning'\n | 'danger'\n | 'info'\n | 'primary'\n | 'primary-weak'\n | 'success-weak'\n | 'warning-weak'\n | 'danger-weak';\n\nexport type ThyAlertTheme = 'fill' | 'bordered' | 'naked';\n\nconst typeIconsMap: Record<string, string> = {\n success: 'check-circle-fill',\n warning: 'waring-fill',\n danger: 'close-circle-fill',\n info: 'minus-circle-fill',\n primary: 'info-circle-fill',\n 'primary-weak': 'info-circle-fill',\n 'success-weak': 'check-circle-fill',\n 'warning-weak': 'waring-fill',\n 'danger-weak': 'close-circle-fill'\n};\n\n/**\n * 警告提示,展现需要关注的信息\n * @name thy-alert\n * @order 10\n */\n@Component({\n selector: 'thy-alert',\n templateUrl: './alert.component.html',\n host: {\n class: 'thy-alert',\n '[class.thy-alert-hidden]': 'hidden'\n },\n imports: [ThyIcon, NgTemplateOutlet]\n})\nexport class ThyAlert {\n protected hidden = false;\n\n private hostRenderer = useHostRenderer();\n\n messageIsTemplate = computed(() => {\n const value = this.thyMessage();\n return value instanceof TemplateRef;\n });\n\n /**\n * 指定警告提示的类型\n * @type success | warning | danger | info | primary | primary-weak | success-weak | warning-weak | danger-weak\n * @default info\n */\n thyType = input<ThyAlertType>('info');\n\n /**\n * 指定警告提示的主题\n * @type fill | bordered | naked\n * @default fill\n */\n thyTheme = input<ThyAlertTheme>('fill');\n\n /**\n * 显示警告提示的内容\n */\n thyMessage = input<string | TemplateRef<HTMLElement>>();\n\n /**\n * 显示自定义图标,可传 true/false 控制是否显示图标,或者传字符串去指定图标名称\n */\n thyIcon = input<boolean | string>();\n\n icon = computed(() => {\n const icon = this.thyIcon();\n if (icon) {\n return isString(icon) ? icon : typeIconsMap[this.thyType()];\n } else {\n return icon === 'false' || icon === false ? '' : typeIconsMap[this.thyType()];\n }\n });\n\n /**\n * 是否显示关闭警告框按钮,默认不显示\n * @default false\n */\n thyCloseable = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 警告框自定义操作\n * @type TemplateRef\n */\n alertOperation = contentChild<TemplateRef<any>>('operation');\n\n constructor() {\n effect(() => {\n this.updateClass();\n });\n }\n\n closeAlert() {\n this.hidden = true;\n }\n\n private updateClass() {\n // 兼容 'primary-weak', 'success-weak', 'warning-weak', 'danger-weak' types\n let theme = this.thyTheme();\n let type = this.thyType();\n if (weakTypes.includes(type)) {\n theme = 'bordered';\n type = type.split('-')[0] as ThyAlertType;\n }\n this.hostRenderer.updateClass([`thy-alert-${theme}`, `thy-alert-${theme}-${type}`]);\n }\n}\n","<div class=\"thy-alert-content\">\n @if (icon()) {\n <thy-icon class=\"thy-alert-icon\" [thyIconName]=\"icon()\"></thy-icon>\n }\n @if (thyTheme() === 'naked') {\n <span class=\"thy-alert-tips\">Tips: </span>\n }\n @if (messageIsTemplate()) {\n <ng-template *ngTemplateOutlet=\"thyMessage()\"></ng-template>\n } @else if (thyMessage()) {\n <span>{{ thyMessage() }}</span>\n }\n @if (alertOperation()) {\n <div class=\"thy-alert-operation\">\n <ng-container [ngTemplateOutlet]=\"alertOperation()\"></ng-container>\n </div>\n }\n</div>\n@if (thyCloseable()) {\n <a href=\"javascript:;\" class=\"thy-alert-close\" (click)=\"closeAlert()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n/**\n * 操作按钮的样式指令,可为警告内容添加自定义操作按钮样式\n * @name thyAlertActionItem\n * @order 20\n */\n@Directive({\n selector: '[thyAlertActionItem]'\n})\nexport class ThyAlertActionItemDirective {\n @HostBinding('class.thy-alert-action') class = true;\n\n constructor() {}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyAlert } from './alert.component';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyAlertActionItemDirective } from './alert.directive';\n\n@NgModule({\n imports: [CommonModule, ThyIconModule, ThyAlert, ThyAlertActionItemDirective],\n exports: [ThyAlert, ThyAlertActionItemDirective]\n})\nexport class ThyAlertModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-alert.mjs","sources":["../../../src/alert/alert.component.ts","../../../src/alert/alert.component.html","../../../src/alert/alert.directive.ts","../../../src/alert/alert.module.ts","../../../src/alert/ngx-tethys-alert.ts"],"sourcesContent":["import { Component, TemplateRef, input, contentChild, effect, computed } from '@angular/core';\nimport { coerceBooleanProperty, isString } from 'ngx-tethys/util';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgTemplateOutlet } from '@angular/common';\n\nconst weakTypes = ['primary-weak', 'success-weak', 'warning-weak', 'danger-weak'];\n\nexport type ThyAlertColor =\n | 'success'\n | 'warning'\n | 'danger'\n | 'info'\n | 'primary'\n | 'primary-weak'\n | 'success-weak'\n | 'warning-weak'\n | 'danger-weak';\n\nexport type ThyAlertAppearance = 'fill' | 'bordered' | 'naked';\n\n/** @deprecated use ThyAlertAppearance */\nexport type ThyAlertTheme = ThyAlertAppearance;\n\n/** @deprecated use ThyAlertColor */\nexport type ThyAlertType = ThyAlertColor;\n\nconst typeIconsMap: Record<string, string> = {\n success: 'check-circle-fill',\n warning: 'waring-fill',\n danger: 'close-circle-fill',\n info: 'minus-circle-fill',\n primary: 'info-circle-fill',\n 'primary-weak': 'info-circle-fill',\n 'success-weak': 'check-circle-fill',\n 'warning-weak': 'waring-fill',\n 'danger-weak': 'close-circle-fill'\n};\n\n/**\n * 警告提示,展现需要关注的信息\n * @name thy-alert\n * @order 10\n */\n@Component({\n selector: 'thy-alert',\n templateUrl: './alert.component.html',\n host: {\n class: 'thy-alert',\n '[class.thy-alert-hidden]': 'hidden'\n },\n imports: [ThyIcon, NgTemplateOutlet]\n})\nexport class ThyAlert {\n protected hidden = false;\n\n private hostRenderer = useHostRenderer();\n\n messageIsTemplate = computed(() => {\n const value = this.thyMessage();\n return value instanceof TemplateRef;\n });\n\n /**\n * 指定警告提示的颜色\n * @type success | warning | danger | info | primary | primary-weak | success-weak | warning-weak | danger-weak\n * @default info\n */\n readonly thyColor = input<ThyAlertColor>();\n\n /**\n * 指定警告提示的外观\n * @type fill | bordered | naked\n * @default fill\n */\n readonly thyAppearance = input<ThyAlertAppearance>();\n\n /**\n * 指定警告提示的类型(已废弃),请使用 thyColor\n * @deprecated please use thyColor\n * @type success | warning | danger | info | primary | primary-weak | success-weak | warning-weak | danger-weak\n * @default info\n */\n readonly thyType = input<ThyAlertType>('info');\n\n /**\n * 指定警告提示的主题(已废弃,将在 v23 彻底移除),请使用 thyAppearance\n * @deprecated please use thyAppearance, will be removed in v23\n * @type fill | bordered | naked\n * @default fill\n */\n readonly thyTheme = input<ThyAlertTheme>('fill');\n\n readonly color = computed(() => this.thyColor() || this.thyType() || 'info');\n\n readonly appearance = computed(() => this.thyAppearance() || this.thyTheme() || 'fill');\n\n /**\n * 显示警告提示的内容\n */\n thyMessage = input<string | TemplateRef<HTMLElement>>();\n\n /**\n * 显示自定义图标,可传 true/false 控制是否显示图标,或者传字符串去指定图标名称\n */\n thyIcon = input<boolean | string>();\n\n icon = computed(() => {\n const icon = this.thyIcon();\n const color = this.color();\n if (icon) {\n return isString(icon) ? icon : typeIconsMap[color];\n } else {\n return icon === 'false' || icon === false ? '' : typeIconsMap[color];\n }\n });\n\n /**\n * 是否显示关闭警告框按钮,默认不显示\n * @default false\n */\n thyCloseable = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 警告框自定义操作\n * @type TemplateRef\n */\n alertOperation = contentChild<TemplateRef<any>>('operation');\n\n constructor() {\n effect(() => {\n this.updateClass();\n });\n }\n\n closeAlert() {\n this.hidden = true;\n }\n\n private updateClass() {\n // 兼容 'primary-weak', 'success-weak', 'warning-weak', 'danger-weak' types\n let appearance = this.appearance();\n let color = this.color();\n if (weakTypes.includes(color)) {\n appearance = 'bordered';\n color = color.split('-')[0] as ThyAlertColor;\n }\n this.hostRenderer.updateClass([`thy-alert-${appearance}`, `thy-alert-${appearance}-${color}`]);\n }\n}\n","<div class=\"thy-alert-content\">\n @if (icon()) {\n <thy-icon class=\"thy-alert-icon\" [thyIconName]=\"icon()\"></thy-icon>\n }\n @if (appearance() === 'naked') {\n <span class=\"thy-alert-tips\">Tips: </span>\n }\n @if (messageIsTemplate()) {\n <ng-template *ngTemplateOutlet=\"thyMessage()\"></ng-template>\n } @else if (thyMessage()) {\n <span>{{ thyMessage() }}</span>\n }\n @if (alertOperation()) {\n <div class=\"thy-alert-operation\">\n <ng-container [ngTemplateOutlet]=\"alertOperation()\"></ng-container>\n </div>\n }\n</div>\n@if (thyCloseable()) {\n <a href=\"javascript:;\" class=\"thy-alert-close\" (click)=\"closeAlert()\">\n <thy-icon thyIconName=\"close\"></thy-icon>\n </a>\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n/**\n * 操作按钮的样式指令,可为警告内容添加自定义操作按钮样式\n * @name thyAlertActionItem\n * @order 20\n */\n@Directive({\n selector: '[thyAlertActionItem]'\n})\nexport class ThyAlertActionItemDirective {\n @HostBinding('class.thy-alert-action') class = true;\n\n constructor() {}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyAlert } from './alert.component';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyAlertActionItemDirective } from './alert.directive';\n\n@NgModule({\n imports: [CommonModule, ThyIconModule, ThyAlert, ThyAlertActionItemDirective],\n exports: [ThyAlert, ThyAlertActionItemDirective]\n})\nexport class ThyAlertModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|