@tetacom/ng-components 1.1.2 → 1.1.4

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 (738) hide show
  1. package/assets/color-icons.svg +374 -697
  2. package/assets/file-icons.svg +0 -1
  3. package/assets/icons.svg +205 -138
  4. package/common/contract/auto-close-ignore-case.d.ts +1 -1
  5. package/common/contract/constructor-type.d.ts +1 -1
  6. package/common/model/public-api.d.ts +1 -0
  7. package/common/model/view-type.model.d.ts +1 -0
  8. package/common/public-api.d.ts +1 -0
  9. package/component/accordion/accordion/accordion.component.d.ts +1 -1
  10. package/component/accordion/accordion-content.directive.d.ts +1 -1
  11. package/component/accordion/accordion-head/accordion-head.component.d.ts +1 -1
  12. package/component/accordion/accordion-item/accordion-item.component.d.ts +4 -1
  13. package/component/autocomplete/autocomplete/autocomplete.component.d.ts +1 -1
  14. package/component/avatar/avatar/avatar.component.d.ts +17 -0
  15. package/component/avatar/avatar.module.d.ts +9 -0
  16. package/component/avatar/model/avatar-color.enum.d.ts +20 -0
  17. package/component/avatar/public-api.d.ts +2 -0
  18. package/component/button/button/button.component.d.ts +5 -2
  19. package/component/chart-3d/chart3d/chart3d.component.d.ts +1 -1
  20. package/component/checkbox/checkbox/checkbox.component.d.ts +2 -1
  21. package/component/date-picker/base-calendar.d.ts +49 -0
  22. package/component/date-picker/base-picker.d.ts +60 -0
  23. package/component/date-picker/date-picker/date-calendar/date-calendar.component.d.ts +20 -0
  24. package/component/date-picker/date-picker/date-picker.component.d.ts +38 -66
  25. package/component/date-picker/date-picker.module.d.ts +19 -16
  26. package/component/date-picker/date-range/date-range.component.d.ts +46 -0
  27. package/component/date-picker/date-range/range-calendar/range-calendar.component.d.ts +39 -0
  28. package/component/date-picker/day-picker/day-item/day-item.component.d.ts +9 -0
  29. package/component/date-picker/day-picker/day-picker.component.d.ts +30 -0
  30. package/component/date-picker/model/from-to.model.d.ts +4 -0
  31. package/component/date-picker/model/min-max-date.model.d.ts +4 -0
  32. package/component/date-picker/model/public-api.d.ts +5 -0
  33. package/component/date-picker/month-picker/month-picker.component.d.ts +16 -50
  34. package/component/date-picker/public-api.d.ts +6 -5
  35. package/component/date-picker/year-picker/scroll-to-selected-year.directive.d.ts +11 -0
  36. package/component/date-picker/year-picker/year-picker.component.d.ts +24 -0
  37. package/component/delimiter/delimiter/delimiter.component.d.ts +1 -1
  38. package/component/divider/divider/divider.component.d.ts +10 -0
  39. package/component/divider/divider.module.d.ts +8 -0
  40. package/component/divider/public-api.d.ts +2 -0
  41. package/component/dropdown/dropdown/dropdown.component.d.ts +1 -1
  42. package/component/dropdown/dropdown-base.d.ts +3 -1
  43. package/component/dropdown/dropdown-content.directive.d.ts +1 -1
  44. package/component/dropdown/dropdown-head.directive.d.ts +1 -1
  45. package/component/dropdown/dropdown.directive.d.ts +1 -1
  46. package/component/dynamic-component/popup-content/popup-content.component.d.ts +1 -1
  47. package/component/expand-card/expand-card/expand-card.component.d.ts +1 -1
  48. package/component/expand-card/expand-item/expand-item.component.d.ts +1 -1
  49. package/component/expand-panel/expand-panel/expand-panel.component.d.ts +1 -1
  50. package/component/expand-panel/expand-panel-content.directive.d.ts +1 -1
  51. package/component/expand-panel/expand-panel-head.directive.d.ts +1 -1
  52. package/component/file-upload/file-item/file-item.component.d.ts +1 -1
  53. package/component/file-upload/file-upload-area/file-upload-area.component.d.ts +1 -1
  54. package/component/filter/base/filter-base.d.ts +2 -2
  55. package/component/filter/base/filter-component-base.d.ts +1 -1
  56. package/component/filter/boolean-filter/boolean-filter.component.d.ts +2 -2
  57. package/component/filter/contarct/boolean-filter.d.ts +1 -2
  58. package/component/filter/contarct/date-filter.d.ts +1 -2
  59. package/component/filter/contarct/i-filter.d.ts +2 -2
  60. package/component/filter/contarct/list-filter.d.ts +1 -2
  61. package/component/filter/contarct/numeric-filter.d.ts +1 -2
  62. package/component/filter/contarct/string-filter.d.ts +1 -2
  63. package/component/filter/date-filter/date-filter.component.d.ts +3 -2
  64. package/component/filter/filter-host/filter-host.component.d.ts +2 -2
  65. package/component/filter/list-filter/list-filter.component.d.ts +2 -2
  66. package/component/filter/numeric-filter/numeric-filter.component.d.ts +3 -2
  67. package/component/filter/string-filter/string-filter.component.d.ts +2 -2
  68. package/component/icon/icon/icon.component.d.ts +1 -1
  69. package/component/icon/icon-file/icon-file.component.d.ts +9 -3
  70. package/component/icon/icon-file/icon-file.module.d.ts +9 -0
  71. package/component/icon/icon-sprite.directive.d.ts +1 -1
  72. package/component/icon/icon.module.d.ts +4 -5
  73. package/component/icon/public-api.d.ts +1 -0
  74. package/component/input/color-input/color-input.component.d.ts +1 -1
  75. package/component/input/form-group-title/form-group-title.component.d.ts +1 -1
  76. package/component/input/input/input.component.d.ts +3 -1
  77. package/component/input/text-field/text-field.component.d.ts +1 -1
  78. package/component/message/message/message.component.d.ts +1 -1
  79. package/component/message/message-host/message-host.component.d.ts +1 -1
  80. package/component/message/model/message.d.ts +3 -0
  81. package/component/modal/dialog/dialog.component.d.ts +1 -1
  82. package/component/modal/modal-container/modal-container.component.d.ts +1 -1
  83. package/component/pager/pager/pager.component.d.ts +1 -1
  84. package/component/panel/panel/panel.component.d.ts +1 -1
  85. package/component/progress-bar/progress-bar/progress-bar.component.d.ts +1 -1
  86. package/component/property-grid/property-grid/property-grid-group/property-grid-group.component.d.ts +1 -1
  87. package/component/property-grid/property-grid/property-grid-item/property-grid-item.component.d.ts +1 -1
  88. package/component/property-grid/property-grid/property-grid-item-description.directive.d.ts +1 -1
  89. package/component/property-grid/property-grid/property-grid.component.d.ts +1 -1
  90. package/component/public-api.d.ts +2 -0
  91. package/component/radio/radio/radio.component.d.ts +1 -1
  92. package/component/radio/radio-button/radio-button.component.d.ts +1 -1
  93. package/component/resize-panel/resize-panel/resize-panel.component.d.ts +1 -1
  94. package/component/select/select/select.component.d.ts +4 -1
  95. package/component/select/select-option.directive.d.ts +1 -1
  96. package/component/select/select-value.directive.d.ts +1 -1
  97. package/component/sidebar/sidebar/sidebar.component.d.ts +1 -1
  98. package/component/switch/switch/switch.component.d.ts +4 -1
  99. package/component/switch/switch-button/switch-button.component.d.ts +1 -1
  100. package/component/table/base/cell-component-base.d.ts +1 -1
  101. package/component/table/base/head-cell-component-base.d.ts +1 -1
  102. package/component/table/cell/cell.component.d.ts +1 -1
  103. package/component/table/cell-host/cell-host.component.d.ts +1 -1
  104. package/component/table/contract/table-column.d.ts +0 -2
  105. package/component/table/default/boolean-cell/boolean-cell.component.d.ts +1 -4
  106. package/component/table/default/date-cell/date-cell.component.d.ts +1 -4
  107. package/component/table/default/date-time-cell/date-time-cell.component.d.ts +1 -4
  108. package/component/table/default/default-head-cell/default-head-cell.component.d.ts +1 -1
  109. package/component/table/default/list-cell/list-cell.component.d.ts +1 -5
  110. package/component/table/default/numeric-cell/numeric-cell.component.d.ts +1 -4
  111. package/component/table/default/string-cell/string-cell.component.d.ts +1 -4
  112. package/component/table/head-cell/head-cell.component.d.ts +1 -1
  113. package/component/table/head-cell-dropdown/head-cell-dropdown.component.d.ts +1 -1
  114. package/component/table/head-cell-host/head-cell-host.component.d.ts +1 -1
  115. package/component/table/selection-cell/selection-cell.component.d.ts +1 -1
  116. package/component/table/selection-head-cell/selection-head-cell.component.d.ts +1 -1
  117. package/component/table/table/table.component.d.ts +1 -1
  118. package/component/table/table-body/table-body.component.d.ts +1 -1
  119. package/component/table/table-head/filter-dropdown-tab/filter-dropdown-tab.component.d.ts +1 -1
  120. package/component/table/table-head/main-dropdown-tab/main-dropdown-tab.component.d.ts +1 -1
  121. package/component/table/table-head/table-head.component.d.ts +1 -1
  122. package/component/table/table-head/visibility-dropdown-tab/visibility-dropdown-tab.component.d.ts +1 -1
  123. package/component/table/table-head-group/table-head-group.component.d.ts +1 -1
  124. package/component/tabs/tab/tab.component.d.ts +1 -1
  125. package/component/tabs/tab-content.directive.d.ts +1 -1
  126. package/component/tabs/tab-title.directive.d.ts +1 -1
  127. package/component/tabs/tabs/tabs.component.d.ts +1 -1
  128. package/component/theme-switch/theme-switch/theme-switch.component.d.ts +1 -1
  129. package/component/toggle/toggle/toggle.component.d.ts +1 -1
  130. package/component/toolbar/toolbar/toolbar.component.d.ts +1 -1
  131. package/component/tree/tree/tree.component.d.ts +1 -1
  132. package/component/tree/tree-item/tree-item.component.d.ts +1 -1
  133. package/component/tree/tree-item-toggle/tree-item-toggle.component.d.ts +1 -1
  134. package/directive/auto-position/auto-position.directive.d.ts +1 -1
  135. package/directive/click-outside/click-outside.directive.d.ts +1 -1
  136. package/directive/context-menu/context-menu.directive.d.ts +1 -1
  137. package/directive/disable-control/disable-control.directive.d.ts +1 -1
  138. package/directive/drag-drop/drag-container.directive.d.ts +1 -1
  139. package/directive/drag-drop/drag-placeholder.directive.d.ts +1 -1
  140. package/directive/drag-drop/drag-preview.directive.d.ts +1 -1
  141. package/directive/drag-drop/drag.directive.d.ts +1 -1
  142. package/directive/drag-drop/model/drop-target.d.ts +1 -1
  143. package/directive/drag-sort/drag-sort-container.directive.d.ts +1 -1
  144. package/directive/drag-sort/drag-sort-item.directive.d.ts +1 -1
  145. package/directive/dynamic-content-base.directive.d.ts +1 -1
  146. package/directive/highlight/highlight.directive.d.ts +1 -1
  147. package/directive/hint/hint.directive.d.ts +3 -1
  148. package/directive/let/let.directive.d.ts +1 -1
  149. package/directive/loader/loader.directive.d.ts +1 -1
  150. package/directive/no-autofill/no-autofill.directive.d.ts +1 -1
  151. package/directive/only-number/only-number.directive.d.ts +1 -1
  152. package/directive/resize-drag/resize-drag.directive.d.ts +1 -1
  153. package/directive/scroll-into-view/scroll-into-view.directive.d.ts +1 -1
  154. package/directive/scrollable/scrollable/scrollable.component.d.ts +1 -1
  155. package/directive/scrollable/scrollable.directive.d.ts +1 -1
  156. package/directive/teta-template/teta-template.directive.d.ts +1 -1
  157. package/directive/tooltip/tooltip.directive.d.ts +1 -1
  158. package/esm2022/common/contract/teta-content-ref.mjs +11 -0
  159. package/esm2022/common/model/public-api.mjs +2 -0
  160. package/esm2022/common/model/view-type.model.mjs +2 -0
  161. package/esm2022/common/public-api.mjs +6 -0
  162. package/esm2022/common/service/click.service.mjs +26 -0
  163. package/esm2022/common/service/dynamic-component.service.mjs +97 -0
  164. package/esm2022/common/service/overlay-container.service.mjs +43 -0
  165. package/esm2022/component/accordion/accordion/accordion.component.mjs +19 -0
  166. package/esm2022/component/accordion/accordion-content.directive.mjs +17 -0
  167. package/esm2022/component/accordion/accordion-head/accordion-head.component.mjs +54 -0
  168. package/esm2022/component/accordion/accordion-item/accordion-item.component.mjs +58 -0
  169. package/{esm2020 → esm2022}/component/accordion/accordion.module.mjs +7 -7
  170. package/{esm2020 → esm2022}/component/autocomplete/autocomplete/autocomplete.component.mjs +4 -4
  171. package/{esm2020 → esm2022}/component/autocomplete/autocomplete.module.mjs +5 -5
  172. package/esm2022/component/avatar/avatar/avatar.component.mjs +60 -0
  173. package/esm2022/component/avatar/avatar.module.mjs +28 -0
  174. package/esm2022/component/avatar/model/avatar-color.enum.mjs +22 -0
  175. package/esm2022/component/avatar/public-api.mjs +3 -0
  176. package/esm2022/component/button/button/button.component.mjs +57 -0
  177. package/{esm2020 → esm2022}/component/button/button.module.mjs +5 -5
  178. package/{esm2020 → esm2022}/component/chart-3d/chart-3d.module.mjs +5 -5
  179. package/esm2022/component/chart-3d/chart3d/chart3d.component.mjs +255 -0
  180. package/esm2022/component/chart-3d/model/chart-3d-options.mjs +9 -0
  181. package/esm2022/component/chart-3d/model/series-3d.mjs +9 -0
  182. package/esm2022/component/checkbox/checkbox/checkbox.component.mjs +154 -0
  183. package/{esm2020 → esm2022}/component/checkbox/checkbox.module.mjs +7 -7
  184. package/esm2022/component/date-picker/base-calendar.mjs +100 -0
  185. package/esm2022/component/date-picker/base-picker.mjs +107 -0
  186. package/esm2022/component/date-picker/date-picker/date-calendar/date-calendar.component.mjs +56 -0
  187. package/esm2022/component/date-picker/date-picker/date-picker.component.mjs +214 -0
  188. package/esm2022/component/date-picker/date-picker.module.mjs +65 -0
  189. package/esm2022/component/date-picker/date-range/date-range.component.mjs +218 -0
  190. package/esm2022/component/date-picker/date-range/range-calendar/range-calendar.component.mjs +119 -0
  191. package/esm2022/component/date-picker/day-picker/day-item/day-item.component.mjs +16 -0
  192. package/esm2022/component/date-picker/day-picker/day-picker.component.mjs +120 -0
  193. package/esm2022/component/date-picker/model/date-period.mjs +9 -0
  194. package/esm2022/component/date-picker/model/day-model.mjs +19 -0
  195. package/esm2022/component/date-picker/model/from-to.model.mjs +2 -0
  196. package/esm2022/component/date-picker/model/min-max-date.model.mjs +2 -0
  197. package/esm2022/component/date-picker/model/public-api.mjs +6 -0
  198. package/esm2022/component/date-picker/month-picker/month-picker.component.mjs +53 -0
  199. package/esm2022/component/date-picker/public-api.mjs +7 -0
  200. package/esm2022/component/date-picker/year-picker/scroll-to-selected-year.directive.mjs +27 -0
  201. package/esm2022/component/date-picker/year-picker/year-picker.component.mjs +53 -0
  202. package/esm2022/component/delimiter/delimiter/delimiter.component.mjs +63 -0
  203. package/{esm2020 → esm2022}/component/delimiter/delimiter.module.mjs +5 -5
  204. package/esm2022/component/divider/divider/divider.component.mjs +20 -0
  205. package/esm2022/component/divider/divider.module.mjs +20 -0
  206. package/esm2022/component/divider/public-api.mjs +3 -0
  207. package/esm2022/component/dropdown/dropdown/dropdown.component.mjs +36 -0
  208. package/esm2022/component/dropdown/dropdown-base.mjs +238 -0
  209. package/esm2022/component/dropdown/dropdown-content.directive.mjs +19 -0
  210. package/esm2022/component/dropdown/dropdown-head.directive.mjs +19 -0
  211. package/esm2022/component/dropdown/dropdown.directive.mjs +43 -0
  212. package/{esm2020 → esm2022}/component/dropdown/dropdown.module.mjs +11 -11
  213. package/{esm2020 → esm2022}/component/dynamic-component/dynamic-component.module.mjs +5 -5
  214. package/esm2022/component/dynamic-component/popup-content/popup-content.component.mjs +59 -0
  215. package/{esm2020 → esm2022}/component/expand-card/expand-card/expand-card.component.mjs +8 -8
  216. package/{esm2020 → esm2022}/component/expand-card/expand-card.module.mjs +15 -15
  217. package/{esm2020 → esm2022}/component/expand-card/expand-item/expand-item.component.mjs +6 -6
  218. package/esm2022/component/expand-panel/expand-panel/expand-panel.component.mjs +68 -0
  219. package/esm2022/component/expand-panel/expand-panel-content.directive.mjs +17 -0
  220. package/esm2022/component/expand-panel/expand-panel-head.directive.mjs +17 -0
  221. package/{esm2020 → esm2022}/component/expand-panel/expand-panel.module.mjs +17 -17
  222. package/{esm2020 → esm2022}/component/file-upload/file-item/file-item.component.mjs +4 -4
  223. package/esm2022/component/file-upload/file-upload-area/file-upload-area.component.mjs +87 -0
  224. package/{esm2020 → esm2022}/component/file-upload/file-upload.module.mjs +5 -5
  225. package/esm2022/component/filter/base/filter-base.mjs +13 -0
  226. package/{esm2020 → esm2022}/component/filter/base/filter-component-base.mjs +1 -1
  227. package/esm2022/component/filter/boolean-filter/boolean-filter.component.mjs +67 -0
  228. package/esm2022/component/filter/contarct/boolean-filter.mjs +8 -0
  229. package/esm2022/component/filter/contarct/date-filter-value.mjs +17 -0
  230. package/esm2022/component/filter/contarct/date-filter.mjs +11 -0
  231. package/esm2022/component/filter/contarct/filter-item.mjs +78 -0
  232. package/esm2022/component/filter/contarct/filter-state.mjs +145 -0
  233. package/{esm2020 → esm2022}/component/filter/contarct/i-filter.mjs +1 -1
  234. package/esm2022/component/filter/contarct/list-filter.mjs +13 -0
  235. package/esm2022/component/filter/contarct/numeric-filter-value.mjs +22 -0
  236. package/esm2022/component/filter/contarct/numeric-filter.mjs +10 -0
  237. package/esm2022/component/filter/contarct/sort-param.mjs +26 -0
  238. package/esm2022/component/filter/contarct/string-filter.mjs +13 -0
  239. package/esm2022/component/filter/date-filter/date-filter.component.mjs +67 -0
  240. package/esm2022/component/filter/filter-host/filter-host.component.mjs +85 -0
  241. package/{esm2020 → esm2022}/component/filter/filter.module.mjs +31 -31
  242. package/esm2022/component/filter/list-filter/list-filter.component.mjs +103 -0
  243. package/esm2022/component/filter/numeric-filter/numeric-filter.component.mjs +67 -0
  244. package/esm2022/component/filter/string-filter/string-filter.component.mjs +68 -0
  245. package/esm2022/component/icon/icon/icon.component.mjs +39 -0
  246. package/esm2022/component/icon/icon-file/icon-file.component.mjs +30 -0
  247. package/esm2022/component/icon/icon-file/icon-file.module.mjs +28 -0
  248. package/esm2022/component/icon/icon-sprite.directive.mjs +34 -0
  249. package/esm2022/component/icon/icon.module.mjs +33 -0
  250. package/esm2022/component/icon/icon.service.mjs +64 -0
  251. package/{esm2020 → esm2022}/component/icon/public-api.mjs +2 -1
  252. package/esm2022/component/input/color-input/color-input.component.mjs +75 -0
  253. package/{esm2020 → esm2022}/component/input/form-group-title/form-group-title.component.mjs +6 -7
  254. package/esm2022/component/input/input/input.component.mjs +41 -0
  255. package/esm2022/component/input/input.module.mjs +26 -0
  256. package/esm2022/component/input/text-field/text-field.component.mjs +102 -0
  257. package/esm2022/component/message/message/message.component.mjs +79 -0
  258. package/esm2022/component/message/message-host/message-host.component.mjs +91 -0
  259. package/{esm2020 → esm2022}/component/message/message.module.mjs +9 -9
  260. package/esm2022/component/message/message.service.mjs +37 -0
  261. package/esm2022/component/message/model/message.mjs +29 -0
  262. package/esm2022/component/modal/dialog/dialog.component.mjs +51 -0
  263. package/esm2022/component/modal/dialog.service.mjs +40 -0
  264. package/esm2022/component/modal/modal-container/modal-container.component.mjs +86 -0
  265. package/esm2022/component/modal/modal.module.mjs +50 -0
  266. package/esm2022/component/modal/modal.service.mjs +125 -0
  267. package/{esm2020 → esm2022}/component/modal/model/current-modal.mjs +2 -1
  268. package/esm2022/component/modal/model/modal-instance.mjs +37 -0
  269. package/esm2022/component/pager/model/pager-state.mjs +70 -0
  270. package/{esm2020 → esm2022}/component/pager/pager/pager.component.mjs +4 -4
  271. package/{esm2020 → esm2022}/component/pager/pager.module.mjs +7 -7
  272. package/esm2022/component/panel/panel/panel.component.mjs +50 -0
  273. package/{esm2020 → esm2022}/component/panel/panel.module.mjs +5 -5
  274. package/esm2022/component/progress-bar/progress-bar/progress-bar.component.mjs +139 -0
  275. package/{esm2020 → esm2022}/component/progress-bar/progress-bar.module.mjs +5 -5
  276. package/esm2022/component/property-grid/property-grid/property-grid-group/property-grid-group.component.mjs +45 -0
  277. package/esm2022/component/property-grid/property-grid/property-grid-item/property-grid-item.component.mjs +141 -0
  278. package/esm2022/component/property-grid/property-grid/property-grid-item-description.directive.mjs +21 -0
  279. package/esm2022/component/property-grid/property-grid/property-grid.component.mjs +105 -0
  280. package/esm2022/component/property-grid/property-grid.module.mjs +87 -0
  281. package/esm2022/component/public-api.mjs +68 -0
  282. package/esm2022/component/radio/radio/radio.component.mjs +250 -0
  283. package/esm2022/component/radio/radio-button/radio-button.component.mjs +69 -0
  284. package/{esm2020 → esm2022}/component/radio/radio.module.mjs +5 -5
  285. package/esm2022/component/resize-panel/resize-panel/resize-panel.component.mjs +176 -0
  286. package/{esm2020 → esm2022}/component/resize-panel/resize-panel.module.mjs +5 -5
  287. package/esm2022/component/select/select/select.component.mjs +284 -0
  288. package/esm2022/component/select/select-option.directive.mjs +17 -0
  289. package/esm2022/component/select/select-value.directive.mjs +17 -0
  290. package/{esm2020 → esm2022}/component/select/select.module.mjs +21 -21
  291. package/esm2022/component/sidebar/sidebar/sidebar.component.mjs +56 -0
  292. package/{esm2020 → esm2022}/component/sidebar/sidebar.module.mjs +9 -9
  293. package/esm2022/component/switch/switch/switch.component.mjs +67 -0
  294. package/esm2022/component/switch/switch-button/switch-button.component.mjs +52 -0
  295. package/{esm2020 → esm2022}/component/switch/switch.module.mjs +5 -5
  296. package/esm2022/component/switch/switch.service.mjs +22 -0
  297. package/esm2022/component/table/base/cell-component-base.mjs +108 -0
  298. package/{esm2020 → esm2022}/component/table/base/head-cell-component-base.mjs +4 -4
  299. package/esm2022/component/table/cell/cell.component.mjs +38 -0
  300. package/esm2022/component/table/cell-host/cell-host.component.mjs +56 -0
  301. package/esm2022/component/table/contract/column-reorder-event.mjs +9 -0
  302. package/esm2022/component/table/contract/column-resize-event.mjs +9 -0
  303. package/esm2022/component/table/contract/sort-event.mjs +9 -0
  304. package/esm2022/component/table/contract/table-column-store.mjs +17 -0
  305. package/esm2022/component/table/contract/table-column.mjs +112 -0
  306. package/esm2022/component/table/default/boolean-cell/boolean-cell.component.mjs +44 -0
  307. package/esm2022/component/table/default/date-cell/date-cell.component.mjs +46 -0
  308. package/esm2022/component/table/default/date-time-cell/date-time-cell.component.mjs +45 -0
  309. package/esm2022/component/table/default/default-head-cell/default-head-cell.component.mjs +51 -0
  310. package/esm2022/component/table/default/list-cell/list-cell.component.mjs +71 -0
  311. package/esm2022/component/table/default/numeric-cell/numeric-cell.component.mjs +53 -0
  312. package/esm2022/component/table/default/string-cell/string-cell.component.mjs +53 -0
  313. package/esm2022/component/table/head-cell/head-cell.component.mjs +207 -0
  314. package/esm2022/component/table/head-cell-dropdown/head-cell-dropdown.component.mjs +59 -0
  315. package/esm2022/component/table/head-cell-host/head-cell-host.component.mjs +66 -0
  316. package/esm2022/component/table/selection-cell/selection-cell.component.mjs +49 -0
  317. package/esm2022/component/table/selection-head-cell/selection-head-cell.component.mjs +47 -0
  318. package/esm2022/component/table/service/table.service.mjs +672 -0
  319. package/esm2022/component/table/table/table.component.mjs +491 -0
  320. package/esm2022/component/table/table-body/table-body.component.mjs +224 -0
  321. package/esm2022/component/table/table-head/filter-dropdown-tab/filter-dropdown-tab.component.mjs +66 -0
  322. package/esm2022/component/table/table-head/main-dropdown-tab/main-dropdown-tab.component.mjs +97 -0
  323. package/esm2022/component/table/table-head/table-head.component.mjs +85 -0
  324. package/esm2022/component/table/table-head/visibility-dropdown-tab/visibility-dropdown-tab.component.mjs +153 -0
  325. package/esm2022/component/table/table-head-group/table-head-group.component.mjs +82 -0
  326. package/{esm2020 → esm2022}/component/table/table.module.mjs +74 -74
  327. package/esm2022/component/tabs/tab/tab.component.mjs +46 -0
  328. package/esm2022/component/tabs/tab-content.directive.mjs +17 -0
  329. package/esm2022/component/tabs/tab-title.directive.mjs +17 -0
  330. package/esm2022/component/tabs/tabs/tabs.component.mjs +74 -0
  331. package/{esm2020 → esm2022}/component/tabs/tabs.module.mjs +11 -11
  332. package/esm2022/component/theme-switch/theme-switch/theme-switch.component.mjs +30 -0
  333. package/{esm2020 → esm2022}/component/theme-switch/theme-switch.module.mjs +9 -9
  334. package/esm2022/component/theme-switch/theme-switch.service.mjs +36 -0
  335. package/esm2022/component/toggle/toggle/toggle.component.mjs +89 -0
  336. package/{esm2020 → esm2022}/component/toggle/toggle.module.mjs +5 -5
  337. package/esm2022/component/toolbar/toolbar/toolbar.component.mjs +28 -0
  338. package/{esm2020 → esm2022}/component/toolbar/toolbar.module.mjs +5 -5
  339. package/esm2022/component/tree/tree/tree.component.mjs +150 -0
  340. package/esm2022/component/tree/tree-item/tree-item.component.mjs +90 -0
  341. package/esm2022/component/tree/tree-item-toggle/tree-item-toggle.component.mjs +32 -0
  342. package/{esm2020 → esm2022}/component/tree/tree.module.mjs +5 -5
  343. package/esm2022/component/tree/tree.service.mjs +42 -0
  344. package/esm2022/directive/auto-position/auto-position.directive.mjs +72 -0
  345. package/{esm2020 → esm2022}/directive/auto-position/auto-position.module.mjs +5 -5
  346. package/esm2022/directive/click-outside/click-outside.directive.mjs +67 -0
  347. package/{esm2020 → esm2022}/directive/click-outside/click-outside.module.mjs +5 -5
  348. package/esm2022/directive/context-menu/context-menu.directive.mjs +132 -0
  349. package/{esm2020 → esm2022}/directive/context-menu/context-menu.module.mjs +7 -7
  350. package/esm2022/directive/disable-control/disable-control.directive.mjs +30 -0
  351. package/{esm2020 → esm2022}/directive/disable-control/disable-control.module.mjs +5 -5
  352. package/esm2022/directive/drag-drop/drag-container.directive.mjs +101 -0
  353. package/{esm2020 → esm2022}/directive/drag-drop/drag-drop.module.mjs +11 -11
  354. package/esm2022/directive/drag-drop/drag-drop.service.mjs +152 -0
  355. package/{esm2020 → esm2022}/directive/drag-drop/drag-placeholder.directive.mjs +4 -4
  356. package/esm2022/directive/drag-drop/drag-preview.directive.mjs +17 -0
  357. package/esm2022/directive/drag-drop/drag.directive.mjs +143 -0
  358. package/esm2022/directive/drag-drop/model/drag-container-instance.mjs +11 -0
  359. package/esm2022/directive/drag-drop/model/drag-instance.mjs +9 -0
  360. package/esm2022/directive/drag-sort/drag-sort-container.directive.mjs +68 -0
  361. package/esm2022/directive/drag-sort/drag-sort-item.directive.mjs +121 -0
  362. package/{esm2020 → esm2022}/directive/drag-sort/drag-sort.module.mjs +5 -5
  363. package/esm2022/directive/dynamic-content-base.directive.mjs +91 -0
  364. package/esm2022/directive/highlight/highlight.directive.mjs +73 -0
  365. package/{esm2020 → esm2022}/directive/highlight/highlight.module.mjs +5 -5
  366. package/esm2022/directive/hint/hint.directive.mjs +118 -0
  367. package/{esm2020 → esm2022}/directive/hint/hint.module.mjs +7 -7
  368. package/esm2022/directive/let/let.directive.mjs +40 -0
  369. package/{esm2020 → esm2022}/directive/let/let.module.mjs +5 -5
  370. package/esm2022/directive/loader/loader.directive.mjs +93 -0
  371. package/{esm2020 → esm2022}/directive/loader/loader.module.mjs +5 -5
  372. package/esm2022/directive/no-autofill/no-autofill.directive.mjs +32 -0
  373. package/{esm2020 → esm2022}/directive/no-autofill/no-autofill.module.mjs +5 -5
  374. package/esm2022/directive/only-number/only-number.directive.mjs +200 -0
  375. package/{esm2020 → esm2022}/directive/only-number/only-number.module.mjs +5 -5
  376. package/esm2022/directive/resize-drag/resize-drag.directive.mjs +73 -0
  377. package/{esm2020 → esm2022}/directive/resize-drag/resize-drag.module.mjs +5 -5
  378. package/esm2022/directive/scroll-into-view/scroll-into-view.directive.mjs +43 -0
  379. package/{esm2020 → esm2022}/directive/scroll-into-view/scroll-into-view.module.mjs +5 -5
  380. package/esm2022/directive/scrollable/scrollable/scrollable.component.mjs +107 -0
  381. package/esm2022/directive/scrollable/scrollable.directive.mjs +17 -0
  382. package/{esm2020 → esm2022}/directive/scrollable/scrollable.module.mjs +9 -9
  383. package/esm2022/directive/teta-template/teta-template.directive.mjs +24 -0
  384. package/{esm2020 → esm2022}/directive/teta-template/teta-template.module.mjs +5 -5
  385. package/esm2022/directive/tooltip/tooltip.directive.mjs +88 -0
  386. package/{esm2020 → esm2022}/directive/tooltip/tooltip.module.mjs +5 -5
  387. package/esm2022/locale/en.mjs +62 -0
  388. package/esm2022/locale/ru.mjs +62 -0
  389. package/esm2022/locale/teta-config.service.mjs +28 -0
  390. package/{esm2020 → esm2022}/locale/teta-localisation.mjs +1 -1
  391. package/{esm2020 → esm2022}/pipe/date-pipe/teta-date-pipe.module.mjs +5 -5
  392. package/esm2022/pipe/date-pipe/teta-date.pipe.mjs +35 -0
  393. package/{esm2020 → esm2022}/pipe/number-pipe/number-pipe.module.mjs +5 -5
  394. package/{esm2020 → esm2022}/pipe/number-pipe/number.pipe.mjs +4 -4
  395. package/{esm2020 → esm2022}/util/forms-util.mjs +9 -9
  396. package/{fesm2020 → fesm2022}/tetacom-ng-components.mjs +7290 -6537
  397. package/fesm2022/tetacom-ng-components.mjs.map +1 -0
  398. package/locale/teta-localisation.d.ts +2 -0
  399. package/package.json +13 -14
  400. package/style/accordion.scss +28 -6
  401. package/style/assembly-library.scss +4 -1
  402. package/style/assembly-presets.scss +0 -1
  403. package/style/badge.scss +28 -0
  404. package/style/border.scss +2 -1
  405. package/style/bottombar.scss +5 -0
  406. package/style/button.scss +16 -13
  407. package/style/checkbox.scss +26 -13
  408. package/style/chips.scss +10 -10
  409. package/style/color.scss +1 -36
  410. package/style/datepicker.scss +139 -24
  411. package/style/divider.scss +15 -0
  412. package/style/drag.scss +1 -1
  413. package/style/dropdown.scss +6 -4
  414. package/style/hint.scss +5 -5
  415. package/style/icon.scss +2 -1
  416. package/style/input.scss +32 -23
  417. package/style/layout.scss +6 -2
  418. package/style/list.scss +11 -8
  419. package/style/loader.scss +2 -2
  420. package/style/message.scss +15 -7
  421. package/style/modal.scss +3 -2
  422. package/style/navigation.scss +4 -1
  423. package/style/presets/color-presets.scss +8 -160
  424. package/style/presets/font-presets.scss +26 -25
  425. package/style/presets/view-types.scss +17 -0
  426. package/style/progress.scss +3 -3
  427. package/style/radio.scss +21 -7
  428. package/style/reset.scss +1 -0
  429. package/style/resize-panel.scss +2 -2
  430. package/style/scroll.scss +3 -3
  431. package/style/select.scss +26 -21
  432. package/style/shadow.scss +0 -20
  433. package/style/sidebar.scss +1 -1
  434. package/style/skeleton.scss +1 -1
  435. package/style/switch.scss +15 -10
  436. package/style/table.scss +15 -15
  437. package/style/tabs.scss +11 -11
  438. package/style/tag.scss +37 -0
  439. package/style/toggle.scss +20 -18
  440. package/style/toolbar.scss +1 -1
  441. package/style/tooltip.scss +8 -6
  442. package/style/tree.scss +4 -4
  443. package/util/export-dom-image.d.ts +1 -1
  444. package/component/date-picker/day-select/day-select.component.d.ts +0 -51
  445. package/component/date-picker/month-select/month-select.component.d.ts +0 -40
  446. package/component/date-picker/service/picker-touch.service.d.ts +0 -12
  447. package/component/date-picker/time-part-control/time-part-control.component.d.ts +0 -26
  448. package/component/date-picker/util/date-picker-util.d.ts +0 -15
  449. package/component/date-picker/year-select/year-select.component.d.ts +0 -45
  450. package/esm2020/common/contract/teta-content-ref.mjs +0 -8
  451. package/esm2020/common/public-api.mjs +0 -5
  452. package/esm2020/common/service/click.service.mjs +0 -23
  453. package/esm2020/common/service/dynamic-component.service.mjs +0 -93
  454. package/esm2020/common/service/overlay-container.service.mjs +0 -41
  455. package/esm2020/component/accordion/accordion/accordion.component.mjs +0 -18
  456. package/esm2020/component/accordion/accordion-content.directive.mjs +0 -16
  457. package/esm2020/component/accordion/accordion-head/accordion-head.component.mjs +0 -52
  458. package/esm2020/component/accordion/accordion-item/accordion-item.component.mjs +0 -43
  459. package/esm2020/component/button/button/button.component.mjs +0 -40
  460. package/esm2020/component/chart-3d/chart3d/chart3d.component.mjs +0 -244
  461. package/esm2020/component/chart-3d/model/chart-3d-options.mjs +0 -7
  462. package/esm2020/component/chart-3d/model/series-3d.mjs +0 -7
  463. package/esm2020/component/checkbox/checkbox/checkbox.component.mjs +0 -134
  464. package/esm2020/component/date-picker/date-picker/date-picker.component.mjs +0 -289
  465. package/esm2020/component/date-picker/date-picker.module.mjs +0 -69
  466. package/esm2020/component/date-picker/day-select/day-select.component.mjs +0 -184
  467. package/esm2020/component/date-picker/model/date-period.mjs +0 -7
  468. package/esm2020/component/date-picker/model/day-model.mjs +0 -13
  469. package/esm2020/component/date-picker/month-picker/month-picker.component.mjs +0 -253
  470. package/esm2020/component/date-picker/month-select/month-select.component.mjs +0 -148
  471. package/esm2020/component/date-picker/public-api.mjs +0 -6
  472. package/esm2020/component/date-picker/service/picker-touch.service.mjs +0 -34
  473. package/esm2020/component/date-picker/time-part-control/time-part-control.component.mjs +0 -73
  474. package/esm2020/component/date-picker/util/date-picker-util.mjs +0 -142
  475. package/esm2020/component/date-picker/year-select/year-select.component.mjs +0 -189
  476. package/esm2020/component/delimiter/delimiter/delimiter.component.mjs +0 -63
  477. package/esm2020/component/dropdown/dropdown/dropdown.component.mjs +0 -30
  478. package/esm2020/component/dropdown/dropdown-base.mjs +0 -225
  479. package/esm2020/component/dropdown/dropdown-content.directive.mjs +0 -17
  480. package/esm2020/component/dropdown/dropdown-head.directive.mjs +0 -18
  481. package/esm2020/component/dropdown/dropdown.directive.mjs +0 -38
  482. package/esm2020/component/dynamic-component/popup-content/popup-content.component.mjs +0 -59
  483. package/esm2020/component/expand-panel/expand-panel/expand-panel.component.mjs +0 -65
  484. package/esm2020/component/expand-panel/expand-panel-content.directive.mjs +0 -16
  485. package/esm2020/component/expand-panel/expand-panel-head.directive.mjs +0 -16
  486. package/esm2020/component/file-upload/file-upload-area/file-upload-area.component.mjs +0 -82
  487. package/esm2020/component/filter/base/filter-base.mjs +0 -10
  488. package/esm2020/component/filter/boolean-filter/boolean-filter.component.mjs +0 -60
  489. package/esm2020/component/filter/contarct/boolean-filter.mjs +0 -10
  490. package/esm2020/component/filter/contarct/date-filter-value.mjs +0 -9
  491. package/esm2020/component/filter/contarct/date-filter.mjs +0 -11
  492. package/esm2020/component/filter/contarct/filter-item.mjs +0 -34
  493. package/esm2020/component/filter/contarct/filter-state.mjs +0 -145
  494. package/esm2020/component/filter/contarct/list-filter.mjs +0 -12
  495. package/esm2020/component/filter/contarct/numeric-filter-value.mjs +0 -10
  496. package/esm2020/component/filter/contarct/numeric-filter.mjs +0 -11
  497. package/esm2020/component/filter/contarct/sort-param.mjs +0 -14
  498. package/esm2020/component/filter/contarct/string-filter.mjs +0 -12
  499. package/esm2020/component/filter/date-filter/date-filter.component.mjs +0 -60
  500. package/esm2020/component/filter/filter-host/filter-host.component.mjs +0 -78
  501. package/esm2020/component/filter/list-filter/list-filter.component.mjs +0 -95
  502. package/esm2020/component/filter/numeric-filter/numeric-filter.component.mjs +0 -60
  503. package/esm2020/component/filter/string-filter/string-filter.component.mjs +0 -61
  504. package/esm2020/component/icon/icon/icon.component.mjs +0 -37
  505. package/esm2020/component/icon/icon-file/icon-file.component.mjs +0 -14
  506. package/esm2020/component/icon/icon-sprite.directive.mjs +0 -32
  507. package/esm2020/component/icon/icon.module.mjs +0 -38
  508. package/esm2020/component/icon/icon.service.mjs +0 -59
  509. package/esm2020/component/input/color-input/color-input.component.mjs +0 -73
  510. package/esm2020/component/input/input/input.component.mjs +0 -36
  511. package/esm2020/component/input/input.module.mjs +0 -26
  512. package/esm2020/component/input/text-field/text-field.component.mjs +0 -96
  513. package/esm2020/component/message/message/message.component.mjs +0 -74
  514. package/esm2020/component/message/message-host/message-host.component.mjs +0 -88
  515. package/esm2020/component/message/message.service.mjs +0 -35
  516. package/esm2020/component/message/model/message.mjs +0 -21
  517. package/esm2020/component/modal/dialog/dialog.component.mjs +0 -44
  518. package/esm2020/component/modal/dialog.service.mjs +0 -39
  519. package/esm2020/component/modal/modal-container/modal-container.component.mjs +0 -84
  520. package/esm2020/component/modal/modal.module.mjs +0 -50
  521. package/esm2020/component/modal/modal.service.mjs +0 -121
  522. package/esm2020/component/modal/model/modal-instance.mjs +0 -34
  523. package/esm2020/component/pager/model/pager-state.mjs +0 -50
  524. package/esm2020/component/panel/panel/panel.component.mjs +0 -51
  525. package/esm2020/component/progress-bar/progress-bar/progress-bar.component.mjs +0 -131
  526. package/esm2020/component/property-grid/property-grid/property-grid-group/property-grid-group.component.mjs +0 -38
  527. package/esm2020/component/property-grid/property-grid/property-grid-item/property-grid-item.component.mjs +0 -130
  528. package/esm2020/component/property-grid/property-grid/property-grid-item-description.directive.mjs +0 -19
  529. package/esm2020/component/property-grid/property-grid/property-grid.component.mjs +0 -97
  530. package/esm2020/component/property-grid/property-grid.module.mjs +0 -87
  531. package/esm2020/component/public-api.mjs +0 -65
  532. package/esm2020/component/radio/radio/radio.component.mjs +0 -245
  533. package/esm2020/component/radio/radio-button/radio-button.component.mjs +0 -63
  534. package/esm2020/component/resize-panel/resize-panel/resize-panel.component.mjs +0 -168
  535. package/esm2020/component/select/select/select.component.mjs +0 -260
  536. package/esm2020/component/select/select-option.directive.mjs +0 -16
  537. package/esm2020/component/select/select-value.directive.mjs +0 -16
  538. package/esm2020/component/sidebar/sidebar/sidebar.component.mjs +0 -54
  539. package/esm2020/component/switch/switch/switch.component.mjs +0 -52
  540. package/esm2020/component/switch/switch-button/switch-button.component.mjs +0 -47
  541. package/esm2020/component/switch/switch.service.mjs +0 -21
  542. package/esm2020/component/table/base/cell-component-base.mjs +0 -97
  543. package/esm2020/component/table/cell/cell.component.mjs +0 -33
  544. package/esm2020/component/table/cell-host/cell-host.component.mjs +0 -50
  545. package/esm2020/component/table/contract/column-reorder-event.mjs +0 -7
  546. package/esm2020/component/table/contract/column-resize-event.mjs +0 -7
  547. package/esm2020/component/table/contract/sort-event.mjs +0 -7
  548. package/esm2020/component/table/contract/table-column-store.mjs +0 -12
  549. package/esm2020/component/table/contract/table-column.mjs +0 -38
  550. package/esm2020/component/table/default/boolean-cell/boolean-cell.component.mjs +0 -45
  551. package/esm2020/component/table/default/date-cell/date-cell.component.mjs +0 -47
  552. package/esm2020/component/table/default/date-time-cell/date-time-cell.component.mjs +0 -46
  553. package/esm2020/component/table/default/default-head-cell/default-head-cell.component.mjs +0 -47
  554. package/esm2020/component/table/default/list-cell/list-cell.component.mjs +0 -76
  555. package/esm2020/component/table/default/numeric-cell/numeric-cell.component.mjs +0 -55
  556. package/esm2020/component/table/default/string-cell/string-cell.component.mjs +0 -54
  557. package/esm2020/component/table/head-cell/head-cell.component.mjs +0 -189
  558. package/esm2020/component/table/head-cell-dropdown/head-cell-dropdown.component.mjs +0 -50
  559. package/esm2020/component/table/head-cell-host/head-cell-host.component.mjs +0 -60
  560. package/esm2020/component/table/selection-cell/selection-cell.component.mjs +0 -46
  561. package/esm2020/component/table/selection-head-cell/selection-head-cell.component.mjs +0 -45
  562. package/esm2020/component/table/service/table.service.mjs +0 -648
  563. package/esm2020/component/table/table/table.component.mjs +0 -472
  564. package/esm2020/component/table/table-body/table-body.component.mjs +0 -203
  565. package/esm2020/component/table/table-head/filter-dropdown-tab/filter-dropdown-tab.component.mjs +0 -55
  566. package/esm2020/component/table/table-head/main-dropdown-tab/main-dropdown-tab.component.mjs +0 -86
  567. package/esm2020/component/table/table-head/table-head.component.mjs +0 -77
  568. package/esm2020/component/table/table-head/visibility-dropdown-tab/visibility-dropdown-tab.component.mjs +0 -141
  569. package/esm2020/component/table/table-head-group/table-head-group.component.mjs +0 -76
  570. package/esm2020/component/tabs/tab/tab.component.mjs +0 -42
  571. package/esm2020/component/tabs/tab-content.directive.mjs +0 -16
  572. package/esm2020/component/tabs/tab-title.directive.mjs +0 -16
  573. package/esm2020/component/tabs/tabs/tabs.component.mjs +0 -70
  574. package/esm2020/component/theme-switch/theme-switch/theme-switch.component.mjs +0 -28
  575. package/esm2020/component/theme-switch/theme-switch.service.mjs +0 -34
  576. package/esm2020/component/toggle/toggle/toggle.component.mjs +0 -79
  577. package/esm2020/component/toolbar/toolbar/toolbar.component.mjs +0 -26
  578. package/esm2020/component/tree/tree/tree.component.mjs +0 -138
  579. package/esm2020/component/tree/tree-item/tree-item.component.mjs +0 -85
  580. package/esm2020/component/tree/tree-item-toggle/tree-item-toggle.component.mjs +0 -28
  581. package/esm2020/component/tree/tree.service.mjs +0 -40
  582. package/esm2020/directive/auto-position/auto-position.directive.mjs +0 -69
  583. package/esm2020/directive/click-outside/click-outside.directive.mjs +0 -65
  584. package/esm2020/directive/context-menu/context-menu.directive.mjs +0 -120
  585. package/esm2020/directive/disable-control/disable-control.directive.mjs +0 -29
  586. package/esm2020/directive/drag-drop/drag-container.directive.mjs +0 -92
  587. package/esm2020/directive/drag-drop/drag-drop.service.mjs +0 -142
  588. package/esm2020/directive/drag-drop/drag-preview.directive.mjs +0 -16
  589. package/esm2020/directive/drag-drop/drag.directive.mjs +0 -135
  590. package/esm2020/directive/drag-drop/model/drag-container-instance.mjs +0 -8
  591. package/esm2020/directive/drag-drop/model/drag-instance.mjs +0 -7
  592. package/esm2020/directive/drag-sort/drag-sort-container.directive.mjs +0 -64
  593. package/esm2020/directive/drag-sort/drag-sort-item.directive.mjs +0 -115
  594. package/esm2020/directive/dynamic-content-base.directive.mjs +0 -80
  595. package/esm2020/directive/highlight/highlight.directive.mjs +0 -72
  596. package/esm2020/directive/hint/hint.directive.mjs +0 -103
  597. package/esm2020/directive/let/let.directive.mjs +0 -38
  598. package/esm2020/directive/loader/loader.directive.mjs +0 -85
  599. package/esm2020/directive/no-autofill/no-autofill.directive.mjs +0 -30
  600. package/esm2020/directive/only-number/only-number.directive.mjs +0 -198
  601. package/esm2020/directive/resize-drag/resize-drag.directive.mjs +0 -71
  602. package/esm2020/directive/scroll-into-view/scroll-into-view.directive.mjs +0 -40
  603. package/esm2020/directive/scrollable/scrollable/scrollable.component.mjs +0 -96
  604. package/esm2020/directive/scrollable/scrollable.directive.mjs +0 -19
  605. package/esm2020/directive/teta-template/teta-template.directive.mjs +0 -22
  606. package/esm2020/directive/tooltip/tooltip.directive.mjs +0 -76
  607. package/esm2020/locale/en.mjs +0 -60
  608. package/esm2020/locale/ru.mjs +0 -60
  609. package/esm2020/locale/teta-config.service.mjs +0 -28
  610. package/esm2020/pipe/date-pipe/teta-date.pipe.mjs +0 -34
  611. package/esm2020/pipe/prepend-zero/prepend-zero.module.mjs +0 -18
  612. package/esm2020/pipe/prepend-zero/prepend-zero.pipe.mjs +0 -21
  613. package/fesm2015/tetacom-ng-components.mjs +0 -13042
  614. package/fesm2015/tetacom-ng-components.mjs.map +0 -1
  615. package/fesm2020/tetacom-ng-components.mjs.map +0 -1
  616. package/pipe/prepend-zero/prepend-zero.module.d.ts +0 -8
  617. package/pipe/prepend-zero/prepend-zero.pipe.d.ts +0 -7
  618. package/style/presets/shadow-presets.scss +0 -16
  619. package/style/tokens/basedark.tokens.css +0 -77
  620. package/style/tokens/baselight.tokens.css +0 -61
  621. package/style/tokens/global.tokens.css +0 -235
  622. package/style/tokens/utility.tokens.css +0 -1119
  623. package/style/util/button-util.scss +0 -58
  624. /package/{esm2020 → esm2022}/common/contract/auto-close-ignore-case.mjs +0 -0
  625. /package/{esm2020 → esm2022}/common/contract/constructor-type.mjs +0 -0
  626. /package/{esm2020 → esm2022}/common/contract/dynamic-data.mjs +0 -0
  627. /package/{esm2020 → esm2022}/common/contract/i-dictionary.mjs +0 -0
  628. /package/{esm2020 → esm2022}/common/contract/i-id-name.mjs +0 -0
  629. /package/{esm2020 → esm2022}/common/contract/i-id.mjs +0 -0
  630. /package/{esm2020 → esm2022}/common/contract/i-rect.mjs +0 -0
  631. /package/{esm2020 → esm2022}/common/contract/i-tree-data.mjs +0 -0
  632. /package/{esm2020 → esm2022}/common/contract/public-api.mjs +0 -0
  633. /package/{esm2020 → esm2022}/common/enum/align.enum.mjs +0 -0
  634. /package/{esm2020 → esm2022}/common/enum/public-api.mjs +0 -0
  635. /package/{esm2020 → esm2022}/common/enum/teta-size.enum.mjs +0 -0
  636. /package/{esm2020 → esm2022}/common/enum/vertical-align.enum.mjs +0 -0
  637. /package/{esm2020 → esm2022}/common/service/public-api.mjs +0 -0
  638. /package/{esm2020 → esm2022}/common/util/array-util.mjs +0 -0
  639. /package/{esm2020 → esm2022}/common/util/dom-util.mjs +0 -0
  640. /package/{esm2020 → esm2022}/common/util/position-util.mjs +0 -0
  641. /package/{esm2020 → esm2022}/common/util/public-api.mjs +0 -0
  642. /package/{esm2020 → esm2022}/component/accordion/public-api.mjs +0 -0
  643. /package/{esm2020 → esm2022}/component/autocomplete/public-api.mjs +0 -0
  644. /package/{esm2020 → esm2022}/component/button/public-api.mjs +0 -0
  645. /package/{esm2020 → esm2022}/component/chart-3d/model/base-3d-point.mjs +0 -0
  646. /package/{esm2020 → esm2022}/component/chart-3d/model/public-api.mjs +0 -0
  647. /package/{esm2020 → esm2022}/component/chart-3d/public-api.mjs +0 -0
  648. /package/{esm2020 → esm2022}/component/checkbox/public-api.mjs +0 -0
  649. /package/{esm2020 → esm2022}/component/date-picker/model/date-picker-mode.enum.mjs +0 -0
  650. /package/{esm2020 → esm2022}/component/delimiter/public-api.mjs +0 -0
  651. /package/{esm2020 → esm2022}/component/dropdown/public-api.mjs +0 -0
  652. /package/{esm2020 → esm2022}/component/dynamic-component/public-api.mjs +0 -0
  653. /package/{esm2020 → esm2022}/component/expand-card/public-api.mjs +0 -0
  654. /package/{esm2020 → esm2022}/component/expand-panel/public-api.mjs +0 -0
  655. /package/{esm2020 → esm2022}/component/file-upload/public-api.mjs +0 -0
  656. /package/{esm2020 → esm2022}/component/filter/contarct/filter-component-map.mjs +0 -0
  657. /package/{esm2020 → esm2022}/component/filter/enum/filter-type.enum.mjs +0 -0
  658. /package/{esm2020 → esm2022}/component/filter/enum/list-filter-type.enum.mjs +0 -0
  659. /package/{esm2020 → esm2022}/component/filter/enum/string-filter-type.enum.mjs +0 -0
  660. /package/{esm2020 → esm2022}/component/filter/public-api.mjs +0 -0
  661. /package/{esm2020 → esm2022}/component/input/public-api.mjs +0 -0
  662. /package/{esm2020 → esm2022}/component/message/public-api.mjs +0 -0
  663. /package/{esm2020 → esm2022}/component/modal/model/i-modal-config.mjs +0 -0
  664. /package/{esm2020 → esm2022}/component/modal/model/i-modal-result.mjs +0 -0
  665. /package/{esm2020 → esm2022}/component/modal/model/modal-close-reason.enum.mjs +0 -0
  666. /package/{esm2020 → esm2022}/component/modal/public-api.mjs +0 -0
  667. /package/{esm2020 → esm2022}/component/pager/public-api.mjs +0 -0
  668. /package/{esm2020 → esm2022}/component/pager/util/pager-util.mjs +0 -0
  669. /package/{esm2020 → esm2022}/component/panel/public-api.mjs +0 -0
  670. /package/{esm2020 → esm2022}/component/progress-bar/public-api.mjs +0 -0
  671. /package/{esm2020 → esm2022}/component/property-grid/public-api.mjs +0 -0
  672. /package/{esm2020 → esm2022}/component/radio/public-api.mjs +0 -0
  673. /package/{esm2020 → esm2022}/component/resize-panel/public-api.mjs +0 -0
  674. /package/{esm2020 → esm2022}/component/select/public-api.mjs +0 -0
  675. /package/{esm2020 → esm2022}/component/sidebar/public-api.mjs +0 -0
  676. /package/{esm2020 → esm2022}/component/sidebar/sidebar-position.enum.mjs +0 -0
  677. /package/{esm2020 → esm2022}/component/switch/public-api.mjs +0 -0
  678. /package/{esm2020 → esm2022}/component/table/base/detail-component-base.mjs +0 -0
  679. /package/{esm2020 → esm2022}/component/table/contract/cell-components-map.mjs +0 -0
  680. /package/{esm2020 → esm2022}/component/table/contract/head-dropdown-tab.mjs +0 -0
  681. /package/{esm2020 → esm2022}/component/table/contract/i-cell-coordinates.mjs +0 -0
  682. /package/{esm2020 → esm2022}/component/table/contract/i-cell-event.mjs +0 -0
  683. /package/{esm2020 → esm2022}/component/table/contract/i-cell-instance.mjs +0 -0
  684. /package/{esm2020 → esm2022}/component/table/contract/i-cell-value.mjs +0 -0
  685. /package/{esm2020 → esm2022}/component/table/contract/public-api.mjs +0 -0
  686. /package/{esm2020 → esm2022}/component/table/enum/aggregation-type.enum.mjs +0 -0
  687. /package/{esm2020 → esm2022}/component/table/enum/edit-event.enum.mjs +0 -0
  688. /package/{esm2020 → esm2022}/component/table/enum/edit-type.enum.mjs +0 -0
  689. /package/{esm2020 → esm2022}/component/table/enum/public-api.mjs +0 -0
  690. /package/{esm2020 → esm2022}/component/table/enum/select-type.enum.mjs +0 -0
  691. /package/{esm2020 → esm2022}/component/table/public-api.mjs +0 -0
  692. /package/{esm2020 → esm2022}/component/table/util/public-api.mjs +0 -0
  693. /package/{esm2020 → esm2022}/component/table/util/state-util.mjs +0 -0
  694. /package/{esm2020 → esm2022}/component/table/util/table-util.mjs +0 -0
  695. /package/{esm2020 → esm2022}/component/tabs/public-api.mjs +0 -0
  696. /package/{esm2020 → esm2022}/component/theme-switch/public-api.mjs +0 -0
  697. /package/{esm2020 → esm2022}/component/toggle/public-api.mjs +0 -0
  698. /package/{esm2020 → esm2022}/component/toolbar/public-api.mjs +0 -0
  699. /package/{esm2020 → esm2022}/component/tree/public-api.mjs +0 -0
  700. /package/{esm2020 → esm2022}/directive/auto-position/public-api.mjs +0 -0
  701. /package/{esm2020 → esm2022}/directive/click-outside/public-api.mjs +0 -0
  702. /package/{esm2020 → esm2022}/directive/context-menu/public-api.mjs +0 -0
  703. /package/{esm2020 → esm2022}/directive/disable-control/public-api.mjs +0 -0
  704. /package/{esm2020 → esm2022}/directive/drag-drop/model/drag-process.mjs +0 -0
  705. /package/{esm2020 → esm2022}/directive/drag-drop/model/drag-selection.mjs +0 -0
  706. /package/{esm2020 → esm2022}/directive/drag-drop/model/drop-event.mjs +0 -0
  707. /package/{esm2020 → esm2022}/directive/drag-drop/model/drop-target.mjs +0 -0
  708. /package/{esm2020 → esm2022}/directive/drag-drop/model/point.mjs +0 -0
  709. /package/{esm2020 → esm2022}/directive/drag-drop/model/public-api.mjs +0 -0
  710. /package/{esm2020 → esm2022}/directive/drag-drop/public-api.mjs +0 -0
  711. /package/{esm2020 → esm2022}/directive/drag-sort/drag-sort-event.mjs +0 -0
  712. /package/{esm2020 → esm2022}/directive/drag-sort/public-api.mjs +0 -0
  713. /package/{esm2020 → esm2022}/directive/highlight/public-api.mjs +0 -0
  714. /package/{esm2020 → esm2022}/directive/hint/public-api.mjs +0 -0
  715. /package/{esm2020 → esm2022}/directive/let/public-api.mjs +0 -0
  716. /package/{esm2020 → esm2022}/directive/loader/public-api.mjs +0 -0
  717. /package/{esm2020 → esm2022}/directive/no-autofill/public-api.mjs +0 -0
  718. /package/{esm2020 → esm2022}/directive/only-number/public-api.mjs +0 -0
  719. /package/{esm2020 → esm2022}/directive/public-api.mjs +0 -0
  720. /package/{esm2020 → esm2022}/directive/resize-drag/public-api.mjs +0 -0
  721. /package/{esm2020 → esm2022}/directive/scroll-into-view/public-api.mjs +0 -0
  722. /package/{esm2020 → esm2022}/directive/scrollable/public-api.mjs +0 -0
  723. /package/{esm2020 → esm2022}/directive/teta-template/public-api.mjs +0 -0
  724. /package/{esm2020 → esm2022}/directive/tooltip/public-api.mjs +0 -0
  725. /package/{esm2020 → esm2022}/locale/public-api.mjs +0 -0
  726. /package/{esm2020 → esm2022}/observable/animation-frame.mjs +0 -0
  727. /package/{esm2020 → esm2022}/observable/public-api.mjs +0 -0
  728. /package/{esm2020 → esm2022}/observable/zoneObservable.mjs +0 -0
  729. /package/{esm2020 → esm2022}/pipe/date-pipe/public-api.mjs +0 -0
  730. /package/{esm2020 → esm2022}/pipe/number-pipe/public-api.mjs +0 -0
  731. /package/{esm2020 → esm2022}/pipe/public-api.mjs +0 -0
  732. /package/{esm2020 → esm2022}/pipe/util/number-helper.mjs +0 -0
  733. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  734. /package/{esm2020 → esm2022}/tetacom-ng-components.mjs +0 -0
  735. /package/{esm2020 → esm2022}/util/date-util.mjs +0 -0
  736. /package/{esm2020 → esm2022}/util/export-dom-image.mjs +0 -0
  737. /package/{esm2020 → esm2022}/util/public-api.mjs +0 -0
  738. /package/{esm2020 → esm2022}/util/string-util.mjs +0 -0
@@ -0,0 +1,100 @@
1
+ import { ChangeDetectionStrategy, Component } from "@angular/core";
2
+ import { BehaviorSubject, ReplaySubject } from "rxjs";
3
+ import dayjs from "dayjs";
4
+ import { DayModel } from "./model/day-model";
5
+ import * as i0 from "@angular/core";
6
+ export class BaseCalendar {
7
+ _cdr;
8
+ currentMonth = new ReplaySubject(1);
9
+ minMax = new ReplaySubject(1);
10
+ currentYear = new ReplaySubject(1);
11
+ selectedPicker = new BehaviorSubject('day');
12
+ localeMonths = new Map().set('ru', ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'])
13
+ .set('en', ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']);
14
+ alive = true;
15
+ constructor(_cdr) {
16
+ this._cdr = _cdr;
17
+ }
18
+ generateCalendar(selectedDate, year, month, minMax) {
19
+ const calendarStartDay = selectedDate.set("year", year).set("month", month).set("date", 1).startOf('week');
20
+ const calendar = new Array(42).fill(1).map((v, i) => {
21
+ return calendarStartDay.add(i, 'day');
22
+ });
23
+ return calendar.map((d) => {
24
+ return new DayModel({
25
+ date: new Date(d.toDate()),
26
+ isCurrentMonth: month === d.month(),
27
+ disabled: !this.isSuitableMinDate(d.toDate(), minMax.min) || !this.isSuitableMaxDate(d.toDate(), minMax.max),
28
+ selected: this.isSelected(d.toDate(), selectedDate.toDate())
29
+ });
30
+ });
31
+ }
32
+ isSuitableMinDate(d, minDate) {
33
+ return dayjs(new Date(minDate)).startOf('date').toDate() <= new Date(d) || minDate === null;
34
+ }
35
+ isSuitableMaxDate(d, maxDate) {
36
+ return new Date(d) < dayjs(new Date(maxDate)).endOf('date').toDate() || maxDate === null;
37
+ }
38
+ isSelected(date, selectedDate) {
39
+ const isSelectedDate = date.getDate() === selectedDate?.getDate();
40
+ const isSelectedYear = date.getFullYear() === selectedDate?.getFullYear();
41
+ const isSelectedMonth = date.getMonth() === selectedDate?.getMonth();
42
+ return isSelectedDate && isSelectedMonth && isSelectedYear && !this.isDateNull;
43
+ }
44
+ ngOnDestroy() {
45
+ this.alive = false;
46
+ }
47
+ selectPicker(entity) {
48
+ this.selectedPicker.next(entity);
49
+ }
50
+ selectMonth(month) {
51
+ this.currentMonth.next(month);
52
+ this.selectPicker("day");
53
+ }
54
+ selectYear(year) {
55
+ this.setYear(year);
56
+ this.selectPicker("day");
57
+ }
58
+ ngOnChanges(changes) {
59
+ this.changeCalendarData(this.selectedDate);
60
+ }
61
+ changeCalendarData(selectedDate) {
62
+ let date = new Date(selectedDate || new Date());
63
+ this.currentMonth.next(new Date(date).getMonth());
64
+ this.currentYear.next(new Date(date).getFullYear());
65
+ this.minMax.next({ min: this.min, max: this.max });
66
+ }
67
+ setYear(year) {
68
+ this.currentYear.next(year);
69
+ }
70
+ changeMonth(month, year) {
71
+ const { availableYear, availableMonth } = this.getAvailableMonthYear(month, year);
72
+ this.currentMonth.next(availableMonth);
73
+ this.currentYear.next(availableYear);
74
+ }
75
+ getAvailableMonthYear(month, year) {
76
+ if (month > 11) {
77
+ return { availableMonth: month - 12, availableYear: year + 1 };
78
+ }
79
+ if (month < 0) {
80
+ return { availableMonth: 12 + month, availableYear: year - 1 };
81
+ }
82
+ return { availableMonth: month, availableYear: year };
83
+ }
84
+ getMothName(month) {
85
+ return this.localeMonths.get(this.locale)[month];
86
+ }
87
+ selectDate(date) {
88
+ this.setDate.emit(date);
89
+ }
90
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: BaseCalendar, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
91
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: BaseCalendar, selector: "ng-component", usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
92
+ }
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: BaseCalendar, decorators: [{
94
+ type: Component,
95
+ args: [{
96
+ template: '',
97
+ changeDetection: ChangeDetectionStrategy.OnPush
98
+ }]
99
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } });
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jYWxlbmRhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvZGF0ZS1waWNrZXIvYmFzZS1jYWxlbmRhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFLVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEtBQWMsTUFBTSxPQUFPLENBQUM7QUFHbkMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLG1CQUFtQixDQUFDOztBQU0zQyxNQUFNLE9BQWdCLFlBQVk7SUFtQkE7SUFWekIsWUFBWSxHQUEwQixJQUFJLGFBQWEsQ0FBUyxDQUFDLENBQUMsQ0FBQTtJQUNsRSxNQUFNLEdBQW1DLElBQUksYUFBYSxDQUFrQixDQUFDLENBQUMsQ0FBQTtJQUM5RSxXQUFXLEdBQTBCLElBQUksYUFBYSxDQUFTLENBQUMsQ0FBQyxDQUFBO0lBQ2pFLGNBQWMsR0FBOEMsSUFBSSxlQUFlLENBQTJCLEtBQUssQ0FBQyxDQUFBO0lBRWhILFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQzVKLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUE7SUFFakksS0FB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QUksQ0FBQyxDQUFBO1FBQy9FLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBQ3RDLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxLQUFhLEVBQUUsSUFBWTtRQUMvQyxJQUFJLEtBQUssR0FBRyxFQUFFLEVBQUU7WUFDZCxPQUFPLEVBQUMsY0FBYyxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksR0FBRyxDQUFDLEVBQUMsQ0FBQTtTQUM3RDtRQUNELElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNiLE9BQU8sRUFBQyxjQUFjLEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBRSxhQUFhLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBQyxDQUFBO1NBQzdEO1FBQ0QsT0FBTyxFQUFDLGNBQWMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBQyxDQUFBO0lBQ3JELENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNsRCxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVU7UUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQzt1R0E3R21CLFlBQVk7MkZBQVosWUFBWSx5RUFIdEIsRUFBRTs7MkZBR1EsWUFBWTtrQkFKakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtvQkFDWixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIFJlcGxheVN1YmplY3R9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgZGF5anMsIHtEYXlqc30gZnJvbSBcImRheWpzXCI7XG5pbXBvcnQge3ZpZXdUeXBlfSBmcm9tIFwiLi4vLi4vY29tbW9uL21vZGVsL3ZpZXctdHlwZS5tb2RlbFwiO1xuaW1wb3J0IHtNaW5NYXhEYXRlTW9kZWx9IGZyb20gXCIuL21vZGVsL21pbi1tYXgtZGF0ZS5tb2RlbFwiO1xuaW1wb3J0IHtEYXlNb2RlbH0gZnJvbSBcIi4vbW9kZWwvZGF5LW1vZGVsXCI7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDYWxlbmRhciBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgYWJzdHJhY3Qgc2VsZWN0ZWREYXRlO1xuICBhYnN0cmFjdCBsb2NhbGU6IHN0cmluZztcbiAgYWJzdHJhY3Qgb3BlbjogYm9vbGVhbjtcbiAgYWJzdHJhY3Qgdmlld1R5cGU6IHZpZXdUeXBlO1xuICBhYnN0cmFjdCBtaW46IERhdGUgfCBzdHJpbmcgfCBudW1iZXI7XG4gIGFic3RyYWN0IGlzRGF0ZU51bGw6IGJvb2xlYW47XG4gIGFic3RyYWN0IG1heDogRGF0ZSB8IHN0cmluZyB8IG51bWJlcjtcbiAgYWJzdHJhY3Qgc2V0RGF0ZTogRXZlbnRFbWl0dGVyPERhdGU+O1xuICBwdWJsaWMgY3VycmVudE1vbnRoOiBSZXBsYXlTdWJqZWN0PG51bWJlcj4gPSBuZXcgUmVwbGF5U3ViamVjdDxudW1iZXI+KDEpXG4gIHB1YmxpYyBtaW5NYXg6IFJlcGxheVN1YmplY3Q8TWluTWF4RGF0ZU1vZGVsPiA9IG5ldyBSZXBsYXlTdWJqZWN0PE1pbk1heERhdGVNb2RlbD4oMSlcbiAgcHVibGljIGN1cnJlbnRZZWFyOiBSZXBsYXlTdWJqZWN0PG51bWJlcj4gPSBuZXcgUmVwbGF5U3ViamVjdDxudW1iZXI+KDEpXG4gIHB1YmxpYyBzZWxlY3RlZFBpY2tlcjogQmVoYXZpb3JTdWJqZWN0PCdkYXknIHwgJ21vbnRoJyB8ICd5ZWFyJz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFwiZGF5XCIgfCBcIm1vbnRoXCIgfCBcInllYXJcIj4oJ2RheScpXG4gIGFic3RyYWN0IGNhbGVuZGFyOiBEYXlNb2RlbFtdIHwgeyBjdXJyZW50TW9udGg6IERheU1vZGVsW10sIG5leHRNb250aDogRGF5TW9kZWxbXSB9O1xuICBwdWJsaWMgbG9jYWxlTW9udGhzID0gbmV3IE1hcCgpLnNldCgncnUnLCBbJ9Cv0L3QstCw0YDRjCcsICfQpNC10LLRgNCw0LvRjCcsICfQnNCw0YDRgicsICfQkNC/0YDQtdC70YwnLCAn0JzQsNC5JywgJ9CY0Y7QvdGMJywgJ9CY0Y7Qu9GMJywgJ9CQ0LLQs9GD0YHRgicsICfQodC10L3RgtGP0LHRgNGMJywgJ9Ce0LrRgtGP0LHRgNGMJywgJ9Cd0L7Rj9Cx0YDRjCcsICfQlNC10LrQsNCx0YDRjCddKVxuICAgIC5zZXQoJ2VuJywgWydKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10pXG5cbiAgcHVibGljIGFsaXZlID0gdHJ1ZTtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvdGVjdGVkIF9jZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gIH1cblxuICBnZW5lcmF0ZUNhbGVuZGFyKHNlbGVjdGVkRGF0ZTogRGF5anMsIHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgbWluTWF4OiBNaW5NYXhEYXRlTW9kZWwpOiBEYXlNb2RlbFtdIHtcbiAgICBjb25zdCBjYWxlbmRhclN0YXJ0RGF5ID0gc2VsZWN0ZWREYXRlLnNldChcInllYXJcIiwgeWVhcikuc2V0KFwibW9udGhcIiwgbW9udGgpLnNldChcImRhdGVcIiwgMSkuc3RhcnRPZignd2VlaycpO1xuICAgIGNvbnN0IGNhbGVuZGFyID0gbmV3IEFycmF5KDQyKS5maWxsKDEpLm1hcCgodiwgaSkgPT4ge1xuICAgICAgcmV0dXJuIGNhbGVuZGFyU3RhcnREYXkuYWRkKGksICdkYXknKVxuICAgIH0pO1xuICAgIHJldHVybiBjYWxlbmRhci5tYXAoKGQpID0+IHtcblxuICAgICAgcmV0dXJuIG5ldyBEYXlNb2RlbCh7XG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKGQudG9EYXRlKCkpLFxuICAgICAgICBpc0N1cnJlbnRNb250aDogbW9udGggPT09IGQubW9udGgoKSxcbiAgICAgICAgZGlzYWJsZWQ6ICF0aGlzLmlzU3VpdGFibGVNaW5EYXRlKGQudG9EYXRlKCksIG1pbk1heC5taW4pIHx8ICF0aGlzLmlzU3VpdGFibGVNYXhEYXRlKGQudG9EYXRlKCksIG1pbk1heC5tYXgpLFxuICAgICAgICBzZWxlY3RlZDogdGhpcy5pc1NlbGVjdGVkKGQudG9EYXRlKCksIHNlbGVjdGVkRGF0ZS50b0RhdGUoKSlcbiAgICAgIH0pXG4gICAgfSlcblxuICB9XG5cbiAgaXNTdWl0YWJsZU1pbkRhdGUoZDogRGF0ZSwgbWluRGF0ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlcikge1xuICAgIHJldHVybiBkYXlqcyhuZXcgRGF0ZShtaW5EYXRlKSkuc3RhcnRPZignZGF0ZScpLnRvRGF0ZSgpIDw9IG5ldyBEYXRlKGQpIHx8IG1pbkRhdGUgPT09IG51bGxcbiAgfVxuXG4gIGlzU3VpdGFibGVNYXhEYXRlKGQ6IERhdGUsIG1heERhdGU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoZCkgPCBkYXlqcyhuZXcgRGF0ZShtYXhEYXRlKSkuZW5kT2YoJ2RhdGUnKS50b0RhdGUoKSB8fCBtYXhEYXRlID09PSBudWxsO1xuICB9XG5cbiAgaXNTZWxlY3RlZChkYXRlOiBEYXRlLCBzZWxlY3RlZERhdGU6IERhdGUpIHtcbiAgICBjb25zdCBpc1NlbGVjdGVkRGF0ZSA9IGRhdGUuZ2V0RGF0ZSgpID09PSBzZWxlY3RlZERhdGU/LmdldERhdGUoKVxuICAgIGNvbnN0IGlzU2VsZWN0ZWRZZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpID09PSBzZWxlY3RlZERhdGU/LmdldEZ1bGxZZWFyKClcbiAgICBjb25zdCBpc1NlbGVjdGVkTW9udGggPSBkYXRlLmdldE1vbnRoKCkgPT09IHNlbGVjdGVkRGF0ZT8uZ2V0TW9udGgoKVxuICAgIHJldHVybiBpc1NlbGVjdGVkRGF0ZSAmJiBpc1NlbGVjdGVkTW9udGggJiYgaXNTZWxlY3RlZFllYXIgJiYgIXRoaXMuaXNEYXRlTnVsbFxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5hbGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgc2VsZWN0UGlja2VyKGVudGl0eTogXCJkYXlcIiB8IFwibW9udGhcIiB8IFwieWVhclwiKSB7XG4gICAgdGhpcy5zZWxlY3RlZFBpY2tlci5uZXh0KGVudGl0eSlcbiAgfVxuXG4gIHNlbGVjdE1vbnRoKG1vbnRoOiBudW1iZXIpIHtcbiAgICB0aGlzLmN1cnJlbnRNb250aC5uZXh0KG1vbnRoKVxuICAgIHRoaXMuc2VsZWN0UGlja2VyKFwiZGF5XCIpXG4gIH1cblxuICBzZWxlY3RZZWFyKHllYXI6IG51bWJlcikge1xuICAgIHRoaXMuc2V0WWVhcih5ZWFyKVxuICAgIHRoaXMuc2VsZWN0UGlja2VyKFwiZGF5XCIpXG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2VDYWxlbmRhckRhdGEodGhpcy5zZWxlY3RlZERhdGUpXG4gIH1cblxuICBjaGFuZ2VDYWxlbmRhckRhdGEoc2VsZWN0ZWREYXRlOiBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nKSB7XG4gICAgbGV0IGRhdGUgPSBuZXcgRGF0ZShzZWxlY3RlZERhdGUgfHwgbmV3IERhdGUoKSk7XG4gICAgdGhpcy5jdXJyZW50TW9udGgubmV4dChuZXcgRGF0ZShkYXRlKS5nZXRNb250aCgpKVxuICAgIHRoaXMuY3VycmVudFllYXIubmV4dChuZXcgRGF0ZShkYXRlKS5nZXRGdWxsWWVhcigpKVxuICAgIHRoaXMubWluTWF4Lm5leHQoe21pbjogdGhpcy5taW4sIG1heDogdGhpcy5tYXh9KVxuICB9XG5cbiAgc2V0WWVhcih5ZWFyOiBudW1iZXIpIHtcbiAgICB0aGlzLmN1cnJlbnRZZWFyLm5leHQoeWVhcilcbiAgfVxuXG4gIGNoYW5nZU1vbnRoKG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlcikge1xuICAgIGNvbnN0IHthdmFpbGFibGVZZWFyLCBhdmFpbGFibGVNb250aH0gPSB0aGlzLmdldEF2YWlsYWJsZU1vbnRoWWVhcihtb250aCwgeWVhcilcbiAgICB0aGlzLmN1cnJlbnRNb250aC5uZXh0KGF2YWlsYWJsZU1vbnRoKVxuICAgIHRoaXMuY3VycmVudFllYXIubmV4dChhdmFpbGFibGVZZWFyKVxuICB9XG5cbiAgZ2V0QXZhaWxhYmxlTW9udGhZZWFyKG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlcikge1xuICAgIGlmIChtb250aCA+IDExKSB7XG4gICAgICByZXR1cm4ge2F2YWlsYWJsZU1vbnRoOiBtb250aCAtIDEyLCBhdmFpbGFibGVZZWFyOiB5ZWFyICsgMX1cbiAgICB9XG4gICAgaWYgKG1vbnRoIDwgMCkge1xuICAgICAgcmV0dXJuIHthdmFpbGFibGVNb250aDogMTIgKyBtb250aCwgYXZhaWxhYmxlWWVhcjogeWVhciAtIDF9XG4gICAgfVxuICAgIHJldHVybiB7YXZhaWxhYmxlTW9udGg6IG1vbnRoLCBhdmFpbGFibGVZZWFyOiB5ZWFyfVxuICB9XG5cbiAgZ2V0TW90aE5hbWUobW9udGg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmxvY2FsZU1vbnRocy5nZXQodGhpcy5sb2NhbGUpW21vbnRoXVxuICB9XG5cbiAgc2VsZWN0RGF0ZShkYXRlOiBEYXRlKSB7XG4gICAgdGhpcy5zZXREYXRlLmVtaXQoZGF0ZSk7XG4gIH1cblxufVxuIl19
@@ -0,0 +1,107 @@
1
+ import dayjs from "dayjs";
2
+ export class BasePicker {
3
+ _elementRef;
4
+ _cdr;
5
+ datePipe;
6
+ open = false;
7
+ placeholder = '';
8
+ inputText;
9
+ maskitoOptions;
10
+ constructor(_elementRef, _cdr, datePipe) {
11
+ this._elementRef = _elementRef;
12
+ this._cdr = _cdr;
13
+ this.datePipe = datePipe;
14
+ this.inputText = this.checkNull();
15
+ }
16
+ changeInput(v) {
17
+ this.changePlaceholder(v);
18
+ }
19
+ changePlaceholder(value) {
20
+ let val = this.mask.split('');
21
+ for (let i = 0; value.length > i; i++) {
22
+ val.splice(i, 1, value[i]);
23
+ }
24
+ this.placeholder = val.join('');
25
+ this._cdr.detectChanges();
26
+ }
27
+ openChange(e) {
28
+ this.onBlur();
29
+ this.open = e;
30
+ }
31
+ checkNull() {
32
+ if (!this.date && this.allowNull) {
33
+ return null;
34
+ }
35
+ return this.datePipe.transform(new Date(), 'dd.MM.yyyy, HH:mm');
36
+ }
37
+ openPicker = (show) => {
38
+ if (this.disabled) {
39
+ return;
40
+ }
41
+ this.open = show;
42
+ this._cdr.markForCheck();
43
+ };
44
+ changeSelectedDate(date, selectedDate) {
45
+ this.setDate(date);
46
+ this.emitValue(date);
47
+ this.open = false;
48
+ }
49
+ emitValue(value) {
50
+ this.date = value;
51
+ this.selectDate.emit(value);
52
+ this.onChange(value);
53
+ }
54
+ checkEnter(e) {
55
+ if (e.key === "Enter") {
56
+ this.inputText = e.target.value;
57
+ this.onBlur();
58
+ }
59
+ if (e.key === '-') {
60
+ e.preventDefault();
61
+ }
62
+ this.open = true;
63
+ }
64
+ isAvailableLength(val, length) {
65
+ if (val?.length) {
66
+ return val.length === length;
67
+ }
68
+ return false;
69
+ }
70
+ getDateFromStr(str, separator = '.') {
71
+ const date = str?.split(separator);
72
+ const day = this.isAvailableLength((date?.[0]), 2) ? Number(date[0]) : null;
73
+ const month = this.isAvailableLength((date?.[1]), 2) ? Number(date[1]) : null;
74
+ const year = this.isAvailableLength((date?.[2]), 4) ? Number(date[2]) : null;
75
+ return { day, month, year };
76
+ }
77
+ getTimeFromStr(str, separator = ':') {
78
+ const time = str?.trim().split(separator);
79
+ const hours = this.isAvailableLength((time?.[0]), 2) ? Number(time[0]) : null;
80
+ const mins = this.isAvailableLength((time?.[1]), 2) ? Number(time[1]) : null;
81
+ return { hours, mins };
82
+ }
83
+ focus() {
84
+ this._elementRef.nativeElement.focus();
85
+ }
86
+ getLocaleString(date) {
87
+ return new Date(date).toLocaleString([], {
88
+ year: 'numeric',
89
+ month: '2-digit',
90
+ day: '2-digit',
91
+ hour: this.showTime ? '2-digit' : undefined,
92
+ minute: this.showTime ? '2-digit' : undefined,
93
+ });
94
+ }
95
+ getAvailableDate(min, max, date) {
96
+ let minDate = dayjs(new Date(min)).startOf("day").toDate();
97
+ let maxDate = dayjs(new Date(max)).endOf("day").toDate();
98
+ if (min && minDate.getTime() >= new Date(date).getTime()) {
99
+ return new Date();
100
+ }
101
+ if (max && maxDate.getTime() <= new Date(date).getTime()) {
102
+ return maxDate;
103
+ }
104
+ return new Date(date);
105
+ }
106
+ }
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1waWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL2Jhc2UtcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQVUxQixNQUFNLE9BQWdCLFVBQVU7SUF1QkU7SUFDQTtJQUNBO0lBUnpCLElBQUksR0FBRyxLQUFLLENBQUM7SUFFYixXQUFXLEdBQUcsRUFBRSxDQUFBO0lBQ2hCLFNBQVMsQ0FBUztJQUNsQixjQUFjLENBQWlCO0lBRXRDLFlBQWdDLFdBQXVCLEVBQ3ZCLElBQXVCLEVBQ3ZCLFFBQWtCO1FBRmxCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBQ3ZCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQVVELFdBQVcsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzNCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFhO1FBQzdCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3JDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM1QjtRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxD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LFNBQVM7U0FDOUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQTJCLEVBQUUsR0FBMkIsRUFBRSxJQUE0QjtRQUNyRyxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUE7UUFDMUQsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQ3hELElBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN4RCxPQUFPLElBQUksSUFBSSxFQUFFLENBQUE7U0FDbEI7UUFDRCxJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDeEQsT0FBTyxPQUFPLENBQUE7U0FDZjtRQUNELE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDdkIsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtBbGlnbn0gZnJvbSBcIi4uLy4uL2NvbW1vbi9lbnVtL2FsaWduLmVudW1cIjtcbmltcG9ydCB7VmVydGljYWxBbGlnbn0gZnJvbSBcIi4uLy4uL2NvbW1vbi9lbnVtL3ZlcnRpY2FsLWFsaWduLmVudW1cIjtcbmltcG9ydCB7UmVwbGF5U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7TWFza2l0b09wdGlvbnN9IGZyb20gXCJAbWFza2l0by9jb3JlXCI7XG5pbXBvcnQge3ZpZXdUeXBlfSBmcm9tIFwiLi4vLi4vY29tbW9uL21vZGVsL3ZpZXctdHlwZS5tb2RlbFwiO1xuaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtEYXRlRnJvbVRvTW9kZWx9IGZyb20gXCIuL21vZGVsL2Zyb20tdG8ubW9kZWxcIjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VQaWNrZXIge1xuICBhYnN0cmFjdCBtYXNrOiBzdHJpbmc7XG4gIGFic3RyYWN0IGRhdGU7XG4gIGFic3RyYWN0IGxvY2FsZTogc3RyaW5nXG4gIGFic3RyYWN0IHNob3dUaW1lOiBib29sZWFuXG4gIGFic3RyYWN0IG1pbkRhdGU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXJcbiAgYWJzdHJhY3QgbWF4RGF0ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlclxuICBhYnN0cmFjdCBpbnZhbGlkOiBib29sZWFuXG4gIGFic3RyYWN0IGRpc2FibGVkOiBib29sZWFuXG4gIGFic3RyYWN0IGFsaWduOiBBbGlnblxuICBhYnN0cmFjdCB2ZXJ0aWNhbEFsaWduOiBWZXJ0aWNhbEFsaWduXG4gIGFic3RyYWN0IHZpZXdUeXBlOiB2aWV3VHlwZVxuICBhYnN0cmFjdCBhcHBlbmRUb0JvZHk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGJhY2tkcm9wOiBib29sZWFuO1xuICBhYnN0cmFjdCBhbGxvd051bGw6IGJvb2xlYW5cbiAgYWJzdHJhY3QgaW5wdXQ6IEVsZW1lbnRSZWY7XG4gIGFic3RyYWN0IHNlbGVjdERhdGU6IEV2ZW50RW1pdHRlcjxEYXRlIHwgRGF0ZUZyb21Ub01vZGVsPlxuICBwdWJsaWMgb3BlbiA9IGZhbHNlO1xuICBhYnN0cmFjdCBzZWxlY3RlZERhdGU6IFJlcGxheVN1YmplY3Q8YW55PjtcbiAgcHVibGljIHBsYWNlaG9sZGVyID0gJydcbiAgcHVibGljIGlucHV0VGV4dDogc3RyaW5nO1xuICBwdWJsaWMgbWFza2l0b09wdGlvbnM6IE1hc2tpdG9PcHRpb25zO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgZGF0ZVBpcGU6IERhdGVQaXBlKSB7XG4gICAgdGhpcy5pbnB1dFRleHQgPSB0aGlzLmNoZWNrTnVsbCgpO1xuICB9XG5cbiAgYWJzdHJhY3Qgb25DaGFuZ2UoZGF0ZTogRGF0ZSk7XG5cbiAgYWJzdHJhY3QgcHJlcGFyZUlucHV0KCk7XG5cbiAgYWJzdHJhY3Qgb25CbHVyKCk7XG5cbiAgYWJzdHJhY3Qgc2V0RGF0ZShkYXRlKTtcblxuICBjaGFuZ2VJbnB1dCh2KSB7XG4gICAgdGhpcy5jaGFuZ2VQbGFjZWhvbGRlcih2KVxuICB9XG5cbiAgY2hhbmdlUGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIGxldCB2YWwgPSB0aGlzLm1hc2suc3BsaXQoJycpO1xuICAgIGZvciAobGV0IGkgPSAwOyB2YWx1ZS5sZW5ndGggPiBpOyBpKyspIHtcbiAgICAgIHZhbC5zcGxpY2UoaSwgMSwgdmFsdWVbaV0pO1xuICAgIH1cblxuICAgIHRoaXMucGxhY2Vob2xkZXIgPSB2YWwuam9pbignJyk7XG4gICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKVxuICB9XG5cbiAgb3BlbkNoYW5nZShlOiBib29sZWFuKSB7XG4gICAgdGhpcy5vbkJsdXIoKTtcbiAgICB0aGlzLm9wZW4gPSBlXG4gIH1cblxuICBjaGVja051bGwoKSB7XG4gICAgaWYgKCF0aGlzLmRhdGUgJiYgdGhpcy5hbGxvd051bGwpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShuZXcgRGF0ZSgpLCAnZGQuTU0ueXl5eSwgSEg6bW0nKVxuICB9XG5cbiAgb3BlblBpY2tlciA9IChzaG93OiBib29sZWFuKSA9PiB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vcGVuID0gc2hvdztcbiAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gIH07XG5cbiAgY2hhbmdlU2VsZWN0ZWREYXRlKGRhdGUsIHNlbGVjdGVkRGF0ZT8pIHtcbiAgICB0aGlzLnNldERhdGUoZGF0ZSlcbiAgICB0aGlzLmVtaXRWYWx1ZShkYXRlKVxuICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgZW1pdFZhbHVlKHZhbHVlKSB7XG4gICAgdGhpcy5kYXRlID0gdmFsdWVcbiAgICB0aGlzLnNlbGVjdERhdGUuZW1pdCh2YWx1ZSlcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKVxuICB9XG5cblxuICBjaGVja0VudGVyKGUpIHtcbiAgICBpZiAoZS5rZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgdGhpcy5pbnB1dFRleHQgPSBlLnRhcmdldC52YWx1ZTtcbiAgICAgIHRoaXMub25CbHVyKClcbiAgICB9XG4gICAgaWYgKGUua2V5ID09PSAnLScpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIH1cbiAgICB0aGlzLm9wZW4gPSB0cnVlO1xuICB9XG5cbiAgaXNBdmFpbGFibGVMZW5ndGgodmFsOiBzdHJpbmcsIGxlbmd0aDogbnVtYmVyKSB7XG4gICAgaWYgKHZhbD8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdmFsLmxlbmd0aCA9PT0gbGVuZ3RoXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgZ2V0RGF0ZUZyb21TdHIoc3RyOiBzdHJpbmcsIHNlcGFyYXRvcjogc3RyaW5nID0gJy4nKSB7XG4gICAgY29uc3QgZGF0ZSA9IHN0cj8uc3BsaXQoc2VwYXJhdG9yKVxuICAgIGNvbnN0IGRheSA9IHRoaXMuaXNBdmFpbGFibGVMZW5ndGgoKGRhdGU/LlswXSksIDIpID8gTnVtYmVyKGRhdGVbMF0pIDogbnVsbFxuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5pc0F2YWlsYWJsZUxlbmd0aCgoZGF0ZT8uWzFdKSwgMikgPyBOdW1iZXIoZGF0ZVsxXSkgOiBudWxsXG4gICAgY29uc3QgeWVhciA9IHRoaXMuaXNBdmFpbGFibGVMZW5ndGgoKGRhdGU/LlsyXSksIDQpID8gTnVtYmVyKGRhdGVbMl0pIDogbnVsbFxuICAgIHJldHVybiB7ZGF5LCBtb250aCwgeWVhcn1cbiAgfVxuXG4gIGdldFRpbWVGcm9tU3RyKHN0cjogc3RyaW5nLCBzZXBhcmF0b3I6IHN0cmluZyA9ICc6Jykge1xuICAgIGNvbnN0IHRpbWUgPSBzdHI/LnRyaW0oKS5zcGxpdChzZXBhcmF0b3IpXG4gICAgY29uc3QgaG91cnMgPSB0aGlzLmlzQXZhaWxhYmxlTGVuZ3RoKCh0aW1lPy5bMF0pLCAyKSA/IE51bWJlcih0aW1lWzBdKSA6IG51bGxcbiAgICBjb25zdCBtaW5zID0gdGhpcy5pc0F2YWlsYWJsZUxlbmd0aCgodGltZT8uWzFdKSwgMikgPyBOdW1iZXIodGltZVsxXSkgOiBudWxsXG4gICAgcmV0dXJuIHtob3VycywgbWluc31cbiAgfVxuXG4gIGZvY3VzKCkge1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgZ2V0TG9jYWxlU3RyaW5nKGRhdGU6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZSkudG9Mb2NhbGVTdHJpbmcoW10sIHtcbiAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgIG1vbnRoOiAnMi1kaWdpdCcsXG4gICAgICBkYXk6ICcyLWRpZ2l0JyxcbiAgICAgIGhvdXI6IHRoaXMuc2hvd1RpbWUgPyAnMi1kaWdpdCcgOiB1bmRlZmluZWQsXG4gICAgICBtaW51dGU6IHRoaXMuc2hvd1RpbWUgPyAnMi1kaWdpdCcgOiB1bmRlZmluZWQsXG4gICAgfSlcbiAgfVxuXG4gIGdldEF2YWlsYWJsZURhdGUobWluOiBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nLCBtYXg6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcsIGRhdGU6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICBsZXQgbWluRGF0ZSA9IGRheWpzKG5ldyBEYXRlKG1pbikpLnN0YXJ0T2YoXCJkYXlcIikudG9EYXRlKClcbiAgICBsZXQgbWF4RGF0ZSA9IGRheWpzKG5ldyBEYXRlKG1heCkpLmVuZE9mKFwiZGF5XCIpLnRvRGF0ZSgpXG4gICAgaWYgKG1pbiAmJiBtaW5EYXRlLmdldFRpbWUoKSA+PSBuZXcgRGF0ZShkYXRlKS5nZXRUaW1lKCkpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpXG4gICAgfVxuICAgIGlmIChtYXggJiYgbWF4RGF0ZS5nZXRUaW1lKCkgPD0gbmV3IERhdGUoZGF0ZSkuZ2V0VGltZSgpKSB7XG4gICAgICByZXR1cm4gbWF4RGF0ZVxuICAgIH1cbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZSlcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,56 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
2
+ import { BaseCalendar } from "../../base-calendar";
3
+ import dayjs from "dayjs";
4
+ import { combineLatest, filter, map, takeWhile } from "rxjs";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "../../../button/button/button.component";
8
+ import * as i3 from "../../../icon/icon/icon.component";
9
+ import * as i4 from "../../day-picker/day-picker.component";
10
+ import * as i5 from "../../month-picker/month-picker.component";
11
+ import * as i6 from "../../year-picker/year-picker.component";
12
+ export class DateCalendarComponent extends BaseCalendar {
13
+ _cdr;
14
+ selectedDate = new Date();
15
+ locale;
16
+ open;
17
+ viewType;
18
+ min;
19
+ isDateNull;
20
+ max;
21
+ setDate = new EventEmitter();
22
+ calendar = [];
23
+ constructor(_cdr) {
24
+ super(_cdr);
25
+ this._cdr = _cdr;
26
+ dayjs().locale('ru', { weekStart: 1 });
27
+ combineLatest([this.currentYear, this.currentMonth, this.minMax]).pipe(takeWhile(() => this.alive), filter(([currentYear, currentMonth]) => currentMonth !== null && currentYear !== null), map(([year, month, minMax]) => {
28
+ return this.generateCalendar(dayjs(new Date(this.selectedDate)).locale(this.locale), year, month, minMax);
29
+ })).subscribe((_) => {
30
+ this.calendar = _;
31
+ });
32
+ }
33
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DateCalendarComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
34
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: DateCalendarComponent, selector: "teta-date-calendar", inputs: { selectedDate: "selectedDate", locale: "locale", open: "open", viewType: "viewType", min: "min", isDateNull: "isDateNull", max: "max" }, outputs: { setDate: "setDate" }, usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"{currentMonth:currentMonth|async,currentYear:currentYear|async,selectedPicker:selectedPicker|async} as data\"\n class=\"datepicker-content overflow-y-auto\"\n>\n <ng-container *ngIf=\"data.selectedPicker==='day'\">\n <div class=\"padding-h-3 padding-v-2\">\n <div class=\"row align-center justify-content-between\">\n <teta-button [class]=\"'change-month-button datepicker_'+viewType\" [square]=\"true\"\n (click)=\"changeMonth(data.currentMonth-1,data.currentYear)\"\n palette=\"text\"\n view=\"ghost\">\n <teta-icon name=\"arrowLeftKey\"></teta-icon>\n </teta-button>\n <div class=\"row gap-4 font-button-2 \">\n <button [class]=\"'datepicker_'+viewType \" teta-button view=\"ghost\" palette=\"text\"\n (click)=\"selectPicker('month')\"> {{getMothName(data.currentMonth)}}</button>\n <button [class]=\"'datepicker_'+viewType\" teta-button view=\"ghost\" palette=\"text\"\n (click)=\"selectPicker('year')\">{{data.currentYear}}</button>\n </div>\n <teta-button [square]=\"true\" [class]=\"'change-month-button datepicker_'+viewType\"\n (click)=\"changeMonth(data.currentMonth+1,data.currentYear)\"\n palette=\"text\"\n view=\"ghost\">\n <teta-icon name=\"arrowRightKey\"></teta-icon>\n </teta-button>\n </div>\n <div>\n <teta-day-picker [viewType]=\"viewType\" (selectDate)=\"selectDate($event)\" [locale]=\"locale\"\n [calendar]=\"calendar\"></teta-day-picker>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"data.selectedPicker==='month'\">\n <teta-month-picker [localeMoths]=\"localeMonths\" [currentYear]=\"data.currentYear\" (changeYear)=\"setYear($event)\"\n [selectedMonth]=\"data.currentMonth\" [viewType]=\"viewType\" [locale]=\"locale\"\n (selectMonth)=\"selectMonth($event)\"></teta-month-picker>\n </ng-container>\n <ng-container *ngIf=\"data.selectedPicker==='year'\">\n <teta-year-picker [locale]=\"locale\" [viewType]=\"viewType\" (selectYear)=\"selectYear($event)\"\n [selectedYear]=\"data.currentYear\"></teta-year-picker>\n </ng-container>\n</div>\n\n", styles: [".change-month-button{-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square", "viewType", "size"] }, { kind: "component", type: i3.IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "component", type: i4.DayPickerComponent, selector: "teta-day-picker", inputs: ["date", "calendar", "viewType", "range", "min", "max", "locale", "hoveredDate"], outputs: ["hoveredDateChange", "selectDate"] }, { kind: "component", type: i5.MonthPickerComponent, selector: "teta-month-picker", inputs: ["locale", "selectedMonth", "viewType", "currentYear", "localeMoths"], outputs: ["selectMonth", "changeYear"] }, { kind: "component", type: i6.YearPickerComponent, selector: "teta-year-picker", inputs: ["selectedYear", "viewType", "minMax", "locale"], outputs: ["selectYear"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
35
+ }
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DateCalendarComponent, decorators: [{
37
+ type: Component,
38
+ args: [{ selector: 'teta-date-calendar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"{currentMonth:currentMonth|async,currentYear:currentYear|async,selectedPicker:selectedPicker|async} as data\"\n class=\"datepicker-content overflow-y-auto\"\n>\n <ng-container *ngIf=\"data.selectedPicker==='day'\">\n <div class=\"padding-h-3 padding-v-2\">\n <div class=\"row align-center justify-content-between\">\n <teta-button [class]=\"'change-month-button datepicker_'+viewType\" [square]=\"true\"\n (click)=\"changeMonth(data.currentMonth-1,data.currentYear)\"\n palette=\"text\"\n view=\"ghost\">\n <teta-icon name=\"arrowLeftKey\"></teta-icon>\n </teta-button>\n <div class=\"row gap-4 font-button-2 \">\n <button [class]=\"'datepicker_'+viewType \" teta-button view=\"ghost\" palette=\"text\"\n (click)=\"selectPicker('month')\"> {{getMothName(data.currentMonth)}}</button>\n <button [class]=\"'datepicker_'+viewType\" teta-button view=\"ghost\" palette=\"text\"\n (click)=\"selectPicker('year')\">{{data.currentYear}}</button>\n </div>\n <teta-button [square]=\"true\" [class]=\"'change-month-button datepicker_'+viewType\"\n (click)=\"changeMonth(data.currentMonth+1,data.currentYear)\"\n palette=\"text\"\n view=\"ghost\">\n <teta-icon name=\"arrowRightKey\"></teta-icon>\n </teta-button>\n </div>\n <div>\n <teta-day-picker [viewType]=\"viewType\" (selectDate)=\"selectDate($event)\" [locale]=\"locale\"\n [calendar]=\"calendar\"></teta-day-picker>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"data.selectedPicker==='month'\">\n <teta-month-picker [localeMoths]=\"localeMonths\" [currentYear]=\"data.currentYear\" (changeYear)=\"setYear($event)\"\n [selectedMonth]=\"data.currentMonth\" [viewType]=\"viewType\" [locale]=\"locale\"\n (selectMonth)=\"selectMonth($event)\"></teta-month-picker>\n </ng-container>\n <ng-container *ngIf=\"data.selectedPicker==='year'\">\n <teta-year-picker [locale]=\"locale\" [viewType]=\"viewType\" (selectYear)=\"selectYear($event)\"\n [selectedYear]=\"data.currentYear\"></teta-year-picker>\n </ng-container>\n</div>\n\n", styles: [".change-month-button{-webkit-user-select:none;user-select:none}\n"] }]
39
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { selectedDate: [{
40
+ type: Input
41
+ }], locale: [{
42
+ type: Input
43
+ }], open: [{
44
+ type: Input
45
+ }], viewType: [{
46
+ type: Input
47
+ }], min: [{
48
+ type: Input
49
+ }], isDateNull: [{
50
+ type: Input
51
+ }], max: [{
52
+ type: Input
53
+ }], setDate: [{
54
+ type: Output
55
+ }] } });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1jYWxlbmRhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL2RhdGUtcGlja2VyL2RhdGUtY2FsZW5kYXIvZGF0ZS1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL2RhdGUtcGlja2VyL2RhdGUtY2FsZW5kYXIvZGF0ZS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFakQsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBUzNELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxZQUFZO0lBVWhDO0lBVFosWUFBWSxHQUEyQixJQUFJLElBQUksRUFBRSxDQUFDO0lBQ2xELE1BQU0sQ0FBUztJQUNmLElBQUksQ0FBVTtJQUNkLFFBQVEsQ0FBVztJQUNuQixHQUFHLENBQXlCO0lBQzVCLFVBQVUsQ0FBVTtJQUNwQixHQUFHLENBQXlCO0lBQzNCLE9BQU8sR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUMxRCxRQUFRLEdBQWUsRUFBRSxDQUFBO0lBQ2hDLFlBQXFCLElBQXVCO1FBQzFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQURRLFNBQUksR0FBSixJQUFJLENBQW1CO1FBRTFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBQyxTQUFTLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztRQUNyQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNwRSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUMzQixNQUFNLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxLQUFLLElBQUksSUFBSSxXQUFXLEtBQUssSUFBSSxDQUFDLEVBQ3RGLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFO1lBQzVCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDM0csQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7dUdBdEJVLHFCQUFxQjsyRkFBckIscUJBQXFCLG9RQ3hCbEMsK3pFQTBDQTs7MkZEbEJhLHFCQUFxQjtrQkFOakMsU0FBUzsrQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTTt3R0FHdEMsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNJLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3ZpZXdUeXBlfSBmcm9tIFwiLi4vLi4vLi4vLi4vY29tbW9uL21vZGVsL3ZpZXctdHlwZS5tb2RlbFwiO1xuXG5pbXBvcnQge0Jhc2VDYWxlbmRhcn0gZnJvbSBcIi4uLy4uL2Jhc2UtY2FsZW5kYXJcIjtcbmltcG9ydCB7RGF5TW9kZWx9IGZyb20gXCIuLi8uLi9tb2RlbC9kYXktbW9kZWxcIjtcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgZmlsdGVyLCBtYXAsIHRha2VXaGlsZX0gZnJvbSBcInJ4anNcIjtcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLWRhdGUtY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGUtY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZUNhbGVuZGFyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNhbGVuZGFyIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3l7XG4gIEBJbnB1dCgpIHNlbGVjdGVkRGF0ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlciA9IG5ldyBEYXRlKCk7XG4gIEBJbnB1dCgpIGxvY2FsZTogc3RyaW5nO1xuICBASW5wdXQoKSBvcGVuOiBib29sZWFuO1xuICBASW5wdXQoKSB2aWV3VHlwZTogdmlld1R5cGU7XG4gIEBJbnB1dCgpIG1pbjogRGF0ZSB8IHN0cmluZyB8IG51bWJlcjtcbiAgQElucHV0KCkgaXNEYXRlTnVsbDogYm9vbGVhbjtcbiAgQElucHV0KCkgbWF4OiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyO1xuICBAT3V0cHV0KCkgc2V0RGF0ZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuICBwdWJsaWMgY2FsZW5kYXI6IERheU1vZGVsW10gPSBbXVxuICBjb25zdHJ1Y3RvcihvdmVycmlkZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKF9jZHIpXG4gICAgZGF5anMoKS5sb2NhbGUoJ3J1Jywge3dlZWtTdGFydDogMX0pO1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuY3VycmVudFllYXIsIHRoaXMuY3VycmVudE1vbnRoLCB0aGlzLm1pbk1heF0pLnBpcGUoXG4gICAgICB0YWtlV2hpbGUoKCkgPT4gdGhpcy5hbGl2ZSksXG4gICAgICBmaWx0ZXIoKFtjdXJyZW50WWVhciwgY3VycmVudE1vbnRoXSkgPT4gY3VycmVudE1vbnRoICE9PSBudWxsICYmIGN1cnJlbnRZZWFyICE9PSBudWxsKSxcbiAgICAgIG1hcCgoW3llYXIsIG1vbnRoLCBtaW5NYXhdKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoZGF5anMobmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGUpKS5sb2NhbGUodGhpcy5sb2NhbGUpLCB5ZWFyLCBtb250aCwgbWluTWF4KVxuICAgICAgfSlcbiAgICApLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgdGhpcy5jYWxlbmRhciA9IF87XG4gICAgfSlcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cIntjdXJyZW50TW9udGg6Y3VycmVudE1vbnRofGFzeW5jLGN1cnJlbnRZZWFyOmN1cnJlbnRZZWFyfGFzeW5jLHNlbGVjdGVkUGlja2VyOnNlbGVjdGVkUGlja2VyfGFzeW5jfSBhcyBkYXRhXCJcbiAgICAgY2xhc3M9XCJkYXRlcGlja2VyLWNvbnRlbnQgb3ZlcmZsb3cteS1hdXRvXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEuc2VsZWN0ZWRQaWNrZXI9PT0nZGF5J1wiPlxuICAgIDxkaXYgY2xhc3M9XCJwYWRkaW5nLWgtMyBwYWRkaW5nLXYtMlwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgICAgPHRldGEtYnV0dG9uIFtjbGFzc109XCInY2hhbmdlLW1vbnRoLWJ1dHRvbiBkYXRlcGlja2VyXycrdmlld1R5cGVcIiBbc3F1YXJlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZU1vbnRoKGRhdGEuY3VycmVudE1vbnRoLTEsZGF0YS5jdXJyZW50WWVhcilcIlxuICAgICAgICAgICAgICAgICAgICAgcGFsZXR0ZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgdmlldz1cImdob3N0XCI+XG4gICAgICAgICAgPHRldGEtaWNvbiBuYW1lPVwiYXJyb3dMZWZ0S2V5XCI+PC90ZXRhLWljb24+XG4gICAgICAgIDwvdGV0YS1idXR0b24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZ2FwLTQgZm9udC1idXR0b24tMiBcIj5cbiAgICAgICAgICA8YnV0dG9uIFtjbGFzc109XCInZGF0ZXBpY2tlcl8nK3ZpZXdUeXBlIFwiIHRldGEtYnV0dG9uIHZpZXc9XCJnaG9zdFwiIHBhbGV0dGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQaWNrZXIoJ21vbnRoJylcIj4ge3tnZXRNb3RoTmFtZShkYXRhLmN1cnJlbnRNb250aCl9fTwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gW2NsYXNzXT1cIidkYXRlcGlja2VyXycrdmlld1R5cGVcIiB0ZXRhLWJ1dHRvbiB2aWV3PVwiZ2hvc3RcIiBwYWxldHRlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGlja2VyKCd5ZWFyJylcIj57e2RhdGEuY3VycmVudFllYXJ9fTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHRldGEtYnV0dG9uIFtzcXVhcmVdPVwidHJ1ZVwiIFtjbGFzc109XCInY2hhbmdlLW1vbnRoLWJ1dHRvbiBkYXRlcGlja2VyXycrdmlld1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZU1vbnRoKGRhdGEuY3VycmVudE1vbnRoKzEsZGF0YS5jdXJyZW50WWVhcilcIlxuICAgICAgICAgICAgICAgICAgICAgcGFsZXR0ZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgdmlldz1cImdob3N0XCI+XG4gICAgICAgICAgPHRldGEtaWNvbiBuYW1lPVwiYXJyb3dSaWdodEtleVwiPjwvdGV0YS1pY29uPlxuICAgICAgICA8L3RldGEtYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8dGV0YS1kYXktcGlja2VyIFt2aWV3VHlwZV09XCJ2aWV3VHlwZVwiIChzZWxlY3REYXRlKT1cInNlbGVjdERhdGUoJGV2ZW50KVwiIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbY2FsZW5kYXJdPVwiY2FsZW5kYXJcIj48L3RldGEtZGF5LXBpY2tlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEuc2VsZWN0ZWRQaWNrZXI9PT0nbW9udGgnXCI+XG4gICAgPHRldGEtbW9udGgtcGlja2VyIFtsb2NhbGVNb3Roc109XCJsb2NhbGVNb250aHNcIiBbY3VycmVudFllYXJdPVwiZGF0YS5jdXJyZW50WWVhclwiIChjaGFuZ2VZZWFyKT1cInNldFllYXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZE1vbnRoXT1cImRhdGEuY3VycmVudE1vbnRoXCIgW3ZpZXdUeXBlXT1cInZpZXdUeXBlXCIgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0TW9udGgpPVwic2VsZWN0TW9udGgoJGV2ZW50KVwiPjwvdGV0YS1tb250aC1waWNrZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5zZWxlY3RlZFBpY2tlcj09PSd5ZWFyJ1wiPlxuICAgIDx0ZXRhLXllYXItcGlja2VyIFtsb2NhbGVdPVwibG9jYWxlXCIgW3ZpZXdUeXBlXT1cInZpZXdUeXBlXCIgKHNlbGVjdFllYXIpPVwic2VsZWN0WWVhcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRZZWFyXT1cImRhdGEuY3VycmVudFllYXJcIj48L3RldGEteWVhci1waWNrZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbiJdfQ==
@@ -0,0 +1,214 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, HostBinding, Input, Output, ViewChild } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from "@angular/forms";
3
+ import { Align } from "../../../common/enum/align.enum";
4
+ import { VerticalAlign } from "../../../common/enum/vertical-align.enum";
5
+ import { DatePipe } from "@angular/common";
6
+ import { BasePicker } from "../base-picker";
7
+ import dayjs from "dayjs";
8
+ import { maskitoDateOptionsGenerator, maskitoDateTimeOptionsGenerator } from "@maskito/kit";
9
+ import { ReplaySubject } from 'rxjs';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/common";
12
+ import * as i2 from "../../dropdown/dropdown/dropdown.component";
13
+ import * as i3 from "../../dropdown/dropdown-head.directive";
14
+ import * as i4 from "../../dropdown/dropdown-content.directive";
15
+ import * as i5 from "@angular/forms";
16
+ import * as i6 from "@maskito/angular";
17
+ import * as i7 from "../../icon/icon/icon.component";
18
+ import * as i8 from "../../input/input/input.component";
19
+ import * as i9 from "./date-calendar/date-calendar.component";
20
+ export const DATE_PICKER_CONTROL_VALUE_ACCESSOR = {
21
+ provide: NG_VALUE_ACCESSOR,
22
+ useExisting: forwardRef(() => DatePickerComponent),
23
+ multi: true,
24
+ };
25
+ export class DatePickerComponent extends BasePicker {
26
+ _elementRef;
27
+ _cdr;
28
+ datePipe;
29
+ date = null;
30
+ locale = 'ru';
31
+ showTime = false;
32
+ minDate = null;
33
+ maxDate = null;
34
+ invalid = false;
35
+ disabled = false;
36
+ align = Align.left;
37
+ verticalAlign = VerticalAlign.auto;
38
+ viewType = 'rounded';
39
+ appendToBody;
40
+ backdrop;
41
+ allowNull = false;
42
+ firstDayOfWeek = 1;
43
+ disabledDates;
44
+ disabledPeriods;
45
+ disabledDays;
46
+ minYearDate;
47
+ maxYearDate;
48
+ input;
49
+ selectDate = new EventEmitter();
50
+ selectedDate = new ReplaySubject(1);
51
+ mask = '';
52
+ classDatepicker = true;
53
+ tabindex = 0;
54
+ constructor(_elementRef, _cdr, datePipe) {
55
+ super(_elementRef, _cdr, datePipe);
56
+ this._elementRef = _elementRef;
57
+ this._cdr = _cdr;
58
+ this.datePipe = datePipe;
59
+ }
60
+ ngOnInit() {
61
+ if (!this.date) {
62
+ this.setDate(this.allowNull ? null : new Date());
63
+ this.date = this.allowNull ? null : new Date();
64
+ }
65
+ else {
66
+ this.setDate(new Date(this.date));
67
+ }
68
+ this.prepareInput();
69
+ }
70
+ prepareInput() {
71
+ const str = this.date ? this.getLocaleString(this.date) : '';
72
+ let option;
73
+ const setMinMax = () => {
74
+ if (this.minDate) {
75
+ option.min = dayjs(new Date(this.minDate)).startOf('day');
76
+ }
77
+ if (this.maxDate) {
78
+ option.max = dayjs(new Date(this.maxDate)).endOf('day');
79
+ }
80
+ };
81
+ if (this.showTime) {
82
+ this.mask = 'dd.mm.yyyy, hh:mm';
83
+ option = {
84
+ dateMode: 'dd/mm/yyyy',
85
+ timeMode: 'HH:MM',
86
+ dateSeparator: '.',
87
+ };
88
+ setMinMax();
89
+ this.maskitoOptions = maskitoDateTimeOptionsGenerator(option);
90
+ }
91
+ else {
92
+ this.mask = 'dd.mm.yyyy';
93
+ option = {
94
+ mode: 'dd/mm/yyyy',
95
+ separator: '.',
96
+ };
97
+ setMinMax();
98
+ this.maskitoOptions = maskitoDateOptionsGenerator(option);
99
+ }
100
+ this.changePlaceholder(str);
101
+ }
102
+ onBlur() {
103
+ if (this.allowNull && this.inputText.trim() === '') {
104
+ this.setDate(null);
105
+ this.emitValue(null);
106
+ }
107
+ else {
108
+ const val = this.inputText.split(',');
109
+ const { day, year, month } = this.getDateFromStr(val[0]);
110
+ const { mins, hours } = this.getTimeFromStr(val[1]);
111
+ if (day && year && month) {
112
+ let date = new Date(year, month - 1, day);
113
+ if (this.showTime) {
114
+ date = new Date(date.setHours(hours || 0, mins || 0));
115
+ }
116
+ this.changeSelectedDate(this.getAvailableDate(this.minDate, this.maxDate, date));
117
+ }
118
+ else {
119
+ this.setDate(this.date);
120
+ }
121
+ }
122
+ }
123
+ setDate(date) {
124
+ if (!date && this.allowNull) {
125
+ this.inputText = '';
126
+ this.changePlaceholder('');
127
+ this.selectedDate.next(new Date(this.minDate || new Date()));
128
+ }
129
+ else {
130
+ this.inputText = this.getLocaleString(date);
131
+ this.changePlaceholder(this.getLocaleString(date));
132
+ this.selectedDate.next(date);
133
+ }
134
+ }
135
+ onChange(date) {
136
+ }
137
+ registerOnChange(fn) {
138
+ this.onChange = fn;
139
+ }
140
+ registerOnTouched(fn) {
141
+ }
142
+ writeValue(obj) {
143
+ if (obj) {
144
+ this.date = new Date(obj);
145
+ this.setDate(new Date(this.date));
146
+ }
147
+ else {
148
+ if (this.allowNull) {
149
+ this.date = null;
150
+ this.selectedDate.next(null);
151
+ }
152
+ else {
153
+ this.date = this.minDate || new Date();
154
+ this.selectedDate.next(this.minDate || new Date());
155
+ }
156
+ }
157
+ }
158
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DatePickerComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Component });
159
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: DatePickerComponent, selector: "teta-date-picker", inputs: { date: "date", locale: "locale", showTime: "showTime", minDate: "minDate", maxDate: "maxDate", invalid: "invalid", disabled: "disabled", align: "align", verticalAlign: "verticalAlign", viewType: "viewType", appendToBody: "appendToBody", backdrop: "backdrop", allowNull: "allowNull", firstDayOfWeek: "firstDayOfWeek", disabledDates: "disabledDates", disabledPeriods: "disabledPeriods", disabledDays: "disabledDays", minYearDate: "minYearDate", maxYearDate: "maxYearDate" }, outputs: { selectDate: "selectDate" }, host: { properties: { "class.datepicker": "this.classDatepicker", "tabindex": "this.tabindex" } }, providers: [DATE_PICKER_CONTROL_VALUE_ACCESSOR, DatePipe], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<teta-dropdown *ngIf=\"{selectedDate:selectedDate|async}as data\"\n class=\"row row_auto\"\n [appendToBody]=\"appendToBody\"\n [backdrop]=\"backdrop\"\n [open]=\"open\"\n (openChange)=\"openChange($event)\"\n [viewType]=\"viewType\"\n [disabled]=\"disabled\"\n [verticalAlign]=\"verticalAlign\"\n [align]=\"align\"\n [autoCloseIgnore]=\"['esc', 'inside','enter']\">\n <div tetaDropdownHead\n [class]=\"'datepicker-head font-body-3 gap-8 datepicker_'+viewType\"\n [ngClass]=\"{'datepicker-head_invalid':invalid,'datepicker-head_disabled':disabled}\">\n <teta-input class=\"row row_auto flex\">\n <div [class]=\"'row_auto row datepicker_'+viewType\">\n <div class=\"row row_auto position-relative font-body-3 align-center\">\n <input [ngClass]=\"{'color-text-90':!disabled}\"\n [disabled]=\"disabled\" #input style=\"z-index: 1\"\n class=\"row_auto border-0\"\n (keydown)=\"checkEnter($event)\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"changeInput($event)\"\n [maskito]=\"maskitoOptions\">\n <div (click)=\"input.focus()\" *ngIf=\"data.selectedDate||allowNull\" class=\"position-absolute color-text-10\"\n style=\"top:-0.3px;cursor: text;user-select: none\">{{placeholder}}</div>\n </div>\n <teta-icon [name]=\"'calendar'\"></teta-icon>\n </div>\n </teta-input>\n </div>\n <div tetaDropdownContent class=\"scrollable\" (click)=\"$event.preventDefault()\">\n <ng-container *ngIf=\"open\">\n <teta-date-calendar [isDateNull]=\"date===null\" [open]=\"open\" [max]=\"maxDate\" [min]=\"minDate\"\n (setDate)=\"changeSelectedDate($event)\"\n [selectedDate]=\"data.selectedDate\"\n [viewType]=\"viewType\" [locale]=\"locale\"></teta-date-calendar>\n </ng-container>\n\n </div>\n</teta-dropdown>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.DropdownComponent, selector: "teta-dropdown", exportAs: ["dropdown"] }, { kind: "directive", type: i3.DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { kind: "directive", type: i4.DropdownContentDirective, selector: "[tetaDropdownContent]" }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "directive", type: i6.MaskitoCva, selector: "input[maskito], textarea[maskito]", inputs: ["maskito"] }, { kind: "component", type: i7.IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "component", type: i8.InputComponent, selector: "teta-input", inputs: ["label", "hint", "viewType", "horizontal", "required"] }, { kind: "component", type: i9.DateCalendarComponent, selector: "teta-date-calendar", inputs: ["selectedDate", "locale", "open", "viewType", "min", "isDateNull", "max"], outputs: ["setDate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
160
+ }
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DatePickerComponent, decorators: [{
162
+ type: Component,
163
+ args: [{ selector: 'teta-date-picker', changeDetection: ChangeDetectionStrategy.OnPush, providers: [DATE_PICKER_CONTROL_VALUE_ACCESSOR, DatePipe], template: "<teta-dropdown *ngIf=\"{selectedDate:selectedDate|async}as data\"\n class=\"row row_auto\"\n [appendToBody]=\"appendToBody\"\n [backdrop]=\"backdrop\"\n [open]=\"open\"\n (openChange)=\"openChange($event)\"\n [viewType]=\"viewType\"\n [disabled]=\"disabled\"\n [verticalAlign]=\"verticalAlign\"\n [align]=\"align\"\n [autoCloseIgnore]=\"['esc', 'inside','enter']\">\n <div tetaDropdownHead\n [class]=\"'datepicker-head font-body-3 gap-8 datepicker_'+viewType\"\n [ngClass]=\"{'datepicker-head_invalid':invalid,'datepicker-head_disabled':disabled}\">\n <teta-input class=\"row row_auto flex\">\n <div [class]=\"'row_auto row datepicker_'+viewType\">\n <div class=\"row row_auto position-relative font-body-3 align-center\">\n <input [ngClass]=\"{'color-text-90':!disabled}\"\n [disabled]=\"disabled\" #input style=\"z-index: 1\"\n class=\"row_auto border-0\"\n (keydown)=\"checkEnter($event)\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"changeInput($event)\"\n [maskito]=\"maskitoOptions\">\n <div (click)=\"input.focus()\" *ngIf=\"data.selectedDate||allowNull\" class=\"position-absolute color-text-10\"\n style=\"top:-0.3px;cursor: text;user-select: none\">{{placeholder}}</div>\n </div>\n <teta-icon [name]=\"'calendar'\"></teta-icon>\n </div>\n </teta-input>\n </div>\n <div tetaDropdownContent class=\"scrollable\" (click)=\"$event.preventDefault()\">\n <ng-container *ngIf=\"open\">\n <teta-date-calendar [isDateNull]=\"date===null\" [open]=\"open\" [max]=\"maxDate\" [min]=\"minDate\"\n (setDate)=\"changeSelectedDate($event)\"\n [selectedDate]=\"data.selectedDate\"\n [viewType]=\"viewType\" [locale]=\"locale\"></teta-date-calendar>\n </ng-container>\n\n </div>\n</teta-dropdown>\n" }]
164
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.DatePipe }]; }, propDecorators: { date: [{
165
+ type: Input
166
+ }], locale: [{
167
+ type: Input
168
+ }], showTime: [{
169
+ type: Input
170
+ }], minDate: [{
171
+ type: Input
172
+ }], maxDate: [{
173
+ type: Input
174
+ }], invalid: [{
175
+ type: Input
176
+ }], disabled: [{
177
+ type: Input
178
+ }], align: [{
179
+ type: Input
180
+ }], verticalAlign: [{
181
+ type: Input
182
+ }], viewType: [{
183
+ type: Input
184
+ }], appendToBody: [{
185
+ type: Input
186
+ }], backdrop: [{
187
+ type: Input
188
+ }], allowNull: [{
189
+ type: Input
190
+ }], firstDayOfWeek: [{
191
+ type: Input
192
+ }], disabledDates: [{
193
+ type: Input
194
+ }], disabledPeriods: [{
195
+ type: Input
196
+ }], disabledDays: [{
197
+ type: Input
198
+ }], minYearDate: [{
199
+ type: Input
200
+ }], maxYearDate: [{
201
+ type: Input
202
+ }], input: [{
203
+ type: ViewChild,
204
+ args: ['input']
205
+ }], selectDate: [{
206
+ type: Output
207
+ }], classDatepicker: [{
208
+ type: HostBinding,
209
+ args: ['class.datepicker']
210
+ }], tabindex: [{
211
+ type: HostBinding,
212
+ args: ['tabindex']
213
+ }] } });
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUNyQyxLQUFLLEVBRUwsTUFBTSxFQUFFLFNBQVMsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUF1QixpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDdkUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFDLDJCQUEyQixFQUFFLCtCQUErQixFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzFGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7O0FBR25DLE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFRO0lBQ3JELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztJQUNsRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFVRixNQUFNLE9BQU8sbUJBQW9CLFNBQVEsVUFB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QWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRWMsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNSLFVBQVU7c0JBQW5CLE1BQU07Z0JBSTJDLGVBQWU7c0JBQWhFLFdBQVc7dUJBQUMsa0JBQWtCO2dCQUNXLFFBQVE7c0JBQWpELFdBQVc7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dmlld1R5cGV9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vbW9kZWwvdmlldy10eXBlLm1vZGVsXCI7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge0FsaWdufSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL2VudW0vYWxpZ24uZW51bVwiO1xuaW1wb3J0IHtWZXJ0aWNhbEFsaWdufSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL2VudW0vdmVydGljYWwtYWxpZ24uZW51bVwiO1xuaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtCYXNlUGlja2VyfSBmcm9tIFwiLi4vYmFzZS1waWNrZXJcIjtcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCB7bWFza2l0b0RhdGVPcHRpb25zR2VuZXJhdG9yLCBtYXNraXRvRGF0ZVRpbWVPcHRpb25zR2VuZXJhdG9yfSBmcm9tIFwiQG1hc2tpdG8va2l0XCI7XG5pbXBvcnQge1JlcGxheVN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtEYXRlUGVyaW9kfSBmcm9tIFwiLi4vbW9kZWwvZGF0ZS1wZXJpb2RcIjtcblxuZXhwb3J0IGNvbnN0IERBVEVfUElDS0VSX0NPTlRST0xfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVQaWNrZXJDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtZGF0ZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbREFURV9QSUNLRVJfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUiwgRGF0ZVBpcGVdXG5cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVBpY2tlckNvbXBvbmVudCBleHRlbmRzIEJhc2VQaWNrZXIgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCkgZGF0ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlciA9IG51bGw7XG4gIEBJbnB1dCgpIGxvY2FsZTogc3RyaW5nID0gJ3J1JztcbiAgQElucHV0KCkgc2hvd1RpbWU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbWluRGF0ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlciA9IG51bGw7XG4gIEBJbnB1dCgpIG1heERhdGU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgPSBudWxsO1xuICBASW5wdXQoKSBpbnZhbGlkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFsaWduOiBBbGlnbiA9IEFsaWduLmxlZnQ7XG4gIEBJbnB1dCgpIHZlcnRpY2FsQWxpZ246IFZlcnRpY2FsQWxpZ24gPSBWZXJ0aWNhbEFsaWduLmF1dG87XG4gIEBJbnB1dCgpIHZpZXdUeXBlOiB2aWV3VHlwZSA9ICdyb3VuZGVkJ1xuICBASW5wdXQoKSBhcHBlbmRUb0JvZHk6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGJhY2tkcm9wOiBib29sZWFuO1xuICBASW5wdXQoKSBhbGxvd051bGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBmaXJzdERheU9mV2VlayA9IDE7XG4gIEBJbnB1dCgpIGRpc2FibGVkRGF0ZXM6IERhdGVbXTtcbiAgQElucHV0KCkgZGlzYWJsZWRQZXJpb2RzOiBEYXRlUGVyaW9kW107XG4gIEBJbnB1dCgpIGRpc2FibGVkRGF5czogbnVtYmVyW107XG4gIEBJbnB1dCgpIG1pblllYXJEYXRlOiBEYXRlO1xuICBASW5wdXQoKSBtYXhZZWFyRGF0ZTogRGF0ZTtcblxuICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmO1xuICBAT3V0cHV0KCkgc2VsZWN0RGF0ZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpXG4gIHB1YmxpYyBzZWxlY3RlZERhdGU6IFJlcGxheVN1YmplY3Q8RGF0ZSB8IHN0cmluZyB8IG51bWJlcj4gPSBuZXcgUmVwbGF5U3ViamVjdDxEYXRlIHwgc3RyaW5nIHwgbnVtYmVyPigxKVxuICBwdWJsaWMgbWFzazogc3RyaW5nID0gJyc7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kYXRlcGlja2VyJykgcHJpdmF0ZSByZWFkb25seSBjbGFzc0RhdGVwaWNrZXIgPSB0cnVlO1xuICBASG9zdEJpbmRpbmcoJ3RhYmluZGV4JykgcHJpdmF0ZSByZWFkb25seSB0YWJpbmRleCA9IDA7XG5cbiAgY29uc3RydWN0b3Iob3ZlcnJpZGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIG92ZXJyaWRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLCBvdmVycmlkZSBkYXRlUGlwZTogRGF0ZVBpcGUpIHtcbiAgICBzdXBlcihfZWxlbWVudFJlZiwgX2NkciwgZGF0ZVBpcGUpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRhdGUpIHtcbiAgICAgIHRoaXMuc2V0RGF0ZSh0aGlzLmFsbG93TnVsbCA/IG51bGwgOiBuZXcgRGF0ZSgpKVxuICAgICAgdGhpcy5kYXRlID0gdGhpcy5hbGxvd051bGwgPyBudWxsIDogbmV3IERhdGUoKVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0RGF0ZShuZXcgRGF0ZSh0aGlzLmRhdGUpKVxuICAgIH1cbiAgICB0aGlzLnByZXBhcmVJbnB1dCgpXG4gIH1cblxuICBwcmVwYXJlSW5wdXQoKSB7XG4gICAgY29uc3Qgc3RyID0gdGhpcy5kYXRlID8gdGhpcy5nZXRMb2NhbGVTdHJpbmcodGhpcy5kYXRlKSA6ICcnXG4gICAgbGV0IG9wdGlvbjtcbiAgICBjb25zdCBzZXRNaW5NYXggPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5taW5EYXRlKSB7XG4gICAgICAgIG9wdGlvbi5taW4gPSBkYXlqcyhuZXcgRGF0ZSh0aGlzLm1pbkRhdGUpKS5zdGFydE9mKCdkYXknKVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMubWF4RGF0ZSkge1xuICAgICAgICBvcHRpb24ubWF4ID0gZGF5anMobmV3IERhdGUodGhpcy5tYXhEYXRlKSkuZW5kT2YoJ2RheScpXG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLnNob3dUaW1lKSB7XG4gICAgICB0aGlzLm1hc2sgPSAnZGQubW0ueXl5eSwgaGg6bW0nO1xuICAgICAgb3B0aW9uID0ge1xuICAgICAgICBkYXRlTW9kZTogJ2RkL21tL3l5eXknLFxuICAgICAgICB0aW1lTW9kZTogJ0hIOk1NJyxcbiAgICAgICAgZGF0ZVNlcGFyYXRvcjogJy4nLFxuICAgICAgfVxuICAgICAgc2V0TWluTWF4KClcbiAgICAgIHRoaXMubWFza2l0b09wdGlvbnMgPSBtYXNraXRvRGF0ZVRpbWVPcHRpb25zR2VuZXJhdG9yKG9wdGlvbilcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tYXNrID0gJ2RkLm1tLnl5eXknO1xuICAgICAgb3B0aW9uID0ge1xuICAgICAgICBtb2RlOiAnZGQvbW0veXl5eScsXG4gICAgICAgIHNlcGFyYXRvcjogJy4nLFxuICAgICAgfVxuICAgICAgc2V0TWluTWF4KClcbiAgICAgIHRoaXMubWFza2l0b09wdGlvbnMgPSBtYXNraXRvRGF0ZU9wdGlvbnNHZW5lcmF0b3Iob3B0aW9uKVxuICAgIH1cbiAgICB0aGlzLmNoYW5nZVBsYWNlaG9sZGVyKHN0cilcbiAgfVxuXG4gIG9uQmx1cigpIHtcbiAgICBpZiAodGhpcy5hbGxvd051bGwgJiYgdGhpcy5pbnB1dFRleHQudHJpbSgpID09PSAnJykge1xuICAgICAgdGhpcy5zZXREYXRlKG51bGwpXG4gICAgICB0aGlzLmVtaXRWYWx1ZShudWxsKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2YWwgPSB0aGlzLmlucHV0VGV4dC5zcGxpdCgnLCcpO1xuICAgICAgY29uc3Qge2RheSwgeWVhciwgbW9udGh9ID0gdGhpcy5nZXREYXRlRnJvbVN0cih2YWxbMF0pO1xuICAgICAgY29uc3Qge21pbnMsIGhvdXJzfSA9IHRoaXMuZ2V0VGltZUZyb21TdHIodmFsWzFdKTtcbiAgICAgIGlmIChkYXkgJiYgeWVhciAmJiBtb250aCkge1xuICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF5KVxuICAgICAgICBpZiAodGhpcy5zaG93VGltZSkge1xuICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlLnNldEhvdXJzKGhvdXJzIHx8IDAsIG1pbnMgfHwgMCkpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGFuZ2VTZWxlY3RlZERhdGUodGhpcy5nZXRBdmFpbGFibGVEYXRlKHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlLCBkYXRlKSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2V0RGF0ZSh0aGlzLmRhdGUpO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgc2V0RGF0ZShkYXRlKSB7XG4gICAgaWYgKCFkYXRlICYmIHRoaXMuYWxsb3dOdWxsKSB7XG4gICAgICB0aGlzLmlucHV0VGV4dCA9ICcnXG4gICAgICB0aGlzLmNoYW5nZVBsYWNlaG9sZGVyKCcnKVxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUubmV4dChuZXcgRGF0ZSh0aGlzLm1pbkRhdGUgfHwgbmV3IERhdGUoKSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5wdXRUZXh0ID0gdGhpcy5nZXRMb2NhbGVTdHJpbmcoZGF0ZSlcbiAgICAgIHRoaXMuY2hhbmdlUGxhY2Vob2xkZXIodGhpcy5nZXRMb2NhbGVTdHJpbmcoZGF0ZSkpXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5uZXh0KGRhdGUpXG4gICAgfVxuICB9XG5cbiAgb25DaGFuZ2UoZGF0ZTogRGF0ZSkge1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKGRhdGU6IERhdGUpID0+IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgfVxuXG4gIHdyaXRlVmFsdWUob2JqOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKG9iaikge1xuICAgICAgdGhpcy5kYXRlID0gbmV3IERhdGUob2JqKVxuICAgICAgdGhpcy5zZXREYXRlKG5ldyBEYXRlKHRoaXMuZGF0ZSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmFsbG93TnVsbCkge1xuICAgICAgICB0aGlzLmRhdGUgPSBudWxsXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLm5leHQobnVsbClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGF0ZSA9IHRoaXMubWluRGF0ZSB8fCBuZXcgRGF0ZSgpXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLm5leHQodGhpcy5taW5EYXRlIHx8IG5ldyBEYXRlKCkpXG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuXG59XG4iLCI8dGV0YS1kcm9wZG93biAqbmdJZj1cIntzZWxlY3RlZERhdGU6c2VsZWN0ZWREYXRlfGFzeW5jfWFzIGRhdGFcIlxuICAgICAgICAgICAgICAgY2xhc3M9XCJyb3cgcm93X2F1dG9cIlxuICAgICAgICAgICAgICAgW2FwcGVuZFRvQm9keV09XCJhcHBlbmRUb0JvZHlcIlxuICAgICAgICAgICAgICAgW2JhY2tkcm9wXT1cImJhY2tkcm9wXCJcbiAgICAgICAgICAgICAgIFtvcGVuXT1cIm9wZW5cIlxuICAgICAgICAgICAgICAgKG9wZW5DaGFuZ2UpPVwib3BlbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgIFt2aWV3VHlwZV09XCJ2aWV3VHlwZVwiXG4gICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgW3ZlcnRpY2FsQWxpZ25dPVwidmVydGljYWxBbGlnblwiXG4gICAgICAgICAgICAgICBbYWxpZ25dPVwiYWxpZ25cIlxuICAgICAgICAgICAgICAgW2F1dG9DbG9zZUlnbm9yZV09XCJbJ2VzYycsICdpbnNpZGUnLCdlbnRlciddXCI+XG4gIDxkaXYgdGV0YURyb3Bkb3duSGVhZFxuICAgICAgIFtjbGFzc109XCInZGF0ZXBpY2tlci1oZWFkIGZvbnQtYm9keS0zIGdhcC04ICBkYXRlcGlja2VyXycrdmlld1R5cGVcIlxuICAgICAgIFtuZ0NsYXNzXT1cInsnZGF0ZXBpY2tlci1oZWFkX2ludmFsaWQnOmludmFsaWQsJ2RhdGVwaWNrZXItaGVhZF9kaXNhYmxlZCc6ZGlzYWJsZWR9XCI+XG4gICAgPHRldGEtaW5wdXQgY2xhc3M9XCJyb3cgcm93X2F1dG8gZmxleFwiPlxuICAgICAgPGRpdiBbY2xhc3NdPVwiJ3Jvd19hdXRvIHJvdyBkYXRlcGlja2VyXycrdmlld1R5cGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyByb3dfYXV0byBwb3NpdGlvbi1yZWxhdGl2ZSBmb250LWJvZHktMyBhbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICA8aW5wdXQgW25nQ2xhc3NdPVwieydjb2xvci10ZXh0LTkwJzohZGlzYWJsZWR9XCJcbiAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgI2lucHV0IHN0eWxlPVwiei1pbmRleDogMVwiXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwicm93X2F1dG8gYm9yZGVyLTBcIlxuICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJjaGVja0VudGVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VGV4dFwiXG4gICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUlucHV0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICBbbWFza2l0b109XCJtYXNraXRvT3B0aW9uc1wiPlxuICAgICAgICAgIDxkaXYgKGNsaWNrKT1cImlucHV0LmZvY3VzKClcIiAqbmdJZj1cImRhdGEuc2VsZWN0ZWREYXRlfHxhbGxvd051bGxcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGNvbG9yLXRleHQtMTBcIlxuICAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6LTAuM3B4O2N1cnNvcjogdGV4dDt1c2VyLXNlbGVjdDogbm9uZVwiPnt7cGxhY2Vob2xkZXJ9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHRldGEtaWNvbiBbbmFtZV09XCInY2FsZW5kYXInXCI+PC90ZXRhLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RldGEtaW5wdXQ+XG4gIDwvZGl2PlxuICA8ZGl2IHRldGFEcm9wZG93bkNvbnRlbnQgY2xhc3M9XCJzY3JvbGxhYmxlXCIgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wZW5cIj5cbiAgICAgIDx0ZXRhLWRhdGUtY2FsZW5kYXIgW2lzRGF0ZU51bGxdPVwiZGF0ZT09PW51bGxcIiBbb3Blbl09XCJvcGVuXCIgW21heF09XCJtYXhEYXRlXCIgW21pbl09XCJtaW5EYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldERhdGUpPVwiY2hhbmdlU2VsZWN0ZWREYXRlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWREYXRlXT1cImRhdGEuc2VsZWN0ZWREYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZpZXdUeXBlXT1cInZpZXdUeXBlXCIgW2xvY2FsZV09XCJsb2NhbGVcIj48L3RldGEtZGF0ZS1jYWxlbmRhcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICA8L2Rpdj5cbjwvdGV0YS1kcm9wZG93bj5cbiJdfQ==