@lowdefy/blocks-antd 5.5.1 → 6.0.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 (288) 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/gallery.yaml +718 -0
  21. package/dist/blocks/Button/tests/Button.e2e.yaml +246 -0
  22. package/dist/blocks/Button/tests.yaml +104 -0
  23. package/dist/blocks/ButtonSelector/gallery.yaml +891 -0
  24. package/dist/blocks/ButtonSelector/tests/ButtonSelector.e2e.yaml +188 -0
  25. package/dist/blocks/ButtonSelector/tests.yaml +167 -0
  26. package/dist/blocks/Calendar/gallery.yaml +128 -0
  27. package/dist/blocks/Calendar/tests/Calendar.e2e.yaml +136 -0
  28. package/dist/blocks/Calendar/tests.yaml +50 -0
  29. package/dist/blocks/Card/gallery.yaml +1035 -0
  30. package/dist/blocks/Card/tests/Card.e2e.yaml +209 -0
  31. package/dist/blocks/Card/tests.yaml +75 -0
  32. package/dist/blocks/Carousel/gallery.yaml +1971 -0
  33. package/dist/blocks/Carousel/tests/Carousel.e2e.yaml +211 -0
  34. package/dist/blocks/Carousel/tests.yaml +117 -0
  35. package/dist/blocks/CheckboxSelector/CheckboxSelector.js +54 -29
  36. package/dist/blocks/CheckboxSelector/gallery.yaml +781 -0
  37. package/dist/blocks/CheckboxSelector/meta.js +24 -4
  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 +4 -4
  106. package/dist/blocks/Label/gallery.yaml +762 -0
  107. package/dist/blocks/Label/labelLogic.js +4 -1
  108. package/dist/blocks/Label/{style.module.css → style.css} +28 -28
  109. package/dist/blocks/Label/tests/Label.e2e.yaml +247 -0
  110. package/dist/blocks/Label/tests.yaml +212 -0
  111. package/dist/blocks/Layout/gallery.yaml +548 -0
  112. package/dist/blocks/Layout/tests/Layout.e2e.yaml +86 -0
  113. package/dist/blocks/Layout/tests.yaml +28 -0
  114. package/dist/blocks/ListSelector/gallery.yaml +223 -0
  115. package/dist/blocks/Masonry/gallery.yaml +989 -0
  116. package/dist/blocks/Masonry/tests/Masonry.e2e.yaml +128 -0
  117. package/dist/blocks/Masonry/tests.yaml +42 -0
  118. package/dist/blocks/MasonryList/gallery.yaml +224 -0
  119. package/dist/blocks/MasonryList/tests/MasonryList.e2e.yaml +55 -0
  120. package/dist/blocks/MasonryList/tests.yaml +42 -0
  121. package/dist/blocks/Menu/gallery.yaml +974 -0
  122. package/dist/blocks/Menu/tests/Menu.e2e.yaml +484 -0
  123. package/dist/blocks/Menu/tests.yaml +1053 -0
  124. package/dist/blocks/Message/gallery.yaml +860 -0
  125. package/dist/blocks/Message/tests/Message.e2e.yaml +246 -0
  126. package/dist/blocks/Message/tests.yaml +54 -0
  127. package/dist/blocks/MobileMenu/gallery.yaml +1172 -0
  128. package/dist/blocks/MobileMenu/tests/MobileMenu.e2e.yaml +314 -0
  129. package/dist/blocks/MobileMenu/tests.yaml +359 -0
  130. package/dist/blocks/Modal/gallery.yaml +1039 -0
  131. package/dist/blocks/Modal/tests/Modal.e2e.yaml +493 -0
  132. package/dist/blocks/Modal/tests.yaml +75 -0
  133. package/dist/blocks/MonthSelector/MonthSelector.js +6 -0
  134. package/dist/blocks/MonthSelector/e2e.js +26 -2
  135. package/dist/blocks/MonthSelector/gallery.yaml +687 -0
  136. package/dist/blocks/MonthSelector/meta.js +6 -0
  137. package/dist/blocks/MonthSelector/tests/MonthSelector.e2e.yaml +167 -0
  138. package/dist/blocks/MonthSelector/tests.yaml +124 -0
  139. package/dist/blocks/MultipleSelector/gallery.yaml +1245 -0
  140. package/dist/blocks/MultipleSelector/tests/MultipleSelector.e2e.yaml +445 -0
  141. package/dist/blocks/MultipleSelector/tests.yaml +201 -0
  142. package/dist/blocks/Notification/gallery.yaml +1376 -0
  143. package/dist/blocks/Notification/tests/Notification.e2e.yaml +362 -0
  144. package/dist/blocks/Notification/tests.yaml +97 -0
  145. package/dist/blocks/NumberInput/gallery.yaml +753 -0
  146. package/dist/blocks/NumberInput/tests/NumberInput.e2e.yaml +228 -0
  147. package/dist/blocks/NumberInput/tests.yaml +116 -0
  148. package/dist/blocks/PageHeaderMenu/PageHeaderMenu.js +1 -1
  149. package/dist/blocks/PageHeaderMenu/gallery.yaml +480 -0
  150. package/dist/blocks/PageHeaderMenu/tests/PageHeaderMenu.e2e.yaml +110 -0
  151. package/dist/blocks/PageHeaderMenu/tests.yaml +173 -0
  152. package/dist/blocks/PageSidebarLayout/PageSidebarLayout.js +10 -1
  153. package/dist/blocks/PageSidebarLayout/gallery.yaml +302 -0
  154. package/dist/blocks/PageSidebarLayout/meta.js +1 -0
  155. package/dist/blocks/PageSidebarLayout/tests/PageSidebarLayout.e2e.yaml +216 -0
  156. package/dist/blocks/PageSidebarLayout/tests.yaml +174 -0
  157. package/dist/blocks/PageSiderMenu/PageSiderMenu.js +1 -1
  158. package/dist/blocks/PageSiderMenu/gallery.yaml +516 -0
  159. package/dist/blocks/PageSiderMenu/tests/PageSiderMenu.e2e.yaml +175 -0
  160. package/dist/blocks/PageSiderMenu/tests.yaml +211 -0
  161. package/dist/blocks/Pagination/gallery.yaml +503 -0
  162. package/dist/blocks/Pagination/tests/Pagination.e2e.yaml +159 -0
  163. package/dist/blocks/Pagination/tests.yaml +80 -0
  164. package/dist/blocks/Paragraph/gallery.yaml +458 -0
  165. package/dist/blocks/Paragraph/tests/Paragraph.e2e.yaml +153 -0
  166. package/dist/blocks/Paragraph/tests.yaml +176 -0
  167. package/dist/blocks/ParagraphInput/gallery.yaml +1483 -0
  168. package/dist/blocks/ParagraphInput/tests/ParagraphInput.e2e.yaml +189 -0
  169. package/dist/blocks/ParagraphInput/tests.yaml +163 -0
  170. package/dist/blocks/PasswordInput/gallery.yaml +420 -0
  171. package/dist/blocks/PasswordInput/tests/PasswordInput.e2e.yaml +188 -0
  172. package/dist/blocks/PasswordInput/tests.yaml +78 -0
  173. package/dist/blocks/PhoneNumberInput/gallery.yaml +677 -0
  174. package/dist/blocks/PhoneNumberInput/tests/PhoneNumberInput.e2e.yaml +279 -0
  175. package/dist/blocks/PhoneNumberInput/tests.yaml +25 -0
  176. package/dist/blocks/Popover/gallery.yaml +1301 -0
  177. package/dist/blocks/Popover/tests/Popover.e2e.yaml +249 -0
  178. package/dist/blocks/Popover/tests.yaml +105 -0
  179. package/dist/blocks/Progress/gallery.yaml +772 -0
  180. package/dist/blocks/Progress/tests/Progress.e2e.yaml +167 -0
  181. package/dist/blocks/Progress/tests.yaml +114 -0
  182. package/dist/blocks/QRCode/gallery.yaml +492 -0
  183. package/dist/blocks/QRCode/tests/QRCode.e2e.yaml +66 -0
  184. package/dist/blocks/QRCode/tests.yaml +113 -0
  185. package/dist/blocks/RadioSelector/RadioSelector.js +50 -25
  186. package/dist/blocks/RadioSelector/gallery.yaml +816 -0
  187. package/dist/blocks/RadioSelector/meta.js +23 -3
  188. package/dist/blocks/RadioSelector/tests/RadioSelector.e2e.yaml +269 -0
  189. package/dist/blocks/RadioSelector/tests.yaml +339 -0
  190. package/dist/blocks/RatingSlider/gallery.yaml +627 -0
  191. package/dist/blocks/RatingSlider/tests/RatingSlider.e2e.yaml +188 -0
  192. package/dist/blocks/RatingSlider/tests.yaml +116 -0
  193. package/dist/blocks/Result/gallery.yaml +925 -0
  194. package/dist/blocks/Result/tests/Result.e2e.yaml +126 -0
  195. package/dist/blocks/Result/tests.yaml +75 -0
  196. package/dist/blocks/Search/Search.js +1 -1
  197. package/dist/blocks/Search/SearchModal.js +18 -9
  198. package/dist/blocks/Search/gallery.yaml +170 -0
  199. package/dist/blocks/Search/meta.js +2 -1
  200. package/dist/blocks/Search/{style.module.css → style.css} +19 -12
  201. package/dist/blocks/Search/tests/Search.e2e.yaml +125 -0
  202. package/dist/blocks/Search/useSearchIndex.js +24 -2
  203. package/dist/blocks/SegmentedSelector/gallery.yaml +725 -0
  204. package/dist/blocks/SegmentedSelector/tests/SegmentedSelector.e2e.yaml +115 -0
  205. package/dist/blocks/SegmentedSelector/tests.yaml +141 -0
  206. package/dist/blocks/Selector/gallery.yaml +1055 -0
  207. package/dist/blocks/Selector/tests/Selector.e2e.yaml +427 -0
  208. package/dist/blocks/Selector/tests.yaml +196 -0
  209. package/dist/blocks/Sider/gallery.yaml +994 -0
  210. package/dist/blocks/Sider/tests/Sider.e2e.yaml +162 -0
  211. package/dist/blocks/Sider/tests.yaml +20 -0
  212. package/dist/blocks/Slider/gallery.yaml +600 -0
  213. package/dist/blocks/Slider/tests/Slider.e2e.yaml +190 -0
  214. package/dist/blocks/Slider/tests.yaml +68 -0
  215. package/dist/blocks/Splitter/gallery.yaml +1511 -0
  216. package/dist/blocks/Splitter/tests/Splitter.e2e.yaml +114 -0
  217. package/dist/blocks/Splitter/tests.yaml +79 -0
  218. package/dist/blocks/Statistic/gallery.yaml +460 -0
  219. package/dist/blocks/Statistic/tests/Statistic.e2e.yaml +137 -0
  220. package/dist/blocks/Statistic/tests.yaml +77 -0
  221. package/dist/blocks/Steps/gallery.yaml +550 -0
  222. package/dist/blocks/Switch/gallery.yaml +502 -0
  223. package/dist/blocks/Switch/tests/Switch.e2e.yaml +132 -0
  224. package/dist/blocks/Switch/tests.yaml +87 -0
  225. package/dist/blocks/Tabs/gallery.yaml +1353 -0
  226. package/dist/blocks/Tabs/tests/Tabs.e2e.yaml +370 -0
  227. package/dist/blocks/Tabs/tests.yaml +349 -0
  228. package/dist/blocks/Tag/gallery.yaml +598 -0
  229. package/dist/blocks/Tag/tests/Tag.e2e.yaml +173 -0
  230. package/dist/blocks/Tag/tests.yaml +51 -0
  231. package/dist/blocks/TagMultipleSelector/TagMultipleSelector.js +53 -0
  232. package/dist/blocks/TagMultipleSelector/e2e.js +36 -0
  233. package/dist/blocks/TagMultipleSelector/gallery.yaml +70 -0
  234. package/dist/blocks/TagMultipleSelector/meta.js +91 -0
  235. package/dist/blocks/TagMultipleSelector/tests/TagMultipleSelector.e2e.yaml +93 -0
  236. package/dist/blocks/TagSelector/TagSelector.js +49 -0
  237. package/dist/blocks/TagSelector/e2e.js +36 -0
  238. package/dist/blocks/TagSelector/gallery.yaml +70 -0
  239. package/dist/blocks/TagSelector/meta.js +91 -0
  240. package/dist/blocks/TagSelector/tests/TagSelector.e2e.yaml +93 -0
  241. package/dist/blocks/TextArea/gallery.yaml +618 -0
  242. package/dist/blocks/TextArea/tests/TextArea.e2e.yaml +218 -0
  243. package/dist/blocks/TextArea/tests.yaml +100 -0
  244. package/dist/blocks/TextInput/gallery.yaml +560 -0
  245. package/dist/blocks/TextInput/tests/TextInput.e2e.yaml +287 -0
  246. package/dist/blocks/TextInput/tests.yaml +114 -0
  247. package/dist/blocks/TimelineList/gallery.yaml +431 -0
  248. package/dist/blocks/TimelineList/tests/TimelineList.e2e.yaml +244 -0
  249. package/dist/blocks/TimelineList/tests.yaml +251 -0
  250. package/dist/blocks/Title/gallery.yaml +483 -0
  251. package/dist/blocks/Title/tests/Title.e2e.yaml +180 -0
  252. package/dist/blocks/Title/tests.yaml +175 -0
  253. package/dist/blocks/TitleInput/gallery.yaml +1006 -0
  254. package/dist/blocks/TitleInput/tests/TitleInput.e2e.yaml +195 -0
  255. package/dist/blocks/TitleInput/tests.yaml +181 -0
  256. package/dist/blocks/Tooltip/gallery.yaml +1214 -0
  257. package/dist/blocks/Tooltip/tests/Tooltip.e2e.yaml +195 -0
  258. package/dist/blocks/Tooltip/tests.yaml +92 -0
  259. package/dist/blocks/Tour/gallery.yaml +2305 -0
  260. package/dist/blocks/Tour/tests/Tour.e2e.yaml +90 -0
  261. package/dist/blocks/Tour/tests.yaml +151 -0
  262. package/dist/blocks/TreeInput/gallery.yaml +78 -0
  263. package/dist/blocks/TreeInput/tests/TreeInput.e2e.yaml +139 -0
  264. package/dist/blocks/TreeInput/tests.yaml +140 -0
  265. package/dist/blocks/TreeMultipleSelector/gallery.yaml +67 -0
  266. package/dist/blocks/TreeSelector/gallery.yaml +81 -0
  267. package/dist/blocks/Watermark/gallery.yaml +479 -0
  268. package/dist/blocks/Watermark/tests/Watermark.e2e.yaml +62 -0
  269. package/dist/blocks/Watermark/tests.yaml +86 -0
  270. package/dist/blocks/WeekSelector/WeekSelector.js +6 -0
  271. package/dist/blocks/WeekSelector/e2e.js +26 -2
  272. package/dist/blocks/WeekSelector/gallery.yaml +589 -0
  273. package/dist/blocks/WeekSelector/meta.js +6 -0
  274. package/dist/blocks/WeekSelector/tests/WeekSelector.e2e.yaml +154 -0
  275. package/dist/blocks/WeekSelector/tests.yaml +122 -0
  276. package/dist/blocks.js +2 -0
  277. package/dist/disabledDate.js +91 -19
  278. package/dist/e2e.js +2 -0
  279. package/dist/getPresets.js +151 -0
  280. package/dist/getTagColor.js +44 -0
  281. package/dist/getTagSelectorOptions.js +30 -0
  282. package/dist/metas.js +2 -0
  283. package/dist/pickerPresetsStyle.css +26 -0
  284. package/dist/schemas/disabledDates.js +6 -2
  285. package/dist/schemas/index.js +1 -0
  286. package/dist/schemas/presets.js +111 -0
  287. package/dist/tagSelectorStyle.css +68 -0
  288. package/package.json +13 -13
@@ -0,0 +1,173 @@
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: tag
16
+ type: Box
17
+
18
+ blocks:
19
+ # ============================================
20
+ # BASIC RENDERING
21
+ # ============================================
22
+
23
+ - id: tag_basic
24
+ type: Tag
25
+ properties:
26
+ title: Basic Tag
27
+
28
+ - id: tag_no_title
29
+ type: Tag
30
+
31
+ # ============================================
32
+ # PROPERTY TESTS
33
+ # ============================================
34
+
35
+ - id: tag_color_preset
36
+ type: Tag
37
+ properties:
38
+ title: Success Tag
39
+ color: success
40
+
41
+ - id: tag_color_warning
42
+ type: Tag
43
+ properties:
44
+ title: Warning Tag
45
+ color: warning
46
+
47
+ - id: tag_color_error
48
+ type: Tag
49
+ properties:
50
+ title: Error Tag
51
+ color: error
52
+
53
+ - id: tag_color_processing
54
+ type: Tag
55
+ properties:
56
+ title: Processing Tag
57
+ color: processing
58
+
59
+ - id: tag_color_custom
60
+ type: Tag
61
+ properties:
62
+ title: Custom Color
63
+ color: '#ff5500'
64
+
65
+ - id: tag_closable
66
+ type: Tag
67
+ properties:
68
+ title: Closable Tag
69
+ closable: true
70
+
71
+ - id: tag_with_icon
72
+ type: Tag
73
+ properties:
74
+ title: With Icon
75
+ icon: AiOutlineUser
76
+
77
+ - id: tag_html_title
78
+ type: Tag
79
+ properties:
80
+ title: '<strong>Bold</strong> Tag'
81
+
82
+ # ============================================
83
+ # EVENT TESTS
84
+ # ============================================
85
+
86
+ - id: tag_onclick
87
+ type: Tag
88
+ properties:
89
+ title: Click Me
90
+ events:
91
+ onClick:
92
+ - id: set_onclick
93
+ type: SetState
94
+ params:
95
+ tag_onclick_fired: true
96
+
97
+ - id: onclick_display
98
+ type: Span
99
+ properties:
100
+ content:
101
+ _if:
102
+ test:
103
+ _eq:
104
+ - _state: tag_onclick_fired
105
+ - true
106
+ then: Tag clicked
107
+ else: ''
108
+
109
+ - id: tag_onclose
110
+ type: Tag
111
+ properties:
112
+ title: Close Me
113
+ closable: true
114
+ events:
115
+ onClose:
116
+ - id: set_onclose
117
+ type: SetState
118
+ params:
119
+ tag_onclose_fired: true
120
+
121
+ - id: onclose_display
122
+ type: Span
123
+ properties:
124
+ content:
125
+ _if:
126
+ test:
127
+ _eq:
128
+ - _state: tag_onclose_fired
129
+ - true
130
+ then: Tag closed
131
+ else: ''
132
+
133
+ - id: tag_shortcut
134
+ type: Tag
135
+ properties:
136
+ title: Filter
137
+ events:
138
+ onClick:
139
+ shortcut: mod+f
140
+ try:
141
+ - id: filter_action
142
+ type: SetState
143
+ params:
144
+ filter_toggled: true
145
+
146
+ # ============================================
147
+ # SHORTCUT KEYBOARD TESTS
148
+ # ============================================
149
+
150
+ - id: tag_shortcut_fires
151
+ type: Tag
152
+ properties:
153
+ title: Toggle
154
+ events:
155
+ onClick:
156
+ shortcut: mod+j
157
+ try:
158
+ - id: set_tag_shortcut_fired
159
+ type: SetState
160
+ params:
161
+ tag_shortcut_fired: true
162
+
163
+ - id: tag_shortcut_fired_display
164
+ type: Span
165
+ properties:
166
+ content:
167
+ _if:
168
+ test:
169
+ _not:
170
+ _not:
171
+ _state: tag_shortcut_fired
172
+ then: 'shortcut:fired'
173
+ else: ''
@@ -0,0 +1,51 @@
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: Tag
17
+ - id: title
18
+ type: Tag
19
+ properties:
20
+ title: The title
21
+ - id: html
22
+ type: Tag
23
+ properties:
24
+ title: |
25
+ <span style="color: red;">Red</span>
26
+ <span style="color: green;">Blue</span>
27
+ - id: reset_color
28
+ type: Tag
29
+ properties:
30
+ color: red
31
+ - id: hex_color
32
+ type: Tag
33
+ properties:
34
+ color: '#040'
35
+ - id: hex_light_color
36
+ type: Tag
37
+ properties:
38
+ color: '#afb'
39
+ - id: style
40
+ type: Tag
41
+ properties:
42
+ style:
43
+ fontSize: 1.3em
44
+ - id: closable
45
+ type: Tag
46
+ properties:
47
+ closable: true
48
+ - id: icon
49
+ type: Tag
50
+ properties:
51
+ icon: AiOutlineSave
@@ -0,0 +1,53 @@
1
+ /*
2
+ Copyright 2020-2026 Lowdefy, Inc
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ */ import React from 'react';
16
+ import { withBlockDefaults } from '@lowdefy/block-utils';
17
+ import { type } from '@lowdefy/helpers';
18
+ import TagPillRow from '../../TagPillRow.js';
19
+ import getTagSelectorOptions from '../../getTagSelectorOptions.js';
20
+ // Multi-select tag input: `value` is the array of selected option values.
21
+ // Clicking a pill toggles it in or out of the selection. Purely controlled —
22
+ // the selection is read from props each render. See TagPillRow for the shared
23
+ // rendering/color logic and TagSelector for the single-select variant whose
24
+ // value is one option value.
25
+ const TagMultipleSelector = (props)=>{
26
+ const { loading, methods, properties, value } = props;
27
+ const options = getTagSelectorOptions({
28
+ options: properties.options
29
+ });
30
+ const selected = type.isArray(value) ? value : [];
31
+ const isSelected = (optionValue)=>selected.includes(optionValue);
32
+ const onToggle = (option)=>{
33
+ if (option.disabled || properties.disabled || loading) return;
34
+ const next = selected.includes(option.value) ? selected.filter((v)=>v !== option.value) : [
35
+ ...selected,
36
+ option.value
37
+ ];
38
+ methods.setValue(next);
39
+ methods.triggerEvent({
40
+ name: 'onChange',
41
+ event: {
42
+ value: next
43
+ }
44
+ });
45
+ };
46
+ return /*#__PURE__*/ React.createElement(TagPillRow, {
47
+ ...props,
48
+ options: options,
49
+ isSelected: isSelected,
50
+ onToggle: onToggle
51
+ });
52
+ };
53
+ export default withBlockDefaults(TagMultipleSelector);
@@ -0,0 +1,36 @@
1
+ /*
2
+ Copyright 2020-2026 Lowdefy, Inc
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ */ import { createBlockHelper, escapeId } from '@lowdefy/e2e-utils';
16
+ import { expect } from '@playwright/test';
17
+ const locator = (page, blockId)=>page.locator(`#${escapeId(blockId)}_input`);
18
+ export default createBlockHelper({
19
+ locator,
20
+ do: {
21
+ select: (page, blockId, text)=>locator(page, blockId).locator('.lf-tag-selector-tag').filter({
22
+ hasText: text
23
+ }).click()
24
+ },
25
+ expect: {
26
+ value: (page, blockId, text)=>expect(locator(page, blockId).locator('.lf-tag-selector-tag-selected').filter({
27
+ hasText: text
28
+ })).toBeVisible(),
29
+ disabled: (page, blockId, text)=>expect(locator(page, blockId).locator('.lf-tag-selector-tag').filter({
30
+ hasText: text
31
+ })).toBeDisabled(),
32
+ enabled: (page, blockId, text)=>expect(locator(page, blockId).locator('.lf-tag-selector-tag').filter({
33
+ hasText: text
34
+ })).toBeEnabled()
35
+ }
36
+ });
@@ -0,0 +1,70 @@
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
+ - title: Basic String Options
16
+ blocks:
17
+ - id: basic_strings
18
+ type: TagMultipleSelector
19
+ properties:
20
+ title: Domains
21
+ options:
22
+ - Ethics
23
+ - Environment
24
+ - Governance
25
+ - Social
26
+ - Data Privacy
27
+
28
+ - title: Label-Value Options
29
+ blocks:
30
+ - id: label_value
31
+ type: TagMultipleSelector
32
+ properties:
33
+ title: Status Filter
34
+ options:
35
+ - label: Draft
36
+ value: draft
37
+ - label: In Review
38
+ value: in_review
39
+ - label: Published
40
+ value: published
41
+ - label: Archived
42
+ value: archived
43
+ disabled: true
44
+
45
+ - title: Explicit Colors and Single Accent
46
+ blocks:
47
+ - id: explicit_colors
48
+ type: TagMultipleSelector
49
+ properties:
50
+ title: Priorities
51
+ options:
52
+ - label: Low
53
+ value: low
54
+ color: '#59A14F'
55
+ - label: Medium
56
+ value: medium
57
+ color: '#EDC948'
58
+ - label: High
59
+ value: high
60
+ color: '#E15759'
61
+ - id: single_accent
62
+ type: TagMultipleSelector
63
+ properties:
64
+ title: Interests
65
+ colored: false
66
+ options:
67
+ - Design
68
+ - Engineering
69
+ - Product
70
+ - Research
@@ -0,0 +1,91 @@
1
+ /*
2
+ Copyright 2020-2026 Lowdefy, Inc
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ */ import LabelMeta from '../Label/meta.js';
16
+ import label from '../../schemas/label.js';
17
+ import { disabled, inputTitle, sizeSmallDefaultLarge } from '../../schemas/inputProperties.js';
18
+ export default {
19
+ category: 'input',
20
+ valueType: 'array',
21
+ icons: [
22
+ ...LabelMeta.icons
23
+ ],
24
+ cssKeys: {
25
+ element: 'The TagMultipleSelector tag row.',
26
+ tag: 'Each tag pill.',
27
+ label: 'The TagMultipleSelector label.',
28
+ extra: 'The TagMultipleSelector extra content.',
29
+ feedback: 'The TagMultipleSelector validation feedback.'
30
+ },
31
+ events: {
32
+ onChange: {
33
+ description: 'Trigger actions when the selection is changed.',
34
+ event: {
35
+ value: 'The array of selected values.'
36
+ }
37
+ },
38
+ onTooltipClick: 'Trigger actions when the tooltip icon is clicked.'
39
+ },
40
+ properties: {
41
+ type: 'object',
42
+ additionalProperties: false,
43
+ properties: {
44
+ options: {
45
+ type: 'array',
46
+ description: 'Options to select from. Primitives, or { label, value, color, disabled } - an explicit color overrides the stable palette color.',
47
+ items: {
48
+ type: [
49
+ 'string',
50
+ 'number',
51
+ 'boolean',
52
+ 'object'
53
+ ],
54
+ properties: {
55
+ label: {
56
+ type: 'string',
57
+ description: 'Tag label. Defaults to the value.'
58
+ },
59
+ value: {
60
+ description: 'Option value written into the selection array.',
61
+ docs: {
62
+ displayType: 'yaml'
63
+ }
64
+ },
65
+ color: {
66
+ type: 'string',
67
+ description: 'Explicit tag color (hex or CSS color). Overrides the stable palette color.',
68
+ docs: {
69
+ displayType: 'color'
70
+ }
71
+ },
72
+ disabled: {
73
+ type: 'boolean',
74
+ default: false,
75
+ description: 'Disable this tag.'
76
+ }
77
+ }
78
+ }
79
+ },
80
+ colored: {
81
+ type: 'boolean',
82
+ default: true,
83
+ description: 'Give each option a stable color (hash of its value over a fixed palette). false = single primary accent.'
84
+ },
85
+ disabled,
86
+ size: sizeSmallDefaultLarge,
87
+ label,
88
+ title: inputTitle
89
+ }
90
+ }
91
+ };
@@ -0,0 +1,93 @@
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: tag_multiple_selector
16
+ type: Box
17
+
18
+ blocks:
19
+ # ============================================
20
+ # BASIC RENDERING
21
+ # ============================================
22
+
23
+ - id: tms_basic
24
+ type: TagMultipleSelector
25
+ properties:
26
+ label:
27
+ disabled: true
28
+ options:
29
+ - Ethics
30
+ - Environment
31
+ - Governance
32
+
33
+ # ============================================
34
+ # EVENT / SELECTION TESTS
35
+ # ============================================
36
+
37
+ - id: tms_change
38
+ type: TagMultipleSelector
39
+ properties:
40
+ label:
41
+ disabled: true
42
+ options:
43
+ - label: Option A
44
+ value: a
45
+ - label: Option B
46
+ value: b
47
+ events:
48
+ onChange:
49
+ - id: set_tms_result
50
+ type: SetState
51
+ params:
52
+ tms_result:
53
+ _event: value
54
+
55
+ - id: tms_change_display
56
+ type: Paragraph
57
+ properties:
58
+ content:
59
+ _if:
60
+ test:
61
+ _ne:
62
+ - _state: tms_result
63
+ - null
64
+ then:
65
+ _json.stringify:
66
+ - _state: tms_result
67
+ else: ''
68
+
69
+ # ============================================
70
+ # DISABLED TESTS
71
+ # ============================================
72
+
73
+ - id: tms_disabled
74
+ type: TagMultipleSelector
75
+ properties:
76
+ label:
77
+ disabled: true
78
+ disabled: true
79
+ options:
80
+ - X
81
+ - Y
82
+
83
+ - id: tms_disabled_option
84
+ type: TagMultipleSelector
85
+ properties:
86
+ label:
87
+ disabled: true
88
+ options:
89
+ - label: Enabled
90
+ value: enabled
91
+ - label: Locked
92
+ value: locked
93
+ disabled: true
@@ -0,0 +1,49 @@
1
+ /*
2
+ Copyright 2020-2026 Lowdefy, Inc
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ */ import React from 'react';
16
+ import { withBlockDefaults } from '@lowdefy/block-utils';
17
+ import { type } from '@lowdefy/helpers';
18
+ import TagPillRow from '../../TagPillRow.js';
19
+ import getTagSelectorOptions from '../../getTagSelectorOptions.js';
20
+ // Single-select tag input: `value` is one option value (or null). Clicking a
21
+ // pill selects it; clicking the already-selected pill clears the value. Purely
22
+ // controlled — the value is read from props each render. See TagPillRow for the
23
+ // shared rendering/color logic and TagMultipleSelector for the multi-select
24
+ // variant whose value is the array of selected values.
25
+ const TagSelector = (props)=>{
26
+ const { loading, methods, properties, value } = props;
27
+ const options = getTagSelectorOptions({
28
+ options: properties.options
29
+ });
30
+ const isSelected = (optionValue)=>!type.isNone(value) && value === optionValue;
31
+ const onToggle = (option)=>{
32
+ if (option.disabled || properties.disabled || loading) return;
33
+ const next = value === option.value ? null : option.value;
34
+ methods.setValue(next);
35
+ methods.triggerEvent({
36
+ name: 'onChange',
37
+ event: {
38
+ value: next
39
+ }
40
+ });
41
+ };
42
+ return /*#__PURE__*/ React.createElement(TagPillRow, {
43
+ ...props,
44
+ options: options,
45
+ isSelected: isSelected,
46
+ onToggle: onToggle
47
+ });
48
+ };
49
+ export default withBlockDefaults(TagSelector);
@@ -0,0 +1,36 @@
1
+ /*
2
+ Copyright 2020-2026 Lowdefy, Inc
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ */ import { createBlockHelper, escapeId } from '@lowdefy/e2e-utils';
16
+ import { expect } from '@playwright/test';
17
+ const locator = (page, blockId)=>page.locator(`#${escapeId(blockId)}_input`);
18
+ export default createBlockHelper({
19
+ locator,
20
+ do: {
21
+ select: (page, blockId, text)=>locator(page, blockId).locator('.lf-tag-selector-tag').filter({
22
+ hasText: text
23
+ }).click()
24
+ },
25
+ expect: {
26
+ value: (page, blockId, text)=>expect(locator(page, blockId).locator('.lf-tag-selector-tag-selected').filter({
27
+ hasText: text
28
+ })).toBeVisible(),
29
+ disabled: (page, blockId, text)=>expect(locator(page, blockId).locator('.lf-tag-selector-tag').filter({
30
+ hasText: text
31
+ })).toBeDisabled(),
32
+ enabled: (page, blockId, text)=>expect(locator(page, blockId).locator('.lf-tag-selector-tag').filter({
33
+ hasText: text
34
+ })).toBeEnabled()
35
+ }
36
+ });