ngx-tethys 18.2.0-next.0 → 18.2.0-next.2

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.
Files changed (173) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/autocomplete/autocomplete.component.d.ts +4 -2
  3. package/calendar/calendar-header.component.d.ts +2 -0
  4. package/cascader/cascader.component.d.ts +3 -1
  5. package/color-picker/color-picker-panel.component.d.ts +3 -1
  6. package/copy/copy.directive.d.ts +1 -0
  7. package/core/overlay/abstract-overlay-ref.d.ts +4 -0
  8. package/core/overlay/abstract-overlay.service.d.ts +1 -1
  9. package/core/theme/store.d.ts +2 -1
  10. package/core/theme/theme.d.ts +2 -0
  11. package/date-picker/abstract-picker.component.d.ts +3 -1
  12. package/date-picker/date-helper.service.d.ts +3 -0
  13. package/date-picker/date-picker.config.d.ts +7 -1
  14. package/date-picker/lib/calendar/calendar-footer.component.d.ts +3 -1
  15. package/date-picker/lib/calendar/calendar-header.component.d.ts +3 -1
  16. package/date-picker/lib/calendar/calendar-table.component.d.ts +3 -1
  17. package/date-picker/lib/date-carousel/date-carousel.component.d.ts +4 -1
  18. package/date-picker/lib/popups/date-popup.component.d.ts +3 -1
  19. package/date-picker/lib/popups/inner-popup.component.d.ts +3 -1
  20. package/date-range/date-range.component.d.ts +2 -0
  21. package/date-range/optional-dates/optional-dates.component.d.ts +1 -0
  22. package/dialog/confirm/confirm.component.d.ts +1 -0
  23. package/dialog/confirm.config.d.ts +14 -7
  24. package/dialog/dialog-ref.d.ts +10 -2
  25. package/dialog/dialog.service.d.ts +6 -0
  26. package/empty/empty.component.d.ts +14 -9
  27. package/empty/empty.config.d.ts +3 -0
  28. package/esm2022/autocomplete/autocomplete.component.mjs +9 -5
  29. package/esm2022/calendar/calendar-header.component.mjs +9 -5
  30. package/esm2022/cascader/cascader.component.mjs +9 -6
  31. package/esm2022/checkbox/checkbox.component.mjs +1 -1
  32. package/esm2022/color-picker/color-picker-panel.component.mjs +5 -3
  33. package/esm2022/copy/copy.directive.mjs +7 -5
  34. package/esm2022/core/overlay/abstract-overlay-ref.mjs +2 -2
  35. package/esm2022/core/overlay/abstract-overlay.service.mjs +2 -2
  36. package/esm2022/core/theme/store.mjs +7 -7
  37. package/esm2022/core/theme/theme.mjs +9 -2
  38. package/esm2022/date-picker/abstract-picker.component.mjs +4 -2
  39. package/esm2022/date-picker/base-picker.component.mjs +2 -2
  40. package/esm2022/date-picker/date-helper.service.mjs +4 -2
  41. package/esm2022/date-picker/date-picker.component.mjs +1 -1
  42. package/esm2022/date-picker/date-picker.config.mjs +55 -2
  43. package/esm2022/date-picker/date-picker.directive.mjs +1 -1
  44. package/esm2022/date-picker/date-picker.service.mjs +3 -3
  45. package/esm2022/date-picker/lib/calendar/calendar-footer.component.mjs +5 -3
  46. package/esm2022/date-picker/lib/calendar/calendar-header.component.mjs +3 -1
  47. package/esm2022/date-picker/lib/calendar/calendar-table.component.mjs +3 -1
  48. package/esm2022/date-picker/lib/date/date-header.component.mjs +6 -5
  49. package/esm2022/date-picker/lib/date/date-table.component.mjs +4 -4
  50. package/esm2022/date-picker/lib/date-carousel/date-carousel.component.mjs +9 -4
  51. package/esm2022/date-picker/lib/decade/decade-header.component.mjs +3 -3
  52. package/esm2022/date-picker/lib/month/month-header.component.mjs +4 -4
  53. package/esm2022/date-picker/lib/month/month-table.component.mjs +3 -2
  54. package/esm2022/date-picker/lib/popups/date-popup.component.mjs +5 -3
  55. package/esm2022/date-picker/lib/popups/inner-popup.component.mjs +5 -3
  56. package/esm2022/date-picker/lib/year/year-header.component.mjs +3 -3
  57. package/esm2022/date-picker/month-picker.component.mjs +1 -1
  58. package/esm2022/date-picker/quarter-picker.component.mjs +1 -1
  59. package/esm2022/date-picker/range-picker.component.mjs +1 -1
  60. package/esm2022/date-picker/range-picker.directive.mjs +1 -1
  61. package/esm2022/date-picker/week-picker.component.mjs +1 -1
  62. package/esm2022/date-picker/year-picker.component.mjs +1 -1
  63. package/esm2022/date-range/date-range.component.mjs +7 -4
  64. package/esm2022/date-range/optional-dates/optional-dates.component.mjs +4 -2
  65. package/esm2022/dialog/confirm/confirm.component.mjs +14 -3
  66. package/esm2022/dialog/confirm.config.mjs +17 -2
  67. package/esm2022/dialog/dialog-ref.mjs +9 -6
  68. package/esm2022/dialog/dialog.service.mjs +27 -3
  69. package/esm2022/empty/empty.component.mjs +7 -2
  70. package/esm2022/empty/empty.config.mjs +4 -1
  71. package/esm2022/form/form-validator-loader.mjs +17 -15
  72. package/esm2022/guider/guider-hint/guider-hint.component.mjs +5 -3
  73. package/esm2022/i18n/i18n.mjs +9 -0
  74. package/esm2022/i18n/i18n.service.mjs +45 -0
  75. package/esm2022/i18n/i18n.token.mjs +10 -0
  76. package/esm2022/i18n/index.mjs +10 -0
  77. package/esm2022/i18n/locale.mjs +14 -0
  78. package/esm2022/i18n/locales/de-de.mjs +130 -0
  79. package/esm2022/i18n/locales/en-us.mjs +151 -0
  80. package/esm2022/i18n/locales/ja-jp.mjs +130 -0
  81. package/esm2022/i18n/locales/zh-hans.mjs +130 -0
  82. package/esm2022/i18n/locales/zh-hant.mjs +130 -0
  83. package/esm2022/i18n/ngx-tethys-i18n.mjs +5 -0
  84. package/esm2022/nav/nav.component.mjs +5 -3
  85. package/esm2022/pagination/pagination.component.mjs +22 -5
  86. package/esm2022/pagination/pagination.module.mjs +26 -5
  87. package/esm2022/pagination/pagination.pipe.mjs +25 -1
  88. package/esm2022/property/property-item.component.mjs +3 -3
  89. package/esm2022/radio/button/radio-button.component.mjs +1 -1
  90. package/esm2022/radio/radio.component.mjs +1 -1
  91. package/esm2022/select/custom-select/custom-select.component.mjs +13 -6
  92. package/esm2022/strength/strength.component.mjs +21 -20
  93. package/esm2022/time-picker/time-picker-panel.component.mjs +5 -3
  94. package/esm2022/time-picker/time-picker.component.mjs +4 -2
  95. package/esm2022/tooltip/tooltip-ref.mjs +4 -1
  96. package/esm2022/transfer/transfer-list.component.mjs +5 -3
  97. package/esm2022/tree-select/tree-select.component.mjs +9 -6
  98. package/esm2022/version.mjs +2 -2
  99. package/fesm2022/ngx-tethys-autocomplete.mjs +8 -5
  100. package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
  101. package/fesm2022/ngx-tethys-calendar.mjs +8 -5
  102. package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
  103. package/fesm2022/ngx-tethys-cascader.mjs +8 -5
  104. package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
  105. package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
  106. package/fesm2022/ngx-tethys-color-picker.mjs +4 -2
  107. package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
  108. package/fesm2022/ngx-tethys-copy.mjs +6 -4
  109. package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
  110. package/fesm2022/ngx-tethys-core.mjs +14 -7
  111. package/fesm2022/ngx-tethys-core.mjs.map +1 -1
  112. package/fesm2022/ngx-tethys-date-picker.mjs +95 -30
  113. package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
  114. package/fesm2022/ngx-tethys-date-range.mjs +8 -4
  115. package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
  116. package/fesm2022/ngx-tethys-dialog.mjs +61 -10
  117. package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
  118. package/fesm2022/ngx-tethys-empty.mjs +9 -1
  119. package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
  120. package/fesm2022/ngx-tethys-form.mjs +16 -14
  121. package/fesm2022/ngx-tethys-form.mjs.map +1 -1
  122. package/fesm2022/ngx-tethys-guider.mjs +4 -2
  123. package/fesm2022/ngx-tethys-guider.mjs.map +1 -1
  124. package/fesm2022/ngx-tethys-i18n.mjs +747 -0
  125. package/fesm2022/ngx-tethys-i18n.mjs.map +1 -0
  126. package/fesm2022/ngx-tethys-nav.mjs +4 -2
  127. package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
  128. package/fesm2022/ngx-tethys-pagination.mjs +69 -7
  129. package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
  130. package/fesm2022/ngx-tethys-property.mjs +2 -2
  131. package/fesm2022/ngx-tethys-property.mjs.map +1 -1
  132. package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
  133. package/fesm2022/ngx-tethys-select.mjs +12 -5
  134. package/fesm2022/ngx-tethys-select.mjs.map +1 -1
  135. package/fesm2022/ngx-tethys-strength.mjs +20 -19
  136. package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
  137. package/fesm2022/ngx-tethys-time-picker.mjs +6 -3
  138. package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
  139. package/fesm2022/ngx-tethys-tooltip.mjs +3 -0
  140. package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
  141. package/fesm2022/ngx-tethys-transfer.mjs +4 -2
  142. package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
  143. package/fesm2022/ngx-tethys-tree-select.mjs +8 -5
  144. package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
  145. package/fesm2022/ngx-tethys.mjs +1 -1
  146. package/fesm2022/ngx-tethys.mjs.map +1 -1
  147. package/form/form-validator-loader.d.ts +2 -0
  148. package/guider/guider-hint/guider-hint.component.d.ts +3 -1
  149. package/i18n/i18n.d.ts +154 -0
  150. package/i18n/i18n.service.d.ts +19 -0
  151. package/i18n/i18n.token.d.ts +8 -0
  152. package/i18n/index.d.ts +9 -0
  153. package/i18n/locale.d.ts +4 -0
  154. package/i18n/locales/de-de.d.ts +130 -0
  155. package/i18n/locales/en-us.d.ts +151 -0
  156. package/i18n/locales/ja-jp.d.ts +130 -0
  157. package/i18n/locales/zh-hans.d.ts +130 -0
  158. package/i18n/locales/zh-hant.d.ts +130 -0
  159. package/nav/nav.component.d.ts +3 -1
  160. package/package.json +7 -1
  161. package/pagination/pagination.component.d.ts +4 -1
  162. package/pagination/pagination.module.d.ts +1 -1
  163. package/pagination/pagination.pipe.d.ts +6 -0
  164. package/radio/radio.component.d.ts +0 -2
  165. package/schematics/version.d.ts +1 -1
  166. package/schematics/version.js +1 -1
  167. package/select/custom-select/custom-select.component.d.ts +3 -1
  168. package/strength/strength.component.d.ts +21 -2
  169. package/styles/modules/cdk/drag-drop.scss +1 -1
  170. package/time-picker/time-picker-panel.component.d.ts +3 -1
  171. package/time-picker/time-picker.component.d.ts +3 -1
  172. package/transfer/transfer-list.component.d.ts +3 -1
  173. package/tree-select/tree-select.component.d.ts +3 -1
@@ -7,6 +7,7 @@ import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
7
7
  import { ThyPopover } from 'ngx-tethys/popover';
8
8
  import { ThyRangePickerDirective, ThyDatePickerFormatPipe, ThyDatePickerModule } from 'ngx-tethys/date-picker';
9
9
  import { ThyDropdownMenuComponent, ThyDropdownMenuItemDirective, ThyDropdownMenuItemNameDirective, ThyDropdownMenuItemExtendIconDirective, ThyDropdownModule } from 'ngx-tethys/dropdown';
10
+ import { injectLocale } from 'ngx-tethys/i18n';
10
11
  import { getUnixTime, startOfISOWeek, endOfISOWeek, startOfMonth, endOfMonth, addDays, addMonths, endOfDay, isSameDay, startOfDay, addYears } from 'date-fns';
11
12
  import { ThyAction } from 'ngx-tethys/action';
12
13
  import { coerceBooleanProperty } from 'ngx-tethys/util';
@@ -19,8 +20,9 @@ import { ThyNavModule } from 'ngx-tethys/nav';
19
20
  class OptionalDateRanges {
20
21
  constructor() {
21
22
  this.thyPopover = inject(ThyPopover);
23
+ this.locale = injectLocale('dateRange');
22
24
  this.hiddenMenu = false;
23
- this.customValue = '自定义';
25
+ this.customValue = this.locale().custom;
24
26
  }
25
27
  ngOnInit() { }
26
28
  _selectDateRange(dateRange) {
@@ -68,6 +70,7 @@ class ThyDateRange {
68
70
  constructor() {
69
71
  this.thyPopover = inject(ThyPopover);
70
72
  this.cdr = inject(ChangeDetectorRef);
73
+ this.locale = injectLocale('dateRange');
71
74
  /**
72
75
  * 隐藏下拉选择时间段
73
76
  * @default false
@@ -80,8 +83,9 @@ class ThyDateRange {
80
83
  this.thyDisabledSwitch = false;
81
84
  /**
82
85
  * 自定义日期选择的展示文字
86
+ * @default 自定义
83
87
  */
84
- this.thyCustomTextValue = '自定义';
88
+ this.thyCustomTextValue = this.locale().custom;
85
89
  /**
86
90
  * 选中的时间段的展示形式,
87
91
  * <br/> `custom`形式:`2023-07-01 ~ 2023-07-31`;
@@ -96,7 +100,7 @@ class ThyDateRange {
96
100
  this.optionalDateRanges = [
97
101
  {
98
102
  key: 'week',
99
- text: '本周',
103
+ text: this.locale().currentWeek,
100
104
  begin: getUnixTime(startOfISOWeek(new Date())),
101
105
  end: getUnixTime(endOfISOWeek(new Date())),
102
106
  timestamp: {
@@ -106,7 +110,7 @@ class ThyDateRange {
106
110
  },
107
111
  {
108
112
  key: 'month',
109
- text: '本月',
113
+ text: this.locale().currentMonth,
110
114
  begin: getUnixTime(startOfMonth(new Date())),
111
115
  end: getUnixTime(endOfMonth(new Date())),
112
116
  timestamp: {
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-date-range.mjs","sources":["../../../src/date-range/optional-dates/optional-dates.component.ts","../../../src/date-range/optional-dates/optional-dates.component.html","../../../src/date-range/date-range.component.ts","../../../src/date-range/date-range.component.html","../../../src/date-range/module.ts","../../../src/date-range/date-range.class.ts","../../../src/date-range/ngx-tethys-date-range.ts"],"sourcesContent":["import { Component, OnInit, inject } from '@angular/core';\nimport { DateRangeItemInfo } from '../date-range.class';\nimport { ThyPopover } from 'ngx-tethys/popover';\nimport { FormsModule } from '@angular/forms';\nimport { ThyRangePickerDirective } from 'ngx-tethys/date-picker';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport {\n ThyDropdownMenuComponent,\n ThyDropdownMenuItemDirective,\n ThyDropdownMenuItemNameDirective,\n ThyDropdownMenuItemExtendIconDirective\n} from 'ngx-tethys/dropdown';\n\n/**\n * @private\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'date-range-optional',\n templateUrl: './optional-dates.component.html',\n standalone: true,\n imports: [\n ThyDropdownMenuComponent,\n ThyDropdownMenuItemDirective,\n ThyDropdownMenuItemNameDirective,\n ThyDropdownMenuItemExtendIconDirective,\n ThyIcon,\n ThyRangePickerDirective,\n FormsModule\n ]\n})\nexport class OptionalDateRanges implements OnInit {\n private thyPopover = inject(ThyPopover);\n\n hiddenMenu = false;\n\n optionalDateRanges: DateRangeItemInfo[];\n\n customValue = '自定义';\n\n customKey: string;\n\n minDate: number | Date;\n\n maxDate: number | Date;\n\n disabledDate: (d: Date) => boolean;\n\n selectedDateRange: (date: DateRangeItemInfo) => void;\n\n calendarChange: (date: Date[]) => void;\n\n selectedDate: DateRangeItemInfo;\n\n ngOnInit() {}\n\n _selectDateRange(dateRange: DateRangeItemInfo) {\n this.selectedDate = dateRange;\n this.selectedDateRange(dateRange);\n this.thyPopover.close();\n }\n\n _selectedCustomDate(date: DateRangeItemInfo) {\n this.selectedDate = {\n begin: date.begin,\n end: date.end,\n key: this.customKey,\n text: this.customValue\n };\n this.selectedDateRange(this.selectedDate);\n }\n}\n","@if (!hiddenMenu) {\n <thy-dropdown-menu thyImmediateRender class=\"thy-date-range-dropdown-menu-container\">\n @for (dateRange of optionalDateRanges; track $index) {\n <a thyDropdownMenuItem href=\"javascript:;\" (click)=\"_selectDateRange(dateRange)\">\n <span thyDropdownMenuItemName>{{ dateRange?.text }}</span>\n @if (dateRange.key === selectedDate?.key) {\n <span thyDropdownMenuItemExtendIcon>\n <thy-icon class=\"text-primary\" thyIconName=\"check\"></thy-icon>\n </span>\n }\n </a>\n }\n <a\n thyDropdownMenuItem\n href=\"javascript:;\"\n thyRangePicker\n [(ngModel)]=\"selectedDate\"\n [thyMinDate]=\"minDate\"\n [thyMaxDate]=\"maxDate\"\n [thyDisabledDate]=\"disabledDate\"\n (ngModelChange)=\"_selectedCustomDate($event)\"\n (thyOnCalendarChange)=\"calendarChange($event)\">\n <span thyDropdownMenuItemName>{{ customValue }}</span>\n @if (customKey === selectedDate?.key) {\n <span thyDropdownMenuItemExtendIcon>\n <thy-icon class=\"text-primary\" thyIconName=\"check\"></thy-icon>\n </span>\n }\n </a>\n </thy-dropdown-menu>\n}\n","import { Component, forwardRef, OnInit, Input, ChangeDetectorRef, Output, EventEmitter, inject } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { DateRangeItemInfo } from './date-range.class';\nimport { ThyPopover } from 'ngx-tethys/popover';\nimport { OptionalDateRanges } from './optional-dates/optional-dates.component';\n\nimport {\n getUnixTime,\n startOfISOWeek,\n endOfISOWeek,\n endOfMonth,\n startOfMonth,\n addDays,\n addMonths,\n addYears,\n isSameDay,\n endOfDay,\n startOfDay\n} from 'date-fns';\nimport { ThyDatePickerFormatPipe } from 'ngx-tethys/date-picker';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyAction } from 'ngx-tethys/action';\nimport { NgClass } from '@angular/common';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nconst allDayTimestamp = 24 * 60 * 60;\n\nconst INPUT_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyDateRange),\n multi: true\n};\n\n/**\n * 预设时间段及自定义时间段选择组件\n * @name thy-date-range\n * @order 10\n */\n@Component({\n selector: 'thy-date-range',\n templateUrl: './date-range.component.html',\n providers: [INPUT_CONTROL_VALUE_ACCESSOR],\n standalone: true,\n imports: [ThyAction, ThyIcon, NgClass, ThyDatePickerFormatPipe]\n})\nexport class ThyDateRange implements OnInit, ControlValueAccessor {\n private thyPopover = inject(ThyPopover);\n private cdr = inject(ChangeDetectorRef);\n\n /**\n * 自定义可选值列表项\n * @type DateRangeItemInfo[]\n */\n @Input()\n set thyOptionalDateRanges(value: DateRangeItemInfo[]) {\n this.optionalDateRanges = value.length > 0 ? value : this.optionalDateRanges;\n }\n\n /**\n * 隐藏下拉选择时间段\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyHiddenMenu = false;\n\n /**\n * 禁用左右切换时间段\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyDisabledSwitch = false;\n\n /**\n * 自定义日期选择的展示文字\n */\n @Input() thyCustomTextValue = '自定义';\n\n /**\n * 自定义日期选择中可选择的最小时间\n * @type Date | number\n */\n @Input() thyMinDate: Date | number;\n\n /**\n * 自定义日期选择中可选择的最大时间\n * @type Date | number\n */\n @Input() thyMaxDate: Date | number;\n\n /**\n * 选中的时间段的展示形式,\n * <br/> `custom`形式:`2023-07-01 ~ 2023-07-31`;\n * <br/> `exception`形式:`2023-07-01`,具体展示还与`thyPickerFormat`有关。\n */\n @Input() thyCustomKey: 'custom' | 'exception' = 'custom';\n\n /**\n * 自定义日期展示格式,比如`yyyy年MM月`,只有当`thyCustomKey`值设为`exception`时才会生效\n */\n @Input() thyPickerFormat: string;\n\n /**\n * 自定义日期禁用日期\n */\n @Input() thyDisabledDate: (d: Date) => boolean;\n\n /**\n * 自定义日期选择日期回调\n * @type EventEmitter<Date[]>\n */\n @Output() readonly thyOnCalendarChange = new EventEmitter<Date[]>();\n\n public selectedDate?: DateRangeItemInfo;\n\n public optionalDateRanges: DateRangeItemInfo[] = [\n {\n key: 'week',\n text: '本周',\n begin: getUnixTime(startOfISOWeek(new Date())),\n end: getUnixTime(endOfISOWeek(new Date())),\n timestamp: {\n interval: 7,\n unit: 'day'\n }\n },\n {\n key: 'month',\n text: '本月',\n begin: getUnixTime(startOfMonth(new Date())),\n end: getUnixTime(endOfMonth(new Date())),\n timestamp: {\n interval: 1,\n unit: 'month'\n }\n }\n ];\n\n public selectedDateRange: {\n begin: number;\n end: number;\n };\n\n public onModelChange: Function = () => {};\n\n public onModelTouched: Function = () => {};\n\n writeValue(value: any): void {\n if (value) {\n this.selectedDate = value;\n } else if (this.optionalDateRanges.length > 0) {\n this.selectedDate = this.optionalDateRanges[0];\n this.onModelChange(this.selectedDate);\n }\n this._setSelectedDateRange();\n this.cdr.detectChanges();\n }\n\n registerOnChange(fn: any): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onModelTouched = fn;\n }\n\n ngOnInit() {}\n\n private _setSelectedDateRange() {\n this.selectedDateRange = {\n begin: this.selectedDate.begin,\n end: this.selectedDate.end\n };\n }\n\n private _calculateNewTime(type: string) {\n if (this.selectedDate.timestamp) {\n const beginDate = new Date(this.selectedDate.begin * 1000);\n const endDate = new Date(this.selectedDate.end * 1000);\n const interval = this.selectedDate.timestamp.interval;\n\n if (this.selectedDate.timestamp.unit === 'day') {\n if (type === 'previous') {\n return {\n begin: getUnixTime(addDays(beginDate, -1 * interval)),\n end: getUnixTime(addDays(endDate, -1 * interval)),\n key: this.thyCustomKey\n };\n } else {\n return {\n begin: getUnixTime(addDays(beginDate, 1 * interval)),\n end: getUnixTime(addDays(endDate, 1 * interval)),\n key: this.thyCustomKey\n };\n }\n } else if (this.selectedDate.timestamp.unit === 'month') {\n if (type === 'previous') {\n return {\n begin: getUnixTime(addMonths(beginDate, -1 * interval)),\n end: getUnixTime(endOfDay(addDays(beginDate, -1))),\n key: this.thyCustomKey\n };\n } else {\n const endIsEndDayOfMonth = isSameDay(endDate, endOfMonth(endDate));\n return {\n begin: getUnixTime(startOfDay(addDays(endDate, 1))),\n end: endIsEndDayOfMonth\n ? getUnixTime(endOfMonth(addMonths(endDate, 1 * interval)))\n : getUnixTime(addMonths(endDate, 1 * interval)),\n key: this.thyCustomKey\n };\n }\n } else if (this.selectedDate.timestamp.unit === 'year') {\n if (type === 'previous') {\n return {\n begin: getUnixTime(addYears(beginDate, -1 * interval)),\n end: getUnixTime(addYears(endDate, -1 * interval)),\n key: this.thyCustomKey\n };\n } else {\n return {\n begin: getUnixTime(addYears(beginDate, 1 * interval)),\n end: getUnixTime(addYears(endDate, 1 * interval)),\n key: this.thyCustomKey\n };\n }\n }\n } else {\n const interval: number = this.selectedDate.end - this.selectedDate.begin + allDayTimestamp;\n if (type === 'previous') {\n return {\n begin: this.selectedDate.begin - interval,\n end: this.selectedDate.end - interval,\n key: this.thyCustomKey\n };\n } else {\n return {\n begin: this.selectedDate.begin + interval,\n end: this.selectedDate.end + interval,\n key: this.thyCustomKey\n };\n }\n }\n }\n\n private _setPreviousOrNextDate(type: string) {\n this.selectedDate = Object.assign({}, this.selectedDate, this._calculateNewTime(type));\n this._setSelectedDateRange();\n this.onModelChange(this.selectedDate);\n }\n\n public previous() {\n this._setPreviousOrNextDate('previous');\n }\n\n public next() {\n this._setPreviousOrNextDate('next');\n }\n\n public openOptionalDateRangesMenu(event: Event) {\n if (this.thyHiddenMenu) {\n return;\n }\n this.thyPopover.open(OptionalDateRanges, {\n origin: event.currentTarget as HTMLElement,\n hasBackdrop: true,\n backdropClass: 'thy-overlay-transparent-backdrop',\n offset: 0,\n manualClosure: true,\n originActiveClass: 'thy-date-range-text-active',\n initialState: {\n hiddenMenu: this.thyHiddenMenu,\n optionalDateRanges: this.optionalDateRanges,\n selectedDate: this.selectedDate,\n minDate: this.thyMinDate,\n maxDate: this.thyMaxDate,\n customValue: this.thyCustomTextValue,\n customKey: this.thyCustomKey,\n disabledDate: this.thyDisabledDate,\n selectedDateRange: (dateRange: DateRangeItemInfo) => {\n this.onModelChange(dateRange);\n this.selectedDate = dateRange;\n },\n calendarChange: (date: Date[]) => {\n this.thyOnCalendarChange.emit(date);\n }\n }\n });\n }\n}\n","<div class=\"thy-date-range-container\">\n @if (!thyDisabledSwitch) {\n <a thyAction thyIcon=\"angle-left\" href=\"javascript:;\" (click)=\"previous()\"></a>\n }\n <span\n href=\"javascript:;\"\n (click)=\"openOptionalDateRangesMenu($event)\"\n class=\"thy-date-range-text\"\n [ngClass]=\"{ 'thy-date-range-disabled': thyHiddenMenu }\">\n @if (selectedDate?.key === 'custom') {\n {{ selectedDate?.begin | thyDatePickerFormat }} ~ {{ selectedDate?.end | thyDatePickerFormat }}\n }\n @if (selectedDate?.key === 'exception') {\n {{ selectedDate?.begin | thyDatePickerFormat : thyPickerFormat }}\n }\n @if (selectedDate?.key !== 'custom' && selectedDate?.key !== 'exception') {\n {{ selectedDate?.text }}\n }\n @if (!thyHiddenMenu) {\n <thy-icon class=\"thy-date-range-text-caret-down ml-2\" thyIconName=\"angle-down\"></thy-icon>\n }\n </span>\n @if (!thyDisabledSwitch) {\n <a thyAction thyIcon=\"angle-right\" href=\"javascript:;\" (click)=\"next()\"></a>\n }\n</div>\n","import { ThyIconModule } from 'ngx-tethys/icon';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ThyDateRange } from './date-range.component';\nimport { ThyDropdownModule } from 'ngx-tethys/dropdown';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyDatePickerModule } from 'ngx-tethys/date-picker';\nimport { OptionalDateRanges } from './optional-dates/optional-dates.component';\nimport { ThyNavModule } from 'ngx-tethys/nav';\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThyDropdownModule,\n ThySharedModule,\n ThyIconModule,\n ThyDatePickerModule,\n ThyNavModule,\n ThyDateRange,\n OptionalDateRanges\n ],\n exports: [ThyDateRange]\n})\nexport class ThyDateRangeModule {}\n","export type AttachTypes = 'day' | 'month' | 'year';\n\n/**\n * @order 20\n */\nexport class DateRangeItemInfo {\n /**\n * 开始时间\n */\n begin?: number;\n\n /**\n * 截止时间\n */\n end?: number;\n\n /**\n * 时间段的唯一标识,如'week'、'month'\n */\n key?: string;\n\n /**\n * 时间段的展示文本\n */\n text?: string;\n\n /**\n * 自定义时间段规则,interval为时间间隔;unit可选值有'day' | 'month' | 'year'\n */\n timestamp?: { interval?: number; unit?: AttachTypes };\n}\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-date-range.mjs","sources":["../../../src/date-range/optional-dates/optional-dates.component.ts","../../../src/date-range/optional-dates/optional-dates.component.html","../../../src/date-range/date-range.component.ts","../../../src/date-range/date-range.component.html","../../../src/date-range/module.ts","../../../src/date-range/date-range.class.ts","../../../src/date-range/ngx-tethys-date-range.ts"],"sourcesContent":["import { Component, OnInit, Signal, inject } from '@angular/core';\nimport { DateRangeItemInfo } from '../date-range.class';\nimport { ThyPopover } from 'ngx-tethys/popover';\nimport { FormsModule } from '@angular/forms';\nimport { ThyRangePickerDirective } from 'ngx-tethys/date-picker';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport {\n ThyDropdownMenuComponent,\n ThyDropdownMenuItemDirective,\n ThyDropdownMenuItemNameDirective,\n ThyDropdownMenuItemExtendIconDirective\n} from 'ngx-tethys/dropdown';\nimport { injectLocale, ThyDateRangeLocale } from 'ngx-tethys/i18n';\n\n/**\n * @private\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'date-range-optional',\n templateUrl: './optional-dates.component.html',\n standalone: true,\n imports: [\n ThyDropdownMenuComponent,\n ThyDropdownMenuItemDirective,\n ThyDropdownMenuItemNameDirective,\n ThyDropdownMenuItemExtendIconDirective,\n ThyIcon,\n ThyRangePickerDirective,\n FormsModule\n ]\n})\nexport class OptionalDateRanges implements OnInit {\n private thyPopover = inject(ThyPopover);\n private locale: Signal<ThyDateRangeLocale> = injectLocale('dateRange');\n\n hiddenMenu = false;\n\n optionalDateRanges: DateRangeItemInfo[];\n\n customValue = this.locale().custom;\n\n customKey: string;\n\n minDate: number | Date;\n\n maxDate: number | Date;\n\n disabledDate: (d: Date) => boolean;\n\n selectedDateRange: (date: DateRangeItemInfo) => void;\n\n calendarChange: (date: Date[]) => void;\n\n selectedDate: DateRangeItemInfo;\n\n ngOnInit() {}\n\n _selectDateRange(dateRange: DateRangeItemInfo) {\n this.selectedDate = dateRange;\n this.selectedDateRange(dateRange);\n this.thyPopover.close();\n }\n\n _selectedCustomDate(date: DateRangeItemInfo) {\n this.selectedDate = {\n begin: date.begin,\n end: date.end,\n key: this.customKey,\n text: this.customValue\n };\n this.selectedDateRange(this.selectedDate);\n }\n}\n","@if (!hiddenMenu) {\n <thy-dropdown-menu thyImmediateRender class=\"thy-date-range-dropdown-menu-container\">\n @for (dateRange of optionalDateRanges; track $index) {\n <a thyDropdownMenuItem href=\"javascript:;\" (click)=\"_selectDateRange(dateRange)\">\n <span thyDropdownMenuItemName>{{ dateRange?.text }}</span>\n @if (dateRange.key === selectedDate?.key) {\n <span thyDropdownMenuItemExtendIcon>\n <thy-icon class=\"text-primary\" thyIconName=\"check\"></thy-icon>\n </span>\n }\n </a>\n }\n <a\n thyDropdownMenuItem\n href=\"javascript:;\"\n thyRangePicker\n [(ngModel)]=\"selectedDate\"\n [thyMinDate]=\"minDate\"\n [thyMaxDate]=\"maxDate\"\n [thyDisabledDate]=\"disabledDate\"\n (ngModelChange)=\"_selectedCustomDate($event)\"\n (thyOnCalendarChange)=\"calendarChange($event)\">\n <span thyDropdownMenuItemName>{{ customValue }}</span>\n @if (customKey === selectedDate?.key) {\n <span thyDropdownMenuItemExtendIcon>\n <thy-icon class=\"text-primary\" thyIconName=\"check\"></thy-icon>\n </span>\n }\n </a>\n </thy-dropdown-menu>\n}\n","import { Component, forwardRef, OnInit, Input, ChangeDetectorRef, Output, EventEmitter, inject, Signal } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { DateRangeItemInfo } from './date-range.class';\nimport { ThyPopover } from 'ngx-tethys/popover';\nimport { OptionalDateRanges } from './optional-dates/optional-dates.component';\n\nimport {\n getUnixTime,\n startOfISOWeek,\n endOfISOWeek,\n endOfMonth,\n startOfMonth,\n addDays,\n addMonths,\n addYears,\n isSameDay,\n endOfDay,\n startOfDay\n} from 'date-fns';\nimport { ThyDatePickerFormatPipe } from 'ngx-tethys/date-picker';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyAction } from 'ngx-tethys/action';\nimport { NgClass } from '@angular/common';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\nimport { injectLocale, ThyDateRangeLocale } from 'ngx-tethys/i18n';\n\nconst allDayTimestamp = 24 * 60 * 60;\n\nconst INPUT_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyDateRange),\n multi: true\n};\n\n/**\n * 预设时间段及自定义时间段选择组件\n * @name thy-date-range\n * @order 10\n */\n@Component({\n selector: 'thy-date-range',\n templateUrl: './date-range.component.html',\n providers: [INPUT_CONTROL_VALUE_ACCESSOR],\n standalone: true,\n imports: [ThyAction, ThyIcon, NgClass, ThyDatePickerFormatPipe]\n})\nexport class ThyDateRange implements OnInit, ControlValueAccessor {\n private thyPopover = inject(ThyPopover);\n private cdr = inject(ChangeDetectorRef);\n private locale: Signal<ThyDateRangeLocale> = injectLocale('dateRange');\n\n /**\n * 自定义可选值列表项\n * @type DateRangeItemInfo[]\n */\n @Input()\n set thyOptionalDateRanges(value: DateRangeItemInfo[]) {\n this.optionalDateRanges = value.length > 0 ? value : this.optionalDateRanges;\n }\n\n /**\n * 隐藏下拉选择时间段\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyHiddenMenu = false;\n\n /**\n * 禁用左右切换时间段\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyDisabledSwitch = false;\n\n /**\n * 自定义日期选择的展示文字\n * @default 自定义\n */\n @Input() thyCustomTextValue = this.locale().custom;\n\n /**\n * 自定义日期选择中可选择的最小时间\n * @type Date | number\n */\n @Input() thyMinDate: Date | number;\n\n /**\n * 自定义日期选择中可选择的最大时间\n * @type Date | number\n */\n @Input() thyMaxDate: Date | number;\n\n /**\n * 选中的时间段的展示形式,\n * <br/> `custom`形式:`2023-07-01 ~ 2023-07-31`;\n * <br/> `exception`形式:`2023-07-01`,具体展示还与`thyPickerFormat`有关。\n */\n @Input() thyCustomKey: 'custom' | 'exception' = 'custom';\n\n /**\n * 自定义日期展示格式,比如`yyyy年MM月`,只有当`thyCustomKey`值设为`exception`时才会生效\n */\n @Input() thyPickerFormat: string;\n\n /**\n * 自定义日期禁用日期\n */\n @Input() thyDisabledDate: (d: Date) => boolean;\n\n /**\n * 自定义日期选择日期回调\n * @type EventEmitter<Date[]>\n */\n @Output() readonly thyOnCalendarChange = new EventEmitter<Date[]>();\n\n public selectedDate?: DateRangeItemInfo;\n\n public optionalDateRanges: DateRangeItemInfo[] = [\n {\n key: 'week',\n text: this.locale().currentWeek,\n begin: getUnixTime(startOfISOWeek(new Date())),\n end: getUnixTime(endOfISOWeek(new Date())),\n timestamp: {\n interval: 7,\n unit: 'day'\n }\n },\n {\n key: 'month',\n text: this.locale().currentMonth,\n begin: getUnixTime(startOfMonth(new Date())),\n end: getUnixTime(endOfMonth(new Date())),\n timestamp: {\n interval: 1,\n unit: 'month'\n }\n }\n ];\n\n public selectedDateRange: {\n begin: number;\n end: number;\n };\n\n public onModelChange: Function = () => {};\n\n public onModelTouched: Function = () => {};\n\n writeValue(value: any): void {\n if (value) {\n this.selectedDate = value;\n } else if (this.optionalDateRanges.length > 0) {\n this.selectedDate = this.optionalDateRanges[0];\n this.onModelChange(this.selectedDate);\n }\n this._setSelectedDateRange();\n this.cdr.detectChanges();\n }\n\n registerOnChange(fn: any): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onModelTouched = fn;\n }\n\n ngOnInit() {}\n\n private _setSelectedDateRange() {\n this.selectedDateRange = {\n begin: this.selectedDate.begin,\n end: this.selectedDate.end\n };\n }\n\n private _calculateNewTime(type: string) {\n if (this.selectedDate.timestamp) {\n const beginDate = new Date(this.selectedDate.begin * 1000);\n const endDate = new Date(this.selectedDate.end * 1000);\n const interval = this.selectedDate.timestamp.interval;\n\n if (this.selectedDate.timestamp.unit === 'day') {\n if (type === 'previous') {\n return {\n begin: getUnixTime(addDays(beginDate, -1 * interval)),\n end: getUnixTime(addDays(endDate, -1 * interval)),\n key: this.thyCustomKey\n };\n } else {\n return {\n begin: getUnixTime(addDays(beginDate, 1 * interval)),\n end: getUnixTime(addDays(endDate, 1 * interval)),\n key: this.thyCustomKey\n };\n }\n } else if (this.selectedDate.timestamp.unit === 'month') {\n if (type === 'previous') {\n return {\n begin: getUnixTime(addMonths(beginDate, -1 * interval)),\n end: getUnixTime(endOfDay(addDays(beginDate, -1))),\n key: this.thyCustomKey\n };\n } else {\n const endIsEndDayOfMonth = isSameDay(endDate, endOfMonth(endDate));\n return {\n begin: getUnixTime(startOfDay(addDays(endDate, 1))),\n end: endIsEndDayOfMonth\n ? getUnixTime(endOfMonth(addMonths(endDate, 1 * interval)))\n : getUnixTime(addMonths(endDate, 1 * interval)),\n key: this.thyCustomKey\n };\n }\n } else if (this.selectedDate.timestamp.unit === 'year') {\n if (type === 'previous') {\n return {\n begin: getUnixTime(addYears(beginDate, -1 * interval)),\n end: getUnixTime(addYears(endDate, -1 * interval)),\n key: this.thyCustomKey\n };\n } else {\n return {\n begin: getUnixTime(addYears(beginDate, 1 * interval)),\n end: getUnixTime(addYears(endDate, 1 * interval)),\n key: this.thyCustomKey\n };\n }\n }\n } else {\n const interval: number = this.selectedDate.end - this.selectedDate.begin + allDayTimestamp;\n if (type === 'previous') {\n return {\n begin: this.selectedDate.begin - interval,\n end: this.selectedDate.end - interval,\n key: this.thyCustomKey\n };\n } else {\n return {\n begin: this.selectedDate.begin + interval,\n end: this.selectedDate.end + interval,\n key: this.thyCustomKey\n };\n }\n }\n }\n\n private _setPreviousOrNextDate(type: string) {\n this.selectedDate = Object.assign({}, this.selectedDate, this._calculateNewTime(type));\n this._setSelectedDateRange();\n this.onModelChange(this.selectedDate);\n }\n\n public previous() {\n this._setPreviousOrNextDate('previous');\n }\n\n public next() {\n this._setPreviousOrNextDate('next');\n }\n\n public openOptionalDateRangesMenu(event: Event) {\n if (this.thyHiddenMenu) {\n return;\n }\n this.thyPopover.open(OptionalDateRanges, {\n origin: event.currentTarget as HTMLElement,\n hasBackdrop: true,\n backdropClass: 'thy-overlay-transparent-backdrop',\n offset: 0,\n manualClosure: true,\n originActiveClass: 'thy-date-range-text-active',\n initialState: {\n hiddenMenu: this.thyHiddenMenu,\n optionalDateRanges: this.optionalDateRanges,\n selectedDate: this.selectedDate,\n minDate: this.thyMinDate,\n maxDate: this.thyMaxDate,\n customValue: this.thyCustomTextValue,\n customKey: this.thyCustomKey,\n disabledDate: this.thyDisabledDate,\n selectedDateRange: (dateRange: DateRangeItemInfo) => {\n this.onModelChange(dateRange);\n this.selectedDate = dateRange;\n },\n calendarChange: (date: Date[]) => {\n this.thyOnCalendarChange.emit(date);\n }\n }\n });\n }\n}\n","<div class=\"thy-date-range-container\">\n @if (!thyDisabledSwitch) {\n <a thyAction thyIcon=\"angle-left\" href=\"javascript:;\" (click)=\"previous()\"></a>\n }\n <span\n href=\"javascript:;\"\n (click)=\"openOptionalDateRangesMenu($event)\"\n class=\"thy-date-range-text\"\n [ngClass]=\"{ 'thy-date-range-disabled': thyHiddenMenu }\">\n @if (selectedDate?.key === 'custom') {\n {{ selectedDate?.begin | thyDatePickerFormat }} ~ {{ selectedDate?.end | thyDatePickerFormat }}\n }\n @if (selectedDate?.key === 'exception') {\n {{ selectedDate?.begin | thyDatePickerFormat : thyPickerFormat }}\n }\n @if (selectedDate?.key !== 'custom' && selectedDate?.key !== 'exception') {\n {{ selectedDate?.text }}\n }\n @if (!thyHiddenMenu) {\n <thy-icon class=\"thy-date-range-text-caret-down ml-2\" thyIconName=\"angle-down\"></thy-icon>\n }\n </span>\n @if (!thyDisabledSwitch) {\n <a thyAction thyIcon=\"angle-right\" href=\"javascript:;\" (click)=\"next()\"></a>\n }\n</div>\n","import { ThyIconModule } from 'ngx-tethys/icon';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ThyDateRange } from './date-range.component';\nimport { ThyDropdownModule } from 'ngx-tethys/dropdown';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyDatePickerModule } from 'ngx-tethys/date-picker';\nimport { OptionalDateRanges } from './optional-dates/optional-dates.component';\nimport { ThyNavModule } from 'ngx-tethys/nav';\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThyDropdownModule,\n ThySharedModule,\n ThyIconModule,\n ThyDatePickerModule,\n ThyNavModule,\n ThyDateRange,\n OptionalDateRanges\n ],\n exports: [ThyDateRange]\n})\nexport class ThyDateRangeModule {}\n","export type AttachTypes = 'day' | 'month' | 'year';\n\n/**\n * @order 20\n */\nexport class DateRangeItemInfo {\n /**\n * 开始时间\n */\n begin?: number;\n\n /**\n * 截止时间\n */\n end?: number;\n\n /**\n * 时间段的唯一标识,如'week'、'month'\n */\n key?: string;\n\n /**\n * 时间段的展示文本\n */\n text?: string;\n\n /**\n * 自定义时间段规则,interval为时间间隔;unit可选值有'day' | 'month' | 'year'\n */\n timestamp?: { interval?: number; unit?: AttachTypes };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Overlay, OverlayModule } from '@angular/cdk/overlay';
1
+ import { Overlay, OverlayKeyboardDispatcher, OverlayContainer, OverlayModule } from '@angular/cdk/overlay';
2
2
  import { PortalModule, ComponentPortal } from '@angular/cdk/portal';
3
3
  import { DOCUMENT, NgTemplateOutlet, NgClass, CommonModule } from '@angular/common';
4
4
  import * as i0 from '@angular/core';
@@ -13,12 +13,13 @@ import { ThySharedModule } from 'ngx-tethys/shared';
13
13
  import { ThyAbstractOverlayConfig, ThyAbstractOverlayContainer, reqAnimFrame, ThyClickPositioner, ThyPortalOutlet, ThyAbstractOverlayRef, ThyAbstractInternalOverlayRef, ThyAbstractOverlayService, ThyTranslate } from 'ngx-tethys/core';
14
14
  import { of } from 'rxjs';
15
15
  import { Directionality } from '@angular/cdk/bidi';
16
+ import { isString, coerceBooleanProperty } from 'ngx-tethys/util';
16
17
  import { filter, finalize } from 'rxjs/operators';
17
18
  import { FocusTrapFactory } from '@angular/cdk/a11y';
18
19
  import { state, style, transition, animate, trigger } from '@angular/animations';
19
20
  import * as i1 from '@angular/cdk/scrolling';
20
21
  import { CdkScrollable } from '@angular/cdk/scrolling';
21
- import { coerceBooleanProperty } from 'ngx-tethys/util';
22
+ import { injectLocale, ThyI18nService } from 'ngx-tethys/i18n';
22
23
  import { useHostRenderer } from '@tethys/cdk/dom';
23
24
 
24
25
  const THY_CONFIRM_COMPONENT_TOKEN = new InjectionToken('thy-confirm-component-token');
@@ -266,15 +267,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
266
267
  args: [`attr.id`]
267
268
  }] } });
268
269
 
269
- /**
270
- * @publicApi
271
- * @order 30
272
- */
273
270
  class ThyDialogRef extends ThyAbstractOverlayRef {
274
271
  }
275
272
  class ThyInternalDialogRef extends ThyAbstractInternalOverlayRef {
276
- constructor(overlayRef, containerInstance, config) {
273
+ constructor(overlayRef, containerInstance, config, service) {
277
274
  super(dialogAbstractOverlayOptions, overlayRef, containerInstance, config);
275
+ this.thyDialog = service;
278
276
  }
279
277
  /**
280
278
  * Updates the dialog's position.
@@ -294,6 +292,12 @@ class ThyInternalDialogRef extends ThyAbstractInternalOverlayRef {
294
292
  this.updatePosition(position);
295
293
  return this;
296
294
  }
295
+ /**
296
+ * Update dialog to top
297
+ */
298
+ toTop() {
299
+ this.thyDialog.toTop(this.id);
300
+ }
297
301
  }
298
302
 
299
303
  /**
@@ -319,7 +323,7 @@ class ThyDialog extends ThyAbstractOverlayService {
319
323
  return containerRef.instance;
320
324
  }
321
325
  createAbstractOverlayRef(overlayRef, containerInstance, config) {
322
- return new ThyInternalDialogRef(overlayRef, containerInstance, config);
326
+ return new ThyInternalDialogRef(overlayRef, containerInstance, config, this);
323
327
  }
324
328
  createInjector(config, dialogRef, dialogContainer) {
325
329
  const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;
@@ -348,6 +352,8 @@ class ThyDialog extends ThyAbstractOverlayService {
348
352
  const clickPositioner = inject(ThyClickPositioner);
349
353
  super(dialogAbstractOverlayOptions, overlay, injector, defaultConfig);
350
354
  this.confirmComponentType = inject(THY_CONFIRM_COMPONENT_TOKEN);
355
+ this.overlayKeyboardDispatcher = inject(OverlayKeyboardDispatcher);
356
+ this.overlayContainer = inject(OverlayContainer);
351
357
  clickPositioner.initialize();
352
358
  }
353
359
  /**
@@ -395,6 +401,27 @@ class ThyDialog extends ThyAbstractOverlayService {
395
401
  }
396
402
  return null;
397
403
  }
404
+ /**
405
+ * Update dialog to top
406
+ */
407
+ toTop(idOrOverlayRef) {
408
+ let dialogRef;
409
+ if (isString(idOrOverlayRef)) {
410
+ dialogRef = this.openedOverlays.find(item => item.id === idOrOverlayRef);
411
+ }
412
+ else {
413
+ dialogRef = idOrOverlayRef;
414
+ }
415
+ if (dialogRef) {
416
+ const overlayRef = dialogRef.getOverlayRef();
417
+ const containerElement = this.overlayContainer.getContainerElement();
418
+ containerElement.appendChild(overlayRef.backdropElement);
419
+ containerElement.appendChild(overlayRef.hostElement);
420
+ this.overlayKeyboardDispatcher.remove(overlayRef);
421
+ this.overlayKeyboardDispatcher.add(overlayRef);
422
+ this.openedOverlays = [...(this.openedOverlays || []).filter(item => item.id !== dialogRef?.id), dialogRef];
423
+ }
424
+ }
398
425
  ngOnDestroy() {
399
426
  this.dispose();
400
427
  }
@@ -449,6 +476,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
449
476
  }] } });
450
477
 
451
478
  const THY_CONFIRM_DEFAULT_OPTIONS = new InjectionToken('thy-confirm-default-options');
479
+ /**
480
+ * @deprecated
481
+ */
452
482
  const THY_CONFIRM_DEFAULT_OPTIONS_VALUE = {
453
483
  title: '确认删除',
454
484
  okText: '确定',
@@ -456,9 +486,20 @@ const THY_CONFIRM_DEFAULT_OPTIONS_VALUE = {
456
486
  cancelText: '取消',
457
487
  footerAlign: 'left'
458
488
  };
489
+ function useConfirmDefaultOptions() {
490
+ const locale = injectLocale('dialog');
491
+ return {
492
+ title: locale().title,
493
+ okText: locale().ok,
494
+ okType: 'danger',
495
+ cancelText: locale().cancel,
496
+ footerAlign: 'left'
497
+ };
498
+ }
459
499
  const THY_CONFIRM_DEFAULT_OPTIONS_PROVIDER = {
460
500
  provide: THY_CONFIRM_DEFAULT_OPTIONS,
461
- useValue: THY_CONFIRM_DEFAULT_OPTIONS_VALUE
501
+ useFactory: useConfirmDefaultOptions,
502
+ deps: [ThyI18nService]
462
503
  };
463
504
 
464
505
  /**
@@ -547,7 +588,17 @@ class ThyConfirm {
547
588
  this.dialogRef = inject(ThyDialogRef);
548
589
  this.changeDetectorRef = inject(ChangeDetectorRef);
549
590
  this.defaultConfig = inject(THY_CONFIRM_DEFAULT_OPTIONS);
550
- this.defaultConfig = { ...THY_CONFIRM_DEFAULT_OPTIONS_VALUE, ...this.defaultConfig };
591
+ this.locale = injectLocale('dialog');
592
+ this.defaultConfig = {
593
+ ...{
594
+ title: this.locale().title,
595
+ okText: this.locale().ok,
596
+ okType: 'danger',
597
+ cancelText: this.locale().cancel,
598
+ footerAlign: 'left'
599
+ },
600
+ ...this.defaultConfig
601
+ };
551
602
  }
552
603
  ngOnInit() {
553
604
  this.defaultConfig = { ...this.defaultConfig, ...this.options };