@simoncomputing/mui-bueno-v2 0.18.9 → 0.18.11

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 (23) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/@types/index.d.ts +2 -2
  3. package/dist/components/Form/Inputs/Autocomplete/Autocomplete.d.ts +2 -6
  4. package/dist/components/Form/Inputs/BaseInputProps.d.ts +22 -0
  5. package/dist/components/Form/Inputs/Checkbox/Checkbox.d.ts +6 -17
  6. package/dist/components/Form/Inputs/CheckboxGroup/CheckboxGroup.d.ts +4 -8
  7. package/dist/components/Form/Inputs/CitationField/CitationField.d.ts +6 -6
  8. package/dist/components/Form/Inputs/CitationField/CitationManager/BaseCitationManager.d.ts +5 -1
  9. package/dist/components/Form/Inputs/CitationField/CitationManager/CitationBubbleMenu.d.ts +1 -1
  10. package/dist/components/Form/Inputs/CitationField/CitationManager/CitationTable.d.ts +4 -0
  11. package/dist/components/Form/Inputs/CitationField/CitationManager/Poppers/DeleteCitationPopper/DeleteCitationPopper.d.ts +12 -0
  12. package/dist/components/Form/Inputs/CitationField/CitationManager/Poppers/LaunchUrlPopper/LaunchUrlPopper.d.ts +11 -0
  13. package/dist/components/Form/Inputs/DateField/DateField.d.ts +2 -6
  14. package/dist/components/Form/Inputs/FileUpload/FileUpload.d.ts +2 -6
  15. package/dist/components/Form/Inputs/Location/Location.d.ts +2 -6
  16. package/dist/components/Form/Inputs/RadioGroup/RadioGroup.d.ts +10 -9
  17. package/dist/components/Form/Inputs/Select/Select.d.ts +2 -6
  18. package/dist/components/Form/Inputs/Switch/Switch.d.ts +2 -6
  19. package/dist/components/Form/Inputs/TextField/TextField.d.ts +2 -6
  20. package/dist/index.cjs.js +107 -107
  21. package/dist/index.es.js +13309 -13211
  22. package/dist/index.umd.js +105 -105
  23. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -11,6 +11,40 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
11
11
  - Minor increment --> singlular/minor changes. Minimal breaking changes.
12
12
  - Patch increment --> singlular/minor changes. Zero breaking changes.
13
13
 
14
+ ## [0.18.11] - 2025-09-26
15
+
16
+ ### Added
17
+
18
+ - `CitationField`
19
+ - Added helper text for Classification field
20
+
21
+ - `CitationField`, `CitationManger`, `SelectableCitationManager`
22
+ - Added `canOpenPublicUrls` prop to enable launch url button to display for public source URLs
23
+
24
+ - `CitationManger`, `SelectableCitationManager`
25
+ - Added tooltips to actions (Edit, Delete, Download, Open URL)
26
+ - Improved performance of Delete popper by reducing unnecessary re-renders
27
+
28
+ - `RadioGroup`
29
+ - Added `helperText` prop
30
+
31
+ ### Changed
32
+
33
+ - `Radio`/`Checkbox`
34
+ - Renamed `sublabel` to `helperText`
35
+
36
+ ## [0.18.10] - 2025-09-25
37
+
38
+ ### Added
39
+
40
+ - All Form Input components (`Autocomplete`, `MultiAutocomplete`, `Checkbox`, `CheckboxGroup`, `CitationField`, `DateField`, `DateRangeField`, `FileUpload`, `Location`, `RadioGroup`, `Select`, `Switch`, `TextField`)
41
+ - added `collapseErrorWhenEmpty`, which will collapse or leave padding (default) for the internal `Error` component. (The value is passed directly to `Error`'s `collapseWhenEmpty` prop).
42
+
43
+ ### Removed
44
+
45
+ - `Checkbox`
46
+ - Removed `noError`. Migration: use `collapseErrorWhenEmpty` instead.
47
+
14
48
  ## [0.18.9] - 2025-09-25
15
49
 
16
50
  ### Changed
@@ -154,7 +154,7 @@ export interface AutocompleteOption<T> {
154
154
  * Can be string OR:
155
155
  * {
156
156
  * label: string; // UI label
157
- * sublabel?: string; // Smaller text that appears below UI label. Supplemental/help text.
157
+ * helperText?: string; // Smaller text that appears below UI label. Supplemental/help text.
158
158
  * withTextField?: string; // Displays textfield for additional information needed from user (ex. "Other" checkbox). At mininmum, make sure to pass in `name` property.
159
159
  * }
160
160
  */
@@ -162,7 +162,7 @@ export type CheckboxOption =
162
162
  | string
163
163
  | {
164
164
  label: string;
165
- sublabel?: string;
165
+ helperText?: string;
166
166
  textField?: TextFieldProps;
167
167
  };
168
168
 
@@ -1,10 +1,6 @@
1
1
  import { AutocompleteProps as MuiAutocompleteProps, TypographyProps } from '@mui/material';
2
- export type BaseAutocompleteProps<T> = {
3
- /**
4
- * Name of the component. Must match a key from initialValues in Formik.
5
- * @required
6
- */
7
- name: string;
2
+ import { BaseInputProps } from '../BaseInputProps';
3
+ export type BaseAutocompleteProps<T> = BaseInputProps & {
8
4
  /**
9
5
  * The label for the text field.
10
6
  * @recommended
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Base props for ALL inputs
3
+ *
4
+ * TODO: Add other shared props, if possible. Maybe `label`, `required`, etc.?
5
+ */
6
+ export type BaseInputProps = {
7
+ /**
8
+ * Must match a key from initialValues in Formik.
9
+ * @required
10
+ */
11
+ name: string;
12
+ /**
13
+ * When true, compoent will not take up space when no error(s) exist. This is recommended when
14
+ * validation is not needed.
15
+ *
16
+ * When false or undefined, component will take up space when no error(s) exist. This is recommended when
17
+ * the field and/or form requires validation, to prevent form jittering as errors show/hide.
18
+ *
19
+ * @default undefined
20
+ */
21
+ collapseErrorWhenEmpty?: boolean;
22
+ };
@@ -1,31 +1,26 @@
1
1
  import { CheckboxProps as MuiCheckboxProps, TypographyProps } from '@mui/material';
2
+ import { BaseInputProps } from '../BaseInputProps';
2
3
  import * as React from 'react';
3
- type BaseCheckboxProps = {
4
- /**
5
- * Must match a key from initialValues in Formik.
6
- * @required
7
- */
8
- name: string;
4
+ type BaseCheckboxProps = BaseInputProps & {
9
5
  /**
10
6
  * The label for the checkbox.
11
7
  * @recommended
12
8
  */
13
9
  label?: string;
14
10
  /**
15
- * Optional, additional label that appears below `label` and provides additional
16
- * context, if necessary.
11
+ * Helpful text that appears below `label` and provides additional context (optional)
17
12
  */
18
- sublabel?: string;
13
+ helperText?: string;
19
14
  /**
20
15
  * Where the label is placed in relation to the box.
21
16
  * @default 'end'
22
17
  */
23
18
  labelPlacement?: 'start' | 'end' | 'top' | 'bottom';
24
19
  /**
25
- * Vertical alignment of the label with respect to the checkbox. This is mainly for longer labels, or checkboxes with sublabels.
20
+ * Vertical alignment of the label with respect to the checkbox. This is mainly for longer labels, or checkboxes with helperText.
26
21
  * Only applied when `labelPlacement` is 'start' or 'end'.
27
22
  *
28
- * Center: Verticaly aligns the checkbox with the center of the label (& sublabel)
23
+ * Center: Verticaly aligns the checkbox with the center of the label (& helperText)
29
24
  *
30
25
  * Top: Vertically aligns the checkbox with the first line of the label
31
26
  *
@@ -49,12 +44,6 @@ type BaseCheckboxProps = {
49
44
  * Used to customize the label when the static label option is selected or the field is readOnly.
50
45
  */
51
46
  staticLabelProps?: TypographyProps;
52
- /**
53
- * Does not display error and does not leave padding for error.
54
- *
55
- * Use this if handling validation errors elsewhere.
56
- */
57
- noError?: boolean;
58
47
  };
59
48
  export type CheckboxProps = BaseCheckboxProps & Omit<MuiCheckboxProps, 'checked' | 'name'>;
60
49
  /**
@@ -1,11 +1,7 @@
1
1
  import { TypographyProps } from '@mui/material';
2
2
  import { CheckboxOption } from '../../../../@types';
3
- export type CheckboxGroupProps = {
4
- /**
5
- * Name and ID of the component. It should match a key in initialValues.
6
- * @required
7
- */
8
- name: string;
3
+ import { BaseInputProps } from '../BaseInputProps';
4
+ export type CheckboxGroupProps = BaseInputProps & {
9
5
  /**
10
6
  * Label for the checkbox group.
11
7
  * @recommended
@@ -40,10 +36,10 @@ export type CheckboxGroupProps = {
40
36
  */
41
37
  labelPlacement?: 'top' | 'start' | 'bottom' | 'end';
42
38
  /**
43
- * Vertical alignment of the label with respect to the checkboxes. This is mainly for longer labels, or checkboxes with sublabels.
39
+ * Vertical alignment of the label with respect to the checkboxes. This is mainly for longer labels, or checkboxes with helperText.
44
40
  * Only applied when `labelPlacement` is 'start' or 'end'.
45
41
  *
46
- * Center: Verticaly aligns the checkbox with the center of the label (& sublabel)
42
+ * Center: Verticaly aligns the checkbox with the center of the label (& helperText)
47
43
  *
48
44
  * Top: Vertically aligns the checkbox with the first line of the label
49
45
  *
@@ -1,10 +1,6 @@
1
1
  import { Citation, PageState, PageResponse, UnsavedCitation } from '../../../../@types';
2
- export type CitationFieldProps = {
3
- /**
4
- * Name and ID of the component. Must match a key from initialValues in Formik.
5
- * @required
6
- */
7
- name: string;
2
+ import { BaseInputProps } from '../BaseInputProps';
3
+ export type CitationFieldProps = BaseInputProps & {
8
4
  /**
9
5
  * (Optional) Label. NOTE: this won't be floating, it's always static.
10
6
  */
@@ -88,6 +84,10 @@ export type CitationFieldProps = {
88
84
  * NOTE: This feature is a prototype and is not fully implemented.
89
85
  */
90
86
  notApplicableName?: string;
87
+ /**
88
+ * When true, users have the option to open public urls
89
+ */
90
+ canOpenPublicUrls?: boolean;
91
91
  };
92
92
  /**
93
93
  * Rich Text field -- uses MUI Tip Tap
@@ -62,6 +62,10 @@ export interface BaseCitationManagerProps {
62
62
  * Additional actions to be displayed for each row. Will be inserted in between Download (if applicable) and Edit button.
63
63
  */
64
64
  addlActions?: (citation: Citation) => ReactNode;
65
+ /**
66
+ * When true, users have the option to open public urls
67
+ */
68
+ canOpenPublicUrls?: boolean;
65
69
  }
66
70
  export declare enum CitationManagerState {
67
71
  CITATIONS_TABLE = "Insert Citation/Attachment(s)",
@@ -77,5 +81,5 @@ export declare enum CitationManagerState {
77
81
  *
78
82
  * For in-line citations, see CitationField instead.
79
83
  */
80
- export declare function BaseCitationManager({ getCitationsPaginated, onCreateCitation, onUpdateCitation, onDeleteCitation, getCitationById, onDownloadAttachment, onSelectCitations, onCancel, initialSelectedIds, onContentChange, onError, renderAsSelectablePopup, addlActions, }: BaseCitationManagerProps): import("react/jsx-runtime").JSX.Element;
84
+ export declare function BaseCitationManager({ getCitationsPaginated, onCreateCitation, onUpdateCitation, onDeleteCitation, getCitationById, onDownloadAttachment, onSelectCitations, onCancel, initialSelectedIds, onContentChange, onError, renderAsSelectablePopup, addlActions, canOpenPublicUrls, }: BaseCitationManagerProps): import("react/jsx-runtime").JSX.Element;
81
85
  export default BaseCitationManager;
@@ -24,4 +24,4 @@ export type CitationBubbleMenuProps = Partial<Except<ControlledBubbleMenuProps,
24
24
  * update, which will happen if it's a child of the component using
25
25
  * `useEditor`).
26
26
  */
27
- export default function CitationBubbleMenuTipTap({ getCitationsPaginated, onCreateCitation, onUpdateCitation, onDeleteCitation, getCitationById, onDownloadAttachment, ...controlledBubbleMenuProps }: CitationBubbleMenuProps): import("react/jsx-runtime").JSX.Element | null;
27
+ export default function CitationBubbleMenuTipTap({ getCitationsPaginated, onCreateCitation, onUpdateCitation, onDeleteCitation, getCitationById, onDownloadAttachment, canOpenPublicUrls, ...controlledBubbleMenuProps }: CitationBubbleMenuProps): import("react/jsx-runtime").JSX.Element | null;
@@ -43,6 +43,10 @@ export type CitationTableProps = {
43
43
  * When true, edit citation icon buttons will display for each row.
44
44
  */
45
45
  canEdit?: boolean;
46
+ /**
47
+ * When true, users can open public urls
48
+ */
49
+ canOpenPublicUrls?: boolean;
46
50
  /**
47
51
  * Additional actions to be displayed for each row. Will be inserted in between Download (if applicable) and Edit button.
48
52
  */
@@ -0,0 +1,12 @@
1
+ import { Citation } from '../../../../../../../@types';
2
+ type Props = {
3
+ citation: Citation | null;
4
+ anchorEl: HTMLElement | null;
5
+ onDeleteCitation?: (id: number) => Promise<void>;
6
+ onClose: () => void;
7
+ };
8
+ /**
9
+ * Popper to ask the user to confirm if they want to delete the citation.
10
+ */
11
+ declare const DeleteCitationPopper: (props: Props) => import("react/jsx-runtime").JSX.Element | undefined;
12
+ export default DeleteCitationPopper;
@@ -0,0 +1,11 @@
1
+ import { Citation } from '../../../../../../../@types';
2
+ type Props = {
3
+ citation: Citation | null;
4
+ anchorEl: HTMLElement | null;
5
+ onClose: () => void;
6
+ };
7
+ /**
8
+ * Popper to ask the user to confirm if they want to navigate to the citation's URL.
9
+ */
10
+ declare const LaunchLinkPopper: (props: Props) => import("react/jsx-runtime").JSX.Element;
11
+ export default LaunchLinkPopper;
@@ -3,13 +3,9 @@ import { DateFieldProps as MuiDateFieldProps } from '@mui/x-date-pickers/DateFie
3
3
  import { Dayjs } from 'dayjs';
4
4
  import { DatePickerProps } from '@mui/x-date-pickers/DatePicker';
5
5
  import { DateValidationError, PickerChangeHandlerContext } from '@mui/x-date-pickers';
6
+ import { BaseInputProps } from '../BaseInputProps';
6
7
  import * as React from 'react';
7
- type BaseDateFieldProps = {
8
- /**
9
- * Name and ID of the component. Must match a key from initialValues in Formik.
10
- * @required
11
- */
12
- name: string;
8
+ type BaseDateFieldProps = BaseInputProps & {
13
9
  /**
14
10
  * Label for the Date field. `name` will be used if none is provided
15
11
  */
@@ -1,11 +1,7 @@
1
1
  import { TypographyProps } from '@mui/material';
2
+ import { BaseInputProps } from '../BaseInputProps';
2
3
  import * as React from 'react';
3
- export type FileUploadProps = {
4
- /**
5
- * Must match a key from initialValues in Formik.
6
- * @required
7
- */
8
- name: string;
4
+ export type FileUploadProps = BaseInputProps & {
9
5
  /**
10
6
  * File extensions that FileUpload will accept. Does NOT restrict files selected via drag & drop.
11
7
  *
@@ -1,12 +1,8 @@
1
1
  import { TypographyProps } from '@mui/material';
2
2
  import { TextFieldProps } from '../TextField/TextField';
3
+ import { BaseInputProps } from '../BaseInputProps';
3
4
  import * as React from 'react';
4
- type BaseLocationProps = {
5
- /**
6
- * Name of the component. Must match the initialValue name in Formik.
7
- * @required
8
- */
9
- name: string;
5
+ type BaseLocationProps = BaseInputProps & {
10
6
  /**
11
7
  * API Key. Needed for Location to work.
12
8
  *
@@ -1,4 +1,5 @@
1
1
  import { RadioProps, RadioGroupProps as MuiRadioGroupProps, TypographyProps } from '@mui/material';
2
+ import { BaseInputProps } from '../BaseInputProps';
2
3
  type BaseRadioProps<T> = {
3
4
  /**
4
5
  * Value of the radio button
@@ -14,7 +15,7 @@ type BaseRadioProps<T> = {
14
15
  * Optional, additional label that appears below `label` and provides additional
15
16
  * context, if necessary.
16
17
  */
17
- sublabel?: string;
18
+ helperText?: string;
18
19
  };
19
20
  /**
20
21
  * *Interface used exclusively for creating radio buttons within RadioGroup*
@@ -24,12 +25,7 @@ type BaseRadioProps<T> = {
24
25
  * define and create the radio buttons.
25
26
  */
26
27
  export type Radio<T> = BaseRadioProps<T> & Omit<RadioProps, 'checked' | 'id' | 'required' | 'value'>;
27
- type BaseRadioGroupProps<T> = {
28
- /**
29
- * Name and ID of the component. It should match a key in initialValues.
30
- * @required
31
- */
32
- name: string;
28
+ type BaseRadioGroupProps<T> = BaseInputProps & {
33
29
  /**
34
30
  * Label for the radio group.
35
31
  * @recommended
@@ -68,10 +64,10 @@ type BaseRadioGroupProps<T> = {
68
64
  */
69
65
  labelPlacement?: 'top' | 'start' | 'bottom' | 'end';
70
66
  /**
71
- * Vertical alignment of the label with respect to the radio buttons. This is mainly for longer labels, or radio buttons with sublabels.
67
+ * Vertical alignment of the label with respect to the radio buttons. This is mainly for longer labels, or radio buttons with helperText.
72
68
  * Only applied when `labelPlacement` is 'start' or 'end'.
73
69
  *
74
- * Center: Verticaly aligns the radio button with the center of the label (& sublabel)
70
+ * Center: Verticaly aligns the radio button with the center of the label (& helperText)
75
71
  *
76
72
  * Top: Vertically aligns the radio button with the first line of the label
77
73
  *
@@ -108,6 +104,11 @@ type BaseRadioGroupProps<T> = {
108
104
  * Used to customize the label when the static label option is selected or the field is readOnly.
109
105
  */
110
106
  staticLabelProps?: TypographyProps;
107
+ /**
108
+ * Used to show more information to help the user understand the RadioGroup label.
109
+ * NOTE: Radios have their own `helperText` for more fine-grained details about specific options.
110
+ */
111
+ helperText?: string;
111
112
  };
112
113
  export type RadioGroupProps<T> = BaseRadioGroupProps<T> & Omit<MuiRadioGroupProps, 'onChange' | 'name'>;
113
114
  /**
@@ -1,4 +1,5 @@
1
1
  import { SelectProps as MuiSelectProps, TypographyProps } from '@mui/material';
2
+ import { BaseInputProps } from '../BaseInputProps';
2
3
  import * as React from 'react';
3
4
  /**
4
5
  * *Interface used exclusively for creating the select menu within Select*
@@ -40,12 +41,7 @@ export interface SelectOption<T> {
40
41
  */
41
42
  required?: boolean;
42
43
  }
43
- type BaseSelectProps<T> = {
44
- /**
45
- * Must match the initialValue name in BForm.
46
- * @required
47
- */
48
- name: string;
44
+ type BaseSelectProps<T> = BaseInputProps & {
49
45
  /**
50
46
  * Label for the select component
51
47
  */
@@ -1,12 +1,8 @@
1
1
  import { SwitchProps as MuiSwitchProps, TypographyProps, Theme, SwitchPropsColorOverrides } from '@mui/material';
2
2
  import { OverridableStringUnion } from '@mui/types';
3
3
  import { SystemProps } from '@mui/system';
4
- export type BaseSwitchProps<T = boolean> = {
5
- /**
6
- * Name and ID of the component. Must match a key from initialValues in Formik.
7
- * @required
8
- */
9
- name: string;
4
+ import { BaseInputProps } from '../BaseInputProps';
5
+ export type BaseSwitchProps<T = boolean> = BaseInputProps & {
10
6
  /**
11
7
  * Label that goes next to the switch.
12
8
  * @recommended
@@ -1,11 +1,7 @@
1
1
  import { TypographyProps, TextFieldProps as MuiTextFieldProps } from '@mui/material';
2
+ import { BaseInputProps } from '../BaseInputProps';
2
3
  import * as React from 'react';
3
- type BaseTextFieldProps = {
4
- /**
5
- * Name and ID of the component. Must match a key from initialValues in Formik.
6
- * @required
7
- */
8
- name: string;
4
+ type BaseTextFieldProps = BaseInputProps & {
9
5
  /**
10
6
  * If true, ensures that user enters only input that matches the format.
11
7
  * Defaults to true if a format is specified.