@mittwald/flow-react-components 0.2.0-alpha.567 → 0.2.0-alpha.568
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/CHANGELOG.md +4 -0
- package/dist/assets/doc-properties.json +1910 -743
- package/dist/js/components/src/components/Autocomplete/Autocomplete.mjs +62 -50
- package/dist/js/components/src/components/Autocomplete/Autocomplete.mjs.map +1 -1
- package/dist/js/components/src/components/CartesianChart/CartesianChart.mjs +1 -0
- package/dist/js/components/src/components/CartesianChart/CartesianChart.mjs.map +1 -1
- package/dist/js/components/src/components/Checkbox/Checkbox.mjs +4 -11
- package/dist/js/components/src/components/Checkbox/Checkbox.mjs.map +1 -1
- package/dist/js/components/src/components/CheckboxButton/CheckboxButton.mjs +2 -19
- package/dist/js/components/src/components/CheckboxButton/CheckboxButton.mjs.map +1 -1
- package/dist/js/components/src/components/CheckboxGroup/CheckboxGroup.mjs +3 -3
- package/dist/js/components/src/components/CheckboxGroup/CheckboxGroup.mjs.map +1 -1
- package/dist/js/components/src/components/ComboBox/ComboBox.mjs +11 -37
- package/dist/js/components/src/components/ComboBox/ComboBox.mjs.map +1 -1
- package/dist/js/components/src/components/DateInput/DateInput.mjs +20 -0
- package/dist/js/components/src/components/DateInput/DateInput.mjs.map +1 -0
- package/dist/js/components/src/components/DatePicker/DatePicker.mjs +1 -6
- package/dist/js/components/src/components/DatePicker/DatePicker.mjs.map +1 -1
- package/dist/js/components/src/components/DatePicker/components/DateInput/DateInput.mjs +3 -2
- package/dist/js/components/src/components/DatePicker/components/DateInput/DateInput.mjs.map +1 -1
- package/dist/js/components/src/components/DateRangePicker/DateRangePicker.mjs +1 -6
- package/dist/js/components/src/components/DateRangePicker/DateRangePicker.mjs.map +1 -1
- package/dist/js/components/src/components/DateRangePicker/components/DateRangeInput/DateRangeInput.mjs +4 -3
- package/dist/js/components/src/components/DateRangePicker/components/DateRangeInput/DateRangeInput.mjs.map +1 -1
- package/dist/js/components/src/components/FileField/FileField.mjs +4 -10
- package/dist/js/components/src/components/FileField/FileField.mjs.map +1 -1
- package/dist/js/components/src/components/List/components/Header/components/ActiveFilters/ActiveFilters.mjs +1 -0
- package/dist/js/components/src/components/List/components/Header/components/ActiveFilters/ActiveFilters.mjs.map +1 -1
- package/dist/js/components/src/components/List/hooks/useAriaAnnounceSearchState.mjs +1 -0
- package/dist/js/components/src/components/List/hooks/useAriaAnnounceSearchState.mjs.map +1 -1
- package/dist/js/components/src/components/Markdown/Markdown.mjs.map +1 -1
- package/dist/js/components/src/components/MarkdownEditor/MarkdownEditor.mjs +19 -24
- package/dist/js/components/src/components/MarkdownEditor/MarkdownEditor.mjs.map +1 -1
- package/dist/js/components/src/components/MarkdownEditor/lib/modifyValueByMarkdownSyntax.mjs +2 -2
- package/dist/js/components/src/components/MarkdownEditor/lib/modifyValueByMarkdownSyntax.mjs.map +1 -1
- package/dist/js/components/src/components/MarkdownEditor/lib/modifyValueByType.mjs +1 -1
- package/dist/js/components/src/components/MarkdownEditor/lib/modifyValueByType.mjs.map +1 -1
- package/dist/js/components/src/components/Modal/components/OffCanvasSuspenseFallback/OffCanvasSuspenseFallback.mjs +1 -0
- package/dist/js/components/src/components/Modal/components/OffCanvasSuspenseFallback/OffCanvasSuspenseFallback.mjs.map +1 -1
- package/dist/js/components/src/components/NumberField/NumberField.mjs +4 -22
- package/dist/js/components/src/components/NumberField/NumberField.mjs.map +1 -1
- package/dist/js/components/src/components/Overlay/Overlay.mjs +1 -0
- package/dist/js/components/src/components/Overlay/Overlay.mjs.map +1 -1
- package/dist/js/components/src/components/Overlay/components/OverlaySuspenseFallback.mjs +1 -0
- package/dist/js/components/src/components/Overlay/components/OverlaySuspenseFallback.mjs.map +1 -1
- package/dist/js/components/src/components/PasswordCreationField/PasswordCreationField.mjs +8 -15
- package/dist/js/components/src/components/PasswordCreationField/PasswordCreationField.mjs.map +1 -1
- package/dist/js/components/src/components/Popover/Popover.mjs +1 -2
- package/dist/js/components/src/components/Popover/Popover.mjs.map +1 -1
- package/dist/js/components/src/components/SearchField/SearchField.mjs +6 -13
- package/dist/js/components/src/components/SearchField/SearchField.mjs.map +1 -1
- package/dist/js/components/src/components/SegmentedControl/SegmentedControl.mjs +3 -3
- package/dist/js/components/src/components/SegmentedControl/SegmentedControl.mjs.map +1 -1
- package/dist/js/components/src/components/Select/Select.mjs +5 -16
- package/dist/js/components/src/components/Select/Select.mjs.map +1 -1
- package/dist/js/components/src/components/Slider/Slider.mjs +2 -9
- package/dist/js/components/src/components/Slider/Slider.mjs.map +1 -1
- package/dist/js/components/src/components/Switch/Switch.mjs +6 -21
- package/dist/js/components/src/components/Switch/Switch.mjs.map +1 -1
- package/dist/js/components/src/components/TextArea/TextArea.mjs +13 -20
- package/dist/js/components/src/components/TextArea/TextArea.mjs.map +1 -1
- package/dist/js/components/src/components/TextField/TextField.mjs +4 -11
- package/dist/js/components/src/components/TextField/TextField.mjs.map +1 -1
- package/dist/js/components/src/components/TextFieldBase/TextFieldBase.mjs +9 -23
- package/dist/js/components/src/components/TextFieldBase/TextFieldBase.mjs.map +1 -1
- package/dist/js/components/src/components/TimeField/TimeField.mjs +3 -6
- package/dist/js/components/src/components/TimeField/TimeField.mjs.map +1 -1
- package/dist/js/components/src/components/Tooltip/Tooltip.mjs +1 -0
- package/dist/js/components/src/components/Tooltip/Tooltip.mjs.map +1 -1
- package/dist/js/components/src/integrations/react-hook-form/components/Field/Field.mjs +6 -7
- package/dist/js/components/src/integrations/react-hook-form/components/Field/Field.mjs.map +1 -1
- package/dist/js/components/src/integrations/react-hook-form/components/Form/Form.mjs +4 -6
- package/dist/js/components/src/integrations/react-hook-form/components/Form/Form.mjs.map +1 -1
- package/dist/js/components/src/integrations/react-hook-form/components/ResetButton/ResetButton.mjs +1 -3
- package/dist/js/components/src/integrations/react-hook-form/components/ResetButton/ResetButton.mjs.map +1 -1
- package/dist/js/components/src/integrations/react-hook-form/components/SubmitButton/SubmitButton.mjs +2 -2
- package/dist/js/components/src/lib/controller/overlay/OverlayController.mjs +6 -0
- package/dist/js/components/src/lib/controller/overlay/OverlayController.mjs.map +1 -1
- package/dist/js/components/src/lib/form/isFocused.mjs +8 -0
- package/dist/js/components/src/lib/form/isFocused.mjs.map +1 -0
- package/dist/js/components/src/lib/hooks/useFieldError.mjs +1 -0
- package/dist/js/components/src/lib/hooks/useFieldError.mjs.map +1 -1
- package/dist/js/components/src/lib/remote/eventHandlerContext.mjs +9 -0
- package/dist/js/components/src/lib/remote/eventHandlerContext.mjs.map +1 -0
- package/dist/js/components/src/lib/remote/useControlledHostValueProps.mjs +31 -0
- package/dist/js/components/src/lib/remote/useControlledHostValueProps.mjs.map +1 -0
- package/dist/js/components/src/lib/remote/useControlledRemoteValueProps.mjs +20 -0
- package/dist/js/components/src/lib/remote/useControlledRemoteValueProps.mjs.map +1 -0
- package/dist/js/default.mjs +2 -0
- package/dist/js/default.mjs.map +1 -1
- package/dist/js/flr-universal.mjs +1 -0
- package/dist/js/flr-universal.mjs.map +1 -1
- package/dist/types/components/Autocomplete/Autocomplete.d.ts +2 -2
- package/dist/types/components/Autocomplete/Autocomplete.d.ts.map +1 -1
- package/dist/types/components/Checkbox/Checkbox.d.ts +3 -4
- package/dist/types/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/types/components/CheckboxButton/CheckboxButton.d.ts +2 -4
- package/dist/types/components/CheckboxButton/CheckboxButton.d.ts.map +1 -1
- package/dist/types/components/ComboBox/ComboBox.d.ts +3 -6
- package/dist/types/components/ComboBox/ComboBox.d.ts.map +1 -1
- package/dist/types/components/DateInput/DateInput.d.ts +8 -0
- package/dist/types/components/DateInput/DateInput.d.ts.map +1 -0
- package/dist/types/components/DateInput/index.d.ts +3 -0
- package/dist/types/components/DateInput/index.d.ts.map +1 -0
- package/dist/types/components/DatePicker/DatePicker.d.ts +2 -2
- package/dist/types/components/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/types/components/DatePicker/components/DateInput/DateInput.d.ts +2 -1
- package/dist/types/components/DatePicker/components/DateInput/DateInput.d.ts.map +1 -1
- package/dist/types/components/DateRangePicker/DateRangePicker.d.ts +2 -2
- package/dist/types/components/DateRangePicker/DateRangePicker.d.ts.map +1 -1
- package/dist/types/components/DateRangePicker/components/DateRangeInput/DateRangeInput.d.ts +2 -1
- package/dist/types/components/DateRangePicker/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/types/components/FileField/FileField.d.ts +1 -2
- package/dist/types/components/FileField/FileField.d.ts.map +1 -1
- package/dist/types/components/Header/Header.d.ts +1 -1
- package/dist/types/components/List/typedList.d.ts +2 -2
- package/dist/types/components/Markdown/Markdown.d.ts +2 -2
- package/dist/types/components/Markdown/Markdown.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/MarkdownEditor.d.ts +3 -7
- package/dist/types/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/lib/modifyValueByMarkdownSyntax.d.ts +2 -2
- package/dist/types/components/MarkdownEditor/lib/modifyValueByMarkdownSyntax.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/lib/modifyValueByType.d.ts +1 -1
- package/dist/types/components/MarkdownEditor/lib/modifyValueByType.d.ts.map +1 -1
- package/dist/types/components/NumberField/NumberField.d.ts +3 -4
- package/dist/types/components/NumberField/NumberField.d.ts.map +1 -1
- package/dist/types/components/PasswordCreationField/PasswordCreationField.d.ts.map +1 -1
- package/dist/types/components/Popover/Popover.d.ts +1 -1
- package/dist/types/components/Popover/Popover.d.ts.map +1 -1
- package/dist/types/components/SearchField/SearchField.d.ts.map +1 -1
- package/dist/types/components/SegmentedControl/SegmentedControl.d.ts +3 -3
- package/dist/types/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/types/components/Select/Select.d.ts +2 -5
- package/dist/types/components/Select/Select.d.ts.map +1 -1
- package/dist/types/components/Slider/Slider.d.ts +3 -3
- package/dist/types/components/Slider/Slider.d.ts.map +1 -1
- package/dist/types/components/Switch/Switch.d.ts +2 -2
- package/dist/types/components/Switch/Switch.d.ts.map +1 -1
- package/dist/types/components/TextArea/TextArea.d.ts.map +1 -1
- package/dist/types/components/TextField/TextField.d.ts.map +1 -1
- package/dist/types/components/TextFieldBase/TextFieldBase.d.ts.map +1 -1
- package/dist/types/components/TimeField/TimeField.d.ts +3 -3
- package/dist/types/components/TimeField/TimeField.d.ts.map +1 -1
- package/dist/types/index/default.d.ts +2 -0
- package/dist/types/index/default.d.ts.map +1 -1
- package/dist/types/integrations/react-hook-form/components/Field/Field.d.ts.map +1 -1
- package/dist/types/integrations/react-hook-form/components/Form/Form.d.ts +2 -2
- package/dist/types/integrations/react-hook-form/components/Form/Form.d.ts.map +1 -1
- package/dist/types/integrations/react-hook-form/components/ResetButton/ResetButton.d.ts +1 -1
- package/dist/types/integrations/react-hook-form/components/ResetButton/ResetButton.d.ts.map +1 -1
- package/dist/types/integrations/react-hook-form/components/SubmitButton/SubmitButton.d.ts +1 -1
- package/dist/types/lib/controller/overlay/OverlayController.d.ts.map +1 -1
- package/dist/types/lib/form/isFocused.d.ts +2 -0
- package/dist/types/lib/form/isFocused.d.ts.map +1 -0
- package/dist/types/lib/remote/eventHandlerContext.d.ts +11 -0
- package/dist/types/lib/remote/eventHandlerContext.d.ts.map +1 -0
- package/dist/types/lib/remote/types.d.ts +6 -0
- package/dist/types/lib/remote/types.d.ts.map +1 -0
- package/dist/types/lib/remote/useControlledHostValueProps.d.ts +18 -0
- package/dist/types/lib/remote/useControlledHostValueProps.d.ts.map +1 -0
- package/dist/types/lib/remote/useControlledRemoteValueProps.d.ts +11 -0
- package/dist/types/lib/remote/useControlledRemoteValueProps.d.ts.map +1 -0
- package/package.json +5 -4
- package/dist/js/components/src/lib/hooks/useManagedValue.mjs +0 -27
- package/dist/js/components/src/lib/hooks/useManagedValue.mjs.map +0 -1
- package/dist/js/components/src/lib/react/ReactAriaControlledValueFix.mjs +0 -65
- package/dist/js/components/src/lib/react/ReactAriaControlledValueFix.mjs.map +0 -1
- package/dist/js/components/src/lib/react/emitElementValueChange.mjs +0 -22
- package/dist/js/components/src/lib/react/emitElementValueChange.mjs.map +0 -1
- package/dist/types/lib/hooks/useManagedValue.d.ts +0 -13
- package/dist/types/lib/hooks/useManagedValue.d.ts.map +0 -1
- package/dist/types/lib/react/ReactAriaControlledValueFix.d.ts +0 -16
- package/dist/types/lib/react/ReactAriaControlledValueFix.d.ts.map +0 -1
- package/dist/types/lib/react/ReactAriaControlledValueFix.test.d.ts +0 -2
- package/dist/types/lib/react/ReactAriaControlledValueFix.test.d.ts.map +0 -1
- package/dist/types/lib/react/emitElementValueChange.d.ts +0 -6
- package/dist/types/lib/react/emitElementValueChange.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.mjs","sources":["../../../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import { type PropsWithChildren } from \"react\";\nimport clsx from \"clsx\";\nimport { PropsContextProvider } from \"@/lib/propsContext\";\nimport * as Aria from \"react-aria-components\";\nimport { DateInput } from \"./components/DateInput\";\nimport styles from \"../FormField/FormField.module.scss\";\nimport { Popover } from \"@/components/Popover/Popover\";\nimport { useOverlayController } from \"@/lib/controller\";\nimport {\n flowComponent,\n type FlowComponentProps,\n} from \"@/lib/componentFactory/flowComponent\";\nimport { Calendar } from \"@/components/Calendar\";\nimport {
|
|
1
|
+
{"version":3,"file":"DatePicker.mjs","sources":["../../../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import { type PropsWithChildren } from \"react\";\nimport clsx from \"clsx\";\nimport { PropsContextProvider } from \"@/lib/propsContext\";\nimport * as Aria from \"react-aria-components\";\nimport { DateInput } from \"./components/DateInput\";\nimport styles from \"../FormField/FormField.module.scss\";\nimport { Popover } from \"@/components/Popover/Popover\";\nimport { useOverlayController } from \"@/lib/controller\";\nimport {\n flowComponent,\n type FlowComponentProps,\n} from \"@/lib/componentFactory/flowComponent\";\nimport { Calendar } from \"@/components/Calendar\";\nimport { useFieldComponent } from \"@/lib/hooks/useFieldComponent\";\n\nexport interface DatePickerProps<T extends Aria.DateValue = Aria.DateValue>\n extends PropsWithChildren<Omit<Aria.DatePickerProps<T>, \"children\" | \"ref\">>,\n FlowComponentProps<HTMLSpanElement> {}\n\n/** @flr-generate all */\nexport const DatePicker = flowComponent(\"DatePicker\", (props) => {\n const { children, className, onChange, ref, ...rest } = props;\n\n const {\n FieldErrorView,\n FieldErrorCaptureContext,\n fieldProps,\n fieldPropsContext,\n } = useFieldComponent(props);\n\n const rootClassName = clsx(styles.formField, className);\n\n const popoverController = useOverlayController(\"Popover\");\n\n return (\n <Aria.DatePicker\n {...rest}\n {...fieldProps}\n className={clsx(fieldProps.className, rootClassName)}\n onOpenChange={(v) => popoverController.setOpen(v)}\n isOpen={popoverController.isOpen}\n onChange={(value) => {\n if (onChange) {\n onChange(value);\n }\n popoverController.close();\n }}\n >\n <FieldErrorCaptureContext>\n <DateInput isDisabled={props.isDisabled} ref={ref} />\n <PropsContextProvider props={fieldPropsContext}>\n {children}\n </PropsContextProvider>\n <Popover\n placement=\"bottom end\"\n isDialogContent\n controller={popoverController}\n >\n <Calendar />\n </Popover>\n </FieldErrorCaptureContext>\n <FieldErrorView />\n </Aria.DatePicker>\n );\n});\n\nexport default DatePicker;\n"],"names":["styles"],"mappings":";;;;;;;;;;;;;;;;;;;AAoBO,MAAM,UAAA,GAAa,aAAA,CAAc,YAAA,EAAc,CAAC,KAAA,KAAU;AAC/D,EAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,UAAU,GAAA,EAAK,GAAG,MAAK,GAAI,KAAA;AAExD,EAAA,MAAM;AAAA,IACJ,cAAA;AAAA,IACA,wBAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF,GAAI,kBAAkB,KAAK,CAAA;AAE3B,EAAA,MAAM,aAAA,GAAgB,IAAA,CAAKA,eAAA,CAAO,SAAA,EAAW,SAAS,CAAA;AAEtD,EAAA,MAAM,iBAAA,GAAoB,qBAAqB,SAAS,CAAA;AAExD,EAAA,uBACE,IAAA;AAAA,IAAC,IAAA,CAAK,UAAA;AAAA,IAAL;AAAA,MACE,GAAG,IAAA;AAAA,MACH,GAAG,UAAA;AAAA,MACJ,SAAA,EAAW,IAAA,CAAK,UAAA,CAAW,SAAA,EAAW,aAAa,CAAA;AAAA,MACnD,YAAA,EAAc,CAAC,CAAA,KAAM,iBAAA,CAAkB,QAAQ,CAAC,CAAA;AAAA,MAChD,QAAQ,iBAAA,CAAkB,MAAA;AAAA,MAC1B,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,QAAA,CAAS,KAAK,CAAA;AAAA,QAChB;AACA,QAAA,iBAAA,CAAkB,KAAA,EAAM;AAAA,MAC1B,CAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,wBAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,SAAA,EAAA,EAAU,UAAA,EAAY,KAAA,CAAM,UAAA,EAAY,GAAA,EAAU,CAAA;AAAA,0BACnD,GAAA,CAAC,oBAAA,EAAA,EAAqB,KAAA,EAAO,iBAAA,EAC1B,QAAA,EACH,CAAA;AAAA,0BACA,GAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,YAAA;AAAA,cACV,eAAA,EAAe,IAAA;AAAA,cACf,UAAA,EAAY,iBAAA;AAAA,cAEZ,8BAAC,QAAA,EAAA,EAAS;AAAA;AAAA;AACZ,SAAA,EACF,CAAA;AAAA,4BACC,cAAA,EAAA,EAAe;AAAA;AAAA;AAAA,GAClB;AAEJ,CAAC;;;;"}
|
|
@@ -9,11 +9,12 @@ import '@tabler/icons-react';
|
|
|
9
9
|
import '../../../Icon/Icon.mjs';
|
|
10
10
|
import '../../../../views/IconView.mjs';
|
|
11
11
|
import { IconDate } from '../../../Icon/components/icons/IconDate.mjs';
|
|
12
|
+
import { DateInput as DateInput$1 } from '../../../DateInput/DateInput.mjs';
|
|
12
13
|
|
|
13
14
|
const DateInput = (props) => {
|
|
14
|
-
const { isDisabled } = props;
|
|
15
|
+
const { isDisabled, ref } = props;
|
|
15
16
|
return /* @__PURE__ */ jsxs(Aria.Group, { className: styles.dateInput, children: [
|
|
16
|
-
/* @__PURE__ */ jsx(
|
|
17
|
+
/* @__PURE__ */ jsx(DateInput$1, { ref }),
|
|
17
18
|
/* @__PURE__ */ jsx(Button, { variant: "plain", color: "secondary", isDisabled, children: /* @__PURE__ */ jsx(IconDate, {}) })
|
|
18
19
|
] });
|
|
19
20
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateInput.mjs","sources":["../../../../../../../../src/components/DatePicker/components/DateInput/DateInput.tsx"],"sourcesContent":["import type
|
|
1
|
+
{"version":3,"file":"DateInput.mjs","sources":["../../../../../../../../src/components/DatePicker/components/DateInput/DateInput.tsx"],"sourcesContent":["import { type FC, type Ref } from \"react\";\nimport styles from \"./DateInput.module.scss\";\nimport * as Aria from \"react-aria-components\";\nimport { Button } from \"@/components/Button\";\nimport { IconDate } from \"@/components/Icon/components/icons\";\nimport Input from \"@/components/DateInput\";\n\nexport interface DateInputProps {\n isDisabled?: boolean;\n ref?: Ref<HTMLSpanElement>;\n}\n\nexport const DateInput: FC<DateInputProps> = (props) => {\n const { isDisabled, ref } = props;\n\n return (\n <Aria.Group className={styles.dateInput}>\n <Input ref={ref} />\n <Button variant=\"plain\" color=\"secondary\" isDisabled={isDisabled}>\n <IconDate />\n </Button>\n </Aria.Group>\n );\n};\n\nexport default DateInput;\n"],"names":["Input"],"mappings":";;;;;;;;;;;AAYO,MAAM,SAAA,GAAgC,CAAC,KAAA,KAAU;AACtD,EAAA,MAAM,EAAE,UAAA,EAAY,GAAA,EAAI,GAAI,KAAA;AAE5B,EAAA,4BACG,IAAA,CAAK,KAAA,EAAL,EAAW,SAAA,EAAW,OAAO,SAAA,EAC5B,QAAA,EAAA;AAAA,oBAAA,GAAA,CAACA,eAAM,GAAA,EAAU,CAAA;AAAA,oBACjB,GAAA,CAAC,UAAO,OAAA,EAAQ,OAAA,EAAQ,OAAM,WAAA,EAAY,UAAA,EACxC,QAAA,kBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,CAAA,EACZ;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -12,8 +12,6 @@ import 'mobx';
|
|
|
12
12
|
import 'react';
|
|
13
13
|
import { useOverlayController } from '../../lib/controller/overlay/useOverlayController.mjs';
|
|
14
14
|
import { flowComponent } from '../../lib/componentFactory/flowComponent.mjs';
|
|
15
|
-
import { useMakeFocusable } from '../../lib/hooks/dom/useMakeFocusable.mjs';
|
|
16
|
-
import { useObjectRef } from '@react-aria/utils';
|
|
17
15
|
import { useFieldComponent } from '../../lib/hooks/useFieldComponent.mjs';
|
|
18
16
|
|
|
19
17
|
const DateRangePicker = flowComponent("DateRangePicker", (props) => {
|
|
@@ -26,12 +24,9 @@ const DateRangePicker = flowComponent("DateRangePicker", (props) => {
|
|
|
26
24
|
} = useFieldComponent(props);
|
|
27
25
|
const rootClassName = clsx(fieldProps.className, className);
|
|
28
26
|
const popoverController = useOverlayController("Popover");
|
|
29
|
-
const localDateRangePickerRef = useObjectRef(ref);
|
|
30
|
-
useMakeFocusable(localDateRangePickerRef);
|
|
31
27
|
return /* @__PURE__ */ jsxs(
|
|
32
28
|
Aria.DateRangePicker,
|
|
33
29
|
{
|
|
34
|
-
ref: localDateRangePickerRef,
|
|
35
30
|
...rest,
|
|
36
31
|
className: rootClassName,
|
|
37
32
|
onOpenChange: (v) => popoverController.setOpen(v),
|
|
@@ -44,7 +39,7 @@ const DateRangePicker = flowComponent("DateRangePicker", (props) => {
|
|
|
44
39
|
},
|
|
45
40
|
children: [
|
|
46
41
|
/* @__PURE__ */ jsxs(FieldErrorCaptureContext, { children: [
|
|
47
|
-
/* @__PURE__ */ jsx(DateRangeInput, { isDisabled: props.isDisabled }),
|
|
42
|
+
/* @__PURE__ */ jsx(DateRangeInput, { isDisabled: props.isDisabled, ref }),
|
|
48
43
|
/* @__PURE__ */ jsx(PropsContextProvider, { props: fieldPropsContext, children }),
|
|
49
44
|
/* @__PURE__ */ jsx(
|
|
50
45
|
Popover,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker.mjs","sources":["../../../../../../src/components/DateRangePicker/DateRangePicker.tsx"],"sourcesContent":["import type { PropsWithChildren } from \"react\";\nimport clsx from \"clsx\";\nimport { PropsContextProvider } from \"@/lib/propsContext\";\nimport * as Aria from \"react-aria-components\";\nimport { Popover } from \"@/components/Popover/Popover\";\nimport { RangeCalendar } from \"../Calendar/RangeCalendar\";\nimport { DateRangeInput } from \"./components/DateRangeInput\";\nimport { useOverlayController } from \"@/lib/controller\";\nimport {\n flowComponent,\n type FlowComponentProps,\n} from \"@/lib/componentFactory/flowComponent\";\nimport {
|
|
1
|
+
{"version":3,"file":"DateRangePicker.mjs","sources":["../../../../../../src/components/DateRangePicker/DateRangePicker.tsx"],"sourcesContent":["import type { PropsWithChildren } from \"react\";\nimport clsx from \"clsx\";\nimport { PropsContextProvider } from \"@/lib/propsContext\";\nimport * as Aria from \"react-aria-components\";\nimport { Popover } from \"@/components/Popover/Popover\";\nimport { RangeCalendar } from \"../Calendar/RangeCalendar\";\nimport { DateRangeInput } from \"./components/DateRangeInput\";\nimport { useOverlayController } from \"@/lib/controller\";\nimport {\n flowComponent,\n type FlowComponentProps,\n} from \"@/lib/componentFactory/flowComponent\";\nimport { useFieldComponent } from \"@/lib/hooks/useFieldComponent\";\n\nexport interface DateRangePickerProps<T extends Aria.DateValue = Aria.DateValue>\n extends PropsWithChildren<\n Omit<Aria.DateRangePickerProps<T>, \"children\" | \"ref\">\n >,\n FlowComponentProps<HTMLSpanElement> {}\n\n/** @flr-generate all */\nexport const DateRangePicker = flowComponent(\"DateRangePicker\", (props) => {\n const { children, className, onChange, ref, ...rest } = props;\n\n const {\n FieldErrorView,\n FieldErrorCaptureContext,\n fieldProps,\n fieldPropsContext,\n } = useFieldComponent(props);\n\n const rootClassName = clsx(fieldProps.className, className);\n\n const popoverController = useOverlayController(\"Popover\");\n\n return (\n <Aria.DateRangePicker\n {...rest}\n className={rootClassName}\n onOpenChange={(v) => popoverController.setOpen(v)}\n isOpen={popoverController.isOpen}\n onChange={(value) => {\n if (onChange) {\n onChange(value);\n }\n popoverController.close();\n }}\n >\n <FieldErrorCaptureContext>\n <DateRangeInput isDisabled={props.isDisabled} ref={ref} />\n <PropsContextProvider props={fieldPropsContext}>\n {children}\n </PropsContextProvider>\n <Popover\n placement=\"bottom end\"\n isDialogContent\n controller={popoverController}\n >\n <RangeCalendar />\n </Popover>\n </FieldErrorCaptureContext>\n <FieldErrorView />\n </Aria.DateRangePicker>\n );\n});\n\nexport default DateRangePicker;\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAqBO,MAAM,eAAA,GAAkB,aAAA,CAAc,iBAAA,EAAmB,CAAC,KAAA,KAAU;AACzE,EAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,UAAU,GAAA,EAAK,GAAG,MAAK,GAAI,KAAA;AAExD,EAAA,MAAM;AAAA,IACJ,cAAA;AAAA,IACA,wBAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF,GAAI,kBAAkB,KAAK,CAAA;AAE3B,EAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,UAAA,CAAW,SAAA,EAAW,SAAS,CAAA;AAE1D,EAAA,MAAM,iBAAA,GAAoB,qBAAqB,SAAS,CAAA;AAExD,EAAA,uBACE,IAAA;AAAA,IAAC,IAAA,CAAK,eAAA;AAAA,IAAL;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,SAAA,EAAW,aAAA;AAAA,MACX,YAAA,EAAc,CAAC,CAAA,KAAM,iBAAA,CAAkB,QAAQ,CAAC,CAAA;AAAA,MAChD,QAAQ,iBAAA,CAAkB,MAAA;AAAA,MAC1B,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,QAAA,CAAS,KAAK,CAAA;AAAA,QAChB;AACA,QAAA,iBAAA,CAAkB,KAAA,EAAM;AAAA,MAC1B,CAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,wBAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,cAAA,EAAA,EAAe,UAAA,EAAY,KAAA,CAAM,UAAA,EAAY,GAAA,EAAU,CAAA;AAAA,0BACxD,GAAA,CAAC,oBAAA,EAAA,EAAqB,KAAA,EAAO,iBAAA,EAC1B,QAAA,EACH,CAAA;AAAA,0BACA,GAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,YAAA;AAAA,cACV,eAAA,EAAe,IAAA;AAAA,cACf,UAAA,EAAY,iBAAA;AAAA,cAEZ,8BAAC,aAAA,EAAA,EAAc;AAAA;AAAA;AACjB,SAAA,EACF,CAAA;AAAA,4BACC,cAAA,EAAA,EAAe;AAAA;AAAA;AAAA,GAClB;AAEJ,CAAC;;;;"}
|
|
@@ -9,14 +9,15 @@ import '@tabler/icons-react';
|
|
|
9
9
|
import '../../../Icon/Icon.mjs';
|
|
10
10
|
import '../../../../views/IconView.mjs';
|
|
11
11
|
import { IconDate } from '../../../Icon/components/icons/IconDate.mjs';
|
|
12
|
+
import { DateInput } from '../../../DateInput/DateInput.mjs';
|
|
12
13
|
|
|
13
14
|
const DateRangeInput = (props) => {
|
|
14
|
-
const { isDisabled } = props;
|
|
15
|
+
const { isDisabled, ref } = props;
|
|
15
16
|
return /* @__PURE__ */ jsxs(Aria.Group, { className: styles.dateRangeInput, children: [
|
|
16
17
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
17
|
-
/* @__PURE__ */ jsx(
|
|
18
|
+
/* @__PURE__ */ jsx(DateInput, { slot: "start", ref }),
|
|
18
19
|
/* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "–" }),
|
|
19
|
-
/* @__PURE__ */ jsx(
|
|
20
|
+
/* @__PURE__ */ jsx(DateInput, { slot: "end" })
|
|
20
21
|
] }),
|
|
21
22
|
/* @__PURE__ */ jsx(Button, { variant: "plain", color: "secondary", isDisabled, children: /* @__PURE__ */ jsx(IconDate, {}) })
|
|
22
23
|
] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangeInput.mjs","sources":["../../../../../../../../src/components/DateRangePicker/components/DateRangeInput/DateRangeInput.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport React from \"react\";\nimport styles from \"./DateRangeInput.module.scss\";\nimport * as Aria from \"react-aria-components\";\nimport { Button } from \"@/components/Button\";\nimport { IconDate } from \"@/components/Icon/components/icons\";\n\nexport interface DateInputProps {\n isDisabled?: boolean;\n}\n\nexport const DateRangeInput: FC<DateInputProps> = (props) => {\n const { isDisabled } = props;\n\n return (\n <Aria.Group className={styles.dateRangeInput}>\n <div>\n <
|
|
1
|
+
{"version":3,"file":"DateRangeInput.mjs","sources":["../../../../../../../../src/components/DateRangePicker/components/DateRangeInput/DateRangeInput.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport React from \"react\";\nimport styles from \"./DateRangeInput.module.scss\";\nimport * as Aria from \"react-aria-components\";\nimport { Button } from \"@/components/Button\";\nimport { IconDate } from \"@/components/Icon/components/icons\";\nimport DateInput from \"@/components/DateInput\";\n\nexport interface DateInputProps {\n isDisabled?: boolean;\n ref?: React.Ref<HTMLSpanElement>;\n}\n\nexport const DateRangeInput: FC<DateInputProps> = (props) => {\n const { isDisabled, ref } = props;\n\n return (\n <Aria.Group className={styles.dateRangeInput}>\n <div>\n <DateInput slot=\"start\" ref={ref} />\n <span aria-hidden=\"true\">–</span>\n <DateInput slot=\"end\" />\n </div>\n <Button variant=\"plain\" color=\"secondary\" isDisabled={isDisabled}>\n <IconDate />\n </Button>\n </Aria.Group>\n );\n};\n\nexport default DateRangeInput;\n"],"names":[],"mappings":";;;;;;;;;;;AAaO,MAAM,cAAA,GAAqC,CAAC,KAAA,KAAU;AAC3D,EAAA,MAAM,EAAE,UAAA,EAAY,GAAA,EAAI,GAAI,KAAA;AAE5B,EAAA,4BACG,IAAA,CAAK,KAAA,EAAL,EAAW,SAAA,EAAW,OAAO,cAAA,EAC5B,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,SAAA,EAAA,EAAU,IAAA,EAAK,OAAA,EAAQ,GAAA,EAAU,CAAA;AAAA,sBAClC,GAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,MAAA,EAAO,QAAA,EAAA,GAAA,EAAC,CAAA;AAAA,sBAC1B,GAAA,CAAC,SAAA,EAAA,EAAU,IAAA,EAAK,KAAA,EAAM;AAAA,KAAA,EACxB,CAAA;AAAA,oBACA,GAAA,CAAC,UAAO,OAAA,EAAQ,OAAA,EAAQ,OAAM,WAAA,EAAY,UAAA,EACxC,QAAA,kBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,CAAA,EACZ;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -10,7 +10,6 @@ import '../../lib/propsContext/propsContext.mjs';
|
|
|
10
10
|
import { PropsContextProvider } from '../../lib/propsContext/components/PropsContextProvider.mjs';
|
|
11
11
|
import { useObjectRef } from '@react-aria/utils';
|
|
12
12
|
import { addAwaitedArrayBuffer } from '../../../../core/src/file.mjs';
|
|
13
|
-
import { useMakeFocusable } from '../../lib/hooks/dom/useMakeFocusable.mjs';
|
|
14
13
|
import { useFieldComponent } from '../../lib/hooks/useFieldComponent.mjs';
|
|
15
14
|
|
|
16
15
|
const FileField = flowComponent("FileField", (props) => {
|
|
@@ -43,19 +42,14 @@ const FileField = flowComponent("FileField", (props) => {
|
|
|
43
42
|
"aria-invalid": formValidationState.displayValidation.isInvalid,
|
|
44
43
|
value: void 0
|
|
45
44
|
};
|
|
46
|
-
const
|
|
45
|
+
const handleChange = (fileList) => {
|
|
47
46
|
if (fileList && onChange) {
|
|
48
47
|
Promise.all(Array.from(fileList).map(addAwaitedArrayBuffer)).then(
|
|
49
48
|
() => onChange(fileList)
|
|
50
49
|
);
|
|
51
50
|
}
|
|
52
51
|
};
|
|
53
|
-
|
|
54
|
-
const localInputRef = useObjectRef(inputRef);
|
|
55
|
-
useMakeFocusable(localRef, () => {
|
|
56
|
-
localInputRef.current?.focus();
|
|
57
|
-
});
|
|
58
|
-
return /* @__PURE__ */ jsx("div", { ...fieldProps, ref: localRef, children: /* @__PURE__ */ jsx(InputContext.Provider, { value: inputProps, children: /* @__PURE__ */ jsxs(
|
|
52
|
+
return /* @__PURE__ */ jsx("div", { ...fieldProps, children: /* @__PURE__ */ jsx(InputContext.Provider, { value: inputProps, children: /* @__PURE__ */ jsxs(
|
|
59
53
|
FieldErrorContext.Provider,
|
|
60
54
|
{
|
|
61
55
|
value: formValidationState.displayValidation,
|
|
@@ -69,9 +63,9 @@ const FileField = flowComponent("FileField", (props) => {
|
|
|
69
63
|
children: /* @__PURE__ */ jsx(
|
|
70
64
|
FileInput,
|
|
71
65
|
{
|
|
72
|
-
ref:
|
|
66
|
+
ref: inputRef,
|
|
73
67
|
isReadOnly,
|
|
74
|
-
onChange: isReadOnly ? void 0 :
|
|
68
|
+
onChange: isReadOnly ? void 0 : handleChange,
|
|
75
69
|
isDisabled,
|
|
76
70
|
children
|
|
77
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileField.mjs","sources":["../../../../../../src/components/FileField/FileField.tsx"],"sourcesContent":["import { useFormValidation } from \"@react-aria/form\";\nimport { useFormValidationState } from \"@react-stately/form\";\nimport type { PropsWithChildren
|
|
1
|
+
{"version":3,"file":"FileField.mjs","sources":["../../../../../../src/components/FileField/FileField.tsx"],"sourcesContent":["import { useFormValidation } from \"@react-aria/form\";\nimport { useFormValidationState } from \"@react-stately/form\";\nimport type { PropsWithChildren } from \"react\";\nimport type * as Aria from \"react-aria-components\";\nimport { FieldErrorContext, InputContext } from \"react-aria-components\";\nimport type { FileInputOnChangeHandler } from \"@/components/FileField/components/FileInput\";\nimport { FileInput } from \"@/components/FileField/components/FileInput\";\nimport type { FlowComponentProps } from \"@/lib/componentFactory/flowComponent\";\nimport { flowComponent } from \"@/lib/componentFactory/flowComponent\";\nimport { PropsContextProvider } from \"@/lib/propsContext\";\nimport { useObjectRef } from \"@react-aria/utils\";\nimport { addAwaitedArrayBuffer } from \"@mittwald/flow-core\";\nimport { useFieldComponent } from \"@/lib/hooks/useFieldComponent\";\n\nexport interface FileFieldProps\n extends PropsWithChildren,\n FlowComponentProps<HTMLInputElement>,\n Pick<Aria.InputProps, \"accept\" | \"multiple\" | \"name\">,\n Pick<\n Aria.TextFieldProps,\n \"isRequired\" | \"isInvalid\" | \"validationBehavior\" | \"isDisabled\"\n > {\n /** Handler that is called when the file input changes. */\n onChange?: FileInputOnChangeHandler;\n /** Whether the component is read only. */\n isReadOnly?: boolean;\n}\n\n/** @flr-generate all */\nexport const FileField = flowComponent(\"FileField\", (props) => {\n const {\n children,\n ref,\n isRequired,\n isInvalid,\n isDisabled,\n validationBehavior,\n onChange,\n isReadOnly,\n ...restInputProps\n } = props;\n\n const {\n FieldErrorView,\n FieldErrorCaptureContext,\n fieldProps,\n fieldPropsContext,\n } = useFieldComponent(props);\n\n const inputRef = useObjectRef(ref);\n\n const formValidationState = useFormValidationState({\n value: undefined,\n validationBehavior,\n isInvalid,\n });\n\n useFormValidation({ validationBehavior }, formValidationState, inputRef);\n\n const inputProps = {\n ...restInputProps,\n \"aria-invalid\": formValidationState.displayValidation.isInvalid,\n value: undefined,\n };\n\n const handleChange: FileInputOnChangeHandler = (fileList) => {\n if (fileList && onChange) {\n Promise.all(Array.from(fileList).map(addAwaitedArrayBuffer)).then(() =>\n onChange(fileList),\n );\n }\n };\n\n return (\n <div {...fieldProps}>\n <InputContext.Provider value={inputProps}>\n <FieldErrorContext.Provider\n value={formValidationState.displayValidation}\n >\n <FieldErrorCaptureContext>\n <PropsContextProvider props={fieldPropsContext}>\n <div\n data-readonly={isReadOnly}\n data-required={!!isRequired || undefined}\n data-invalid={\n formValidationState.displayValidation.isInvalid || undefined\n }\n >\n <FileInput\n ref={inputRef}\n isReadOnly={isReadOnly}\n onChange={isReadOnly ? undefined : handleChange}\n isDisabled={isDisabled}\n >\n {children}\n </FileInput>\n </div>\n </PropsContextProvider>\n </FieldErrorCaptureContext>\n <FieldErrorView />\n </FieldErrorContext.Provider>\n </InputContext.Provider>\n </div>\n );\n});\nexport default FileField;\n"],"names":[],"mappings":";;;;;;;;;;;;AA6BO,MAAM,SAAA,GAAY,aAAA,CAAc,WAAA,EAAa,CAAC,KAAA,KAAU;AAC7D,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,GAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,kBAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,MAAM;AAAA,IACJ,cAAA;AAAA,IACA,wBAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF,GAAI,kBAAkB,KAAK,CAAA;AAE3B,EAAA,MAAM,QAAA,GAAW,aAAa,GAAG,CAAA;AAEjC,EAAA,MAAM,sBAAsB,sBAAA,CAAuB;AAAA,IACjD,KAAA,EAAO,MAAA;AAAA,IACP,kBAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,iBAAA,CAAkB,EAAE,kBAAA,EAAmB,EAAG,mBAAA,EAAqB,QAAQ,CAAA;AAEvE,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,GAAG,cAAA;AAAA,IACH,cAAA,EAAgB,oBAAoB,iBAAA,CAAkB,SAAA;AAAA,IACtD,KAAA,EAAO;AAAA,GACT;AAEA,EAAA,MAAM,YAAA,GAAyC,CAAC,QAAA,KAAa;AAC3D,IAAA,IAAI,YAAY,QAAA,EAAU;AACxB,MAAA,OAAA,CAAQ,GAAA,CAAI,MAAM,IAAA,CAAK,QAAQ,EAAE,GAAA,CAAI,qBAAqB,CAAC,CAAA,CAAE,IAAA;AAAA,QAAK,MAChE,SAAS,QAAQ;AAAA,OACnB;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,uBACE,GAAA,CAAC,SAAK,GAAG,UAAA,EACP,8BAAC,YAAA,CAAa,QAAA,EAAb,EAAsB,KAAA,EAAO,UAAA,EAC5B,QAAA,kBAAA,IAAA;AAAA,IAAC,iBAAA,CAAkB,QAAA;AAAA,IAAlB;AAAA,MACC,OAAO,mBAAA,CAAoB,iBAAA;AAAA,MAE3B,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,wBAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,oBAAA,EAAA,EAAqB,KAAA,EAAO,iBAAA,EAC3B,QAAA,kBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,eAAA,EAAe,UAAA;AAAA,YACf,eAAA,EAAe,CAAC,CAAC,UAAA,IAAc,MAAA;AAAA,YAC/B,cAAA,EACE,mBAAA,CAAoB,iBAAA,CAAkB,SAAA,IAAa,MAAA;AAAA,YAGrD,QAAA,kBAAA,GAAA;AAAA,cAAC,SAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,QAAA;AAAA,gBACL,UAAA;AAAA,gBACA,QAAA,EAAU,aAAa,MAAA,GAAY,YAAA;AAAA,gBACnC,UAAA;AAAA,gBAEC;AAAA;AAAA;AACH;AAAA,WAEJ,CAAA,EACF,CAAA;AAAA,4BACC,cAAA,EAAA,EAAe;AAAA;AAAA;AAAA,KAEpB,CAAA,EACF,CAAA;AAEJ,CAAC;;;;"}
|
|
@@ -117,6 +117,7 @@ import '../../../../../TextArea/TextArea.mjs';
|
|
|
117
117
|
import '../../../../../TextField/TextField.mjs';
|
|
118
118
|
import '../../../../../TimeField/TimeField.mjs';
|
|
119
119
|
import '../../../../../TranslationProvider/TranslationProvider.mjs';
|
|
120
|
+
import '../../../../../../lib/remote/eventHandlerContext.mjs';
|
|
120
121
|
import TooltipView from '../../../../../../views/TooltipView.mjs';
|
|
121
122
|
import DivView from '../../../../../../views/DivView.mjs';
|
|
122
123
|
import BadgeView from '../../../../../../views/BadgeView.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActiveFilters.mjs","sources":["../../../../../../../../../../src/components/List/components/Header/components/ActiveFilters/ActiveFilters.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport React from \"react\";\nimport { useList } from \"@/components/List/hooks/useList\";\nimport styles from \"./ActiveFilters.module.scss\";\nimport locales from \"../../../../locales/*.locale.json\";\nimport { Translate } from \"@/lib/react/components/Translate\";\nimport { observer } from \"mobx-react-lite\";\nimport { useLocalizedStringFormatter } from \"react-aria\";\nimport { TooltipTrigger } from \"@/components/Tooltip\";\nimport {\n IconClose,\n IconSave,\n IconUndo,\n} from \"@/components/Icon/components/icons\";\nimport ButtonView from \"@/views/ButtonView\";\nimport TooltipView from \"@/views/TooltipView\";\nimport DivView from \"@/views/DivView\";\nimport BadgeView from \"@/views/BadgeView\";\nimport TooltipTriggerView from \"@/views/TooltipTriggerView\";\nimport TextView from \"@/views/TextView\";\n\nexport const ActiveFilters: FC = observer(() => {\n const list = useList();\n const formatter = useLocalizedStringFormatter(locales);\n\n const activeFilterValues = list.filters\n .flatMap((f) => f.values)\n .filter((v) => v.isActive);\n\n const activeFilters = activeFilterValues.map((v) => (\n <BadgeView key={v.id} onClose={() => v.deactivate()}>\n <TextView>{v.render()}</TextView>\n </BadgeView>\n ));\n\n const someFiltersChanged =\n list.filters.filter((f) => f.hasChanged()).length > 0;\n\n const storeFiltersButton = list.supportsSettingsStorage &&\n someFiltersChanged && (\n <TooltipTriggerView>\n <TooltipView>\n <Translate locales={locales}>list.filters.store</Translate>\n </TooltipView>\n <ButtonView\n size=\"s\"\n variant=\"plain\"\n color=\"secondary\"\n onPress={() => list.storeFilterDefaultSettings()}\n aria-label={formatter.format(\"list.filters.store\")}\n >\n <IconSave />\n </ButtonView>\n </TooltipTriggerView>\n );\n\n const resetFiltersButton = someFiltersChanged ? (\n <TooltipTrigger>\n <TooltipView>\n <Translate locales={locales}>list.filters.reset</Translate>\n </TooltipView>\n <ButtonView\n size=\"s\"\n variant=\"plain\"\n color=\"secondary\"\n onPress={() => list.resetFilters()}\n aria-label={formatter.format(\"list.filters.reset\")}\n >\n <IconUndo />\n </ButtonView>\n </TooltipTrigger>\n ) : undefined;\n\n const removeAllFiltersButton =\n activeFilters.length > 0 ? (\n <TooltipTrigger>\n <TooltipView>\n <Translate locales={locales}>list.filters.clear</Translate>\n </TooltipView>\n <ButtonView\n size=\"s\"\n variant=\"plain\"\n color=\"secondary\"\n onPress={() => list.clearFilters()}\n >\n <IconClose />\n </ButtonView>\n </TooltipTrigger>\n ) : undefined;\n\n if (\n activeFilters.length === 0 &&\n !storeFiltersButton &&\n !resetFiltersButton\n ) {\n return null;\n }\n\n return (\n <DivView className={styles.activeFilters}>\n {activeFilters}\n {storeFiltersButton}\n {resetFiltersButton}\n {removeAllFiltersButton}\n </DivView>\n );\n});\n\nexport default ActiveFilters;\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ActiveFilters.mjs","sources":["../../../../../../../../../../src/components/List/components/Header/components/ActiveFilters/ActiveFilters.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport React from \"react\";\nimport { useList } from \"@/components/List/hooks/useList\";\nimport styles from \"./ActiveFilters.module.scss\";\nimport locales from \"../../../../locales/*.locale.json\";\nimport { Translate } from \"@/lib/react/components/Translate\";\nimport { observer } from \"mobx-react-lite\";\nimport { useLocalizedStringFormatter } from \"react-aria\";\nimport { TooltipTrigger } from \"@/components/Tooltip\";\nimport {\n IconClose,\n IconSave,\n IconUndo,\n} from \"@/components/Icon/components/icons\";\nimport ButtonView from \"@/views/ButtonView\";\nimport TooltipView from \"@/views/TooltipView\";\nimport DivView from \"@/views/DivView\";\nimport BadgeView from \"@/views/BadgeView\";\nimport TooltipTriggerView from \"@/views/TooltipTriggerView\";\nimport TextView from \"@/views/TextView\";\n\nexport const ActiveFilters: FC = observer(() => {\n const list = useList();\n const formatter = useLocalizedStringFormatter(locales);\n\n const activeFilterValues = list.filters\n .flatMap((f) => f.values)\n .filter((v) => v.isActive);\n\n const activeFilters = activeFilterValues.map((v) => (\n <BadgeView key={v.id} onClose={() => v.deactivate()}>\n <TextView>{v.render()}</TextView>\n </BadgeView>\n ));\n\n const someFiltersChanged =\n list.filters.filter((f) => f.hasChanged()).length > 0;\n\n const storeFiltersButton = list.supportsSettingsStorage &&\n someFiltersChanged && (\n <TooltipTriggerView>\n <TooltipView>\n <Translate locales={locales}>list.filters.store</Translate>\n </TooltipView>\n <ButtonView\n size=\"s\"\n variant=\"plain\"\n color=\"secondary\"\n onPress={() => list.storeFilterDefaultSettings()}\n aria-label={formatter.format(\"list.filters.store\")}\n >\n <IconSave />\n </ButtonView>\n </TooltipTriggerView>\n );\n\n const resetFiltersButton = someFiltersChanged ? (\n <TooltipTrigger>\n <TooltipView>\n <Translate locales={locales}>list.filters.reset</Translate>\n </TooltipView>\n <ButtonView\n size=\"s\"\n variant=\"plain\"\n color=\"secondary\"\n onPress={() => list.resetFilters()}\n aria-label={formatter.format(\"list.filters.reset\")}\n >\n <IconUndo />\n </ButtonView>\n </TooltipTrigger>\n ) : undefined;\n\n const removeAllFiltersButton =\n activeFilters.length > 0 ? (\n <TooltipTrigger>\n <TooltipView>\n <Translate locales={locales}>list.filters.clear</Translate>\n </TooltipView>\n <ButtonView\n size=\"s\"\n variant=\"plain\"\n color=\"secondary\"\n onPress={() => list.clearFilters()}\n >\n <IconClose />\n </ButtonView>\n </TooltipTrigger>\n ) : undefined;\n\n if (\n activeFilters.length === 0 &&\n !storeFiltersButton &&\n !resetFiltersButton\n ) {\n return null;\n }\n\n return (\n <DivView className={styles.activeFilters}>\n {activeFilters}\n {storeFiltersButton}\n {resetFiltersButton}\n {removeAllFiltersButton}\n </DivView>\n );\n});\n\nexport default ActiveFilters;\n"],"names":[],"mappings":"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"}
|
|
@@ -110,6 +110,7 @@ import '../../TextArea/TextArea.mjs';
|
|
|
110
110
|
import '../../TextField/TextField.mjs';
|
|
111
111
|
import '../../TimeField/TimeField.mjs';
|
|
112
112
|
import '../../TranslationProvider/TranslationProvider.mjs';
|
|
113
|
+
import '../../../lib/remote/eventHandlerContext.mjs';
|
|
113
114
|
import { useDebounceCallback } from 'usehooks-ts';
|
|
114
115
|
|
|
115
116
|
const announceDebounceMs = 600;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAriaAnnounceSearchState.mjs","sources":["../../../../../../../src/components/List/hooks/useAriaAnnounceSearchState.ts"],"sourcesContent":["import { useLocalizedStringFormatter } from \"react-aria\";\nimport locales from \"../locales/*.locale.json\";\nimport { announce } from \"@react-aria/live-announcer\";\nimport { useList } from \"@/index/default\";\nimport { useDebounceCallback } from \"usehooks-ts\";\nimport { useEffect } from \"react\";\n\nconst announceDebounceMs = 600;\n\nexport const useAriaAnnounceSearchState = (): void => {\n const formatter = useLocalizedStringFormatter(locales);\n const list = useList();\n const debouncedAnnounce = useDebounceCallback(announce, announceDebounceMs);\n\n const searchTerm = list.search?.value;\n const resultCount = list.batches.getTotalItemsCount();\n const isLoading = list.loader.loaderState.useIsLoading();\n\n useEffect(() => {\n if (isLoading || !searchTerm) {\n debouncedAnnounce.cancel();\n return;\n }\n\n const text = formatter.format(\n resultCount > 0\n ? \"list.search.announce.result\"\n : \"list.search.announce.noResult\",\n {\n resultCount,\n searchTerm,\n },\n );\n\n debouncedAnnounce(text, \"polite\");\n }, [searchTerm, resultCount, isLoading]);\n};\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useAriaAnnounceSearchState.mjs","sources":["../../../../../../../src/components/List/hooks/useAriaAnnounceSearchState.ts"],"sourcesContent":["import { useLocalizedStringFormatter } from \"react-aria\";\nimport locales from \"../locales/*.locale.json\";\nimport { announce } from \"@react-aria/live-announcer\";\nimport { useList } from \"@/index/default\";\nimport { useDebounceCallback } from \"usehooks-ts\";\nimport { useEffect } from \"react\";\n\nconst announceDebounceMs = 600;\n\nexport const useAriaAnnounceSearchState = (): void => {\n const formatter = useLocalizedStringFormatter(locales);\n const list = useList();\n const debouncedAnnounce = useDebounceCallback(announce, announceDebounceMs);\n\n const searchTerm = list.search?.value;\n const resultCount = list.batches.getTotalItemsCount();\n const isLoading = list.loader.loaderState.useIsLoading();\n\n useEffect(() => {\n if (isLoading || !searchTerm) {\n debouncedAnnounce.cancel();\n return;\n }\n\n const text = formatter.format(\n resultCount > 0\n ? \"list.search.announce.result\"\n : \"list.search.announce.noResult\",\n {\n resultCount,\n searchTerm,\n },\n );\n\n debouncedAnnounce(text, \"polite\");\n }, [searchTerm, resultCount, isLoading]);\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,kBAAA,GAAqB,GAAA;AAEpB,MAAM,6BAA6B,MAAY;AACpD,EAAA,MAAM,SAAA,GAAY,4BAA4B,OAAO,CAAA;AACrD,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,iBAAA,GAAoB,mBAAA,CAAoB,QAAA,EAAU,kBAAkB,CAAA;AAE1E,EAAA,MAAM,UAAA,GAAa,KAAK,MAAA,EAAQ,KAAA;AAChC,EAAA,MAAM,WAAA,GAAc,IAAA,CAAK,OAAA,CAAQ,kBAAA,EAAmB;AACpD,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,MAAA,CAAO,WAAA,CAAY,YAAA,EAAa;AAEvD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAA,IAAa,CAAC,UAAA,EAAY;AAC5B,MAAA,iBAAA,CAAkB,MAAA,EAAO;AACzB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,OAAO,SAAA,CAAU,MAAA;AAAA,MACrB,WAAA,GAAc,IACV,6BAAA,GACA,+BAAA;AAAA,MACJ;AAAA,QACE,WAAA;AAAA,QACA;AAAA;AACF,KACF;AAEA,IAAA,iBAAA,CAAkB,MAAM,QAAQ,CAAA;AAAA,EAClC,CAAA,EAAG,CAAC,UAAA,EAAY,WAAA,EAAa,SAAS,CAAC,CAAA;AACzC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Markdown.mjs","sources":["../../../../../../src/components/Markdown/Markdown.tsx"],"sourcesContent":["import { CodeBlock } from \"@/components/CodeBlock\";\nimport { Heading } from \"@/components/Heading\";\nimport { InlineCode } from \"@/components/InlineCode\";\nimport { Link } from \"@/components/Link\";\nimport { Separator } from \"@/components/Separator\";\nimport { Text } from \"@/components/Text\";\nimport type { CSSProperties, FC, ReactNode,
|
|
1
|
+
{"version":3,"file":"Markdown.mjs","sources":["../../../../../../src/components/Markdown/Markdown.tsx"],"sourcesContent":["import { CodeBlock } from \"@/components/CodeBlock\";\nimport { Heading } from \"@/components/Heading\";\nimport { InlineCode } from \"@/components/InlineCode\";\nimport { Link } from \"@/components/Link\";\nimport { Separator } from \"@/components/Separator\";\nimport { Text } from \"@/components/Text\";\nimport type { CSSProperties, FC, ReactNode, Ref } from \"react\";\nimport { Children, isValidElement } from \"react\";\nimport type { Components, Options } from \"react-markdown\";\nimport ReactMarkdown from \"react-markdown\";\nimport styles from \"./Markdown.module.scss\";\nimport { extractTextFromFirstChild } from \"@/lib/react/remote\";\nimport type { PropsWithClassName } from \"@/lib/types/props\";\nimport clsx from \"clsx\";\nimport remarkGfm from \"remark-gfm\";\nimport { getHeadingLevelWithOffset } from \"@/components/Markdown/lib/getHeadingLevelWithOffset\";\n\nexport interface MarkdownProps\n extends PropsWithClassName,\n Omit<Options, \"components\"> {\n /** The color schema of the markdown component. */\n color?: \"dark\" | \"light\" | \"default\";\n /** Shifts all heading levels by the given offset. @default 0 */\n headingOffset?: number;\n /** @internal */\n style?: CSSProperties;\n ref?: Ref<HTMLDivElement>;\n}\n\n/** @flr-generate all */\nexport const Markdown: FC<MarkdownProps> = (props) => {\n const {\n children,\n color = \"default\",\n className,\n headingOffset = 0,\n ref,\n ...rest\n } = props;\n\n const headingAndLinkColor = color === \"default\" ? \"primary\" : color;\n const textColor = color === \"default\" ? undefined : color;\n\n const components: Components = {\n a: (props) => (\n <Link target=\"_blank\" color={headingAndLinkColor} href={props.href}>\n {props.children}\n </Link>\n ),\n p: (props) => (\n <Text elementType=\"p\" color={textColor}>\n {props.children}\n </Text>\n ),\n code: (props) => <InlineCode color={color}>{props.children}</InlineCode>,\n h1: (props) => (\n <Heading\n level={getHeadingLevelWithOffset(1, headingOffset)}\n color={headingAndLinkColor}\n >\n {props.children}\n </Heading>\n ),\n h2: (props) => (\n <Heading\n level={getHeadingLevelWithOffset(2, headingOffset)}\n color={headingAndLinkColor}\n >\n {props.children}\n </Heading>\n ),\n h3: (props) => (\n <Heading\n level={getHeadingLevelWithOffset(3, headingOffset)}\n color={headingAndLinkColor}\n >\n {props.children}\n </Heading>\n ),\n h4: (props) => (\n <Heading\n level={getHeadingLevelWithOffset(4, headingOffset)}\n color={headingAndLinkColor}\n >\n {props.children}\n </Heading>\n ),\n h5: (props) => (\n <Heading\n level={getHeadingLevelWithOffset(5, headingOffset)}\n color={headingAndLinkColor}\n >\n {props.children}\n </Heading>\n ),\n h6: (props) => (\n <Heading\n level={getHeadingLevelWithOffset(6, headingOffset)}\n color={headingAndLinkColor}\n >\n {props.children}\n </Heading>\n ),\n hr: () => <Separator />,\n pre: (props) => {\n const preElementContent = Children.toArray(props.children)[0];\n\n return (\n <CodeBlock\n copyable={false}\n color=\"dark\"\n language={\n isValidElement<{ className?: string }>(preElementContent) &&\n preElementContent.props.className\n ? preElementContent.props.className.replace(\"language-\", \"\")\n : undefined\n }\n code={String(\n isValidElement<{ children: string }>(preElementContent)\n ? preElementContent.props.children\n : preElementContent,\n )}\n />\n );\n },\n ul: (props) => (\n <Text color={textColor}>\n <ul>{props.children as ReactNode}</ul>\n </Text>\n ),\n ol: (props) => (\n <Text color={textColor}>\n <ol>{props.children as ReactNode}</ol>\n </Text>\n ),\n blockquote: (props) => (\n <Text color={textColor}>\n <blockquote>{props.children}</blockquote>\n </Text>\n ),\n };\n\n const textContent = extractTextFromFirstChild(children);\n\n return (\n <div className={clsx(styles.markdown, className)} {...rest} ref={ref}>\n <ReactMarkdown remarkPlugins={[remarkGfm]} components={components}>\n {textContent}\n </ReactMarkdown>\n </div>\n );\n};\n\nexport default Markdown;\n"],"names":["props"],"mappings":"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"}
|
|
@@ -9,12 +9,12 @@ import { Toolbar } from './components/Toolbar.mjs';
|
|
|
9
9
|
import clsx from 'clsx';
|
|
10
10
|
import { flowComponent } from '../../lib/componentFactory/flowComponent.mjs';
|
|
11
11
|
import { useObjectRef } from '@react-aria/utils';
|
|
12
|
-
import { useManagedValue } from '../../lib/hooks/useManagedValue.mjs';
|
|
13
12
|
import '../../lib/propsContext/propsContext.mjs';
|
|
14
13
|
import { PropsContextProvider } from '../../lib/propsContext/components/PropsContextProvider.mjs';
|
|
15
14
|
import { TunnelProvider, TunnelExit } from '@mittwald/react-tunnel';
|
|
16
15
|
import { scrollToCursor, modifyValueByMarkdownSyntax } from './lib/modifyValueByMarkdownSyntax.mjs';
|
|
17
16
|
import { modifyValueByType } from './lib/modifyValueByType.mjs';
|
|
17
|
+
import { useControlledHostValueProps } from '../../lib/remote/useControlledHostValueProps.mjs';
|
|
18
18
|
|
|
19
19
|
const MarkdownEditor = flowComponent("MarkdownEditor", (props) => {
|
|
20
20
|
const {
|
|
@@ -25,36 +25,32 @@ const MarkdownEditor = flowComponent("MarkdownEditor", (props) => {
|
|
|
25
25
|
rows = 5,
|
|
26
26
|
autoResizeMaxRows,
|
|
27
27
|
headingOffset,
|
|
28
|
+
value,
|
|
29
|
+
onChange,
|
|
28
30
|
ref,
|
|
29
|
-
inputRef,
|
|
30
31
|
...rest
|
|
31
|
-
} = props;
|
|
32
|
-
const
|
|
33
|
-
const localInputRef = useObjectRef(inputRef);
|
|
32
|
+
} = useControlledHostValueProps(props);
|
|
33
|
+
const inputRef = useObjectRef(ref);
|
|
34
34
|
const [mode, setMode] = useState("editor");
|
|
35
|
-
const { value, handleOnChange } = useManagedValue(props);
|
|
36
35
|
const selectionPresent = useRef(null);
|
|
37
36
|
useEffect(() => {
|
|
38
|
-
const
|
|
37
|
+
const ref2 = inputRef.current;
|
|
39
38
|
const present = selectionPresent.current;
|
|
40
|
-
if (!present || !
|
|
39
|
+
if (!present || !ref2) {
|
|
41
40
|
return;
|
|
42
41
|
}
|
|
43
42
|
setTimeout(() => {
|
|
44
43
|
requestAnimationFrame(() => {
|
|
45
44
|
requestAnimationFrame(() => {
|
|
46
|
-
|
|
47
|
-
present.selectionStart,
|
|
48
|
-
present.selectionEnd
|
|
49
|
-
);
|
|
45
|
+
ref2.setSelectionRange(present.selectionStart, present.selectionEnd);
|
|
50
46
|
if (present.shouldScrollToCursor) {
|
|
51
|
-
scrollToCursor(value,
|
|
47
|
+
scrollToCursor(value ?? "", ref2);
|
|
52
48
|
}
|
|
53
49
|
});
|
|
54
50
|
});
|
|
55
51
|
selectionPresent.current = null;
|
|
56
52
|
}, 0);
|
|
57
|
-
}, [
|
|
53
|
+
}, [value]);
|
|
58
54
|
const rootClassName = clsx(
|
|
59
55
|
styles.markdownEditor,
|
|
60
56
|
className,
|
|
@@ -64,39 +60,38 @@ const MarkdownEditor = flowComponent("MarkdownEditor", (props) => {
|
|
|
64
60
|
if (event.key !== "Enter") {
|
|
65
61
|
return;
|
|
66
62
|
}
|
|
67
|
-
const modifyParams = modifyValueByMarkdownSyntax(value,
|
|
63
|
+
const modifyParams = modifyValueByMarkdownSyntax(value, inputRef);
|
|
68
64
|
if (!modifyParams) {
|
|
69
65
|
return;
|
|
70
66
|
}
|
|
71
67
|
const { newValue, newSelectionStart, newSelectionEnd } = modifyParams;
|
|
72
|
-
event.preventDefault();
|
|
73
|
-
localInputRef.current?.blur();
|
|
74
68
|
selectionPresent.current = {
|
|
75
69
|
shouldScrollToCursor: true,
|
|
76
70
|
selectionStart: newSelectionStart,
|
|
77
71
|
selectionEnd: newSelectionEnd
|
|
78
72
|
};
|
|
79
|
-
|
|
73
|
+
event.preventDefault();
|
|
74
|
+
onChange(newValue);
|
|
80
75
|
};
|
|
81
76
|
const handleToolButtonPressed = (type) => {
|
|
82
77
|
const { newValue, newSelectionStart, newSelectionEnd } = modifyValueByType(
|
|
83
78
|
value,
|
|
84
79
|
type,
|
|
85
|
-
|
|
80
|
+
inputRef
|
|
86
81
|
);
|
|
87
82
|
selectionPresent.current = {
|
|
88
83
|
shouldScrollToCursor: false,
|
|
89
84
|
selectionStart: newSelectionStart,
|
|
90
85
|
selectionEnd: newSelectionEnd
|
|
91
86
|
};
|
|
92
|
-
|
|
87
|
+
onChange(newValue);
|
|
93
88
|
};
|
|
94
89
|
const propsContext = {
|
|
95
90
|
Label: {
|
|
96
91
|
tunnelId: "label"
|
|
97
92
|
}
|
|
98
93
|
};
|
|
99
|
-
return /* @__PURE__ */ jsx("div", {
|
|
94
|
+
return /* @__PURE__ */ jsx("div", { className: rootClassName, children: /* @__PURE__ */ jsxs(TunnelProvider, { children: [
|
|
100
95
|
/* @__PURE__ */ jsx(TunnelExit, { id: "label" }),
|
|
101
96
|
/* @__PURE__ */ jsx(
|
|
102
97
|
Toolbar,
|
|
@@ -114,11 +109,11 @@ const MarkdownEditor = flowComponent("MarkdownEditor", (props) => {
|
|
|
114
109
|
"aria-hidden": mode === "preview",
|
|
115
110
|
isReadOnly: isReadOnly || mode === "preview",
|
|
116
111
|
isDisabled,
|
|
117
|
-
ref:
|
|
112
|
+
ref: inputRef,
|
|
118
113
|
value,
|
|
119
114
|
rows,
|
|
120
115
|
autoResizeMaxRows,
|
|
121
|
-
onChange
|
|
116
|
+
onChange,
|
|
122
117
|
onKeyDown: handleKeyDown,
|
|
123
118
|
children: [
|
|
124
119
|
/* @__PURE__ */ jsx(
|
|
@@ -127,7 +122,7 @@ const MarkdownEditor = flowComponent("MarkdownEditor", (props) => {
|
|
|
127
122
|
headingOffset,
|
|
128
123
|
className: styles.markdown,
|
|
129
124
|
style: {
|
|
130
|
-
height:
|
|
125
|
+
height: inputRef.current?.offsetHeight
|
|
131
126
|
},
|
|
132
127
|
children: value
|
|
133
128
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownEditor.mjs","sources":["../../../../../../src/components/MarkdownEditor/MarkdownEditor.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"MarkdownEditor.mjs","sources":["../../../../../../src/components/MarkdownEditor/MarkdownEditor.tsx"],"sourcesContent":["import { type KeyboardEventHandler, useEffect, useRef, useState } from \"react\";\nimport styles from \"./MarkdownEditor.module.scss\";\nimport { Markdown, type MarkdownProps } from \"@/components/Markdown\";\nimport { TextArea, type TextAreaProps } from \"@/components/TextArea\";\nimport { Toolbar } from \"@/components/MarkdownEditor/components/Toolbar\";\nimport clsx from \"clsx\";\nimport { flowComponent } from \"@/lib/componentFactory/flowComponent\";\nimport { useObjectRef } from \"@react-aria/utils\";\nimport { type PropsContext, PropsContextProvider } from \"@/lib/propsContext\";\nimport { TunnelProvider, TunnelExit } from \"@mittwald/react-tunnel\";\nimport {\n modifyValueByMarkdownSyntax,\n scrollToCursor,\n} from \"@/components/MarkdownEditor/lib/modifyValueByMarkdownSyntax\";\nimport {\n type InsertType,\n modifyValueByType,\n} from \"@/components/MarkdownEditor/lib/modifyValueByType\";\nimport { useControlledHostValueProps } from \"@/lib/remote/useControlledHostValueProps\";\n\nexport type MarkdownEditorMode = \"editor\" | \"preview\";\n\nexport interface MarkdownEditorProps\n extends TextAreaProps,\n Pick<MarkdownProps, \"headingOffset\"> {}\n\n/** @flr-generate all */\nexport const MarkdownEditor = flowComponent(\"MarkdownEditor\", (props) => {\n const {\n isDisabled,\n isReadOnly,\n children,\n className,\n rows = 5,\n autoResizeMaxRows,\n headingOffset,\n value,\n onChange,\n ref,\n ...rest\n } = useControlledHostValueProps(props);\n\n const inputRef = useObjectRef(ref);\n\n const [mode, setMode] = useState<MarkdownEditorMode>(\"editor\");\n\n const selectionPresent = useRef<{\n shouldScrollToCursor: boolean;\n selectionStart: number | null;\n selectionEnd: number | null;\n } | null>(null);\n\n useEffect(() => {\n const ref = inputRef.current;\n const present = selectionPresent.current;\n\n if (!present || !ref) {\n return;\n }\n\n setTimeout(() => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n ref.setSelectionRange(present.selectionStart, present.selectionEnd);\n\n if (present.shouldScrollToCursor) {\n scrollToCursor(value ?? \"\", ref);\n }\n });\n });\n\n selectionPresent.current = null;\n }, 0);\n }, [value]);\n\n const rootClassName = clsx(\n styles.markdownEditor,\n className,\n styles[`mode-${mode}`],\n );\n\n const handleKeyDown: KeyboardEventHandler = (event) => {\n if (event.key !== \"Enter\") {\n return;\n }\n\n const modifyParams = modifyValueByMarkdownSyntax(value, inputRef);\n if (!modifyParams) {\n return;\n }\n\n const { newValue, newSelectionStart, newSelectionEnd } = modifyParams;\n\n selectionPresent.current = {\n shouldScrollToCursor: true,\n selectionStart: newSelectionStart,\n selectionEnd: newSelectionEnd,\n };\n\n event.preventDefault();\n onChange(newValue);\n };\n\n const handleToolButtonPressed = (type: InsertType) => {\n const { newValue, newSelectionStart, newSelectionEnd } = modifyValueByType(\n value,\n type,\n inputRef,\n );\n\n selectionPresent.current = {\n shouldScrollToCursor: false,\n selectionStart: newSelectionStart,\n selectionEnd: newSelectionEnd,\n };\n\n onChange(newValue);\n };\n\n const propsContext: PropsContext = {\n Label: {\n tunnelId: \"label\",\n },\n };\n\n return (\n <div className={rootClassName}>\n <TunnelProvider>\n <TunnelExit id=\"label\" />\n <Toolbar\n currentMode={mode}\n isDisabled={isDisabled}\n onModeChange={setMode}\n onToolPressed={handleToolButtonPressed}\n />\n <TextArea\n {...rest}\n aria-hidden={mode === \"preview\"}\n isReadOnly={isReadOnly || mode === \"preview\"}\n isDisabled={isDisabled}\n ref={inputRef}\n value={value}\n rows={rows}\n autoResizeMaxRows={autoResizeMaxRows}\n onChange={onChange}\n onKeyDown={handleKeyDown}\n >\n <Markdown\n headingOffset={headingOffset}\n className={styles.markdown}\n style={{\n height: inputRef.current?.offsetHeight,\n }}\n >\n {value}\n </Markdown>\n <PropsContextProvider props={propsContext}>\n {children}\n </PropsContextProvider>\n </TextArea>\n </TunnelProvider>\n </div>\n );\n});\n\nexport default MarkdownEditor;\n"],"names":["ref"],"mappings":"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"}
|
package/dist/js/components/src/components/MarkdownEditor/lib/modifyValueByMarkdownSyntax.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
/* */
|
|
3
|
-
const scrollToCursor = (value, textarea) => {
|
|
3
|
+
const scrollToCursor = (value = "", textarea) => {
|
|
4
4
|
const { selectionStart } = textarea;
|
|
5
5
|
const lineHeight = parseInt(
|
|
6
6
|
getComputedStyle(textarea).lineHeight || "20",
|
|
@@ -9,7 +9,7 @@ const scrollToCursor = (value, textarea) => {
|
|
|
9
9
|
const lines = value.slice(0, selectionStart).split("\n").length;
|
|
10
10
|
textarea.scrollTop = (lines - 1) * lineHeight;
|
|
11
11
|
};
|
|
12
|
-
const modifyValueByMarkdownSyntax = (value, textAreaRef) => {
|
|
12
|
+
const modifyValueByMarkdownSyntax = (value = "", textAreaRef) => {
|
|
13
13
|
const textarea = textAreaRef.current;
|
|
14
14
|
if (!textarea) {
|
|
15
15
|
return;
|
package/dist/js/components/src/components/MarkdownEditor/lib/modifyValueByMarkdownSyntax.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modifyValueByMarkdownSyntax.mjs","sources":["../../../../../../../src/components/MarkdownEditor/lib/modifyValueByMarkdownSyntax.ts"],"sourcesContent":["import type { RefObject } from \"react\";\n\nexport const scrollToCursor = (
|
|
1
|
+
{"version":3,"file":"modifyValueByMarkdownSyntax.mjs","sources":["../../../../../../../src/components/MarkdownEditor/lib/modifyValueByMarkdownSyntax.ts"],"sourcesContent":["import type { RefObject } from \"react\";\n\nexport const scrollToCursor = (value = \"\", textarea: HTMLTextAreaElement) => {\n const { selectionStart } = textarea;\n const lineHeight = parseInt(\n getComputedStyle(textarea).lineHeight || \"20\",\n 10,\n );\n const lines = value.slice(0, selectionStart).split(\"\\n\").length;\n textarea.scrollTop = (lines - 1) * lineHeight;\n};\n\nexport const modifyValueByMarkdownSyntax = (\n value = \"\",\n textAreaRef: RefObject<HTMLTextAreaElement | null>,\n) => {\n const textarea = textAreaRef.current;\n if (!textarea) {\n return;\n }\n\n const start = textarea.selectionStart;\n const end = textarea.selectionEnd;\n\n const before = value.slice(0, start);\n const after = value.slice(end);\n const lineStart = before.lastIndexOf(\"\\n\") + 1;\n const currentLine = before.slice(lineStart);\n\n const orderedMatch = currentLine.match(/^(\\s*)(\\d+)\\.\\s+/);\n const unorderedMatch = currentLine.match(/^(\\s*)([-*+])\\s+/);\n\n if (\n (orderedMatch || unorderedMatch) &&\n currentLine.trim().match(/^([-*+]|\\d+\\.)$/)\n ) {\n const newText = value.slice(0, lineStart) + \"\\n\" + after;\n\n return {\n newValue: newText,\n newSelectionStart: lineStart + 1,\n newSelectionEnd: lineStart + 1,\n } as const;\n }\n\n if (orderedMatch) {\n const indent = orderedMatch[1];\n const nextNum = parseInt(orderedMatch[2] ?? \"\", 10) + 1;\n const insert = `\\n${indent}${nextNum}. `;\n\n return {\n newValue: before + insert + after,\n newSelectionStart: start + insert.length,\n newSelectionEnd: start + insert.length,\n } as const;\n } else if (unorderedMatch) {\n const indent = unorderedMatch[1];\n const bullet = unorderedMatch[2];\n const insert = `\\n${indent}${bullet} `;\n\n const newText = before + insert + after;\n return {\n newValue: newText,\n newSelectionStart: start + insert.length,\n newSelectionEnd: start + insert.length,\n } as const;\n }\n};\n"],"names":[],"mappings":"AAEO,MAAM,cAAA,GAAiB,CAAC,KAAA,GAAQ,EAAA,EAAI,QAAA,KAAkC;AAC3E,EAAA,MAAM,EAAE,gBAAe,GAAI,QAAA;AAC3B,EAAA,MAAM,UAAA,GAAa,QAAA;AAAA,IACjB,gBAAA,CAAiB,QAAQ,CAAA,CAAE,UAAA,IAAc,IAAA;AAAA,IACzC;AAAA,GACF;AACA,EAAA,MAAM,KAAA,GAAQ,MAAM,KAAA,CAAM,CAAA,EAAG,cAAc,CAAA,CAAE,KAAA,CAAM,IAAI,CAAA,CAAE,MAAA;AACzD,EAAA,QAAA,CAAS,SAAA,GAAA,CAAa,QAAQ,CAAA,IAAK,UAAA;AACrC;AAEO,MAAM,2BAAA,GAA8B,CACzC,KAAA,GAAQ,EAAA,EACR,WAAA,KACG;AACH,EAAA,MAAM,WAAW,WAAA,CAAY,OAAA;AAC7B,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,QAAQ,QAAA,CAAS,cAAA;AACvB,EAAA,MAAM,MAAM,QAAA,CAAS,YAAA;AAErB,EAAA,MAAM,MAAA,GAAS,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,KAAK,CAAA;AACnC,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,GAAG,CAAA;AAC7B,EAAA,MAAM,SAAA,GAAY,MAAA,CAAO,WAAA,CAAY,IAAI,CAAA,GAAI,CAAA;AAC7C,EAAA,MAAM,WAAA,GAAc,MAAA,CAAO,KAAA,CAAM,SAAS,CAAA;AAE1C,EAAA,MAAM,YAAA,GAAe,WAAA,CAAY,KAAA,CAAM,kBAAkB,CAAA;AACzD,EAAA,MAAM,cAAA,GAAiB,WAAA,CAAY,KAAA,CAAM,kBAAkB,CAAA;AAE3D,EAAA,IAAA,CACG,gBAAgB,cAAA,KACjB,WAAA,CAAY,MAAK,CAAE,KAAA,CAAM,iBAAiB,CAAA,EAC1C;AACA,IAAA,MAAM,UAAU,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,SAAS,IAAI,IAAA,GAAO,KAAA;AAEnD,IAAA,OAAO;AAAA,MACL,QAAA,EAAU,OAAA;AAAA,MACV,mBAAmB,SAAA,GAAY,CAAA;AAAA,MAC/B,iBAAiB,SAAA,GAAY;AAAA,KAC/B;AAAA,EACF;AAEA,EAAA,IAAI,YAAA,EAAc;AAChB,IAAA,MAAM,MAAA,GAAS,aAAa,CAAC,CAAA;AAC7B,IAAA,MAAM,UAAU,QAAA,CAAS,YAAA,CAAa,CAAC,CAAA,IAAK,EAAA,EAAI,EAAE,CAAA,GAAI,CAAA;AACtD,IAAA,MAAM,MAAA,GAAS;AAAA,EAAK,MAAM,GAAG,OAAO,CAAA,EAAA,CAAA;AAEpC,IAAA,OAAO;AAAA,MACL,QAAA,EAAU,SAAS,MAAA,GAAS,KAAA;AAAA,MAC5B,iBAAA,EAAmB,QAAQ,MAAA,CAAO,MAAA;AAAA,MAClC,eAAA,EAAiB,QAAQ,MAAA,CAAO;AAAA,KAClC;AAAA,EACF,WAAW,cAAA,EAAgB;AACzB,IAAA,MAAM,MAAA,GAAS,eAAe,CAAC,CAAA;AAC/B,IAAA,MAAM,MAAA,GAAS,eAAe,CAAC,CAAA;AAC/B,IAAA,MAAM,MAAA,GAAS;AAAA,EAAK,MAAM,GAAG,MAAM,CAAA,CAAA,CAAA;AAEnC,IAAA,MAAM,OAAA,GAAU,SAAS,MAAA,GAAS,KAAA;AAClC,IAAA,OAAO;AAAA,MACL,QAAA,EAAU,OAAA;AAAA,MACV,iBAAA,EAAmB,QAAQ,MAAA,CAAO,MAAA;AAAA,MAClC,eAAA,EAAiB,QAAQ,MAAA,CAAO;AAAA,KAClC;AAAA,EACF;AACF;;;;"}
|
|
@@ -20,7 +20,7 @@ const getLineEnd = (text, pos) => {
|
|
|
20
20
|
const nextNewline = text.indexOf("\n", pos);
|
|
21
21
|
return nextNewline === -1 ? text.length : nextNewline;
|
|
22
22
|
};
|
|
23
|
-
const modifyValueByType = (markdown, type, textAreaRef) => {
|
|
23
|
+
const modifyValueByType = (markdown = "", type, textAreaRef) => {
|
|
24
24
|
if (!textAreaRef.current) {
|
|
25
25
|
return {
|
|
26
26
|
newValue: markdown,
|