@lowdefy/blocks-antd 4.7.3 → 5.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.
- package/dist/blocks/Affix/Affix.js +6 -12
- package/dist/blocks/Affix/{schema.js → meta.js} +23 -14
- package/dist/blocks/Alert/Alert.js +17 -12
- package/dist/blocks/Alert/e2e.js +1 -1
- package/dist/blocks/Alert/meta.js +186 -0
- package/dist/blocks/AutoComplete/AutoComplete.js +21 -22
- package/dist/blocks/AutoComplete/meta.js +266 -0
- package/dist/blocks/Avatar/Avatar.js +58 -18
- package/dist/blocks/Avatar/meta.js +277 -0
- package/dist/blocks/Badge/Badge.js +13 -12
- package/dist/blocks/Badge/{schema.js → meta.js} +80 -1
- package/dist/blocks/Breadcrumb/Breadcrumb.js +40 -41
- package/dist/blocks/Breadcrumb/meta.js +90 -0
- package/dist/blocks/Button/Button.js +77 -39
- package/dist/blocks/Button/meta.js +230 -0
- package/dist/blocks/ButtonSelector/ButtonSelector.js +54 -59
- package/dist/blocks/ButtonSelector/meta.js +213 -0
- package/dist/blocks/Calendar/Calendar.js +153 -0
- package/dist/blocks/Calendar/e2e.js +27 -0
- package/dist/blocks/Calendar/meta.js +148 -0
- package/dist/blocks/Card/Card.js +22 -21
- package/dist/blocks/Card/meta.js +170 -0
- package/dist/blocks/Carousel/Carousel.js +6 -12
- package/dist/blocks/Carousel/{schema.js → meta.js} +61 -22
- package/dist/blocks/CheckboxSelector/CheckboxSelector.js +58 -64
- package/dist/blocks/CheckboxSelector/meta.js +150 -0
- package/dist/blocks/CheckboxSwitch/CheckboxSwitch.js +38 -44
- package/dist/blocks/CheckboxSwitch/meta.js +183 -0
- package/dist/blocks/Collapse/Collapse.js +21 -12
- package/dist/blocks/Collapse/meta.js +179 -0
- package/dist/blocks/ColorSelector/ColorSelector.js +97 -0
- package/dist/blocks/ColorSelector/e2e.js +32 -0
- package/dist/blocks/ColorSelector/meta.js +250 -0
- package/dist/blocks/ConfigProvider/ConfigProvider.js +51 -0
- package/dist/blocks/{Alert/style.less → ConfigProvider/e2e.js} +5 -3
- package/dist/blocks/{ControlledList/schema.js → ConfigProvider/meta.js} +43 -45
- package/dist/blocks/ConfirmModal/ConfirmModal.js +45 -25
- package/dist/blocks/ConfirmModal/{schema.js → meta.js} +93 -35
- package/dist/blocks/Content/Content.js +5 -12
- package/dist/blocks/{Layout/schema.js → Content/meta.js} +11 -3
- package/dist/blocks/ControlledList/ControlledList.js +42 -54
- package/dist/blocks/ControlledList/meta.js +158 -0
- package/dist/blocks/DateRangeSelector/DateRangeSelector.js +31 -29
- package/dist/blocks/DateRangeSelector/meta.js +297 -0
- package/dist/blocks/DateSelector/DateSelector.js +28 -28
- package/dist/blocks/DateSelector/meta.js +241 -0
- package/dist/blocks/DateTimeSelector/DateTimeSelector.js +28 -28
- package/dist/blocks/DateTimeSelector/meta.js +282 -0
- package/dist/blocks/Descriptions/Descriptions.js +20 -22
- package/dist/blocks/Descriptions/{schema.js → meta.js} +71 -15
- package/dist/blocks/Divider/Divider.js +8 -14
- package/dist/blocks/Divider/meta.js +86 -0
- package/dist/blocks/Drawer/Drawer.js +23 -16
- package/dist/blocks/Drawer/{schema.js → meta.js} +62 -61
- package/dist/blocks/DropdownButton/DropdownButton.js +221 -0
- package/dist/blocks/DropdownButton/e2e.js +30 -0
- package/dist/blocks/DropdownButton/meta.js +317 -0
- package/dist/blocks/DropdownMenu/DropdownMenu.js +130 -0
- package/dist/blocks/DropdownMenu/e2e.js +28 -0
- package/dist/blocks/DropdownMenu/meta.js +322 -0
- package/dist/blocks/Flex/Flex.js +31 -0
- package/dist/blocks/{Comment → Flex}/e2e.js +1 -2
- package/dist/blocks/Flex/meta.js +115 -0
- package/dist/blocks/FloatButton/FloatButton.js +46 -0
- package/dist/blocks/FloatButton/e2e.js +28 -0
- package/dist/blocks/FloatButton/meta.js +156 -0
- package/dist/blocks/Footer/Footer.js +8 -17
- package/dist/blocks/{Header/schema.js → Footer/meta.js} +11 -12
- package/dist/blocks/Header/Header.js +38 -18
- package/dist/blocks/Header/meta.js +318 -0
- package/dist/blocks/Label/Label.js +19 -27
- package/dist/blocks/Label/labelLogic.js +37 -41
- package/dist/blocks/Label/meta.js +148 -0
- package/dist/blocks/Label/style.module.css +185 -0
- package/dist/blocks/Layout/Layout.js +10 -13
- package/dist/blocks/{Content/schema.js → Layout/meta.js} +11 -3
- package/dist/blocks/Masonry/Masonry.js +37 -0
- package/dist/blocks/{Affix/style.less → Masonry/e2e.js} +9 -3
- package/dist/blocks/Masonry/meta.js +86 -0
- package/dist/blocks/MasonryList/MasonryList.js +42 -0
- package/dist/blocks/{AutoComplete/style.less → MasonryList/e2e.js} +9 -3
- package/dist/blocks/MasonryList/meta.js +86 -0
- package/dist/blocks/Menu/Menu.js +153 -124
- package/dist/blocks/Menu/meta.js +544 -0
- package/dist/blocks/Message/Message.js +18 -16
- package/dist/blocks/Message/{schema.js → meta.js} +29 -14
- package/dist/blocks/MobileMenu/MobileMenu.js +28 -23
- package/dist/blocks/MobileMenu/{schema.js → meta.js} +48 -31
- package/dist/blocks/Modal/Modal.js +20 -16
- package/dist/blocks/Modal/meta.js +234 -0
- package/dist/blocks/MonthSelector/MonthSelector.js +30 -30
- package/dist/blocks/MonthSelector/meta.js +260 -0
- package/dist/blocks/MultipleSelector/MultipleSelector.js +57 -37
- package/dist/blocks/MultipleSelector/{schema.js → meta.js} +178 -151
- package/dist/blocks/Notification/Notification.js +39 -23
- package/dist/blocks/Notification/{schema.js → meta.js} +36 -22
- package/dist/blocks/NumberInput/NumberInput.js +12 -21
- package/dist/blocks/NumberInput/meta.js +250 -0
- package/dist/blocks/PageHeaderMenu/PageHeaderMenu.js +137 -189
- package/dist/blocks/PageHeaderMenu/meta.js +420 -0
- package/dist/blocks/PageSidebarLayout/PageSidebarLayout.js +511 -0
- package/dist/blocks/PageSidebarLayout/e2e.js +34 -0
- package/dist/blocks/PageSidebarLayout/meta.js +516 -0
- package/dist/blocks/PageSiderMenu/PageSiderMenu.js +188 -196
- package/dist/blocks/PageSiderMenu/meta.js +486 -0
- package/dist/blocks/Pagination/Pagination.js +6 -15
- package/dist/blocks/Pagination/meta.js +233 -0
- package/dist/blocks/Paragraph/Paragraph.js +28 -16
- package/dist/blocks/Paragraph/{schema.js → meta.js} +68 -18
- package/dist/blocks/ParagraphInput/ParagraphInput.js +34 -17
- package/dist/blocks/ParagraphInput/{schema.js → meta.js} +134 -18
- package/dist/blocks/PasswordInput/PasswordInput.js +9 -16
- package/dist/blocks/PasswordInput/meta.js +195 -0
- package/dist/blocks/PhoneNumberInput/PhoneNumberInput.js +37 -33
- package/dist/blocks/PhoneNumberInput/formatPhoneNumber.js +25 -0
- package/dist/blocks/PhoneNumberInput/meta.js +225 -0
- package/dist/blocks/PhoneNumberInput/upstream-formatting-spec.md +173 -0
- package/dist/blocks/Popover/Popover.js +7 -12
- package/dist/blocks/Popover/{schema.js → meta.js} +81 -11
- package/dist/blocks/Progress/Progress.js +7 -12
- package/dist/blocks/Progress/{schema.js → meta.js} +74 -4
- package/dist/blocks/QRCode/QRCode.js +39 -0
- package/dist/blocks/{Footer/schema.js → QRCode/e2e.js} +9 -15
- package/dist/blocks/QRCode/meta.js +152 -0
- package/dist/blocks/RadioSelector/RadioSelector.js +55 -63
- package/dist/blocks/RadioSelector/meta.js +179 -0
- package/dist/blocks/RatingSlider/RatingSlider.js +95 -103
- package/dist/blocks/RatingSlider/meta.js +221 -0
- package/dist/blocks/Result/Result.js +13 -12
- package/dist/blocks/Result/meta.js +129 -0
- package/dist/blocks/Search/Search.js +135 -0
- package/dist/blocks/Search/SearchHighlight.js +33 -0
- package/dist/blocks/Search/SearchModal.js +171 -0
- package/dist/blocks/Search/SearchResults.js +129 -0
- package/dist/blocks/Search/meta.js +258 -0
- package/dist/blocks/Search/style.module.css +96 -0
- package/dist/blocks/Search/useListKeyboardNav.js +45 -0
- package/dist/blocks/Search/useRecentSearches.js +77 -0
- package/dist/blocks/Search/useSearchIndex.js +144 -0
- package/dist/blocks/SegmentedSelector/SegmentedSelector.js +93 -0
- package/dist/blocks/SegmentedSelector/e2e.js +32 -0
- package/dist/blocks/SegmentedSelector/meta.js +222 -0
- package/dist/blocks/Selector/Selector.js +41 -30
- package/dist/blocks/Selector/meta.js +380 -0
- package/dist/blocks/Sider/Sider.js +19 -18
- package/dist/blocks/Sider/{schema.js → meta.js} +20 -34
- package/dist/blocks/Slider/Slider.js +8 -20
- package/dist/blocks/Slider/meta.js +226 -0
- package/dist/blocks/Splitter/Splitter.js +70 -0
- package/dist/blocks/Splitter/e2e.js +24 -0
- package/dist/blocks/Splitter/meta.js +193 -0
- package/dist/blocks/Statistic/Statistic.js +26 -15
- package/dist/blocks/Statistic/{schema.js → meta.js} +41 -4
- package/dist/blocks/Steps/Steps.js +94 -0
- package/dist/blocks/Steps/e2e.js +31 -0
- package/dist/blocks/Steps/meta.js +246 -0
- package/dist/blocks/Switch/Switch.js +59 -54
- package/dist/blocks/Switch/meta.js +178 -0
- package/dist/blocks/Tabs/Tabs.js +49 -18
- package/dist/blocks/Tabs/meta.js +258 -0
- package/dist/blocks/Tag/Tag.js +17 -15
- package/dist/blocks/Tag/{schema.js → meta.js} +35 -13
- package/dist/blocks/TextArea/TextArea.js +10 -16
- package/dist/blocks/TextArea/meta.js +255 -0
- package/dist/blocks/TextInput/TextInput.js +23 -18
- package/dist/blocks/TextInput/meta.js +286 -0
- package/dist/blocks/TimelineList/TimelineList.js +29 -27
- package/dist/blocks/TimelineList/{schema.js → meta.js} +45 -8
- package/dist/blocks/Title/Title.js +34 -21
- package/dist/blocks/Title/{schema.js → meta.js} +117 -14
- package/dist/blocks/TitleInput/TitleInput.js +43 -25
- package/dist/blocks/TitleInput/{schema.js → meta.js} +156 -18
- package/dist/blocks/Tooltip/Tooltip.js +16 -16
- package/dist/blocks/Tooltip/{schema.js → meta.js} +74 -19
- package/dist/blocks/Tour/Tour.js +75 -0
- package/dist/blocks/Tour/e2e.js +31 -0
- package/dist/blocks/Tour/meta.js +255 -0
- package/dist/blocks/TreeSelector/TreeSelector.js +6 -12
- package/dist/blocks/TreeSelector/{schema.js → meta.js} +134 -25
- package/dist/blocks/Watermark/Watermark.js +34 -0
- package/dist/blocks/Watermark/e2e.js +23 -0
- package/dist/blocks/Watermark/meta.js +148 -0
- package/dist/blocks/WeekSelector/WeekSelector.js +35 -31
- package/dist/blocks/WeekSelector/meta.js +269 -0
- package/dist/blocks/buildMenuItems.js +95 -0
- package/dist/blocks/headerActions.js +220 -0
- package/dist/blocks/useItemShortcuts.js +64 -0
- package/dist/blocks/withTheme.js +40 -0
- package/dist/blocks.js +17 -1
- package/dist/disabledDate.js +15 -7
- package/dist/e2e.js +4 -1
- package/dist/metas.js +92 -0
- package/dist/schemas/breadcrumbList.js +64 -0
- package/dist/schemas/disabledDates.js +83 -0
- package/dist/{blocks/Avatar/style.less → schemas/icon.js} +10 -3
- package/dist/schemas/index.js +21 -0
- package/dist/schemas/inputProperties.js +70 -0
- package/dist/schemas/label.js +62 -0
- package/dist/schemas/menuLinks.js +49 -0
- package/dist/schemas/options.js +84 -0
- package/dist/types.js +4 -18
- package/package.json +19 -17
- package/dist/blocks/Affix/schema.json +0 -34
- package/dist/blocks/Alert/schema.js +0 -84
- package/dist/blocks/Alert/schema.json +0 -62
- package/dist/blocks/AutoComplete/schema.js +0 -181
- package/dist/blocks/AutoComplete/schema.json +0 -160
- package/dist/blocks/Avatar/schema.js +0 -98
- package/dist/blocks/Avatar/schema.json +0 -71
- package/dist/blocks/Badge/schema.json +0 -70
- package/dist/blocks/Badge/style.less +0 -17
- package/dist/blocks/Breadcrumb/schema.js +0 -95
- package/dist/blocks/Breadcrumb/schema.json +0 -78
- package/dist/blocks/Breadcrumb/style.less +0 -17
- package/dist/blocks/Button/schema.js +0 -123
- package/dist/blocks/Button/schema.json +0 -91
- package/dist/blocks/Button/style.less +0 -17
- package/dist/blocks/ButtonSelector/schema.js +0 -214
- package/dist/blocks/ButtonSelector/schema.json +0 -188
- package/dist/blocks/ButtonSelector/style.less +0 -18
- package/dist/blocks/Card/schema.js +0 -75
- package/dist/blocks/Card/schema.json +0 -58
- package/dist/blocks/Card/style.less +0 -17
- package/dist/blocks/Carousel/schema.json +0 -183
- package/dist/blocks/Carousel/style.less +0 -17
- package/dist/blocks/CheckboxSelector/schema.js +0 -220
- package/dist/blocks/CheckboxSelector/schema.json +0 -193
- package/dist/blocks/CheckboxSelector/style.less +0 -19
- package/dist/blocks/CheckboxSwitch/schema.js +0 -122
- package/dist/blocks/CheckboxSwitch/schema.json +0 -105
- package/dist/blocks/CheckboxSwitch/style.less +0 -19
- package/dist/blocks/Collapse/schema.js +0 -110
- package/dist/blocks/Collapse/schema.json +0 -90
- package/dist/blocks/Collapse/style.less +0 -17
- package/dist/blocks/Comment/Comment.js +0 -56
- package/dist/blocks/Comment/schema.js +0 -56
- package/dist/blocks/Comment/schema.json +0 -39
- package/dist/blocks/Comment/style.less +0 -18
- package/dist/blocks/ConfirmModal/schema.json +0 -122
- package/dist/blocks/ConfirmModal/style.less +0 -17
- package/dist/blocks/Content/schema.json +0 -16
- package/dist/blocks/Content/style.less +0 -17
- package/dist/blocks/ControlledList/schema.json +0 -73
- package/dist/blocks/ControlledList/style.less +0 -19
- package/dist/blocks/DateRangeSelector/schema.js +0 -266
- package/dist/blocks/DateRangeSelector/schema.json +0 -221
- package/dist/blocks/DateRangeSelector/style.less +0 -18
- package/dist/blocks/DateSelector/schema.js +0 -219
- package/dist/blocks/DateSelector/schema.json +0 -183
- package/dist/blocks/DateSelector/style.less +0 -18
- package/dist/blocks/DateTimeSelector/schema.js +0 -251
- package/dist/blocks/DateTimeSelector/schema.json +0 -215
- package/dist/blocks/DateTimeSelector/style.less +0 -18
- package/dist/blocks/Descriptions/schema.json +0 -186
- package/dist/blocks/Descriptions/style.less +0 -17
- package/dist/blocks/Divider/schema.js +0 -56
- package/dist/blocks/Divider/schema.json +0 -35
- package/dist/blocks/Divider/style.less +0 -17
- package/dist/blocks/Drawer/schema.json +0 -121
- package/dist/blocks/Drawer/style.less +0 -17
- package/dist/blocks/Footer/schema.json +0 -16
- package/dist/blocks/Footer/style.less +0 -17
- package/dist/blocks/Header/schema.json +0 -22
- package/dist/blocks/Header/style.less +0 -17
- package/dist/blocks/Label/schema.js +0 -83
- package/dist/blocks/Label/schema.json +0 -62
- package/dist/blocks/Label/style.less +0 -34
- package/dist/blocks/Layout/schema.json +0 -16
- package/dist/blocks/Layout/style.less +0 -17
- package/dist/blocks/Menu/schema.js +0 -283
- package/dist/blocks/Menu/schema.json +0 -236
- package/dist/blocks/Menu/style.less +0 -17
- package/dist/blocks/Message/schema.json +0 -48
- package/dist/blocks/Message/style.less +0 -17
- package/dist/blocks/MobileMenu/schema.json +0 -236
- package/dist/blocks/MobileMenu/style.less +0 -19
- package/dist/blocks/Modal/schema.js +0 -142
- package/dist/blocks/Modal/schema.json +0 -125
- package/dist/blocks/Modal/style.less +0 -17
- package/dist/blocks/MonthSelector/schema.js +0 -219
- package/dist/blocks/MonthSelector/schema.json +0 -183
- package/dist/blocks/MonthSelector/style.less +0 -18
- package/dist/blocks/MultipleSelector/schema.json +0 -297
- package/dist/blocks/MultipleSelector/style.less +0 -19
- package/dist/blocks/Notification/schema.json +0 -85
- package/dist/blocks/Notification/style.less +0 -18
- package/dist/blocks/NumberInput/schema.js +0 -193
- package/dist/blocks/NumberInput/schema.json +0 -172
- package/dist/blocks/NumberInput/style.less +0 -18
- package/dist/blocks/PageHeaderMenu/schema.js +0 -241
- package/dist/blocks/PageHeaderMenu/schema.json +0 -215
- package/dist/blocks/PageHeaderMenu/style.less +0 -23
- package/dist/blocks/PageSiderMenu/schema.js +0 -321
- package/dist/blocks/PageSiderMenu/schema.json +0 -283
- package/dist/blocks/PageSiderMenu/style.less +0 -26
- package/dist/blocks/Pagination/schema.js +0 -101
- package/dist/blocks/Pagination/schema.json +0 -75
- package/dist/blocks/Pagination/style.less +0 -17
- package/dist/blocks/Paragraph/schema.json +0 -135
- package/dist/blocks/Paragraph/style.less +0 -18
- package/dist/blocks/ParagraphInput/schema.json +0 -162
- package/dist/blocks/ParagraphInput/style.less +0 -17
- package/dist/blocks/PasswordInput/schema.js +0 -152
- package/dist/blocks/PasswordInput/schema.json +0 -131
- package/dist/blocks/PasswordInput/style.less +0 -18
- package/dist/blocks/PhoneNumberInput/schema.js +0 -243
- package/dist/blocks/PhoneNumberInput/schema.json +0 -216
- package/dist/blocks/PhoneNumberInput/style.less +0 -33
- package/dist/blocks/Popover/schema.json +0 -86
- package/dist/blocks/Popover/style.less +0 -17
- package/dist/blocks/Progress/schema.json +0 -76
- package/dist/blocks/Progress/style.less +0 -17
- package/dist/blocks/RadioSelector/schema.js +0 -217
- package/dist/blocks/RadioSelector/schema.json +0 -190
- package/dist/blocks/RadioSelector/style.less +0 -19
- package/dist/blocks/RatingSlider/schema.js +0 -196
- package/dist/blocks/RatingSlider/schema.json +0 -169
- package/dist/blocks/RatingSlider/style.less +0 -19
- package/dist/blocks/Result/schema.js +0 -55
- package/dist/blocks/Result/schema.json +0 -30
- package/dist/blocks/Result/style.less +0 -17
- package/dist/blocks/Selector/schema.js +0 -287
- package/dist/blocks/Selector/schema.json +0 -258
- package/dist/blocks/Selector/style.less +0 -18
- package/dist/blocks/Sider/schema.json +0 -71
- package/dist/blocks/Sider/style.less +0 -17
- package/dist/blocks/Slider/style.less +0 -18
- package/dist/blocks/Statistic/schema.json +0 -74
- package/dist/blocks/Statistic/style.less +0 -17
- package/dist/blocks/Switch/schema.js +0 -162
- package/dist/blocks/Switch/schema.json +0 -136
- package/dist/blocks/Switch/style.less +0 -18
- package/dist/blocks/Tabs/schema.js +0 -124
- package/dist/blocks/Tabs/schema.json +0 -93
- package/dist/blocks/Tabs/style.less +0 -17
- package/dist/blocks/Tag/schema.json +0 -45
- package/dist/blocks/Tag/style.less +0 -17
- package/dist/blocks/TextArea/schema.js +0 -196
- package/dist/blocks/TextArea/schema.json +0 -172
- package/dist/blocks/TextArea/style.less +0 -18
- package/dist/blocks/TextInput/schema.js +0 -223
- package/dist/blocks/TextInput/schema.json +0 -189
- package/dist/blocks/TextInput/style.less +0 -18
- package/dist/blocks/TimelineList/schema.json +0 -65
- package/dist/blocks/TimelineList/style.less +0 -17
- package/dist/blocks/Title/schema.json +0 -136
- package/dist/blocks/Title/style.less +0 -18
- package/dist/blocks/TitleInput/schema.json +0 -171
- package/dist/blocks/TitleInput/style.less +0 -17
- package/dist/blocks/Tooltip/schema.json +0 -91
- package/dist/blocks/Tooltip/style.less +0 -17
- package/dist/blocks/TreeSelector/schema.json +0 -166
- package/dist/blocks/TreeSelector/style.less +0 -27
- package/dist/blocks/WeekSelector/schema.js +0 -219
- package/dist/blocks/WeekSelector/schema.json +0 -183
- package/dist/blocks/WeekSelector/style.less +0 -18
- package/dist/color.js +0 -85
- package/dist/schemas.js +0 -75
- package/dist/style.less +0 -17
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
# Upstream PhoneNumberInput Formatting to Lowdefy
|
|
2
|
+
|
|
3
|
+
## Background
|
|
4
|
+
|
|
5
|
+
The PRP project has two behavioral improvements to `PhoneNumberInput` that should be upstreamed into Lowdefy. Currently, Lowdefy does raw string concatenation to build the `phone_number` value (`` `${region?.dial_code ?? ''}${input}` ``), which produces malformed phone numbers when users type leading zeros or non-digit characters. It also stores the dial code as `phone_number` when the input is empty.
|
|
6
|
+
|
|
7
|
+
### Current behavior (Lowdefy) vs desired behavior (PRP)
|
|
8
|
+
|
|
9
|
+
With ZA (+27) dial code selected:
|
|
10
|
+
|
|
11
|
+
| User types | Current `phone_number` | Desired `phone_number` |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| `0821234567` | `+270821234567` | `+27821234567` |
|
|
14
|
+
| `(082) 123-4567` | `+27(082) 123-4567` | `+27821234567` |
|
|
15
|
+
| (empty) | `+27` | `""` |
|
|
16
|
+
|
|
17
|
+
## Changes
|
|
18
|
+
|
|
19
|
+
All paths relative to `packages/plugins/blocks/blocks-antd/src/blocks/PhoneNumberInput/`.
|
|
20
|
+
|
|
21
|
+
### A. Create `formatPhoneNumber.js`
|
|
22
|
+
|
|
23
|
+
New file. Strips non-digit characters and leading zeros from input before concatenating with the dial code. Returns empty string when the cleaned input is empty.
|
|
24
|
+
|
|
25
|
+
```js
|
|
26
|
+
const formatPhoneNumber = (dialCode = '', input) => {
|
|
27
|
+
// Strip all non-digit characters from input, then strip leading zeros
|
|
28
|
+
const cleanInput = (input || '').replace(/\D/g, '').replace(/^0+/, '');
|
|
29
|
+
|
|
30
|
+
// If the cleaned input is empty, return an empty string
|
|
31
|
+
if (cleanInput.length === 0) {
|
|
32
|
+
return '';
|
|
33
|
+
}
|
|
34
|
+
// Concatenate the cleaned dial code and input
|
|
35
|
+
return `${dialCode}${cleanInput}`;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export default formatPhoneNumber;
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### B. Update `PhoneNumberInput.js`
|
|
42
|
+
|
|
43
|
+
1. Add import at the top with the other imports:
|
|
44
|
+
|
|
45
|
+
```js
|
|
46
|
+
import formatPhoneNumber from './formatPhoneNumber.js';
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
2. Replace the two raw concatenation lines with `formatPhoneNumber` calls:
|
|
50
|
+
|
|
51
|
+
**In `AddOnSelect` onChange handler (line 78):**
|
|
52
|
+
|
|
53
|
+
```diff
|
|
54
|
+
- const phone_number = `${region?.dial_code ?? ''}${input}`;
|
|
55
|
+
+ const phone_number = formatPhoneNumber(region?.dial_code, input);
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**In main `Input` onChange handler (line 224):**
|
|
59
|
+
|
|
60
|
+
```diff
|
|
61
|
+
- const phone_number = `${region?.dial_code ?? ''}${input}`;
|
|
62
|
+
+ const phone_number = formatPhoneNumber(region?.dial_code, input);
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
3. Fix null initialization (line 163–169) — remove `phone_number` so the initial value doesn't store just a dial code as a phone number:
|
|
66
|
+
|
|
67
|
+
```diff
|
|
68
|
+
if (value === null) {
|
|
69
|
+
methods.setValue({
|
|
70
|
+
input: '',
|
|
71
|
+
region: allowedRegions[defaultValue],
|
|
72
|
+
- phone_number: allowedRegions[defaultValue].dial_code,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### C. Update e2e tests
|
|
78
|
+
|
|
79
|
+
**In `tests/PhoneNumberInput.e2e.yaml`**, add test blocks:
|
|
80
|
+
|
|
81
|
+
```yaml
|
|
82
|
+
- id: phone_format_test
|
|
83
|
+
type: PhoneNumberInput
|
|
84
|
+
properties:
|
|
85
|
+
title: Format Test
|
|
86
|
+
defaultRegion: ZA
|
|
87
|
+
allowedRegions:
|
|
88
|
+
- ZA
|
|
89
|
+
|
|
90
|
+
- id: format_display
|
|
91
|
+
type: Span
|
|
92
|
+
properties:
|
|
93
|
+
content:
|
|
94
|
+
_if:
|
|
95
|
+
test:
|
|
96
|
+
_ne:
|
|
97
|
+
- _state: phone_format_test.phone_number
|
|
98
|
+
- null
|
|
99
|
+
then:
|
|
100
|
+
_string.concat:
|
|
101
|
+
- 'Formatted: '
|
|
102
|
+
- _state: phone_format_test.phone_number
|
|
103
|
+
else: ''
|
|
104
|
+
|
|
105
|
+
- id: phone_empty_test
|
|
106
|
+
type: PhoneNumberInput
|
|
107
|
+
properties:
|
|
108
|
+
title: Empty Init Test
|
|
109
|
+
defaultRegion: ZA
|
|
110
|
+
allowedRegions:
|
|
111
|
+
- ZA
|
|
112
|
+
|
|
113
|
+
- id: empty_display
|
|
114
|
+
type: Span
|
|
115
|
+
properties:
|
|
116
|
+
content:
|
|
117
|
+
_if:
|
|
118
|
+
test:
|
|
119
|
+
_ne:
|
|
120
|
+
- _state: phone_empty_test
|
|
121
|
+
- null
|
|
122
|
+
then:
|
|
123
|
+
_string.concat:
|
|
124
|
+
- 'PhoneNumber: ['
|
|
125
|
+
- _state: phone_empty_test.phone_number
|
|
126
|
+
- ']'
|
|
127
|
+
else: 'null'
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**In `tests/PhoneNumberInput.e2e.spec.js`**, add tests:
|
|
131
|
+
|
|
132
|
+
```js
|
|
133
|
+
test('strips leading zeros from phone number value', async ({ page }) => {
|
|
134
|
+
const input = getInput(page, 'phone_format_test');
|
|
135
|
+
await input.fill('0821234567');
|
|
136
|
+
await expect(input).toHaveValue('0821234567');
|
|
137
|
+
|
|
138
|
+
const display = getBlock(page, 'format_display');
|
|
139
|
+
await expect(display).toHaveText('Formatted: +27821234567');
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
test('strips non-digit characters from phone number value', async ({ page }) => {
|
|
143
|
+
const input = getInput(page, 'phone_format_test');
|
|
144
|
+
await input.fill('(082) 123-4567');
|
|
145
|
+
await expect(input).toHaveValue('(082) 123-4567');
|
|
146
|
+
|
|
147
|
+
const display = getBlock(page, 'format_display');
|
|
148
|
+
await expect(display).toHaveText('Formatted: +27821234567');
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
test('empty input produces empty phone_number, not just dial code', async ({ page }) => {
|
|
152
|
+
const display = getBlock(page, 'empty_display');
|
|
153
|
+
// On init with no input, phone_number should not be set to "+27"
|
|
154
|
+
await expect(display).not.toContainText('+27');
|
|
155
|
+
});
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Files to modify
|
|
159
|
+
|
|
160
|
+
1. **New:** `formatPhoneNumber.js`
|
|
161
|
+
2. **Edit:** `PhoneNumberInput.js` — import + 2 line replacements + null init fix
|
|
162
|
+
3. **Edit:** `tests/PhoneNumberInput.e2e.yaml` — add formatting test blocks
|
|
163
|
+
4. **Edit:** `tests/PhoneNumberInput.e2e.spec.js` — add formatting tests
|
|
164
|
+
|
|
165
|
+
## Acceptance criteria
|
|
166
|
+
|
|
167
|
+
- Typing `0821234567` with +27 dial code produces `phone_number: "+27821234567"` (not `"+270821234567"`)
|
|
168
|
+
- Typing `(082) 123-4567` produces `phone_number: "+27821234567"`
|
|
169
|
+
- Empty input produces `phone_number: ""` (not `"+27"`)
|
|
170
|
+
- Initial null value does not set `phone_number` to the dial code
|
|
171
|
+
- The `input` field in the value object still stores exactly what the user typed (formatting only affects `phone_number`)
|
|
172
|
+
- All existing e2e tests pass
|
|
173
|
+
- New formatting tests pass
|
|
@@ -13,28 +13,23 @@
|
|
|
13
13
|
See the License for the specific language governing permissions and
|
|
14
14
|
limitations under the License.
|
|
15
15
|
*/ import React, { useState } from 'react';
|
|
16
|
-
import { blockDefaultProps } from '@lowdefy/block-utils';
|
|
17
16
|
import { Popover } from 'antd';
|
|
18
|
-
|
|
17
|
+
import { withBlockDefaults } from '@lowdefy/block-utils';
|
|
18
|
+
import withTheme from '../withTheme.js';
|
|
19
|
+
const PopoverBlock = ({ blockId, classNames = {}, content, methods, properties, styles = {} })=>{
|
|
19
20
|
const [elementId] = useState((0 | Math.random() * 9e2) + 1e2);
|
|
20
21
|
return /*#__PURE__*/ React.createElement(Popover, {
|
|
21
22
|
id: blockId,
|
|
22
23
|
...properties,
|
|
24
|
+
className: classNames.element,
|
|
23
25
|
content: content.popover && content.popover(),
|
|
24
26
|
onOpenChange: ()=>methods.triggerEvent({
|
|
25
27
|
name: 'onOpenChange'
|
|
26
28
|
}),
|
|
27
|
-
getPopupContainer: ()=>document.getElementById(`${blockId}_${elementId}_popup`)
|
|
29
|
+
getPopupContainer: ()=>document.getElementById(`${blockId}_${elementId}_popup`),
|
|
30
|
+
style: styles.element
|
|
28
31
|
}, content.content && content.content(), /*#__PURE__*/ React.createElement("div", {
|
|
29
32
|
id: `${blockId}_${elementId}_popup`
|
|
30
33
|
}));
|
|
31
34
|
};
|
|
32
|
-
|
|
33
|
-
PopoverBlock.meta = {
|
|
34
|
-
category: 'container',
|
|
35
|
-
icons: [],
|
|
36
|
-
styles: [
|
|
37
|
-
'blocks/Popover/style.less'
|
|
38
|
-
]
|
|
39
|
-
};
|
|
40
|
-
export default PopoverBlock;
|
|
35
|
+
export default withTheme('Popover', withBlockDefaults(PopoverBlock));
|
|
@@ -13,7 +13,22 @@
|
|
|
13
13
|
See the License for the specific language governing permissions and
|
|
14
14
|
limitations under the License.
|
|
15
15
|
*/ export default {
|
|
16
|
-
|
|
16
|
+
category: 'container',
|
|
17
|
+
icons: [],
|
|
18
|
+
valueType: null,
|
|
19
|
+
slots: {
|
|
20
|
+
content: 'Blocks that trigger the Popover.',
|
|
21
|
+
popover: 'Blocks inside the popup.'
|
|
22
|
+
},
|
|
23
|
+
cssKeys: {
|
|
24
|
+
element: 'The Popover element.',
|
|
25
|
+
inner: 'The Popover inner.',
|
|
26
|
+
title: 'The Popover title.',
|
|
27
|
+
content: 'The Popover content.'
|
|
28
|
+
},
|
|
29
|
+
events: {
|
|
30
|
+
onOpenChange: 'Trigger actions when visibility of the tooltip card is changed.'
|
|
31
|
+
},
|
|
17
32
|
properties: {
|
|
18
33
|
type: 'object',
|
|
19
34
|
additionalProperties: false,
|
|
@@ -88,16 +103,71 @@
|
|
|
88
103
|
type: 'number',
|
|
89
104
|
description: 'Delay in milliseconds, before tooltip is hidden on mouse leave.',
|
|
90
105
|
default: 0.1
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
106
|
+
},
|
|
107
|
+
theme: {
|
|
108
|
+
type: 'object',
|
|
109
|
+
description: 'Antd design token overrides for this block. See <a href="https://ant.design/components/overview#design-token">antd design tokens</a>.',
|
|
110
|
+
docs: {
|
|
111
|
+
displayType: 'yaml',
|
|
112
|
+
link: 'https://ant.design/components/popover#design-token'
|
|
113
|
+
},
|
|
114
|
+
properties: {
|
|
115
|
+
titleMinWidth: {
|
|
116
|
+
type: [
|
|
117
|
+
'number',
|
|
118
|
+
'string'
|
|
119
|
+
],
|
|
120
|
+
default: 177,
|
|
121
|
+
description: 'Minimum width of the popover when it has a title.'
|
|
122
|
+
},
|
|
123
|
+
zIndexPopup: {
|
|
124
|
+
type: 'number',
|
|
125
|
+
default: 1030,
|
|
126
|
+
description: 'Z-index of the popover.'
|
|
127
|
+
},
|
|
128
|
+
innerPadding: {
|
|
129
|
+
type: [
|
|
130
|
+
'number',
|
|
131
|
+
'string'
|
|
132
|
+
],
|
|
133
|
+
default: 12,
|
|
134
|
+
description: 'Padding inside the popover content area.'
|
|
135
|
+
},
|
|
136
|
+
titlePadding: {
|
|
137
|
+
type: [
|
|
138
|
+
'number',
|
|
139
|
+
'string'
|
|
140
|
+
],
|
|
141
|
+
description: 'Padding of the title area.'
|
|
142
|
+
},
|
|
143
|
+
titleMarginBottom: {
|
|
144
|
+
type: 'number',
|
|
145
|
+
default: 8,
|
|
146
|
+
description: 'Margin bottom of the title.'
|
|
147
|
+
},
|
|
148
|
+
titleBorderBottom: {
|
|
149
|
+
type: 'string',
|
|
150
|
+
default: 'none',
|
|
151
|
+
description: 'Border bottom of the title area.'
|
|
152
|
+
},
|
|
153
|
+
innerContentPadding: {
|
|
154
|
+
type: [
|
|
155
|
+
'number',
|
|
156
|
+
'string'
|
|
157
|
+
],
|
|
158
|
+
default: 0,
|
|
159
|
+
description: 'Padding of the inner content area.'
|
|
160
|
+
},
|
|
161
|
+
colorBgElevated: {
|
|
162
|
+
type: 'string',
|
|
163
|
+
description: 'Background color of the popover.'
|
|
164
|
+
},
|
|
165
|
+
borderRadiusLG: {
|
|
166
|
+
type: 'number',
|
|
167
|
+
default: 8,
|
|
168
|
+
description: 'Border radius of the popover container.'
|
|
169
|
+
}
|
|
170
|
+
}
|
|
101
171
|
}
|
|
102
172
|
}
|
|
103
173
|
}
|
|
@@ -14,12 +14,15 @@
|
|
|
14
14
|
limitations under the License.
|
|
15
15
|
*/ import React from 'react';
|
|
16
16
|
import { Progress } from 'antd';
|
|
17
|
-
import {
|
|
18
|
-
|
|
17
|
+
import { withBlockDefaults } from '@lowdefy/block-utils';
|
|
18
|
+
import withTheme from '../withTheme.js';
|
|
19
|
+
const ProgressBlock = ({ blockId, classNames = {}, properties, styles = {} })=>/*#__PURE__*/ React.createElement(Progress, {
|
|
20
|
+
className: classNames.element,
|
|
19
21
|
gapDegree: properties.gapDegree,
|
|
20
|
-
|
|
22
|
+
gapPlacement: properties.gapPlacement,
|
|
21
23
|
id: blockId,
|
|
22
24
|
percent: properties.percent,
|
|
25
|
+
style: styles.element,
|
|
23
26
|
showInfo: properties.showInfo,
|
|
24
27
|
status: properties.status,
|
|
25
28
|
steps: properties.steps,
|
|
@@ -31,12 +34,4 @@ const ProgressBlock = ({ blockId, properties })=>/*#__PURE__*/ React.createEleme
|
|
|
31
34
|
type: properties.type,
|
|
32
35
|
width: properties.width
|
|
33
36
|
});
|
|
34
|
-
|
|
35
|
-
ProgressBlock.meta = {
|
|
36
|
-
category: 'display',
|
|
37
|
-
icons: [],
|
|
38
|
-
styles: [
|
|
39
|
-
'blocks/Progress/style.less'
|
|
40
|
-
]
|
|
41
|
-
};
|
|
42
|
-
export default ProgressBlock;
|
|
37
|
+
export default withTheme('Progress', withBlockDefaults(ProgressBlock));
|
|
@@ -13,7 +13,12 @@
|
|
|
13
13
|
See the License for the specific language governing permissions and
|
|
14
14
|
limitations under the License.
|
|
15
15
|
*/ export default {
|
|
16
|
-
|
|
16
|
+
category: 'display',
|
|
17
|
+
icons: [],
|
|
18
|
+
valueType: null,
|
|
19
|
+
cssKeys: {
|
|
20
|
+
element: 'The Progress element.'
|
|
21
|
+
},
|
|
17
22
|
properties: {
|
|
18
23
|
type: 'object',
|
|
19
24
|
additionalProperties: false,
|
|
@@ -69,9 +74,22 @@
|
|
|
69
74
|
}
|
|
70
75
|
},
|
|
71
76
|
success: {
|
|
72
|
-
type: '
|
|
73
|
-
|
|
74
|
-
|
|
77
|
+
type: 'object',
|
|
78
|
+
description: 'Segmented success percent configuration.',
|
|
79
|
+
properties: {
|
|
80
|
+
percent: {
|
|
81
|
+
type: 'number',
|
|
82
|
+
default: 0,
|
|
83
|
+
description: 'Segmented success percent.'
|
|
84
|
+
},
|
|
85
|
+
strokeColor: {
|
|
86
|
+
type: 'string',
|
|
87
|
+
description: 'Color of the success segment.',
|
|
88
|
+
docs: {
|
|
89
|
+
displayType: 'color'
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
75
93
|
},
|
|
76
94
|
trailColor: {
|
|
77
95
|
type: 'string',
|
|
@@ -104,6 +122,58 @@
|
|
|
104
122
|
],
|
|
105
123
|
default: 'top',
|
|
106
124
|
description: 'The gap position.'
|
|
125
|
+
},
|
|
126
|
+
steps: {
|
|
127
|
+
type: 'number',
|
|
128
|
+
description: 'Number of steps for a segmented progress bar (line type only).'
|
|
129
|
+
},
|
|
130
|
+
theme: {
|
|
131
|
+
type: 'object',
|
|
132
|
+
description: 'Antd design token overrides for this block. See <a href="https://ant.design/components/overview#design-token">antd design tokens</a>.',
|
|
133
|
+
docs: {
|
|
134
|
+
displayType: 'yaml',
|
|
135
|
+
link: 'https://ant.design/components/progress#design-token'
|
|
136
|
+
},
|
|
137
|
+
properties: {
|
|
138
|
+
defaultColor: {
|
|
139
|
+
type: 'string',
|
|
140
|
+
default: '#1677ff',
|
|
141
|
+
description: 'Default color of the progress bar.'
|
|
142
|
+
},
|
|
143
|
+
remainingColor: {
|
|
144
|
+
type: 'string',
|
|
145
|
+
default: 'rgba(0,0,0,0.06)',
|
|
146
|
+
description: 'Color of the unfilled portion of the progress bar.'
|
|
147
|
+
},
|
|
148
|
+
circleTextColor: {
|
|
149
|
+
type: 'string',
|
|
150
|
+
default: 'rgba(0,0,0,0.88)',
|
|
151
|
+
description: 'Text color inside the circular progress.'
|
|
152
|
+
},
|
|
153
|
+
circleTextFontSize: {
|
|
154
|
+
type: 'string',
|
|
155
|
+
default: '1em',
|
|
156
|
+
description: 'Font size of text inside the circular progress.'
|
|
157
|
+
},
|
|
158
|
+
circleIconFontSize: {
|
|
159
|
+
type: 'string',
|
|
160
|
+
default: '1.167em',
|
|
161
|
+
description: 'Font size of icons inside the circular progress.'
|
|
162
|
+
},
|
|
163
|
+
lineBorderRadius: {
|
|
164
|
+
type: 'number',
|
|
165
|
+
default: 100,
|
|
166
|
+
description: 'Border radius of the linear progress bar.'
|
|
167
|
+
},
|
|
168
|
+
colorSuccess: {
|
|
169
|
+
type: 'string',
|
|
170
|
+
description: 'Color used for success status.'
|
|
171
|
+
},
|
|
172
|
+
colorError: {
|
|
173
|
+
type: 'string',
|
|
174
|
+
description: 'Color used for exception status.'
|
|
175
|
+
}
|
|
176
|
+
}
|
|
107
177
|
}
|
|
108
178
|
}
|
|
109
179
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
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 { QRCode } from 'antd';
|
|
17
|
+
import { withBlockDefaults } from '@lowdefy/block-utils';
|
|
18
|
+
import withTheme from '../withTheme.js';
|
|
19
|
+
const QRCodeBlock = ({ blockId, classNames = {}, methods, properties, styles = {} })=>/*#__PURE__*/ React.createElement(QRCode, {
|
|
20
|
+
id: blockId,
|
|
21
|
+
className: classNames.element,
|
|
22
|
+
style: styles.element,
|
|
23
|
+
value: properties.value ?? '',
|
|
24
|
+
size: properties.size,
|
|
25
|
+
color: properties.color,
|
|
26
|
+
bgColor: properties.bgColor,
|
|
27
|
+
errorLevel: properties.errorLevel,
|
|
28
|
+
icon: properties.icon,
|
|
29
|
+
iconSize: properties.iconSize,
|
|
30
|
+
marginSize: properties.marginSize,
|
|
31
|
+
minVersion: properties.minVersion,
|
|
32
|
+
type: properties.type,
|
|
33
|
+
bordered: properties.bordered,
|
|
34
|
+
status: properties.status,
|
|
35
|
+
onRefresh: ()=>methods.triggerEvent({
|
|
36
|
+
name: 'onRefresh'
|
|
37
|
+
})
|
|
38
|
+
});
|
|
39
|
+
export default withTheme('QRCode', withBlockDefaults(QRCodeBlock));
|
|
@@ -12,19 +12,13 @@
|
|
|
12
12
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
13
|
See the License for the specific language governing permissions and
|
|
14
14
|
limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
description: 'Css style object to applied to footer.',
|
|
24
|
-
docs: {
|
|
25
|
-
displayType: 'yaml'
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
15
|
+
*/ import { createBlockHelper } from '@lowdefy/e2e-utils';
|
|
16
|
+
import { expect } from '@playwright/test';
|
|
17
|
+
const locator = (page, blockId)=>page.locator(`#${blockId}`);
|
|
18
|
+
export default createBlockHelper({
|
|
19
|
+
locator,
|
|
20
|
+
expect: {
|
|
21
|
+
status: (page, blockId, status)=>expect(locator(page, blockId)).toHaveAttribute('data-status', status),
|
|
22
|
+
hasCanvas: (page, blockId)=>expect(locator(page, blockId).locator('canvas')).toBeVisible()
|
|
29
23
|
}
|
|
30
|
-
};
|
|
24
|
+
});
|
|
@@ -0,0 +1,152 @@
|
|
|
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
|
+
*/ export default {
|
|
16
|
+
category: 'display',
|
|
17
|
+
icons: [],
|
|
18
|
+
valueType: null,
|
|
19
|
+
cssKeys: {
|
|
20
|
+
element: 'The QRCode element.'
|
|
21
|
+
},
|
|
22
|
+
events: {
|
|
23
|
+
onRefresh: 'Trigger action when expired QR code refresh button is clicked.'
|
|
24
|
+
},
|
|
25
|
+
properties: {
|
|
26
|
+
type: 'object',
|
|
27
|
+
additionalProperties: false,
|
|
28
|
+
properties: {
|
|
29
|
+
value: {
|
|
30
|
+
type: 'string',
|
|
31
|
+
description: 'Scanned text.'
|
|
32
|
+
},
|
|
33
|
+
size: {
|
|
34
|
+
type: 'integer',
|
|
35
|
+
default: 160,
|
|
36
|
+
description: 'QRCode size in pixels.'
|
|
37
|
+
},
|
|
38
|
+
color: {
|
|
39
|
+
type: 'string',
|
|
40
|
+
default: '#000000',
|
|
41
|
+
description: 'QRCode color.'
|
|
42
|
+
},
|
|
43
|
+
bgColor: {
|
|
44
|
+
type: 'string',
|
|
45
|
+
default: 'transparent',
|
|
46
|
+
description: 'QRCode background color.'
|
|
47
|
+
},
|
|
48
|
+
errorLevel: {
|
|
49
|
+
type: 'string',
|
|
50
|
+
enum: [
|
|
51
|
+
'L',
|
|
52
|
+
'M',
|
|
53
|
+
'Q',
|
|
54
|
+
'H'
|
|
55
|
+
],
|
|
56
|
+
default: 'M',
|
|
57
|
+
description: 'Error correction level.'
|
|
58
|
+
},
|
|
59
|
+
icon: {
|
|
60
|
+
type: 'string',
|
|
61
|
+
description: 'Icon URL in the center of the QR code.'
|
|
62
|
+
},
|
|
63
|
+
iconSize: {
|
|
64
|
+
type: 'integer',
|
|
65
|
+
default: 40,
|
|
66
|
+
description: 'Icon size in pixels.'
|
|
67
|
+
},
|
|
68
|
+
marginSize: {
|
|
69
|
+
type: 'number',
|
|
70
|
+
default: 0,
|
|
71
|
+
description: 'Margin size of the QR code in modules.'
|
|
72
|
+
},
|
|
73
|
+
minVersion: {
|
|
74
|
+
type: 'integer',
|
|
75
|
+
minimum: 1,
|
|
76
|
+
maximum: 40,
|
|
77
|
+
default: 1,
|
|
78
|
+
description: 'Minimum QR code version (1-40). Higher versions support more data.'
|
|
79
|
+
},
|
|
80
|
+
type: {
|
|
81
|
+
type: 'string',
|
|
82
|
+
enum: [
|
|
83
|
+
'canvas',
|
|
84
|
+
'svg'
|
|
85
|
+
],
|
|
86
|
+
default: 'canvas',
|
|
87
|
+
description: 'Render type.'
|
|
88
|
+
},
|
|
89
|
+
bordered: {
|
|
90
|
+
type: 'boolean',
|
|
91
|
+
default: true,
|
|
92
|
+
description: 'Whether has border style.'
|
|
93
|
+
},
|
|
94
|
+
status: {
|
|
95
|
+
type: 'string',
|
|
96
|
+
enum: [
|
|
97
|
+
'active',
|
|
98
|
+
'expired',
|
|
99
|
+
'loading',
|
|
100
|
+
'scanned'
|
|
101
|
+
],
|
|
102
|
+
default: 'active',
|
|
103
|
+
description: 'QRCode status.'
|
|
104
|
+
},
|
|
105
|
+
theme: {
|
|
106
|
+
type: 'object',
|
|
107
|
+
description: 'Antd design token overrides for this block. See <a href="https://ant.design/components/overview#design-token">antd design tokens</a>.',
|
|
108
|
+
docs: {
|
|
109
|
+
displayType: 'yaml',
|
|
110
|
+
link: 'https://ant.design/components/qr-code#design-token'
|
|
111
|
+
},
|
|
112
|
+
properties: {
|
|
113
|
+
QRCodeTextColor: {
|
|
114
|
+
type: 'string',
|
|
115
|
+
description: 'Text color displayed on the QR code overlay.'
|
|
116
|
+
},
|
|
117
|
+
QRCodeCoverBackgroundColor: {
|
|
118
|
+
type: 'string',
|
|
119
|
+
description: 'Background color of the cover overlay shown when expired, loading, or scanned.'
|
|
120
|
+
},
|
|
121
|
+
borderRadiusLG: {
|
|
122
|
+
type: 'number',
|
|
123
|
+
default: 8,
|
|
124
|
+
description: 'Border radius of the QR code container.'
|
|
125
|
+
},
|
|
126
|
+
colorText: {
|
|
127
|
+
type: 'string',
|
|
128
|
+
description: 'Text color.'
|
|
129
|
+
},
|
|
130
|
+
colorBgContainer: {
|
|
131
|
+
type: 'string',
|
|
132
|
+
description: 'Background color of the QR code container.'
|
|
133
|
+
},
|
|
134
|
+
colorSplit: {
|
|
135
|
+
type: 'string',
|
|
136
|
+
description: 'Border color when bordered is true.'
|
|
137
|
+
},
|
|
138
|
+
lineWidth: {
|
|
139
|
+
type: 'number',
|
|
140
|
+
default: 1,
|
|
141
|
+
description: 'Border width.'
|
|
142
|
+
},
|
|
143
|
+
padding: {
|
|
144
|
+
type: 'number',
|
|
145
|
+
default: 12,
|
|
146
|
+
description: 'Padding inside the QR code container.'
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
};
|