cmat 0.0.15 → 0.0.16

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 (244) hide show
  1. package/README.md +2 -2
  2. package/components/custom-formly/public-api.d.ts +1 -0
  3. package/components/custom-formly/types/button/button.component.d.ts +19 -3
  4. package/components/custom-formly/types/cascade/cascade.component.d.ts +3 -2
  5. package/components/custom-formly/types/checklist/checklist.component.d.ts +3 -2
  6. package/components/custom-formly/types/chips/chips.component.d.ts +3 -2
  7. package/components/custom-formly/types/date-range/date-range.component.d.ts +3 -2
  8. package/components/custom-formly/types/datepicker/datepicker.component.d.ts +3 -2
  9. package/components/custom-formly/types/multicheckbox/multicheckbox.component.d.ts +3 -2
  10. package/components/custom-formly/types/number/number.component.d.ts +3 -2
  11. package/components/custom-formly/types/quill/quill.component.d.ts +3 -2
  12. package/components/custom-formly/types/radio/radio.component.d.ts +3 -2
  13. package/components/custom-formly/types/rating/rating.component.d.ts +3 -2
  14. package/components/custom-formly/types/repeat/repeat.component.d.ts +3 -2
  15. package/components/custom-formly/types/select/select.component.d.ts +3 -2
  16. package/components/custom-formly/types/select-tree/select-tree.component.d.ts +2 -2
  17. package/components/custom-formly/types/stepper/stepper.type.d.ts +2 -2
  18. package/components/custom-formly/types/table/table.component.d.ts +11 -5
  19. package/components/custom-formly/types/tags/tags.component.d.ts +3 -2
  20. package/components/custom-formly/types/upload/upload.component.d.ts +3 -2
  21. package/components/custom-formly/wrappers/form-field/form-field.component.d.ts +25 -0
  22. package/components/material-datetimepicker/datetimepicker.d.ts +4 -3
  23. package/components/upload/upload-queue/upload-queue.component.d.ts +3 -2
  24. package/esm2022/animations/dropdown.mjs +1 -1
  25. package/esm2022/components/adapter/dayjs-date-adapter.mjs +3 -3
  26. package/esm2022/components/adapter/dayjs-datetime-adapter.mjs +3 -3
  27. package/esm2022/components/adapter/native-datetime-adapter.mjs +3 -3
  28. package/esm2022/components/breadcrumb/breadcrumb-item.directive.mjs +3 -3
  29. package/esm2022/components/breadcrumb/breadcrumb.component.mjs +3 -3
  30. package/esm2022/components/breadcrumb/breadcrumb.service.mjs +5 -5
  31. package/esm2022/components/card/card.component.mjs +5 -5
  32. package/esm2022/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.mjs +5 -5
  33. package/esm2022/components/cascade/cascade-list/cascade-list.component.mjs +6 -6
  34. package/esm2022/components/cascade/cascade-menu/cascade-menu.component.mjs +5 -5
  35. package/esm2022/components/cascade/options.interface.mjs +1 -1
  36. package/esm2022/components/chip-input/chip-input.component.mjs +6 -7
  37. package/esm2022/components/custom-formly/extension/addons.extension.mjs +2 -2
  38. package/esm2022/components/custom-formly/public-api.mjs +2 -1
  39. package/esm2022/components/custom-formly/types/button/button.component.mjs +57 -15
  40. package/esm2022/components/custom-formly/types/cascade/cascade.component.mjs +4 -4
  41. package/esm2022/components/custom-formly/types/checklist/checklist.component.mjs +4 -4
  42. package/esm2022/components/custom-formly/types/chips/chips.component.mjs +4 -4
  43. package/esm2022/components/custom-formly/types/color-picker/color-picker.component.mjs +3 -3
  44. package/esm2022/components/custom-formly/types/date-range/date-range.component.mjs +4 -4
  45. package/esm2022/components/custom-formly/types/datepicker/datepicker.component.mjs +5 -5
  46. package/esm2022/components/custom-formly/types/multicheckbox/multicheckbox.component.mjs +4 -4
  47. package/esm2022/components/custom-formly/types/number/number.component.mjs +4 -4
  48. package/esm2022/components/custom-formly/types/quill/quill.component.mjs +6 -6
  49. package/esm2022/components/custom-formly/types/radio/radio.component.mjs +4 -4
  50. package/esm2022/components/custom-formly/types/rating/rating.component.mjs +4 -4
  51. package/esm2022/components/custom-formly/types/repeat/repeat.component.mjs +4 -4
  52. package/esm2022/components/custom-formly/types/select/select.component.mjs +16 -15
  53. package/esm2022/components/custom-formly/types/select-tree/select-tree.component.mjs +4 -4
  54. package/esm2022/components/custom-formly/types/stepper/horizontal/stepper.component.mjs +3 -3
  55. package/esm2022/components/custom-formly/types/stepper/stepper.type.mjs +1 -1
  56. package/esm2022/components/custom-formly/types/stepper/vertical/stepper.component.mjs +3 -3
  57. package/esm2022/components/custom-formly/types/table/table.component.mjs +28 -14
  58. package/esm2022/components/custom-formly/types/tabs/tab.component.mjs +4 -4
  59. package/esm2022/components/custom-formly/types/tags/tags.component.mjs +4 -4
  60. package/esm2022/components/custom-formly/types/textarea/textarea.component.mjs +3 -3
  61. package/esm2022/components/custom-formly/types/upload/upload.component.mjs +4 -4
  62. package/esm2022/components/custom-formly/wrappers/addons/addons.component.mjs +3 -3
  63. package/esm2022/components/custom-formly/wrappers/card/card.component.mjs +3 -3
  64. package/esm2022/components/custom-formly/wrappers/expansion/expansion.component.mjs +3 -3
  65. package/esm2022/components/custom-formly/wrappers/form-field/form-field.component.mjs +47 -0
  66. package/esm2022/components/custom-formly/wrappers/panel/panel.component.mjs +3 -3
  67. package/esm2022/components/date-range/date-range.component.mjs +6 -6
  68. package/esm2022/components/drawer/drawer.component.mjs +3 -3
  69. package/esm2022/components/drawer/drawer.service.mjs +3 -3
  70. package/esm2022/components/fullscreen/fullscreen.component.mjs +3 -3
  71. package/esm2022/components/highlight/highlight.component.mjs +3 -3
  72. package/esm2022/components/highlight/highlight.service.mjs +3 -3
  73. package/esm2022/components/json-editor/json-editor.component.mjs +6 -6
  74. package/esm2022/components/masonry/masonry.component.mjs +3 -3
  75. package/esm2022/components/material-color-picker/material-color-picker.component.mjs +5 -5
  76. package/esm2022/components/material-datetimepicker/calendar-body.mjs +5 -5
  77. package/esm2022/components/material-datetimepicker/calendar.mjs +5 -5
  78. package/esm2022/components/material-datetimepicker/clock.mjs +5 -5
  79. package/esm2022/components/material-datetimepicker/datetimepicker-input.mjs +3 -3
  80. package/esm2022/components/material-datetimepicker/datetimepicker-intl.mjs +3 -3
  81. package/esm2022/components/material-datetimepicker/datetimepicker-toggle.mjs +8 -8
  82. package/esm2022/components/material-datetimepicker/datetimepicker.mjs +14 -11
  83. package/esm2022/components/material-datetimepicker/month-view.mjs +5 -5
  84. package/esm2022/components/material-datetimepicker/multi-year-view.mjs +3 -3
  85. package/esm2022/components/material-datetimepicker/time.mjs +8 -8
  86. package/esm2022/components/material-datetimepicker/year-view.mjs +3 -3
  87. package/esm2022/components/navigation/horizontal/components/basic/basic.component.mjs +5 -5
  88. package/esm2022/components/navigation/horizontal/components/branch/branch.component.mjs +3 -3
  89. package/esm2022/components/navigation/horizontal/components/divider/divider.component.mjs +3 -3
  90. package/esm2022/components/navigation/horizontal/components/spacer/spacer.component.mjs +3 -3
  91. package/esm2022/components/navigation/horizontal/horizontal.component.mjs +4 -4
  92. package/esm2022/components/navigation/navigation.service.mjs +3 -3
  93. package/esm2022/components/navigation/vertical/components/aside/aside.component.mjs +3 -3
  94. package/esm2022/components/navigation/vertical/components/basic/basic.component.mjs +5 -5
  95. package/esm2022/components/navigation/vertical/components/collapsable/collapsable.component.mjs +5 -5
  96. package/esm2022/components/navigation/vertical/components/divider/divider.component.mjs +3 -3
  97. package/esm2022/components/navigation/vertical/components/group/group.component.mjs +3 -3
  98. package/esm2022/components/navigation/vertical/components/spacer/spacer.component.mjs +3 -3
  99. package/esm2022/components/navigation/vertical/vertical.component.mjs +4 -4
  100. package/esm2022/components/pagination/pagination.component.mjs +5 -5
  101. package/esm2022/components/pagination/pagination.directive.mjs +3 -3
  102. package/esm2022/components/pagination/pagination.pipe.mjs +3 -3
  103. package/esm2022/components/pagination/pagination.service.mjs +3 -3
  104. package/esm2022/components/password-strength/mat-pass-toggle-visibility/mat-pass-toggle-visibility.component.mjs +5 -5
  105. package/esm2022/components/password-strength/mat-password-strength/mat-password-strength.component.mjs +3 -3
  106. package/esm2022/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.mjs +5 -5
  107. package/esm2022/components/popover/popover-trigger.mjs +3 -3
  108. package/esm2022/components/popover/popover.component.mjs +3 -3
  109. package/esm2022/components/popover/popover.target.mjs +3 -3
  110. package/esm2022/components/progress-bar/progress-bar.component.mjs +5 -5
  111. package/esm2022/components/rating/rating.component.mjs +5 -5
  112. package/esm2022/components/select-search/select-no-entries-found.directive.mjs +3 -3
  113. package/esm2022/components/select-search/select-search-clear.directive.mjs +4 -4
  114. package/esm2022/components/select-search/select-search.component.mjs +6 -6
  115. package/esm2022/components/select-tree/select-tree.component.mjs +6 -6
  116. package/esm2022/components/timeline/timeline-item/timeline-item.component.mjs +11 -11
  117. package/esm2022/components/timeline/timeline.component.mjs +4 -4
  118. package/esm2022/components/toast/toast-modal.component.mjs +5 -5
  119. package/esm2022/components/toast/toast.component.mjs +3 -3
  120. package/esm2022/components/toast/toast.service.mjs +3 -3
  121. package/esm2022/components/transfer-picker/filter/filter.component.mjs +5 -5
  122. package/esm2022/components/transfer-picker/search/search.component.mjs +5 -5
  123. package/esm2022/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.mjs +5 -5
  124. package/esm2022/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.mjs +5 -5
  125. package/esm2022/components/transfer-picker/transfer-picker.component.mjs +5 -5
  126. package/esm2022/components/transfer-picker/transfer-picker.service.mjs +4 -4
  127. package/esm2022/components/upload/files.util.service.mjs +3 -3
  128. package/esm2022/components/upload/upload-queue/upload-queue.component.mjs +13 -12
  129. package/esm2022/components/upload/upload.component.mjs +3 -3
  130. package/esm2022/directives/animate-on-scroll/animate-on-scroll.directive.mjs +3 -3
  131. package/esm2022/directives/animate-on-scroll/scroll.service.mjs +3 -3
  132. package/esm2022/directives/autofocus/autofocus.directive.mjs +3 -3
  133. package/esm2022/directives/debounce/abstract-debounce.directive.mjs +3 -3
  134. package/esm2022/directives/debounce/debounce-click.directive.mjs +3 -3
  135. package/esm2022/directives/debounce/debounce-keyup.directive.mjs +3 -3
  136. package/esm2022/directives/digit-only/digit-only.directive.mjs +10 -10
  137. package/esm2022/directives/digit-only/mask.directive.mjs +5 -5
  138. package/esm2022/directives/equal-validator/equal-validator.directive.mjs +3 -3
  139. package/esm2022/lib/mock-api/mock-api.interceptor.mjs +3 -3
  140. package/esm2022/lib/mock-api/mock-api.service.mjs +3 -3
  141. package/esm2022/pipes/bytes/bytes.pipe.mjs +3 -3
  142. package/esm2022/pipes/date-format/date-format.pipe.mjs +7 -5
  143. package/esm2022/pipes/find-by-key/find-by-key.pipe.mjs +3 -3
  144. package/esm2022/pipes/group-by/group-by.pipe.mjs +3 -3
  145. package/esm2022/pipes/keys/keys.pipe.mjs +3 -3
  146. package/esm2022/pipes/secure/secure-pipe.mjs +3 -3
  147. package/esm2022/pipes/uppercase/uppercase.pipe.mjs +3 -3
  148. package/esm2022/services/alert/alert.service.mjs +3 -3
  149. package/esm2022/services/config/config.service.mjs +3 -3
  150. package/esm2022/services/config/urlStateConfig.service.mjs +3 -3
  151. package/esm2022/services/confirmation/confirmation.service.mjs +3 -3
  152. package/esm2022/services/confirmation/dialog/dialog.component.mjs +5 -5
  153. package/esm2022/services/data/data.service.mjs +3 -3
  154. package/esm2022/services/loading/loading.interceptor.mjs +5 -5
  155. package/esm2022/services/loading/loading.service.mjs +3 -3
  156. package/esm2022/services/local-storage/local-storage.service.mjs +3 -3
  157. package/esm2022/services/media-watcher/media-watcher.service.mjs +3 -3
  158. package/esm2022/services/platform/platform.service.mjs +3 -3
  159. package/esm2022/services/splash-screen/splash-screen.service.mjs +3 -3
  160. package/esm2022/services/title/title.service.mjs +3 -3
  161. package/esm2022/services/translation/translation.service.mjs +5 -5
  162. package/esm2022/services/utils/utils.service.mjs +8 -7
  163. package/fesm2022/cmat-animations.mjs.map +1 -1
  164. package/fesm2022/cmat-components-adapter.mjs +9 -9
  165. package/fesm2022/cmat-components-breadcrumb.mjs +10 -10
  166. package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
  167. package/fesm2022/cmat-components-card.mjs +4 -4
  168. package/fesm2022/cmat-components-card.mjs.map +1 -1
  169. package/fesm2022/cmat-components-cascade.mjs +13 -13
  170. package/fesm2022/cmat-components-cascade.mjs.map +1 -1
  171. package/fesm2022/cmat-components-chip-input.mjs +5 -6
  172. package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
  173. package/fesm2022/cmat-components-custom-formly.mjs +235 -142
  174. package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
  175. package/fesm2022/cmat-components-date-range.mjs +5 -5
  176. package/fesm2022/cmat-components-date-range.mjs.map +1 -1
  177. package/fesm2022/cmat-components-drawer.mjs +6 -6
  178. package/fesm2022/cmat-components-fullscreen.mjs +3 -3
  179. package/fesm2022/cmat-components-highlight.mjs +6 -6
  180. package/fesm2022/cmat-components-json-editor.mjs +5 -5
  181. package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
  182. package/fesm2022/cmat-components-masonry.mjs +3 -3
  183. package/fesm2022/cmat-components-material-color-picker.mjs +4 -4
  184. package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
  185. package/fesm2022/cmat-components-material-datetimepicker.mjs +55 -52
  186. package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
  187. package/fesm2022/cmat-components-navigation.mjs +42 -42
  188. package/fesm2022/cmat-components-navigation.mjs.map +1 -1
  189. package/fesm2022/cmat-components-pagination.mjs +13 -13
  190. package/fesm2022/cmat-components-pagination.mjs.map +1 -1
  191. package/fesm2022/cmat-components-password-strength.mjs +11 -11
  192. package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
  193. package/fesm2022/cmat-components-popover.mjs +9 -9
  194. package/fesm2022/cmat-components-progress-bar.mjs +4 -4
  195. package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
  196. package/fesm2022/cmat-components-rating.mjs +4 -4
  197. package/fesm2022/cmat-components-rating.mjs.map +1 -1
  198. package/fesm2022/cmat-components-select-search.mjs +11 -11
  199. package/fesm2022/cmat-components-select-search.mjs.map +1 -1
  200. package/fesm2022/cmat-components-select-tree.mjs +5 -5
  201. package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
  202. package/fesm2022/cmat-components-timeline.mjs +13 -13
  203. package/fesm2022/cmat-components-timeline.mjs.map +1 -1
  204. package/fesm2022/cmat-components-toast.mjs +10 -10
  205. package/fesm2022/cmat-components-toast.mjs.map +1 -1
  206. package/fesm2022/cmat-components-transfer-picker.mjs +23 -23
  207. package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
  208. package/fesm2022/cmat-components-upload.mjs +18 -17
  209. package/fesm2022/cmat-components-upload.mjs.map +1 -1
  210. package/fesm2022/cmat-directives-animate-on-scroll.mjs +6 -6
  211. package/fesm2022/cmat-directives-autofocus.mjs +3 -3
  212. package/fesm2022/cmat-directives-debounce.mjs +9 -9
  213. package/fesm2022/cmat-directives-digit-only.mjs +13 -13
  214. package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
  215. package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
  216. package/fesm2022/cmat-lib-mock-api.mjs +6 -6
  217. package/fesm2022/cmat-pipes-bytes.mjs +3 -3
  218. package/fesm2022/cmat-pipes-date-format.mjs +6 -4
  219. package/fesm2022/cmat-pipes-date-format.mjs.map +1 -1
  220. package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
  221. package/fesm2022/cmat-pipes-group-by.mjs +3 -3
  222. package/fesm2022/cmat-pipes-keys.mjs +3 -3
  223. package/fesm2022/cmat-pipes-secure.mjs +3 -3
  224. package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
  225. package/fesm2022/cmat-services-alert.mjs +3 -3
  226. package/fesm2022/cmat-services-config.mjs +6 -6
  227. package/fesm2022/cmat-services-confirmation.mjs +7 -7
  228. package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
  229. package/fesm2022/cmat-services-data.mjs +3 -3
  230. package/fesm2022/cmat-services-loading.mjs +7 -7
  231. package/fesm2022/cmat-services-loading.mjs.map +1 -1
  232. package/fesm2022/cmat-services-local-storage.mjs +3 -3
  233. package/fesm2022/cmat-services-media-watcher.mjs +3 -3
  234. package/fesm2022/cmat-services-platform.mjs +3 -3
  235. package/fesm2022/cmat-services-splash-screen.mjs +3 -3
  236. package/fesm2022/cmat-services-title.mjs +3 -3
  237. package/fesm2022/cmat-services-translation.mjs +4 -4
  238. package/fesm2022/cmat-services-translation.mjs.map +1 -1
  239. package/fesm2022/cmat-services-utils.mjs +7 -6
  240. package/fesm2022/cmat-services-utils.mjs.map +1 -1
  241. package/icons/material-icons/material-solid.svg +3585 -3585
  242. package/package.json +49 -49
  243. package/pipes/date-format/date-format.pipe.d.ts +1 -1
  244. package/styles/overrides/angular-material.scss +6 -0
@@ -511,16 +511,16 @@ class CmatDateRangeComponent {
511
511
  // If meridiem doesn't exist, create a moment using 24-hours format and return in
512
512
  return dayjs(value, 'HH:mm').second(0);
513
513
  }
514
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatDateRangeComponent, deps: [{ token: i1.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
515
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: CmatDateRangeComponent, isStandalone: true, selector: "cmat-date-range", inputs: { readonly: "readonly", dateFormat: "dateFormat", timeFormat: "timeFormat", timeRange: "timeRange", range: "range" }, outputs: { rangeChanged: "rangeChanged" }, providers: [
514
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatDateRangeComponent, deps: [{ token: i1.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
515
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: CmatDateRangeComponent, isStandalone: true, selector: "cmat-date-range", inputs: { readonly: "readonly", dateFormat: "dateFormat", timeFormat: "timeFormat", timeRange: "timeRange", range: "range" }, outputs: { rangeChanged: "rangeChanged" }, providers: [
516
516
  {
517
517
  provide: NG_VALUE_ACCESSOR,
518
518
  useExisting: forwardRef(() => CmatDateRangeComponent),
519
519
  multi: true
520
520
  }
521
- ], viewQueries: [{ propertyName: "_matMonthView1", first: true, predicate: ["matMonthView1"], descendants: true }, { propertyName: "_matMonthView2", first: true, predicate: ["matMonthView2"], descendants: true }, { propertyName: "_pickerPanelOrigin", first: true, predicate: ["pickerPanelOrigin"], descendants: true, read: ElementRef }, { propertyName: "_pickerPanel", first: true, predicate: ["pickerPanel"], descendants: true }], exportAs: ["cmatDateRange"], ngImport: i0, template: "<div #pickerPanelOrigin role=\"presentation\" class=\"range\" (click)=\"openPickerPanel()\">\n\n <div class=\"start\">\n <div class=\"date\">{{range.startDate}}</div>\n @if (range.startTime) {\n <div class=\"time\">{{range.startTime}}</div>\n }\n </div>\n\n <div class=\"separator\">-</div>\n\n <div class=\"end\">\n <div class=\"date\">{{range.endDate}}</div>\n @if (range.endTime) {\n <div class=\"time\">{{range.endTime}}</div>\n }\n </div>\n\n</div>\n\n<ng-template #pickerPanel>\n\n <!-- Start -->\n <div class=\"start\">\n\n <div class=\"month\">\n <div class=\"month-header\">\n <button type=\"button\" class=\"previous-button\" mat-icon-button tabindex=\"1\" (click)=\"prev()\">\n <mat-icon [svgIcon]=\"'heroicons_outline:chevron-left'\"></mat-icon>\n </button>\n <div class=\"month-label\">{{getMonthLabel(1)}}</div>\n </div>\n <mat-month-view #matMonthView1 [dateFilter]=\"dateFilter()\" [dateClass]=\"dateClass()\"\n [(activeDate)]=\"activeDates.month1\" (click)=\"$event.stopImmediatePropagation()\"\n (selectedChange)=\"onSelectedDateChange($event)\">\n </mat-month-view>\n </div>\n\n @if (timeRange) {\n <mat-form-field class=\"time start-time\">\n <input matInput tabindex=\"3\" [autocomplete]=\"'off'\" [formControl]=\"startTimeFormControl\"\n (blur)=\"updateStartTime($event)\">\n <mat-label>\u5F00\u59CB\u65F6\u95F4</mat-label>\n </mat-form-field>\n }\n\n </div>\n\n <!-- End -->\n <div class=\"end\">\n\n <div class=\"month\">\n <div class=\"month-header\">\n <div class=\"month-label\">{{getMonthLabel(2)}}</div>\n <button type=\"button\" class=\"next-button\" mat-icon-button tabindex=\"2\" (click)=\"next()\">\n <mat-icon [svgIcon]=\"'heroicons_outline:chevron-right'\"></mat-icon>\n </button>\n </div>\n <mat-month-view #matMonthView2 [dateFilter]=\"dateFilter()\" [dateClass]=\"dateClass()\"\n [(activeDate)]=\"activeDates.month2\" (click)=\"$event.stopImmediatePropagation()\"\n (selectedChange)=\"onSelectedDateChange($event)\">\n </mat-month-view>\n </div>\n\n @if (timeRange) {\n <mat-form-field class=\"time end-time\">\n <input matInput tabindex=\"4\" [formControl]=\"endTimeFormControl\" (blur)=\"updateEndTime($event)\">\n <mat-label>\u7ED3\u675F\u65F6\u95F4</mat-label>\n </mat-form-field>\n }\n\n </div>\n\n </ng-template>", styles: ["cmat-date-range{display:flex}cmat-date-range .range{display:flex;width:100%;align-items:center;height:48px;min-height:48px;max-height:48px;cursor:pointer}cmat-date-range .range .start,cmat-date-range .range .end{display:flex;align-items:center;height:100%;padding:0 16px;border-radius:6px;border-width:1px;line-height:1}cmat-date-range .range .date{white-space:nowrap}cmat-date-range .range .date+.time{margin-left:8px}cmat-date-range .range .time{white-space:nowrap}cmat-date-range .separator{margin:0 8px}.cmat-date-range-panel{border-radius:4px;padding:24px}.cmat-date-range-panel .start,.cmat-date-range-panel .end{display:flex;flex-direction:column}.cmat-date-range-panel .start .month,.cmat-date-range-panel .end .month{max-width:196px;min-width:196px;width:196px}.cmat-date-range-panel .start .month .month-header,.cmat-date-range-panel .end .month .month-header{position:relative;display:flex;align-items:center;justify-content:center;height:32px;margin-bottom:16px}.cmat-date-range-panel .start .month .month-header .previous-button,.cmat-date-range-panel .start .month .month-header .next-button,.cmat-date-range-panel .end .month .month-header .previous-button,.cmat-date-range-panel .end .month .month-header .next-button{position:absolute;width:24px!important;height:24px!important;min-height:24px!important;max-height:24px!important;line-height:24px!important}.cmat-date-range-panel .start .month .month-header .previous-button,.cmat-date-range-panel .end .month .month-header .previous-button{left:0}.cmat-date-range-panel .start .month .month-header .next-button,.cmat-date-range-panel .end .month .month-header .next-button{right:0}.cmat-date-range-panel .start .month .month-header .month-label,.cmat-date-range-panel .end .month .month-header .month-label{font-weight:500}.cmat-date-range-panel .start .month mat-month-view,.cmat-date-range-panel .end .month mat-month-view{display:flex;min-height:188px}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table{width:100%;border-collapse:collapse}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody tr[aria-hidden=true],.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody tr[aria-hidden=true]{display:none!important}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody tr:first-child td:first-child[aria-hidden=true],.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody tr:first-child td:first-child[aria-hidden=true]{visibility:hidden;pointer-events:none;opacity:0}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody tr td .mat-calendar-body-cell-content,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody tr td .mat-calendar-body-cell-content{background-color:transparent!important}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-today,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-today{border:none!important}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell{width:28px!important;height:28px!important;padding:2px!important}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range:before,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range:before{content:\"\";position:absolute;inset:2px 0}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-start:before,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-start:before{border-radius:999px 0 0 999px}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-start.cmat-date-range-end:before,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-start.cmat-date-range-end:before{right:2px;border-radius:999px}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-end:before,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-end:before{border-radius:0 999px 999px 0}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell .mat-calendar-body-cell-content,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell .mat-calendar-body-cell-content{position:relative;top:0;left:0;width:24px;height:24px;font-size:12px}.cmat-date-range-panel .time{width:100%;max-width:196px}.cmat-date-range-panel .start{align-items:flex-start;margin-right:20px}.cmat-date-range-panel .start .month .month-label{margin-left:8px}.cmat-date-range-panel .end{align-items:flex-end;margin-left:20px}.cmat-date-range-panel .end .month .month-label{margin-right:8px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i5.MatMonthView, selector: "mat-month-view", inputs: ["activeDate", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName", "activeDrag"], outputs: ["selectedChange", "_userSelection", "dragStarted", "dragEnded", "activeDateChange"], exportAs: ["matMonthView"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
521
+ ], viewQueries: [{ propertyName: "_matMonthView1", first: true, predicate: ["matMonthView1"], descendants: true }, { propertyName: "_matMonthView2", first: true, predicate: ["matMonthView2"], descendants: true }, { propertyName: "_pickerPanelOrigin", first: true, predicate: ["pickerPanelOrigin"], descendants: true, read: ElementRef }, { propertyName: "_pickerPanel", first: true, predicate: ["pickerPanel"], descendants: true }], exportAs: ["cmatDateRange"], ngImport: i0, template: "<div #pickerPanelOrigin role=\"presentation\" class=\"range\" (click)=\"openPickerPanel()\">\r\n\r\n <div class=\"start\">\r\n <div class=\"date\">{{range.startDate}}</div>\r\n @if (range.startTime) {\r\n <div class=\"time\">{{range.startTime}}</div>\r\n }\r\n </div>\r\n\r\n <div class=\"separator\">-</div>\r\n\r\n <div class=\"end\">\r\n <div class=\"date\">{{range.endDate}}</div>\r\n @if (range.endTime) {\r\n <div class=\"time\">{{range.endTime}}</div>\r\n }\r\n </div>\r\n\r\n</div>\r\n\r\n<ng-template #pickerPanel>\r\n\r\n <!-- Start -->\r\n <div class=\"start\">\r\n\r\n <div class=\"month\">\r\n <div class=\"month-header\">\r\n <button type=\"button\" class=\"previous-button\" mat-icon-button tabindex=\"1\" (click)=\"prev()\">\r\n <mat-icon [svgIcon]=\"'heroicons_outline:chevron-left'\"></mat-icon>\r\n </button>\r\n <div class=\"month-label\">{{getMonthLabel(1)}}</div>\r\n </div>\r\n <mat-month-view #matMonthView1 [dateFilter]=\"dateFilter()\" [dateClass]=\"dateClass()\"\r\n [(activeDate)]=\"activeDates.month1\" (click)=\"$event.stopImmediatePropagation()\"\r\n (selectedChange)=\"onSelectedDateChange($event)\">\r\n </mat-month-view>\r\n </div>\r\n\r\n @if (timeRange) {\r\n <mat-form-field class=\"time start-time\">\r\n <input matInput tabindex=\"3\" [autocomplete]=\"'off'\" [formControl]=\"startTimeFormControl\"\r\n (blur)=\"updateStartTime($event)\">\r\n <mat-label>\u5F00\u59CB\u65F6\u95F4</mat-label>\r\n </mat-form-field>\r\n }\r\n\r\n </div>\r\n\r\n <!-- End -->\r\n <div class=\"end\">\r\n\r\n <div class=\"month\">\r\n <div class=\"month-header\">\r\n <div class=\"month-label\">{{getMonthLabel(2)}}</div>\r\n <button type=\"button\" class=\"next-button\" mat-icon-button tabindex=\"2\" (click)=\"next()\">\r\n <mat-icon [svgIcon]=\"'heroicons_outline:chevron-right'\"></mat-icon>\r\n </button>\r\n </div>\r\n <mat-month-view #matMonthView2 [dateFilter]=\"dateFilter()\" [dateClass]=\"dateClass()\"\r\n [(activeDate)]=\"activeDates.month2\" (click)=\"$event.stopImmediatePropagation()\"\r\n (selectedChange)=\"onSelectedDateChange($event)\">\r\n </mat-month-view>\r\n </div>\r\n\r\n @if (timeRange) {\r\n <mat-form-field class=\"time end-time\">\r\n <input matInput tabindex=\"4\" [formControl]=\"endTimeFormControl\" (blur)=\"updateEndTime($event)\">\r\n <mat-label>\u7ED3\u675F\u65F6\u95F4</mat-label>\r\n </mat-form-field>\r\n }\r\n\r\n </div>\r\n\r\n </ng-template>", styles: ["cmat-date-range{display:flex}cmat-date-range .range{display:flex;width:100%;align-items:center;height:48px;min-height:48px;max-height:48px;cursor:pointer}cmat-date-range .range .start,cmat-date-range .range .end{display:flex;align-items:center;height:100%;padding:0 16px;border-radius:6px;border-width:1px;line-height:1}cmat-date-range .range .date{white-space:nowrap}cmat-date-range .range .date+.time{margin-left:8px}cmat-date-range .range .time{white-space:nowrap}cmat-date-range .separator{margin:0 8px}.cmat-date-range-panel{border-radius:4px;padding:24px}.cmat-date-range-panel .start,.cmat-date-range-panel .end{display:flex;flex-direction:column}.cmat-date-range-panel .start .month,.cmat-date-range-panel .end .month{max-width:196px;min-width:196px;width:196px}.cmat-date-range-panel .start .month .month-header,.cmat-date-range-panel .end .month .month-header{position:relative;display:flex;align-items:center;justify-content:center;height:32px;margin-bottom:16px}.cmat-date-range-panel .start .month .month-header .previous-button,.cmat-date-range-panel .start .month .month-header .next-button,.cmat-date-range-panel .end .month .month-header .previous-button,.cmat-date-range-panel .end .month .month-header .next-button{position:absolute;width:24px!important;height:24px!important;min-height:24px!important;max-height:24px!important;line-height:24px!important}.cmat-date-range-panel .start .month .month-header .previous-button,.cmat-date-range-panel .end .month .month-header .previous-button{left:0}.cmat-date-range-panel .start .month .month-header .next-button,.cmat-date-range-panel .end .month .month-header .next-button{right:0}.cmat-date-range-panel .start .month .month-header .month-label,.cmat-date-range-panel .end .month .month-header .month-label{font-weight:500}.cmat-date-range-panel .start .month mat-month-view,.cmat-date-range-panel .end .month mat-month-view{display:flex;min-height:188px}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table{width:100%;border-collapse:collapse}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody tr[aria-hidden=true],.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody tr[aria-hidden=true]{display:none!important}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody tr:first-child td:first-child[aria-hidden=true],.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody tr:first-child td:first-child[aria-hidden=true]{visibility:hidden;pointer-events:none;opacity:0}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody tr td .mat-calendar-body-cell-content,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody tr td .mat-calendar-body-cell-content{background-color:transparent!important}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-today,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-today{border:none!important}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell{width:28px!important;height:28px!important;padding:2px!important}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range:before,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range:before{content:\"\";position:absolute;inset:2px 0}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-start:before,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-start:before{border-radius:999px 0 0 999px}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-start.cmat-date-range-end:before,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-start.cmat-date-range-end:before{right:2px;border-radius:999px}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-end:before,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-end:before{border-radius:0 999px 999px 0}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell .mat-calendar-body-cell-content,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell .mat-calendar-body-cell-content{position:relative;top:0;left:0;width:24px;height:24px;font-size:12px}.cmat-date-range-panel .time{width:100%;max-width:196px}.cmat-date-range-panel .start{align-items:flex-start;margin-right:20px}.cmat-date-range-panel .start .month .month-label{margin-left:8px}.cmat-date-range-panel .end{align-items:flex-end;margin-left:20px}.cmat-date-range-panel .end .month .month-label{margin-right:8px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i5.MatMonthView, selector: "mat-month-view", inputs: ["activeDate", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName", "activeDrag"], outputs: ["selectedChange", "_userSelection", "dragStarted", "dragEnded", "activeDateChange"], exportAs: ["matMonthView"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
522
522
  }
523
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatDateRangeComponent, decorators: [{
523
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatDateRangeComponent, decorators: [{
524
524
  type: Component,
525
525
  args: [{ selector: 'cmat-date-range', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatDateRange', providers: [
526
526
  {
@@ -530,7 +530,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
530
530
  }
531
531
  ], standalone: true, imports: [FormsModule, ReactiveFormsModule, MatButtonModule, MatIconModule,
532
532
  MatDatepickerModule, MatFormFieldModule,
533
- MatInputModule], template: "<div #pickerPanelOrigin role=\"presentation\" class=\"range\" (click)=\"openPickerPanel()\">\n\n <div class=\"start\">\n <div class=\"date\">{{range.startDate}}</div>\n @if (range.startTime) {\n <div class=\"time\">{{range.startTime}}</div>\n }\n </div>\n\n <div class=\"separator\">-</div>\n\n <div class=\"end\">\n <div class=\"date\">{{range.endDate}}</div>\n @if (range.endTime) {\n <div class=\"time\">{{range.endTime}}</div>\n }\n </div>\n\n</div>\n\n<ng-template #pickerPanel>\n\n <!-- Start -->\n <div class=\"start\">\n\n <div class=\"month\">\n <div class=\"month-header\">\n <button type=\"button\" class=\"previous-button\" mat-icon-button tabindex=\"1\" (click)=\"prev()\">\n <mat-icon [svgIcon]=\"'heroicons_outline:chevron-left'\"></mat-icon>\n </button>\n <div class=\"month-label\">{{getMonthLabel(1)}}</div>\n </div>\n <mat-month-view #matMonthView1 [dateFilter]=\"dateFilter()\" [dateClass]=\"dateClass()\"\n [(activeDate)]=\"activeDates.month1\" (click)=\"$event.stopImmediatePropagation()\"\n (selectedChange)=\"onSelectedDateChange($event)\">\n </mat-month-view>\n </div>\n\n @if (timeRange) {\n <mat-form-field class=\"time start-time\">\n <input matInput tabindex=\"3\" [autocomplete]=\"'off'\" [formControl]=\"startTimeFormControl\"\n (blur)=\"updateStartTime($event)\">\n <mat-label>\u5F00\u59CB\u65F6\u95F4</mat-label>\n </mat-form-field>\n }\n\n </div>\n\n <!-- End -->\n <div class=\"end\">\n\n <div class=\"month\">\n <div class=\"month-header\">\n <div class=\"month-label\">{{getMonthLabel(2)}}</div>\n <button type=\"button\" class=\"next-button\" mat-icon-button tabindex=\"2\" (click)=\"next()\">\n <mat-icon [svgIcon]=\"'heroicons_outline:chevron-right'\"></mat-icon>\n </button>\n </div>\n <mat-month-view #matMonthView2 [dateFilter]=\"dateFilter()\" [dateClass]=\"dateClass()\"\n [(activeDate)]=\"activeDates.month2\" (click)=\"$event.stopImmediatePropagation()\"\n (selectedChange)=\"onSelectedDateChange($event)\">\n </mat-month-view>\n </div>\n\n @if (timeRange) {\n <mat-form-field class=\"time end-time\">\n <input matInput tabindex=\"4\" [formControl]=\"endTimeFormControl\" (blur)=\"updateEndTime($event)\">\n <mat-label>\u7ED3\u675F\u65F6\u95F4</mat-label>\n </mat-form-field>\n }\n\n </div>\n\n </ng-template>", styles: ["cmat-date-range{display:flex}cmat-date-range .range{display:flex;width:100%;align-items:center;height:48px;min-height:48px;max-height:48px;cursor:pointer}cmat-date-range .range .start,cmat-date-range .range .end{display:flex;align-items:center;height:100%;padding:0 16px;border-radius:6px;border-width:1px;line-height:1}cmat-date-range .range .date{white-space:nowrap}cmat-date-range .range .date+.time{margin-left:8px}cmat-date-range .range .time{white-space:nowrap}cmat-date-range .separator{margin:0 8px}.cmat-date-range-panel{border-radius:4px;padding:24px}.cmat-date-range-panel .start,.cmat-date-range-panel .end{display:flex;flex-direction:column}.cmat-date-range-panel .start .month,.cmat-date-range-panel .end .month{max-width:196px;min-width:196px;width:196px}.cmat-date-range-panel .start .month .month-header,.cmat-date-range-panel .end .month .month-header{position:relative;display:flex;align-items:center;justify-content:center;height:32px;margin-bottom:16px}.cmat-date-range-panel .start .month .month-header .previous-button,.cmat-date-range-panel .start .month .month-header .next-button,.cmat-date-range-panel .end .month .month-header .previous-button,.cmat-date-range-panel .end .month .month-header .next-button{position:absolute;width:24px!important;height:24px!important;min-height:24px!important;max-height:24px!important;line-height:24px!important}.cmat-date-range-panel .start .month .month-header .previous-button,.cmat-date-range-panel .end .month .month-header .previous-button{left:0}.cmat-date-range-panel .start .month .month-header .next-button,.cmat-date-range-panel .end .month .month-header .next-button{right:0}.cmat-date-range-panel .start .month .month-header .month-label,.cmat-date-range-panel .end .month .month-header .month-label{font-weight:500}.cmat-date-range-panel .start .month mat-month-view,.cmat-date-range-panel .end .month mat-month-view{display:flex;min-height:188px}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table{width:100%;border-collapse:collapse}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody tr[aria-hidden=true],.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody tr[aria-hidden=true]{display:none!important}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody tr:first-child td:first-child[aria-hidden=true],.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody tr:first-child td:first-child[aria-hidden=true]{visibility:hidden;pointer-events:none;opacity:0}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody tr td .mat-calendar-body-cell-content,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody tr td .mat-calendar-body-cell-content{background-color:transparent!important}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-today,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-today{border:none!important}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell{width:28px!important;height:28px!important;padding:2px!important}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range:before,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range:before{content:\"\";position:absolute;inset:2px 0}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-start:before,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-start:before{border-radius:999px 0 0 999px}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-start.cmat-date-range-end:before,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-start.cmat-date-range-end:before{right:2px;border-radius:999px}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-end:before,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-end:before{border-radius:0 999px 999px 0}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell .mat-calendar-body-cell-content,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell .mat-calendar-body-cell-content{position:relative;top:0;left:0;width:24px;height:24px;font-size:12px}.cmat-date-range-panel .time{width:100%;max-width:196px}.cmat-date-range-panel .start{align-items:flex-start;margin-right:20px}.cmat-date-range-panel .start .month .month-label{margin-left:8px}.cmat-date-range-panel .end{align-items:flex-end;margin-left:20px}.cmat-date-range-panel .end .month .month-label{margin-right:8px}\n"] }]
533
+ MatInputModule], template: "<div #pickerPanelOrigin role=\"presentation\" class=\"range\" (click)=\"openPickerPanel()\">\r\n\r\n <div class=\"start\">\r\n <div class=\"date\">{{range.startDate}}</div>\r\n @if (range.startTime) {\r\n <div class=\"time\">{{range.startTime}}</div>\r\n }\r\n </div>\r\n\r\n <div class=\"separator\">-</div>\r\n\r\n <div class=\"end\">\r\n <div class=\"date\">{{range.endDate}}</div>\r\n @if (range.endTime) {\r\n <div class=\"time\">{{range.endTime}}</div>\r\n }\r\n </div>\r\n\r\n</div>\r\n\r\n<ng-template #pickerPanel>\r\n\r\n <!-- Start -->\r\n <div class=\"start\">\r\n\r\n <div class=\"month\">\r\n <div class=\"month-header\">\r\n <button type=\"button\" class=\"previous-button\" mat-icon-button tabindex=\"1\" (click)=\"prev()\">\r\n <mat-icon [svgIcon]=\"'heroicons_outline:chevron-left'\"></mat-icon>\r\n </button>\r\n <div class=\"month-label\">{{getMonthLabel(1)}}</div>\r\n </div>\r\n <mat-month-view #matMonthView1 [dateFilter]=\"dateFilter()\" [dateClass]=\"dateClass()\"\r\n [(activeDate)]=\"activeDates.month1\" (click)=\"$event.stopImmediatePropagation()\"\r\n (selectedChange)=\"onSelectedDateChange($event)\">\r\n </mat-month-view>\r\n </div>\r\n\r\n @if (timeRange) {\r\n <mat-form-field class=\"time start-time\">\r\n <input matInput tabindex=\"3\" [autocomplete]=\"'off'\" [formControl]=\"startTimeFormControl\"\r\n (blur)=\"updateStartTime($event)\">\r\n <mat-label>\u5F00\u59CB\u65F6\u95F4</mat-label>\r\n </mat-form-field>\r\n }\r\n\r\n </div>\r\n\r\n <!-- End -->\r\n <div class=\"end\">\r\n\r\n <div class=\"month\">\r\n <div class=\"month-header\">\r\n <div class=\"month-label\">{{getMonthLabel(2)}}</div>\r\n <button type=\"button\" class=\"next-button\" mat-icon-button tabindex=\"2\" (click)=\"next()\">\r\n <mat-icon [svgIcon]=\"'heroicons_outline:chevron-right'\"></mat-icon>\r\n </button>\r\n </div>\r\n <mat-month-view #matMonthView2 [dateFilter]=\"dateFilter()\" [dateClass]=\"dateClass()\"\r\n [(activeDate)]=\"activeDates.month2\" (click)=\"$event.stopImmediatePropagation()\"\r\n (selectedChange)=\"onSelectedDateChange($event)\">\r\n </mat-month-view>\r\n </div>\r\n\r\n @if (timeRange) {\r\n <mat-form-field class=\"time end-time\">\r\n <input matInput tabindex=\"4\" [formControl]=\"endTimeFormControl\" (blur)=\"updateEndTime($event)\">\r\n <mat-label>\u7ED3\u675F\u65F6\u95F4</mat-label>\r\n </mat-form-field>\r\n }\r\n\r\n </div>\r\n\r\n </ng-template>", styles: ["cmat-date-range{display:flex}cmat-date-range .range{display:flex;width:100%;align-items:center;height:48px;min-height:48px;max-height:48px;cursor:pointer}cmat-date-range .range .start,cmat-date-range .range .end{display:flex;align-items:center;height:100%;padding:0 16px;border-radius:6px;border-width:1px;line-height:1}cmat-date-range .range .date{white-space:nowrap}cmat-date-range .range .date+.time{margin-left:8px}cmat-date-range .range .time{white-space:nowrap}cmat-date-range .separator{margin:0 8px}.cmat-date-range-panel{border-radius:4px;padding:24px}.cmat-date-range-panel .start,.cmat-date-range-panel .end{display:flex;flex-direction:column}.cmat-date-range-panel .start .month,.cmat-date-range-panel .end .month{max-width:196px;min-width:196px;width:196px}.cmat-date-range-panel .start .month .month-header,.cmat-date-range-panel .end .month .month-header{position:relative;display:flex;align-items:center;justify-content:center;height:32px;margin-bottom:16px}.cmat-date-range-panel .start .month .month-header .previous-button,.cmat-date-range-panel .start .month .month-header .next-button,.cmat-date-range-panel .end .month .month-header .previous-button,.cmat-date-range-panel .end .month .month-header .next-button{position:absolute;width:24px!important;height:24px!important;min-height:24px!important;max-height:24px!important;line-height:24px!important}.cmat-date-range-panel .start .month .month-header .previous-button,.cmat-date-range-panel .end .month .month-header .previous-button{left:0}.cmat-date-range-panel .start .month .month-header .next-button,.cmat-date-range-panel .end .month .month-header .next-button{right:0}.cmat-date-range-panel .start .month .month-header .month-label,.cmat-date-range-panel .end .month .month-header .month-label{font-weight:500}.cmat-date-range-panel .start .month mat-month-view,.cmat-date-range-panel .end .month mat-month-view{display:flex;min-height:188px}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table{width:100%;border-collapse:collapse}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody tr[aria-hidden=true],.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody tr[aria-hidden=true]{display:none!important}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody tr:first-child td:first-child[aria-hidden=true],.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody tr:first-child td:first-child[aria-hidden=true]{visibility:hidden;pointer-events:none;opacity:0}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody tr td .mat-calendar-body-cell-content,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody tr td .mat-calendar-body-cell-content{background-color:transparent!important}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-today,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-today{border:none!important}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell{width:28px!important;height:28px!important;padding:2px!important}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range:before,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range:before{content:\"\";position:absolute;inset:2px 0}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-start:before,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-start:before{border-radius:999px 0 0 999px}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-start.cmat-date-range-end:before,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-start.cmat-date-range-end:before{right:2px;border-radius:999px}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-end:before,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-end:before{border-radius:0 999px 999px 0}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell .mat-calendar-body-cell-content,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell .mat-calendar-body-cell-content{position:relative;top:0;left:0;width:24px;height:24px;font-size:12px}.cmat-date-range-panel .time{width:100%;max-width:196px}.cmat-date-range-panel .start{align-items:flex-start;margin-right:20px}.cmat-date-range-panel .start .month .month-label{margin-left:8px}.cmat-date-range-panel .end{align-items:flex-end;margin-left:20px}.cmat-date-range-panel .end .month .month-label{margin-right:8px}\n"] }]
534
534
  }], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }], propDecorators: { rangeChanged: [{
535
535
  type: Output
536
536
  }], _matMonthView1: [{
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-components-date-range.mjs","sources":["../../../projects/cmat/components/date-range/date-range.component.ts","../../../projects/cmat/components/date-range/date-range.component.html","../../../projects/cmat/components/date-range/cmat-components-date-range.ts"],"sourcesContent":["import { Overlay } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, OnDestroy, OnInit, Output, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCalendarCellCssClasses, MatMonthView, MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport dayjs, { Dayjs } from 'dayjs';\r\nimport isBetween from 'dayjs/plugin/isBetween';\r\nimport { Subject } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'cmat-date-range',\r\n templateUrl: './date-range.component.html',\r\n styleUrls: ['./date-range.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatDateRange',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CmatDateRangeComponent),\r\n multi: true\r\n }\r\n ],\r\n standalone: true,\r\n imports: [FormsModule, ReactiveFormsModule,MatButtonModule, MatIconModule, \r\n MatDatepickerModule, MatFormFieldModule, \r\n MatInputModule]\r\n})\r\nexport class CmatDateRangeComponent implements ControlValueAccessor,OnInit, OnDestroy {\r\n @Output() readonly rangeChanged: EventEmitter<{ start: string; end: string }> = new EventEmitter<{ start: string; end: string }>();\r\n @ViewChild('matMonthView1') private _matMonthView1: MatMonthView<any>;\r\n @ViewChild('matMonthView2') private _matMonthView2: MatMonthView<any>;\r\n @ViewChild('pickerPanelOrigin', { read: ElementRef }) private _pickerPanelOrigin: ElementRef;\r\n @ViewChild('pickerPanel') private _pickerPanel: TemplateRef<any>;\r\n\r\n activeDates: { month1: Dayjs | null; month2: Dayjs | null } = {\r\n month1: null,\r\n month2: null\r\n };\r\n setWhichDate: 'start' | 'end' = 'start';\r\n startTimeFormControl: FormControl;\r\n endTimeFormControl: FormControl;\r\n private _dateFormat: string;\r\n private _onChange: (value: any) => void;\r\n private _onTouched: (value: any) => void;\r\n private _programmaticChange!: boolean;\r\n private _range: { start: Dayjs | null; end: Dayjs | null } = {\r\n start: null,\r\n end: null\r\n };\r\n private _timeFormat: string;\r\n private _timeRange: boolean;\r\n private _readonly: boolean;\r\n private readonly _timeRegExp: RegExp = new RegExp('^(0[0-9]|1[0-9]|2[0-4]|[0-9]):([0-5][0-9])(A|(?:AM)|P|(?:PM))?$', 'i');\r\n private _unsubscribeAll: Subject<any> = new Subject<any>();\r\n\r\n constructor(\r\n private _overlay: Overlay,\r\n private _viewContainerRef: ViewContainerRef,\r\n private _changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n dayjs.extend(isBetween);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this._onChange = (): void => { };\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this._onTouched = (): void => { };\r\n this.dateFormat = 'YYYY/MM/DD';\r\n this.timeFormat = '12'; \r\n }\r\n\r\n get readonly(): boolean {\r\n return this._readonly;\r\n }\r\n\r\n @Input()\r\n set readonly(value) {\r\n this._readonly = value;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get dateFormat(): string {\r\n return this._dateFormat;\r\n }\r\n @Input()\r\n set dateFormat(value: string) {\r\n // Return if the values are the same\r\n if (this._dateFormat === value) {\r\n return;\r\n }\r\n\r\n // Store the value\r\n this._dateFormat = value;\r\n }\r\n\r\n /**\r\n * Setter & getter for timeFormat input */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get timeFormat(): string {\r\n return this._timeFormat;\r\n }\r\n @Input()\r\n set timeFormat(value: string) {\r\n // Return if the values are the same\r\n if (this._timeFormat === value) {\r\n return;\r\n }\r\n\r\n // Set format based on the time format input\r\n this._timeFormat = value === '12' ? 'hh:mmA' : 'HH:mm';\r\n }\r\n\r\n\r\n\r\n /**\r\n * Setter & getter for timeRange input */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get timeRange(): boolean {\r\n return this._timeRange;\r\n }\r\n @Input()\r\n set timeRange(value: boolean) {\r\n // Return if the values are the same\r\n if (this._timeRange === value) {\r\n return;\r\n }\r\n\r\n // Store the value\r\n this._timeRange = value;\r\n\r\n // If the time range turned off...\r\n if (!value && this._range.start && this._range.end) {\r\n this.range = {\r\n start: this._range.start.clone().startOf('day'),\r\n end: this._range.end.clone().endOf('day')\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Setter & getter for range input */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get range(): any {\r\n if (this._range.start && this._range.end) {\r\n // Clone the range start and end\r\n const start = this._range.start.clone();\r\n const end = this._range.end.clone();\r\n\r\n // Build and return the range object\r\n return {\r\n startDate: start.clone().format(this.dateFormat),\r\n startTime: this.timeRange ? start.clone().format(this.timeFormat) : null,\r\n endDate: end.clone().format(this.dateFormat),\r\n endTime: this.timeRange ? end.clone().format(this.timeFormat) : null\r\n };\r\n }\r\n\r\n return void 0;\r\n }\r\n\r\n @Input()\r\n set range(value) {\r\n if (!value) {\r\n return;\r\n }\r\n\r\n // Check if the value is an object and has 'start' and 'end' values\r\n if (!value.start || !value.end) {\r\n console.error('Range input must have \"start\" and \"end\" properties!');\r\n\r\n return;\r\n }\r\n\r\n // Check if we are setting an individual date or both of them\r\n const whichDate = value.whichDate || null;\r\n\r\n // Get the start and end dates as moment\r\n const start = dayjs(value.start);\r\n const end = dayjs(value.end);\r\n\r\n // If we are only setting the start date...\r\n if (whichDate === 'start') {\r\n // Set the start date\r\n this._range.start = start.clone();\r\n\r\n // If the selected start date is after the end date...\r\n if (this._range.end && this._range.start.isAfter(this._range.end)) {\r\n // Set the end date to the start date but keep the end date's time\r\n const endDate = start.clone().hour(this._range.end.hour()).minute(this._range.end.minute()).second(this._range.end.second());\r\n\r\n // Test this new end date to see if it's ahead of the start date\r\n if (this._range.start.isBefore(endDate)) {\r\n // If it's, set the new end date\r\n this._range.end = endDate;\r\n }\r\n else {\r\n // Otherwise, set the end date same as the start date\r\n this._range.end = start.clone();\r\n }\r\n }\r\n }\r\n\r\n // If we are only setting the end date...\r\n if (whichDate === 'end') {\r\n // Set the end date\r\n this._range.end = end.clone();\r\n\r\n // If the selected end date is before the start date...\r\n if (this._range.start?.isAfter(this._range.end)) {\r\n // Set the start date to the end date but keep the start date's time\r\n const startDate = end.clone().hour(this._range.start.hour()).minute(this._range.start.minute()).second(this._range.start.second());\r\n\r\n // Test this new end date to see if it's ahead of the start date\r\n if (this._range.end.isAfter(startDate)) {\r\n // If it's, set the new start date\r\n this._range.start = startDate;\r\n }\r\n else {\r\n // Otherwise, set the start date same as the end date\r\n this._range.start = end.clone();\r\n }\r\n }\r\n }\r\n\r\n // If we are setting both dates...\r\n if (!whichDate) {\r\n // Set the start date\r\n this._range.start = start.clone();\r\n\r\n // If the start date is before the end date, set the end date as normal.\r\n // If the start date is after the end date, set the end date same as the start date.\r\n this._range.end = start.isBefore(end) ? end.clone() : start.clone();\r\n }\r\n\r\n if (this._range.start && this._range.end) {\r\n // Prepare another range object that holds the ISO formatted range dates\r\n const range = {\r\n start: this._range.start.clone().toISOString(),\r\n end: this._range.end.clone().toISOString()\r\n };\r\n\r\n // Emit the range changed event with the range\r\n this.rangeChanged.emit(range);\r\n\r\n // Update the model with the range if the change was not a programmatic change\r\n // Because programmatic changes trigger writeValue which triggers onChange and onTouched\r\n // internally causing them to trigger twice which breaks the form's pristine and touched\r\n // statuses.\r\n if (!this._programmaticChange) {\r\n this._onTouched(range);\r\n this._onChange(range);\r\n }\r\n\r\n // Set the active dates\r\n this.activeDates = {\r\n month1: this._range.start.clone(),\r\n month2: this._range.start.clone().add(1, 'month')\r\n };\r\n\r\n // Set the time form controls\r\n this.startTimeFormControl.setValue(this._range.start.clone().format(this._timeFormat).toString());\r\n this.endTimeFormControl.setValue(this._range.end.clone().format(this._timeFormat).toString());\r\n }\r\n\r\n // Run ngAfterContentInit on month views to trigger\r\n // re-render on month views if they are available\r\n if (this._matMonthView1 && this._matMonthView2) {\r\n this._matMonthView1.ngAfterContentInit();\r\n this._matMonthView2.ngAfterContentInit();\r\n }\r\n\r\n // Reset the programmatic change status\r\n this._programmaticChange = false;\r\n }\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Control Value Accessor\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Update the form model on change\r\n *\r\n * @param fn\r\n */\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n /**\r\n * Update the form model on blur\r\n *\r\n * @param fn\r\n */\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n /**\r\n * Write to view from model when the form model changes programmatically\r\n *\r\n * @param range\r\n */\r\n writeValue(range: { start: string; end: string }): void {\r\n // Set this change as a programmatic one\r\n this._programmaticChange = true;\r\n\r\n // Set the range\r\n this.range = range;\r\n\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n ngOnInit(): void {\r\n // Initialize the component\r\n this._init();\r\n }\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this.writeValue = (): void => { };\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Open the picker panel\r\n */\r\n openPickerPanel(): void {\r\n if (this.readonly)\r\n return;\r\n\r\n // Create the overlay\r\n const overlayRef = this._overlay.create({\r\n panelClass: 'cmat-date-range-panel',\r\n backdropClass: '',\r\n hasBackdrop: true,\r\n scrollStrategy: this._overlay.scrollStrategies.reposition(),\r\n positionStrategy: this._overlay.position()\r\n .flexibleConnectedTo(this._pickerPanelOrigin)\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: 8\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetY: -8\r\n }\r\n ])\r\n });\r\n\r\n // Create a portal from the template\r\n const templatePortal = new TemplatePortal(this._pickerPanel, this._viewContainerRef);\r\n\r\n // On backdrop click\r\n overlayRef.backdropClick().subscribe(() => {\r\n\r\n // If template portal exists and attached...\r\n if (templatePortal?.isAttached) {\r\n // Detach it\r\n templatePortal.detach();\r\n }\r\n\r\n // If overlay exists and attached...\r\n if (overlayRef?.hasAttached()) {\r\n // Detach it\r\n overlayRef.detach();\r\n overlayRef.dispose();\r\n }\r\n });\r\n\r\n // Attach the portal to the overlay\r\n overlayRef.attach(templatePortal);\r\n }\r\n\r\n /**\r\n * Get month label\r\n *\r\n * @param month\r\n */\r\n getMonthLabel(month: number): string | void {\r\n if (month === 1) {\r\n return this.activeDates.month1?.clone().format('YYYY MMMM');\r\n }\r\n\r\n return this.activeDates.month2?.clone().format('YYYY MMMM');\r\n }\r\n\r\n /**\r\n * Date class function to add/remove class names to calendar days\r\n */\r\n dateClass(): any {\r\n return (date: Dayjs): MatCalendarCellCssClasses | void => {\r\n\r\n // If the date is both start and end date...\r\n if (date.isSame(this._range.start, 'day') && date.isSame(this._range.end, 'day')) {\r\n return ['cmat-date-range', 'cmat-date-range-start', 'cmat-date-range-end'];\r\n }\r\n\r\n // If the date is the start date...\r\n if (date.isSame(this._range.start, 'day')) {\r\n return ['cmat-date-range', 'cmat-date-range-start'];\r\n }\r\n\r\n // If the date is the end date...\r\n if (date.isSame(this._range.end, 'day')) {\r\n return ['cmat-date-range', 'cmat-date-range-end'];\r\n }\r\n\r\n // If the date is in between start and end dates...\r\n if (date.isBetween(this._range.start, this._range.end, 'day')) {\r\n return ['cmat-date-range', 'cmat-date-range-mid'];\r\n }\r\n\r\n return void 0;\r\n };\r\n }\r\n\r\n /**\r\n * Date filter to enable/disable calendar days\r\n */\r\n dateFilter(): any {\r\n // If we are selecting the end date, disable all the dates that comes before the start date\r\n return (date: Dayjs): boolean => !(this.setWhichDate === 'end' && date.isBefore(this._range.start, 'day'));\r\n }\r\n\r\n /**\r\n * On selected date change\r\n *\r\n * @param date\r\n */\r\n onSelectedDateChange(date: Dayjs): void {\r\n if (this._range.start && this._range.end) {\r\n // Create a new range object\r\n const newRange = {\r\n start: this._range.start.clone().toISOString(),\r\n end: this._range.end.clone().toISOString(),\r\n whichDate: ''\r\n };\r\n\r\n // Replace either the start or the end date with the new one\r\n // depending on which date we are setting\r\n if (this.setWhichDate === 'start') {\r\n newRange.start = dayjs(newRange.start).year(date.year()).month(date.month()).date(date.date()).toISOString();\r\n }\r\n else {\r\n newRange.end = dayjs(newRange.end).year(date.year()).month(date.month()).date(date.date()).toISOString();\r\n }\r\n\r\n // Append the which date to the new range object\r\n newRange.whichDate = this.setWhichDate;\r\n\r\n // Switch which date to set on the next run\r\n this.setWhichDate = this.setWhichDate === 'start' ? 'end' : 'start';\r\n\r\n // Set the range\r\n this.range = newRange;\r\n\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n /**\r\n * Go to previous month on both views\r\n */\r\n prev(): void {\r\n this.activeDates.month1 = dayjs(this.activeDates.month1).subtract(1, 'month');\r\n this.activeDates.month2 = dayjs(this.activeDates.month2).subtract(1, 'month');\r\n }\r\n\r\n /**\r\n * Go to next month on both views\r\n */\r\n next(): void {\r\n this.activeDates.month1 = dayjs(this.activeDates.month1).add(1, 'month');\r\n this.activeDates.month2 = dayjs(this.activeDates.month2).add(1, 'month');\r\n }\r\n\r\n /**\r\n * Update the start time\r\n *\r\n * @param event\r\n */\r\n updateStartTime(event: any): void {\r\n // Parse the time\r\n const parsedTime = this._parseTime(event.target.value);\r\n\r\n // Go back to the previous value if the form control is not valid\r\n if (this.startTimeFormControl.invalid) {\r\n if (this._range.start) {\r\n // Override the time \r\n const time = this._range.start.clone().format(this._timeFormat);\r\n\r\n // Set the time\r\n this.startTimeFormControl.setValue(time);\r\n }\r\n // Do not update the range\r\n return;\r\n }\r\n\r\n if (this._range.start && this._range.end) {\r\n // Append the new time to the start date\r\n const startDate = this._range.start.clone().hour(parsedTime.hour()).minute(parsedTime.minute());\r\n\r\n // If the new start date is after the current end date,\r\n // use the end date's time and set the start date again\r\n if (startDate.isAfter(this._range.end)) {\r\n const endDateHours = this._range.end.hour();\r\n const endDateMinutes = this._range.end.minute();\r\n\r\n // Set the start date\r\n startDate.hour(endDateHours).minute(endDateMinutes);\r\n }\r\n\r\n // If everything is okay, set the new date\r\n this.range = {\r\n start: startDate.toISOString(),\r\n end: this._range.end.clone().toISOString(),\r\n whichDate: 'start'\r\n };\r\n\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n /**\r\n * Update the end time\r\n *\r\n * @param event\r\n */\r\n updateEndTime(event: any): void {\r\n // Parse the time\r\n const parsedTime = this._parseTime(event.target.value);\r\n\r\n // Go back to the previous value if the form control is not valid\r\n if (this.endTimeFormControl.invalid) {\r\n if (this._range.end) {\r\n // Override the time\r\n const time = this._range.end.clone().format(this._timeFormat);\r\n\r\n // Set the time\r\n this.endTimeFormControl.setValue(time);\r\n }\r\n // Do not update the range\r\n return;\r\n }\r\n\r\n if (this._range.start && this._range.end) {\r\n // Append the new time to the end date\r\n const endDate = this._range.end.clone().hour(parsedTime.hour()).minute(parsedTime.minute());\r\n\r\n // If the new end date is before the current start date,\r\n // use the start date's time and set the end date again\r\n if (endDate.isBefore(this._range.start)) {\r\n const startDateHours = this._range.start.hour();\r\n const startDateMinutes = this._range.start.minute();\r\n\r\n // Set the end date\r\n endDate.hour(startDateHours).minute(startDateMinutes);\r\n }\r\n\r\n // If everything is okay, set the new date\r\n this.range = {\r\n start: this._range.start.clone().toISOString(),\r\n end: endDate.toISOString(),\r\n whichDate: 'end'\r\n };\r\n\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Private methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Initialize\r\n *\r\n * @private\r\n */\r\n private _init(): void {\r\n // Start and end time form controls\r\n this.startTimeFormControl = new FormControl('', [Validators.pattern(this._timeRegExp)]);\r\n this.endTimeFormControl = new FormControl('', [Validators.pattern(this._timeRegExp)]);\r\n\r\n // Set the default range\r\n this._programmaticChange = true;\r\n this.range = {\r\n start: dayjs().startOf('day').toISOString(),\r\n end: dayjs().add(1, 'day').endOf('day').toISOString()\r\n };\r\n\r\n // Set the default time range\r\n this._programmaticChange = true;\r\n this.timeRange = true;\r\n\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Parse the time from the inputs\r\n *\r\n * @param value\r\n * @private\r\n */\r\n private _parseTime(value: string): Dayjs {\r\n // Parse the time using the time regexp\r\n const timeArr = value.split(this._timeRegExp).filter(part => part !== '');\r\n\r\n // Get the meridiem\r\n const meridiem = timeArr[2] || null;\r\n\r\n // If meridiem exists...\r\n if (meridiem) {\r\n // Create a moment using 12-hours format and return it\r\n return dayjs(value, 'hh:mmA').second(0);\r\n }\r\n\r\n // If meridiem doesn't exist, create a moment using 24-hours format and return in\r\n return dayjs(value, 'HH:mm').second(0);\r\n }\r\n}\r\n","<div #pickerPanelOrigin role=\"presentation\" class=\"range\" (click)=\"openPickerPanel()\">\n\n <div class=\"start\">\n <div class=\"date\">{{range.startDate}}</div>\n @if (range.startTime) {\n <div class=\"time\">{{range.startTime}}</div>\n }\n </div>\n\n <div class=\"separator\">-</div>\n\n <div class=\"end\">\n <div class=\"date\">{{range.endDate}}</div>\n @if (range.endTime) {\n <div class=\"time\">{{range.endTime}}</div>\n }\n </div>\n\n</div>\n\n<ng-template #pickerPanel>\n\n <!-- Start -->\n <div class=\"start\">\n\n <div class=\"month\">\n <div class=\"month-header\">\n <button type=\"button\" class=\"previous-button\" mat-icon-button tabindex=\"1\" (click)=\"prev()\">\n <mat-icon [svgIcon]=\"'heroicons_outline:chevron-left'\"></mat-icon>\n </button>\n <div class=\"month-label\">{{getMonthLabel(1)}}</div>\n </div>\n <mat-month-view #matMonthView1 [dateFilter]=\"dateFilter()\" [dateClass]=\"dateClass()\"\n [(activeDate)]=\"activeDates.month1\" (click)=\"$event.stopImmediatePropagation()\"\n (selectedChange)=\"onSelectedDateChange($event)\">\n </mat-month-view>\n </div>\n\n @if (timeRange) {\n <mat-form-field class=\"time start-time\">\n <input matInput tabindex=\"3\" [autocomplete]=\"'off'\" [formControl]=\"startTimeFormControl\"\n (blur)=\"updateStartTime($event)\">\n <mat-label>开始时间</mat-label>\n </mat-form-field>\n }\n\n </div>\n\n <!-- End -->\n <div class=\"end\">\n\n <div class=\"month\">\n <div class=\"month-header\">\n <div class=\"month-label\">{{getMonthLabel(2)}}</div>\n <button type=\"button\" class=\"next-button\" mat-icon-button tabindex=\"2\" (click)=\"next()\">\n <mat-icon [svgIcon]=\"'heroicons_outline:chevron-right'\"></mat-icon>\n </button>\n </div>\n <mat-month-view #matMonthView2 [dateFilter]=\"dateFilter()\" [dateClass]=\"dateClass()\"\n [(activeDate)]=\"activeDates.month2\" (click)=\"$event.stopImmediatePropagation()\"\n (selectedChange)=\"onSelectedDateChange($event)\">\n </mat-month-view>\n </div>\n\n @if (timeRange) {\n <mat-form-field class=\"time end-time\">\n <input matInput tabindex=\"4\" [formControl]=\"endTimeFormControl\" (blur)=\"updateEndTime($event)\">\n <mat-label>结束时间</mat-label>\n </mat-form-field>\n }\n\n </div>\n\n </ng-template>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cmat-components-date-range.mjs","sources":["../../../projects/cmat/components/date-range/date-range.component.ts","../../../projects/cmat/components/date-range/date-range.component.html","../../../projects/cmat/components/date-range/cmat-components-date-range.ts"],"sourcesContent":["import { Overlay } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, OnDestroy, OnInit, Output, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCalendarCellCssClasses, MatMonthView, MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport dayjs, { Dayjs } from 'dayjs';\r\nimport isBetween from 'dayjs/plugin/isBetween';\r\nimport { Subject } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'cmat-date-range',\r\n templateUrl: './date-range.component.html',\r\n styleUrls: ['./date-range.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatDateRange',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CmatDateRangeComponent),\r\n multi: true\r\n }\r\n ],\r\n standalone: true,\r\n imports: [FormsModule, ReactiveFormsModule,MatButtonModule, MatIconModule, \r\n MatDatepickerModule, MatFormFieldModule, \r\n MatInputModule]\r\n})\r\nexport class CmatDateRangeComponent implements ControlValueAccessor,OnInit, OnDestroy {\r\n @Output() readonly rangeChanged: EventEmitter<{ start: string; end: string }> = new EventEmitter<{ start: string; end: string }>();\r\n @ViewChild('matMonthView1') private _matMonthView1: MatMonthView<any>;\r\n @ViewChild('matMonthView2') private _matMonthView2: MatMonthView<any>;\r\n @ViewChild('pickerPanelOrigin', { read: ElementRef }) private _pickerPanelOrigin: ElementRef;\r\n @ViewChild('pickerPanel') private _pickerPanel: TemplateRef<any>;\r\n\r\n activeDates: { month1: Dayjs | null; month2: Dayjs | null } = {\r\n month1: null,\r\n month2: null\r\n };\r\n setWhichDate: 'start' | 'end' = 'start';\r\n startTimeFormControl: FormControl;\r\n endTimeFormControl: FormControl;\r\n private _dateFormat: string;\r\n private _onChange: (value: any) => void;\r\n private _onTouched: (value: any) => void;\r\n private _programmaticChange!: boolean;\r\n private _range: { start: Dayjs | null; end: Dayjs | null } = {\r\n start: null,\r\n end: null\r\n };\r\n private _timeFormat: string;\r\n private _timeRange: boolean;\r\n private _readonly: boolean;\r\n private readonly _timeRegExp: RegExp = new RegExp('^(0[0-9]|1[0-9]|2[0-4]|[0-9]):([0-5][0-9])(A|(?:AM)|P|(?:PM))?$', 'i');\r\n private _unsubscribeAll: Subject<any> = new Subject<any>();\r\n\r\n constructor(\r\n private _overlay: Overlay,\r\n private _viewContainerRef: ViewContainerRef,\r\n private _changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n dayjs.extend(isBetween);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this._onChange = (): void => { };\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this._onTouched = (): void => { };\r\n this.dateFormat = 'YYYY/MM/DD';\r\n this.timeFormat = '12'; \r\n }\r\n\r\n get readonly(): boolean {\r\n return this._readonly;\r\n }\r\n\r\n @Input()\r\n set readonly(value) {\r\n this._readonly = value;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get dateFormat(): string {\r\n return this._dateFormat;\r\n }\r\n @Input()\r\n set dateFormat(value: string) {\r\n // Return if the values are the same\r\n if (this._dateFormat === value) {\r\n return;\r\n }\r\n\r\n // Store the value\r\n this._dateFormat = value;\r\n }\r\n\r\n /**\r\n * Setter & getter for timeFormat input */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get timeFormat(): string {\r\n return this._timeFormat;\r\n }\r\n @Input()\r\n set timeFormat(value: string) {\r\n // Return if the values are the same\r\n if (this._timeFormat === value) {\r\n return;\r\n }\r\n\r\n // Set format based on the time format input\r\n this._timeFormat = value === '12' ? 'hh:mmA' : 'HH:mm';\r\n }\r\n\r\n\r\n\r\n /**\r\n * Setter & getter for timeRange input */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get timeRange(): boolean {\r\n return this._timeRange;\r\n }\r\n @Input()\r\n set timeRange(value: boolean) {\r\n // Return if the values are the same\r\n if (this._timeRange === value) {\r\n return;\r\n }\r\n\r\n // Store the value\r\n this._timeRange = value;\r\n\r\n // If the time range turned off...\r\n if (!value && this._range.start && this._range.end) {\r\n this.range = {\r\n start: this._range.start.clone().startOf('day'),\r\n end: this._range.end.clone().endOf('day')\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Setter & getter for range input */\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get range(): any {\r\n if (this._range.start && this._range.end) {\r\n // Clone the range start and end\r\n const start = this._range.start.clone();\r\n const end = this._range.end.clone();\r\n\r\n // Build and return the range object\r\n return {\r\n startDate: start.clone().format(this.dateFormat),\r\n startTime: this.timeRange ? start.clone().format(this.timeFormat) : null,\r\n endDate: end.clone().format(this.dateFormat),\r\n endTime: this.timeRange ? end.clone().format(this.timeFormat) : null\r\n };\r\n }\r\n\r\n return void 0;\r\n }\r\n\r\n @Input()\r\n set range(value) {\r\n if (!value) {\r\n return;\r\n }\r\n\r\n // Check if the value is an object and has 'start' and 'end' values\r\n if (!value.start || !value.end) {\r\n console.error('Range input must have \"start\" and \"end\" properties!');\r\n\r\n return;\r\n }\r\n\r\n // Check if we are setting an individual date or both of them\r\n const whichDate = value.whichDate || null;\r\n\r\n // Get the start and end dates as moment\r\n const start = dayjs(value.start);\r\n const end = dayjs(value.end);\r\n\r\n // If we are only setting the start date...\r\n if (whichDate === 'start') {\r\n // Set the start date\r\n this._range.start = start.clone();\r\n\r\n // If the selected start date is after the end date...\r\n if (this._range.end && this._range.start.isAfter(this._range.end)) {\r\n // Set the end date to the start date but keep the end date's time\r\n const endDate = start.clone().hour(this._range.end.hour()).minute(this._range.end.minute()).second(this._range.end.second());\r\n\r\n // Test this new end date to see if it's ahead of the start date\r\n if (this._range.start.isBefore(endDate)) {\r\n // If it's, set the new end date\r\n this._range.end = endDate;\r\n }\r\n else {\r\n // Otherwise, set the end date same as the start date\r\n this._range.end = start.clone();\r\n }\r\n }\r\n }\r\n\r\n // If we are only setting the end date...\r\n if (whichDate === 'end') {\r\n // Set the end date\r\n this._range.end = end.clone();\r\n\r\n // If the selected end date is before the start date...\r\n if (this._range.start?.isAfter(this._range.end)) {\r\n // Set the start date to the end date but keep the start date's time\r\n const startDate = end.clone().hour(this._range.start.hour()).minute(this._range.start.minute()).second(this._range.start.second());\r\n\r\n // Test this new end date to see if it's ahead of the start date\r\n if (this._range.end.isAfter(startDate)) {\r\n // If it's, set the new start date\r\n this._range.start = startDate;\r\n }\r\n else {\r\n // Otherwise, set the start date same as the end date\r\n this._range.start = end.clone();\r\n }\r\n }\r\n }\r\n\r\n // If we are setting both dates...\r\n if (!whichDate) {\r\n // Set the start date\r\n this._range.start = start.clone();\r\n\r\n // If the start date is before the end date, set the end date as normal.\r\n // If the start date is after the end date, set the end date same as the start date.\r\n this._range.end = start.isBefore(end) ? end.clone() : start.clone();\r\n }\r\n\r\n if (this._range.start && this._range.end) {\r\n // Prepare another range object that holds the ISO formatted range dates\r\n const range = {\r\n start: this._range.start.clone().toISOString(),\r\n end: this._range.end.clone().toISOString()\r\n };\r\n\r\n // Emit the range changed event with the range\r\n this.rangeChanged.emit(range);\r\n\r\n // Update the model with the range if the change was not a programmatic change\r\n // Because programmatic changes trigger writeValue which triggers onChange and onTouched\r\n // internally causing them to trigger twice which breaks the form's pristine and touched\r\n // statuses.\r\n if (!this._programmaticChange) {\r\n this._onTouched(range);\r\n this._onChange(range);\r\n }\r\n\r\n // Set the active dates\r\n this.activeDates = {\r\n month1: this._range.start.clone(),\r\n month2: this._range.start.clone().add(1, 'month')\r\n };\r\n\r\n // Set the time form controls\r\n this.startTimeFormControl.setValue(this._range.start.clone().format(this._timeFormat).toString());\r\n this.endTimeFormControl.setValue(this._range.end.clone().format(this._timeFormat).toString());\r\n }\r\n\r\n // Run ngAfterContentInit on month views to trigger\r\n // re-render on month views if they are available\r\n if (this._matMonthView1 && this._matMonthView2) {\r\n this._matMonthView1.ngAfterContentInit();\r\n this._matMonthView2.ngAfterContentInit();\r\n }\r\n\r\n // Reset the programmatic change status\r\n this._programmaticChange = false;\r\n }\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Control Value Accessor\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Update the form model on change\r\n *\r\n * @param fn\r\n */\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n /**\r\n * Update the form model on blur\r\n *\r\n * @param fn\r\n */\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n /**\r\n * Write to view from model when the form model changes programmatically\r\n *\r\n * @param range\r\n */\r\n writeValue(range: { start: string; end: string }): void {\r\n // Set this change as a programmatic one\r\n this._programmaticChange = true;\r\n\r\n // Set the range\r\n this.range = range;\r\n\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n ngOnInit(): void {\r\n // Initialize the component\r\n this._init();\r\n }\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this.writeValue = (): void => { };\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Open the picker panel\r\n */\r\n openPickerPanel(): void {\r\n if (this.readonly)\r\n return;\r\n\r\n // Create the overlay\r\n const overlayRef = this._overlay.create({\r\n panelClass: 'cmat-date-range-panel',\r\n backdropClass: '',\r\n hasBackdrop: true,\r\n scrollStrategy: this._overlay.scrollStrategies.reposition(),\r\n positionStrategy: this._overlay.position()\r\n .flexibleConnectedTo(this._pickerPanelOrigin)\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: 8\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetY: -8\r\n }\r\n ])\r\n });\r\n\r\n // Create a portal from the template\r\n const templatePortal = new TemplatePortal(this._pickerPanel, this._viewContainerRef);\r\n\r\n // On backdrop click\r\n overlayRef.backdropClick().subscribe(() => {\r\n\r\n // If template portal exists and attached...\r\n if (templatePortal?.isAttached) {\r\n // Detach it\r\n templatePortal.detach();\r\n }\r\n\r\n // If overlay exists and attached...\r\n if (overlayRef?.hasAttached()) {\r\n // Detach it\r\n overlayRef.detach();\r\n overlayRef.dispose();\r\n }\r\n });\r\n\r\n // Attach the portal to the overlay\r\n overlayRef.attach(templatePortal);\r\n }\r\n\r\n /**\r\n * Get month label\r\n *\r\n * @param month\r\n */\r\n getMonthLabel(month: number): string | void {\r\n if (month === 1) {\r\n return this.activeDates.month1?.clone().format('YYYY MMMM');\r\n }\r\n\r\n return this.activeDates.month2?.clone().format('YYYY MMMM');\r\n }\r\n\r\n /**\r\n * Date class function to add/remove class names to calendar days\r\n */\r\n dateClass(): any {\r\n return (date: Dayjs): MatCalendarCellCssClasses | void => {\r\n\r\n // If the date is both start and end date...\r\n if (date.isSame(this._range.start, 'day') && date.isSame(this._range.end, 'day')) {\r\n return ['cmat-date-range', 'cmat-date-range-start', 'cmat-date-range-end'];\r\n }\r\n\r\n // If the date is the start date...\r\n if (date.isSame(this._range.start, 'day')) {\r\n return ['cmat-date-range', 'cmat-date-range-start'];\r\n }\r\n\r\n // If the date is the end date...\r\n if (date.isSame(this._range.end, 'day')) {\r\n return ['cmat-date-range', 'cmat-date-range-end'];\r\n }\r\n\r\n // If the date is in between start and end dates...\r\n if (date.isBetween(this._range.start, this._range.end, 'day')) {\r\n return ['cmat-date-range', 'cmat-date-range-mid'];\r\n }\r\n\r\n return void 0;\r\n };\r\n }\r\n\r\n /**\r\n * Date filter to enable/disable calendar days\r\n */\r\n dateFilter(): any {\r\n // If we are selecting the end date, disable all the dates that comes before the start date\r\n return (date: Dayjs): boolean => !(this.setWhichDate === 'end' && date.isBefore(this._range.start, 'day'));\r\n }\r\n\r\n /**\r\n * On selected date change\r\n *\r\n * @param date\r\n */\r\n onSelectedDateChange(date: Dayjs): void {\r\n if (this._range.start && this._range.end) {\r\n // Create a new range object\r\n const newRange = {\r\n start: this._range.start.clone().toISOString(),\r\n end: this._range.end.clone().toISOString(),\r\n whichDate: ''\r\n };\r\n\r\n // Replace either the start or the end date with the new one\r\n // depending on which date we are setting\r\n if (this.setWhichDate === 'start') {\r\n newRange.start = dayjs(newRange.start).year(date.year()).month(date.month()).date(date.date()).toISOString();\r\n }\r\n else {\r\n newRange.end = dayjs(newRange.end).year(date.year()).month(date.month()).date(date.date()).toISOString();\r\n }\r\n\r\n // Append the which date to the new range object\r\n newRange.whichDate = this.setWhichDate;\r\n\r\n // Switch which date to set on the next run\r\n this.setWhichDate = this.setWhichDate === 'start' ? 'end' : 'start';\r\n\r\n // Set the range\r\n this.range = newRange;\r\n\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n /**\r\n * Go to previous month on both views\r\n */\r\n prev(): void {\r\n this.activeDates.month1 = dayjs(this.activeDates.month1).subtract(1, 'month');\r\n this.activeDates.month2 = dayjs(this.activeDates.month2).subtract(1, 'month');\r\n }\r\n\r\n /**\r\n * Go to next month on both views\r\n */\r\n next(): void {\r\n this.activeDates.month1 = dayjs(this.activeDates.month1).add(1, 'month');\r\n this.activeDates.month2 = dayjs(this.activeDates.month2).add(1, 'month');\r\n }\r\n\r\n /**\r\n * Update the start time\r\n *\r\n * @param event\r\n */\r\n updateStartTime(event: any): void {\r\n // Parse the time\r\n const parsedTime = this._parseTime(event.target.value);\r\n\r\n // Go back to the previous value if the form control is not valid\r\n if (this.startTimeFormControl.invalid) {\r\n if (this._range.start) {\r\n // Override the time \r\n const time = this._range.start.clone().format(this._timeFormat);\r\n\r\n // Set the time\r\n this.startTimeFormControl.setValue(time);\r\n }\r\n // Do not update the range\r\n return;\r\n }\r\n\r\n if (this._range.start && this._range.end) {\r\n // Append the new time to the start date\r\n const startDate = this._range.start.clone().hour(parsedTime.hour()).minute(parsedTime.minute());\r\n\r\n // If the new start date is after the current end date,\r\n // use the end date's time and set the start date again\r\n if (startDate.isAfter(this._range.end)) {\r\n const endDateHours = this._range.end.hour();\r\n const endDateMinutes = this._range.end.minute();\r\n\r\n // Set the start date\r\n startDate.hour(endDateHours).minute(endDateMinutes);\r\n }\r\n\r\n // If everything is okay, set the new date\r\n this.range = {\r\n start: startDate.toISOString(),\r\n end: this._range.end.clone().toISOString(),\r\n whichDate: 'start'\r\n };\r\n\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n /**\r\n * Update the end time\r\n *\r\n * @param event\r\n */\r\n updateEndTime(event: any): void {\r\n // Parse the time\r\n const parsedTime = this._parseTime(event.target.value);\r\n\r\n // Go back to the previous value if the form control is not valid\r\n if (this.endTimeFormControl.invalid) {\r\n if (this._range.end) {\r\n // Override the time\r\n const time = this._range.end.clone().format(this._timeFormat);\r\n\r\n // Set the time\r\n this.endTimeFormControl.setValue(time);\r\n }\r\n // Do not update the range\r\n return;\r\n }\r\n\r\n if (this._range.start && this._range.end) {\r\n // Append the new time to the end date\r\n const endDate = this._range.end.clone().hour(parsedTime.hour()).minute(parsedTime.minute());\r\n\r\n // If the new end date is before the current start date,\r\n // use the start date's time and set the end date again\r\n if (endDate.isBefore(this._range.start)) {\r\n const startDateHours = this._range.start.hour();\r\n const startDateMinutes = this._range.start.minute();\r\n\r\n // Set the end date\r\n endDate.hour(startDateHours).minute(startDateMinutes);\r\n }\r\n\r\n // If everything is okay, set the new date\r\n this.range = {\r\n start: this._range.start.clone().toISOString(),\r\n end: endDate.toISOString(),\r\n whichDate: 'end'\r\n };\r\n\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Private methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Initialize\r\n *\r\n * @private\r\n */\r\n private _init(): void {\r\n // Start and end time form controls\r\n this.startTimeFormControl = new FormControl('', [Validators.pattern(this._timeRegExp)]);\r\n this.endTimeFormControl = new FormControl('', [Validators.pattern(this._timeRegExp)]);\r\n\r\n // Set the default range\r\n this._programmaticChange = true;\r\n this.range = {\r\n start: dayjs().startOf('day').toISOString(),\r\n end: dayjs().add(1, 'day').endOf('day').toISOString()\r\n };\r\n\r\n // Set the default time range\r\n this._programmaticChange = true;\r\n this.timeRange = true;\r\n\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Parse the time from the inputs\r\n *\r\n * @param value\r\n * @private\r\n */\r\n private _parseTime(value: string): Dayjs {\r\n // Parse the time using the time regexp\r\n const timeArr = value.split(this._timeRegExp).filter(part => part !== '');\r\n\r\n // Get the meridiem\r\n const meridiem = timeArr[2] || null;\r\n\r\n // If meridiem exists...\r\n if (meridiem) {\r\n // Create a moment using 12-hours format and return it\r\n return dayjs(value, 'hh:mmA').second(0);\r\n }\r\n\r\n // If meridiem doesn't exist, create a moment using 24-hours format and return in\r\n return dayjs(value, 'HH:mm').second(0);\r\n }\r\n}\r\n","<div #pickerPanelOrigin role=\"presentation\" class=\"range\" (click)=\"openPickerPanel()\">\r\n\r\n <div class=\"start\">\r\n <div class=\"date\">{{range.startDate}}</div>\r\n @if (range.startTime) {\r\n <div class=\"time\">{{range.startTime}}</div>\r\n }\r\n </div>\r\n\r\n <div class=\"separator\">-</div>\r\n\r\n <div class=\"end\">\r\n <div class=\"date\">{{range.endDate}}</div>\r\n @if (range.endTime) {\r\n <div class=\"time\">{{range.endTime}}</div>\r\n }\r\n </div>\r\n\r\n</div>\r\n\r\n<ng-template #pickerPanel>\r\n\r\n <!-- Start -->\r\n <div class=\"start\">\r\n\r\n <div class=\"month\">\r\n <div class=\"month-header\">\r\n <button type=\"button\" class=\"previous-button\" mat-icon-button tabindex=\"1\" (click)=\"prev()\">\r\n <mat-icon [svgIcon]=\"'heroicons_outline:chevron-left'\"></mat-icon>\r\n </button>\r\n <div class=\"month-label\">{{getMonthLabel(1)}}</div>\r\n </div>\r\n <mat-month-view #matMonthView1 [dateFilter]=\"dateFilter()\" [dateClass]=\"dateClass()\"\r\n [(activeDate)]=\"activeDates.month1\" (click)=\"$event.stopImmediatePropagation()\"\r\n (selectedChange)=\"onSelectedDateChange($event)\">\r\n </mat-month-view>\r\n </div>\r\n\r\n @if (timeRange) {\r\n <mat-form-field class=\"time start-time\">\r\n <input matInput tabindex=\"3\" [autocomplete]=\"'off'\" [formControl]=\"startTimeFormControl\"\r\n (blur)=\"updateStartTime($event)\">\r\n <mat-label>开始时间</mat-label>\r\n </mat-form-field>\r\n }\r\n\r\n </div>\r\n\r\n <!-- End -->\r\n <div class=\"end\">\r\n\r\n <div class=\"month\">\r\n <div class=\"month-header\">\r\n <div class=\"month-label\">{{getMonthLabel(2)}}</div>\r\n <button type=\"button\" class=\"next-button\" mat-icon-button tabindex=\"2\" (click)=\"next()\">\r\n <mat-icon [svgIcon]=\"'heroicons_outline:chevron-right'\"></mat-icon>\r\n </button>\r\n </div>\r\n <mat-month-view #matMonthView2 [dateFilter]=\"dateFilter()\" [dateClass]=\"dateClass()\"\r\n [(activeDate)]=\"activeDates.month2\" (click)=\"$event.stopImmediatePropagation()\"\r\n (selectedChange)=\"onSelectedDateChange($event)\">\r\n </mat-month-view>\r\n </div>\r\n\r\n @if (timeRange) {\r\n <mat-form-field class=\"time end-time\">\r\n <input matInput tabindex=\"4\" [formControl]=\"endTimeFormControl\" (blur)=\"updateEndTime($event)\">\r\n <mat-label>结束时间</mat-label>\r\n </mat-form-field>\r\n }\r\n\r\n </div>\r\n\r\n </ng-template>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -34,10 +34,10 @@ class CmatDrawerService {
34
34
  getComponent(name) {
35
35
  return this._componentRegistry.get(name);
36
36
  }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatDrawerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
38
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatDrawerService, providedIn: 'root' }); }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatDrawerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
38
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatDrawerService, providedIn: 'root' }); }
39
39
  }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatDrawerService, decorators: [{
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatDrawerService, decorators: [{
41
41
  type: Injectable,
42
42
  args: [{
43
43
  providedIn: 'root'
@@ -298,10 +298,10 @@ class CmatDrawerComponent {
298
298
  // Execute the observable
299
299
  this.openedChanged.next(open);
300
300
  }
301
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatDrawerComponent, deps: [{ token: i1.AnimationBuilder }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: CmatDrawerService }, { token: i3.CmatUtilsService }], target: i0.ɵɵFactoryTarget.Component }); }
302
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: CmatDrawerComponent, isStandalone: true, selector: "cmat-drawer", inputs: { fixed: "fixed", mode: "mode", name: "name", opened: "opened", position: "position", transparentOverlay: "transparentOverlay" }, outputs: { fixedChanged: "fixedChanged", modeChanged: "modeChanged", openedChanged: "openedChanged", positionChanged: "positionChanged" }, host: { listeners: { "mouseenter": "onMouseenter()", "mouseleave": "onMouseleave()" }, properties: { "class": "this.classList", "style": "this.styleList" } }, exportAs: ["cmatDrawer"], usesOnChanges: true, ngImport: i0, template: "<div class=\"cmat-drawer-content\">\r\n <ng-content></ng-content>\r\n</div>", styles: ["cmat-drawer{position:relative;display:flex;flex-direction:column;flex:1 1 auto;width:320px;min-width:320px;max-width:320px;z-index:300;box-shadow:0 2px 8px #00000059}cmat-drawer.cmat-drawer-animations-enabled{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:visibility,margin-left,margin-right,transform,width,max-width,min-width}cmat-drawer.cmat-drawer-animations-enabled .cmat-drawer-content{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:width,max-width,min-width}cmat-drawer.cmat-drawer-mode-over{position:absolute;top:0;bottom:0}cmat-drawer.cmat-drawer-mode-over.cmat-drawer-fixed{position:fixed}cmat-drawer.cmat-drawer-position-left.cmat-drawer-mode-side{margin-left:-320px}cmat-drawer.cmat-drawer-position-left.cmat-drawer-mode-side.cmat-drawer-opened{margin-left:0}cmat-drawer.cmat-drawer-position-left.cmat-drawer-mode-over{left:0;transform:translate3d(-100%,0,0)}cmat-drawer.cmat-drawer-position-left.cmat-drawer-mode-over.cmat-drawer-opened{transform:translateZ(0)}cmat-drawer.cmat-drawer-position-left .cmat-drawer-content{left:0}cmat-drawer.cmat-drawer-position-right.cmat-drawer-mode-side{margin-right:-320px}cmat-drawer.cmat-drawer-position-right.cmat-drawer-mode-side.cmat-drawer-opened{margin-right:0}cmat-drawer.cmat-drawer-position-right.cmat-drawer-mode-over{right:0;transform:translate3d(100%,0,0)}cmat-drawer.cmat-drawer-position-right.cmat-drawer-mode-over.cmat-drawer-opened{transform:translateZ(0)}cmat-drawer.cmat-drawer-position-right .cmat-drawer-content{right:0}cmat-drawer .cmat-drawer-content{position:absolute;display:flex;flex:1 1 auto;top:0;bottom:0;width:100%;height:100%;overflow:hidden}.cmat-drawer-overlay{position:absolute;inset:0;z-index:299;opacity:1;background-color:#0009}.cmat-drawer-overlay.cmat-drawer-overlay-fixed{position:fixed}.cmat-drawer-overlay.cmat-drawer-overlay-transparent{background-color:transparent}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
301
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatDrawerComponent, deps: [{ token: i1.AnimationBuilder }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: CmatDrawerService }, { token: i3.CmatUtilsService }], target: i0.ɵɵFactoryTarget.Component }); }
302
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: CmatDrawerComponent, isStandalone: true, selector: "cmat-drawer", inputs: { fixed: "fixed", mode: "mode", name: "name", opened: "opened", position: "position", transparentOverlay: "transparentOverlay" }, outputs: { fixedChanged: "fixedChanged", modeChanged: "modeChanged", openedChanged: "openedChanged", positionChanged: "positionChanged" }, host: { listeners: { "mouseenter": "onMouseenter()", "mouseleave": "onMouseleave()" }, properties: { "class": "this.classList", "style": "this.styleList" } }, exportAs: ["cmatDrawer"], usesOnChanges: true, ngImport: i0, template: "<div class=\"cmat-drawer-content\">\r\n <ng-content></ng-content>\r\n</div>", styles: ["cmat-drawer{position:relative;display:flex;flex-direction:column;flex:1 1 auto;width:320px;min-width:320px;max-width:320px;z-index:300;box-shadow:0 2px 8px #00000059}cmat-drawer.cmat-drawer-animations-enabled{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:visibility,margin-left,margin-right,transform,width,max-width,min-width}cmat-drawer.cmat-drawer-animations-enabled .cmat-drawer-content{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:width,max-width,min-width}cmat-drawer.cmat-drawer-mode-over{position:absolute;top:0;bottom:0}cmat-drawer.cmat-drawer-mode-over.cmat-drawer-fixed{position:fixed}cmat-drawer.cmat-drawer-position-left.cmat-drawer-mode-side{margin-left:-320px}cmat-drawer.cmat-drawer-position-left.cmat-drawer-mode-side.cmat-drawer-opened{margin-left:0}cmat-drawer.cmat-drawer-position-left.cmat-drawer-mode-over{left:0;transform:translate3d(-100%,0,0)}cmat-drawer.cmat-drawer-position-left.cmat-drawer-mode-over.cmat-drawer-opened{transform:translateZ(0)}cmat-drawer.cmat-drawer-position-left .cmat-drawer-content{left:0}cmat-drawer.cmat-drawer-position-right.cmat-drawer-mode-side{margin-right:-320px}cmat-drawer.cmat-drawer-position-right.cmat-drawer-mode-side.cmat-drawer-opened{margin-right:0}cmat-drawer.cmat-drawer-position-right.cmat-drawer-mode-over{right:0;transform:translate3d(100%,0,0)}cmat-drawer.cmat-drawer-position-right.cmat-drawer-mode-over.cmat-drawer-opened{transform:translateZ(0)}cmat-drawer.cmat-drawer-position-right .cmat-drawer-content{right:0}cmat-drawer .cmat-drawer-content{position:absolute;display:flex;flex:1 1 auto;top:0;bottom:0;width:100%;height:100%;overflow:hidden}.cmat-drawer-overlay{position:absolute;inset:0;z-index:299;opacity:1;background-color:#0009}.cmat-drawer-overlay.cmat-drawer-overlay-fixed{position:fixed}.cmat-drawer-overlay.cmat-drawer-overlay-transparent{background-color:transparent}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
303
303
  }
304
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatDrawerComponent, decorators: [{
304
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatDrawerComponent, decorators: [{
305
305
  type: Component,
306
306
  args: [{ selector: 'cmat-drawer', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatDrawer', standalone: true, template: "<div class=\"cmat-drawer-content\">\r\n <ng-content></ng-content>\r\n</div>", styles: ["cmat-drawer{position:relative;display:flex;flex-direction:column;flex:1 1 auto;width:320px;min-width:320px;max-width:320px;z-index:300;box-shadow:0 2px 8px #00000059}cmat-drawer.cmat-drawer-animations-enabled{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:visibility,margin-left,margin-right,transform,width,max-width,min-width}cmat-drawer.cmat-drawer-animations-enabled .cmat-drawer-content{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:width,max-width,min-width}cmat-drawer.cmat-drawer-mode-over{position:absolute;top:0;bottom:0}cmat-drawer.cmat-drawer-mode-over.cmat-drawer-fixed{position:fixed}cmat-drawer.cmat-drawer-position-left.cmat-drawer-mode-side{margin-left:-320px}cmat-drawer.cmat-drawer-position-left.cmat-drawer-mode-side.cmat-drawer-opened{margin-left:0}cmat-drawer.cmat-drawer-position-left.cmat-drawer-mode-over{left:0;transform:translate3d(-100%,0,0)}cmat-drawer.cmat-drawer-position-left.cmat-drawer-mode-over.cmat-drawer-opened{transform:translateZ(0)}cmat-drawer.cmat-drawer-position-left .cmat-drawer-content{left:0}cmat-drawer.cmat-drawer-position-right.cmat-drawer-mode-side{margin-right:-320px}cmat-drawer.cmat-drawer-position-right.cmat-drawer-mode-side.cmat-drawer-opened{margin-right:0}cmat-drawer.cmat-drawer-position-right.cmat-drawer-mode-over{right:0;transform:translate3d(100%,0,0)}cmat-drawer.cmat-drawer-position-right.cmat-drawer-mode-over.cmat-drawer-opened{transform:translateZ(0)}cmat-drawer.cmat-drawer-position-right .cmat-drawer-content{right:0}cmat-drawer .cmat-drawer-content{position:absolute;display:flex;flex:1 1 auto;top:0;bottom:0;width:100%;height:100%;overflow:hidden}.cmat-drawer-overlay{position:absolute;inset:0;z-index:299;opacity:1;background-color:#0009}.cmat-drawer-overlay.cmat-drawer-overlay-fixed{position:fixed}.cmat-drawer-overlay.cmat-drawer-overlay-transparent{background-color:transparent}\n"] }]
307
307
  }], ctorParameters: () => [{ type: i1.AnimationBuilder }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: CmatDrawerService }, { type: i3.CmatUtilsService }], propDecorators: { fixed: [{
@@ -28,10 +28,10 @@ class CmatFullscreenComponent {
28
28
  });
29
29
  }
30
30
  }
31
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatFullscreenComponent, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
32
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: CmatFullscreenComponent, isStandalone: true, selector: "cmat-fullscreen", inputs: { iconTpl: "iconTpl", tooltip: "tooltip" }, exportAs: ["cmatFullscreen"], ngImport: i0, template: "<!-- Button -->\r\n<button type=\"button\" mat-icon-button [matTooltip]=\"tooltip || '\u5207\u6362\u5168\u5C4F'\" (click)=\"toggleFullscreen()\">\r\n <ng-container [ngTemplateOutlet]=\"iconTpl || defaultIconTpl\"></ng-container>\r\n</button>\r\n\r\n<!-- Default icon -->\r\n<ng-template #defaultIconTpl>\r\n <mat-icon [svgIcon]=\"'heroicons_outline:arrows-pointing-out'\"></mat-icon>\r\n</ng-template>", dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatFullscreenComponent, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
32
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: CmatFullscreenComponent, isStandalone: true, selector: "cmat-fullscreen", inputs: { iconTpl: "iconTpl", tooltip: "tooltip" }, exportAs: ["cmatFullscreen"], ngImport: i0, template: "<!-- Button -->\r\n<button type=\"button\" mat-icon-button [matTooltip]=\"tooltip || '\u5207\u6362\u5168\u5C4F'\" (click)=\"toggleFullscreen()\">\r\n <ng-container [ngTemplateOutlet]=\"iconTpl || defaultIconTpl\"></ng-container>\r\n</button>\r\n\r\n<!-- Default icon -->\r\n<ng-template #defaultIconTpl>\r\n <mat-icon [svgIcon]=\"'heroicons_outline:arrows-pointing-out'\"></mat-icon>\r\n</ng-template>", dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
33
33
  }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatFullscreenComponent, decorators: [{
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatFullscreenComponent, decorators: [{
35
35
  type: Component,
36
36
  args: [{ selector: 'cmat-fullscreen', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatFullscreen', standalone: true, imports: [MatButtonModule, MatTooltipModule, NgTemplateOutlet, MatIconModule], template: "<!-- Button -->\r\n<button type=\"button\" mat-icon-button [matTooltip]=\"tooltip || '\u5207\u6362\u5168\u5C4F'\" (click)=\"toggleFullscreen()\">\r\n <ng-container [ngTemplateOutlet]=\"iconTpl || defaultIconTpl\"></ng-container>\r\n</button>\r\n\r\n<!-- Default icon -->\r\n<ng-template #defaultIconTpl>\r\n <mat-icon [svgIcon]=\"'heroicons_outline:arrows-pointing-out'\"></mat-icon>\r\n</ng-template>" }]
37
37
  }], ctorParameters: () => [{ type: Document, decorators: [{
@@ -38,10 +38,10 @@ class CmatHighlightService {
38
38
  // indentation, join them together and return it
39
39
  return lines.map(line => line.substring(indentation)).join('\n');
40
40
  }
41
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatHighlightService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
42
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatHighlightService, providedIn: 'root' }); }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatHighlightService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
42
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatHighlightService, providedIn: 'root' }); }
43
43
  }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatHighlightService, decorators: [{
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatHighlightService, decorators: [{
45
45
  type: Injectable,
46
46
  args: [{
47
47
  providedIn: 'root'
@@ -108,10 +108,10 @@ class CmatHighlightComponent {
108
108
  // Detect the changes
109
109
  this._viewRef.detectChanges();
110
110
  }
111
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatHighlightComponent, deps: [{ token: i1.DomSanitizer }, { token: i0.ElementRef }, { token: CmatHighlightService }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
112
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: CmatHighlightComponent, isStandalone: true, selector: "textarea[cmat-highlight]", inputs: { code: "code", lang: "lang" }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], exportAs: ["cmatHighlight"], usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>\r\n\r\n<ng-template let-highlightedCode=\"highlightedCode\" let-lang=\"lang\">\r\n <div class=\"cmat-highlight cmat-highlight-code-container\">\r\n <pre [ngClass]=\"'language-' + lang\"><code [ngClass]=\"'language-' + lang\" [innerHTML]=\"highlightedCode\"></code>\r\n </pre>\r\n </div>\r\n</ng-template>", styles: ["textarea[cmat-highlight]{display:none}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatHighlightComponent, deps: [{ token: i1.DomSanitizer }, { token: i0.ElementRef }, { token: CmatHighlightService }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
112
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: CmatHighlightComponent, isStandalone: true, selector: "textarea[cmat-highlight]", inputs: { code: "code", lang: "lang" }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], exportAs: ["cmatHighlight"], usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>\r\n\r\n<ng-template let-highlightedCode=\"highlightedCode\" let-lang=\"lang\">\r\n <div class=\"cmat-highlight cmat-highlight-code-container\">\r\n <pre [ngClass]=\"'language-' + lang\"><code [ngClass]=\"'language-' + lang\" [innerHTML]=\"highlightedCode\"></code>\r\n </pre>\r\n </div>\r\n</ng-template>", styles: ["textarea[cmat-highlight]{display:none}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
113
113
  }
114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatHighlightComponent, decorators: [{
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatHighlightComponent, decorators: [{
115
115
  type: Component,
116
116
  args: [{ selector: 'textarea[cmat-highlight]', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatHighlight', standalone: true, imports: [NgClass], template: "<ng-content></ng-content>\r\n\r\n<ng-template let-highlightedCode=\"highlightedCode\" let-lang=\"lang\">\r\n <div class=\"cmat-highlight cmat-highlight-code-container\">\r\n <pre [ngClass]=\"'language-' + lang\"><code [ngClass]=\"'language-' + lang\" [innerHTML]=\"highlightedCode\"></code>\r\n </pre>\r\n </div>\r\n</ng-template>", styles: ["textarea[cmat-highlight]{display:none}\n"] }]
117
117
  }], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: i0.ElementRef }, { type: CmatHighlightService }, { type: i0.ViewContainerRef }], propDecorators: { code: [{
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, Input, Output } from '@angular/core';
3
- import { JSONEditor, createAjvValidator, parseJSONPath, createMultiSelection, isJSONContent, isKeySelection, stringifyJSONPath, isMultiSelection } from 'vanilla-jsoneditor';
3
+ import { createJSONEditor, createAjvValidator, parseJSONPath, createMultiSelection, isJSONContent, isKeySelection, stringifyJSONPath, isMultiSelection } from 'vanilla-jsoneditor';
4
4
 
5
5
  class CmatJsonEditorComponent {
6
6
  constructor(_changeDetectorRef) {
@@ -17,7 +17,7 @@ class CmatJsonEditorComponent {
17
17
  if (!this.jsonEditorContainer.nativeElement) {
18
18
  console.error('Can\'t find the ElementRef reference for jsoneditor)');
19
19
  }
20
- this._editor = new JSONEditor({
20
+ this._editor = createJSONEditor({
21
21
  target: this.jsonEditorContainer.nativeElement,
22
22
  props: {
23
23
  ...this.options,
@@ -156,10 +156,10 @@ class CmatJsonEditorComponent {
156
156
  this.pathChanged.emit(st);
157
157
  }
158
158
  }
159
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatJsonEditorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
160
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: CmatJsonEditorComponent, isStandalone: true, selector: "cmat-json-editor", inputs: { options: "options", data: "data" }, outputs: { contentChanged: "contentChanged", pathChanged: "pathChanged" }, viewQueries: [{ propertyName: "jsonEditorContainer", first: true, predicate: ["jsonEditorContainer"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: '<div class="cmat-jsoneditor" [id]="id" #jsonEditorContainer></div>', isInline: true, styles: [".cmat-jsoneditor .jse-main.svelte-sxaskb{min-height:24rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
159
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatJsonEditorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
160
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: CmatJsonEditorComponent, isStandalone: true, selector: "cmat-json-editor", inputs: { options: "options", data: "data" }, outputs: { contentChanged: "contentChanged", pathChanged: "pathChanged" }, viewQueries: [{ propertyName: "jsonEditorContainer", first: true, predicate: ["jsonEditorContainer"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: '<div class="cmat-jsoneditor" [id]="id" #jsonEditorContainer></div>', isInline: true, styles: [".cmat-jsoneditor .jse-main.svelte-sxaskb{min-height:24rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
161
161
  }
162
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatJsonEditorComponent, decorators: [{
162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatJsonEditorComponent, decorators: [{
163
163
  type: Component,
164
164
  args: [{ selector: 'cmat-json-editor', template: '<div class="cmat-jsoneditor" [id]="id" #jsonEditorContainer></div>', preserveWhitespaces: false, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [], styles: [".cmat-jsoneditor .jse-main.svelte-sxaskb{min-height:24rem}\n"] }]
165
165
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { jsonEditorContainer: [{
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-components-json-editor.mjs","sources":["../../../projects/cmat/components/json-editor/json-editor.component.ts","../../../projects/cmat/components/json-editor/cmat-components-json-editor.ts"],"sourcesContent":["import {\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n OnDestroy,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n OnChanges,\r\n SimpleChanges,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport {\r\n JSONEditor,\r\n stringifyJSONPath,\r\n Content,\r\n MenuItem,\r\n createAjvValidator,\r\n parseJSONPath,\r\n JSONEditorSelection,\r\n isKeySelection,\r\n isJSONContent,\r\n JSONContent,\r\n isMultiSelection,\r\n createMultiSelection,\r\n MenuButton,\r\n TextContent,\r\n} from 'vanilla-jsoneditor';\r\n\r\n@Component({\r\n selector: 'cmat-json-editor',\r\n template: '<div class=\"cmat-jsoneditor\" [id]=\"id\" #jsonEditorContainer></div>',\r\n preserveWhitespaces: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['./json-editor.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: true,\r\n imports: []\r\n})\r\nexport class CmatJsonEditorComponent implements OnInit, OnChanges, OnDestroy {\r\n @ViewChild('jsonEditorContainer', { static: true }) jsonEditorContainer!: ElementRef;\r\n @Input() options: any;\r\n @Input() data: any;\r\n\r\n @Output() contentChanged: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() pathChanged: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n public id = 'cmatjsoneditor' + Math.floor(Math.random() * 1000000);\r\n content: Content = {\r\n text: undefined,\r\n json: {}\r\n };\r\n\r\n private _editor: JSONEditor | undefined;\r\n\r\n constructor(private _changeDetectorRef: ChangeDetectorRef) { }\r\n\r\n ngOnInit(): void {\r\n if (!this.jsonEditorContainer.nativeElement) {\r\n console.error('Can\\'t find the ElementRef reference for jsoneditor)');\r\n }\r\n this._editor = new JSONEditor({\r\n target: this.jsonEditorContainer.nativeElement,\r\n props: {\r\n ...this.options,\r\n content: this.content,\r\n onChange: (\r\n updatedContent,\r\n previousContent,\r\n { contentErrors, patchResult }\r\n ): void => {\r\n console.log('onChange', {\r\n updatedContent,\r\n previousContent,\r\n contentErrors,\r\n patchResult,\r\n });\r\n this.content = updatedContent;\r\n this.contentChanged.emit(updatedContent);\r\n },\r\n onSelect: this._onSelect.bind(this),\r\n onRenderMenu(\r\n items: MenuItem[],\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n context: { mode: 'tree' | 'text' | 'table'; modal: boolean }\r\n ): MenuItem[] | undefined {\r\n // remove buttons for table-mode, transform, sort\r\n items.splice(\r\n items.findIndex(i => (i as MenuButton)['text'] === 'table'),\r\n 1\r\n );\r\n items.splice(\r\n items.findIndex(i => (i as MenuButton)['className'] === 'jse-sort'),\r\n 1\r\n );\r\n items.splice(\r\n items.findIndex(i => (i as MenuButton)['className'] === 'jse-transform'),\r\n 1\r\n );\r\n\r\n items.forEach((item) => {\r\n const button = item as MenuButton;\r\n switch (button['title']) {\r\n case 'Switch to text mode (current mode: text)':\r\n button.text = '文本';\r\n button.title = '切换到文本模式(当前模式:文本)';\r\n break;\r\n case 'Switch to tree mode (current mode: text)':\r\n button.text = '树';\r\n button.title = '切换到树模式(当前模式:文本)';\r\n break;\r\n case 'Switch to text mode (current mode: tree)':\r\n button.text = '文本';\r\n button.title = '切换到文本模式(当前模式:树)';\r\n break;\r\n case 'Switch to tree mode (current mode: tree)':\r\n button.text = '树';\r\n button.title = '切换到树模式(当前模式:树)';\r\n break;\r\n case 'Format JSON: add proper indentation and new lines (Ctrl+I)':\r\n button.title = 'JSON格式化: 添加适当的缩进和新行 (Ctrl+I)';\r\n break;\r\n case 'Compact JSON: remove all white spacing and new lines (Ctrl+Shift+I)':\r\n button.title = '压缩JSON: 删除所有白色间距和新行 (Ctrl+Shift+I)';\r\n break;\r\n case 'Search (Ctrl+F)':\r\n button.title = '搜索 (Ctrl+F)';\r\n break;\r\n case 'Undo (Ctrl+Z)':\r\n button.title = '撤回 (Ctrl+Z)';\r\n break;\r\n case 'Redo (Ctrl+Shift+Z)':\r\n button.title = '重试 (Ctrl+Shift+Z)';\r\n break;\r\n case 'Expand all':\r\n button.title = '全部展开';\r\n break;\r\n case 'Collapse all':\r\n button.title = '全部折叠';\r\n break;\r\n case 'Open context menu (Click here, right click on the selection, or use the context menu button or Ctrl+Q)':\r\n button.title = '打开内容菜单 (单击此处,右键单击所选内容,或使用内容菜单按钮或 Ctrl+Q)';\r\n break;\r\n }\r\n });\r\n return items;\r\n },\r\n },\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.data) {\r\n this.content = {\r\n text: undefined,\r\n json: this.data\r\n };\r\n\r\n if (this._editor) {\r\n void this._editor.update(this.content);\r\n }\r\n\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n if(changes.options){\r\n if(this._editor){\r\n void this._editor?.updateProps(this.options);\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n void this._editor?.destroy();\r\n }\r\n\r\n setSchema(schema: any): void {\r\n const validator = createAjvValidator({ schema });\r\n void this._editor?.updateProps({ validator: validator });\r\n }\r\n\r\n setSelectionToPath(pathString: string): void {\r\n const path = parseJSONPath(pathString);\r\n const selection = createMultiSelection(path, path);\r\n\r\n try {\r\n void this._editor?.select(selection);\r\n } catch (error) {\r\n console.warn('Set selection to path not possible:', pathString, error);\r\n }\r\n this.pathChanged.emit(pathString);\r\n }\r\n\r\n get(): JSON | undefined {\r\n if (this._editor) {\r\n const content: Content = this._editor.get();\r\n if (isJSONContent(content)) {\r\n const j: any = (this._editor.get() as JSONContent).json;\r\n return j;\r\n } else {\r\n const t: any = (this._editor.get() as TextContent).text;\r\n const j: JSON = JSON.parse(t);\r\n return j;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n set(json: any): void {\r\n const value: JSONContent = {\r\n json: json,\r\n };\r\n\r\n void this._editor?.set(value);\r\n }\r\n\r\n private _onSelect(selection: JSONEditorSelection | null): void {\r\n if (isKeySelection(selection)) {\r\n const st = stringifyJSONPath((selection as any).path);\r\n this.pathChanged.emit(st);\r\n } else if (isMultiSelection(selection)) {\r\n const st = stringifyJSONPath((selection as any).anchorPath);\r\n this.pathChanged.emit(st);\r\n }\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cmat-components-json-editor.mjs","sources":["../../../projects/cmat/components/json-editor/json-editor.component.ts","../../../projects/cmat/components/json-editor/cmat-components-json-editor.ts"],"sourcesContent":["import {\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n OnDestroy,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n OnChanges,\r\n SimpleChanges,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport {\r\n stringifyJSONPath,\r\n Content,\r\n MenuItem,\r\n createAjvValidator,\r\n parseJSONPath,\r\n JSONEditorSelection,\r\n isKeySelection,\r\n isJSONContent,\r\n JSONContent,\r\n isMultiSelection,\r\n createMultiSelection,\r\n MenuButton,\r\n TextContent,\r\n createJSONEditor,\r\n JsonEditor,\r\n} from 'vanilla-jsoneditor';\r\n\r\n@Component({\r\n selector: 'cmat-json-editor',\r\n template: '<div class=\"cmat-jsoneditor\" [id]=\"id\" #jsonEditorContainer></div>',\r\n preserveWhitespaces: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['./json-editor.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: true,\r\n imports: []\r\n})\r\nexport class CmatJsonEditorComponent implements OnInit, OnChanges, OnDestroy {\r\n @ViewChild('jsonEditorContainer', { static: true }) jsonEditorContainer!: ElementRef;\r\n @Input() options: any;\r\n @Input() data: any;\r\n\r\n @Output() contentChanged: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() pathChanged: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n public id = 'cmatjsoneditor' + Math.floor(Math.random() * 1000000);\r\n content: Content = {\r\n text: undefined,\r\n json: {}\r\n };\r\n\r\n private _editor: JsonEditor;\r\n\r\n constructor(private _changeDetectorRef: ChangeDetectorRef) { }\r\n\r\n ngOnInit(): void {\r\n if (!this.jsonEditorContainer.nativeElement) {\r\n console.error('Can\\'t find the ElementRef reference for jsoneditor)');\r\n }\r\n this._editor = createJSONEditor({\r\n target: this.jsonEditorContainer.nativeElement,\r\n props: {\r\n ...this.options,\r\n content: this.content,\r\n onChange: (\r\n updatedContent: Content,\r\n previousContent: any,\r\n { contentErrors, patchResult }: any\r\n ): void => {\r\n console.log('onChange', {\r\n updatedContent,\r\n previousContent,\r\n contentErrors,\r\n patchResult,\r\n });\r\n this.content = updatedContent;\r\n this.contentChanged.emit(updatedContent);\r\n },\r\n onSelect: this._onSelect.bind(this),\r\n onRenderMenu(\r\n items: MenuItem[],\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n context: { mode: 'tree' | 'text' | 'table'; modal: boolean }\r\n ): MenuItem[] | undefined {\r\n // remove buttons for table-mode, transform, sort\r\n items.splice(\r\n items.findIndex(i => (i as MenuButton)['text'] === 'table'),\r\n 1\r\n );\r\n items.splice(\r\n items.findIndex(i => (i as MenuButton)['className'] === 'jse-sort'),\r\n 1\r\n );\r\n items.splice(\r\n items.findIndex(i => (i as MenuButton)['className'] === 'jse-transform'),\r\n 1\r\n );\r\n\r\n items.forEach((item) => {\r\n const button = item as MenuButton;\r\n switch (button['title']) {\r\n case 'Switch to text mode (current mode: text)':\r\n button.text = '文本';\r\n button.title = '切换到文本模式(当前模式:文本)';\r\n break;\r\n case 'Switch to tree mode (current mode: text)':\r\n button.text = '树';\r\n button.title = '切换到树模式(当前模式:文本)';\r\n break;\r\n case 'Switch to text mode (current mode: tree)':\r\n button.text = '文本';\r\n button.title = '切换到文本模式(当前模式:树)';\r\n break;\r\n case 'Switch to tree mode (current mode: tree)':\r\n button.text = '树';\r\n button.title = '切换到树模式(当前模式:树)';\r\n break;\r\n case 'Format JSON: add proper indentation and new lines (Ctrl+I)':\r\n button.title = 'JSON格式化: 添加适当的缩进和新行 (Ctrl+I)';\r\n break;\r\n case 'Compact JSON: remove all white spacing and new lines (Ctrl+Shift+I)':\r\n button.title = '压缩JSON: 删除所有白色间距和新行 (Ctrl+Shift+I)';\r\n break;\r\n case 'Search (Ctrl+F)':\r\n button.title = '搜索 (Ctrl+F)';\r\n break;\r\n case 'Undo (Ctrl+Z)':\r\n button.title = '撤回 (Ctrl+Z)';\r\n break;\r\n case 'Redo (Ctrl+Shift+Z)':\r\n button.title = '重试 (Ctrl+Shift+Z)';\r\n break;\r\n case 'Expand all':\r\n button.title = '全部展开';\r\n break;\r\n case 'Collapse all':\r\n button.title = '全部折叠';\r\n break;\r\n case 'Open context menu (Click here, right click on the selection, or use the context menu button or Ctrl+Q)':\r\n button.title = '打开内容菜单 (单击此处,右键单击所选内容,或使用内容菜单按钮或 Ctrl+Q)';\r\n break;\r\n }\r\n });\r\n return items;\r\n },\r\n },\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.data) {\r\n this.content = {\r\n text: undefined,\r\n json: this.data\r\n };\r\n\r\n if (this._editor) {\r\n void this._editor.update(this.content);\r\n }\r\n\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n if(changes.options){\r\n if(this._editor){\r\n void this._editor?.updateProps(this.options);\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n void this._editor?.destroy();\r\n }\r\n\r\n setSchema(schema: any): void {\r\n const validator = createAjvValidator({ schema });\r\n void this._editor?.updateProps({ validator: validator });\r\n }\r\n\r\n setSelectionToPath(pathString: string): void {\r\n const path = parseJSONPath(pathString);\r\n const selection = createMultiSelection(path, path);\r\n\r\n try {\r\n void this._editor?.select(selection);\r\n } catch (error) {\r\n console.warn('Set selection to path not possible:', pathString, error);\r\n }\r\n this.pathChanged.emit(pathString);\r\n }\r\n\r\n get(): JSON | undefined {\r\n if (this._editor) {\r\n const content: Content = this._editor.get();\r\n if (isJSONContent(content)) {\r\n const j: any = (this._editor.get() as JSONContent).json;\r\n return j;\r\n } else {\r\n const t: any = (this._editor.get() as TextContent).text;\r\n const j: JSON = JSON.parse(t);\r\n return j;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n set(json: any): void {\r\n const value: JSONContent = {\r\n json: json,\r\n };\r\n\r\n void this._editor?.set(value);\r\n }\r\n\r\n private _onSelect(selection: JSONEditorSelection | undefined): void {\r\n if (isKeySelection(selection)) {\r\n const st = stringifyJSONPath((selection as any).path);\r\n this.pathChanged.emit(st);\r\n } else if (isMultiSelection(selection)) {\r\n const st = stringifyJSONPath((selection as any).anchorPath);\r\n this.pathChanged.emit(st);\r\n }\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}