@lowdefy/blocks-antd 5.6.0 → 6.1.0

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 (285) hide show
  1. package/dist/TagPillRow.js +88 -0
  2. package/dist/blocks/Affix/gallery.yaml +399 -0
  3. package/dist/blocks/Affix/tests/Affix.e2e.yaml +72 -0
  4. package/dist/blocks/Affix/tests.yaml +29 -0
  5. package/dist/blocks/Alert/gallery.yaml +701 -0
  6. package/dist/blocks/Alert/tests/Alert.e2e.yaml +161 -0
  7. package/dist/blocks/Alert/tests.yaml +261 -0
  8. package/dist/blocks/AutoComplete/gallery.yaml +713 -0
  9. package/dist/blocks/AutoComplete/tests/AutoComplete.e2e.yaml +330 -0
  10. package/dist/blocks/AutoComplete/tests.yaml +178 -0
  11. package/dist/blocks/Avatar/gallery.yaml +1037 -0
  12. package/dist/blocks/Avatar/tests/Avatar.e2e.yaml +125 -0
  13. package/dist/blocks/Avatar/tests.yaml +76 -0
  14. package/dist/blocks/Badge/gallery.yaml +1090 -0
  15. package/dist/blocks/Badge/tests/Badge.e2e.yaml +195 -0
  16. package/dist/blocks/Badge/tests.yaml +91 -0
  17. package/dist/blocks/Breadcrumb/gallery.yaml +484 -0
  18. package/dist/blocks/Breadcrumb/tests/Breadcrumb.e2e.yaml +165 -0
  19. package/dist/blocks/Breadcrumb/tests.yaml +106 -0
  20. package/dist/blocks/Button/Button.js +11 -2
  21. package/dist/blocks/Button/gallery.yaml +718 -0
  22. package/dist/blocks/Button/meta.js +4 -0
  23. package/dist/blocks/Button/tests/Button.e2e.yaml +246 -0
  24. package/dist/blocks/Button/tests.yaml +109 -0
  25. package/dist/blocks/ButtonSelector/gallery.yaml +891 -0
  26. package/dist/blocks/ButtonSelector/tests/ButtonSelector.e2e.yaml +188 -0
  27. package/dist/blocks/ButtonSelector/tests.yaml +167 -0
  28. package/dist/blocks/Calendar/gallery.yaml +128 -0
  29. package/dist/blocks/Calendar/tests/Calendar.e2e.yaml +136 -0
  30. package/dist/blocks/Calendar/tests.yaml +50 -0
  31. package/dist/blocks/Card/gallery.yaml +1035 -0
  32. package/dist/blocks/Card/tests/Card.e2e.yaml +209 -0
  33. package/dist/blocks/Card/tests.yaml +75 -0
  34. package/dist/blocks/Carousel/gallery.yaml +1971 -0
  35. package/dist/blocks/Carousel/tests/Carousel.e2e.yaml +211 -0
  36. package/dist/blocks/Carousel/tests.yaml +117 -0
  37. package/dist/blocks/CheckboxSelector/gallery.yaml +781 -0
  38. package/dist/blocks/CheckboxSelector/tests/CheckboxSelector.e2e.yaml +272 -0
  39. package/dist/blocks/CheckboxSelector/tests.yaml +325 -0
  40. package/dist/blocks/CheckboxSwitch/gallery.yaml +457 -0
  41. package/dist/blocks/CheckboxSwitch/tests/CheckboxSwitch.e2e.yaml +126 -0
  42. package/dist/blocks/CheckboxSwitch/tests.yaml +96 -0
  43. package/dist/blocks/Collapse/gallery.yaml +1079 -0
  44. package/dist/blocks/Collapse/tests/Collapse.e2e.yaml +206 -0
  45. package/dist/blocks/Collapse/tests.yaml +265 -0
  46. package/dist/blocks/ColorSelector/gallery.yaml +807 -0
  47. package/dist/blocks/ColorSelector/tests/ColorSelector.e2e.yaml +77 -0
  48. package/dist/blocks/ColorSelector/tests.yaml +84 -0
  49. package/dist/blocks/ConfigProvider/gallery.yaml +1003 -0
  50. package/dist/blocks/ConfigProvider/tests.yaml +62 -0
  51. package/dist/blocks/ConfirmModal/gallery.yaml +1043 -0
  52. package/dist/blocks/ConfirmModal/tests/ConfirmModal.e2e.yaml +410 -0
  53. package/dist/blocks/ConfirmModal/tests.yaml +95 -0
  54. package/dist/blocks/Content/gallery.yaml +528 -0
  55. package/dist/blocks/Content/tests/Content.e2e.yaml +71 -0
  56. package/dist/blocks/Content/tests.yaml +42 -0
  57. package/dist/blocks/ControlledList/ControlledList.js +1 -1
  58. package/dist/blocks/ControlledList/gallery.yaml +481 -0
  59. package/dist/blocks/ControlledList/{style.module.css → style.css} +3 -3
  60. package/dist/blocks/ControlledList/tests/ControlledList.e2e.yaml +161 -0
  61. package/dist/blocks/ControlledList/tests.yaml +57 -0
  62. package/dist/blocks/DateRangeSelector/DateRangeSelector.js +7 -0
  63. package/dist/blocks/DateRangeSelector/e2e.js +28 -2
  64. package/dist/blocks/DateRangeSelector/gallery.yaml +858 -0
  65. package/dist/blocks/DateRangeSelector/meta.js +2 -0
  66. package/dist/blocks/DateRangeSelector/tests/DateRangeSelector.e2e.yaml +204 -0
  67. package/dist/blocks/DateRangeSelector/tests.yaml +129 -0
  68. package/dist/blocks/DateSelector/DateSelector.js +6 -0
  69. package/dist/blocks/DateSelector/e2e.js +28 -2
  70. package/dist/blocks/DateSelector/gallery.yaml +691 -0
  71. package/dist/blocks/DateSelector/meta.js +6 -0
  72. package/dist/blocks/DateSelector/tests/DateSelector.e2e.yaml +229 -0
  73. package/dist/blocks/DateSelector/tests.yaml +117 -0
  74. package/dist/blocks/DateTimeSelector/DateTimeSelector.js +7 -0
  75. package/dist/blocks/DateTimeSelector/e2e.js +26 -2
  76. package/dist/blocks/DateTimeSelector/gallery.yaml +770 -0
  77. package/dist/blocks/DateTimeSelector/meta.js +2 -0
  78. package/dist/blocks/DateTimeSelector/tests/DateTimeSelector.e2e.yaml +163 -0
  79. package/dist/blocks/DateTimeSelector/tests.yaml +140 -0
  80. package/dist/blocks/Descriptions/gallery.yaml +839 -0
  81. package/dist/blocks/Descriptions/tests/Descriptions.e2e.yaml +143 -0
  82. package/dist/blocks/Descriptions/tests.yaml +256 -0
  83. package/dist/blocks/Divider/gallery.yaml +375 -0
  84. package/dist/blocks/Divider/tests/Divider.e2e.yaml +107 -0
  85. package/dist/blocks/Divider/tests.yaml +58 -0
  86. package/dist/blocks/Drawer/gallery.yaml +1257 -0
  87. package/dist/blocks/Drawer/tests/Drawer.e2e.yaml +562 -0
  88. package/dist/blocks/Drawer/tests.yaml +80 -0
  89. package/dist/blocks/DropdownButton/gallery.yaml +606 -0
  90. package/dist/blocks/DropdownButton/tests/DropdownButton.e2e.yaml +243 -0
  91. package/dist/blocks/DropdownMenu/gallery.yaml +578 -0
  92. package/dist/blocks/DropdownMenu/tests/DropdownMenu.e2e.yaml +267 -0
  93. package/dist/blocks/Flex/gallery.yaml +1416 -0
  94. package/dist/blocks/Flex/tests/Flex.e2e.yaml +95 -0
  95. package/dist/blocks/Flex/tests.yaml +92 -0
  96. package/dist/blocks/FloatButton/gallery.yaml +518 -0
  97. package/dist/blocks/FloatButton/tests/FloatButton.e2e.yaml +73 -0
  98. package/dist/blocks/FloatButton/tests.yaml +59 -0
  99. package/dist/blocks/Footer/gallery.yaml +355 -0
  100. package/dist/blocks/Footer/tests/Footer.e2e.yaml +70 -0
  101. package/dist/blocks/Footer/tests.yaml +28 -0
  102. package/dist/blocks/Header/gallery.yaml +249 -0
  103. package/dist/blocks/Header/tests/Header.e2e.yaml +77 -0
  104. package/dist/blocks/Header/tests.yaml +36 -0
  105. package/dist/blocks/Label/Label.js +1 -1
  106. package/dist/blocks/Label/gallery.yaml +762 -0
  107. package/dist/blocks/Label/{style.module.css → style.css} +28 -28
  108. package/dist/blocks/Label/tests/Label.e2e.yaml +247 -0
  109. package/dist/blocks/Label/tests.yaml +212 -0
  110. package/dist/blocks/Layout/gallery.yaml +548 -0
  111. package/dist/blocks/Layout/tests/Layout.e2e.yaml +86 -0
  112. package/dist/blocks/Layout/tests.yaml +28 -0
  113. package/dist/blocks/ListSelector/gallery.yaml +223 -0
  114. package/dist/blocks/Masonry/gallery.yaml +989 -0
  115. package/dist/blocks/Masonry/tests/Masonry.e2e.yaml +128 -0
  116. package/dist/blocks/Masonry/tests.yaml +42 -0
  117. package/dist/blocks/MasonryList/gallery.yaml +224 -0
  118. package/dist/blocks/MasonryList/tests/MasonryList.e2e.yaml +55 -0
  119. package/dist/blocks/MasonryList/tests.yaml +42 -0
  120. package/dist/blocks/Menu/gallery.yaml +974 -0
  121. package/dist/blocks/Menu/tests/Menu.e2e.yaml +484 -0
  122. package/dist/blocks/Menu/tests.yaml +1053 -0
  123. package/dist/blocks/Message/gallery.yaml +860 -0
  124. package/dist/blocks/Message/tests/Message.e2e.yaml +246 -0
  125. package/dist/blocks/Message/tests.yaml +54 -0
  126. package/dist/blocks/MobileMenu/gallery.yaml +1172 -0
  127. package/dist/blocks/MobileMenu/tests/MobileMenu.e2e.yaml +314 -0
  128. package/dist/blocks/MobileMenu/tests.yaml +359 -0
  129. package/dist/blocks/Modal/gallery.yaml +1039 -0
  130. package/dist/blocks/Modal/tests/Modal.e2e.yaml +493 -0
  131. package/dist/blocks/Modal/tests.yaml +75 -0
  132. package/dist/blocks/MonthSelector/MonthSelector.js +6 -0
  133. package/dist/blocks/MonthSelector/e2e.js +26 -2
  134. package/dist/blocks/MonthSelector/gallery.yaml +687 -0
  135. package/dist/blocks/MonthSelector/meta.js +6 -0
  136. package/dist/blocks/MonthSelector/tests/MonthSelector.e2e.yaml +167 -0
  137. package/dist/blocks/MonthSelector/tests.yaml +124 -0
  138. package/dist/blocks/MultipleSelector/gallery.yaml +1245 -0
  139. package/dist/blocks/MultipleSelector/tests/MultipleSelector.e2e.yaml +445 -0
  140. package/dist/blocks/MultipleSelector/tests.yaml +201 -0
  141. package/dist/blocks/Notification/gallery.yaml +1376 -0
  142. package/dist/blocks/Notification/tests/Notification.e2e.yaml +362 -0
  143. package/dist/blocks/Notification/tests.yaml +97 -0
  144. package/dist/blocks/NumberInput/gallery.yaml +753 -0
  145. package/dist/blocks/NumberInput/tests/NumberInput.e2e.yaml +228 -0
  146. package/dist/blocks/NumberInput/tests.yaml +116 -0
  147. package/dist/blocks/PageHeaderMenu/PageHeaderMenu.js +1 -1
  148. package/dist/blocks/PageHeaderMenu/gallery.yaml +480 -0
  149. package/dist/blocks/PageHeaderMenu/tests/PageHeaderMenu.e2e.yaml +110 -0
  150. package/dist/blocks/PageHeaderMenu/tests.yaml +173 -0
  151. package/dist/blocks/PageSidebarLayout/PageSidebarLayout.js +10 -1
  152. package/dist/blocks/PageSidebarLayout/gallery.yaml +302 -0
  153. package/dist/blocks/PageSidebarLayout/meta.js +1 -0
  154. package/dist/blocks/PageSidebarLayout/tests/PageSidebarLayout.e2e.yaml +216 -0
  155. package/dist/blocks/PageSidebarLayout/tests.yaml +174 -0
  156. package/dist/blocks/PageSiderMenu/PageSiderMenu.js +1 -1
  157. package/dist/blocks/PageSiderMenu/gallery.yaml +516 -0
  158. package/dist/blocks/PageSiderMenu/tests/PageSiderMenu.e2e.yaml +175 -0
  159. package/dist/blocks/PageSiderMenu/tests.yaml +211 -0
  160. package/dist/blocks/Pagination/gallery.yaml +503 -0
  161. package/dist/blocks/Pagination/tests/Pagination.e2e.yaml +159 -0
  162. package/dist/blocks/Pagination/tests.yaml +80 -0
  163. package/dist/blocks/Paragraph/gallery.yaml +458 -0
  164. package/dist/blocks/Paragraph/tests/Paragraph.e2e.yaml +153 -0
  165. package/dist/blocks/Paragraph/tests.yaml +176 -0
  166. package/dist/blocks/ParagraphInput/gallery.yaml +1483 -0
  167. package/dist/blocks/ParagraphInput/tests/ParagraphInput.e2e.yaml +189 -0
  168. package/dist/blocks/ParagraphInput/tests.yaml +163 -0
  169. package/dist/blocks/PasswordInput/gallery.yaml +420 -0
  170. package/dist/blocks/PasswordInput/tests/PasswordInput.e2e.yaml +188 -0
  171. package/dist/blocks/PasswordInput/tests.yaml +78 -0
  172. package/dist/blocks/PhoneNumberInput/gallery.yaml +677 -0
  173. package/dist/blocks/PhoneNumberInput/tests/PhoneNumberInput.e2e.yaml +279 -0
  174. package/dist/blocks/PhoneNumberInput/tests.yaml +25 -0
  175. package/dist/blocks/Popover/gallery.yaml +1301 -0
  176. package/dist/blocks/Popover/tests/Popover.e2e.yaml +249 -0
  177. package/dist/blocks/Popover/tests.yaml +105 -0
  178. package/dist/blocks/Progress/gallery.yaml +772 -0
  179. package/dist/blocks/Progress/tests/Progress.e2e.yaml +167 -0
  180. package/dist/blocks/Progress/tests.yaml +114 -0
  181. package/dist/blocks/QRCode/gallery.yaml +492 -0
  182. package/dist/blocks/QRCode/tests/QRCode.e2e.yaml +66 -0
  183. package/dist/blocks/QRCode/tests.yaml +113 -0
  184. package/dist/blocks/RadioSelector/gallery.yaml +816 -0
  185. package/dist/blocks/RadioSelector/tests/RadioSelector.e2e.yaml +269 -0
  186. package/dist/blocks/RadioSelector/tests.yaml +339 -0
  187. package/dist/blocks/RatingSlider/gallery.yaml +627 -0
  188. package/dist/blocks/RatingSlider/tests/RatingSlider.e2e.yaml +188 -0
  189. package/dist/blocks/RatingSlider/tests.yaml +116 -0
  190. package/dist/blocks/Result/gallery.yaml +925 -0
  191. package/dist/blocks/Result/tests/Result.e2e.yaml +126 -0
  192. package/dist/blocks/Result/tests.yaml +75 -0
  193. package/dist/blocks/Search/Search.js +1 -1
  194. package/dist/blocks/Search/SearchModal.js +18 -9
  195. package/dist/blocks/Search/gallery.yaml +170 -0
  196. package/dist/blocks/Search/meta.js +2 -1
  197. package/dist/blocks/Search/{style.module.css → style.css} +19 -12
  198. package/dist/blocks/Search/tests/Search.e2e.yaml +125 -0
  199. package/dist/blocks/Search/useSearchIndex.js +24 -2
  200. package/dist/blocks/SegmentedSelector/gallery.yaml +725 -0
  201. package/dist/blocks/SegmentedSelector/tests/SegmentedSelector.e2e.yaml +115 -0
  202. package/dist/blocks/SegmentedSelector/tests.yaml +141 -0
  203. package/dist/blocks/Selector/gallery.yaml +1055 -0
  204. package/dist/blocks/Selector/tests/Selector.e2e.yaml +427 -0
  205. package/dist/blocks/Selector/tests.yaml +196 -0
  206. package/dist/blocks/Sider/gallery.yaml +994 -0
  207. package/dist/blocks/Sider/tests/Sider.e2e.yaml +162 -0
  208. package/dist/blocks/Sider/tests.yaml +20 -0
  209. package/dist/blocks/Slider/gallery.yaml +600 -0
  210. package/dist/blocks/Slider/tests/Slider.e2e.yaml +190 -0
  211. package/dist/blocks/Slider/tests.yaml +68 -0
  212. package/dist/blocks/Splitter/gallery.yaml +1511 -0
  213. package/dist/blocks/Splitter/tests/Splitter.e2e.yaml +114 -0
  214. package/dist/blocks/Splitter/tests.yaml +79 -0
  215. package/dist/blocks/Statistic/gallery.yaml +460 -0
  216. package/dist/blocks/Statistic/tests/Statistic.e2e.yaml +137 -0
  217. package/dist/blocks/Statistic/tests.yaml +77 -0
  218. package/dist/blocks/Steps/gallery.yaml +550 -0
  219. package/dist/blocks/Switch/gallery.yaml +502 -0
  220. package/dist/blocks/Switch/tests/Switch.e2e.yaml +132 -0
  221. package/dist/blocks/Switch/tests.yaml +87 -0
  222. package/dist/blocks/Tabs/gallery.yaml +1353 -0
  223. package/dist/blocks/Tabs/tests/Tabs.e2e.yaml +370 -0
  224. package/dist/blocks/Tabs/tests.yaml +349 -0
  225. package/dist/blocks/Tag/gallery.yaml +598 -0
  226. package/dist/blocks/Tag/tests/Tag.e2e.yaml +173 -0
  227. package/dist/blocks/Tag/tests.yaml +51 -0
  228. package/dist/blocks/TagMultipleSelector/TagMultipleSelector.js +53 -0
  229. package/dist/blocks/TagMultipleSelector/e2e.js +36 -0
  230. package/dist/blocks/TagMultipleSelector/gallery.yaml +70 -0
  231. package/dist/blocks/TagMultipleSelector/meta.js +91 -0
  232. package/dist/blocks/TagMultipleSelector/tests/TagMultipleSelector.e2e.yaml +93 -0
  233. package/dist/blocks/TagSelector/TagSelector.js +49 -0
  234. package/dist/blocks/TagSelector/e2e.js +36 -0
  235. package/dist/blocks/TagSelector/gallery.yaml +70 -0
  236. package/dist/blocks/TagSelector/meta.js +91 -0
  237. package/dist/blocks/TagSelector/tests/TagSelector.e2e.yaml +93 -0
  238. package/dist/blocks/TextArea/gallery.yaml +618 -0
  239. package/dist/blocks/TextArea/tests/TextArea.e2e.yaml +218 -0
  240. package/dist/blocks/TextArea/tests.yaml +100 -0
  241. package/dist/blocks/TextInput/gallery.yaml +560 -0
  242. package/dist/blocks/TextInput/tests/TextInput.e2e.yaml +287 -0
  243. package/dist/blocks/TextInput/tests.yaml +114 -0
  244. package/dist/blocks/TimelineList/gallery.yaml +431 -0
  245. package/dist/blocks/TimelineList/tests/TimelineList.e2e.yaml +244 -0
  246. package/dist/blocks/TimelineList/tests.yaml +251 -0
  247. package/dist/blocks/Title/gallery.yaml +483 -0
  248. package/dist/blocks/Title/tests/Title.e2e.yaml +180 -0
  249. package/dist/blocks/Title/tests.yaml +175 -0
  250. package/dist/blocks/TitleInput/gallery.yaml +1006 -0
  251. package/dist/blocks/TitleInput/tests/TitleInput.e2e.yaml +195 -0
  252. package/dist/blocks/TitleInput/tests.yaml +181 -0
  253. package/dist/blocks/Tooltip/gallery.yaml +1214 -0
  254. package/dist/blocks/Tooltip/tests/Tooltip.e2e.yaml +195 -0
  255. package/dist/blocks/Tooltip/tests.yaml +92 -0
  256. package/dist/blocks/Tour/gallery.yaml +2305 -0
  257. package/dist/blocks/Tour/tests/Tour.e2e.yaml +90 -0
  258. package/dist/blocks/Tour/tests.yaml +151 -0
  259. package/dist/blocks/TreeInput/gallery.yaml +78 -0
  260. package/dist/blocks/TreeInput/tests/TreeInput.e2e.yaml +139 -0
  261. package/dist/blocks/TreeInput/tests.yaml +140 -0
  262. package/dist/blocks/TreeMultipleSelector/gallery.yaml +67 -0
  263. package/dist/blocks/TreeSelector/gallery.yaml +81 -0
  264. package/dist/blocks/Watermark/gallery.yaml +479 -0
  265. package/dist/blocks/Watermark/tests/Watermark.e2e.yaml +62 -0
  266. package/dist/blocks/Watermark/tests.yaml +86 -0
  267. package/dist/blocks/WeekSelector/WeekSelector.js +6 -0
  268. package/dist/blocks/WeekSelector/e2e.js +26 -2
  269. package/dist/blocks/WeekSelector/gallery.yaml +589 -0
  270. package/dist/blocks/WeekSelector/meta.js +6 -0
  271. package/dist/blocks/WeekSelector/tests/WeekSelector.e2e.yaml +154 -0
  272. package/dist/blocks/WeekSelector/tests.yaml +122 -0
  273. package/dist/blocks.js +2 -0
  274. package/dist/disabledDate.js +91 -19
  275. package/dist/e2e.js +2 -0
  276. package/dist/getPresets.js +151 -0
  277. package/dist/getTagColor.js +44 -0
  278. package/dist/getTagSelectorOptions.js +30 -0
  279. package/dist/metas.js +2 -0
  280. package/dist/pickerPresetsStyle.css +26 -0
  281. package/dist/schemas/disabledDates.js +6 -2
  282. package/dist/schemas/index.js +1 -0
  283. package/dist/schemas/presets.js +111 -0
  284. package/dist/tagSelectorStyle.css +68 -0
  285. package/package.json +13 -13
@@ -0,0 +1,229 @@
1
+ # Copyright 2020-2026 Lowdefy, Inc
2
+
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ id: dateselector
16
+ type: Box
17
+
18
+ events:
19
+ onInit:
20
+ - id: set_defaults
21
+ type: SetState
22
+ params:
23
+ ds_with_value:
24
+ _date: '2024-06-15'
25
+ ds_clearable:
26
+ _date: '2024-01-01'
27
+
28
+ blocks:
29
+ # ============================================
30
+ # BASIC RENDERING
31
+ # ============================================
32
+
33
+ - id: ds_basic
34
+ type: DateSelector
35
+ properties:
36
+ title: Basic Date
37
+
38
+ - id: ds_with_value
39
+ type: DateSelector
40
+ properties:
41
+ title: With Value
42
+
43
+ # ============================================
44
+ # PROPERTY TESTS
45
+ # ============================================
46
+
47
+ - id: ds_disabled
48
+ type: DateSelector
49
+ properties:
50
+ title: Disabled
51
+ disabled: true
52
+
53
+ - id: ds_small
54
+ type: DateSelector
55
+ properties:
56
+ title: Small Size
57
+ size: small
58
+
59
+ - id: ds_large
60
+ type: DateSelector
61
+ properties:
62
+ title: Large Size
63
+ size: large
64
+
65
+ - id: ds_placeholder
66
+ type: DateSelector
67
+ properties:
68
+ title: Custom Placeholder
69
+ placeholder: Pick a date...
70
+
71
+ - id: ds_borderless
72
+ type: DateSelector
73
+ properties:
74
+ title: Borderless
75
+ bordered: false
76
+
77
+ - id: ds_no_allowclear
78
+ type: DateSelector
79
+ properties:
80
+ title: No Allow Clear
81
+ allowClear: false
82
+
83
+ - id: ds_with_title
84
+ type: DateSelector
85
+ properties:
86
+ title: Date with Title
87
+
88
+ - id: ds_with_label
89
+ type: DateSelector
90
+ properties:
91
+ title: Date Label
92
+ label:
93
+ extra: Select a date from the calendar
94
+
95
+ # ============================================
96
+ # DISABLED DATES TESTS
97
+ # ============================================
98
+
99
+ - id: ds_disabled_dates_min_max
100
+ type: DateSelector
101
+ properties:
102
+ title: Min/Max Range
103
+ disabledDates:
104
+ min:
105
+ _date: '2024-06-01'
106
+ max:
107
+ _date: '2024-06-30'
108
+
109
+ - id: ds_disabled_specific_dates
110
+ type: DateSelector
111
+ properties:
112
+ title: Specific Disabled Dates
113
+ disabledDates:
114
+ dates:
115
+ - _date: '2024-06-10'
116
+ - _date: '2024-06-20'
117
+
118
+ # ============================================
119
+ # EVENT TESTS
120
+ # ============================================
121
+
122
+ - id: ds_onchange
123
+ type: DateSelector
124
+ properties:
125
+ title: OnChange Test
126
+ events:
127
+ onChange:
128
+ - id: set_onchange
129
+ type: SetState
130
+ params:
131
+ ds_onchange_value:
132
+ _event: value
133
+
134
+ - id: ds_onchange_display
135
+ type: Span
136
+ properties:
137
+ content:
138
+ _if:
139
+ test:
140
+ _ne:
141
+ - _state: ds_onchange_value
142
+ - null
143
+ then: Date selected
144
+ else: ''
145
+
146
+ # ============================================
147
+ # INTERACTION TESTS
148
+ # ============================================
149
+
150
+ - id: ds_interaction
151
+ type: DateSelector
152
+ properties:
153
+ title: Interaction Test
154
+
155
+ - id: ds_clearable
156
+ type: DateSelector
157
+ properties:
158
+ title: Clearable
159
+ allowClear: true
160
+
161
+ # ============================================
162
+ # PRESETS
163
+ # ============================================
164
+
165
+ - id: ds_presets
166
+ type: DateSelector
167
+ properties:
168
+ title: Presets
169
+ format: YYYY-MM-DD
170
+ presets:
171
+ - label: New Year 2024
172
+ value: '2024-01-01'
173
+ - label: Mid 2024
174
+ value:
175
+ _date: '2024-06-15'
176
+
177
+ # The recommended idiom for a relative shortcut: a local time chain ending in a format step, so
178
+ # the preset selects the calendar date the browser shows as today rather than the UTC date.
179
+ - id: ds_presets_today
180
+ type: DateSelector
181
+ properties:
182
+ title: Presets Today
183
+ format: YYYY-MM-DD
184
+ presets:
185
+ - label: Today
186
+ value:
187
+ _dayjs:
188
+ - now
189
+ - format: YYYY-MM-DD
190
+
191
+ - id: ds_presets_min_now
192
+ type: DateSelector
193
+ properties:
194
+ title: Presets with a minimum date
195
+ format: YYYY-MM-DD
196
+ disabledDates:
197
+ min:
198
+ _dayjs: [now, { format: YYYY-MM-DD }]
199
+ presets:
200
+ - label: A Week Ago
201
+ value:
202
+ _dayjs: [now, { subtract: [7, days] }, { format: YYYY-MM-DD }]
203
+ - label: Today
204
+ value:
205
+ _dayjs: [now, { format: YYYY-MM-DD }]
206
+
207
+ - id: ds_disabled_ranges_from_to
208
+ type: DateSelector
209
+ properties:
210
+ title: Disabled ranges as from and to
211
+ format: YYYY-MM-DD
212
+ disabledDates:
213
+ ranges:
214
+ - from: '2026-03-10'
215
+ to: '2026-03-14'
216
+ presets:
217
+ - label: In the disabled range
218
+ value: '2026-03-12'
219
+ - label: Outside the disabled range
220
+ value: '2026-03-17'
221
+
222
+ - id: ds_disabled_ranges_array
223
+ type: DateSelector
224
+ properties:
225
+ title: Disabled ranges as an array
226
+ format: YYYY-MM-DD
227
+ disabledDates:
228
+ ranges:
229
+ - ['2026-03-10', '2026-03-14']
@@ -0,0 +1,117 @@
1
+ # Copyright 2020-2026 Lowdefy, Inc
2
+
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ - id: default
16
+ type: DateSelector
17
+ - id: properties.title
18
+ type: DateSelector
19
+ properties:
20
+ title: DateSelector title
21
+ - id: 'properties.allowClear: false'
22
+ type: DateSelector
23
+ properties:
24
+ allowClear: false
25
+ - id: 'properties.autoFocus: true'
26
+ type: DateSelector
27
+ properties:
28
+ autoFocus: true
29
+ - id: 'properties.bordered: false'
30
+ type: DateSelector
31
+ properties:
32
+ bordered: false
33
+ - id: 'properties.disabled: true'
34
+ type: DateSelector
35
+ properties:
36
+ disabled: true
37
+ - id: 'properties.disabledDates.min'
38
+ type: DateSelector
39
+ properties:
40
+ disabledDates:
41
+ min: 2020-10-20
42
+ - id: 'properties.disabledDates.max'
43
+ type: DateSelector
44
+ properties:
45
+ disabledDates:
46
+ max: 2020-10-15
47
+ - id: 'properties.disabledDates.dates'
48
+ type: DateSelector
49
+ properties:
50
+ disabledDates:
51
+ dates:
52
+ - _date: 2020-10-26
53
+ - 2020-10-29
54
+ - 2020-11-02
55
+ - id: 'properties.disabledDates.ranges'
56
+ type: DateSelector
57
+ properties:
58
+ disabledDates:
59
+ ranges:
60
+ - ['2020-10-26', '2020-10-29']
61
+ - - 2020-11-01
62
+ - 2020-11-02
63
+ - id: 'properties.format: YYYY-MMMM-DD'
64
+ type: DateSelector
65
+ properties:
66
+ format: YYYY-MMMM-DD
67
+ - id: 'properties.inputStyle: CSS style applied'
68
+ type: DateSelector
69
+ properties:
70
+ inputStyle:
71
+ border: 1px solid red
72
+ - id: 'properties.placeholder: - Select this Date'
73
+ type: DateSelector
74
+ properties:
75
+ placeholder: Select this Date
76
+ - id: 'properties.showToday: true'
77
+ type: DateSelector
78
+ properties:
79
+ showToday: true
80
+ - id: 'properties.size: small'
81
+ type: DateSelector
82
+ properties:
83
+ size: small
84
+ - id: 'properties.suffixIcon: CalendarTwoTone'
85
+ type: DateSelector
86
+ properties:
87
+ suffixIcon: CalendarTwoTone
88
+ - id: 'properties.label span: 12'
89
+ type: DateSelector
90
+ properties:
91
+ label:
92
+ span: 12
93
+ - id: 'properties.label align: right'
94
+ type: DateSelector
95
+ properties:
96
+ label:
97
+ align: right
98
+ - id: 'properties.label inline: true'
99
+ type: DateSelector
100
+ properties:
101
+ label:
102
+ inline: true
103
+ - id: 'properties.label disabled: true'
104
+ type: DateSelector
105
+ properties:
106
+ label:
107
+ disabled: true
108
+ - id: 'properties.label colon: true'
109
+ type: DateSelector
110
+ properties:
111
+ label:
112
+ colon: true
113
+ - id: 'properties.label extra: extra text added'
114
+ type: DateSelector
115
+ properties:
116
+ label:
117
+ extra: extra text added
@@ -21,6 +21,7 @@ import { withBlockDefaults } from '@lowdefy/block-utils';
21
21
  import Label from '../Label/Label.js';
22
22
  import withTheme from '../withTheme.js';
23
23
  import disabledDate from '../../disabledDate.js';
24
+ import getPresets from '../../getPresets.js';
24
25
  dayjs.extend(utc);
25
26
  const DateTimeSelector = ({ blockId, classNames = {}, components: { Icon }, events, loading, methods, properties, required, styles = {}, validation, value })=>{
26
27
  const [elementId] = useState((0 | Math.random() * 9e2) + 1e2);
@@ -75,6 +76,12 @@ const DateTimeSelector = ({ blockId, classNames = {}, components: { Icon }, even
75
76
  format: properties.format ?? getLocaleDateFormat(methods.getLocale?.(), 'datetime') ?? 'YYYY-MM-DD HH:mm',
76
77
  getPopupContainer: ()=>document.getElementById(`${blockId}_${elementId}_popup`),
77
78
  placeholder: properties.placeholder,
79
+ presets: getPresets({
80
+ disabledDates: properties.disabledDates,
81
+ local: !properties.selectUTC,
82
+ methods,
83
+ presets: properties.presets
84
+ }),
78
85
  showNow: properties.showNow,
79
86
  showToday: properties.showToday,
80
87
  size: properties.size,
@@ -16,6 +16,13 @@
16
16
  import { expect } from '@playwright/test';
17
17
  const locator = (page, blockId)=>page.locator(`.ant-picker:has(#${escapeId(blockId)}_input)`);
18
18
  const input = (page, blockId)=>page.locator(`#${escapeId(blockId)}_input`);
19
+ // The block renders the picker popup into a container inside itself, so the dropdown is scoped to
20
+ // the block rather than to every open picker on the page.
21
+ const pickerDropdown = (page, blockId)=>page.locator(`#bl-${escapeId(blockId)} .ant-picker-dropdown`);
22
+ const presets = (page, blockId)=>pickerDropdown(page, blockId).locator('.ant-picker-presets');
23
+ const presetItem = (page, blockId, label)=>presets(page, blockId).locator('li', {
24
+ hasText: label
25
+ });
19
26
  const monthNames = [
20
27
  'Jan',
21
28
  'Feb',
@@ -75,7 +82,7 @@ export default createBlockHelper({
75
82
  const [datePart, timePart] = dateTimeString.split(' ');
76
83
  const [year, month] = datePart.split('-').map(Number);
77
84
  await locator(page, blockId).click();
78
- const dropdown = page.locator('.ant-picker-dropdown:visible');
85
+ const dropdown = pickerDropdown(page, blockId);
79
86
  await expect(dropdown).toBeVisible();
80
87
  await navigateToMonth(dropdown, year, month);
81
88
  await dropdown.locator(`.ant-picker-cell-in-view[title="${datePart}"]`).click();
@@ -94,6 +101,13 @@ export default createBlockHelper({
94
101
  await dropdown.locator('.ant-picker-ok button').click();
95
102
  }
96
103
  },
104
+ selectPreset: async (page, blockId, label)=>{
105
+ await locator(page, blockId).click();
106
+ await expect(pickerDropdown(page, blockId)).toBeVisible();
107
+ await presets(page, blockId).getByText(label, {
108
+ exact: true
109
+ }).click();
110
+ },
97
111
  clear: async (page, blockId)=>{
98
112
  await locator(page, blockId).hover();
99
113
  await locator(page, blockId).locator('.ant-picker-clear').click();
@@ -101,6 +115,16 @@ export default createBlockHelper({
101
115
  },
102
116
  expect: {
103
117
  value: (page, blockId, val)=>expect(input(page, blockId)).toHaveValue(val),
104
- placeholder: (page, blockId, text)=>expect(input(page, blockId)).toHaveAttribute('placeholder', text)
118
+ placeholder: (page, blockId, text)=>expect(input(page, blockId)).toHaveAttribute('placeholder', text),
119
+ presetLabels: (page, blockId, labels)=>expect(presets(page, blockId).locator('li')).toHaveText(labels),
120
+ presetLabelHtml: (page, blockId, { selector, text })=>expect(presets(page, blockId).locator(selector)).toHaveText(text),
121
+ noPresets: (page, blockId)=>expect(presets(page, blockId)).toHaveCount(0),
122
+ // A preset the calendar cannot select is disabled through the list item's pointer events, so
123
+ // asserting on those checks the shortcut is really unclickable and not only styled as such.
124
+ presetDisabled: (page, blockId, label)=>expect(presetItem(page, blockId, label)).toHaveCSS('pointer-events', 'none'),
125
+ presetEnabled: (page, blockId, label)=>expect(presetItem(page, blockId, label)).toHaveCSS('pointer-events', 'auto'),
126
+ // The picker only closes the popup once it accepts the value, so a closed popup is the
127
+ // signal that a selection was committed rather than just shown in the input.
128
+ closed: (page, blockId)=>expect(pickerDropdown(page, blockId)).toBeHidden()
105
129
  }
106
130
  });