@react-typed-forms/schemas 11.7.3 → 11.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,15 +1,12 @@
1
- import React, { CSSProperties, ReactElement, ReactNode } from "react";
1
+ import React, { CSSProperties, ReactElement } from "react";
2
2
  import { AccordionAdornment } from "../types";
3
- import { Control } from "@react-typed-forms/core";
4
- export declare function DefaultAccordion({ children, accordion, contentStyle, contentClassName, designMode, togglerOpenClass, togglerClosedClass, className, renderTitle, renderToggler, }: {
3
+ import { FormRenderer } from "../controlRender";
4
+ import { DefaultAccordionRendererOptions } from "../createDefaultRenderers";
5
+ export declare function DefaultAccordion({ children, accordion, contentStyle, contentClassName, designMode, iconOpenClass, iconClosedClass, className, renderTitle, renderToggler, renderers, titleClass, }: {
5
6
  children: ReactElement;
6
7
  accordion: Partial<AccordionAdornment>;
7
8
  contentStyle?: CSSProperties;
8
9
  contentClassName?: string;
9
10
  designMode?: boolean;
10
- className?: string;
11
- togglerOpenClass?: string;
12
- togglerClosedClass?: string;
13
- renderTitle?: (title: string | undefined, current: Control<boolean>) => ReactNode;
14
- renderToggler?: (current: Control<boolean>) => ReactNode;
15
- }): React.JSX.Element;
11
+ renderers: FormRenderer;
12
+ } & DefaultAccordionRendererOptions): React.JSX.Element;
@@ -13,6 +13,7 @@ export interface FormRenderer {
13
13
  renderLabel: (props: LabelRendererProps, labelStart: ReactNode, labelEnd: ReactNode) => ReactNode;
14
14
  renderLayout: (props: ControlLayoutProps) => RenderedControl;
15
15
  renderVisibility: (props: VisibilityRendererProps) => ReactNode;
16
+ renderLabelText: (props: ReactNode) => ReactNode;
16
17
  }
17
18
  export interface AdornmentProps {
18
19
  adornment: ControlAdornment;
@@ -49,14 +49,17 @@ interface DefaultDataRendererOptions {
49
49
  optionRenderer?: DataRendererRegistration;
50
50
  }
51
51
  export declare function createDefaultDataRenderer(options?: DefaultDataRendererOptions): DataRendererRegistration;
52
+ export interface DefaultAccordionRendererOptions {
53
+ className?: string;
54
+ titleClass?: string;
55
+ togglerClass?: string;
56
+ iconOpenClass?: string;
57
+ iconClosedClass?: string;
58
+ renderTitle?: (title: string | undefined, current: Control<boolean>) => ReactNode;
59
+ renderToggler?: (current: Control<boolean>, title: ReactNode) => ReactNode;
60
+ }
52
61
  export interface DefaultAdornmentRendererOptions {
53
- accordion?: {
54
- className?: string;
55
- togglerOpenClass?: string;
56
- togglerClosedClass?: string;
57
- renderTitle?: (title: string | undefined, current: Control<boolean>) => ReactNode;
58
- renderToggler?: (current: Control<boolean>) => ReactNode;
59
- };
62
+ accordion?: DefaultAccordionRendererOptions;
60
63
  }
61
64
  export declare function createDefaultAdornmentRenderer(options?: DefaultAdornmentRendererOptions): AdornmentRendererRegistration;
62
65
  interface DefaultLabelRendererOptions {
package/lib/index.js CHANGED
@@ -1941,8 +1941,9 @@ var defaultTailwindTheme = {
1941
1941
  adornment: {
1942
1942
  accordion: {
1943
1943
  className: "flex items-center gap-2 my-2",
1944
- togglerOpenClass: "fa fa-chevron-up",
1945
- togglerClosedClass: "fa fa-chevron-down"
1944
+ titleClass: "cursor-pointer",
1945
+ iconOpenClass: "fa fa-chevron-up",
1946
+ iconClosedClass: "fa fa-chevron-down"
1946
1947
  }
1947
1948
  }
1948
1949
  };
@@ -2429,31 +2430,35 @@ function DefaultAccordion(_ref) {
2429
2430
  contentStyle = _ref.contentStyle,
2430
2431
  contentClassName = _ref.contentClassName,
2431
2432
  designMode = _ref.designMode,
2432
- togglerOpenClass = _ref.togglerOpenClass,
2433
- togglerClosedClass = _ref.togglerClosedClass,
2433
+ iconOpenClass = _ref.iconOpenClass,
2434
+ iconClosedClass = _ref.iconClosedClass,
2434
2435
  className = _ref.className,
2435
2436
  _ref$renderTitle = _ref.renderTitle,
2436
- renderTitle = _ref$renderTitle === void 0 ? function (x) {
2437
- return /*#__PURE__*/React__default["default"].createElement("span", null, x);
2437
+ renderTitle = _ref$renderTitle === void 0 ? function (t) {
2438
+ return t;
2438
2439
  } : _ref$renderTitle,
2439
- renderToggler = _ref.renderToggler;
2440
+ renderToggler = _ref.renderToggler,
2441
+ renderers = _ref.renderers,
2442
+ titleClass = _ref.titleClass;
2440
2443
  var open = core.useControl(!!accordion.defaultExpanded);
2441
2444
  var isOpen = open.value;
2442
2445
  var fullContentStyle = isOpen || designMode ? contentStyle : _extends({}, contentStyle, {
2443
2446
  display: "none"
2444
2447
  });
2445
- var toggler = renderToggler ? renderToggler(open) : /*#__PURE__*/React__default["default"].createElement("button", {
2448
+ var title = renderers.renderLabelText(renderTitle(accordion.title, open));
2449
+ var toggler = renderToggler ? renderToggler(open, title) : /*#__PURE__*/React__default["default"].createElement("button", {
2450
+ className: className,
2446
2451
  onClick: function onClick() {
2447
2452
  return open.setValue(function (x) {
2448
2453
  return !x;
2449
2454
  });
2450
2455
  }
2451
- }, /*#__PURE__*/React__default["default"].createElement("i", {
2452
- className: clsx__default["default"](isOpen ? togglerOpenClass : togglerClosedClass)
2456
+ }, /*#__PURE__*/React__default["default"].createElement("label", {
2457
+ className: titleClass
2458
+ }, title), /*#__PURE__*/React__default["default"].createElement("i", {
2459
+ className: clsx__default["default"](isOpen ? iconOpenClass : iconClosedClass)
2453
2460
  }));
2454
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
2455
- className: className
2456
- }, renderTitle(accordion.title, open), toggler), /*#__PURE__*/React__default["default"].createElement("div", {
2461
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, toggler, /*#__PURE__*/React__default["default"].createElement("div", {
2457
2462
  style: fullContentStyle,
2458
2463
  className: contentClassName
2459
2464
  }, children));
@@ -2634,7 +2639,7 @@ function createDefaultAdornmentRenderer(options) {
2634
2639
  }
2635
2640
  return {
2636
2641
  type: "adornment",
2637
- render: function render(_ref6) {
2642
+ render: function render(_ref6, renderers) {
2638
2643
  var adornment = _ref6.adornment,
2639
2644
  designMode = _ref6.designMode;
2640
2645
  return {
@@ -2648,6 +2653,7 @@ function createDefaultAdornmentRenderer(options) {
2648
2653
  if (isAccordionAdornment(adornment)) {
2649
2654
  return wrapLayout(function (x) {
2650
2655
  return /*#__PURE__*/React__default["default"].createElement(DefaultAccordion, _extends({
2656
+ renderers: renderers,
2651
2657
  children: x,
2652
2658
  accordion: adornment,
2653
2659
  contentStyle: rl.style,
@@ -2701,10 +2707,7 @@ function createDefaultLabelRenderer(options) {
2701
2707
  return labelContainer( /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("label", {
2702
2708
  htmlFor: props.forId,
2703
2709
  className: rendererClass(props.className, clsx__default["default"](className, props.type === exports.LabelType.Group && groupLabelClass, props.type === exports.LabelType.Control && controlLabelClass))
2704
- }, labelStart, renderers.renderLabel({
2705
- label: props.label,
2706
- type: exports.LabelType.Text
2707
- }, undefined, undefined), props.required && requiredElement), labelEnd));
2710
+ }, labelStart, renderers.renderLabelText(props.label), props.required && requiredElement), labelEnd));
2708
2711
  },
2709
2712
  type: "label"
2710
2713
  };
@@ -2752,8 +2755,15 @@ function createFormRenderer(customRenderers, defaultRenderers) {
2752
2755
  renderArray: renderArray,
2753
2756
  renderAdornment: renderAdornment,
2754
2757
  renderLayout: renderLayout,
2755
- renderVisibility: visibilityRenderer.render
2758
+ renderVisibility: visibilityRenderer.render,
2759
+ renderLabelText: renderLabelText
2756
2760
  };
2761
+ function renderLabelText(label) {
2762
+ return renderLabel({
2763
+ label: label,
2764
+ type: exports.LabelType.Text
2765
+ }, undefined, undefined);
2766
+ }
2757
2767
  function renderLayout(props) {
2758
2768
  var _layoutRenderers$find;
2759
2769
  var renderer = (_layoutRenderers$find = layoutRenderers.find(function (x) {