@salt-ds/lab 1.0.0-alpha.5 → 1.0.0-alpha.6

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 (148) hide show
  1. package/dist-cjs/packages/lab/src/banner/Banner.css.js +1 -1
  2. package/dist-cjs/packages/lab/src/calendar/internal/CalendarNavigation.js +1 -0
  3. package/dist-cjs/packages/lab/src/calendar/internal/CalendarNavigation.js.map +1 -1
  4. package/dist-cjs/packages/lab/src/cascading-menu/CascadingMenuList.js +2 -2
  5. package/dist-cjs/packages/lab/src/cascading-menu/CascadingMenuList.js.map +1 -1
  6. package/dist-cjs/packages/lab/src/combo-box/ComboBox.js +1 -0
  7. package/dist-cjs/packages/lab/src/combo-box/ComboBox.js.map +1 -1
  8. package/dist-cjs/packages/lab/src/combo-box-deprecated/ComboBoxDeprecated.js +1 -0
  9. package/dist-cjs/packages/lab/src/combo-box-deprecated/ComboBoxDeprecated.js.map +1 -1
  10. package/dist-cjs/packages/lab/src/combo-box-deprecated/internal/DefaultComboBox.js +2 -2
  11. package/dist-cjs/packages/lab/src/combo-box-deprecated/internal/DefaultComboBox.js.map +1 -1
  12. package/dist-cjs/packages/lab/src/combo-box-deprecated/internal/MultiSelectComboBox.js +3 -2
  13. package/dist-cjs/packages/lab/src/combo-box-deprecated/internal/MultiSelectComboBox.js.map +1 -1
  14. package/dist-cjs/packages/lab/src/common-hooks/useCollectionItems.js +2 -2
  15. package/dist-cjs/packages/lab/src/common-hooks/useCollectionItems.js.map +1 -1
  16. package/dist-cjs/packages/lab/src/dropdown/DropdownBase.js +2 -2
  17. package/dist-cjs/packages/lab/src/dropdown/DropdownBase.js.map +1 -1
  18. package/dist-cjs/packages/lab/src/dropdown/DropdownButton.js +2 -1
  19. package/dist-cjs/packages/lab/src/dropdown/DropdownButton.js.map +1 -1
  20. package/dist-cjs/packages/lab/src/dropdown/useDropdownBase.js +1 -0
  21. package/dist-cjs/packages/lab/src/dropdown/useDropdownBase.js.map +1 -1
  22. package/dist-cjs/packages/lab/src/file-drop-zone/FileDropZone.css.js +1 -1
  23. package/dist-cjs/packages/lab/src/form-field/FormField.css.js +1 -1
  24. package/dist-cjs/packages/lab/src/form-field/FormField.js +1 -0
  25. package/dist-cjs/packages/lab/src/form-field/FormField.js.map +1 -1
  26. package/dist-cjs/packages/lab/src/form-field/FormHelperText.css.js +1 -1
  27. package/dist-cjs/packages/lab/src/form-field/FormHelperText.js +1 -1
  28. package/dist-cjs/packages/lab/src/form-field/FormHelperText.js.map +1 -1
  29. package/dist-cjs/packages/lab/src/form-field-context/FormFieldContextNext.js +13 -0
  30. package/dist-cjs/packages/lab/src/form-field-context/FormFieldContextNext.js.map +1 -0
  31. package/dist-cjs/packages/lab/src/form-field-context/useFormFieldPropsNext.js +13 -0
  32. package/dist-cjs/packages/lab/src/form-field-context/useFormFieldPropsNext.js.map +1 -0
  33. package/dist-cjs/packages/lab/src/form-field-next/FormFieldHelperText.css.js +9 -0
  34. package/dist-cjs/packages/lab/src/form-field-next/FormFieldHelperText.css.js.map +1 -0
  35. package/dist-cjs/packages/lab/src/form-field-next/FormFieldHelperText.js +32 -0
  36. package/dist-cjs/packages/lab/src/form-field-next/FormFieldHelperText.js.map +1 -0
  37. package/dist-cjs/packages/lab/src/form-field-next/FormFieldLabel.css.js +9 -0
  38. package/dist-cjs/packages/lab/src/form-field-next/FormFieldLabel.css.js.map +1 -0
  39. package/dist-cjs/packages/lab/src/form-field-next/FormFieldLabel.js +26 -0
  40. package/dist-cjs/packages/lab/src/form-field-next/FormFieldLabel.js.map +1 -0
  41. package/dist-cjs/packages/lab/src/form-field-next/FormFieldNext.css.js +9 -0
  42. package/dist-cjs/packages/lab/src/form-field-next/FormFieldNext.css.js.map +1 -0
  43. package/dist-cjs/packages/lab/src/form-field-next/FormFieldNext.js +90 -0
  44. package/dist-cjs/packages/lab/src/form-field-next/FormFieldNext.js.map +1 -0
  45. package/dist-cjs/packages/lab/src/index.js +10 -0
  46. package/dist-cjs/packages/lab/src/index.js.map +1 -1
  47. package/dist-cjs/packages/lab/src/input/Input.js +1 -0
  48. package/dist-cjs/packages/lab/src/input/Input.js.map +1 -1
  49. package/dist-cjs/packages/lab/src/input-next/InputNext.css.js +9 -0
  50. package/dist-cjs/packages/lab/src/input-next/InputNext.css.js.map +1 -0
  51. package/dist-cjs/packages/lab/src/input-next/InputNext.js +126 -0
  52. package/dist-cjs/packages/lab/src/input-next/InputNext.js.map +1 -0
  53. package/dist-cjs/packages/lab/src/overlay/useOverlay.js +5 -4
  54. package/dist-cjs/packages/lab/src/overlay/useOverlay.js.map +1 -1
  55. package/dist-cjs/packages/lab/src/query-input/internal/QueryInputBody.js +1 -0
  56. package/dist-cjs/packages/lab/src/query-input/internal/QueryInputBody.js.map +1 -1
  57. package/dist-cjs/packages/lab/src/query-input/internal/ValueSelector.js +2 -2
  58. package/dist-cjs/packages/lab/src/query-input/internal/ValueSelector.js.map +1 -1
  59. package/dist-cjs/packages/lab/src/stepper-input/internal/useActivationIndicatorPosition.js +2 -0
  60. package/dist-cjs/packages/lab/src/stepper-input/internal/useActivationIndicatorPosition.js.map +1 -1
  61. package/dist-cjs/packages/lab/src/switch/Switch.js +1 -0
  62. package/dist-cjs/packages/lab/src/switch/Switch.js.map +1 -1
  63. package/dist-cjs/packages/lab/src/tabs/Tabstrip.js +1 -0
  64. package/dist-cjs/packages/lab/src/tabs/Tabstrip.js.map +1 -1
  65. package/dist-cjs/packages/lab/src/tokenized-input/useTokenizedInput.js +1 -0
  66. package/dist-cjs/packages/lab/src/tokenized-input/useTokenizedInput.js.map +1 -1
  67. package/dist-cjs/packages/lab/src/toolbar/overflow-panel/OverflowPanel.js +1 -0
  68. package/dist-cjs/packages/lab/src/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  69. package/dist-es/packages/lab/src/banner/Banner.css.js +1 -1
  70. package/dist-es/packages/lab/src/calendar/internal/CalendarNavigation.js +1 -0
  71. package/dist-es/packages/lab/src/calendar/internal/CalendarNavigation.js.map +1 -1
  72. package/dist-es/packages/lab/src/cascading-menu/CascadingMenuList.js +2 -2
  73. package/dist-es/packages/lab/src/cascading-menu/CascadingMenuList.js.map +1 -1
  74. package/dist-es/packages/lab/src/combo-box/ComboBox.js +1 -0
  75. package/dist-es/packages/lab/src/combo-box/ComboBox.js.map +1 -1
  76. package/dist-es/packages/lab/src/combo-box-deprecated/ComboBoxDeprecated.js +1 -0
  77. package/dist-es/packages/lab/src/combo-box-deprecated/ComboBoxDeprecated.js.map +1 -1
  78. package/dist-es/packages/lab/src/combo-box-deprecated/internal/DefaultComboBox.js +2 -2
  79. package/dist-es/packages/lab/src/combo-box-deprecated/internal/DefaultComboBox.js.map +1 -1
  80. package/dist-es/packages/lab/src/combo-box-deprecated/internal/MultiSelectComboBox.js +3 -2
  81. package/dist-es/packages/lab/src/combo-box-deprecated/internal/MultiSelectComboBox.js.map +1 -1
  82. package/dist-es/packages/lab/src/common-hooks/useCollectionItems.js +2 -2
  83. package/dist-es/packages/lab/src/common-hooks/useCollectionItems.js.map +1 -1
  84. package/dist-es/packages/lab/src/dropdown/DropdownBase.js +2 -2
  85. package/dist-es/packages/lab/src/dropdown/DropdownBase.js.map +1 -1
  86. package/dist-es/packages/lab/src/dropdown/DropdownButton.js +2 -1
  87. package/dist-es/packages/lab/src/dropdown/DropdownButton.js.map +1 -1
  88. package/dist-es/packages/lab/src/dropdown/useDropdownBase.js +1 -0
  89. package/dist-es/packages/lab/src/dropdown/useDropdownBase.js.map +1 -1
  90. package/dist-es/packages/lab/src/file-drop-zone/FileDropZone.css.js +1 -1
  91. package/dist-es/packages/lab/src/form-field/FormField.css.js +1 -1
  92. package/dist-es/packages/lab/src/form-field/FormField.js +1 -0
  93. package/dist-es/packages/lab/src/form-field/FormField.js.map +1 -1
  94. package/dist-es/packages/lab/src/form-field/FormHelperText.css.js +1 -1
  95. package/dist-es/packages/lab/src/form-field/FormHelperText.js +1 -1
  96. package/dist-es/packages/lab/src/form-field/FormHelperText.js.map +1 -1
  97. package/dist-es/packages/lab/src/form-field-context/FormFieldContextNext.js +9 -0
  98. package/dist-es/packages/lab/src/form-field-context/FormFieldContextNext.js.map +1 -0
  99. package/dist-es/packages/lab/src/form-field-context/useFormFieldPropsNext.js +9 -0
  100. package/dist-es/packages/lab/src/form-field-context/useFormFieldPropsNext.js.map +1 -0
  101. package/dist-es/packages/lab/src/form-field-next/FormFieldHelperText.css.js +7 -0
  102. package/dist-es/packages/lab/src/form-field-next/FormFieldHelperText.css.js.map +1 -0
  103. package/dist-es/packages/lab/src/form-field-next/FormFieldHelperText.js +24 -0
  104. package/dist-es/packages/lab/src/form-field-next/FormFieldHelperText.js.map +1 -0
  105. package/dist-es/packages/lab/src/form-field-next/FormFieldLabel.css.js +7 -0
  106. package/dist-es/packages/lab/src/form-field-next/FormFieldLabel.css.js.map +1 -0
  107. package/dist-es/packages/lab/src/form-field-next/FormFieldLabel.js +22 -0
  108. package/dist-es/packages/lab/src/form-field-next/FormFieldLabel.js.map +1 -0
  109. package/dist-es/packages/lab/src/form-field-next/FormFieldNext.css.js +7 -0
  110. package/dist-es/packages/lab/src/form-field-next/FormFieldNext.css.js.map +1 -0
  111. package/dist-es/packages/lab/src/form-field-next/FormFieldNext.js +86 -0
  112. package/dist-es/packages/lab/src/form-field-next/FormFieldNext.js.map +1 -0
  113. package/dist-es/packages/lab/src/index.js +6 -0
  114. package/dist-es/packages/lab/src/index.js.map +1 -1
  115. package/dist-es/packages/lab/src/input/Input.js +1 -0
  116. package/dist-es/packages/lab/src/input/Input.js.map +1 -1
  117. package/dist-es/packages/lab/src/input-next/InputNext.css.js +7 -0
  118. package/dist-es/packages/lab/src/input-next/InputNext.css.js.map +1 -0
  119. package/dist-es/packages/lab/src/input-next/InputNext.js +122 -0
  120. package/dist-es/packages/lab/src/input-next/InputNext.js.map +1 -0
  121. package/dist-es/packages/lab/src/overlay/useOverlay.js +5 -4
  122. package/dist-es/packages/lab/src/overlay/useOverlay.js.map +1 -1
  123. package/dist-es/packages/lab/src/query-input/internal/QueryInputBody.js +1 -0
  124. package/dist-es/packages/lab/src/query-input/internal/QueryInputBody.js.map +1 -1
  125. package/dist-es/packages/lab/src/query-input/internal/ValueSelector.js +2 -2
  126. package/dist-es/packages/lab/src/query-input/internal/ValueSelector.js.map +1 -1
  127. package/dist-es/packages/lab/src/stepper-input/internal/useActivationIndicatorPosition.js +2 -0
  128. package/dist-es/packages/lab/src/stepper-input/internal/useActivationIndicatorPosition.js.map +1 -1
  129. package/dist-es/packages/lab/src/switch/Switch.js +1 -0
  130. package/dist-es/packages/lab/src/switch/Switch.js.map +1 -1
  131. package/dist-es/packages/lab/src/tabs/Tabstrip.js +1 -0
  132. package/dist-es/packages/lab/src/tabs/Tabstrip.js.map +1 -1
  133. package/dist-es/packages/lab/src/tokenized-input/useTokenizedInput.js +1 -0
  134. package/dist-es/packages/lab/src/tokenized-input/useTokenizedInput.js.map +1 -1
  135. package/dist-es/packages/lab/src/toolbar/overflow-panel/OverflowPanel.js +1 -0
  136. package/dist-es/packages/lab/src/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  137. package/dist-types/form-field/FormField.d.ts +2 -0
  138. package/dist-types/form-field-context/FormFieldContextNext.d.ts +6 -0
  139. package/dist-types/form-field-context/index.d.ts +2 -0
  140. package/dist-types/form-field-context/useFormFieldPropsNext.d.ts +2 -0
  141. package/dist-types/form-field-next/FormFieldHelperText.d.ts +9 -0
  142. package/dist-types/form-field-next/FormFieldLabel.d.ts +14 -0
  143. package/dist-types/form-field-next/FormFieldNext.d.ts +50 -0
  144. package/dist-types/form-field-next/index.d.ts +3 -0
  145. package/dist-types/index.d.ts +2 -0
  146. package/dist-types/input-next/InputNext.d.ts +34 -0
  147. package/dist-types/input-next/index.d.ts +1 -0
  148. package/package.json +4 -4
@@ -6,9 +6,10 @@ var jsxRuntime = require('react/jsx-runtime');
6
6
  var core = require('@salt-ds/core');
7
7
  var icons = require('@salt-ds/icons');
8
8
  require('../form-field-context/FormFieldContext.js');
9
+ require('../form-field-context/FormFieldContextNext.js');
9
10
  var useFormFieldProps = require('../form-field-context/useFormFieldProps.js');
10
- var clsx = require('clsx');
11
11
  var React = require('react');
12
+ var clsx = require('clsx');
12
13
  require('./DropdownButton.css.js');
13
14
 
14
15
  const withBaseName = core.makePrefixer("saltDropdownButton");
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownButton.js","sources":["../src/dropdown/DropdownButton.tsx"],"sourcesContent":["import { Button, ButtonProps, makePrefixer } from \"@salt-ds/core\";\nimport { ChevronDownIcon, IconProps, DEFAULT_ICON_SIZE } from \"@salt-ds/icons\";\nimport { useFormFieldProps } from \"../form-field-context\";\nimport { clsx } from \"clsx\";\nimport { AriaAttributes, ComponentType, ForwardedRef, forwardRef } from \"react\";\n\nimport \"./DropdownButton.css\";\n\nexport interface DropdownButtonProps extends ButtonProps {\n /**\n * Replace the default Icon component\n */\n IconComponent?: ComponentType<any>;\n /**\n * Whether the dropdown button should hide role='option' via 'aria-hidden'\n */\n ariaHideOptionRole?: boolean;\n /**\n * If, `true`, the Dropdown button will occupy the full width of it's container\n */\n fullWidth?: boolean;\n /**\n * Sets the size of the down arrow icon. If this is not specified, a default size based on density is used.\n */\n iconSize?: IconProps[\"size\"];\n /**\n * Is the dropdown list open\n */\n isOpen?: boolean;\n /**\n * Label for the dropdown button\n */\n label?: string;\n /**\n * Id for the label. This is needed for ARIA attributes.\n */\n labelId?: string;\n /**\n * When the dropdown is collapsed this value is set as aria-posinset on the span containing the selected value\n * **/\n posInSet?: number;\n /**\n * When the dropdown is collapsed this value is set as aria-setsize on the span containing the selected value\n * **/\n setSize?: number;\n /**\n *\n * **/\n labelAriaAttributes?: Pick<\n AriaAttributes,\n \"aria-posinset\" | \"aria-setsize\" | \"aria-selected\"\n >;\n}\n\nconst withBaseName = makePrefixer(\"saltDropdownButton\");\n\nexport const DropdownButton = forwardRef(function DropdownButton(\n {\n IconComponent = ChevronDownIcon,\n ariaHideOptionRole,\n className,\n disabled,\n iconSize = DEFAULT_ICON_SIZE,\n isOpen,\n label,\n labelId,\n fullWidth,\n posInSet,\n setSize,\n labelAriaAttributes,\n ...rest\n }: DropdownButtonProps,\n ref: ForwardedRef<HTMLButtonElement>\n) {\n const { inFormField } = useFormFieldProps();\n // FIXME: use polymorphic button\n // We don't want the 'button' tag to be shown in the DOM to trigger some accessibility testing\n // tool's false alarm on role of 'listbox'\n return (\n <Button\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"fullwidth\")]: fullWidth,\n [withBaseName(\"formField\")]: inFormField,\n },\n className\n )}\n data-testid=\"dropdown-button\"\n disabled={disabled}\n variant=\"secondary\"\n {...rest}\n ref={ref}\n >\n <div className={withBaseName(\"content\")}>\n <span\n // 'hidden' so that screen reader won't be confused the additional 'option' which is just a label\n aria-hidden={ariaHideOptionRole ? \"true\" : undefined}\n {...labelAriaAttributes}\n className={withBaseName(\"buttonLabel\")}\n id={labelId}\n // 'option' role here is to suppress accessibility testing tool warning about 'listbox' missing children role.\n role=\"option\"\n >\n {label}\n </span>\n <IconComponent\n className={withBaseName(\"icon\")}\n size={iconSize}\n aria-label={null}\n aria-hidden=\"true\"\n />\n </div>\n </Button>\n );\n});\n"],"names":["makePrefixer","forwardRef","DropdownButton","ChevronDownIcon","DEFAULT_ICON_SIZE","useFormFieldProps","jsx","Button","clsx","jsxs"],"mappings":";;;;;;;;;;;;;AAsDA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA,CAAA;AAEzC,MAAA,cAAA,GAAiBC,gBAAW,CAAA,SAASC,eAChD,CAAA;AAAA,EACE,aAAgB,GAAAC,qBAAA;AAAA,EAChB,kBAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAW,GAAAC,uBAAA;AAAA,EACX,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,mBAAA;AAAA,EACG,GAAA,IAAA;AACL,CAAA,EACA,GACA,EAAA;AACA,EAAM,MAAA,EAAE,WAAY,EAAA,GAAIC,mCAAkB,EAAA,CAAA;AAI1C,EAAA,uBACGC,cAAA,CAAAC,WAAA,EAAA;AAAA,IACC,SAAW,EAAAC,SAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb;AAAA,QACE,CAAC,YAAa,CAAA,WAAW,CAAI,GAAA,SAAA;AAAA,QAC7B,CAAC,YAAa,CAAA,WAAW,CAAI,GAAA,WAAA;AAAA,OAC/B;AAAA,MACA,SAAA;AAAA,KACF;AAAA,IACA,aAAY,EAAA,iBAAA;AAAA,IACZ,QAAA;AAAA,IACA,OAAQ,EAAA,WAAA;AAAA,IACP,GAAG,IAAA;AAAA,IACJ,GAAA;AAAA,IAEA,QAAC,kBAAAC,eAAA,CAAA,KAAA,EAAA;AAAA,MAAI,SAAA,EAAW,aAAa,SAAS,CAAA;AAAA,MACpC,QAAA,EAAA;AAAA,wBAACH,cAAA,CAAA,MAAA,EAAA;AAAA,UAEC,aAAA,EAAa,qBAAqB,MAAS,GAAA,KAAA,CAAA;AAAA,UAC1C,GAAG,mBAAA;AAAA,UACJ,SAAA,EAAW,aAAa,aAAa,CAAA;AAAA,UACrC,EAAI,EAAA,OAAA;AAAA,UAEJ,IAAK,EAAA,QAAA;AAAA,UAEJ,QAAA,EAAA,KAAA;AAAA,SACH,CAAA;AAAA,wBACCA,cAAA,CAAA,aAAA,EAAA;AAAA,UACC,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,UAC9B,IAAM,EAAA,QAAA;AAAA,UACN,YAAY,EAAA,IAAA;AAAA,UACZ,aAAY,EAAA,MAAA;AAAA,SACd,CAAA;AAAA,OAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"DropdownButton.js","sources":["../src/dropdown/DropdownButton.tsx"],"sourcesContent":["import { Button, ButtonProps, makePrefixer } from \"@salt-ds/core\";\nimport { ChevronDownIcon, IconProps, DEFAULT_ICON_SIZE } from \"@salt-ds/icons\";\nimport { useFormFieldProps } from \"../form-field-context\";\nimport { clsx } from \"clsx\";\nimport { AriaAttributes, ComponentType, ForwardedRef, forwardRef } from \"react\";\n\nimport \"./DropdownButton.css\";\n\nexport interface DropdownButtonProps extends ButtonProps {\n /**\n * Replace the default Icon component\n */\n IconComponent?: ComponentType<any>;\n /**\n * Whether the dropdown button should hide role='option' via 'aria-hidden'\n */\n ariaHideOptionRole?: boolean;\n /**\n * If, `true`, the Dropdown button will occupy the full width of it's container\n */\n fullWidth?: boolean;\n /**\n * Sets the size of the down arrow icon. If this is not specified, a default size based on density is used.\n */\n iconSize?: IconProps[\"size\"];\n /**\n * Is the dropdown list open\n */\n isOpen?: boolean;\n /**\n * Label for the dropdown button\n */\n label?: string;\n /**\n * Id for the label. This is needed for ARIA attributes.\n */\n labelId?: string;\n /**\n * When the dropdown is collapsed this value is set as aria-posinset on the span containing the selected value\n * **/\n posInSet?: number;\n /**\n * When the dropdown is collapsed this value is set as aria-setsize on the span containing the selected value\n * **/\n setSize?: number;\n /**\n *\n * **/\n labelAriaAttributes?: Pick<\n AriaAttributes,\n \"aria-posinset\" | \"aria-setsize\" | \"aria-selected\"\n >;\n}\n\nconst withBaseName = makePrefixer(\"saltDropdownButton\");\n\nexport const DropdownButton = forwardRef(function DropdownButton(\n {\n IconComponent = ChevronDownIcon,\n ariaHideOptionRole,\n className,\n disabled,\n iconSize = DEFAULT_ICON_SIZE,\n isOpen,\n label,\n labelId,\n fullWidth,\n posInSet,\n setSize,\n labelAriaAttributes,\n ...rest\n }: DropdownButtonProps,\n ref: ForwardedRef<HTMLButtonElement>\n) {\n const { inFormField } = useFormFieldProps();\n // FIXME: use polymorphic button\n // We don't want the 'button' tag to be shown in the DOM to trigger some accessibility testing\n // tool's false alarm on role of 'listbox'\n return (\n <Button\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"fullwidth\")]: fullWidth,\n [withBaseName(\"formField\")]: inFormField,\n },\n className\n )}\n data-testid=\"dropdown-button\"\n disabled={disabled}\n variant=\"secondary\"\n {...rest}\n ref={ref}\n >\n <div className={withBaseName(\"content\")}>\n <span\n // 'hidden' so that screen reader won't be confused the additional 'option' which is just a label\n aria-hidden={ariaHideOptionRole ? \"true\" : undefined}\n {...labelAriaAttributes}\n className={withBaseName(\"buttonLabel\")}\n id={labelId}\n // 'option' role here is to suppress accessibility testing tool warning about 'listbox' missing children role.\n role=\"option\"\n >\n {label}\n </span>\n <IconComponent\n className={withBaseName(\"icon\")}\n size={iconSize}\n aria-label={null}\n aria-hidden=\"true\"\n />\n </div>\n </Button>\n );\n});\n"],"names":["makePrefixer","forwardRef","DropdownButton","ChevronDownIcon","DEFAULT_ICON_SIZE","useFormFieldProps","jsx","Button","clsx","jsxs"],"mappings":";;;;;;;;;;;;;;AAsDA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA,CAAA;AAEzC,MAAA,cAAA,GAAiBC,gBAAW,CAAA,SAASC,eAChD,CAAA;AAAA,EACE,aAAgB,GAAAC,qBAAA;AAAA,EAChB,kBAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAW,GAAAC,uBAAA;AAAA,EACX,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,mBAAA;AAAA,EACG,GAAA,IAAA;AACL,CAAA,EACA,GACA,EAAA;AACA,EAAM,MAAA,EAAE,WAAY,EAAA,GAAIC,mCAAkB,EAAA,CAAA;AAI1C,EAAA,uBACGC,cAAA,CAAAC,WAAA,EAAA;AAAA,IACC,SAAW,EAAAC,SAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb;AAAA,QACE,CAAC,YAAa,CAAA,WAAW,CAAI,GAAA,SAAA;AAAA,QAC7B,CAAC,YAAa,CAAA,WAAW,CAAI,GAAA,WAAA;AAAA,OAC/B;AAAA,MACA,SAAA;AAAA,KACF;AAAA,IACA,aAAY,EAAA,iBAAA;AAAA,IACZ,QAAA;AAAA,IACA,OAAQ,EAAA,WAAA;AAAA,IACP,GAAG,IAAA;AAAA,IACJ,GAAA;AAAA,IAEA,QAAC,kBAAAC,eAAA,CAAA,KAAA,EAAA;AAAA,MAAI,SAAA,EAAW,aAAa,SAAS,CAAA;AAAA,MACpC,QAAA,EAAA;AAAA,wBAACH,cAAA,CAAA,MAAA,EAAA;AAAA,UAEC,aAAA,EAAa,qBAAqB,MAAS,GAAA,KAAA,CAAA;AAAA,UAC1C,GAAG,mBAAA;AAAA,UACJ,SAAA,EAAW,aAAa,aAAa,CAAA;AAAA,UACrC,EAAI,EAAA,OAAA;AAAA,UAEJ,IAAK,EAAA,QAAA;AAAA,UAEJ,QAAA,EAAA,KAAA;AAAA,SACH,CAAA;AAAA,wBACCA,cAAA,CAAA,aAAA,EAAA;AAAA,UACC,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,UAC9B,IAAM,EAAA,QAAA;AAAA,UACN,YAAY,EAAA,IAAA;AAAA,UACZ,aAAY,EAAA,MAAA;AAAA,SACd,CAAA;AAAA,OAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -9,6 +9,7 @@ require('react/jsx-runtime');
9
9
  var useResizeObserver = require('../responsive/useResizeObserver.js');
10
10
  require('../utils/useFloatingUI.js');
11
11
  require('../form-field-context/FormFieldContext.js');
12
+ require('../form-field-context/FormFieldContextNext.js');
12
13
  var useFormFieldProps = require('../form-field-context/useFormFieldProps.js');
13
14
 
14
15
  const NO_OBSERVER = [];
@@ -1 +1 @@
1
- {"version":3,"file":"useDropdownBase.js","sources":["../src/dropdown/useDropdownBase.ts"],"sourcesContent":["import { useControlled } from \"@salt-ds/core\";\nimport { KeyboardEvent, useCallback, useRef, useState } from \"react\";\n\nimport { DropdownHookProps, DropdownHookResult } from \"./dropdownTypes\";\nimport { useClickAway } from \"./useClickAway\";\nimport { measurements, useResizeObserver, WidthOnly } from \"../responsive\";\nimport { useFormFieldProps } from \"../form-field-context\";\n\nconst NO_OBSERVER: string[] = [];\n\nexport const useDropdownBase = ({\n ariaLabelledBy: ariaLabelledByProp,\n defaultIsOpen,\n disabled,\n // TODO check how we're using fullWidth, do we need a separate value for the popup component\n fullWidth: fullWidthProp,\n id,\n isOpen: isOpenProp,\n onOpenChange,\n onKeyDown: onKeyDownProp,\n openOnFocus,\n popupComponent: { props: componentProps },\n popupWidth: popupWidthProp,\n rootRef,\n width,\n}: DropdownHookProps): DropdownHookResult => {\n const justFocused = useRef<number | null>(null);\n const popperRef = useRef<HTMLElement | null>(null);\n const popperCallbackRef = useCallback((element: HTMLElement | null) => {\n popperRef.current = element;\n }, []);\n const [isOpen, setIsOpen] = useControlled({\n controlled: isOpenProp,\n default: Boolean(defaultIsOpen),\n name: \"useDropdown\",\n state: \"isOpen\",\n });\n\n const {\n inFormField,\n setFocused: setFormFieldFocused,\n a11yProps: { \"aria-labelledby\": ariaLabelledBy, ...restA11yProps } = {},\n } = useFormFieldProps();\n\n const [popup, setPopup] = useState<measurements>({\n width: popupWidthProp ?? width ?? 0,\n });\n\n const showDropdown = useCallback(() => {\n setIsOpen(true);\n onOpenChange?.(true);\n }, [onOpenChange, setIsOpen]);\n\n const hideDropdown = useCallback(() => {\n setIsOpen(false);\n onOpenChange?.(false);\n }, [onOpenChange, setIsOpen]);\n\n useClickAway({\n popperRef,\n rootRef,\n isOpen,\n onClose: hideDropdown,\n });\n\n const handleTriggerFocus = useCallback(() => {\n if (!disabled) {\n setFormFieldFocused?.(true);\n\n if (openOnFocus) {\n setIsOpen(true);\n onOpenChange?.(true);\n // Suppress response to click if click was the cause of focus\n justFocused.current = window.setTimeout(() => {\n justFocused.current = null;\n }, 1000);\n }\n }\n }, [disabled, onOpenChange, openOnFocus, setFormFieldFocused, setIsOpen]);\n\n const handleTriggerBlur = useCallback(() => {\n setFormFieldFocused?.(false);\n }, [setFormFieldFocused]);\n\n const handleTriggerToggle = useCallback(\n (e: MouseEvent) => {\n // Do not trigger menu open for 'Enter' and 'SPACE' key as they're handled in `handleKeyDown`\n if (\n [\"Enter\", \" \"].indexOf(\n (e as unknown as KeyboardEvent<HTMLDivElement>).key\n ) === -1\n ) {\n const newIsOpen = !isOpen;\n setIsOpen(newIsOpen);\n onOpenChange?.(newIsOpen);\n }\n },\n [isOpen, setIsOpen, onOpenChange]\n );\n\n const handleKeydown = useCallback(\n (evt: KeyboardEvent<HTMLElement>) => {\n if ((evt.key === \"Tab\" || evt.key === \"Escape\") && isOpen) {\n // No preventDefault here, this behaviour does not need to be exclusive\n hideDropdown();\n } else if (\n (evt.key === \"Enter\" || evt.key === \"ArrowDown\" || evt.key === \" \") &&\n !isOpen\n ) {\n evt.preventDefault();\n showDropdown();\n } else {\n onKeyDownProp?.(evt);\n }\n },\n [hideDropdown, isOpen, onKeyDownProp, showDropdown]\n );\n\n const fullWidth = fullWidthProp ?? inFormField;\n const measurements = fullWidth ? WidthOnly : NO_OBSERVER;\n useResizeObserver(rootRef, measurements, setPopup, fullWidth);\n\n const componentId = `${id}-dropdown`;\n\n const getAriaLabelledBy = (\n labelledBy: string | undefined,\n labelledByProp: string | undefined\n ): string | undefined => {\n if (labelledBy === undefined && labelledByProp === undefined) {\n return undefined;\n } else {\n return [labelledBy, labelledByProp].filter((x) => !!x).join(\" \");\n }\n };\n\n // TODO do we use aria-popup - valid values are menu, disloag, grid, tree, listbox\n const triggerProps = {\n ...restA11yProps,\n \"aria-expanded\": isOpen,\n \"aria-labelledby\": getAriaLabelledBy(ariaLabelledBy, ariaLabelledByProp),\n \"aria-owns\": isOpen ? componentId : undefined,\n id: `${id}-control`,\n onClick: disabled || openOnFocus ? undefined : handleTriggerToggle,\n onFocus: handleTriggerFocus,\n onBlur: handleTriggerBlur,\n role: \"listbox\",\n onKeyDown: disabled ? undefined : handleKeydown,\n style: { width: fullWidth ? undefined : width },\n };\n\n const dropdownComponentProps = {\n \"aria-labelledby\": ariaLabelledBy,\n id: componentId,\n width: popup.width,\n };\n\n return {\n componentProps: dropdownComponentProps,\n popperRef: popperCallbackRef,\n isOpen,\n label: \"Dropdown Button\",\n triggerProps,\n };\n};\n"],"names":["useRef","useCallback","useControlled","useFormFieldProps","useState","useClickAway","measurements","WidthOnly","useResizeObserver"],"mappings":"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"}
1
+ {"version":3,"file":"useDropdownBase.js","sources":["../src/dropdown/useDropdownBase.ts"],"sourcesContent":["import { useControlled } from \"@salt-ds/core\";\nimport { KeyboardEvent, useCallback, useRef, useState } from \"react\";\n\nimport { DropdownHookProps, DropdownHookResult } from \"./dropdownTypes\";\nimport { useClickAway } from \"./useClickAway\";\nimport { measurements, useResizeObserver, WidthOnly } from \"../responsive\";\nimport { useFormFieldProps } from \"../form-field-context\";\n\nconst NO_OBSERVER: string[] = [];\n\nexport const useDropdownBase = ({\n ariaLabelledBy: ariaLabelledByProp,\n defaultIsOpen,\n disabled,\n // TODO check how we're using fullWidth, do we need a separate value for the popup component\n fullWidth: fullWidthProp,\n id,\n isOpen: isOpenProp,\n onOpenChange,\n onKeyDown: onKeyDownProp,\n openOnFocus,\n popupComponent: { props: componentProps },\n popupWidth: popupWidthProp,\n rootRef,\n width,\n}: DropdownHookProps): DropdownHookResult => {\n const justFocused = useRef<number | null>(null);\n const popperRef = useRef<HTMLElement | null>(null);\n const popperCallbackRef = useCallback((element: HTMLElement | null) => {\n popperRef.current = element;\n }, []);\n const [isOpen, setIsOpen] = useControlled({\n controlled: isOpenProp,\n default: Boolean(defaultIsOpen),\n name: \"useDropdown\",\n state: \"isOpen\",\n });\n\n const {\n inFormField,\n setFocused: setFormFieldFocused,\n a11yProps: { \"aria-labelledby\": ariaLabelledBy, ...restA11yProps } = {},\n } = useFormFieldProps();\n\n const [popup, setPopup] = useState<measurements>({\n width: popupWidthProp ?? width ?? 0,\n });\n\n const showDropdown = useCallback(() => {\n setIsOpen(true);\n onOpenChange?.(true);\n }, [onOpenChange, setIsOpen]);\n\n const hideDropdown = useCallback(() => {\n setIsOpen(false);\n onOpenChange?.(false);\n }, [onOpenChange, setIsOpen]);\n\n useClickAway({\n popperRef,\n rootRef,\n isOpen,\n onClose: hideDropdown,\n });\n\n const handleTriggerFocus = useCallback(() => {\n if (!disabled) {\n setFormFieldFocused?.(true);\n\n if (openOnFocus) {\n setIsOpen(true);\n onOpenChange?.(true);\n // Suppress response to click if click was the cause of focus\n justFocused.current = window.setTimeout(() => {\n justFocused.current = null;\n }, 1000);\n }\n }\n }, [disabled, onOpenChange, openOnFocus, setFormFieldFocused, setIsOpen]);\n\n const handleTriggerBlur = useCallback(() => {\n setFormFieldFocused?.(false);\n }, [setFormFieldFocused]);\n\n const handleTriggerToggle = useCallback(\n (e: MouseEvent) => {\n // Do not trigger menu open for 'Enter' and 'SPACE' key as they're handled in `handleKeyDown`\n if (\n [\"Enter\", \" \"].indexOf(\n (e as unknown as KeyboardEvent<HTMLDivElement>).key\n ) === -1\n ) {\n const newIsOpen = !isOpen;\n setIsOpen(newIsOpen);\n onOpenChange?.(newIsOpen);\n }\n },\n [isOpen, setIsOpen, onOpenChange]\n );\n\n const handleKeydown = useCallback(\n (evt: KeyboardEvent<HTMLElement>) => {\n if ((evt.key === \"Tab\" || evt.key === \"Escape\") && isOpen) {\n // No preventDefault here, this behaviour does not need to be exclusive\n hideDropdown();\n } else if (\n (evt.key === \"Enter\" || evt.key === \"ArrowDown\" || evt.key === \" \") &&\n !isOpen\n ) {\n evt.preventDefault();\n showDropdown();\n } else {\n onKeyDownProp?.(evt);\n }\n },\n [hideDropdown, isOpen, onKeyDownProp, showDropdown]\n );\n\n const fullWidth = fullWidthProp ?? inFormField;\n const measurements = fullWidth ? WidthOnly : NO_OBSERVER;\n useResizeObserver(rootRef, measurements, setPopup, fullWidth);\n\n const componentId = `${id}-dropdown`;\n\n const getAriaLabelledBy = (\n labelledBy: string | undefined,\n labelledByProp: string | undefined\n ): string | undefined => {\n if (labelledBy === undefined && labelledByProp === undefined) {\n return undefined;\n } else {\n return [labelledBy, labelledByProp].filter((x) => !!x).join(\" \");\n }\n };\n\n // TODO do we use aria-popup - valid values are menu, disloag, grid, tree, listbox\n const triggerProps = {\n ...restA11yProps,\n \"aria-expanded\": isOpen,\n \"aria-labelledby\": getAriaLabelledBy(ariaLabelledBy, ariaLabelledByProp),\n \"aria-owns\": isOpen ? componentId : undefined,\n id: `${id}-control`,\n onClick: disabled || openOnFocus ? undefined : handleTriggerToggle,\n onFocus: handleTriggerFocus,\n onBlur: handleTriggerBlur,\n role: \"listbox\",\n onKeyDown: disabled ? undefined : handleKeydown,\n style: { width: fullWidth ? undefined : width },\n };\n\n const dropdownComponentProps = {\n \"aria-labelledby\": ariaLabelledBy,\n id: componentId,\n width: popup.width,\n };\n\n return {\n componentProps: dropdownComponentProps,\n popperRef: popperCallbackRef,\n isOpen,\n label: \"Dropdown Button\",\n triggerProps,\n };\n};\n"],"names":["useRef","useCallback","useControlled","useFormFieldProps","useState","useClickAway","measurements","WidthOnly","useResizeObserver"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  var styleInject_es = require('../../../../node_modules/style-inject/dist/style-inject.es.js');
4
4
 
5
- var css_248z = "/* Styles applied to root component */\n.saltFileDropZone {\n --fileDropZone-background: var(--salt-container-secondary-background);\n --fileDropZone-borderColor: var(--salt-container-secondary-borderColor);\n --fileDropZone-borderWidth: var(--salt-size-border);\n --fileDropZone-borderStyle: var(--salt-target-borderStyle);\n --fileDropZone-text-color: var(--salt-text-primary-foreground);\n --fileDropZone-icon-color: var(--salt-text-primary-foreground);\n --fileDropZone-padding: var(--salt-size-container-spacing);\n --fileDropZone-title-fontSize: var(--salt-text-fontSize);\n --fileDropZone-title-lineHeight: var(--salt-text-lineHeight);\n}\n\n.saltFileDropZone {\n color: var(--saltFileDropZone-text-color, var(--fileDropZone-text-color));\n display: inline-flex;\n background: var(--saltFileDropZone-background, var(--fileDropZone-background));\n text-align: center;\n align-items: stretch;\n justify-content: center;\n border-color: var(--saltFileDropZone-borderColor, var(--fileDropZone-borderColor));\n border-style: var(--saltFileDropZone-borderStyle, var(--fileDropZone-borderStyle));\n border-width: var(--saltFileDropZone-borderWidth, var(--fileDropZone-borderWidth));\n flex-direction: column;\n padding: var(--saltFileDropZone-padding, var(--fileDropZone-padding));\n}\n\n.saltFileDropZone *:not(.saltFileDropZone-inputRoot, .saltFileDropZone-inputRoot *) {\n pointer-events: none;\n}\n\n/* Styles applied to icon */\n.saltFileDropZone-icon {\n fill: var(--fileDropZone-icon-color);\n margin-bottom: var(--salt-size-unit);\n}\n\n.saltFileDropZone .saltFileDropZone-title:not(:last-child),\n.saltFileDropZone .saltFileDropZone-inputRoot:not(:last-child) {\n margin-bottom: calc(var(--salt-size-unit) * 2);\n}\n\n/* Styles applied if `isActive={true}` */\n.saltFileDropZone-active:not(.saltFileDropZone-disabled) {\n --fileDropZone-background: var(--salt-target-background-hover);\n}\n\n/* Styles applied to description if `isRejected={true}` */\n.saltFileDropZone-error .saltFileDropZone-description {\n margin-bottom: calc(var(--salt-size-unit) * 2);\n}\n\n/* Styles applied if `isRejected={true}` */\n.saltFileDropZone-error {\n --fileDropZone-background: var(--salt-status-error-background-emphasize);\n --fileDropZone-borderColor: var(--salt-status-error-borderColor);\n --fileDropZone-icon-color: var(--salt-status-error-foreground);\n}\n\n/* Styles applied on if `isRejected={true}` and `isActive={true}` */\n.saltFileDropZone-error:not(.saltFileDropZone-disabled).saltFileDropZone-active {\n --fileDropZone-background: var(--salt-target-background-hover);\n --fileDropZone-borderColor: var(--salt-container-secondary-borderColor);\n}\n\n/* Styles applied to title and description */\n.saltFileDropZone-title,\n.saltFileDropZone-description {\n font-size: var(--saltFileDropZone-title-fontSize, var(--fileDropZone-title-fontSize));\n line-height: var(--saltFileDropZone-title-lineHeight, var(--fileDropZone-title-lineHeight));\n}\n\n/* Styles applied to title */\n.saltFileDropZone-title {\n font-weight: var(--saltFileDropZone-fontWeight, var(--salt-text-fontWeight-strong));\n}\n\n/* Styles applied to input button */\n.saltFileDropZone-inputButton {\n display: inline-flex;\n}\n\n/* Styles applied to input root */\n.saltFileDropZone-inputRoot {\n line-height: 1;\n}\n\n.saltFileDropZone-inputRoot .input-hidden {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n visibility: hidden;\n}\n\n/* Styles applied if `disabled={true}` */\n.saltFileDropZone-disabled {\n --fileDropZone-borderColor: var(--salt-container-secondary-borderColor-disabled);\n\n cursor: var(--salt-target-cursor-disabled);\n}\n\n/* Styles applied if `disabled={true}` to icon and title */\n.saltFileDropZone-disabled .saltFileDropZone-icon,\n.saltFileDropZone-disabled .saltFileDropZone-title {\n --fileDropZone-text-color: var(--salt-text-primary-foreground-disabled);\n --fileDropZone-icon-color: var(--salt-text-primary-foreground-disabled);\n}\n";
5
+ var css_248z = "/* Styles applied to root component */\n.saltFileDropZone {\n --fileDropZone-background: var(--salt-container-secondary-background);\n --fileDropZone-borderColor: var(--salt-container-secondary-borderColor);\n --fileDropZone-borderWidth: var(--salt-size-border);\n --fileDropZone-borderStyle: var(--salt-target-borderStyle);\n --fileDropZone-text-color: var(--salt-text-primary-foreground);\n --fileDropZone-icon-color: var(--salt-text-primary-foreground);\n --fileDropZone-padding: var(--salt-size-container-spacing);\n --fileDropZone-title-fontSize: var(--salt-text-fontSize);\n --fileDropZone-title-lineHeight: var(--salt-text-lineHeight);\n}\n\n.saltFileDropZone {\n color: var(--saltFileDropZone-text-color, var(--fileDropZone-text-color));\n display: inline-flex;\n background: var(--saltFileDropZone-background, var(--fileDropZone-background));\n text-align: center;\n align-items: stretch;\n justify-content: center;\n border-color: var(--saltFileDropZone-borderColor, var(--fileDropZone-borderColor));\n border-style: var(--saltFileDropZone-borderStyle, var(--fileDropZone-borderStyle));\n border-width: var(--saltFileDropZone-borderWidth, var(--fileDropZone-borderWidth));\n flex-direction: column;\n padding: var(--saltFileDropZone-padding, var(--fileDropZone-padding));\n}\n\n.saltFileDropZone *:not(.saltFileDropZone-inputRoot, .saltFileDropZone-inputRoot *) {\n pointer-events: none;\n}\n\n/* Styles applied to icon */\n.saltFileDropZone-icon {\n fill: var(--fileDropZone-icon-color);\n margin-bottom: var(--salt-size-unit);\n}\n\n.saltFileDropZone .saltFileDropZone-title:not(:last-child),\n.saltFileDropZone .saltFileDropZone-inputRoot:not(:last-child) {\n margin-bottom: calc(var(--salt-size-unit) * 2);\n}\n\n/* Styles applied if `isActive={true}` */\n.saltFileDropZone-active:not(.saltFileDropZone-disabled) {\n --fileDropZone-background: var(--salt-target-background-hover);\n}\n\n/* Styles applied to description if `isRejected={true}` */\n.saltFileDropZone-error .saltFileDropZone-description {\n margin-bottom: calc(var(--salt-size-unit) * 2);\n}\n\n/* Styles applied if `isRejected={true}` */\n.saltFileDropZone-error {\n --fileDropZone-background: var(--salt-status-error-background);\n --fileDropZone-borderColor: var(--salt-status-error-borderColor);\n --fileDropZone-icon-color: var(--salt-status-error-foreground);\n}\n\n/* Styles applied on if `isRejected={true}` and `isActive={true}` */\n.saltFileDropZone-error:not(.saltFileDropZone-disabled).saltFileDropZone-active {\n --fileDropZone-background: var(--salt-target-background-hover);\n --fileDropZone-borderColor: var(--salt-container-secondary-borderColor);\n}\n\n/* Styles applied to title and description */\n.saltFileDropZone-title,\n.saltFileDropZone-description {\n font-size: var(--saltFileDropZone-title-fontSize, var(--fileDropZone-title-fontSize));\n line-height: var(--saltFileDropZone-title-lineHeight, var(--fileDropZone-title-lineHeight));\n}\n\n/* Styles applied to title */\n.saltFileDropZone-title {\n font-weight: var(--saltFileDropZone-fontWeight, var(--salt-text-fontWeight-strong));\n}\n\n/* Styles applied to input button */\n.saltFileDropZone-inputButton {\n display: inline-flex;\n}\n\n/* Styles applied to input root */\n.saltFileDropZone-inputRoot {\n line-height: 1;\n}\n\n.saltFileDropZone-inputRoot .input-hidden {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n visibility: hidden;\n}\n\n/* Styles applied if `disabled={true}` */\n.saltFileDropZone-disabled {\n --fileDropZone-borderColor: var(--salt-container-secondary-borderColor-disabled);\n\n cursor: var(--salt-target-cursor-disabled);\n}\n\n/* Styles applied if `disabled={true}` to icon and title */\n.saltFileDropZone-disabled .saltFileDropZone-icon,\n.saltFileDropZone-disabled .saltFileDropZone-title {\n --fileDropZone-text-color: var(--salt-text-primary-foreground-disabled);\n --fileDropZone-icon-color: var(--salt-text-primary-foreground-disabled);\n}\n";
6
6
  styleInject_es(css_248z);
7
7
 
8
8
  module.exports = css_248z;
@@ -2,7 +2,7 @@
2
2
 
3
3
  var styleInject_es = require('../../../../node_modules/style-inject/dist/style-inject.es.js');
4
4
 
5
- var css_248z = ".salt-density-high {\n --formField-label-top-marginBottom: 2px;\n}\n.salt-density-medium {\n --formField-label-top-marginBottom: 2px;\n}\n.salt-density-low {\n --formField-label-top-marginBottom: 4px;\n}\n.salt-density-touch {\n --formField-label-top-marginBottom: 8px;\n}\n\n/* Style applied to the root element */\n.saltFormField {\n --formField-activationIndicator-color: var(--salt-editable-borderColor);\n --formField-activationIndicator-size: var(--salt-size-border);\n --formField-activationIndicator-style: var(--salt-editable-borderStyle);\n --formField-background: var(--salt-editable-primary-background);\n --formField-focused-outlineColor: var(--salt-focused-outlineColor);\n /* Set to 0 until helper text class provided */\n --formField-helperText-height: 0px;\n}\n\n.saltFormField-tertiary.saltFormField {\n --formField-background: var(--salt-editable-tertiary-background);\n}\n\n.saltFormField-secondary.saltFormField {\n --formField-background: var(--salt-editable-secondary-background);\n}\n\n.saltFormField {\n border: 0;\n display: inline-grid;\n font-size: var(--saltFormField-fontSize, var(--salt-text-fontSize));\n margin: var(--saltFormField-margin, 0);\n padding: 0;\n position: relative;\n min-width: 0;\n vertical-align: top;\n width: var(--saltFormField-width, auto);\n}\n\n/* Class applied to the root element on hover */\n.saltFormField:hover {\n --formField-activationIndicator-color: var(--salt-editable-borderColor-hover);\n --formField-activationIndicator-size: var(--salt-size-border);\n --formField-activationIndicator-style: var(--salt-editable-borderStyle-hover);\n\n --saltInput-cursor: var(--salt-editable-cursor-hover);\n}\n\n/* Class applied to the root element when focused */\n.saltFormField-focused,\n.saltFormField-lowFocused,\n.saltFormField.saltFormField-focused:hover,\n.saltFormField.saltFormField-lowFocused:hover {\n --formField-activationIndicator-color: var(--salt-editable-borderColor-active);\n --formField-activationIndicator-size: var(--salt-editable-borderWidth-active);\n --formField-activationIndicator-style: var(--salt-editable-borderStyle-active);\n\n --saltInput-cursor: var(--salt-editable-cursor-active);\n}\n\n/* Class applied when helper text is provided */\n.saltFormField-withHelperText {\n --formField-helperText-marginTop: var(--formField-helperText-marginTop-default);\n --formField-activationIndicator-offsetBottom: calc(var(--formField-helperText-marginTop) + var(--saltFormField-helperText-lineHeight, var(--formField-helperText-height)));\n}\n\n/* Class applied if `fullWidth={true}` and helper text is provided */\n.saltFormField-fullWidth.saltFormField-withHelperText {\n --formField-helperText-marginTop: var(--formField-helperText-marginTop-fullWidth);\n --formField-activationIndicator-offsetBottom: calc(var(--formField-helperText-marginTop-fullWidth) + var(--saltFormField-helperText-lineHeight, var(--formField-helperText-height)));\n}\n\n/* Class applied when helper text is provided */\n.saltFormField-withHelperText {\n --formField-helperText-fontSize: var(--saltFormField-helperText-fontSize, var(--salt-text-fontSize));\n --formField-helperText-baseHeight: calc(1.3 * var(--formField-helperText-fontSize));\n --formField-helperText-calculatedHeight: max(var(--salt-text-label-minHeight), var(--formField-helperText-baseHeight));\n --formField-helperText-height: calc(var(--formField-helperText-calculatedHeight) + var(--formField-helperText-marginTop));\n}\n\n/* Class applied to the root element if `fillWidth={true}` */\n.saltFormField-fullWidth {\n width: 100%;\n}\n\n/* Class applied to the root element if `disabled={true}` */\n.saltFormField-disabled {\n --formField-activationIndicator-color: var(--salt-editable-borderColor-disabled);\n --formField-activationIndicator-opacity: var(--salt-palette-opacity-foreground);\n --formField-activationIndicator-size: var(--salt-size-border);\n --formField-activationIndicator-style: var(--salt-editable-borderStyle-disabled);\n --formField-helperText-opacity: var(--salt-palette-opacity-foreground);\n\n --saltControlLabel-color: var(--salt-text-primary-foreground-disabled);\n\n --saltInput-cursor: var(--salt-editable-cursor-disabled);\n}\n\n/* Class applied to the root element on hover if `disabled={true}` */\n.saltFormField.saltFormField-disabled:hover {\n --formField-activationIndicator-color: var(--salt-editable-borderColor-disabled);\n --formField-activationIndicator-size: var(--salt-size-border);\n --formField-activationIndicator-style: var(--salt-editable-borderStyle-disabled);\n\n --saltInput-cursor: var(--salt-editable-cursor-disabled);\n}\n\n/* Class applied to the root element on warning state */\n.saltFormField.saltFormField-warning {\n --formField-focused-outlineColor: var(--salt-status-warning-borderColor);\n --formField-activationIndicator-color: var(--salt-status-warning-borderColor);\n}\n\n/* Class applied to the root element on warning state on hover */\n.saltFormField.saltFormField-warning:hover {\n --formField-activationIndicator-color: var(--salt-status-warning-borderColor);\n}\n\n/* Class applied to the root element on error state */\n.saltFormField.saltFormField-error {\n --formField-focused-outlineColor: var(--salt-status-error-borderColor);\n --formField-activationIndicator-color: var(--salt-status-error-borderColor);\n}\n\n/* Class applied to the root element on error state on hover */\n.saltFormField.saltFormField-error:hover {\n --formField-activationIndicator-color: var(--salt-status-error-borderColor);\n}\n\n/* Error state styling when `variant=\"secondary\"` */\n.saltFormField-secondary.saltFormField-error {\n --formField-background: var(--salt-status-error-background-emphasize);\n}\n\n/* Warning state styling when `variant=\"secondary\"` */\n.saltFormField-secondary.saltFormField-warning {\n --formField-background: var(--salt-status-warning-background-emphasize);\n}\n\n/* Class applied to the root element if `labelPlacement=\"left\"` */\n.saltFormField-labelLeft {\n --formField-label-marginTop: var(--salt-size-unit);\n --formField-label-paddingLeft: 0px;\n --formField-label-paddingRight: calc(0.75 * var(--salt-size-unit));\n\n align-self: start;\n grid-template-columns: auto 1fr;\n}\n\n/* Class applied to the root element if `labelPlacement=\"top\"` or labelPlacement omitted (default is 'top') */\n.saltFormField-labelTop {\n --formField-label-marginBottom: var(--formField-label-top-marginBottom);\n --formField-label-marginTop: 0;\n --formField-label-paddingLeft: var(--salt-size-unit);\n --formField-label-paddingRight: var(--salt-size-unit);\n /* Uses density invariant value unless helper text provided */\n --formField-background-offset-height: calc(var(--formField-helperText-marginTop, 0px) + var(--saltFormField-helperText-lineHeight, var(--formField-helperText-height)));\n\n background: linear-gradient(to top, transparent var(--formField-background-offset-height), var(--saltFormField-background, var(--formField-background)) var(--formField-background-offset-height));\n}\n\n/* Class applied if `labelPlacement=\"top\"` and helper text is provided */\n.saltFormField-labelTop.saltFormField-withHelperText {\n /* Uses density aware value from FormHelperText */\n --formField-background-offset-height: var(--formField-helperText-background-offset-height);\n}\n\n.saltFormField > * {\n grid-column-start: 1;\n grid-column-end: 2;\n grid-row-start: 2;\n grid-row-end: 3;\n}\n\n.saltFormField-labelLeft > * {\n grid-row-start: 1;\n grid-row-end: 2;\n}\n\n.saltFormField > .saltFormLabel {\n grid-row-start: 1;\n grid-row-end: 2;\n}\n\n.saltFormField > .saltFormActivationIndicator {\n grid-row-start: 3;\n grid-row-end: 4;\n}\n\n.saltFormField > .saltFormFieldHelperText {\n grid-row-start: 4;\n grid-row-end: 5;\n}\n\n.saltFormField-labelLeft > .saltFormLabel ~ * {\n grid-column-start: 2;\n grid-column-end: 2;\n}\n\n/* Class applied if `readOnly={true}\"` */\n.saltFormField-readOnly {\n --formField-activationIndicator-color: var(--salt-editable-borderColor-readonly);\n\n --saltInput-cursor: var(--salt-editable-cursor-readonly);\n}\n\n/* Class applied to the root element if `readOnly={true}\"` on hover */\n.saltFormField.saltFormField-readOnly:hover {\n --formField-activationIndicator-color: var(--salt-editable-borderColor-readonly);\n --formField-activationIndicator-size: var(--salt-size-border);\n --formField-activationIndicator-style: var(--salt-editable-borderStyle-readonly);\n\n --saltInput-cursor: var(--salt-editable-cursor-readonly);\n}\n\n/* Class applied on focus with `labelTop={true}` and no helper text provided */\n.saltFormField:not(.saltFormField-withHelperText):not(.saltFormField-labelLeft).saltFormField-focused:before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: var(--saltFormField-helperText-lineHeight, var(--formField-helperText-height, 0px));\n outline-color: var(--formField-focused-outlineColor);\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n}\n\n/* Class applied on focus with `labelTop={true}` and helper text provided */\n.saltFormField-withHelperText:not(.saltFormField-labelLeft).saltFormField-focused:before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: var(--formField-helperText-height, 0px);\n outline-color: var(--formField-focused-outlineColor);\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n}\n\n.saltFormField-labelLeft.saltFormField-focused:before {\n content: none;\n}\n\n/* Class applied on focus with `labelLeft={true}` */\n.saltFormField-labelLeft.saltFormField-focused > *:before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0px;\n outline-color: var(--formField-focused-outlineColor);\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n z-index: -1;\n}\n\n.saltFormField-labelLeft.saltFormField-focused > :is(.saltFormActivationIndicator, .saltFormFieldHelperText, .saltFormLabel):before {\n content: none;\n}\n\n.saltFormField-labelLeft.saltFormField-focused {\n outline: none;\n}\n\n.saltFormField-labelLeft.saltFormField-focused > :is(.saltFormField-activationIndicator, .saltFormField-helperText, .saltFormLabel):before {\n content: none;\n}\n\n.saltFormField-labelLeft.saltFormField-focused .saltFormLabel + * {\n outline: none;\n}\n\n.saltFormField-tertiary.saltFormField.saltFormField-labelLeft > .saltFormLabel ~ * {\n background: var(--saltFormField-background, var(--formField-background));\n}\n\n/* TODO: I don't think this is needed, but commenting until work on FF done\n.saltFormField-primary.saltFormField > :not(.saltFormLabel):first-child {\n background: var(--saltFormField-background, var(--formField-background));\n} */\n\n.saltFormField-labelLeft > .saltFormLabel ~ :not(.saltFormFieldHelperText) {\n background: var(--saltFormField-background, var(--formField-background));\n}\n";
5
+ var css_248z = ".salt-density-high {\n --formField-label-top-marginBottom: 2px;\n}\n.salt-density-medium {\n --formField-label-top-marginBottom: 2px;\n}\n.salt-density-low {\n --formField-label-top-marginBottom: 4px;\n}\n.salt-density-touch {\n --formField-label-top-marginBottom: 8px;\n}\n\n/* Style applied to the root element */\n.saltFormField {\n --formField-activationIndicator-color: var(--salt-editable-borderColor);\n --formField-activationIndicator-size: var(--salt-size-border);\n --formField-activationIndicator-style: var(--salt-editable-borderStyle);\n --formField-background: var(--salt-editable-primary-background);\n --formField-focused-outlineColor: var(--salt-focused-outlineColor);\n /* Set to 0 until helper text class provided */\n --formField-helperText-height: 0px;\n}\n\n.saltFormField-secondary.saltFormField {\n --formField-background: var(--salt-editable-secondary-background);\n}\n\n.saltFormField {\n border: 0;\n display: inline-grid;\n font-size: var(--saltFormField-fontSize, var(--salt-text-fontSize));\n margin: var(--saltFormField-margin, 0);\n padding: 0;\n position: relative;\n min-width: 0;\n vertical-align: top;\n width: var(--saltFormField-width, auto);\n}\n\n/* Class applied to the root element on hover */\n.saltFormField:hover {\n --formField-activationIndicator-color: var(--salt-editable-borderColor-hover);\n --formField-activationIndicator-size: var(--salt-size-border);\n --formField-activationIndicator-style: var(--salt-editable-borderStyle-hover);\n\n --saltInput-cursor: var(--salt-editable-cursor-hover);\n}\n\n/* Class applied to the root element when focused */\n.saltFormField-focused,\n.saltFormField-lowFocused,\n.saltFormField.saltFormField-focused:hover,\n.saltFormField.saltFormField-lowFocused:hover {\n --formField-activationIndicator-color: var(--salt-editable-borderColor-active);\n --formField-activationIndicator-size: var(--salt-editable-borderWidth-active);\n --formField-activationIndicator-style: var(--salt-editable-borderStyle-active);\n\n --saltInput-cursor: var(--salt-editable-cursor-active);\n}\n\n/* Class applied when helper text is provided */\n.saltFormField-withHelperText {\n --formField-helperText-marginTop: var(--formField-helperText-marginTop-default);\n --formField-activationIndicator-offsetBottom: calc(var(--formField-helperText-marginTop) + var(--saltFormField-helperText-lineHeight, var(--formField-helperText-height)));\n}\n\n/* Class applied if `fullWidth={true}` and helper text is provided */\n.saltFormField-fullWidth.saltFormField-withHelperText {\n --formField-helperText-marginTop: var(--formField-helperText-marginTop-fullWidth);\n --formField-activationIndicator-offsetBottom: calc(var(--formField-helperText-marginTop-fullWidth) + var(--saltFormField-helperText-lineHeight, var(--formField-helperText-height)));\n}\n\n/* Class applied when helper text is provided */\n.saltFormField-withHelperText {\n --formField-helperText-fontSize: var(--saltFormField-helperText-fontSize, var(--salt-text-fontSize));\n --formField-helperText-baseHeight: calc(1.3 * var(--formField-helperText-fontSize));\n --formField-helperText-calculatedHeight: max(var(--salt-text-label-minHeight), var(--formField-helperText-baseHeight));\n --formField-helperText-height: calc(var(--formField-helperText-calculatedHeight) + var(--formField-helperText-marginTop));\n}\n\n/* Class applied to the root element if `fillWidth={true}` */\n.saltFormField-fullWidth {\n width: 100%;\n}\n\n/* Class applied to the root element if `disabled={true}` */\n.saltFormField-disabled {\n --formField-activationIndicator-color: var(--salt-editable-borderColor-disabled);\n --formField-activationIndicator-opacity: var(--salt-palette-opacity-foreground);\n --formField-activationIndicator-size: var(--salt-size-border);\n --formField-activationIndicator-style: var(--salt-editable-borderStyle-disabled);\n --formField-helperText-opacity: var(--salt-palette-opacity-foreground);\n\n --saltControlLabel-color: var(--salt-text-primary-foreground-disabled);\n\n --saltInput-cursor: var(--salt-editable-cursor-disabled);\n}\n\n/* Class applied to the root element on hover if `disabled={true}` */\n.saltFormField.saltFormField-disabled:hover {\n --formField-activationIndicator-color: var(--salt-editable-borderColor-disabled);\n --formField-activationIndicator-size: var(--salt-size-border);\n --formField-activationIndicator-style: var(--salt-editable-borderStyle-disabled);\n\n --saltInput-cursor: var(--salt-editable-cursor-disabled);\n}\n\n/* Class applied to the root element on warning state */\n.saltFormField.saltFormField-warning {\n --formField-focused-outlineColor: var(--salt-status-warning-borderColor);\n --formField-activationIndicator-color: var(--salt-status-warning-borderColor);\n}\n\n/* Class applied to the root element on warning state on hover */\n.saltFormField.saltFormField-warning:hover {\n --formField-activationIndicator-color: var(--salt-status-warning-borderColor);\n}\n\n/* Class applied to the root element on error state */\n.saltFormField.saltFormField-error {\n --formField-focused-outlineColor: var(--salt-status-error-borderColor);\n --formField-activationIndicator-color: var(--salt-status-error-borderColor);\n}\n\n/* Class applied to the root element on error state on hover */\n.saltFormField.saltFormField-error:hover {\n --formField-activationIndicator-color: var(--salt-status-error-borderColor);\n}\n\n/* Error state styling when `variant=\"secondary\"` */\n.saltFormField-secondary.saltFormField-error {\n --formField-background: var(--salt-status-error-background);\n}\n\n/* Warning state styling when `variant=\"secondary\"` */\n.saltFormField-secondary.saltFormField-warning {\n --formField-background: var(--salt-status-warning-background);\n}\n\n/* Class applied to the root element if `labelPlacement=\"left\"` */\n.saltFormField-labelLeft {\n --formField-label-marginTop: var(--salt-size-unit);\n --formField-label-paddingLeft: 0px;\n --formField-label-paddingRight: calc(0.75 * var(--salt-size-unit));\n\n align-self: start;\n grid-template-columns: auto 1fr;\n}\n\n/* Class applied to the root element if `labelPlacement=\"top\"` or labelPlacement omitted (default is 'top') */\n.saltFormField-labelTop {\n --formField-label-marginBottom: var(--formField-label-top-marginBottom);\n --formField-label-marginTop: 0;\n --formField-label-paddingLeft: var(--salt-size-unit);\n --formField-label-paddingRight: var(--salt-size-unit);\n /* Uses density invariant value unless helper text provided */\n --formField-background-offset-height: calc(var(--formField-helperText-marginTop, 0px) + var(--saltFormField-helperText-lineHeight, var(--formField-helperText-height)));\n\n background: linear-gradient(to top, transparent var(--formField-background-offset-height), var(--saltFormField-background, var(--formField-background)) var(--formField-background-offset-height));\n}\n\n/* Class applied if `labelPlacement=\"top\"` and helper text is provided */\n.saltFormField-labelTop.saltFormField-withHelperText {\n /* Uses density aware value from FormHelperText */\n --formField-background-offset-height: var(--formField-helperText-background-offset-height);\n}\n\n.saltFormField > * {\n grid-column-start: 1;\n grid-column-end: 2;\n grid-row-start: 2;\n grid-row-end: 3;\n}\n\n.saltFormField-labelLeft > * {\n grid-row-start: 1;\n grid-row-end: 2;\n}\n\n.saltFormField > .saltFormLabel {\n grid-row-start: 1;\n grid-row-end: 2;\n}\n\n.saltFormField > .saltFormActivationIndicator {\n grid-row-start: 3;\n grid-row-end: 4;\n}\n\n.saltFormField > .saltFormHelperText {\n grid-row-start: 4;\n grid-row-end: 5;\n}\n\n.saltFormField-labelLeft > .saltFormLabel ~ * {\n grid-column-start: 2;\n grid-column-end: 2;\n}\n\n/* Class applied if `readOnly={true}\"` */\n.saltFormField-readOnly {\n --formField-activationIndicator-color: var(--salt-editable-borderColor-readonly);\n\n --saltInput-cursor: var(--salt-editable-cursor-readonly);\n}\n\n/* Class applied to the root element if `readOnly={true}\"` on hover */\n.saltFormField.saltFormField-readOnly:hover {\n --formField-activationIndicator-color: var(--salt-editable-borderColor-readonly);\n --formField-activationIndicator-size: var(--salt-size-border);\n --formField-activationIndicator-style: var(--salt-editable-borderStyle-readonly);\n\n --saltInput-cursor: var(--salt-editable-cursor-readonly);\n}\n\n/* Class applied on focus with `labelTop={true}` and no helper text provided */\n.saltFormField:not(.saltFormField-withHelperText):not(.saltFormField-labelLeft).saltFormField-focused:before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: var(--saltFormField-helperText-lineHeight, var(--formField-helperText-height, 0px));\n outline-color: var(--formField-focused-outlineColor);\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n}\n\n/* Class applied on focus with `labelTop={true}` and helper text provided */\n.saltFormField-withHelperText:not(.saltFormField-labelLeft).saltFormField-focused:before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: var(--formField-helperText-height, 0px);\n outline-color: var(--formField-focused-outlineColor);\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n}\n\n.saltFormField-labelLeft.saltFormField-focused:before {\n content: none;\n}\n\n/* Class applied on focus with `labelLeft={true}` */\n.saltFormField-labelLeft.saltFormField-focused > *:before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0px;\n outline-color: var(--formField-focused-outlineColor);\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n z-index: -1;\n}\n\n.saltFormField-labelLeft.saltFormField-focused > :is(.saltFormActivationIndicator, .saltFormHelperText, .saltFormLabel):before {\n content: none;\n}\n\n.saltFormField-labelLeft.saltFormField-focused {\n outline: none;\n}\n\n.saltFormField-labelLeft.saltFormField-focused > :is(.saltFormField-activationIndicator, .saltFormField-helperText, .saltFormLabel):before {\n content: none;\n}\n\n.saltFormField-labelLeft.saltFormField-focused .saltFormLabel + * {\n outline: none;\n}\n\n.saltFormField-tertiary.saltFormField.saltFormField-labelLeft > .saltFormLabel ~ * {\n background: var(--saltFormField-background, var(--formField-background));\n}\n\n/* TODO: I don't think this is needed, but commenting until work on FF done\n.saltFormField-primary.saltFormField > :not(.saltFormLabel):first-child {\n background: var(--saltFormField-background, var(--formField-background));\n} */\n\n.saltFormField-labelLeft > .saltFormLabel ~ :not(.saltFormHelperText) {\n background: var(--saltFormField-background, var(--formField-background));\n}\n\n/* **Deprecated:** Tertiary variant no longer supported */\n.saltFormField-tertiary.saltFormField {\n --formField-background: var(--salt-editable-tertiary-background);\n}\n";
6
6
  styleInject_es(css_248z);
7
7
 
8
8
  module.exports = css_248z;
@@ -7,6 +7,7 @@ var clsx = require('clsx');
7
7
  var React = require('react');
8
8
  var core = require('@salt-ds/core');
9
9
  var FormFieldContext = require('../form-field-context/FormFieldContext.js');
10
+ require('../form-field-context/FormFieldContextNext.js');
10
11
  var constant = require('./constant.js');
11
12
  var FormActivationIndicator = require('./FormActivationIndicator.js');
12
13
  var FormHelperText = require('./FormHelperText.js');
@@ -1 +1 @@
1
- {"version":3,"file":"FormField.js","sources":["../src/form-field/FormField.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n Dispatch,\n ElementType,\n FocusEventHandler,\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n SetStateAction,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { makePrefixer, Tooltip, useForkRef, useId } from \"@salt-ds/core\";\nimport { FormFieldContext } from \"../form-field-context\";\nimport { classBase } from \"./constant\";\nimport {\n FormActivationIndicator,\n FormActivationIndicatorProps,\n} from \"./FormActivationIndicator\";\nimport { FormHelperText, FormHelperTextProps } from \"./FormHelperText\";\nimport { FormLabel, FormLabelProps } from \"./FormLabel\";\nimport { NecessityIndicatorOptions } from \"./NecessityIndicator\";\nimport { StatusIndicatorProps } from \"./StatusIndicator\";\n\nimport \"./FormField.css\";\n\nexport type FormFieldLabelPlacement = \"top\" | \"left\";\nexport type FormFieldHelperTextPlacement = \"bottom\" | \"tooltip\";\nexport type FormFieldValidationStatus = \"error\" | \"warning\";\n\nexport interface A11yValueProps\n extends Pick<NecessityIndicatorOptions, \"required\"> {\n /**\n * If `true`, the FormField will be disabled.\n */\n disabled?: boolean;\n /** id of the helper text node */\n helperTextId?: string;\n /** id of the label node */\n labelId?: string;\n /**\n * The FormField value is Readonly\n */\n readOnly?: boolean;\n\n /**\n * Whether the form field needs to render helper text\n */\n renderHelperText?: boolean;\n}\n\nexport interface FormFieldProps\n extends HTMLAttributes<HTMLDivElement>,\n A11yValueProps {\n /**\n * The component used for activation indicator. Default to `FormActivationIndicator`.\n */\n ActivationIndicatorComponent?: ElementType<FormActivationIndicatorProps>;\n /**\n * Outer focus ring focus will not be applied. Defaults to false.\n */\n disableFocusRing?: boolean;\n // I hate this fullWidth business. We should support a width prop. The default should be 100% (standard block behaviour)\n // we should also support 'auto' or explicit numeric values\n /**\n * Whether the form field is occupying full width.\n */\n fullWidth?: boolean;\n /**\n * Whether to show the StatusIndicator component for validation states.\n */\n hasStatusIndicator?: boolean;\n /**\n * The helper text content\n */\n helperText?: string;\n /**\n * The component used for the helper text. Default to `FormHelperText`.\n */\n HelperTextComponent?: ElementType<FormHelperTextProps>;\n /**\n * Location the helperText, values: 'bottom' (default) or 'tooltip'.\n */\n helperTextPlacement?: FormFieldHelperTextPlacement;\n /**\n * Props to be applied to the `HelperTextComponent`.\n *\n * Generic on `FormHelperTextProps` is omitted.\n */\n HelperTextProps?: Partial<FormHelperTextProps>;\n /**\n * The label value for the FormField\n */\n label?: string;\n /**\n * The component used for the label. Default to `FormLabel`.\n */\n LabelComponent?: ElementType;\n /**\n * Location the label, values: 'top' (default) or 'left'\n */\n labelPlacement?: FormFieldLabelPlacement;\n /**\n * Props to be applied to the `LabelComponent`\n */\n LabelProps?: Partial<FormLabelProps>;\n /**\n * Override props to be used with the StatusIndicator component\n */\n StatusIndicatorProps?: Partial<StatusIndicatorProps>;\n /**\n * The state for the FormField: Must be one of: 'error'|'warning'|undefined\n */\n validationStatus?: FormFieldValidationStatus;\n /**\n * FormField variants; defaults to primary.\n */\n variant?: \"primary\" | \"secondary\" | \"tertiary\";\n}\n\nexport interface useA11yValueValue {\n \"aria-labelledby\": A11yValueProps[\"labelId\"];\n \"aria-required\": A11yValueProps[\"required\"];\n \"aria-describedby\": A11yValueProps[\"helperTextId\"] | undefined;\n disabled: A11yValueProps[\"disabled\"];\n readOnly: A11yValueProps[\"readOnly\"];\n}\n\nconst useA11yValue = ({\n required,\n disabled,\n readOnly,\n labelId,\n helperTextId,\n renderHelperText,\n}: A11yValueProps) => {\n return useMemo(\n () => ({\n \"aria-labelledby\": labelId,\n \"aria-required\": required,\n \"aria-describedby\": renderHelperText ? helperTextId : undefined,\n disabled,\n readOnly,\n }),\n [labelId, disabled, readOnly, required, renderHelperText, helperTextId]\n );\n};\n\n// TODO: Add TS props for this\nexport const useFormField = ({\n onBlur,\n onFocus,\n}: {\n onBlur?: FocusEventHandler<HTMLDivElement>;\n onFocus?: FocusEventHandler<HTMLDivElement>;\n}): [\n { focused: boolean },\n { setFocused: Dispatch<SetStateAction<boolean>> },\n {\n onBlur: FocusEventHandler<HTMLDivElement>;\n onFocus: FocusEventHandler<HTMLDivElement>;\n }\n] => {\n const [focused, setFocused] = useState(false);\n const handleBlur: FocusEventHandler<HTMLDivElement> = (event) => {\n setFocused(false);\n onBlur?.(event);\n };\n const handleFocus: FocusEventHandler<HTMLDivElement> = (event) => {\n setFocused(true);\n onFocus?.(event);\n };\n return [\n {\n focused,\n },\n {\n setFocused,\n },\n {\n onBlur: handleBlur,\n onFocus: handleFocus,\n },\n ];\n};\n\nconst withBaseName = makePrefixer(classBase);\n\nexport const FormField = forwardRef(\n (\n {\n ActivationIndicatorComponent = FormActivationIndicator,\n children,\n className,\n disabled,\n disableFocusRing = false,\n fullWidth = true,\n hasStatusIndicator,\n HelperTextComponent = FormHelperText,\n HelperTextProps,\n helperText,\n helperTextPlacement = \"bottom\",\n label,\n LabelComponent = FormLabel,\n labelPlacement = \"top\",\n LabelProps = { displayedNecessity: \"required\" },\n onBlur,\n onFocus,\n readOnly,\n required,\n StatusIndicatorProps,\n validationStatus,\n variant = \"primary\",\n ...restProps\n }: FormFieldProps,\n ref: ForwardedRef<HTMLDivElement>\n ) => {\n const labelId = useId(LabelProps?.id);\n const helperTextId = useId(HelperTextProps?.id);\n const rootRef = useRef<HTMLDivElement>(null);\n\n const renderHelperText = !!helperText;\n\n const a11yValue = useA11yValue({\n required,\n disabled,\n readOnly,\n labelId,\n helperTextId,\n renderHelperText,\n });\n\n const [states, dispatchers, eventHandlers] = useFormField({\n onBlur,\n onFocus,\n });\n\n const hasLabel = label !== undefined;\n const labelTop = hasLabel && labelPlacement === \"top\";\n const labelLeft = hasLabel && labelPlacement === \"left\";\n const isWarning = validationStatus === \"warning\";\n const isError = validationStatus === \"error\";\n const focusClass = disableFocusRing\n ? \"lowFocused\"\n : \"focused\"; /* NOTE: need to look at */\n const inlineHelperText =\n renderHelperText && helperTextPlacement === \"bottom\";\n const tooltipHelperText =\n renderHelperText &&\n helperTextPlacement === \"tooltip\" &&\n !hasStatusIndicator;\n\n const handleTriggerRef = useForkRef(rootRef, ref);\n\n return (\n <Tooltip disabled={!tooltipHelperText} content={helperText}>\n <div\n ref={handleTriggerRef}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"readOnly\")]: readOnly,\n [withBaseName(\"warning\")]: isWarning,\n [withBaseName(\"error\")]: isError,\n [withBaseName(\"fullWidth\")]: fullWidth,\n [withBaseName(focusClass)]: states.focused,\n [withBaseName(\"labelTop\")]: labelTop,\n [withBaseName(\"labelLeft\")]: labelLeft,\n [withBaseName(`withHelperText`)]: inlineHelperText,\n [withBaseName(variant)]: variant,\n },\n className\n )}\n {...eventHandlers}\n {...restProps}\n >\n <FormFieldContext.Provider\n value={{\n ...states,\n ...dispatchers,\n ...eventHandlers,\n a11yProps: a11yValue,\n inFormField: true,\n ref: rootRef,\n }}\n >\n {hasLabel && (\n <LabelComponent\n {...LabelProps}\n validationStatus={validationStatus}\n hasStatusIndicator={hasStatusIndicator}\n StatusIndicatorProps={StatusIndicatorProps}\n className={LabelProps.className}\n label={label}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n tooltipText={helperText}\n id={labelId}\n />\n )}\n {children}\n <ActivationIndicatorComponent\n hasIcon={!hasStatusIndicator}\n validationStatus={validationStatus}\n />\n {renderHelperText && (\n <HelperTextComponent\n helperText={helperText}\n helperTextPlacement={helperTextPlacement}\n {...HelperTextProps}\n id={helperTextId}\n />\n )}\n </FormFieldContext.Provider>\n </div>\n </Tooltip>\n );\n }\n);\n"],"names":["useMemo","useState","makePrefixer","classBase","forwardRef","FormActivationIndicator","FormHelperText","FormLabel","StatusIndicatorProps","useId","useRef","useForkRef","jsx","Tooltip","clsx","jsxs","FormFieldContext"],"mappings":"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"}
1
+ {"version":3,"file":"FormField.js","sources":["../src/form-field/FormField.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n Dispatch,\n ElementType,\n FocusEventHandler,\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n SetStateAction,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { makePrefixer, Tooltip, useForkRef, useId } from \"@salt-ds/core\";\nimport { FormFieldContext } from \"../form-field-context\";\nimport { classBase } from \"./constant\";\nimport {\n FormActivationIndicator,\n FormActivationIndicatorProps,\n} from \"./FormActivationIndicator\";\nimport { FormHelperText, FormHelperTextProps } from \"./FormHelperText\";\nimport { FormLabel, FormLabelProps } from \"./FormLabel\";\nimport { NecessityIndicatorOptions } from \"./NecessityIndicator\";\nimport { StatusIndicatorProps } from \"./StatusIndicator\";\n\nimport \"./FormField.css\";\n\nexport type FormFieldLabelPlacement = \"top\" | \"left\";\nexport type FormFieldHelperTextPlacement = \"bottom\" | \"tooltip\";\nexport type FormFieldValidationStatus = \"error\" | \"warning\";\n\nexport interface A11yValueProps\n extends Pick<NecessityIndicatorOptions, \"required\"> {\n /**\n * If `true`, the FormField will be disabled.\n */\n disabled?: boolean;\n /** id of the helper text node */\n helperTextId?: string;\n /** id of the label node */\n labelId?: string;\n /**\n * The FormField value is Readonly\n */\n readOnly?: boolean;\n\n /**\n * Whether the form field needs to render helper text\n */\n renderHelperText?: boolean;\n}\n\nexport interface FormFieldProps\n extends HTMLAttributes<HTMLDivElement>,\n A11yValueProps {\n /**\n * The component used for activation indicator. Default to `FormActivationIndicator`.\n */\n ActivationIndicatorComponent?: ElementType<FormActivationIndicatorProps>;\n /**\n * Outer focus ring focus will not be applied. Defaults to false.\n */\n disableFocusRing?: boolean;\n // I hate this fullWidth business. We should support a width prop. The default should be 100% (standard block behaviour)\n // we should also support 'auto' or explicit numeric values\n /**\n * Whether the form field is occupying full width.\n */\n fullWidth?: boolean;\n /**\n * Whether to show the StatusIndicator component for validation states.\n */\n hasStatusIndicator?: boolean;\n /**\n * The helper text content\n */\n helperText?: string;\n /**\n * The component used for the helper text. Default to `FormHelperText`.\n */\n HelperTextComponent?: ElementType<FormHelperTextProps>;\n /**\n * Location the helperText, values: 'bottom' (default) or 'tooltip'.\n */\n helperTextPlacement?: FormFieldHelperTextPlacement;\n /**\n * Props to be applied to the `HelperTextComponent`.\n *\n * Generic on `FormHelperTextProps` is omitted.\n */\n HelperTextProps?: Partial<FormHelperTextProps>;\n /**\n * The label value for the FormField\n */\n label?: string;\n /**\n * The component used for the label. Default to `FormLabel`.\n */\n LabelComponent?: ElementType;\n /**\n * Location the label, values: 'top' (default) or 'left'\n */\n labelPlacement?: FormFieldLabelPlacement;\n /**\n * Props to be applied to the `LabelComponent`\n */\n LabelProps?: Partial<FormLabelProps>;\n /**\n * Override props to be used with the StatusIndicator component\n */\n StatusIndicatorProps?: Partial<StatusIndicatorProps>;\n /**\n * The state for the FormField: Must be one of: 'error'|'warning'|undefined\n */\n validationStatus?: FormFieldValidationStatus;\n /**\n * FormField variants; defaults to primary.\n *\n * **Deprecated:** The 'tertiary' variant has been deprecated\n */\n variant?: \"primary\" | \"secondary\" | \"tertiary\";\n}\n\nexport interface useA11yValueValue {\n \"aria-labelledby\": A11yValueProps[\"labelId\"];\n \"aria-required\": A11yValueProps[\"required\"];\n \"aria-describedby\": A11yValueProps[\"helperTextId\"] | undefined;\n disabled: A11yValueProps[\"disabled\"];\n readOnly: A11yValueProps[\"readOnly\"];\n}\n\nconst useA11yValue = ({\n required,\n disabled,\n readOnly,\n labelId,\n helperTextId,\n renderHelperText,\n}: A11yValueProps) => {\n return useMemo(\n () => ({\n \"aria-labelledby\": labelId,\n \"aria-required\": required,\n \"aria-describedby\": renderHelperText ? helperTextId : undefined,\n disabled,\n readOnly,\n }),\n [labelId, disabled, readOnly, required, renderHelperText, helperTextId]\n );\n};\n\n// TODO: Add TS props for this\nexport const useFormField = ({\n onBlur,\n onFocus,\n}: {\n onBlur?: FocusEventHandler<HTMLDivElement>;\n onFocus?: FocusEventHandler<HTMLDivElement>;\n}): [\n { focused: boolean },\n { setFocused: Dispatch<SetStateAction<boolean>> },\n {\n onBlur: FocusEventHandler<HTMLDivElement>;\n onFocus: FocusEventHandler<HTMLDivElement>;\n }\n] => {\n const [focused, setFocused] = useState(false);\n const handleBlur: FocusEventHandler<HTMLDivElement> = (event) => {\n setFocused(false);\n onBlur?.(event);\n };\n const handleFocus: FocusEventHandler<HTMLDivElement> = (event) => {\n setFocused(true);\n onFocus?.(event);\n };\n return [\n {\n focused,\n },\n {\n setFocused,\n },\n {\n onBlur: handleBlur,\n onFocus: handleFocus,\n },\n ];\n};\n\nconst withBaseName = makePrefixer(classBase);\n\nexport const FormField = forwardRef(\n (\n {\n ActivationIndicatorComponent = FormActivationIndicator,\n children,\n className,\n disabled,\n disableFocusRing = false,\n fullWidth = true,\n hasStatusIndicator,\n HelperTextComponent = FormHelperText,\n HelperTextProps,\n helperText,\n helperTextPlacement = \"bottom\",\n label,\n LabelComponent = FormLabel,\n labelPlacement = \"top\",\n LabelProps = { displayedNecessity: \"required\" },\n onBlur,\n onFocus,\n readOnly,\n required,\n StatusIndicatorProps,\n validationStatus,\n variant = \"primary\",\n ...restProps\n }: FormFieldProps,\n ref: ForwardedRef<HTMLDivElement>\n ) => {\n const labelId = useId(LabelProps?.id);\n const helperTextId = useId(HelperTextProps?.id);\n const rootRef = useRef<HTMLDivElement>(null);\n\n const renderHelperText = !!helperText;\n\n const a11yValue = useA11yValue({\n required,\n disabled,\n readOnly,\n labelId,\n helperTextId,\n renderHelperText,\n });\n\n const [states, dispatchers, eventHandlers] = useFormField({\n onBlur,\n onFocus,\n });\n\n const hasLabel = label !== undefined;\n const labelTop = hasLabel && labelPlacement === \"top\";\n const labelLeft = hasLabel && labelPlacement === \"left\";\n const isWarning = validationStatus === \"warning\";\n const isError = validationStatus === \"error\";\n const focusClass = disableFocusRing\n ? \"lowFocused\"\n : \"focused\"; /* NOTE: need to look at */\n const inlineHelperText =\n renderHelperText && helperTextPlacement === \"bottom\";\n const tooltipHelperText =\n renderHelperText &&\n helperTextPlacement === \"tooltip\" &&\n !hasStatusIndicator;\n\n const handleTriggerRef = useForkRef(rootRef, ref);\n\n return (\n <Tooltip disabled={!tooltipHelperText} content={helperText}>\n <div\n ref={handleTriggerRef}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"readOnly\")]: readOnly,\n [withBaseName(\"warning\")]: isWarning,\n [withBaseName(\"error\")]: isError,\n [withBaseName(\"fullWidth\")]: fullWidth,\n [withBaseName(focusClass)]: states.focused,\n [withBaseName(\"labelTop\")]: labelTop,\n [withBaseName(\"labelLeft\")]: labelLeft,\n [withBaseName(`withHelperText`)]: inlineHelperText,\n [withBaseName(variant)]: variant,\n },\n className\n )}\n {...eventHandlers}\n {...restProps}\n >\n <FormFieldContext.Provider\n value={{\n ...states,\n ...dispatchers,\n ...eventHandlers,\n a11yProps: a11yValue,\n inFormField: true,\n ref: rootRef,\n }}\n >\n {hasLabel && (\n <LabelComponent\n {...LabelProps}\n validationStatus={validationStatus}\n hasStatusIndicator={hasStatusIndicator}\n StatusIndicatorProps={StatusIndicatorProps}\n className={LabelProps.className}\n label={label}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n tooltipText={helperText}\n id={labelId}\n />\n )}\n {children}\n <ActivationIndicatorComponent\n hasIcon={!hasStatusIndicator}\n validationStatus={validationStatus}\n />\n {renderHelperText && (\n <HelperTextComponent\n helperText={helperText}\n helperTextPlacement={helperTextPlacement}\n {...HelperTextProps}\n id={helperTextId}\n />\n )}\n </FormFieldContext.Provider>\n </div>\n </Tooltip>\n );\n }\n);\n"],"names":["useMemo","useState","makePrefixer","classBase","forwardRef","FormActivationIndicator","FormHelperText","FormLabel","StatusIndicatorProps","useId","useRef","useForkRef","jsx","Tooltip","clsx","jsxs","FormFieldContext"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  var styleInject_es = require('../../../../node_modules/style-inject/dist/style-inject.es.js');
4
4
 
5
- var css_248z = "/* Styles applied to the root element dependent on density */\n.salt-density-high {\n --formField-helperText-marginTop-default: 2px;\n --formField-helperText-marginTop-fullWidth: 3px;\n\n --formField-helperText-background-offset-height: 17px;\n}\n.salt-density-medium {\n --formField-helperText-marginTop-default: 2px;\n --formField-helperText-marginTop-fullWidth: 3px;\n --formField-helperText-transform: translate(0, 2px);\n\n --formField-helperText-background-offset-height: 19px;\n}\n.salt-density-touch {\n --formField-helperText-marginTop-default: 8px;\n --formField-helperText-marginTop-fullWidth: 5px;\n --formField-helperText-transform: translate(0, -3px);\n\n --formField-helperText-background-offset-height: 21px;\n}\n.salt-density-low {\n --formField-helperText-marginTop-default: 4px;\n --formField-helperText-marginTop-fullWidth: 5px;\n --formField-helperText-transform: translate(0, 1px);\n\n --formField-helperText-background-offset-height: 21px;\n}\n\n/* Class applied if `fullWidth={true}` */\n.saltFormField-fullWidth {\n --formField-helperText-transform: none;\n}\n\n/* Class applied to the helper text container */\n.saltFormFieldHelperText {\n --formField-helperText-opacity: 1;\n\n color: var(--saltFormField-helperText-color, var(--salt-text-secondary-foreground));\n font-size: var(--formField-helperText-fontSize);\n font-style: var(--saltFormField-helperText-fontStyle, var(--salt-editable-help-fontStyle));\n letter-spacing: var(--saltFormField-helperText-letterSpacing, 0);\n line-height: var(--saltFormField-helperText-lineHeight, var(--salt-text-lineHeight));\n min-height: var(--saltFormField-helperText-minHeight, var(--salt-text-label-minHeight));\n margin-bottom: var(--saltFormField-helperText-marginBottom, 0);\n margin-top: var(--saltFormField-helperText-marginTop, var(--formField-helperText-marginTop));\n opacity: var(--saltFormField-helperText-opacity, var(--formField-helperText-opacity));\n padding-left: var(--saltFormField-helperText-paddingLeft, var(--salt-size-unit));\n padding-right: var(--saltFormField-helperText-paddingRight, var(--salt-size-unit));\n transform: var(--saltFormField-helperText-transform, var(--formField-helperText-transform, none));\n}\n";
5
+ var css_248z = "/* Styles applied to the root element dependent on density */\n.salt-density-high {\n --formField-helperText-marginTop-default: 2px;\n --formField-helperText-marginTop-fullWidth: 3px;\n\n --formField-helperText-background-offset-height: 17px;\n}\n.salt-density-medium {\n --formField-helperText-marginTop-default: 2px;\n --formField-helperText-marginTop-fullWidth: 3px;\n --formField-helperText-transform: translate(0, 2px);\n\n --formField-helperText-background-offset-height: 19px;\n}\n.salt-density-touch {\n --formField-helperText-marginTop-default: 8px;\n --formField-helperText-marginTop-fullWidth: 5px;\n --formField-helperText-transform: translate(0, -3px);\n\n --formField-helperText-background-offset-height: 21px;\n}\n.salt-density-low {\n --formField-helperText-marginTop-default: 4px;\n --formField-helperText-marginTop-fullWidth: 5px;\n --formField-helperText-transform: translate(0, 1px);\n\n --formField-helperText-background-offset-height: 21px;\n}\n\n/* Class applied if `fullWidth={true}` */\n.saltFormField-fullWidth {\n --formField-helperText-transform: none;\n}\n\n/* Class applied to the helper text container */\n.saltFormHelperText {\n --formField-helperText-opacity: 1;\n\n color: var(--saltFormField-helperText-color, var(--salt-text-secondary-foreground));\n font-size: var(--formField-helperText-fontSize);\n font-style: var(--saltFormField-helperText-fontStyle, var(--salt-editable-help-fontStyle));\n letter-spacing: var(--saltFormField-helperText-letterSpacing, 0);\n line-height: var(--saltFormField-helperText-lineHeight, var(--salt-text-lineHeight));\n min-height: var(--saltFormField-helperText-minHeight, var(--salt-text-label-minHeight));\n margin-bottom: var(--saltFormField-helperText-marginBottom, 0);\n margin-top: var(--saltFormField-helperText-marginTop, var(--formField-helperText-marginTop));\n opacity: var(--saltFormField-helperText-opacity, var(--formField-helperText-opacity));\n padding-left: var(--saltFormField-helperText-paddingLeft, var(--salt-size-unit));\n padding-right: var(--saltFormField-helperText-paddingRight, var(--salt-size-unit));\n transform: var(--saltFormField-helperText-transform, var(--formField-helperText-transform, none));\n}\n";
6
6
  styleInject_es(css_248z);
7
7
 
8
8
  module.exports = css_248z;
@@ -13,7 +13,7 @@ const FormHelperText = ({
13
13
  if (helperText) {
14
14
  if (helperTextPlacement === "bottom") {
15
15
  return /* @__PURE__ */ jsxRuntime.jsx("p", {
16
- className: `saltFormFieldHelperText`,
16
+ className: "saltFormHelperText",
17
17
  ...restProps,
18
18
  children: helperText
19
19
  });
@@ -1 +1 @@
1
- {"version":3,"file":"FormHelperText.js","sources":["../src/form-field/FormHelperText.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef } from \"react\";\nimport { FormFieldProps } from \"./FormField\";\n\nimport \"./FormHelperText.css\";\n\nexport type FormHelperTextProps<E extends React.ElementType = \"p\"> =\n ComponentPropsWithoutRef<E> & {\n helperText: FormFieldProps[\"helperText\"];\n helperTextPlacement: FormFieldProps[\"helperTextPlacement\"];\n };\n\nexport const FormHelperText = <E extends React.ElementType = \"p\">({\n helperText,\n helperTextPlacement,\n ...restProps\n}: FormHelperTextProps<E>) => {\n if (helperText) {\n if (helperTextPlacement === \"bottom\") {\n return (\n <p className={`saltFormFieldHelperText`} {...restProps}>\n {helperText}\n </p>\n );\n } else if (helperTextPlacement === \"tooltip\") {\n console.warn(\"helperTextPlacement tooltip has not yet implemented\");\n return null;\n } else {\n return null;\n }\n } else {\n return null;\n }\n};\n"],"names":["jsx"],"mappings":";;;;;;;AAWO,MAAM,iBAAiB,CAAoC;AAAA,EAChE,UAAA;AAAA,EACA,mBAAA;AAAA,EACG,GAAA,SAAA;AACL,CAA8B,KAAA;AAC5B,EAAA,IAAI,UAAY,EAAA;AACd,IAAA,IAAI,wBAAwB,QAAU,EAAA;AACpC,MAAA,uBACGA,cAAA,CAAA,GAAA,EAAA;AAAA,QAAE,SAAW,EAAA,CAAA,uBAAA,CAAA;AAAA,QAA4B,GAAG,SAAA;AAAA,QAC1C,QAAA,EAAA,UAAA;AAAA,OACH,CAAA,CAAA;AAAA,KAEJ,MAAA,IAAW,wBAAwB,SAAW,EAAA;AAC5C,MAAA,OAAA,CAAQ,KAAK,qDAAqD,CAAA,CAAA;AAClE,MAAO,OAAA,IAAA,CAAA;AAAA,KACF,MAAA;AACL,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAAA,GACK,MAAA;AACL,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACF;;;;"}
1
+ {"version":3,"file":"FormHelperText.js","sources":["../src/form-field/FormHelperText.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef } from \"react\";\nimport { FormFieldProps } from \"./FormField\";\n\nimport \"./FormHelperText.css\";\n\nexport type FormHelperTextProps<E extends React.ElementType = \"p\"> =\n ComponentPropsWithoutRef<E> & {\n helperText: FormFieldProps[\"helperText\"];\n helperTextPlacement: FormFieldProps[\"helperTextPlacement\"];\n };\n\nexport const FormHelperText = <E extends React.ElementType = \"p\">({\n helperText,\n helperTextPlacement,\n ...restProps\n}: FormHelperTextProps<E>) => {\n if (helperText) {\n if (helperTextPlacement === \"bottom\") {\n return (\n <p className=\"saltFormHelperText\" {...restProps}>\n {helperText}\n </p>\n );\n } else if (helperTextPlacement === \"tooltip\") {\n console.warn(\"helperTextPlacement tooltip has not yet implemented\");\n return null;\n } else {\n return null;\n }\n } else {\n return null;\n }\n};\n"],"names":["jsx"],"mappings":";;;;;;;AAWO,MAAM,iBAAiB,CAAoC;AAAA,EAChE,UAAA;AAAA,EACA,mBAAA;AAAA,EACG,GAAA,SAAA;AACL,CAA8B,KAAA;AAC5B,EAAA,IAAI,UAAY,EAAA;AACd,IAAA,IAAI,wBAAwB,QAAU,EAAA;AACpC,MAAA,uBACGA,cAAA,CAAA,GAAA,EAAA;AAAA,QAAE,SAAU,EAAA,oBAAA;AAAA,QAAsB,GAAG,SAAA;AAAA,QACnC,QAAA,EAAA,UAAA;AAAA,OACH,CAAA,CAAA;AAAA,KAEJ,MAAA,IAAW,wBAAwB,SAAW,EAAA;AAC5C,MAAA,OAAA,CAAQ,KAAK,qDAAqD,CAAA,CAAA;AAClE,MAAO,OAAA,IAAA,CAAA;AAAA,KACF,MAAA;AACL,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAAA,GACK,MAAA;AACL,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACF;;;;"}
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var core = require('@salt-ds/core');
6
+
7
+ const FormFieldContextNext = core.createContext(
8
+ "FormFieldContext",
9
+ {}
10
+ );
11
+
12
+ exports.FormFieldContextNext = FormFieldContextNext;
13
+ //# sourceMappingURL=FormFieldContextNext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormFieldContextNext.js","sources":["../src/form-field-context/FormFieldContextNext.ts"],"sourcesContent":["import { createContext } from \"@salt-ds/core\";\nimport { useA11yValueValue } from \"../form-field-next\";\n\nexport interface FormFieldContextNextValue {\n a11yProps: useA11yValueValue;\n}\n\nexport const FormFieldContextNext = createContext(\n \"FormFieldContext\",\n {} as FormFieldContextNextValue\n);\n"],"names":["createContext"],"mappings":";;;;;;AAOO,MAAM,oBAAuB,GAAAA,kBAAA;AAAA,EAClC,kBAAA;AAAA,EACA,EAAC;AACH;;;;"}
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var FormFieldContextNext = require('./FormFieldContextNext.js');
7
+
8
+ function useFormFieldPropsNext() {
9
+ return React.useContext(FormFieldContextNext.FormFieldContextNext) || {};
10
+ }
11
+
12
+ exports.useFormFieldPropsNext = useFormFieldPropsNext;
13
+ //# sourceMappingURL=useFormFieldPropsNext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormFieldPropsNext.js","sources":["../src/form-field-context/useFormFieldPropsNext.ts"],"sourcesContent":["import { useContext } from \"react\";\nimport {\n FormFieldContextNext,\n FormFieldContextNextValue,\n} from \"./FormFieldContextNext\";\n\nexport function useFormFieldPropsNext(): Partial<FormFieldContextNextValue> {\n return useContext(FormFieldContextNext) || {};\n}\n"],"names":["useContext","FormFieldContextNext"],"mappings":";;;;;;;AAMO,SAAS,qBAA4D,GAAA;AAC1E,EAAO,OAAAA,gBAAA,CAAWC,yCAAoB,CAAA,IAAK,EAAC,CAAA;AAC9C;;;;"}
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var styleInject_es = require('../../../../node_modules/style-inject/dist/style-inject.es.js');
4
+
5
+ var css_248z = ".saltFormFieldHelperText.saltText {\n font-style: var(--saltFormField-helperText-fontStyle, var(--salt-editable-help-fontStyle));\n width: 100%;\n}\n";
6
+ styleInject_es(css_248z);
7
+
8
+ module.exports = css_248z;
9
+ //# sourceMappingURL=FormFieldHelperText.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormFieldHelperText.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var clsx = require('clsx');
7
+ var core = require('@salt-ds/core');
8
+ require('./FormFieldHelperText.css.js');
9
+
10
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
+
12
+ var clsx__default = /*#__PURE__*/_interopDefaultLegacy(clsx);
13
+
14
+ const withBaseName = core.makePrefixer("saltFormFieldHelperText");
15
+ const FormFieldHelperText = ({
16
+ className,
17
+ disabled,
18
+ helperText,
19
+ ...restProps
20
+ }) => {
21
+ return /* @__PURE__ */ jsxRuntime.jsx(core.Text, {
22
+ className: clsx__default["default"](withBaseName(), className),
23
+ disabled,
24
+ variant: "secondary",
25
+ styleAs: "label",
26
+ ...restProps,
27
+ children: helperText
28
+ });
29
+ };
30
+
31
+ exports.FormFieldHelperText = FormFieldHelperText;
32
+ //# sourceMappingURL=FormFieldHelperText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormFieldHelperText.js","sources":["../src/form-field-next/FormFieldHelperText.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { makePrefixer, Text, TextProps } from \"@salt-ds/core\";\nimport { FormFieldProps } from \"./FormFieldNext\";\n\nimport \"./FormFieldHelperText.css\";\n\nconst withBaseName = makePrefixer(\"saltFormFieldHelperText\");\n\nexport interface FormFieldHelperTextProps\n extends Omit<TextProps<\"label\">, \"variant\" | \"styleAs\"> {\n helperText: FormFieldProps[\"helperText\"];\n disabled?: boolean;\n}\n\nexport const FormFieldHelperText = ({\n className,\n disabled,\n helperText,\n ...restProps\n}: FormFieldHelperTextProps) => {\n return (\n <Text\n className={clsx(withBaseName(), className)}\n disabled={disabled}\n variant=\"secondary\"\n styleAs=\"label\"\n {...restProps}\n >\n {helperText}\n </Text>\n );\n};\n"],"names":["makePrefixer","jsx","Text","clsx"],"mappings":";;;;;;;;;;;;;AAMA,MAAM,YAAA,GAAeA,kBAAa,yBAAyB,CAAA,CAAA;AAQpD,MAAM,sBAAsB,CAAC;AAAA,EAClC,SAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACG,GAAA,SAAA;AACL,CAAgC,KAAA;AAC9B,EAAA,uBACGC,cAAA,CAAAC,SAAA,EAAA;AAAA,IACC,SAAW,EAAAC,wBAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,IACzC,QAAA;AAAA,IACA,OAAQ,EAAA,WAAA;AAAA,IACR,OAAQ,EAAA,OAAA;AAAA,IACP,GAAG,SAAA;AAAA,IAEH,QAAA,EAAA,UAAA;AAAA,GACH,CAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var styleInject_es = require('../../../../node_modules/style-inject/dist/style-inject.es.js');
4
+
5
+ var css_248z = ".saltFormFieldLabel.saltText {\n align-self: center;\n font-weight: var(--saltFormField-label-fontWeight, var(--salt-text-fontWeight-strong));\n width: 100%;\n}\n\n.saltFormFieldLabel:hover + .saltFormFieldNext-controls * {\n --inputNext-borderColor: var(--salt-editable-borderColor-hover);\n}\n";
6
+ styleInject_es(css_248z);
7
+
8
+ module.exports = css_248z;
9
+ //# sourceMappingURL=FormFieldLabel.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormFieldLabel.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var clsx = require('clsx');
7
+ var core = require('@salt-ds/core');
8
+ require('./FormFieldLabel.css.js');
9
+
10
+ const withBaseName = core.makePrefixer("saltFormFieldLabel");
11
+ const FormFieldLabel = ({
12
+ className,
13
+ disabled,
14
+ label,
15
+ ...restProps
16
+ }) => /* @__PURE__ */ jsxRuntime.jsx(core.Label, {
17
+ as: "label",
18
+ className: clsx.clsx(withBaseName(), className),
19
+ disabled,
20
+ variant: "secondary",
21
+ ...restProps,
22
+ children: label
23
+ });
24
+
25
+ exports.FormFieldLabel = FormFieldLabel;
26
+ //# sourceMappingURL=FormFieldLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormFieldLabel.js","sources":["../src/form-field-next/FormFieldLabel.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { Label, makePrefixer, TextProps } from \"@salt-ds/core\";\n\nimport \"./FormFieldLabel.css\";\n\nconst withBaseName = makePrefixer(\"saltFormFieldLabel\");\nexport interface FormFieldLabelProps\n extends Omit<TextProps<\"label\">, \"variant\" | \"styleAs\"> {\n /**\n * Whether the Form Field is disabled.\n */\n disabled?: boolean;\n /**\n * The label value for the FormFieldLabel\n */\n label?: string;\n}\n\nexport const FormFieldLabel = ({\n className,\n disabled,\n label,\n ...restProps\n}: FormFieldLabelProps) => (\n <Label\n as=\"label\"\n className={clsx(withBaseName(), className)}\n disabled={disabled}\n variant=\"secondary\"\n {...restProps}\n >\n {label}\n </Label>\n);\n"],"names":["makePrefixer","jsx","Label","clsx"],"mappings":";;;;;;;;;AAKA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA,CAAA;AAa/C,MAAM,iBAAiB,CAAC;AAAA,EAC7B,SAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACG,GAAA,SAAA;AACL,CAAA,qBACGC,cAAA,CAAAC,UAAA,EAAA;AAAA,EACC,EAAG,EAAA,OAAA;AAAA,EACH,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,EACzC,QAAA;AAAA,EACA,OAAQ,EAAA,WAAA;AAAA,EACP,GAAG,SAAA;AAAA,EAEH,QAAA,EAAA,KAAA;AAAA,CACH;;;;"}
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var styleInject_es = require('../../../../node_modules/style-inject/dist/style-inject.es.js');
4
+
5
+ var css_248z = ".saltFormFieldNext {\n display: inline-grid;\n position: relative;\n column-gap: var(--salt-size-adornmentGap);\n row-gap: var(--salt-size-adornmentGap);\n vertical-align: top;\n width: var(--saltFormFieldNext-width, 100%);\n}\n\n.saltFormFieldNext-labelLeft {\n align-self: center;\n grid-template-columns: auto 1fr;\n}\n\n.saltFormFieldNext-labelTop {\n}\n\n.saltFormFieldNext-controls {\n align-items: center;\n display: grid;\n grid-auto-columns: minmax(0, 1fr);\n grid-auto-flow: column;\n grid-column-gap: var(--salt-size-adornmentGap);\n}\n\n.saltFormFieldNext > * {\n grid-row-start: 2;\n grid-row-end: 3;\n}\n\n.saltFormFieldNext > .saltFormFieldLabel {\n grid-row-start: 1;\n grid-row-end: 2;\n}\n\n.saltFormFieldNext-labelLeft > * {\n grid-row-start: 1;\n grid-row-end: 2;\n}\n\n.saltFormFieldNext > .saltFormFieldHelperText {\n grid-row-start: 3;\n grid-row-end: 4;\n}\n\n.saltFormFieldNext.saltFormFieldNext-labelLeft > .saltFormFieldHelperText {\n grid-row-start: 2;\n grid-row-end: 3;\n}\n\n.saltFormFieldNext-labelLeft > .saltFormFieldLabel ~ * {\n grid-column-start: 2;\n grid-column-end: 2;\n}\n\n.saltFormFieldNext-disabled .saltInputNext-focused {\n outline: none;\n}\n";
6
+ styleInject_es(css_248z);
7
+
8
+ module.exports = css_248z;
9
+ //# sourceMappingURL=FormFieldNext.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormFieldNext.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -0,0 +1,90 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var clsx = require('clsx');
7
+ var React = require('react');
8
+ var core = require('@salt-ds/core');
9
+ require('../form-field-context/FormFieldContext.js');
10
+ var FormFieldContextNext = require('../form-field-context/FormFieldContextNext.js');
11
+ var FormFieldLabel = require('./FormFieldLabel.js');
12
+ var FormFieldHelperText = require('./FormFieldHelperText.js');
13
+ require('./FormFieldNext.css.js');
14
+
15
+ const useA11yValue = ({
16
+ disabled,
17
+ labelId,
18
+ helperTextId,
19
+ readOnly
20
+ }) => {
21
+ return React.useMemo(
22
+ () => ({
23
+ "aria-labelledby": labelId,
24
+ "aria-describedby": helperTextId,
25
+ disabled,
26
+ readOnly
27
+ }),
28
+ [labelId, disabled, helperTextId, readOnly]
29
+ );
30
+ };
31
+ const withBaseName = core.makePrefixer("saltFormFieldNext");
32
+ const FormField = React.forwardRef(
33
+ ({
34
+ children,
35
+ className,
36
+ disabled = false,
37
+ helperText,
38
+ label,
39
+ labelPlacement = "top",
40
+ onBlur,
41
+ onFocus,
42
+ readOnly = false,
43
+ id: idProp,
44
+ ...restProps
45
+ }, ref) => {
46
+ const labelId = core.useId();
47
+ const helperTextId = core.useId();
48
+ const a11yValue = useA11yValue({
49
+ labelId,
50
+ helperTextId,
51
+ disabled,
52
+ readOnly
53
+ });
54
+ return /* @__PURE__ */ jsxRuntime.jsx("div", {
55
+ ref,
56
+ className: clsx.clsx(
57
+ withBaseName(),
58
+ {
59
+ [withBaseName("disabled")]: disabled,
60
+ [withBaseName("readOnly")]: readOnly,
61
+ [withBaseName(`label${core.capitalize(labelPlacement)}`)]: labelPlacement
62
+ },
63
+ className
64
+ ),
65
+ ...restProps,
66
+ children: /* @__PURE__ */ jsxRuntime.jsxs(FormFieldContextNext.FormFieldContextNext.Provider, {
67
+ value: { a11yProps: a11yValue },
68
+ children: [
69
+ label && /* @__PURE__ */ jsxRuntime.jsx(FormFieldLabel.FormFieldLabel, {
70
+ id: labelId,
71
+ disabled,
72
+ label
73
+ }),
74
+ /* @__PURE__ */ jsxRuntime.jsx("div", {
75
+ className: withBaseName("controls"),
76
+ children
77
+ }),
78
+ helperText && /* @__PURE__ */ jsxRuntime.jsx(FormFieldHelperText.FormFieldHelperText, {
79
+ id: helperTextId,
80
+ disabled,
81
+ helperText
82
+ })
83
+ ]
84
+ })
85
+ });
86
+ }
87
+ );
88
+
89
+ exports.FormField = FormField;
90
+ //# sourceMappingURL=FormFieldNext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormFieldNext.js","sources":["../src/form-field-next/FormFieldNext.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { ForwardedRef, forwardRef, HTMLAttributes, useMemo } from \"react\";\nimport { makePrefixer, useId, capitalize } from \"@salt-ds/core\";\nimport { FormFieldContextNext } from \"../form-field-context\";\nimport { FormFieldLabel } from \"./FormFieldLabel\";\nimport { FormFieldHelperText } from \"./FormFieldHelperText\";\n\nimport \"./FormFieldNext.css\";\n\nexport type FormFieldLabelPlacement = \"top\" | \"left\";\n\nexport interface FormFieldProps\n extends HTMLAttributes<HTMLDivElement>,\n A11yValueProps {\n /**\n * Disabled prop\n */\n disabled?: boolean;\n /**\n * The helper text content\n */\n helperText?: string;\n /**\n * The label value for the FormField\n */\n label?: string;\n /**\n * Location the label, values: 'top' (default) or 'left'\n */\n labelPlacement?: FormFieldLabelPlacement;\n /**\n * Readonly prop\n */\n readOnly?: boolean;\n /**\n * Optional id prop\n */\n id?: string;\n}\n\nexport interface A11yValueProps {\n /**\n * If `true`, the FormField will be disabled.\n */\n disabled?: boolean;\n /** Helper Text */\n helperTextId?: string;\n /** id of the label node */\n labelId?: string;\n /**\n * If `true`, the FormField will be readonly.\n */\n readOnly?: boolean;\n}\nexport interface useA11yValueValue {\n \"aria-labelledby\": A11yValueProps[\"labelId\"];\n \"aria-describedby\": A11yValueProps[\"helperTextId\"] | undefined;\n disabled: A11yValueProps[\"disabled\"];\n readOnly: A11yValueProps[\"readOnly\"];\n}\n\nconst useA11yValue = ({\n disabled,\n labelId,\n helperTextId,\n readOnly,\n}: A11yValueProps) => {\n return useMemo(\n () => ({\n \"aria-labelledby\": labelId,\n \"aria-describedby\": helperTextId,\n disabled,\n readOnly,\n }),\n [labelId, disabled, helperTextId, readOnly]\n );\n};\n\nconst withBaseName = makePrefixer(\"saltFormFieldNext\");\n\nexport const FormField = forwardRef(\n (\n {\n children,\n className,\n disabled = false,\n helperText,\n label,\n labelPlacement = \"top\",\n onBlur,\n onFocus,\n readOnly = false,\n id: idProp,\n ...restProps\n }: FormFieldProps,\n ref: ForwardedRef<HTMLDivElement>\n ) => {\n const labelId = useId();\n const helperTextId = useId();\n\n const a11yValue = useA11yValue({\n labelId,\n helperTextId,\n disabled,\n readOnly,\n });\n\n return (\n <div\n ref={ref}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"readOnly\")]: readOnly,\n [withBaseName(`label${capitalize(labelPlacement)}`)]:\n labelPlacement,\n },\n className\n )}\n {...restProps}\n >\n <FormFieldContextNext.Provider value={{ a11yProps: a11yValue }}>\n {label && (\n <FormFieldLabel id={labelId} disabled={disabled} label={label} />\n )}\n <div className={withBaseName(\"controls\")}>{children}</div>\n {helperText && (\n <FormFieldHelperText\n id={helperTextId}\n disabled={disabled}\n helperText={helperText}\n />\n )}\n </FormFieldContextNext.Provider>\n </div>\n );\n }\n);\n"],"names":["useMemo","makePrefixer","forwardRef","useId","jsx","clsx","capitalize","jsxs","FormFieldContextNext","FormFieldLabel","FormFieldHelperText"],"mappings":";;;;;;;;;;;;;;AA6DA,MAAM,eAAe,CAAC;AAAA,EACpB,QAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AACF,CAAsB,KAAA;AACpB,EAAO,OAAAA,aAAA;AAAA,IACL,OAAO;AAAA,MACL,iBAAmB,EAAA,OAAA;AAAA,MACnB,kBAAoB,EAAA,YAAA;AAAA,MACpB,QAAA;AAAA,MACA,QAAA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,OAAA,EAAS,QAAU,EAAA,YAAA,EAAc,QAAQ,CAAA;AAAA,GAC5C,CAAA;AACF,CAAA,CAAA;AAEA,MAAM,YAAA,GAAeC,kBAAa,mBAAmB,CAAA,CAAA;AAE9C,MAAM,SAAY,GAAAC,gBAAA;AAAA,EACvB,CACE;AAAA,IACE,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAW,GAAA,KAAA;AAAA,IACX,UAAA;AAAA,IACA,KAAA;AAAA,IACA,cAAiB,GAAA,KAAA;AAAA,IACjB,MAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAW,GAAA,KAAA;AAAA,IACX,EAAI,EAAA,MAAA;AAAA,IACD,GAAA,SAAA;AAAA,KAEL,GACG,KAAA;AACH,IAAA,MAAM,UAAUC,UAAM,EAAA,CAAA;AACtB,IAAA,MAAM,eAAeA,UAAM,EAAA,CAAA;AAE3B,IAAA,MAAM,YAAY,YAAa,CAAA;AAAA,MAC7B,OAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAW,EAAAC,SAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb;AAAA,UACE,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,UAC5B,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,UAC5B,CAAC,YAAa,CAAA,CAAA,KAAA,EAAQC,eAAW,CAAA,cAAc,GAAG,CAChD,GAAA,cAAA;AAAA,SACJ;AAAA,QACA,SAAA;AAAA,OACF;AAAA,MACC,GAAG,SAAA;AAAA,MAEJ,QAAA,kBAAAC,eAAA,CAACC,0CAAqB,QAArB,EAAA;AAAA,QAA8B,KAAA,EAAO,EAAE,SAAA,EAAW,SAAU,EAAA;AAAA,QAC1D,QAAA,EAAA;AAAA,UAAA,KAAA,oBACEJ,cAAA,CAAAK,6BAAA,EAAA;AAAA,YAAe,EAAI,EAAA,OAAA;AAAA,YAAS,QAAA;AAAA,YAAoB,KAAA;AAAA,WAAc,CAAA;AAAA,0BAEhEL,cAAA,CAAA,KAAA,EAAA;AAAA,YAAI,SAAA,EAAW,aAAa,UAAU,CAAA;AAAA,YAAI,QAAA;AAAA,WAAS,CAAA;AAAA,UACnD,8BACEA,cAAA,CAAAM,uCAAA,EAAA;AAAA,YACC,EAAI,EAAA,YAAA;AAAA,YACJ,QAAA;AAAA,YACA,UAAA;AAAA,WACF,CAAA;AAAA,SAAA;AAAA,OAEJ,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}