@bspk/ui 1.3.21 → 1.3.23
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/components/Accordion/Accordion.js +1 -1
- package/dist/components/Accordion/Accordion.js.map +1 -1
- package/dist/components/Accordion/accordion.css +19 -12
- package/dist/components/Accordion/accordion.css.js +19 -12
- package/dist/components/BottomNavigation/BottomNavigation.d.ts +0 -1
- package/dist/components/BottomNavigation/BottomNavigation.js +0 -1
- package/dist/components/BottomNavigation/BottomNavigation.js.map +1 -1
- package/dist/components/BottomNavigation/bottom-navigation.css +1 -0
- package/dist/components/BottomNavigation/bottom-navigation.css.js +1 -0
- package/dist/components/Button/button.css +4 -0
- package/dist/components/Button/button.css.js +4 -0
- package/dist/components/Checkbox/Checkbox.js +3 -3
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +4 -5
- package/dist/components/CheckboxGroup/CheckboxGroup.js +8 -13
- package/dist/components/CheckboxGroup/CheckboxGroup.js.map +1 -1
- package/dist/components/CheckboxGroup/CheckboxGroupExample.js +5 -0
- package/dist/components/CheckboxGroup/CheckboxGroupExample.js.map +1 -1
- package/dist/components/CheckboxGroup/checkbox-group.css +5 -0
- package/dist/components/CheckboxGroup/checkbox-group.css.js +5 -0
- package/dist/components/CheckboxGroupField/CheckboxGroupField.d.ts +3 -3
- package/dist/components/CheckboxGroupField/CheckboxGroupField.js +6 -4
- package/dist/components/CheckboxGroupField/CheckboxGroupField.js.map +1 -1
- package/dist/components/ChipGroup/ChipGroup.d.ts +0 -1
- package/dist/components/ChipGroup/ChipGroup.js +0 -1
- package/dist/components/ChipGroup/ChipGroup.js.map +1 -1
- package/dist/components/ChipGroup/chip-group.css +3 -0
- package/dist/components/ChipGroup/chip-group.css.js +3 -0
- package/dist/components/DatePicker/DatePicker.d.ts +4 -8
- package/dist/components/DatePicker/DatePicker.js +6 -18
- package/dist/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/DatePicker/DatePickerExample.js +3 -3
- package/dist/components/DatePicker/DatePickerExample.js.map +1 -1
- package/dist/components/DatePickerField/DatePickerField.d.ts +4 -4
- package/dist/components/DatePickerField/DatePickerField.js +6 -4
- package/dist/components/DatePickerField/DatePickerField.js.map +1 -1
- package/dist/components/Dialog/Dialog.d.ts +2 -3
- package/dist/components/Dialog/Dialog.js +2 -3
- package/dist/components/Dialog/Dialog.js.map +1 -1
- package/dist/components/Fab/Fab.d.ts +8 -5
- package/dist/components/Fab/Fab.js +8 -5
- package/dist/components/Fab/Fab.js.map +1 -1
- package/dist/components/Fab/fab.css +1 -0
- package/dist/components/Fab/fab.css.js +1 -0
- package/dist/components/Field/Field.d.ts +39 -20
- package/dist/components/Field/Field.js +10 -40
- package/dist/components/Field/Field.js.map +1 -1
- package/dist/components/Field/FieldExample.d.ts +1 -0
- package/dist/components/Field/FieldExample.js +10 -3
- package/dist/components/Field/FieldExample.js.map +1 -1
- package/dist/components/Field/Fieldset.d.ts +40 -0
- package/dist/components/Field/Fieldset.js +44 -0
- package/dist/components/Field/Fieldset.js.map +1 -0
- package/dist/components/Field/field.css +9 -7
- package/dist/components/Field/field.css.js +9 -7
- package/dist/components/Field/index.d.ts +1 -3
- package/dist/components/Field/index.js +1 -3
- package/dist/components/Field/index.js.map +1 -1
- package/dist/components/Field/utils.d.ts +8 -38
- package/dist/components/Field/utils.js +6 -33
- package/dist/components/Field/utils.js.map +1 -1
- package/dist/components/FileUpload/FileUpload.js +1 -1
- package/dist/components/FileUpload/FileUpload.js.map +1 -1
- package/dist/components/FileUploadItem/FileUploadItem.js +1 -1
- package/dist/components/FileUploadItem/FileUploadItem.js.map +1 -1
- package/dist/components/Flex/Flex.d.ts +10 -6
- package/dist/components/Flex/Flex.js +10 -6
- package/dist/components/Flex/Flex.js.map +1 -1
- package/dist/components/InlineAlert/InlineAlert.d.ts +2 -2
- package/dist/components/InlineAlert/InlineAlert.js +2 -2
- package/dist/components/InlineAlert/InlineAlert.js.map +1 -1
- package/dist/components/Input/Input.d.ts +59 -15
- package/dist/components/Input/Input.js +40 -25
- package/dist/components/Input/Input.js.map +1 -1
- package/dist/components/Input/InputExample.js +4 -4
- package/dist/components/Input/InputExample.js.map +1 -1
- package/dist/components/Input/index.d.ts +0 -1
- package/dist/components/Input/index.js +0 -1
- package/dist/components/Input/index.js.map +1 -1
- package/dist/components/InputField/InputField.d.ts +4 -4
- package/dist/components/InputField/InputField.js +6 -4
- package/dist/components/InputField/InputField.js.map +1 -1
- package/dist/components/InputNumber/InputNumber.d.ts +8 -7
- package/dist/components/InputNumber/InputNumber.js +9 -16
- package/dist/components/InputNumber/InputNumber.js.map +1 -1
- package/dist/components/InputNumber/InputNumberExample.js +3 -3
- package/dist/components/InputNumber/InputNumberExample.js.map +1 -1
- package/dist/components/InputNumber/input-number.css +1 -0
- package/dist/components/InputNumber/input-number.css.js +1 -0
- package/dist/components/InputNumberField/InputNumberField.d.ts +4 -4
- package/dist/components/InputNumberField/InputNumberField.js +6 -4
- package/dist/components/InputNumberField/InputNumberField.js.map +1 -1
- package/dist/components/InputPhone/InputPhone.d.ts +8 -8
- package/dist/components/InputPhone/InputPhone.js +12 -18
- package/dist/components/InputPhone/InputPhone.js.map +1 -1
- package/dist/components/InputPhone/InputPhoneExample.js +3 -3
- package/dist/components/InputPhone/InputPhoneExample.js.map +1 -1
- package/dist/components/InputPhone/input-phone.css +1 -0
- package/dist/components/InputPhone/input-phone.css.js +1 -0
- package/dist/components/InputPhoneField/InputPhoneField.d.ts +4 -4
- package/dist/components/InputPhoneField/InputPhoneField.js +6 -4
- package/dist/components/InputPhoneField/InputPhoneField.js.map +1 -1
- package/dist/components/Link/Link.d.ts +0 -1
- package/dist/components/Link/Link.js +0 -1
- package/dist/components/Link/Link.js.map +1 -1
- package/dist/components/ListItem/list-item.css +1 -0
- package/dist/components/ListItem/list-item.css.js +1 -0
- package/dist/components/Modal/Modal.js +22 -26
- package/dist/components/Modal/Modal.js.map +1 -1
- package/dist/components/Modal/ModalExample.js +4 -1
- package/dist/components/Modal/ModalExample.js.map +1 -1
- package/dist/components/Modal/modal.css +4 -2
- package/dist/components/Modal/modal.css.js +4 -2
- package/dist/components/OTPInput/otp-input.css +1 -0
- package/dist/components/OTPInput/otp-input.css.js +1 -0
- package/dist/components/Pagination/Pagination.js +2 -2
- package/dist/components/Pagination/Pagination.js.map +1 -1
- package/dist/components/Password/Password.d.ts +9 -7
- package/dist/components/Password/Password.js +13 -17
- package/dist/components/Password/Password.js.map +1 -1
- package/dist/components/Password/PasswordExample.js +3 -3
- package/dist/components/Password/PasswordExample.js.map +1 -1
- package/dist/components/PasswordField/PasswordField.d.ts +4 -4
- package/dist/components/PasswordField/PasswordField.js +6 -4
- package/dist/components/PasswordField/PasswordField.js.map +1 -1
- package/dist/components/Popover/Popover.d.ts +0 -1
- package/dist/components/Popover/Popover.js +0 -1
- package/dist/components/Popover/Popover.js.map +1 -1
- package/dist/components/RadioGroup/RadioGroup.d.ts +1 -2
- package/dist/components/RadioGroup/RadioGroup.js +5 -11
- package/dist/components/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/components/RadioGroup/radio-group.css +3 -0
- package/dist/components/RadioGroup/radio-group.css.js +3 -0
- package/dist/components/RadioGroupField/RadioGroupField.d.ts +3 -3
- package/dist/components/RadioGroupField/RadioGroupField.js +6 -4
- package/dist/components/RadioGroupField/RadioGroupField.js.map +1 -1
- package/dist/components/SearchBar/SearchBar.d.ts +0 -1
- package/dist/components/SearchBar/SearchBar.js +0 -1
- package/dist/components/SearchBar/SearchBar.js.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.d.ts +0 -1
- package/dist/components/SegmentedControl/SegmentedControl.js +0 -1
- package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/components/Select/Select.d.ts +7 -6
- package/dist/components/Select/Select.js +10 -15
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/Select/SelectExample.js +3 -3
- package/dist/components/Select/SelectExample.js.map +1 -1
- package/dist/components/Select/select.css +0 -10
- package/dist/components/Select/select.css.js +0 -10
- package/dist/components/SelectField/SelectField.d.ts +4 -4
- package/dist/components/SelectField/SelectField.js +6 -4
- package/dist/components/SelectField/SelectField.js.map +1 -1
- package/dist/components/Slider/Slider.d.ts +1 -2
- package/dist/components/Slider/Slider.js +1 -2
- package/dist/components/Slider/Slider.js.map +1 -1
- package/dist/components/Snackbar/Snackbar.d.ts +0 -1
- package/dist/components/Snackbar/Snackbar.js +0 -1
- package/dist/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/components/Switch/Switch.d.ts +0 -1
- package/dist/components/Switch/Switch.js +0 -1
- package/dist/components/Switch/Switch.js.map +1 -1
- package/dist/components/TabGroup/TabGroup.d.ts +0 -1
- package/dist/components/TabGroup/TabGroup.js +0 -1
- package/dist/components/TabGroup/TabGroup.js.map +1 -1
- package/dist/components/TabList/TabList.d.ts +0 -1
- package/dist/components/TabList/TabList.js +0 -1
- package/dist/components/TabList/TabList.js.map +1 -1
- package/dist/components/TabList/tab-list.css +1 -0
- package/dist/components/TabList/tab-list.css.js +1 -0
- package/dist/components/Table/table.css +2 -1
- package/dist/components/Table/table.css.js +2 -1
- package/dist/components/Textarea/Textarea.d.ts +4 -7
- package/dist/components/Textarea/Textarea.js +5 -16
- package/dist/components/Textarea/Textarea.js.map +1 -1
- package/dist/components/Textarea/TextareaExample.js +3 -3
- package/dist/components/Textarea/TextareaExample.js.map +1 -1
- package/dist/components/TextareaField/TextareaField.d.ts +4 -4
- package/dist/components/TextareaField/TextareaField.js +6 -4
- package/dist/components/TextareaField/TextareaField.js.map +1 -1
- package/dist/components/TimePicker/TimePicker.d.ts +8 -6
- package/dist/components/TimePicker/TimePicker.js +10 -14
- package/dist/components/TimePicker/TimePicker.js.map +1 -1
- package/dist/components/TimePicker/TimePickerExample.js +3 -3
- package/dist/components/TimePicker/TimePickerExample.js.map +1 -1
- package/dist/components/TimePickerField/TimePickerField.d.ts +4 -4
- package/dist/components/TimePickerField/TimePickerField.js +6 -4
- package/dist/components/TimePickerField/TimePickerField.js.map +1 -1
- package/dist/hooks/useFloating.d.ts +0 -6
- package/dist/hooks/useFloating.js +0 -6
- package/dist/hooks/useFloating.js.map +1 -1
- package/dist/styles/base.css +71 -81
- package/dist/styles/base.css.js +71 -81
- package/dist/types/common.d.ts +3 -0
- package/dist/types/common.js.map +1 -1
- package/package.json +3 -4
- package/src/components/Accordion/Accordion.tsx +2 -2
- package/src/components/Accordion/accordion.scss +10 -1
- package/src/components/BottomNavigation/BottomNavigation.tsx +0 -1
- package/src/components/BottomNavigation/bottom-navigation.scss +1 -0
- package/src/components/Button/button.scss +4 -0
- package/src/components/Checkbox/Checkbox.tsx +3 -3
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +37 -52
- package/src/components/CheckboxGroup/CheckboxGroupExample.tsx +6 -0
- package/src/components/CheckboxGroup/checkbox-group.scss +6 -0
- package/src/components/CheckboxGroupField/CheckboxGroupField.tsx +16 -11
- package/src/components/ChipGroup/ChipGroup.tsx +0 -1
- package/src/components/ChipGroup/chip-group.scss +4 -0
- package/src/components/DatePicker/DatePicker.tsx +9 -20
- package/src/components/DatePicker/DatePickerExample.tsx +3 -5
- package/src/components/DatePickerField/DatePickerField.rtl.test.tsx +1 -1
- package/src/components/DatePickerField/DatePickerField.tsx +11 -6
- package/src/components/Dialog/Dialog.tsx +2 -3
- package/src/components/Fab/Fab.tsx +8 -5
- package/src/components/Fab/fab.scss +1 -0
- package/src/components/Field/Field.rtl.test.tsx +8 -6
- package/src/components/Field/Field.tsx +71 -63
- package/src/components/Field/FieldExample.tsx +27 -5
- package/src/components/Field/Fieldset.tsx +82 -0
- package/src/components/Field/field.scss +27 -26
- package/src/components/Field/index.tsx +1 -3
- package/src/components/Field/utils.ts +15 -77
- package/src/components/FileUpload/FileUpload.tsx +1 -1
- package/src/components/FileUploadItem/FileUploadItem.tsx +1 -1
- package/src/components/Flex/Flex.tsx +10 -6
- package/src/components/InlineAlert/InlineAlert.rtl.test.tsx +1 -1
- package/src/components/InlineAlert/InlineAlert.tsx +3 -3
- package/src/components/Input/Input.tsx +135 -48
- package/src/components/Input/InputExample.tsx +4 -6
- package/src/components/Input/index.tsx +0 -1
- package/src/components/InputField/InputField.tsx +11 -6
- package/src/components/InputNumber/InputNumber.tsx +11 -16
- package/src/components/InputNumber/InputNumberExample.tsx +7 -4
- package/src/components/InputNumber/input-number.scss +1 -0
- package/src/components/InputNumberField/InputNumberField.tsx +11 -6
- package/src/components/InputPhone/InputPhone.tsx +14 -18
- package/src/components/InputPhone/InputPhoneExample.tsx +7 -6
- package/src/components/InputPhone/input-phone.scss +1 -0
- package/src/components/InputPhoneField/InputPhoneField.tsx +11 -6
- package/src/components/Link/Link.tsx +0 -1
- package/src/components/ListItem/list-item.scss +1 -0
- package/src/components/Modal/Modal.tsx +26 -30
- package/src/components/Modal/ModalExample.tsx +7 -2
- package/src/components/Modal/modal.scss +1 -1
- package/src/components/OTPInput/otp-input.scss +1 -0
- package/src/components/Pagination/Pagination.tsx +2 -2
- package/src/components/Password/Password.tsx +15 -17
- package/src/components/Password/PasswordExample.tsx +13 -5
- package/src/components/PasswordField/PasswordField.tsx +11 -6
- package/src/components/Popover/Popover.tsx +0 -1
- package/src/components/RadioGroup/RadioGroup.tsx +14 -20
- package/src/components/RadioGroup/radio-group.scss +4 -0
- package/src/components/RadioGroupField/RadioGroupField.tsx +16 -11
- package/src/components/SearchBar/SearchBar.tsx +0 -1
- package/src/components/SegmentedControl/SegmentedControl.tsx +0 -1
- package/src/components/Select/Select.tsx +13 -14
- package/src/components/Select/SelectExample.tsx +7 -4
- package/src/components/Select/select.scss +0 -12
- package/src/components/SelectField/SelectField.rtl.test.tsx +7 -18
- package/src/components/SelectField/SelectField.tsx +11 -6
- package/src/components/Slider/Slider.tsx +1 -2
- package/src/components/Snackbar/Snackbar.tsx +0 -1
- package/src/components/Switch/Switch.tsx +0 -1
- package/src/components/TabGroup/TabGroup.tsx +0 -1
- package/src/components/TabList/TabList.tsx +0 -1
- package/src/components/TabList/tab-list.scss +1 -0
- package/src/components/Table/table.scss +2 -1
- package/src/components/Textarea/Textarea.tsx +8 -17
- package/src/components/Textarea/TextareaExample.tsx +3 -5
- package/src/components/TextareaField/TextareaField.tsx +11 -6
- package/src/components/TimePicker/TimePicker.tsx +12 -15
- package/src/components/TimePicker/TimePickerExample.tsx +3 -5
- package/src/components/TimePickerField/TimePickerField.tsx +11 -6
- package/src/hooks/useFloating.ts +0 -6
- package/src/styles/base.scss +109 -87
- package/src/types/common.ts +9 -0
- package/dist/components/Field/FieldDescription.d.ts +0 -9
- package/dist/components/Field/FieldDescription.js +0 -13
- package/dist/components/Field/FieldDescription.js.map +0 -1
- package/dist/components/Field/FieldError.d.ts +0 -11
- package/dist/components/Field/FieldError.js +0 -14
- package/dist/components/Field/FieldError.js.map +0 -1
- package/dist/components/Field/FieldLabel.d.ts +0 -21
- package/dist/components/Field/FieldLabel.js +0 -14
- package/dist/components/Field/FieldLabel.js.map +0 -1
- package/dist/components/FormField/FormField.d.ts +0 -66
- package/dist/components/FormField/FormField.js +0 -31
- package/dist/components/FormField/FormField.js.map +0 -1
- package/dist/components/FormField/FormFieldExample.d.ts +0 -9
- package/dist/components/FormField/FormFieldExample.js +0 -99
- package/dist/components/FormField/FormFieldExample.js.map +0 -1
- package/dist/components/FormField/index.d.ts +0 -1
- package/dist/components/FormField/index.js +0 -2
- package/dist/components/FormField/index.js.map +0 -1
- package/dist/components/Input/InputElement.d.ts +0 -82
- package/dist/components/Input/InputElement.js +0 -64
- package/dist/components/Input/InputElement.js.map +0 -1
- package/dist/components/Link/link.css +0 -18
- package/dist/components/Link/link.css.js +0 -23
- package/src/components/Field/FieldDescription.tsx +0 -17
- package/src/components/Field/FieldError.tsx +0 -25
- package/src/components/Field/FieldLabel.tsx +0 -44
- package/src/components/FormField/FormField.rtl.test.tsx +0 -20
- package/src/components/FormField/FormField.tsx +0 -95
- package/src/components/FormField/FormFieldExample.tsx +0 -277
- package/src/components/FormField/index.tsx +0 -1
- package/src/components/Input/InputElement.tsx +0 -192
- package/src/components/Link/link.scss +0 -21
package/dist/styles/base.css.js
CHANGED
|
@@ -142,87 +142,6 @@ body[data-bspk] {
|
|
|
142
142
|
color: var(--foreground-neutral-on-surface);
|
|
143
143
|
min-width: 343px;
|
|
144
144
|
}
|
|
145
|
-
body[data-bspk] a:not([data-bspk=button], [data-bspk=list-item]),
|
|
146
|
-
body[data-bspk] [data-bspk=link]:not([data-bspk=button], [data-bspk=list-item]) {
|
|
147
|
-
color: var(--foreground-link-text-default);
|
|
148
|
-
}
|
|
149
|
-
body[data-bspk] a:not([data-bspk=button], [data-bspk=list-item]):not([disabled]):hover, body[data-bspk] a:not([data-bspk=button], [data-bspk=list-item]):not([disabled])[data-pseudo=hover],
|
|
150
|
-
body[data-bspk] [data-bspk=link]:not([data-bspk=button], [data-bspk=list-item]):not([disabled]):hover,
|
|
151
|
-
body[data-bspk] [data-bspk=link]:not([data-bspk=button], [data-bspk=list-item]):not([disabled])[data-pseudo=hover] {
|
|
152
|
-
color: var(--foreground-link-text-default-hovered);
|
|
153
|
-
}
|
|
154
|
-
body[data-bspk] a:not([data-bspk=button], [data-bspk=list-item]):not([disabled]):active, body[data-bspk] a:not([data-bspk=button], [data-bspk=list-item]):not([disabled])[data-pseudo=active],
|
|
155
|
-
body[data-bspk] [data-bspk=link]:not([data-bspk=button], [data-bspk=list-item]):not([disabled]):active,
|
|
156
|
-
body[data-bspk] [data-bspk=link]:not([data-bspk=button], [data-bspk=list-item]):not([disabled])[data-pseudo=active] {
|
|
157
|
-
color: var(--foreground-link-text-default);
|
|
158
|
-
filter: brightness(80%);
|
|
159
|
-
}
|
|
160
|
-
body[data-bspk] a:not([data-bspk=button], [data-bspk=list-item]):not([disabled]):visited, body[data-bspk] a:not([data-bspk=button], [data-bspk=list-item]):not([disabled])[data-pseudo=visited],
|
|
161
|
-
body[data-bspk] [data-bspk=link]:not([data-bspk=button], [data-bspk=list-item]):not([disabled]):visited,
|
|
162
|
-
body[data-bspk] [data-bspk=link]:not([data-bspk=button], [data-bspk=list-item]):not([disabled])[data-pseudo=visited] {
|
|
163
|
-
color: var(--foreground-link-text-default-visited);
|
|
164
|
-
}
|
|
165
|
-
body[data-bspk] a:not([data-bspk=button], [data-bspk=list-item])[disabled],
|
|
166
|
-
body[data-bspk] [data-bspk=link]:not([data-bspk=button], [data-bspk=list-item])[disabled] {
|
|
167
|
-
pointer-events: none;
|
|
168
|
-
cursor: text;
|
|
169
|
-
color: var(--foreground-link-text-default-disabled);
|
|
170
|
-
}
|
|
171
|
-
body[data-bspk] a[data-subtle],
|
|
172
|
-
body[data-bspk] [data-bspk=link][data-subtle] {
|
|
173
|
-
text-decoration: none;
|
|
174
|
-
color: var(--foreground-neutral-on-surface);
|
|
175
|
-
}
|
|
176
|
-
body[data-bspk] a[data-subtle]:not([disabled]):hover, body[data-bspk] a[data-subtle]:not([disabled])[data-pseudo=hover],
|
|
177
|
-
body[data-bspk] [data-bspk=link][data-subtle]:not([disabled]):hover,
|
|
178
|
-
body[data-bspk] [data-bspk=link][data-subtle]:not([disabled])[data-pseudo=hover] {
|
|
179
|
-
text-decoration: underline;
|
|
180
|
-
color: var(--foreground-link-text-subtle-hovered);
|
|
181
|
-
}
|
|
182
|
-
body[data-bspk] a[data-subtle]:not([disabled]):active, body[data-bspk] a[data-subtle]:not([disabled])[data-pseudo=active],
|
|
183
|
-
body[data-bspk] [data-bspk=link][data-subtle]:not([disabled]):active,
|
|
184
|
-
body[data-bspk] [data-bspk=link][data-subtle]:not([disabled])[data-pseudo=active] {
|
|
185
|
-
text-decoration: underline;
|
|
186
|
-
color: var(--foreground-link-text-subtle-pressed);
|
|
187
|
-
}
|
|
188
|
-
body[data-bspk] a[data-subtle]:not([disabled]):visited, body[data-bspk] a[data-subtle]:not([disabled])[data-pseudo=visited],
|
|
189
|
-
body[data-bspk] [data-bspk=link][data-subtle]:not([disabled]):visited,
|
|
190
|
-
body[data-bspk] [data-bspk=link][data-subtle]:not([disabled])[data-pseudo=visited] {
|
|
191
|
-
color: var(--foreground-neutral-on-surface);
|
|
192
|
-
}
|
|
193
|
-
body[data-bspk] a[data-subtle][disabled],
|
|
194
|
-
body[data-bspk] [data-bspk=link][data-subtle][disabled] {
|
|
195
|
-
pointer-events: none;
|
|
196
|
-
color: var(--foreground-link-text-subtle-disabled);
|
|
197
|
-
}
|
|
198
|
-
body[data-bspk] a[data-subtle-inverse],
|
|
199
|
-
body[data-bspk] [data-bspk=link][data-subtle-inverse] {
|
|
200
|
-
text-decoration: none;
|
|
201
|
-
color: var(--foreground-neutral-inverse-on-surface);
|
|
202
|
-
}
|
|
203
|
-
body[data-bspk] a[data-subtle-inverse]:not([disabled]):hover, body[data-bspk] a[data-subtle-inverse]:not([disabled])[data-pseudo=hover],
|
|
204
|
-
body[data-bspk] [data-bspk=link][data-subtle-inverse]:not([disabled]):hover,
|
|
205
|
-
body[data-bspk] [data-bspk=link][data-subtle-inverse]:not([disabled])[data-pseudo=hover] {
|
|
206
|
-
text-decoration: underline;
|
|
207
|
-
color: var(--foreground-link-text-subtle-inverse-hovered);
|
|
208
|
-
}
|
|
209
|
-
body[data-bspk] a[data-subtle-inverse]:not([disabled]):active, body[data-bspk] a[data-subtle-inverse]:not([disabled])[data-pseudo=active],
|
|
210
|
-
body[data-bspk] [data-bspk=link][data-subtle-inverse]:not([disabled]):active,
|
|
211
|
-
body[data-bspk] [data-bspk=link][data-subtle-inverse]:not([disabled])[data-pseudo=active] {
|
|
212
|
-
text-decoration: underline;
|
|
213
|
-
color: var(--foreground-link-text-subtle-inverse-pressed);
|
|
214
|
-
}
|
|
215
|
-
body[data-bspk] a[data-subtle-inverse]:not([disabled]):visited, body[data-bspk] a[data-subtle-inverse]:not([disabled])[data-pseudo=visited],
|
|
216
|
-
body[data-bspk] [data-bspk=link][data-subtle-inverse]:not([disabled]):visited,
|
|
217
|
-
body[data-bspk] [data-bspk=link][data-subtle-inverse]:not([disabled])[data-pseudo=visited] {
|
|
218
|
-
color: var(--foreground-neutral-on-inverse-surface);
|
|
219
|
-
}
|
|
220
|
-
body[data-bspk] a[data-subtle-inverse][disabled],
|
|
221
|
-
body[data-bspk] [data-bspk=link][data-subtle-inverse][disabled] {
|
|
222
|
-
pointer-events: none;
|
|
223
|
-
color: var(--foreground-link-text-subtle-inversed-disabled);
|
|
224
|
-
}
|
|
225
|
-
|
|
226
145
|
[data-touch-target-parent] {
|
|
227
146
|
display: flex;
|
|
228
147
|
justify-content: center;
|
|
@@ -361,6 +280,77 @@ body[data-bspk] [data-bspk=link][data-subtle-inverse][disabled] {
|
|
|
361
280
|
display: none !important;
|
|
362
281
|
}
|
|
363
282
|
|
|
283
|
+
body[data-bspk] a:not([data-bspk]), [data-bspk=link] {
|
|
284
|
+
color: var(--foreground-link-text-default);
|
|
285
|
+
display: inline-flex;
|
|
286
|
+
flex-direction: row;
|
|
287
|
+
align-items: center;
|
|
288
|
+
gap: var(--spacing-sizing-01);
|
|
289
|
+
font: var(--labels-base);
|
|
290
|
+
}
|
|
291
|
+
body[data-bspk] a:not([disabled]):hover:not([data-bspk]), [data-bspk=link]:not([disabled]):hover, body[data-bspk] a:not([disabled])[data-pseudo=hover]:not([data-bspk]), [data-bspk=link]:not([disabled])[data-pseudo=hover] {
|
|
292
|
+
color: var(--foreground-link-text-default-hovered);
|
|
293
|
+
}
|
|
294
|
+
body[data-bspk] a:not([disabled]):active:not([data-bspk]), [data-bspk=link]:not([disabled]):active, body[data-bspk] a:not([disabled])[data-pseudo=active]:not([data-bspk]), [data-bspk=link]:not([disabled])[data-pseudo=active] {
|
|
295
|
+
color: var(--foreground-link-text-default);
|
|
296
|
+
filter: brightness(80%);
|
|
297
|
+
}
|
|
298
|
+
body[data-bspk] a:not([disabled]):visited:not([data-bspk]), [data-bspk=link]:not([disabled]):visited, body[data-bspk] a:not([disabled])[data-pseudo=visited]:not([data-bspk]), [data-bspk=link]:not([disabled])[data-pseudo=visited] {
|
|
299
|
+
color: var(--foreground-link-text-default-visited);
|
|
300
|
+
}
|
|
301
|
+
body[data-bspk] a[disabled]:not([data-bspk]), [disabled][data-bspk=link] {
|
|
302
|
+
pointer-events: none;
|
|
303
|
+
cursor: text;
|
|
304
|
+
color: var(--foreground-link-text-default-disabled);
|
|
305
|
+
}
|
|
306
|
+
body[data-bspk] a[data-subtle]:not([data-bspk]), [data-subtle][data-bspk=link] {
|
|
307
|
+
text-decoration: none;
|
|
308
|
+
color: var(--foreground-neutral-on-surface);
|
|
309
|
+
}
|
|
310
|
+
body[data-bspk] a[data-subtle]:not([disabled]):hover:not([data-bspk]), [data-subtle][data-bspk=link]:not([disabled]):hover, body[data-bspk] a[data-subtle]:not([disabled])[data-pseudo=hover]:not([data-bspk]), [data-subtle][data-bspk=link]:not([disabled])[data-pseudo=hover] {
|
|
311
|
+
text-decoration: underline;
|
|
312
|
+
color: var(--foreground-link-text-subtle-hovered);
|
|
313
|
+
}
|
|
314
|
+
body[data-bspk] a[data-subtle]:not([disabled]):active:not([data-bspk]), [data-subtle][data-bspk=link]:not([disabled]):active, body[data-bspk] a[data-subtle]:not([disabled])[data-pseudo=active]:not([data-bspk]), [data-subtle][data-bspk=link]:not([disabled])[data-pseudo=active] {
|
|
315
|
+
text-decoration: underline;
|
|
316
|
+
color: var(--foreground-link-text-subtle-pressed);
|
|
317
|
+
}
|
|
318
|
+
body[data-bspk] a[data-subtle]:not([disabled]):visited:not([data-bspk]), [data-subtle][data-bspk=link]:not([disabled]):visited, body[data-bspk] a[data-subtle]:not([disabled])[data-pseudo=visited]:not([data-bspk]), [data-subtle][data-bspk=link]:not([disabled])[data-pseudo=visited] {
|
|
319
|
+
color: var(--foreground-neutral-on-surface);
|
|
320
|
+
}
|
|
321
|
+
body[data-bspk] a[data-subtle][disabled]:not([data-bspk]), [data-subtle][disabled][data-bspk=link] {
|
|
322
|
+
pointer-events: none;
|
|
323
|
+
color: var(--foreground-link-text-subtle-disabled);
|
|
324
|
+
}
|
|
325
|
+
body[data-bspk] a[data-subtle-inverse]:not([data-bspk]), [data-subtle-inverse][data-bspk=link] {
|
|
326
|
+
text-decoration: none;
|
|
327
|
+
color: var(--foreground-neutral-inverse-on-surface);
|
|
328
|
+
}
|
|
329
|
+
body[data-bspk] a[data-subtle-inverse]:not([disabled]):hover:not([data-bspk]), [data-subtle-inverse][data-bspk=link]:not([disabled]):hover, body[data-bspk] a[data-subtle-inverse]:not([disabled])[data-pseudo=hover]:not([data-bspk]), [data-subtle-inverse][data-bspk=link]:not([disabled])[data-pseudo=hover] {
|
|
330
|
+
text-decoration: underline;
|
|
331
|
+
color: var(--foreground-link-text-subtle-inverse-hovered);
|
|
332
|
+
}
|
|
333
|
+
body[data-bspk] a[data-subtle-inverse]:not([disabled]):active:not([data-bspk]), [data-subtle-inverse][data-bspk=link]:not([disabled]):active, body[data-bspk] a[data-subtle-inverse]:not([disabled])[data-pseudo=active]:not([data-bspk]), [data-subtle-inverse][data-bspk=link]:not([disabled])[data-pseudo=active] {
|
|
334
|
+
text-decoration: underline;
|
|
335
|
+
color: var(--foreground-link-text-subtle-inverse-pressed);
|
|
336
|
+
}
|
|
337
|
+
body[data-bspk] a[data-subtle-inverse]:not([disabled]):visited:not([data-bspk]), [data-subtle-inverse][data-bspk=link]:not([disabled]):visited, body[data-bspk] a[data-subtle-inverse]:not([disabled])[data-pseudo=visited]:not([data-bspk]), [data-subtle-inverse][data-bspk=link]:not([disabled])[data-pseudo=visited] {
|
|
338
|
+
color: var(--foreground-neutral-on-inverse-surface);
|
|
339
|
+
}
|
|
340
|
+
body[data-bspk] a[data-subtle-inverse][disabled]:not([data-bspk]), [data-subtle-inverse][disabled][data-bspk=link] {
|
|
341
|
+
pointer-events: none;
|
|
342
|
+
color: var(--foreground-link-text-subtle-inversed-disabled);
|
|
343
|
+
}
|
|
344
|
+
body[data-bspk] a[data-size=large]:not([data-bspk]), [data-size=large][data-bspk=link] {
|
|
345
|
+
font: var(--labels-large);
|
|
346
|
+
}
|
|
347
|
+
body[data-bspk] a[data-size=small]:not([data-bspk]), [data-size=small][data-bspk=link] {
|
|
348
|
+
font: var(--labels-small);
|
|
349
|
+
}
|
|
350
|
+
body[data-bspk] a:not([data-bspk]) svg, [data-bspk=link] svg {
|
|
351
|
+
width: var(--spacing-sizing-05);
|
|
352
|
+
}
|
|
353
|
+
|
|
364
354
|
/** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */
|
|
365
355
|
`));
|
|
366
356
|
document.head.appendChild(style);
|
package/dist/types/common.d.ts
CHANGED
|
@@ -120,6 +120,7 @@ export type CommonPropsLibrary = {
|
|
|
120
120
|
};
|
|
121
121
|
export type CommonProps<K extends keyof CommonPropsLibrary> = Pick<CommonPropsLibrary, K>;
|
|
122
122
|
export type RequiredCommonProps<K extends keyof CommonPropsLibrary> = Required<Pick<CommonPropsLibrary, K>>;
|
|
123
|
+
/** The common properties for all input control components such as Input, TextArea, Select, etc. */
|
|
123
124
|
export type FieldControlProps<ValueType = string, ChangeContext = ChangeEvent<HTMLElement> | KeyboardEvent | undefined> = CommonProps<'aria-label' | 'disabled' | 'id' | 'invalid' | 'name' | 'readOnly' | 'required'> & {
|
|
124
125
|
/**
|
|
125
126
|
* The value of the field control.
|
|
@@ -133,6 +134,8 @@ export type FieldControlProps<ValueType = string, ChangeContext = ChangeEvent<HT
|
|
|
133
134
|
* @required
|
|
134
135
|
*/
|
|
135
136
|
onChange: (next: ValueType | undefined, event?: ChangeContext) => void;
|
|
137
|
+
'aria-describedby'?: string;
|
|
138
|
+
'aria-errormessage'?: string;
|
|
136
139
|
};
|
|
137
140
|
export type Brand = 'anywhere' | 'better-homes-gardens' | 'cartus' | 'century-21' | 'coldwell-banker' | 'corcoran' | 'denali-boss' | 'era' | 'sothebys';
|
|
138
141
|
/** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */
|
package/dist/types/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/types/common.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;;
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/types/common.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;;AAsLH,sDAAsD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bspk/ui",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.23",
|
|
4
4
|
"license": "CC-BY-4.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -40,7 +40,8 @@
|
|
|
40
40
|
"newc": "tsx .scripts/tasks/new-component.ts",
|
|
41
41
|
"create:tests": "tsx .scripts/tasks/create-tests.ts",
|
|
42
42
|
"clean": "tsx .scripts/clean.ts",
|
|
43
|
-
"pr-check": "npx tsx .scripts/tasks/lint-components.ts && npm run lint && npm run lint:css && npx tsx .scripts/check-css-vars.ts && npm run build && npm run test"
|
|
43
|
+
"pr-check": "npx tsx .scripts/tasks/lint-components.ts && npm run lint && npm run lint:css && npx tsx .scripts/check-css-vars.ts && npm run build && npm run test",
|
|
44
|
+
"pr": "npm run pr-check && git push --set-upstream origin origin $(git symbolic-ref --short HEAD) && open \"https://github.com/Anywhererealestate/bspk-ui/compare/dev...$(git symbolic-ref --short HEAD)\""
|
|
44
45
|
},
|
|
45
46
|
"static-exports": {
|
|
46
47
|
"./*": "./dist/*.js"
|
|
@@ -107,8 +108,6 @@
|
|
|
107
108
|
"./FileUploadItem/*": "./dist/components/FileUploadItem/*.js",
|
|
108
109
|
"./Flex": "./dist/components/Flex/index.js",
|
|
109
110
|
"./Flex/*": "./dist/components/Flex/*.js",
|
|
110
|
-
"./FormField": "./dist/components/FormField/index.js",
|
|
111
|
-
"./FormField/*": "./dist/components/FormField/*.js",
|
|
112
111
|
"./Grid": "./dist/components/Grid/index.js",
|
|
113
112
|
"./Grid/*": "./dist/components/Grid/*.js",
|
|
114
113
|
"./Img": "./dist/components/Img/index.js",
|
|
@@ -130,7 +130,7 @@ export function Accordion({ items: itemsProp, singleOpen = true }: AccordionProp
|
|
|
130
130
|
{items.map(({ children, title, subtitle: subtitle, leading, trailing, disabled, id }, index) => {
|
|
131
131
|
const isOpen = openSections.includes(id);
|
|
132
132
|
return (
|
|
133
|
-
<section data-disabled={disabled || undefined} id={id} key={id || index}>
|
|
133
|
+
<section data-bspk="accordion-item" data-disabled={disabled || undefined} id={id} key={id || index}>
|
|
134
134
|
<button
|
|
135
135
|
aria-controls={`${id}-content`}
|
|
136
136
|
aria-expanded={isOpen}
|
|
@@ -147,7 +147,7 @@ export function Accordion({ items: itemsProp, singleOpen = true }: AccordionProp
|
|
|
147
147
|
<span data-arrow>{isOpen ? <SvgKeyboardArrowUp /> : <SvgKeyboardArrowDown />}</span>
|
|
148
148
|
</button>
|
|
149
149
|
{isOpen && (
|
|
150
|
-
<div data-content
|
|
150
|
+
<div data-content id={`${id}-content`}>
|
|
151
151
|
{children}
|
|
152
152
|
</div>
|
|
153
153
|
)}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
[data-bspk='accordion'] {
|
|
2
|
+
display: block;
|
|
2
3
|
width: 100%;
|
|
3
4
|
padding: var(--spacing-sizing-02);
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
&:empty {
|
|
7
|
+
display: none;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
> [data-bspk='accordion-item'] {
|
|
6
11
|
--border-bottom-color: var(--stroke-neutral-base);
|
|
7
12
|
|
|
8
13
|
display: flex;
|
|
@@ -54,6 +59,10 @@
|
|
|
54
59
|
align-items: center;
|
|
55
60
|
justify-content: center;
|
|
56
61
|
margin-left: var(--spacing-sizing-02);
|
|
62
|
+
|
|
63
|
+
svg {
|
|
64
|
+
width: var(--spacing-sizing-06);
|
|
65
|
+
}
|
|
57
66
|
}
|
|
58
67
|
|
|
59
68
|
&:not(:disabled) {
|
|
@@ -21,7 +21,6 @@ export type BottomNavigationProps = Pick<TabListProps, 'label' | 'onChange' | 'o
|
|
|
21
21
|
*
|
|
22
22
|
* @example
|
|
23
23
|
* import { BottomNavigation } from '@bspk/ui/BottomNavigation';
|
|
24
|
-
* import { useState } from 'react';
|
|
25
24
|
*
|
|
26
25
|
* () => {
|
|
27
26
|
* const [value, setValue] = useState<string>('1');
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
[data-bspk='button'] {
|
|
2
|
+
display: flex;
|
|
2
3
|
flex-direction: row;
|
|
3
4
|
gap: var(--spacing-sizing-02);
|
|
4
5
|
border: none;
|
|
@@ -137,6 +138,7 @@
|
|
|
137
138
|
[data-pseudo='focus'] > &,
|
|
138
139
|
&:focus-visible {
|
|
139
140
|
outline: solid 2px var(--stroke-neutral-focus);
|
|
141
|
+
isolation: isolate;
|
|
140
142
|
}
|
|
141
143
|
}
|
|
142
144
|
|
|
@@ -173,6 +175,7 @@
|
|
|
173
175
|
[data-pseudo='focus'] > &,
|
|
174
176
|
&:focus-visible {
|
|
175
177
|
outline: solid 2px var(--stroke-neutral-focus);
|
|
178
|
+
isolation: isolate;
|
|
176
179
|
}
|
|
177
180
|
}
|
|
178
181
|
|
|
@@ -207,6 +210,7 @@
|
|
|
207
210
|
[data-pseudo='focus'] > &,
|
|
208
211
|
&:focus-visible {
|
|
209
212
|
outline: solid 2px var(--stroke-neutral-focus);
|
|
213
|
+
isolation: isolate;
|
|
210
214
|
}
|
|
211
215
|
}
|
|
212
216
|
|
|
@@ -64,14 +64,14 @@ export type CheckboxProps = Omit<FieldControlProps, 'onChange' | 'readOnly' | 'v
|
|
|
64
64
|
*/
|
|
65
65
|
export function Checkbox({
|
|
66
66
|
checked: checkedProp = false,
|
|
67
|
-
indeterminate: indeterminateProp,
|
|
67
|
+
indeterminate: indeterminateProp = false,
|
|
68
68
|
invalid,
|
|
69
69
|
disabled,
|
|
70
70
|
required,
|
|
71
71
|
...props
|
|
72
72
|
}: ElementProps<CheckboxProps, 'input'>) {
|
|
73
|
+
const checked = !!checkedProp;
|
|
73
74
|
const indeterminate = !!indeterminateProp;
|
|
74
|
-
const checked = !!checkedProp && !indeterminate;
|
|
75
75
|
|
|
76
76
|
const inputRef = useRef<HTMLInputElement>();
|
|
77
77
|
|
|
@@ -100,7 +100,7 @@ export function Checkbox({
|
|
|
100
100
|
type="checkbox"
|
|
101
101
|
/>
|
|
102
102
|
<span aria-hidden>
|
|
103
|
-
{checked && (
|
|
103
|
+
{checked && !indeterminate && (
|
|
104
104
|
<svg data-checked fill="none" viewBox="0 0 14 11" xmlns="http://www.w3.org/2000/svg">
|
|
105
105
|
<path
|
|
106
106
|
d="M5.485 10.182a1 1 0 0 1-1.414 0l-3.03-3.03a1 1 0 0 1 0-1.415l.14-.141a1 1 0 0 1 1.415 0l2.182 2.182 6.626-6.627a1 1 0 0 1 1.414 0l.142.142a1 1 0 0 1 0 1.414l-7.475 7.475Z"
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import './checkbox-group.scss';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { ToggleOptionProps, ToggleOption } from '-/components/ToggleOption';
|
|
2
|
+
import { CheckboxOption, CheckboxOptionProps } from '-/components/CheckboxOption';
|
|
3
|
+
import { useId } from '-/hooks/useId';
|
|
5
4
|
import { ElementProps, FieldControlProps } from '-/types/common';
|
|
6
5
|
|
|
7
6
|
const ALL_LABEL = 'All';
|
|
8
7
|
|
|
9
|
-
export type CheckboxGroupOption =
|
|
10
|
-
Pick<ToggleOptionProps, 'description' | 'disabled' | 'label'>;
|
|
8
|
+
export type CheckboxGroupOption = Omit<CheckboxOptionProps, 'name' | 'onChange'>;
|
|
11
9
|
|
|
12
10
|
export type CheckboxGroupProps = Omit<FieldControlProps<string[]>, 'readOnly'> & {
|
|
13
11
|
/**
|
|
@@ -31,7 +29,7 @@ export type CheckboxGroupProps = Omit<FieldControlProps<string[]>, 'readOnly'> &
|
|
|
31
29
|
*/
|
|
32
30
|
selectAll?: boolean;
|
|
33
31
|
/** The props for the select all checkbox. */
|
|
34
|
-
selectAllProps?:
|
|
32
|
+
selectAllProps?: Pick<CheckboxOptionProps, 'aria-label' | 'description' | 'label'>;
|
|
35
33
|
};
|
|
36
34
|
|
|
37
35
|
/**
|
|
@@ -73,64 +71,51 @@ export function CheckboxGroup({
|
|
|
73
71
|
selectAll,
|
|
74
72
|
selectAllProps,
|
|
75
73
|
disabled = false,
|
|
76
|
-
invalid
|
|
77
|
-
required,
|
|
74
|
+
invalid = false,
|
|
78
75
|
id: idProp,
|
|
79
|
-
'aria-describedby':
|
|
80
|
-
'aria-errormessage':
|
|
76
|
+
'aria-describedby': ariaDescribedBy,
|
|
77
|
+
'aria-errormessage': ariaErrorMessage,
|
|
78
|
+
required,
|
|
81
79
|
...props
|
|
82
80
|
}: ElementProps<CheckboxGroupProps, 'div'>) {
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
required,
|
|
86
|
-
disabled,
|
|
87
|
-
invalidProp,
|
|
88
|
-
});
|
|
81
|
+
const id = useId(idProp);
|
|
82
|
+
const availableOptions = options.filter((o) => !o.disabled);
|
|
89
83
|
|
|
90
84
|
return (
|
|
91
|
-
<div
|
|
92
|
-
{...props}
|
|
93
|
-
aria-describedby={ariaDescribedByProp || ariaDescribedBy || undefined}
|
|
94
|
-
data-bspk="checkbox-group"
|
|
95
|
-
id={id}
|
|
96
|
-
role="group"
|
|
97
|
-
>
|
|
85
|
+
<div {...props} aria-describedby={ariaDescribedBy || undefined} data-bspk="checkbox-group" id={id} role="group">
|
|
98
86
|
{selectAll && (
|
|
99
|
-
<
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
87
|
+
<CheckboxOption
|
|
88
|
+
aria-label={ALL_LABEL}
|
|
89
|
+
label={ALL_LABEL}
|
|
90
|
+
{...selectAllProps}
|
|
91
|
+
aria-errormessage={ariaErrorMessage || undefined}
|
|
92
|
+
checked={!!value.length && value.length === availableOptions.length}
|
|
93
|
+
data-testid="selectAll-Checkbox"
|
|
94
|
+
disabled={disabled}
|
|
95
|
+
indeterminate={!!value.length && value.length < availableOptions.length}
|
|
96
|
+
invalid={invalid || undefined}
|
|
97
|
+
name={name}
|
|
98
|
+
onChange={(checked) => onChange(checked ? availableOptions.map((o) => o.value) : [])}
|
|
99
|
+
value="all"
|
|
100
|
+
/>
|
|
113
101
|
)}
|
|
114
102
|
{options.map(({ label, description, value: optionValue, disabled: optionDisabled }) => (
|
|
115
|
-
<
|
|
103
|
+
<CheckboxOption
|
|
104
|
+
aria-errormessage={ariaErrorMessage || undefined}
|
|
105
|
+
aria-label={label}
|
|
106
|
+
checked={value.includes(optionValue)}
|
|
116
107
|
description={description}
|
|
117
108
|
disabled={disabled || optionDisabled}
|
|
109
|
+
invalid={invalid || undefined}
|
|
118
110
|
key={optionValue}
|
|
119
111
|
label={label}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
name={name}
|
|
128
|
-
onChange={(checked) => {
|
|
129
|
-
onChange(checked ? [...value, optionValue] : value.filter((v) => v !== optionValue));
|
|
130
|
-
}}
|
|
131
|
-
value={optionValue}
|
|
132
|
-
/>
|
|
133
|
-
</ToggleOption>
|
|
112
|
+
name={name}
|
|
113
|
+
onChange={(checked) => {
|
|
114
|
+
onChange(checked ? [...value, optionValue] : value.filter((v) => v !== optionValue));
|
|
115
|
+
}}
|
|
116
|
+
required={required}
|
|
117
|
+
value={optionValue}
|
|
118
|
+
/>
|
|
134
119
|
))}
|
|
135
120
|
</div>
|
|
136
121
|
);
|
|
@@ -68,6 +68,12 @@ export const CheckboxGroupExample: ComponentExample<CheckboxGroupProps> = {
|
|
|
68
68
|
disabled: true,
|
|
69
69
|
},
|
|
70
70
|
{ label: 'Option 3', value: 'option3', description: 'Description for option 3' },
|
|
71
|
+
{
|
|
72
|
+
label: 'Option 4',
|
|
73
|
+
value: 'option4',
|
|
74
|
+
description:
|
|
75
|
+
'This is a very long label for option 4 that never seems to end and just goes on and on without stopping',
|
|
76
|
+
},
|
|
71
77
|
],
|
|
72
78
|
},
|
|
73
79
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { CheckboxGroup, CheckboxGroupProps } from '-/components/CheckboxGroup';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { Fieldset, propsWithAria, ComposedFieldProps } from '-/components/Field';
|
|
3
|
+
import { useId } from '-/hooks/useId';
|
|
4
4
|
|
|
5
|
-
export type CheckboxGroupFieldProps =
|
|
5
|
+
export type CheckboxGroupFieldProps = ComposedFieldProps<CheckboxGroupProps>;
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* A field wrapper for the CheckboxGroup component.
|
|
@@ -20,17 +20,22 @@ export function CheckboxGroupField({
|
|
|
20
20
|
labelTrailing,
|
|
21
21
|
errorMessage,
|
|
22
22
|
style,
|
|
23
|
+
id: idProp,
|
|
23
24
|
...controlProps
|
|
24
25
|
}: CheckboxGroupFieldProps) {
|
|
26
|
+
const id = useId(idProp);
|
|
25
27
|
return (
|
|
26
|
-
<
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
{
|
|
32
|
-
{
|
|
33
|
-
|
|
28
|
+
<Fieldset
|
|
29
|
+
controlId={id}
|
|
30
|
+
errorMessage={errorMessage}
|
|
31
|
+
helperText={helperText}
|
|
32
|
+
label={label}
|
|
33
|
+
labelTrailing={labelTrailing}
|
|
34
|
+
required={controlProps.required}
|
|
35
|
+
style={style}
|
|
36
|
+
>
|
|
37
|
+
<CheckboxGroup {...propsWithAria({ controlProps, id, errorMessage, helperText })} />
|
|
38
|
+
</Fieldset>
|
|
34
39
|
);
|
|
35
40
|
}
|
|
36
41
|
|
|
@@ -4,8 +4,7 @@ import { format, startOfToday } from 'date-fns';
|
|
|
4
4
|
import { useMemo, useState } from 'react';
|
|
5
5
|
import { Button } from '-/components/Button';
|
|
6
6
|
import { Calendar, parseDate } from '-/components/Calendar';
|
|
7
|
-
import {
|
|
8
|
-
import { InputElement, InputProps } from '-/components/Input';
|
|
7
|
+
import { Input, InputProps } from '-/components/Input';
|
|
9
8
|
import { useFloating } from '-/hooks/useFloating';
|
|
10
9
|
import { useOutsideClick } from '-/hooks/useOutsideClick';
|
|
11
10
|
import { FieldControlProps } from '-/types/common';
|
|
@@ -49,19 +48,15 @@ export type DatePickerProps = Omit<FieldControlProps, 'aria-label' | 'onChange'
|
|
|
49
48
|
* For a more complete example with field usage, see the DatePickerField component.
|
|
50
49
|
*
|
|
51
50
|
* @example
|
|
52
|
-
* import { DatePicker } from '
|
|
53
|
-
* import { Field, FieldLabel } from '@bspk/ui/Field';
|
|
54
|
-
* import { useState } from 'react';
|
|
51
|
+
* import { DatePicker } from '-/components/DatePicker';
|
|
55
52
|
*
|
|
56
53
|
* () => {
|
|
57
54
|
* const [fieldDate, setFieldDate] = useState<string>();
|
|
58
55
|
*
|
|
59
56
|
* return (
|
|
60
57
|
* <div style={{ width: 320 }}>
|
|
61
|
-
* <Field>
|
|
62
|
-
* <
|
|
63
|
-
* <DatePicker name="date1" onChange={setFieldDate} required value={fieldDate} />
|
|
64
|
-
* <FieldDescription>The date picker allows you to select a date.</FieldDescription>
|
|
58
|
+
* <Field controlId="date1" helperText="The date picker allows you to select a date." label="Date">
|
|
59
|
+
* <DatePicker id="date1" name="date1" onChange={setFieldDate} required value={fieldDate} />
|
|
65
60
|
* </Field>
|
|
66
61
|
* </div>
|
|
67
62
|
* );
|
|
@@ -78,20 +73,14 @@ export function DatePicker({
|
|
|
78
73
|
closeCalendarOnChange = true,
|
|
79
74
|
name,
|
|
80
75
|
placeholder,
|
|
81
|
-
invalid
|
|
76
|
+
invalid,
|
|
82
77
|
required = false,
|
|
83
78
|
size,
|
|
84
|
-
id
|
|
79
|
+
id,
|
|
85
80
|
'aria-label': ariaLabel = 'Enter or choose date',
|
|
81
|
+
'aria-describedby': ariaDescribedBy,
|
|
82
|
+
'aria-errormessage': ariaErrorMessage,
|
|
86
83
|
}: DatePickerProps) {
|
|
87
|
-
const { id, ariaDescribedBy, ariaErrorMessage, invalid } = useFieldInit({
|
|
88
|
-
idProp,
|
|
89
|
-
required,
|
|
90
|
-
disabled,
|
|
91
|
-
readOnly,
|
|
92
|
-
invalidProp,
|
|
93
|
-
});
|
|
94
|
-
|
|
95
84
|
const [calendarVisible, setCalendarVisible] = useState(false);
|
|
96
85
|
|
|
97
86
|
const { elements, floatingStyles } = useFloating({
|
|
@@ -118,7 +107,7 @@ export function DatePicker({
|
|
|
118
107
|
elements.setReference(node);
|
|
119
108
|
}}
|
|
120
109
|
>
|
|
121
|
-
<
|
|
110
|
+
<Input
|
|
122
111
|
aria-describedby={ariaDescribedBy || undefined}
|
|
123
112
|
aria-errormessage={ariaErrorMessage || undefined}
|
|
124
113
|
aria-label={ariaLabel}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useState } from 'react';
|
|
2
2
|
import { DatePicker, DatePickerProps } from '.';
|
|
3
|
-
import { Field
|
|
3
|
+
import { Field } from '-/components/Field';
|
|
4
4
|
import { ComponentExample } from '-/utils/demo';
|
|
5
5
|
|
|
6
6
|
export const DatePickerExample: ComponentExample<DatePickerProps> = {
|
|
@@ -19,10 +19,8 @@ export const Usage = () => {
|
|
|
19
19
|
|
|
20
20
|
return (
|
|
21
21
|
<div style={{ width: 320 }}>
|
|
22
|
-
<Field>
|
|
23
|
-
<
|
|
24
|
-
<DatePicker name="date1" onChange={setFieldDate} required value={fieldDate} />
|
|
25
|
-
<FieldDescription>The date picker allows you to select a date.</FieldDescription>
|
|
22
|
+
<Field controlId="date1" helperText="The date picker allows you to select a date." label="Date">
|
|
23
|
+
<DatePicker id="date1" name="date1" onChange={setFieldDate} required value={fieldDate} />
|
|
26
24
|
</Field>
|
|
27
25
|
</div>
|
|
28
26
|
);
|
|
@@ -3,7 +3,7 @@ import { hasNoBasicA11yIssues } from '-/rtl/hasNoBasicA11yIssues';
|
|
|
3
3
|
import { render } from '-/rtl/util';
|
|
4
4
|
|
|
5
5
|
const TestBed = () => (
|
|
6
|
-
<DatePickerField label="Example field label" name="example-field-name" onChange={() => {}} value=
|
|
6
|
+
<DatePickerField label="Example field label" name="example-field-name" onChange={() => {}} value="" />
|
|
7
7
|
);
|
|
8
8
|
|
|
9
9
|
describe('DatePickerField (RTL)', () => {
|