q2-tecton-elements 1.10.6 → 1.10.9

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 (189) hide show
  1. package/dist/cjs/{index-f4153f5a.js → index-a55d3c34.js} +9 -0
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/q2-btn_2.cjs.entry.js +10 -6
  4. package/dist/cjs/q2-calendar.cjs.entry.js +2902 -6078
  5. package/dist/cjs/q2-carousel-pane.cjs.entry.js +50 -7
  6. package/dist/cjs/q2-carousel.cjs.entry.js +2719 -6513
  7. package/dist/cjs/q2-checkbox-group.cjs.entry.js +2 -2
  8. package/dist/cjs/q2-checkbox.cjs.entry.js +10 -2
  9. package/dist/cjs/q2-dropdown-item.cjs.entry.js +2 -2
  10. package/dist/cjs/q2-dropdown.cjs.entry.js +8 -2
  11. package/dist/cjs/q2-editable-field.cjs.entry.js +26 -11
  12. package/dist/cjs/q2-icon.cjs.entry.js +1 -1
  13. package/dist/cjs/q2-input.cjs.entry.js +9 -7
  14. package/dist/cjs/q2-loading-element.cjs.entry.js +1 -1
  15. package/dist/cjs/q2-loc.cjs.entry.js +1 -1
  16. package/dist/cjs/q2-message.cjs.entry.js +11 -3
  17. package/dist/cjs/q2-optgroup.cjs.entry.js +2 -2
  18. package/dist/cjs/q2-option.cjs.entry.js +3 -34
  19. package/dist/cjs/q2-radio-group.cjs.entry.js +10 -2
  20. package/dist/cjs/q2-radio.cjs.entry.js +10 -2
  21. package/dist/cjs/q2-section.cjs.entry.js +9 -3
  22. package/dist/cjs/q2-select.cjs.entry.js +175 -130
  23. package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
  24. package/dist/cjs/q2-stepper.cjs.entry.js +10 -4
  25. package/dist/cjs/q2-tab-container.cjs.entry.js +9 -11
  26. package/dist/cjs/q2-tab-pane.cjs.entry.js +2 -2
  27. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  28. package/dist/cjs/q2-textarea.cjs.entry.js +8 -4
  29. package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
  30. package/dist/collection/components/q2-avatar/index.js +1 -1
  31. package/dist/collection/components/q2-avatar/styles.css +63 -61
  32. package/dist/collection/components/q2-btn/index.js +8 -4
  33. package/dist/collection/components/q2-btn/styles.css +96 -96
  34. package/dist/collection/components/q2-calendar/helpers.js +77 -52
  35. package/dist/collection/components/q2-calendar/index.js +248 -196
  36. package/dist/collection/components/q2-calendar/styles.css +63 -84
  37. package/dist/collection/components/q2-calendar/validation.js +100 -166
  38. package/dist/collection/components/q2-carousel/index.js +204 -266
  39. package/dist/collection/components/q2-carousel/styles.css +152 -155
  40. package/dist/collection/components/q2-carousel-pane/index.js +67 -28
  41. package/dist/collection/components/q2-carousel-pane/styles.css +82 -16
  42. package/dist/collection/components/q2-checkbox/index.js +16 -2
  43. package/dist/collection/components/q2-checkbox/styles.css +152 -176
  44. package/dist/collection/components/q2-checkbox-group/index.js +1 -1
  45. package/dist/collection/components/q2-checkbox-group/styles.css +65 -81
  46. package/dist/collection/components/q2-dropdown/index.js +15 -2
  47. package/dist/collection/components/q2-dropdown/styles.css +49 -36
  48. package/dist/collection/components/q2-dropdown-item/index.js +1 -1
  49. package/dist/collection/components/q2-dropdown-item/styles.css +48 -62
  50. package/dist/collection/components/q2-editable-field/index.js +33 -12
  51. package/dist/collection/components/q2-editable-field/styles.css +49 -50
  52. package/dist/collection/components/q2-icon/styles.css +29 -29
  53. package/dist/collection/components/q2-input/index.js +9 -7
  54. package/dist/collection/components/q2-input/styles.css +211 -292
  55. package/dist/collection/components/q2-loading/index.js +1 -1
  56. package/dist/collection/components/q2-loading/skeleton/q2-loading-element/index.js +1 -1
  57. package/dist/collection/components/q2-loading/skeleton/q2-loading-element/styles.css +5 -6
  58. package/dist/collection/components/q2-loading/styles.css +130 -136
  59. package/dist/collection/components/q2-loc/index.js +1 -1
  60. package/dist/collection/components/q2-loc/styles.css +30 -31
  61. package/dist/collection/components/q2-message/index.js +18 -3
  62. package/dist/collection/components/q2-message/styles.css +32 -29
  63. package/dist/collection/components/q2-optgroup/index.js +1 -1
  64. package/dist/collection/components/q2-optgroup/styles.css +42 -47
  65. package/dist/collection/components/q2-option/index.js +4 -42
  66. package/dist/collection/components/q2-option/styles.css +29 -29
  67. package/dist/collection/components/q2-radio/index.js +16 -2
  68. package/dist/collection/components/q2-radio/styles.css +29 -29
  69. package/dist/collection/components/q2-radio-group/index.js +16 -2
  70. package/dist/collection/components/q2-radio-group/styles.css +67 -72
  71. package/dist/collection/components/q2-section/index.js +15 -3
  72. package/dist/collection/components/q2-section/styles.css +77 -77
  73. package/dist/collection/components/q2-select/index.js +182 -131
  74. package/dist/collection/components/q2-select/styles.css +33 -34
  75. package/dist/collection/components/q2-stepper/index.js +15 -3
  76. package/dist/collection/components/q2-stepper/styles.css +32 -32
  77. package/dist/collection/components/q2-stepper-pane/styles.css +29 -29
  78. package/dist/collection/components/q2-tab-container/index.js +7 -9
  79. package/dist/collection/components/q2-tab-container/styles.css +29 -29
  80. package/dist/collection/components/q2-tab-pane/index.js +2 -2
  81. package/dist/collection/components/q2-tab-pane/styles.css +34 -36
  82. package/dist/collection/components/q2-textarea/index.js +8 -4
  83. package/dist/collection/components/q2-textarea/styles.css +180 -228
  84. package/dist/collection/components/tecton-tab-pane/index.js +2 -2
  85. package/dist/collection/components/tecton-tab-pane/styles.css +50 -50
  86. package/dist/collection/utils/index.js +7 -0
  87. package/dist/esm/{index-476b86cc.js → index-ec6660af.js} +8 -1
  88. package/dist/esm/loader.js +1 -1
  89. package/dist/esm/q2-btn_2.entry.js +10 -6
  90. package/dist/esm/q2-calendar.entry.js +2902 -6078
  91. package/dist/esm/q2-carousel-pane.entry.js +51 -8
  92. package/dist/esm/q2-carousel.entry.js +2720 -6514
  93. package/dist/esm/q2-checkbox-group.entry.js +2 -2
  94. package/dist/esm/q2-checkbox.entry.js +10 -2
  95. package/dist/esm/q2-dropdown-item.entry.js +2 -2
  96. package/dist/esm/q2-dropdown.entry.js +8 -2
  97. package/dist/esm/q2-editable-field.entry.js +26 -11
  98. package/dist/esm/q2-icon.entry.js +1 -1
  99. package/dist/esm/q2-input.entry.js +9 -7
  100. package/dist/esm/q2-loading-element.entry.js +1 -1
  101. package/dist/esm/q2-loc.entry.js +1 -1
  102. package/dist/esm/q2-message.entry.js +11 -3
  103. package/dist/esm/q2-optgroup.entry.js +2 -2
  104. package/dist/esm/q2-option.entry.js +4 -35
  105. package/dist/esm/q2-radio-group.entry.js +10 -2
  106. package/dist/esm/q2-radio.entry.js +10 -2
  107. package/dist/esm/q2-section.entry.js +9 -3
  108. package/dist/esm/q2-select.entry.js +175 -130
  109. package/dist/esm/q2-stepper-pane.entry.js +1 -1
  110. package/dist/esm/q2-stepper.entry.js +10 -4
  111. package/dist/esm/q2-tab-container.entry.js +7 -9
  112. package/dist/esm/q2-tab-pane.entry.js +2 -2
  113. package/dist/esm/q2-tecton-elements.js +1 -1
  114. package/dist/esm/q2-textarea.entry.js +8 -4
  115. package/dist/esm/tecton-tab-pane.entry.js +2 -2
  116. package/dist/q2-tecton-elements/{p-4830affe.entry.js → p-07a5d703.entry.js} +1 -1
  117. package/dist/q2-tecton-elements/{p-84c05db6.entry.js → p-32ad664c.entry.js} +1 -1
  118. package/dist/q2-tecton-elements/p-37aba2a4.js +1 -0
  119. package/dist/q2-tecton-elements/p-4ae9d1f3.entry.js +1 -0
  120. package/dist/q2-tecton-elements/p-52f53e07.entry.js +1 -0
  121. package/dist/q2-tecton-elements/p-5559f126.entry.js +1 -0
  122. package/dist/q2-tecton-elements/p-6702eb4d.entry.js +1 -0
  123. package/dist/q2-tecton-elements/p-750bcd33.entry.js +1 -0
  124. package/dist/q2-tecton-elements/p-78642b7b.entry.js +1 -0
  125. package/dist/q2-tecton-elements/p-7e6fc65d.entry.js +1 -0
  126. package/dist/q2-tecton-elements/p-7eb39c90.entry.js +1 -0
  127. package/dist/q2-tecton-elements/p-81df91a1.entry.js +1 -0
  128. package/dist/q2-tecton-elements/{p-01e00610.entry.js → p-843b1ee9.entry.js} +1 -1
  129. package/dist/q2-tecton-elements/p-8509b171.entry.js +1 -0
  130. package/dist/q2-tecton-elements/p-8ea2c4f7.entry.js +1 -0
  131. package/dist/q2-tecton-elements/{p-d1d040ef.entry.js → p-95a73559.entry.js} +1 -1
  132. package/dist/q2-tecton-elements/p-96c9eb75.entry.js +1 -0
  133. package/dist/q2-tecton-elements/p-9b50c3c3.entry.js +1 -0
  134. package/dist/q2-tecton-elements/{p-a9bdd814.entry.js → p-a6f8d09a.entry.js} +1 -1
  135. package/dist/q2-tecton-elements/p-ab977515.entry.js +1 -0
  136. package/dist/q2-tecton-elements/{p-a166b9a6.entry.js → p-bb2e110a.entry.js} +1 -1
  137. package/dist/q2-tecton-elements/p-bbacb804.entry.js +1 -0
  138. package/dist/q2-tecton-elements/p-c555f1de.entry.js +1 -0
  139. package/dist/q2-tecton-elements/p-c5e55b9f.entry.js +1 -0
  140. package/dist/q2-tecton-elements/p-fa6eea5c.entry.js +1 -0
  141. package/dist/q2-tecton-elements/{p-61c0e5fd.entry.js → p-fbf7c5e6.entry.js} +1 -1
  142. package/dist/q2-tecton-elements/p-fc804ebd.entry.js +1 -0
  143. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  144. package/dist/test/helpers.js +4 -0
  145. package/dist/types/components/q2-btn/index.d.ts +1 -0
  146. package/dist/types/components/q2-calendar/helpers.d.ts +6 -6
  147. package/dist/types/components/q2-calendar/index.d.ts +16 -17
  148. package/dist/types/components/q2-calendar/types.d.ts +9 -26
  149. package/dist/types/components/q2-calendar/validation.d.ts +27 -12
  150. package/dist/types/components/q2-carousel/index.d.ts +15 -45
  151. package/dist/types/components/q2-carousel-pane/index.d.ts +5 -2
  152. package/dist/types/components/q2-checkbox/index.d.ts +2 -0
  153. package/dist/types/components/q2-dropdown/index.d.ts +1 -0
  154. package/dist/types/components/q2-editable-field/index.d.ts +5 -1
  155. package/dist/types/components/q2-input/index.d.ts +1 -1
  156. package/dist/types/components/q2-message/index.d.ts +2 -0
  157. package/dist/types/components/q2-option/index.d.ts +0 -4
  158. package/dist/types/components/q2-radio/index.d.ts +3 -0
  159. package/dist/types/components/q2-radio-group/index.d.ts +1 -0
  160. package/dist/types/components/q2-section/index.d.ts +1 -0
  161. package/dist/types/components/q2-select/index.d.ts +10 -7
  162. package/dist/types/components/q2-stepper/index.d.ts +2 -1
  163. package/dist/types/components/q2-tab-container/index.d.ts +1 -1
  164. package/dist/types/components/q2-textarea/index.d.ts +2 -1
  165. package/dist/types/components.d.ts +3 -2
  166. package/dist/types/util.d.ts +2 -1
  167. package/dist/types/utils/index.d.ts +2 -0
  168. package/dist/types/workspace/workspace/tecton-production_release_1.10.x/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +2 -1
  169. package/package.json +4 -5
  170. package/dist/q2-tecton-elements/p-1fc4e6f6.entry.js +0 -1
  171. package/dist/q2-tecton-elements/p-25a5f691.js +0 -1
  172. package/dist/q2-tecton-elements/p-27353237.entry.js +0 -1
  173. package/dist/q2-tecton-elements/p-3e100450.entry.js +0 -1
  174. package/dist/q2-tecton-elements/p-428d15fd.entry.js +0 -1
  175. package/dist/q2-tecton-elements/p-48fc317d.entry.js +0 -1
  176. package/dist/q2-tecton-elements/p-5222b792.entry.js +0 -1
  177. package/dist/q2-tecton-elements/p-5469c1e9.entry.js +0 -1
  178. package/dist/q2-tecton-elements/p-74c1a311.entry.js +0 -1
  179. package/dist/q2-tecton-elements/p-784af485.entry.js +0 -1
  180. package/dist/q2-tecton-elements/p-7c99a58b.entry.js +0 -1
  181. package/dist/q2-tecton-elements/p-7f74b629.entry.js +0 -1
  182. package/dist/q2-tecton-elements/p-831a461f.entry.js +0 -1
  183. package/dist/q2-tecton-elements/p-84c52d3b.entry.js +0 -9
  184. package/dist/q2-tecton-elements/p-997e4c7e.entry.js +0 -1
  185. package/dist/q2-tecton-elements/p-a224bc9c.entry.js +0 -1
  186. package/dist/q2-tecton-elements/p-d893fcf2.entry.js +0 -1
  187. package/dist/q2-tecton-elements/p-da7cca07.entry.js +0 -1
  188. package/dist/q2-tecton-elements/p-f17761da.entry.js +0 -1
  189. package/dist/q2-tecton-elements/p-f5e074f8.entry.js +0 -1
@@ -1,67 +1,67 @@
1
1
  * {
2
- box-sizing: border-box;
2
+ box-sizing: border-box;
3
3
  }
4
4
 
5
5
  *:active {
6
- outline: none;
6
+ outline: none;
7
7
  }
8
8
 
9
9
  *:focus {
10
- outline: none;
11
- box-shadow: var(--const-global-focus);
10
+ outline: none;
11
+ box-shadow: var(--const-global-focus);
12
12
  }
13
13
 
14
14
  :host {
15
- box-shadow: none !important;
15
+ box-shadow: none !important;
16
16
  }
17
17
 
18
18
  ::-moz-focus-inner {
19
- border: none;
19
+ border: none;
20
20
  }
21
21
 
22
22
  input,
23
23
  textarea,
24
24
  button {
25
- font-family: inherit;
26
- font-size: inherit;
25
+ font-family: inherit;
26
+ font-size: inherit;
27
27
  }
28
28
 
29
29
  :host(.sr),
30
30
  :host(.sr) button {
31
- border: 0;
32
- clip: rect(0 0 0 0);
33
- height: 1px;
34
- margin: -1px;
35
- overflow: hidden;
36
- padding: 0;
37
- position: absolute;
38
- width: 1px;
39
- white-space: nowrap;
31
+ border: 0;
32
+ clip: rect(0 0 0 0);
33
+ height: 1px;
34
+ margin: -1px;
35
+ overflow: hidden;
36
+ padding: 0;
37
+ position: absolute;
38
+ width: 1px;
39
+ white-space: nowrap;
40
40
  }
41
41
 
42
42
  .sr,
43
43
  .sr button {
44
- border: 0;
45
- clip: rect(0 0 0 0);
46
- height: 1px;
47
- margin: -1px;
48
- overflow: hidden;
49
- padding: 0;
50
- position: absolute;
51
- width: 1px;
52
- white-space: nowrap;
44
+ border: 0;
45
+ clip: rect(0 0 0 0);
46
+ height: 1px;
47
+ margin: -1px;
48
+ overflow: hidden;
49
+ padding: 0;
50
+ position: absolute;
51
+ width: 1px;
52
+ white-space: nowrap;
53
53
  }
54
54
 
55
55
  .hidden {
56
- display: none;
56
+ display: none;
57
57
  }
58
58
 
59
59
  :host([hidden]) {
60
- display: none;
60
+ display: none;
61
61
  }
62
62
 
63
63
  .invisible {
64
- visibility: hidden;
64
+ visibility: hidden;
65
65
  }
66
66
 
67
67
  :host {
@@ -78,24 +78,24 @@ button {
78
78
  }
79
79
 
80
80
  :host {
81
- --comp-btn-primary-bg: var(--tct-btn-primary-bg, var(--t-button-primary-bg, #2e2e2e));
82
- --comp-btn-primary-font-color: var(--tct-btn-primary-font-color, var(--t-button-primary-font-color, var(--tct-white, var(--app-white, #ffffff))));
81
+ --comp-btn-primary-bg: var(--tct-btn-primary-bg, var(--t-btn-primary-bg, #2e2e2e));
82
+ --comp-btn-primary-font-color: var(--tct-btn-primary-font-color, var(--t-btn-primary-font-color, var(--tct-white, var(--app-white, #ffffff))));
83
83
  --comp-btn-fallback-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
84
84
  --comp-btn-fallback-hover-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.19),
85
85
  0 3px 3px rgba(0, 0, 0, 0.23);
86
86
  --comp-btn-neutral-fallback-hover-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.24),
87
87
  0 3px 3px rgba(0, 0, 0, 0.36);
88
- --comp-btn-primary-box-shadow: var(--tct-btn-primary-box-shadow, var(--comp-btn-fallback-box-shadow));
89
- --comp-btn-primary-hover-box-shadow: var(--tct-btn-primary-hover-box-shadow, var(--comp-btn-fallback-hover-box-shadow));
88
+ --comp-btn-primary-box-shadow: var(--tct-btn-primary-box-shadow, var(--t-btn-primary-box-shadow, var(--comp-btn-fallback-box-shadow)));
89
+ --comp-btn-primary-hover-box-shadow: var(--tct-btn-primary-hover-box-shadow, var(--t-btn-primary-hover-box-shadow, var(--comp-btn-fallback-hover-box-shadow)));
90
90
  --comp-btn-secondary-bg: var(--tct-btn-secondary-bg, var(--t-button-default-bg, #cccccc));
91
- --comp-btn-secondary-font-color: var(--tct-btn-secondary-font-color, var(--t-button-default-font-color, #2e2e2e));
92
- --comp-btn-secondary-box-shadow: var(--tct-btn-secondary-box-shadow, var(--comp-btn-fallback-box-shadow));
93
- --comp-btn-secondary-hover-box-shadow: var(--tct-btn-secondary-hover-box-shadow, var(--comp-btn-fallback-hover-box-shadow));
94
- --comp-btn-tween: var(--tct-btn-tween, var(--tct-tween-1, var(--app-tween-1, 0.2s ease)));
91
+ --comp-btn-secondary-font-color: var(--tct-btn-secondary-font-color, var(--t-btn-secondary-font-color, var(--t-button-default-font-color, #2e2e2e)));
92
+ --comp-btn-secondary-box-shadow: var(--tct-btn-secondary-box-shadow, var(--t-btn-secondary-box-shadow, var(--comp-btn-fallback-box-shadow)));
93
+ --comp-btn-secondary-hover-box-shadow: var(--tct-btn-secondary-hover-box-shadow, var(--t-btn-secondary-hover-box-shadow, var(--comp-btn-fallback-hover-box-shadow)));
94
+ --comp-btn-tween: var(--tct-btn-tween, var(--t-btn-tween, var(--tct-tween-1, var(--app-tween-1, 0.2s ease))));
95
95
  --comp-btn-neutral-bg: var(--tct-btn-neutral-bg, transparent);
96
- --comp-btn-neutral-font-color: var(--tct-btn-neutral-font-color, var(--t-button-default-font-color, #2e2e2e));
97
- --comp-btn-neutral-box-shadow: var(--tct-btn-neutral-box-shadow, var(--comp-btn-fallback-box-shadow));
98
- --comp-btn-neutral-hover-box-shadow: var(--tct-btn-neutral-hover-box-shadow, var(--comp-btn-neutral-fallback-hover-box-shadow));
96
+ --comp-btn-neutral-font-color: var(--tct-btn-neutral-font-color, var(--t-btn-neutral-font-color, var(--t-button-default-font-color, #2e2e2e)));
97
+ --comp-btn-neutral-box-shadow: var(--tct-btn-neutral-box-shadow, var(--t-btn-neutral-box-shadow, var(--comp-btn-fallback-box-shadow)));
98
+ --comp-btn-neutral-hover-box-shadow: var(--tct-btn-neutral-hover-box-shadow, var(--t-btn-neutral-hover-box-shadow, var(--comp-btn-neutral-fallback-hover-box-shadow)));
99
99
  }
100
100
 
101
101
  button {
@@ -115,14 +115,14 @@ button {
115
115
  outline: 0;
116
116
  }
117
117
  button:disabled {
118
- opacity: var(--tct-btn-disabled-opacity, var(--tct-disabled-opacity, var(--app-disabled-opacity, 0.4)));
118
+ opacity: var(--tct-btn-disabled-opacity, var(--t-btn-disabled-opacity, var(--tct-disabled-opacity, var(--app-disabled-opacity, 0.4))));
119
119
  cursor: not-allowed;
120
120
  }
121
121
  :host([size="1"]) button {
122
122
  padding: var(--tct-scale-1, var(--app-scale-1, 5px));
123
123
  }
124
124
  :host([color]:not([size])) button, :host([intent]:not([size])) button {
125
- padding: var(--tct-btn-padding, var(--tct-scale-2, var(--app-scale-2, 10px)));
125
+ padding: var(--tct-btn-padding, var(--t-btn-padding, var(--tct-scale-2, var(--app-scale-2, 10px))));
126
126
  }
127
127
  :host([size="2"]) button {
128
128
  padding: var(--tct-scale-2, var(--app-scale-2, 10px));
@@ -138,23 +138,23 @@ button:disabled {
138
138
  }
139
139
  :host([color]) button, :host([intent]) button {
140
140
  border-style: solid;
141
- font-size: var(--tct-btn-font-size, inherit);
141
+ font-size: var(--tct-btn-font-size, var(--t-btn-font-size, inherit));
142
142
  }
143
143
  :host([color=primary]) button, :host([intent=workflow-primary]) button {
144
144
  background: var(--comp-btn-primary-bg);
145
145
  color: var(--comp-btn-primary-font-color);
146
- border-color: var(--tct-btn-primary-border-color, transparent);
147
- border-width: var(--tct-btn-primary-border-width, 0);
148
- border-radius: var(--tct-btn-primary-border-radius, var(--tct-border-radius-1, var(--app-border-radius-1, 3px)));
146
+ border-color: var(--tct-btn-primary-border-color, var(--t-btn-primary-border-color, transparent));
147
+ border-width: var(--tct-btn-primary-border-width, var(--t-btn-primary-border-width, 0));
148
+ border-radius: var(--tct-btn-primary-border-radius, var(--t-btn-primary-border-radius, var(--tct-border-radius-1, var(--app-border-radius-1, 3px))));
149
149
  box-shadow: var(--comp-btn-primary-box-shadow);
150
- font-weight: var(--tct-btn-primary-font-weight, 600);
151
- text-transform: var(--tct-btn-primary-text-transform, none);
152
- letter-spacing: var(--tct-btn-primary-letter-spacing, normal);
150
+ font-weight: var(--tct-btn-primary-font-weight, var(--t-btn-primary-font-weight, 600));
151
+ text-transform: var(--tct-btn-primary-text-transform, var(--t-btn-primary-text-transform, none));
152
+ letter-spacing: var(--tct-btn-primary-letter-spacing, var(--t-btn-primary-letter-spacing, normal));
153
153
  }
154
154
  :host([color=primary]) button:enabled:hover, :host([color=primary]) button:enabled:focus, :host([color=primary]) button:enabled:active, :host([intent=workflow-primary]) button:enabled:hover, :host([intent=workflow-primary]) button:enabled:focus, :host([intent=workflow-primary]) button:enabled:active {
155
- background: var(--tct-btn-primary-hover-bg, var(--t-button-primary-hover-bg, var(--tct-gray-5, var(--t-gray-5, var(--tct-gray-d2, var(--app-gray-d2, #404040))))));
156
- color: var(--tct-btn-primary-hover-font-color, var(--t-button-primary-hover-font-color, var(--tct-white, var(--app-white, #ffffff))));
157
- border-color: var(--tct-btn-primary-hover-border-color, var(--tct-btn-primary-border-color, transparent));
155
+ background: var(--tct-btn-primary-hover-bg, var(--t-btn-primary-hover-bg, var(--tct-gray-5, var(--t-gray-5, var(--tct-gray-d2, var(--app-gray-d2, #404040))))));
156
+ color: var(--tct-btn-primary-hover-font-color, var(--t-btn-primary-hover-font-color, var(--tct-white, var(--app-white, #ffffff))));
157
+ border-color: var(--tct-btn-primary-hover-border-color, var(--t-btn-primary-hover-border-color, var(--tct-btn-primary-border-color, var(--t-btn-primary-border-color, transparent))));
158
158
  }
159
159
  :host([color=primary]) button:hover:enabled, :host([color=primary]) button:active:enabled, :host([intent=workflow-primary]) button:hover:enabled, :host([intent=workflow-primary]) button:active:enabled {
160
160
  box-shadow: var(--comp-btn-primary-hover-box-shadow);
@@ -163,25 +163,25 @@ button:disabled {
163
163
  box-shadow: var(--tct-global-focus, var(--const-global-focus, var(--comp-btn-primary-hover-box-shadow, 0 0 0 2px #33b4ff)));
164
164
  }
165
165
  :host([color=primary]) button:disabled, :host([intent=workflow-primary]) button:disabled {
166
- background: var(--tct-btn-primary-disabled-bg, var(--comp-btn-primary-bg));
167
- color: var(--tct-btn-primary-disabled-font-color, var(--comp-btn-primary-font-color));
168
- box-shadow: var(--tct-btn-primary-disabled-box-shadow, var(--comp-btn-primary-box-shadow));
166
+ background: var(--tct-btn-primary-disabled-bg, var(--t-btn-primary-disabled-bg, var(--comp-btn-primary-bg)));
167
+ color: var(--tct-btn-primary-disabled-font-color, var(--t-btn-primary-disabled-font-color, var(--comp-btn-primary-font-color)));
168
+ box-shadow: var(--tct-btn-primary-disabled-box-shadow, var(--t-btn-primary-disabled-box-shadow, var(--comp-btn-primary-box-shadow)));
169
169
  }
170
170
  :host([color=secondary]) button, :host([intent=workflow-secondary]) button {
171
171
  background: var(--comp-btn-secondary-bg);
172
- color: var(--comp-btn-secondary-font-color, var(--tct-btn-secondary-font-color, var(--t-button-secondary-font-color, var(--tct-white, var(--app-white, #ffffff)))));
173
- border-color: var(--tct-btn-secondary-border-color, transparent);
174
- border-width: var(--tct-btn-secondary-border-width, 0);
175
- border-radius: var(--tct-btn-secondary-border-radius, var(--tct-border-radius-1, var(--app-border-radius-1, 3px)));
172
+ color: var(--comp-btn-secondary-font-color, var(--tct-btn-secondary-font-color, var(--t-btn-secondary-font-color, var(--tct-white, var(--app-white, #ffffff)))));
173
+ border-color: var(--tct-btn-secondary-border-color, var(--t-btn-secondary-border-color, transparent));
174
+ border-width: var(--tct-btn-secondary-border-width, var(--t-btn-secondary-border-width, 0));
175
+ border-radius: var(--tct-btn-secondary-border-radius, var(--t-btn-secondary-border-radius, var(--tct-border-radius-1, var(--app-border-radius-1, 3px))));
176
176
  box-shadow: var(--comp-btn-secondary-box-shadow);
177
- font-weight: var(--tct-btn-secondary-font-weight, 600);
178
- text-transform: var(--tct-btn-secondary-text-transform, none);
179
- letter-spacing: var(--tct-btn-secondary-letter-spacing, normal);
177
+ font-weight: var(--tct-btn-secondary-font-weight, var(--t-btn-secondary-font-weight, 600));
178
+ text-transform: var(--tct-btn-secondary-text-transform, var(--t-btn-secondary-text-transform, none));
179
+ letter-spacing: var(--tct-btn-secondary-letter-spacing, var(--t-btn-secondary-letter-spacing, normal));
180
180
  }
181
181
  :host([color=secondary]) button:enabled:hover, :host([color=secondary]) button:enabled:focus, :host([color=secondary]) button:enabled:active, :host([intent=workflow-secondary]) button:enabled:hover, :host([intent=workflow-secondary]) button:enabled:focus, :host([intent=workflow-secondary]) button:enabled:active {
182
- background: var(--tct-btn-secondary-hover-bg, var(--t-button-default-hover-bg, var(--tct-gray-5, var(--t-gray-5, var(--tct-gray-d2, var(--app-gray-d2, #404040))))));
183
- color: var(--tct-btn-secondary-hover-font-color, var(--t-button-default-hover-font-color, var(--tct-white, var(--app-white, #ffffff))));
184
- border-color: var(--tct-btn-secondary-hover-border-color, var(--tct-btn-secondary-border-color, transparent));
182
+ background: var(--tct-btn-secondary-hover-bg, var(--t-btn-secondary-hover-bg, var(--tct-gray-5, var(--t-gray-5, var(--tct-gray-d2, var(--app-gray-d2, #404040))))));
183
+ color: var(--tct-btn-secondary-hover-font-color, var(--t-btn-secondary-hover-font-color, var(--t-button-default-hover-font-color, var(--tct-white, var(--app-white, #ffffff)))));
184
+ border-color: var(--tct-btn-secondary-hover-border-color, var(--t-btn-secondary-hover-border-color, var(--tct-btn-secondary-border-color, var(--t-btn-secondary-border-color, transparent))));
185
185
  }
186
186
  :host([color=secondary]) button:hover:enabled, :host([color=secondary]) button:active:enabled, :host([intent=workflow-secondary]) button:hover:enabled, :host([intent=workflow-secondary]) button:active:enabled {
187
187
  box-shadow: var(--comp-btn-secondary-hover-box-shadow);
@@ -190,25 +190,25 @@ button:disabled {
190
190
  box-shadow: var(--tct-global-focus, var(--const-global-focus, var(--comp-btn-secondary-hover-box-shadow)));
191
191
  }
192
192
  :host([color=secondary]) button:disabled, :host([intent=workflow-secondary]) button:disabled {
193
- background: var(--tct-btn-secondary-disabled-bg, var(--comp-btn-secondary-bg));
194
- color: var(--tct-btn-secondary-disabled-font-color, var(--comp-btn-secondary-font-color));
195
- box-shadow: var(--tct-btn-secondary-disabled-box-shadow, var(--comp-btn-secondary-box-shadow));
193
+ background: var(--tct-btn-secondary-disabled-bg, var(--t-btn-secondary-disabled-bg, var(--comp-btn-secondary-bg)));
194
+ color: var(--tct-btn-secondary-disabled-font-color, var(--t-btn-secondary-disabled-font-color, var(--comp-btn-secondary-font-color)));
195
+ box-shadow: var(--tct-btn-secondary-disabled-box-shadow, var(--t-btn-secondary-disabled-box-shadow, var(--comp-btn-secondary-box-shadow)));
196
196
  }
197
197
  :host([intent=neutral]) button {
198
- background: var(--comp-btn-neutral-bg, var(--tct-btn-neutral-bg, transparent));
199
- color: var(--comp-btn-neutral-font-color, var(--tct-btn-neutral-font-color, var(--t-button-neutral-font-color, var(--tct-gray-1, var(--t-gray-1, var(--tct-black, var(--app-black, #0d0d0d)))))));
200
- border-color: var(--tct-btn-neutral-border-color, transparent);
201
- border-width: var(--tct-btn-neutral-border-width, 0);
202
- border-radius: var(--tct-btn-neutral-border-radius, var(--tct-border-radius-1, var(--app-border-radius-1, 3px)));
198
+ background: var(--comp-btn-neutral-bg, var(--tct-btn-neutral-bg, var(--t-btn-neutral-bg, transparent)));
199
+ color: var(--comp-btn-neutral-font-color, var(--tct-btn-neutral-font-color, var(--t-btn-neutral-font-color, var(--tct-gray-1, var(--t-gray-1, var(--tct-black, var(--app-black, #0d0d0d)))))));
200
+ border-color: var(--tct-btn-neutral-border-color, var(--t-btn-neutral-border-color, transparent));
201
+ border-width: var(--tct-btn-neutral-border-width, var(--t-btn-neutral-border-width, 0));
202
+ border-radius: var(--tct-btn-neutral-border-radius, var(--t-btn-neutral-border-radius, var(--tct-border-radius-1, var(--app-border-radius-1, 3px))));
203
203
  box-shadow: var(--comp-btn-neutral-box-shadow);
204
- font-weight: var(--tct-btn-neutral-font-weight, 600);
205
- text-transform: var(--tct-btn-neutral-text-transform, none);
206
- letter-spacing: var(--tct-btn-neutral-letter-spacing, normal);
204
+ font-weight: var(--tct-btn-neutral-font-weight, var(--t-btn-neutral-font-weight, 600));
205
+ text-transform: var(--tct-btn-neutral-text-transform, var(--t-btn-neutral-text-transform, none));
206
+ letter-spacing: var(--tct-btn-neutral-letter-spacing, var(--t-btn-neutral-letter-spacing, normal));
207
207
  }
208
208
  :host([intent=neutral]) button:enabled:hover, :host([intent=neutral]) button:enabled:focus, :host([intent=neutral]) button:enabled:active {
209
- background: var(--tct-btn-neutral-hover-bg, transparent);
210
- color: var(--tct-btn-neutral-hover-font-color, var(--t-button-default-hover-font-color, var(--tct-white, var(--app-white, #ffffff))));
211
- border-color: var(--tct-btn-neutral-hover-border-color, var(--tct-btn-neutral-border-color, transparent));
209
+ background: var(--tct-btn-neutral-hover-bg, var(--t-btn-neutral-hover-bg, transparent));
210
+ color: var(--tct-btn-neutral-hover-font-color, var(--t-btn-neutral-hover-font-color, var(--tct-white, var(--app-white, #ffffff))));
211
+ border-color: var(--tct-btn-neutral-hover-border-color, var(--t-btn-neutral-hover-border-color, var(--tct-btn-neutral-border-color, var(--t-btn-neutral-border-color, transparent))));
212
212
  }
213
213
  :host([intent=neutral]) button:hover:enabled, :host([intent=neutral]) button:active:enabled {
214
214
  box-shadow: var(--comp-btn-neutral-hover-box-shadow);
@@ -217,41 +217,41 @@ button:disabled {
217
217
  box-shadow: var(--tct-global-focus, var(--const-global-focus, var(--comp-btn-neutral-hover-box-shadow)));
218
218
  }
219
219
  :host([intent=neutral]) button:disabled {
220
- background: var(--tct-btn-neutral-disabled-bg, var(--comp-btn-neutral-bg));
221
- color: var(--tct-btn-neutral-disabled-font-color, var(--comp-btn-neutral-font-color));
220
+ background: var(--tct-btn-neutral-disabled-bg, var(--t-btn-neutral-disabled-bg, var(--comp-btn-neutral-bg)));
221
+ color: var(--tct-btn-neutral-disabled-font-color, var(--t-btn-neutral-disabled-font-color, var(--comp-btn-neutral-font-color)));
222
222
  box-shadow: var(--tct-btn-neutral-disabled-box-shadow, var(--comp-btn-neutral-box-shadow));
223
223
  }
224
224
  :host button.icon-only {
225
- width: var(--tct-btn-icon-width, 44px);
226
- height: var(--tct-btn-icon-height, 44px);
227
- border-radius: var(--tct-btn-icon-border-radius, 0);
225
+ width: var(--tct-btn-icon-width, var(--t-btn-icon-width, 44px));
226
+ height: var(--tct-btn-icon-height, var(--t-btn-icon-height, 44px));
227
+ border-radius: var(--tct-btn-icon-border-radius, var(--t-btn-icon-border-radius, 0));
228
228
  }
229
229
  :host button.icon-only:hover, :host button.icon-only:focus {
230
- background-color: var(--tct-btn-icon-hover-bg, var(--tct-gray-14, var(--t-gray-13, var(--tct-gray-l3, var(--app-gray-l3, #f2f2f2)))));
230
+ background-color: var(--tct-btn-icon-hover-bg, var(--t-btn-icon-hover-bg, var(--tct-gray-13, var(--t-gray-13, var(--tct-gray-l3, var(--app-gray-l3, #f2f2f2))))));
231
231
  }
232
232
  :host(:not([intent])[active]) button.icon-only {
233
- background-color: var(--tct-btn-icon-active-bg, var(--tct-btn-icon-hover-bg, var(--tct-gray-14, var(--t-gray-14, var(--tct-gray-l3, var(--app-gray-l3, #f2f2f2))))));
233
+ background-color: var(--tct-btn-icon-active-bg, var(--t-btn-icon-active-bg, var(--tct-gray-14, var(--t-gray-14, var(--tct-gray-l3, var(--app-gray-l3, #f2f2f2))))));
234
234
  }
235
235
  :host(:not([intent])) button.icon-only:hover *, :host(:not([intent])) button.icon-only:focus *, :host(:not([intent])[active]) button.icon-only * {
236
- color: var(--tct-btn-icon-hover-color, var(--tct-link-hover-color, var(--t-link-hover-color, #080808)));
236
+ color: var(--tct-btn-icon-hover-color, var(--t-btn-icon-hover-color, var(--tct-link-hover-color, var(--t-link-hover-color, #080808))));
237
237
  }
238
238
  :host([badge]) button {
239
- padding: var(--tct-btn-badge-padding, 2px 5px);
240
- font-size: var(--tct-btn-badge-font-size, var(--tct-btn-font-size, inherit));
241
- border-radius: var(--tct-btn-badge-border-radius, var(--tct-border-radius-1, var(--app-border-radius-1, 3px)));
242
- background-color: var(--tct-btn-badge-bg, transparent);
243
- color: var(--tct-btn-badge-font-color, inherit);
239
+ padding: var(--tct-btn-badge-padding, var(--t-btn-badge-padding, 2px 5px));
240
+ font-size: var(--tct-btn-badge-font-size, var(--t-btn-badge-font-size, var(--tct---btn-font-size, var(--t---btn-font-size, inherit))));
241
+ border-radius: var(--tct-btn-badge-border-radius, var(--t-btn-badge-border-radius, var(--tct-border-radius-1, var(--app-border-radius-1, 3px))));
242
+ background-color: var(--tct-btn-badge-bg, var(--t-btn-badge-bg, transparent));
243
+ color: var(--tct-btn-badge-font-color, var(--t-btn-badge-font-color, inherit));
244
244
  }
245
245
  :host([badge]) button ::slotted(q2-icon) {
246
246
  --tct-icon-size: 1em;
247
247
  }
248
248
  :host([badge]:hover) button:enabled {
249
- background-color: var(--tct-btn-badge-hover-bg, var(--tct-gray-14, var(--t-gray-14, var(--tct-gray-l3, var(--app-gray-l3, #f2f2f2)))));
250
- color: var(--tct-btn-badge-hover-font-color, var(--tct-gray-5, var(--t-gray-5, var(--tct-gray-d2, var(--app-gray-d2, #404040)))));
249
+ background-color: var(--tct-btn-badge-hover-bg, var(--t-btn-badge-hover-bg, var(--tct-gray-14, var(--t-gray-14, var(--tct-gray-l3, var(--app-gray-l3, #f2f2f2))))));
250
+ color: var(--tct-btn-badge-hover-font-color, var(--t-btn-badge-hover-font-color, var(--tct-gray-5, var(--t-gray-5, var(--tct-gray-d2, var(--app-gray-d2, #404040))))));
251
251
  }
252
252
  :host(.selected[badge]) button, :host([active][badge]) button {
253
- background-color: var(--tct-btn-badge-active-bg, var(--comp-btn-primary-bg));
254
- color: var(--tct-btn-badge-active-font-color, var(--comp-btn-primary-font-color));
253
+ background-color: var(--tct-btn-badge-active-bg, var(--t-btn-badge-active-bg, var(--comp-btn-primary-bg)));
254
+ color: var(--tct-btn-badge-active-font-color, var(--t-btn-badge-active-font-color, var(--comp-btn-primary-font-color)));
255
255
  }
256
256
 
257
257
  div {
@@ -1,15 +1,10 @@
1
- import moment from 'moment';
2
- import parseFormat from 'moment-parseformat';
3
- import { loc } from 'src/utils';
4
- export function isValidDate(date) {
5
- return date instanceof Date && !isNaN(date.getTime());
6
- }
1
+ import { isValid as isValidDate, formatISO, setMinutes } from 'date-fns';
2
+ import { loc } from '../../utils';
7
3
  export function formatDateISO(value) {
8
4
  const date = new Date(value);
9
5
  if (!isValidDate(date))
10
6
  return;
11
- const isoDate = date.toISOString();
12
- return isoDate.substring(0, 10);
7
+ return formatISO(date, { representation: 'date' });
13
8
  }
14
9
  export function formatDateShort(value) {
15
10
  const date = new Date(value);
@@ -33,8 +28,15 @@ export function formatDateLong(value) {
33
28
  year: 'numeric'
34
29
  }).format(date);
35
30
  }
36
- export function stringToMoment(date, useDateOnly = false) {
37
- let newMoment;
31
+ export function convertMomentFormat(stringFormat) {
32
+ return stringFormat
33
+ .replace(/[d]/g, 'E')
34
+ .replace(/[D]/g, 'd')
35
+ .replace(/[Y]/g, 'y')
36
+ .replace(/[l]/g, 'P')
37
+ .replace(/[W]/g, 'I');
38
+ }
39
+ export function stringToDate(date) {
38
40
  const isString = typeof date === 'string';
39
41
  if (!isString && date && isValidDate(new Date(date || undefined))) {
40
42
  date = formatDateISO(date);
@@ -42,60 +44,68 @@ export function stringToMoment(date, useDateOnly = false) {
42
44
  else if (!date || !isValidDate(new Date(date))) {
43
45
  return undefined;
44
46
  }
45
- if (useDateOnly && isString) {
46
- const datePartOnly = date.split('T')[0];
47
- newMoment = moment(datePartOnly, parseFormat(datePartOnly));
47
+ let result;
48
+ let dateParts = date.split(/[\/\-]/).map(part => part.padStart(2, '0'));
49
+ const isIsoString = isString && date.length >= 24 && date[10] === 'T';
50
+ const isCompleteDate = dateParts.length === 3;
51
+ const isPartialDate = dateParts.length < 3;
52
+ if (isIsoString) {
53
+ date = date.split('T')[0];
54
+ result = new Date(date);
48
55
  }
49
- else {
50
- const now = moment();
51
- const sp = date.split(/[\/\-]/);
52
- if (sp.length === 1) {
53
- if (date.match(/[\-]/)) {
54
- date = `${now.year()}-${sp[0]}-01`;
55
- }
56
- else if (date.match(/[\/]/)) {
57
- date = `${sp[0]}/01/${now.year()}`;
58
- }
59
- }
60
- else if (sp.length === 2) {
61
- let dd = sp[1] === '0' ? '01' : sp[1];
62
- if (date.match(/[\-]/)) {
63
- date = `${now.year()}-${sp[0]}-${dd}`;
64
- }
65
- else if (date.match(/[\/]/)) {
66
- date = `${sp[0]}/${dd}/${now.year()}`;
67
- }
68
- }
69
- else if (sp.length === 3) {
70
- if (date.match(/[\-]/)) {
71
- date = `${sp[1]}/${sp[2] || '01'}/${sp[0]}`;
72
- }
73
- else if (date.match(/[\/]/)) {
74
- date = `${sp[0]}/${sp[1] || '01'}/${sp[2]}`;
75
- }
56
+ else if (isCompleteDate) {
57
+ const isStandardSlashDate = date.includes('/') && dateParts[2].length === 4;
58
+ // Reorder mm/dd/yyyy dates for ISO formatting
59
+ // [mm, dd, yyyy] -> [yyyy, mm, dd]
60
+ if (isStandardSlashDate)
61
+ dateParts.unshift(dateParts.pop());
62
+ result = new Date(dateParts.join('-'));
63
+ }
64
+ else if (isPartialDate) {
65
+ const now = new Date();
66
+ let yearNumber;
67
+ let monthNumber;
68
+ let dayNumber;
69
+ switch (dateParts.length) {
70
+ case 1:
71
+ yearNumber = now.getFullYear();
72
+ monthNumber = dateParts[0];
73
+ dayNumber = '01';
74
+ break;
75
+ case 2:
76
+ yearNumber = now.getFullYear();
77
+ monthNumber = dateParts[0];
78
+ dayNumber = dateParts[1];
79
+ break;
76
80
  }
77
- newMoment = moment(date, parseFormat(date));
81
+ result = new Date(`${yearNumber}-${monthNumber}-${dayNumber}`);
78
82
  }
79
- return newMoment.isValid() ? newMoment : undefined;
83
+ if (!isValidDate(result))
84
+ return undefined;
85
+ // result = setHours(result, 0);
86
+ result = removeTimezoneOffset(result);
87
+ return isValidDate(result) ? result : undefined;
80
88
  }
81
- export function stringArrayToMoment(dateArray, useDateOnly = false) {
89
+ export function removeTimezoneOffset(date) {
90
+ const timeZoneOffset = date.getTimezoneOffset();
91
+ return setMinutes(date, timeZoneOffset);
92
+ }
93
+ export function stringArrayToDate(dateArray) {
82
94
  if (!Array.isArray(dateArray) || dateArray.length === 0) {
83
95
  return [];
84
96
  }
85
- const momentArray = dateArray.map(date => stringToMoment(date, useDateOnly));
86
- return momentArray;
97
+ return dateArray.map(date => stringToDate(date));
87
98
  }
88
- export function setupMonthYear(value = new Date(), months) {
99
+ export function setupMonthYear(value = new Date()) {
89
100
  const monthIndex = Number(value.toISOString().split('-')[1]) - 1;
90
101
  return {
91
102
  monthIndex,
92
- selectedMonth: months[monthIndex],
93
103
  selectedYear: value.getFullYear()
94
104
  };
95
105
  }
96
106
  export function validateInput(input = '', validDays = [], validDates = [], // white list
97
107
  invalidDates = [], // black list
98
- startDate, endDate, formatString = 'mm/dd/yyyy') {
108
+ startDate, endDate, formatString = 'mm/dd/yyyy', assume) {
99
109
  let isValid = false;
100
110
  let isAvailable = false;
101
111
  let messageType = 'info';
@@ -103,7 +113,7 @@ startDate, endDate, formatString = 'mm/dd/yyyy') {
103
113
  if (!input) {
104
114
  return { isValid, inputDate: new Date(''), isAvailable, messageType, message };
105
115
  }
106
- const inputDate = buildInputDate(input);
116
+ const inputDate = buildInputDate(input, assume);
107
117
  const month = inputDate.getMonth() + 1;
108
118
  const date = inputDate.getDate();
109
119
  const year = inputDate.getFullYear();
@@ -158,15 +168,15 @@ startDate, endDate, formatString = 'mm/dd/yyyy') {
158
168
  calendarPosition
159
169
  };
160
170
  }
161
- function buildInputDate(input) {
162
- let [month, day, year] = input.split('/');
171
+ function buildInputDate(input, assume) {
163
172
  const now = new Date();
173
+ let [month, day, year] = input.split('/');
164
174
  if (input.length === 10) {
165
175
  return new Date(input);
166
176
  }
167
177
  else if (month && day && Number(day) > 0) {
168
178
  day = Number(day) < 10 ? `0${Number(day)}` : day;
169
- year = !year || year.length < 4 ? now.getFullYear().toString() : year;
179
+ year = !year || year.length < 4 ? assumeYear(month, day, assume) : year;
170
180
  return new Date(`${month}/${day}/${year}`);
171
181
  }
172
182
  else if (month && day && Number(day) === 0) {
@@ -176,6 +186,21 @@ function buildInputDate(input) {
176
186
  return new Date(`${month}/01/${now.getFullYear()}`);
177
187
  }
178
188
  }
189
+ function assumeYear(month, day, assume) {
190
+ const monthDay = `${month}/${day}`;
191
+ const now = new Date();
192
+ const mm = now.getMonth() < 9 ? `0${now.getMonth() + 1}` : `${now.getMonth() + 1}`;
193
+ const dd = now.getDate() < 10 ? `0${now.getDate()}` : `${now.getDate()}`;
194
+ const nowLocal = `${mm}/${dd}/${now.getFullYear()}`;
195
+ let assumedYear = now.getFullYear();
196
+ if (assume === 'future' && nowLocal.slice(0, 5) > monthDay) {
197
+ assumedYear = now.getFullYear() + 1;
198
+ }
199
+ else if (assume === 'past' && nowLocal.slice(0, 5) < monthDay) {
200
+ assumedYear = now.getFullYear() - 1;
201
+ }
202
+ return assumedYear.toString();
203
+ }
179
204
  export function handleMissingZeros(input) {
180
205
  if (!input) {
181
206
  return '';