iguazio.dashboard-react-controls 3.0.3 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/dist/components/ActionsMenu/ActionsMenu.d.ts +18 -0
  2. package/dist/components/ActionsMenu/ActionsMenu.d.ts.map +1 -0
  3. package/dist/components/ActionsMenu/ActionsMenu.mjs +126 -0
  4. package/dist/components/ActionsMenu/ActionsMenu.mjs.map +1 -0
  5. package/dist/components/BlockerSpy/BlockerSpy.d.ts +12 -0
  6. package/dist/components/BlockerSpy/BlockerSpy.d.ts.map +1 -0
  7. package/dist/components/BlockerSpy/BlockerSpy.mjs +18 -0
  8. package/dist/components/BlockerSpy/BlockerSpy.mjs.map +1 -0
  9. package/dist/components/Button/Button.mjs +21 -20
  10. package/dist/components/Button/Button.mjs.map +1 -1
  11. package/dist/components/Chip/Chip.d.ts +3 -0
  12. package/dist/components/Chip/Chip.d.ts.map +1 -0
  13. package/dist/components/Chip/Chip.mjs +153 -0
  14. package/dist/components/Chip/Chip.mjs.map +1 -0
  15. package/dist/components/Chip/Chip.stories.d.ts +26 -0
  16. package/dist/components/Chip/Chip.stories.d.ts.map +1 -0
  17. package/dist/components/ChipCell/ChipCell.d.ts +3 -0
  18. package/dist/components/ChipCell/ChipCell.d.ts.map +1 -0
  19. package/dist/components/ChipCell/ChipCell.mjs +212 -0
  20. package/dist/components/ChipCell/ChipCell.mjs.map +1 -0
  21. package/dist/components/ChipCell/ChipTooltip/ChipTooltip.d.ts +15 -0
  22. package/dist/components/ChipCell/ChipTooltip/ChipTooltip.d.ts.map +1 -0
  23. package/dist/components/ChipCell/ChipTooltip/ChipTooltip.mjs +36 -0
  24. package/dist/components/ChipCell/ChipTooltip/ChipTooltip.mjs.map +1 -0
  25. package/dist/components/ChipCell/HiddenChipsBlock/HiddenChipsBlock.d.ts +35 -0
  26. package/dist/components/ChipCell/HiddenChipsBlock/HiddenChipsBlock.d.ts.map +1 -0
  27. package/dist/components/ChipCell/HiddenChipsBlock/HiddenChipsBlock.mjs +73 -0
  28. package/dist/components/ChipCell/HiddenChipsBlock/HiddenChipsBlock.mjs.map +1 -0
  29. package/dist/components/ChipForm/ChipForm.d.ts +25 -0
  30. package/dist/components/ChipForm/ChipForm.d.ts.map +1 -0
  31. package/dist/components/ChipForm/ChipForm.mjs +184 -0
  32. package/dist/components/ChipForm/ChipForm.mjs.map +1 -0
  33. package/dist/components/CopyToClipboard/CopyToClipboard.d.ts +18 -0
  34. package/dist/components/CopyToClipboard/CopyToClipboard.d.ts.map +1 -0
  35. package/dist/components/CopyToClipboard/CopyToClipboard.mjs +51 -0
  36. package/dist/components/CopyToClipboard/CopyToClipboard.mjs.map +1 -0
  37. package/dist/components/ErrorMessage/ErrorMessage.d.ts +12 -0
  38. package/dist/components/ErrorMessage/ErrorMessage.d.ts.map +1 -0
  39. package/dist/components/ErrorMessage/ErrorMessage.mjs +23 -0
  40. package/dist/components/ErrorMessage/ErrorMessage.mjs.map +1 -0
  41. package/dist/components/FormChipCell/FormChip/FormChip.mjs +48 -45
  42. package/dist/components/FormChipCell/FormChip/FormChip.mjs.map +1 -1
  43. package/dist/components/FormChipCell/FormChipCellView.mjs +69 -68
  44. package/dist/components/FormChipCell/FormChipCellView.mjs.map +1 -1
  45. package/dist/components/FormCombobox/FormCombobox.d.ts.map +1 -1
  46. package/dist/components/FormCombobox/FormCombobox.mjs +65 -65
  47. package/dist/components/FormCombobox/FormCombobox.mjs.map +1 -1
  48. package/dist/components/LoadButton/LoadButton.d.ts +16 -0
  49. package/dist/components/LoadButton/LoadButton.d.ts.map +1 -0
  50. package/dist/components/LoadButton/LoadButton.mjs +22 -0
  51. package/dist/components/LoadButton/LoadButton.mjs.map +1 -0
  52. package/dist/components/LoadButton/LoadButton.stories.d.ts +10 -0
  53. package/dist/components/LoadButton/LoadButton.stories.d.ts.map +1 -0
  54. package/dist/components/Loader/Loader.d.ts +3 -0
  55. package/dist/components/Loader/Loader.d.ts.map +1 -0
  56. package/dist/components/Loader/Loader.mjs +24 -0
  57. package/dist/components/Loader/Loader.mjs.map +1 -0
  58. package/dist/components/Loader/LoaderForSuspenseFallback.d.ts +3 -0
  59. package/dist/components/Loader/LoaderForSuspenseFallback.d.ts.map +1 -0
  60. package/dist/components/Loader/LoaderForSuspenseFallback.mjs +13 -0
  61. package/dist/components/Loader/LoaderForSuspenseFallback.mjs.map +1 -0
  62. package/dist/components/TableCell/TableCell.d.ts +28 -0
  63. package/dist/components/TableCell/TableCell.d.ts.map +1 -0
  64. package/dist/components/TableCell/TableCell.mjs +113 -0
  65. package/dist/components/TableCell/TableCell.mjs.map +1 -0
  66. package/dist/components/TabsSlider/TabsSlider.d.ts +20 -0
  67. package/dist/components/TabsSlider/TabsSlider.d.ts.map +1 -0
  68. package/dist/components/TabsSlider/TabsSlider.mjs +133 -0
  69. package/dist/components/TabsSlider/TabsSlider.mjs.map +1 -0
  70. package/dist/components/index.d.ts +12 -1
  71. package/dist/components/index.d.ts.map +1 -1
  72. package/dist/components/index.mjs +60 -38
  73. package/dist/components/index.mjs.map +1 -1
  74. package/dist/constants.d.ts +9 -0
  75. package/dist/constants.d.ts.map +1 -1
  76. package/dist/constants.mjs +35 -26
  77. package/dist/constants.mjs.map +1 -1
  78. package/dist/elements/ActionsMenuItem/ActionsMenuItem.d.ts +16 -0
  79. package/dist/elements/ActionsMenuItem/ActionsMenuItem.d.ts.map +1 -0
  80. package/dist/elements/ActionsMenuItem/ActionsMenuItem.mjs +51 -0
  81. package/dist/elements/ActionsMenuItem/ActionsMenuItem.mjs.map +1 -0
  82. package/dist/elements/TableHead/TableHead.d.ts +20 -0
  83. package/dist/elements/TableHead/TableHead.d.ts.map +1 -0
  84. package/dist/elements/TableHead/TableHead.mjs +58 -0
  85. package/dist/elements/TableHead/TableHead.mjs.map +1 -0
  86. package/dist/elements/TableLinkCell/TableLinkCell.d.ts +24 -0
  87. package/dist/elements/TableLinkCell/TableLinkCell.d.ts.map +1 -0
  88. package/dist/elements/TableLinkCell/TableLinkCell.mjs +87 -0
  89. package/dist/elements/TableLinkCell/TableLinkCell.mjs.map +1 -0
  90. package/dist/elements/TableTypeCell/TableTypeCell.d.ts +12 -0
  91. package/dist/elements/TableTypeCell/TableTypeCell.d.ts.map +1 -0
  92. package/dist/elements/TableTypeCell/TableTypeCell.mjs +37 -0
  93. package/dist/elements/TableTypeCell/TableTypeCell.mjs.map +1 -0
  94. package/dist/elements/index.d.ts +5 -1
  95. package/dist/elements/index.d.ts.map +1 -1
  96. package/dist/elements/index.mjs +18 -10
  97. package/dist/elements/index.mjs.map +1 -1
  98. package/dist/hooks/index.d.ts +3 -0
  99. package/dist/hooks/index.mjs +14 -8
  100. package/dist/hooks/index.mjs.map +1 -1
  101. package/dist/hooks/useDetails.hook.d.ts +72 -0
  102. package/dist/hooks/useDetails.hook.d.ts.map +1 -0
  103. package/dist/hooks/useDetails.hook.mjs +204 -0
  104. package/dist/hooks/useDetails.hook.mjs.map +1 -0
  105. package/dist/hooks/useDetailsHeader.hook.d.ts +77 -0
  106. package/dist/hooks/useDetailsHeader.hook.d.ts.map +1 -0
  107. package/dist/hooks/useDetailsHeader.hook.mjs +219 -0
  108. package/dist/hooks/useDetailsHeader.hook.mjs.map +1 -0
  109. package/dist/hooks/useTable.hook.d.ts +60 -0
  110. package/dist/hooks/useTable.hook.d.ts.map +1 -0
  111. package/dist/hooks/useTable.hook.mjs +129 -0
  112. package/dist/hooks/useTable.hook.mjs.map +1 -0
  113. package/dist/images/add.svg.mjs +2 -3
  114. package/dist/images/add.svg.mjs.map +1 -1
  115. package/dist/images/add.svg2.mjs +6 -0
  116. package/dist/images/add.svg2.mjs.map +1 -0
  117. package/dist/images/cancel.svg +3 -0
  118. package/dist/images/copy-to-clipboard-icon.svg.mjs +6 -0
  119. package/dist/images/copy-to-clipboard-icon.svg.mjs.map +1 -0
  120. package/dist/images/elipsis.svg.mjs +6 -0
  121. package/dist/images/elipsis.svg.mjs.map +1 -0
  122. package/dist/images/history.svg.mjs +6 -0
  123. package/dist/images/history.svg.mjs.map +1 -0
  124. package/dist/images/ml-enlarge.svg.mjs +6 -0
  125. package/dist/images/ml-enlarge.svg.mjs.map +1 -0
  126. package/dist/images/ml-minimize.svg.mjs +6 -0
  127. package/dist/images/ml-minimize.svg.mjs.map +1 -0
  128. package/dist/images/refresh.svg.mjs +6 -0
  129. package/dist/images/refresh.svg.mjs.map +1 -0
  130. package/dist/images/unsuccess_alert.svg.mjs +6 -0
  131. package/dist/images/unsuccess_alert.svg.mjs.map +1 -0
  132. package/dist/index.css +1 -1
  133. package/dist/index.d.ts +2 -1
  134. package/dist/index.d.ts.map +1 -1
  135. package/dist/index.mjs +10 -8
  136. package/dist/index.mjs.map +1 -1
  137. package/dist/reducers/commonDetailsReducer.d.ts +12 -0
  138. package/dist/reducers/commonDetailsReducer.d.ts.map +1 -0
  139. package/dist/reducers/commonDetailsReducer.mjs +77 -0
  140. package/dist/reducers/commonDetailsReducer.mjs.map +1 -0
  141. package/dist/reducers/index.d.ts +3 -0
  142. package/dist/reducers/index.d.ts.map +1 -0
  143. package/dist/reducers/index.mjs +7 -0
  144. package/dist/reducers/index.mjs.map +1 -0
  145. package/dist/reducers/notificationReducer.d.ts +3 -0
  146. package/dist/reducers/notificationReducer.d.ts.map +1 -0
  147. package/dist/reducers/notificationReducer.mjs +21 -0
  148. package/dist/reducers/notificationReducer.mjs.map +1 -0
  149. package/dist/scss/common.scss +655 -0
  150. package/dist/scss/details.scss +376 -0
  151. package/dist/scss/mixins.scss +1 -1
  152. package/dist/scss/table.scss +283 -0
  153. package/dist/types.d.ts +6 -0
  154. package/dist/types.d.ts.map +1 -1
  155. package/dist/types.mjs +89 -45
  156. package/dist/types.mjs.map +1 -1
  157. package/dist/utils/chips.util.d.ts +30 -0
  158. package/dist/utils/chips.util.d.ts.map +1 -0
  159. package/dist/utils/chips.util.mjs +75 -0
  160. package/dist/utils/chips.util.mjs.map +1 -0
  161. package/dist/utils/common.util.d.ts +5 -0
  162. package/dist/utils/common.util.d.ts.map +1 -1
  163. package/dist/utils/common.util.mjs +80 -33
  164. package/dist/utils/common.util.mjs.map +1 -1
  165. package/dist/utils/datetime.util.d.ts +9 -0
  166. package/dist/utils/datetime.util.d.ts.map +1 -0
  167. package/dist/utils/datetime.util.mjs +53 -0
  168. package/dist/utils/datetime.util.mjs.map +1 -0
  169. package/dist/utils/filter.util.d.ts +5 -0
  170. package/dist/utils/filter.util.d.ts.map +1 -0
  171. package/dist/utils/filter.util.mjs +23 -0
  172. package/dist/utils/filter.util.mjs.map +1 -0
  173. package/dist/utils/index.d.ts +5 -0
  174. package/dist/utils/index.mjs +22 -12
  175. package/dist/utils/index.mjs.map +1 -1
  176. package/dist/utils/notification.util.d.ts +2 -0
  177. package/dist/utils/notification.util.d.ts.map +1 -0
  178. package/dist/utils/notification.util.mjs +17 -0
  179. package/dist/utils/notification.util.mjs.map +1 -0
  180. package/dist/utils/string.util.d.ts +6 -0
  181. package/dist/utils/string.util.d.ts.map +1 -0
  182. package/dist/utils/string.util.mjs +13 -0
  183. package/dist/utils/string.util.mjs.map +1 -0
  184. package/package.json +11 -1
@@ -1 +1 @@
1
- {"version":3,"file":"FormChipCellView.mjs","sources":["../../../src/lib/components/FormChipCell/FormChipCellView.jsx"],"sourcesContent":["/*\nCopyright 2022 Iguazio Systems Ltd.\nLicensed under the Apache License, Version 2.0 (the \"License\") with\nan addition restriction as set forth herein. You may not use this\nfile except in compliance with the License. You may obtain a copy of\nthe License at http://www.apache.org/licenses/LICENSE-2.0.\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\nimplied. See the License for the specific language governing\npermissions and limitations under the License.\nIn addition, you may not use the software for any purposes that are\nillegal under applicable law, and the grant of the foregoing license\nunder the Apache 2.0 license is conditioned upon your compliance with\nsuch restriction.\n*/\nimport React, { forwardRef } from 'react'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\nimport { FieldArray } from 'react-final-form-arrays'\nimport { isEmpty } from 'lodash'\n\nimport FormChip from './FormChip/FormChip'\nimport HiddenChipsBlock from './HiddenChipsBlock/HiddenChipsBlock'\nimport TextTooltipTemplate from '../TooltipTemplate/TextTooltipTemplate'\nimport Tooltip from '../Tooltip/Tooltip'\n\nimport { CHIP_OPTIONS } from '../../types'\nimport { isEveryObjectValueEmpty } from '../../utils/common.util'\nimport { uniquenessError } from './formChipCell.util'\n\nimport Add from '../../images/add.svg?react'\n\nlet FormChipCellView = (\n {\n chipOptions = {\n background: 'purple',\n boldValue: false,\n borderRadius: 'primary',\n borderColor: 'transparent',\n density: 'dense',\n font: 'purple'\n },\n chipSizeIsRecalculated,\n setChipSizeIsRecalculated,\n chips,\n editConfig,\n handleAddNewChip,\n handleEditChip,\n handleRemoveChip,\n handleShowElements,\n handleToEditMode,\n isEditable = false,\n name,\n setChipsSizes,\n setEditConfig,\n shortChips = false,\n showChips,\n showHiddenChips,\n validateFields,\n validationRules = {}\n },\n { chipsCellRef, chipsWrapperRef, hiddenChipsCounterRef, hiddenChipsPopUpRef }\n) => {\n const buttonAddClassNames = classnames(\n 'button-add',\n chipOptions.background && `button-add-background_${chipOptions.background}`,\n chipOptions.borderColor && `button-add-border_${chipOptions.borderColor}`,\n chipOptions.font && `button-add-font_${chipOptions.font}`,\n chipOptions.density && `button-add-density_${chipOptions.density}`\n )\n const wrapperClassNames = classnames(\n 'chips-wrapper',\n isEditable && 'fixed-max-width',\n !chipSizeIsRecalculated && 'chip_invisible'\n )\n const chipClassNames = classnames(\n 'chip',\n 'chip__content',\n isEditable && 'data-ellipsis',\n shortChips && 'chip_short',\n chips.hiddenChips && 'chip_hidden',\n chipOptions.density && `chip-density_${chipOptions.density}`,\n chipOptions.borderRadius && `chip-border_${chipOptions.borderRadius}`,\n chipOptions.background && `chip-background_${chipOptions.background}`,\n chipOptions.borderColor && `chip-border_${chipOptions.borderColor}`,\n chipOptions.font && `chip-font_${chipOptions.font}`,\n isEditable && 'editable',\n (showChips || isEditable) && 'chip_visible'\n )\n\n return (\n <FieldArray name={name} validate={validateFields}>\n {({ fields, meta }) => {\n let newValidationRules = { ...validationRules }\n\n if (\n !isEmpty(validationRules) &&\n validationRules.key.every(rule => rule.name !== uniquenessError.name)\n ) {\n newValidationRules = {\n ...validationRules,\n key: [...validationRules.key, uniquenessError]\n }\n }\n\n return (\n (isEditable || !isEveryObjectValueEmpty(fields)) && (\n <div className=\"chips-cell\" ref={chipsCellRef}>\n <div className={wrapperClassNames} ref={chipsWrapperRef}>\n {fields.map((contentItem, index) => {\n const chipData = fields.value[index]\n\n return (\n index < chips.visibleChips?.length && (\n <div className=\"chip-block\" key={chipData.id}>\n <Tooltip\n hidden={editConfig.isEdit && !chipData.tooltip}\n key={chipData.id}\n template={\n <TextTooltipTemplate\n text={\n chipData.tooltip || (\n <span className=\"chip__content\">\n <span className=\"chip__content-item\">{chipData.key}</span>\n {!chipData.isKeyOnly && (\n <>\n <span className=\"chip__delimiter\">\n {chipData.delimiter ? chipData.delimiter : ':'}\n </span>\n <span className=\"chip__content-item\">{chipData.value}</span>\n </>\n )}\n </span>\n )\n }\n />\n }\n >\n <FormChip\n chip={chipData}\n chipSizeIsRecalculated={chipSizeIsRecalculated}\n setChipSizeIsRecalculated={setChipSizeIsRecalculated}\n chipIndex={index}\n chipOptions={chipOptions}\n editConfig={editConfig}\n handleEditChip={(event, nameEvent, isOutsideClick) =>\n handleEditChip(event, fields, nameEvent, isOutsideClick)\n }\n handleRemoveChip={(event, index) =>\n handleRemoveChip(event, fields, index)\n }\n handleToEditMode={handleToEditMode}\n isEditable={isEditable}\n keyName={`${contentItem}.key`}\n meta={meta}\n ref={chipsCellRef}\n setChipsSizes={setChipsSizes}\n setEditConfig={setEditConfig}\n validationRules={newValidationRules}\n valueName={`${contentItem}.value`}\n />\n </Tooltip>\n </div>\n )\n )\n })}\n\n <div className=\"chip-block\">\n {chips.hiddenChips.length > 0 && showHiddenChips && (\n <HiddenChipsBlock\n chipClassNames={chipClassNames}\n chipOptions={chipOptions}\n chips={chips.hiddenChips}\n handleShowElements={handleShowElements}\n ref={{ hiddenChipsCounterRef, hiddenChipsPopUpRef }}\n textOverflowEllipsis\n />\n )}\n {chips.hiddenChipsNumber && (\n <span\n ref={hiddenChipsCounterRef}\n className={`${chipClassNames} chips_button`}\n onClick={handleShowElements}\n >\n {chips.hiddenChipsNumber}\n </span>\n )}\n </div>\n\n {isEditable && (\n <button\n data-testid={`${name}-add-chip`}\n className={buttonAddClassNames}\n onClick={e => handleAddNewChip(e, fields)}\n >\n <Add />\n </button>\n )}\n </div>\n </div>\n )\n )\n }}\n </FieldArray>\n )\n}\n\nFormChipCellView = forwardRef(FormChipCellView)\n\nFormChipCellView.displayName = 'FormChipCellView'\n\nFormChipCellView.propTypes = {\n chipOptions: CHIP_OPTIONS,\n chipSizeIsRecalculated: PropTypes.bool.isRequired,\n setChipSizeIsRecalculated: PropTypes.func.isRequired,\n chips: PropTypes.object.isRequired,\n editConfig: PropTypes.object.isRequired,\n formState: PropTypes.object.isRequired,\n handleAddNewChip: PropTypes.func.isRequired,\n handleEditChip: PropTypes.func.isRequired,\n handleRemoveChip: PropTypes.func.isRequired,\n handleShowElements: PropTypes.func.isRequired,\n handleToEditMode: PropTypes.func.isRequired,\n isEditable: PropTypes.bool,\n name: PropTypes.string.isRequired,\n setChipsSizes: PropTypes.func.isRequired,\n setEditConfig: PropTypes.func.isRequired,\n shortChips: PropTypes.bool,\n showChips: PropTypes.bool.isRequired,\n showHiddenChips: PropTypes.bool.isRequired,\n validateFields: PropTypes.func.isRequired,\n validationRules: PropTypes.object\n}\n\nexport default FormChipCellView\n"],"names":["FormChipCellView","chipOptions","chipSizeIsRecalculated","setChipSizeIsRecalculated","chips","editConfig","handleAddNewChip","handleEditChip","handleRemoveChip","handleShowElements","handleToEditMode","isEditable","name","setChipsSizes","setEditConfig","shortChips","showChips","showHiddenChips","validateFields","validationRules","chipsCellRef","chipsWrapperRef","hiddenChipsCounterRef","hiddenChipsPopUpRef","buttonAddClassNames","classnames","wrapperClassNames","chipClassNames","jsx","FieldArray","fields","meta","newValidationRules","isEmpty","rule","uniquenessError","isEveryObjectValueEmpty","jsxs","contentItem","index","chipData","_a","Tooltip","TextTooltipTemplate","Fragment","FormChip","event","nameEvent","isOutsideClick","HiddenChipsBlock","e","Add","forwardRef","CHIP_OPTIONS","PropTypes","FormChipCellView$1"],"mappings":"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"}
1
+ {"version":3,"file":"FormChipCellView.mjs","sources":["../../../src/lib/components/FormChipCell/FormChipCellView.jsx"],"sourcesContent":["/*\nCopyright 2022 Iguazio Systems Ltd.\nLicensed under the Apache License, Version 2.0 (the \"License\") with\nan addition restriction as set forth herein. You may not use this\nfile except in compliance with the License. You may obtain a copy of\nthe License at http://www.apache.org/licenses/LICENSE-2.0.\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\nimplied. See the License for the specific language governing\npermissions and limitations under the License.\nIn addition, you may not use the software for any purposes that are\nillegal under applicable law, and the grant of the foregoing license\nunder the Apache 2.0 license is conditioned upon your compliance with\nsuch restriction.\n*/\nimport React, { forwardRef } from 'react'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\nimport { FieldArray } from 'react-final-form-arrays'\nimport { isEmpty } from 'lodash'\n\nimport FormChip from './FormChip/FormChip'\nimport HiddenChipsBlock from './HiddenChipsBlock/HiddenChipsBlock'\nimport TextTooltipTemplate from '../TooltipTemplate/TextTooltipTemplate'\nimport Tooltip from '../Tooltip/Tooltip'\n\nimport { CHIP_OPTIONS } from '../../types'\nimport { isEveryObjectValueEmpty } from '../../utils/common.util'\nimport { uniquenessError } from './formChipCell.util'\n\nimport Add from '../../images/add.svg?react'\n\nlet FormChipCellView = (\n {\n chipOptions = {\n background: 'purple',\n boldValue: false,\n borderRadius: 'primary',\n borderColor: 'transparent',\n density: 'dense',\n font: 'purple'\n },\n chipSizeIsRecalculated,\n setChipSizeIsRecalculated,\n chips,\n editConfig,\n handleAddNewChip,\n handleEditChip,\n handleRemoveChip,\n handleShowElements,\n handleToEditMode,\n isEditable = false,\n name,\n setChipsSizes,\n setEditConfig,\n shortChips = false,\n showChips,\n showHiddenChips,\n validateFields,\n validationRules = {}\n },\n { chipsCellRef, chipsWrapperRef, hiddenChipsCounterRef, hiddenChipsPopUpRef }\n) => {\n const buttonAddClassNames = classnames(\n 'button-add',\n chipOptions.background && `button-add-background_${chipOptions.background}`,\n chipOptions.borderColor && `button-add-border_${chipOptions.borderColor}`,\n chipOptions.font && `button-add-font_${chipOptions.font}`,\n chipOptions.density && `button-add-density_${chipOptions.density}`\n )\n const wrapperClassNames = classnames(\n 'chips-wrapper',\n isEditable && 'fixed-max-width',\n chips.visibleChips?.length > 0 && !chipSizeIsRecalculated && 'chip_invisible'\n )\n const chipClassNames = classnames(\n 'chip',\n 'chip__content',\n isEditable && 'data-ellipsis',\n shortChips && 'chip_short',\n chips.hiddenChips && 'chip_hidden',\n chipOptions.density && `chip-density_${chipOptions.density}`,\n chipOptions.borderRadius && `chip-border_${chipOptions.borderRadius}`,\n chipOptions.background && `chip-background_${chipOptions.background}`,\n chipOptions.borderColor && `chip-border_${chipOptions.borderColor}`,\n chipOptions.font && `chip-font_${chipOptions.font}`,\n isEditable && 'editable',\n (showChips || isEditable) && 'chip_visible'\n )\n\n return (\n <FieldArray name={name} validate={validateFields}>\n {({ fields, meta }) => {\n let newValidationRules = { ...validationRules }\n\n if (\n !isEmpty(validationRules) &&\n validationRules.key.every(rule => rule.name !== uniquenessError.name)\n ) {\n newValidationRules = {\n ...validationRules,\n key: [...validationRules.key, uniquenessError]\n }\n }\n\n return (\n (isEditable || !isEveryObjectValueEmpty(fields)) && (\n <div className=\"chips-cell\" ref={chipsCellRef}>\n <div className={wrapperClassNames} ref={chipsWrapperRef}>\n {fields.map((contentItem, index) => {\n const chipData = fields.value[index]\n\n return (\n index < chips.visibleChips?.length && (\n <div className=\"chip-block\" key={chipData.id}>\n <Tooltip\n hidden={editConfig.isEdit && !chipData.tooltip}\n key={chipData.id}\n template={\n <TextTooltipTemplate\n text={\n chipData.tooltip || (\n <span className=\"chip__content\">\n <span className=\"chip__content-item\">{chipData.key}</span>\n {!chipData.isKeyOnly && (\n <>\n <span className=\"chip__delimiter\">\n {chipData.delimiter ? chipData.delimiter : ':'}\n </span>\n <span className=\"chip__content-item\">{chipData.value}</span>\n </>\n )}\n </span>\n )\n }\n />\n }\n >\n <FormChip\n chip={chipData}\n chipSizeIsRecalculated={chipSizeIsRecalculated}\n setChipSizeIsRecalculated={setChipSizeIsRecalculated}\n chipIndex={index}\n chipOptions={chipOptions}\n editConfig={editConfig}\n handleEditChip={(event, nameEvent, isOutsideClick) =>\n handleEditChip(event, fields, nameEvent, isOutsideClick)\n }\n handleRemoveChip={(event, index) =>\n handleRemoveChip(event, fields, index)\n }\n handleToEditMode={handleToEditMode}\n isEditable={isEditable}\n keyName={`${contentItem}.key`}\n meta={meta}\n ref={chipsCellRef}\n setChipsSizes={setChipsSizes}\n setEditConfig={setEditConfig}\n validationRules={newValidationRules}\n valueName={`${contentItem}.value`}\n />\n </Tooltip>\n </div>\n )\n )\n })}\n\n <div className=\"chip-block\">\n {chips.hiddenChips.length > 0 && showHiddenChips && (\n <HiddenChipsBlock\n chipClassNames={chipClassNames}\n chipOptions={chipOptions}\n chips={chips.hiddenChips}\n handleShowElements={handleShowElements}\n ref={{ hiddenChipsCounterRef, hiddenChipsPopUpRef }}\n textOverflowEllipsis\n />\n )}\n {chips.hiddenChipsNumber && (\n <span\n ref={hiddenChipsCounterRef}\n className={`${chipClassNames} chips_button`}\n onClick={handleShowElements}\n >\n {chips.hiddenChipsNumber}\n </span>\n )}\n </div>\n\n {isEditable && (\n <button\n data-testid={`${name}-add-chip`}\n className={buttonAddClassNames}\n onClick={e => handleAddNewChip(e, fields)}\n >\n <Add />\n </button>\n )}\n </div>\n </div>\n )\n )\n }}\n </FieldArray>\n )\n}\n\nFormChipCellView = forwardRef(FormChipCellView)\n\nFormChipCellView.displayName = 'FormChipCellView'\n\nFormChipCellView.propTypes = {\n chipOptions: CHIP_OPTIONS,\n chipSizeIsRecalculated: PropTypes.bool.isRequired,\n setChipSizeIsRecalculated: PropTypes.func.isRequired,\n chips: PropTypes.object.isRequired,\n editConfig: PropTypes.object.isRequired,\n formState: PropTypes.object.isRequired,\n handleAddNewChip: PropTypes.func.isRequired,\n handleEditChip: PropTypes.func.isRequired,\n handleRemoveChip: PropTypes.func.isRequired,\n handleShowElements: PropTypes.func.isRequired,\n handleToEditMode: PropTypes.func.isRequired,\n isEditable: PropTypes.bool,\n name: PropTypes.string.isRequired,\n setChipsSizes: PropTypes.func.isRequired,\n setEditConfig: PropTypes.func.isRequired,\n shortChips: PropTypes.bool,\n showChips: PropTypes.bool.isRequired,\n showHiddenChips: PropTypes.bool.isRequired,\n validateFields: PropTypes.func.isRequired,\n validationRules: PropTypes.object\n}\n\nexport default FormChipCellView\n"],"names":["FormChipCellView","chipOptions","chipSizeIsRecalculated","setChipSizeIsRecalculated","chips","editConfig","handleAddNewChip","handleEditChip","handleRemoveChip","handleShowElements","handleToEditMode","isEditable","name","setChipsSizes","setEditConfig","shortChips","showChips","showHiddenChips","validateFields","validationRules","chipsCellRef","chipsWrapperRef","hiddenChipsCounterRef","hiddenChipsPopUpRef","buttonAddClassNames","classnames","wrapperClassNames","_a","chipClassNames","jsx","FieldArray","fields","meta","newValidationRules","isEmpty","rule","uniquenessError","isEveryObjectValueEmpty","jsxs","contentItem","index","chipData","Tooltip","TextTooltipTemplate","Fragment","FormChip","event","nameEvent","isOutsideClick","HiddenChipsBlock","e","Add","forwardRef","CHIP_OPTIONS","PropTypes","FormChipCellView$1"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormCombobox.d.ts","sourceRoot":"","sources":["../../../src/lib/components/FormCombobox/FormCombobox.jsx"],"names":[],"mappings":";AAuCA;;;;;;;;;;;;;;;;;;;;;;;;;;gBAgbC;;;;;;;;;;;;;;;;;;;;;;;;;;wBAzb0E,aAAa;yCAAb,aAAa"}
1
+ {"version":3,"file":"FormCombobox.d.ts","sourceRoot":"","sources":["../../../src/lib/components/FormCombobox/FormCombobox.jsx"],"names":[],"mappings":";AAuCA;;;;;;;;;;;;;;;;;;;;;;;;;;gBAobC;;;;;;;;;;;;;;;;;;;;;;;;;;wBA7b0E,aAAa;yCAAb,aAAa"}
@@ -1,4 +1,4 @@
1
- import { jsx as i, jsxs as m } from "react/jsx-runtime";
1
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
2
2
  import { useState as c, useRef as R, useEffect as C, useCallback as K } from "react";
3
3
  import { useField as Ee, Field as Oe } from "react-final-form";
4
4
  import { isEmpty as q } from "lodash";
@@ -23,12 +23,12 @@ const Be = ({
23
23
  density: ee = "normal",
24
24
  disabled: W = !1,
25
25
  hideSearchInput: oe = !1,
26
- inputDefaultValue: ie = "",
27
- inputPlaceholder: le = "",
26
+ inputDefaultValue: le = "",
27
+ inputPlaceholder: ie = "",
28
28
  invalidText: B = "Invalid",
29
29
  label: G = "",
30
30
  maxSuggestedMatches: te = 1,
31
- name: d,
31
+ name: m,
32
32
  onBlur: _ = null,
33
33
  onChange: g = null,
34
34
  onFocus: N = null,
@@ -45,10 +45,10 @@ const Be = ({
45
45
  validator: U = null,
46
46
  withoutBorder: ae = !1
47
47
  }) => {
48
- const { input: a, meta: r } = Ee(d), [F, D] = c(ie), [n, ne] = c(re), [ce, L] = c({
48
+ const { input: a, meta: r } = Ee(m), [F, D] = c(le), [n, ne] = c(re), [ce, L] = c({
49
49
  left: "0px"
50
- }), [f, u] = c(!1), [$, w] = c(!1), [x, X] = c(S), [v, y] = c(!1), [I, de] = c(!1), [V, me] = c(H), [A, E] = c(!1), p = R(), P = R(), b = R(), O = R();
51
- We(p, () => E(!1));
50
+ }), [p, f] = c(!1), [$, w] = c(!1), [x, X] = c(S), [v, y] = c(!1), [I, de] = c(!1), [V, me] = c(H), [A, E] = c(!1), b = R(), P = R(), d = R(), O = R();
51
+ We(b, () => E(!1));
52
52
  const fe = h("form-field__label", W && "form-field__label-disabled"), ue = h(
53
53
  "form-field-combobox__input",
54
54
  n.id.length === 0 && "form-field-combobox__input_hidden"
@@ -69,57 +69,57 @@ const Be = ({
69
69
  }, [r.invalid, r.modified, r.submitFailed, r.touched, r.validating]);
70
70
  const j = K(
71
71
  (e) => {
72
- p.current && !p.current.contains(e.target) && O.current && !O.current.contains(e.target) && (y(!1), u(!1), w(!1), a.onBlur(new Event("blur")), _ && _(a.value));
72
+ b.current && !b.current.contains(e.target) && O.current && !O.current.contains(e.target) && (y(!1), f(!1), w(!1), a.onBlur(new Event("blur")), _ && _(a.value));
73
73
  },
74
74
  [a, _]
75
75
  ), Y = (e) => {
76
- p.current && p.current.contains(e.target) || !e.target.closest(".pop-up-dialog") && !e.target.classList.contains("form-field-combobox") && (E(!1), u(!1), w(!1), b.current.blur());
76
+ b.current && b.current.contains(e.target) || !e.target.closest(".pop-up-dialog") && !e.target.classList.contains("form-field-combobox") && (E(!1), f(!1), w(!1), d.current.blur());
77
77
  };
78
78
  C(() => (window.addEventListener("click", j), () => {
79
79
  window.removeEventListener("click", j);
80
- }), [j]), C(() => ((A || f || $) && window.addEventListener("scroll", Y, !0), () => {
80
+ }), [j]), C(() => ((A || p || $) && window.addEventListener("scroll", Y, !0), () => {
81
81
  window.removeEventListener("scroll", Y, !0);
82
- }), [f, $, A]);
83
- const pe = () => V.map(({ isValid: e = !1, label: o, name: s }) => /* @__PURE__ */ i(Re, { valid: e, validationMessage: o }, s)), be = (e) => {
82
+ }), [p, $, A]);
83
+ const pe = () => V.map(({ isValid: e = !1, label: o, name: s }) => /* @__PURE__ */ l(Re, { valid: e, validationMessage: o }, s)), be = (e) => {
84
84
  const o = e.target;
85
85
  L({
86
86
  left: `${o.selectionStart < 30 ? o.selectionStart : 30}ch`
87
87
  }), v && y(!1), D(o.value), a.onChange(`${n.id}${o.value}`), g && g(n.id, o.value), x.length > 0 && w(!0);
88
88
  }, he = (e) => {
89
- e.id !== n.id && (ne(e), a.onChange(e.id), D(""), g && g(e.id), u(!1), b.current.disabled = !1, b.current.focus());
89
+ e.id !== n.id ? (ne(e), a.onChange(e.id), D(""), g && g(e.id), f(!1), d.current.disabled = !1, d.current.focus()) : (f(!1), d.current.disabled = !1, d.current.focus());
90
90
  }, _e = (e) => {
91
91
  const o = F.split("/"), s = o.length - 1;
92
- let l = e.customDelimiter ? o[s].replace(new RegExp(`${e.customDelimiter}.*`), "") + e.id : e.id;
93
- o.length <= te - 1 && (l += "/"), o[s] = l, v && y(!1), o.join("/") !== F && (D(o.join("/")), a.onChange(`${n.id}${o.join("/")}`), g && g(n.id, o.join("/"))), w(!1), b.current.focus(), L({
94
- left: `${b.current.selectionStart < 30 ? b.current.selectionStart : 30}ch`
92
+ let i = e.customDelimiter ? o[s].replace(new RegExp(`${e.customDelimiter}.*`), "") + e.id : e.id;
93
+ o.length <= te - 1 && (i += "/"), o[s] = i, v && y(!1), o.join("/") !== F && (D(o.join("/")), a.onChange(`${n.id}${o.join("/")}`), g && g(n.id, o.join("/"))), w(!1), d.current.focus(), L({
94
+ left: `${d.current.selectionStart < 30 ? d.current.selectionStart : 30}ch`
95
95
  });
96
96
  }, ge = () => {
97
- N && N(), a.onFocus(new Event("focus")), f && u(!1), w(!0);
97
+ N && N(), a.onFocus(new Event("focus")), p && f(!1), w(!0);
98
98
  }, we = (e) => {
99
99
  e.persist(), X(
100
100
  () => S.filter((o) => o.id.startsWith(e.target.value))
101
101
  );
102
102
  }, z = K(() => {
103
- f ? (u(!1), a.onBlur(new Event("blur")), _ && _(a.value)) : (w(!1), E(!1), L({
103
+ p ? (f(!1), a.onBlur(new Event("blur")), _ && _(a.value)) : (w(!1), E(!1), L({
104
104
  left: "0px"
105
- }), u(!0), a.onFocus(new Event("focus")), N && N(a.value));
106
- }, [a, _, N, f]), xe = (e = "", o) => {
105
+ }), f(!0), a.onFocus(new Event("focus")), N && N(a.value));
106
+ }, [a, _, N, p]), xe = (e = "", o) => {
107
107
  const s = e.startsWith(n.id) ? e.substring(n.id.length) : e ?? "";
108
- let l = null;
108
+ let i = null;
109
109
  if (!q(V)) {
110
110
  const [M, Ie] = De(H, s), Ve = M.filter((k) => !k.isValid);
111
- Ie || (l = Ve.map((k) => ({ name: k.name, label: k.label })));
111
+ Ie || (i = Ve.map((k) => ({ name: k.name, label: k.label })));
112
112
  }
113
- return q(l) && (s.startsWith(" ") ? l = { name: "empty", label: B } : T && s.trim().length === 0 && (l = { name: "required", label: "This field is required" })), !l && U && (l = U(e, o)), l;
113
+ return q(i) && (s.startsWith(" ") ? i = { name: "empty", label: B } : T && s.trim().length === 0 && (i = { name: "required", label: "This field is required" })), !i && U && (i = U(e, o)), i;
114
114
  }, ve = () => {
115
- E((e) => !e), u(!1);
115
+ E((e) => !e), f(!1);
116
116
  }, Ne = h(
117
117
  Z,
118
118
  "form-field-combobox",
119
119
  "form-field",
120
120
  I && "form-field-combobox_invalid"
121
121
  ), Se = h(
122
- f && "form-field-combobox__icon_open",
122
+ p && "form-field-combobox__icon_open",
123
123
  "form-field-combobox__icon"
124
124
  ), Ce = h(n.className), ye = h(
125
125
  "form-field__wrapper",
@@ -128,27 +128,27 @@ const Be = ({
128
128
  I && "form-field__wrapper-invalid",
129
129
  ae && "without-border"
130
130
  );
131
- return /* @__PURE__ */ i(Oe, { name: d, validate: xe, children: ({ input: e, meta: o }) => {
131
+ return /* @__PURE__ */ l(Oe, { name: m, validate: xe, children: ({ input: e, meta: o }) => {
132
132
  var s;
133
- return /* @__PURE__ */ m(
133
+ return /* @__PURE__ */ u(
134
134
  "div",
135
135
  {
136
136
  className: Ne,
137
- ref: p,
138
- "data-testid": d ? `${d}-form-combobox` : "form-combobox",
137
+ ref: b,
138
+ "data-testid": m ? `${m}-form-combobox` : "form-combobox",
139
139
  children: [
140
- G && /* @__PURE__ */ i("div", { className: fe, children: /* @__PURE__ */ m("label", { "data-testid": "label", htmlFor: e.name, children: [
140
+ G && /* @__PURE__ */ l("div", { className: fe, children: /* @__PURE__ */ u("label", { "data-testid": "label", htmlFor: e.name, children: [
141
141
  G,
142
- (T || V.find((l) => l.name === "required")) && /* @__PURE__ */ i("span", { className: "form-field__label-mandatory", children: " *" })
142
+ (T || V.find((i) => i.name === "required")) && /* @__PURE__ */ l("span", { className: "form-field__label-mandatory", children: " *" })
143
143
  ] }) }),
144
- /* @__PURE__ */ m("div", { className: ye, children: [
145
- /* @__PURE__ */ i("div", { className: "form-field__icons", children: /* @__PURE__ */ i(Pe, { className: Se, onClick: z }) }),
146
- /* @__PURE__ */ m("div", { className: "form-field-combobox__select form-field__control", ref: P, children: [
147
- /* @__PURE__ */ m("div", { className: "form-field-combobox__select-header", onClick: z, children: [
148
- /* @__PURE__ */ i("span", { className: Ce, children: n.id }),
149
- n.id.length === 0 && J && /* @__PURE__ */ i("div", { className: "form-field-combobox__placeholder", children: /* @__PURE__ */ i("label", { children: J }) })
144
+ /* @__PURE__ */ u("div", { className: ye, children: [
145
+ /* @__PURE__ */ l("div", { className: "form-field__icons", children: /* @__PURE__ */ l(Pe, { className: Se, onClick: z }) }),
146
+ /* @__PURE__ */ u("div", { className: "form-field-combobox__select form-field__control", ref: P, children: [
147
+ /* @__PURE__ */ u("div", { className: "form-field-combobox__select-header", onClick: z, children: [
148
+ /* @__PURE__ */ l("span", { className: Ce, children: n.id }),
149
+ n.id.length === 0 && J && /* @__PURE__ */ l("div", { className: "form-field-combobox__placeholder", children: /* @__PURE__ */ l("label", { children: J }) })
150
150
  ] }),
151
- f && /* @__PURE__ */ i(
151
+ p && /* @__PURE__ */ l(
152
152
  Q,
153
153
  {
154
154
  headerIsHidden: !0,
@@ -157,42 +157,42 @@ const Be = ({
157
157
  position: "bottom-right"
158
158
  },
159
159
  className: "form-field-combobox__dropdown form-field-combobox__dropdown-select",
160
- children: /* @__PURE__ */ i("ul", { className: "form-field-combobox__dropdown-list", ref: O, children: se.map((l) => {
161
- if (!l.hidden) {
160
+ children: /* @__PURE__ */ l("ul", { className: "form-field-combobox__dropdown-list", ref: O, children: se.map((i) => {
161
+ if (!i.hidden) {
162
162
  const M = h(
163
163
  "form-field-combobox__dropdown-list-option",
164
- l.className
164
+ i.className
165
165
  );
166
- return /* @__PURE__ */ i(
166
+ return /* @__PURE__ */ l(
167
167
  "li",
168
168
  {
169
169
  className: M,
170
- onClick: () => he(l),
171
- children: l.label
170
+ onClick: () => he(i),
171
+ children: i.label
172
172
  },
173
- l.id
173
+ i.id
174
174
  );
175
175
  }
176
176
  }) })
177
177
  }
178
178
  )
179
179
  ] }),
180
- /* @__PURE__ */ i(
180
+ /* @__PURE__ */ l(
181
181
  "input",
182
182
  {
183
183
  className: ue,
184
- "data-testid": d ? `${d}-form-combobox-input` : "form-combobox-input",
184
+ "data-testid": m ? `${m}-form-combobox-input` : "form-combobox-input",
185
185
  id: e.name,
186
186
  onChange: be,
187
187
  onFocus: ge,
188
- placeholder: le,
189
- ref: b,
188
+ placeholder: ie,
189
+ ref: d,
190
190
  required: T,
191
191
  type: "text",
192
192
  value: F
193
193
  }
194
194
  ),
195
- $ && (x.length > 0 || v) && /* @__PURE__ */ i(
195
+ $ && (x.length > 0 || v) && /* @__PURE__ */ l(
196
196
  Q,
197
197
  {
198
198
  headerIsHidden: !0,
@@ -204,12 +204,12 @@ const Be = ({
204
204
  style: {
205
205
  ...ce
206
206
  },
207
- children: /* @__PURE__ */ m("div", { ref: O, children: [
208
- !oe && /* @__PURE__ */ m("div", { className: "form-field-combobox__search-wrapper", children: [
209
- /* @__PURE__ */ i(
207
+ children: /* @__PURE__ */ u("div", { ref: O, children: [
208
+ !oe && /* @__PURE__ */ u("div", { className: "form-field-combobox__search-wrapper", children: [
209
+ /* @__PURE__ */ l(
210
210
  "input",
211
211
  {
212
- "data-testid": d ? `${d}-form-combobox-search` : "form-combobox-search",
212
+ "data-testid": m ? `${m}-form-combobox-search` : "form-combobox-search",
213
213
  className: "form-field-combobox__search form-field__control",
214
214
  onChange: we,
215
215
  onFocus: () => y(!0),
@@ -217,32 +217,32 @@ const Be = ({
217
217
  type: "text"
218
218
  }
219
219
  ),
220
- /* @__PURE__ */ i(je, {})
220
+ /* @__PURE__ */ l(je, {})
221
221
  ] }),
222
- /* @__PURE__ */ i("ul", { className: "form-field-combobox__dropdown-list", children: v && x.length === 0 ? /* @__PURE__ */ i("li", { className: "form-field-combobox__dropdown-list-option", children: "No data" }, "no data") : x.map((l) => /* @__PURE__ */ i(
222
+ /* @__PURE__ */ l("ul", { className: "form-field-combobox__dropdown-list", children: v && x.length === 0 ? /* @__PURE__ */ l("li", { className: "form-field-combobox__dropdown-list-option", children: "No data" }, "no data") : x.map((i) => /* @__PURE__ */ l(
223
223
  "li",
224
224
  {
225
225
  className: "form-field-combobox__dropdown-list-option",
226
- onClick: () => _e(l),
227
- children: l.label
226
+ onClick: () => _e(i),
227
+ children: i.label
228
228
  },
229
- l.id
229
+ i.id
230
230
  )) })
231
231
  ] })
232
232
  }
233
233
  ),
234
- /* @__PURE__ */ m("div", { className: "form-field__icons", children: [
235
- I && !Array.isArray(o.error) && /* @__PURE__ */ i(
234
+ /* @__PURE__ */ u("div", { className: "form-field__icons", children: [
235
+ I && !Array.isArray(o.error) && /* @__PURE__ */ l(
236
236
  Fe,
237
237
  {
238
238
  className: "form-field__warning",
239
- template: /* @__PURE__ */ i(Te, { text: ((s = o.error) == null ? void 0 : s.label) ?? B, warning: !0 }),
240
- children: /* @__PURE__ */ i(qe, {})
239
+ template: /* @__PURE__ */ l(Te, { text: ((s = o.error) == null ? void 0 : s.label) ?? B, warning: !0 }),
240
+ children: /* @__PURE__ */ l(qe, {})
241
241
  }
242
242
  ),
243
- I && Array.isArray(o.error) && /* @__PURE__ */ i("button", { className: "form-field__warning", onClick: ve, children: /* @__PURE__ */ i(Me, {}) })
243
+ I && Array.isArray(o.error) && /* @__PURE__ */ l("button", { className: "form-field__warning", onClick: ve, children: /* @__PURE__ */ l(Me, {}) })
244
244
  ] }),
245
- !q(V) && /* @__PURE__ */ i(ke, { show: A, ref: { refInputContainer: p }, children: pe() })
245
+ !q(V) && /* @__PURE__ */ l(ke, { show: A, ref: { refInputContainer: b }, children: pe() })
246
246
  ] })
247
247
  ]
248
248
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FormCombobox.mjs","sources":["../../../src/lib/components/FormCombobox/FormCombobox.jsx"],"sourcesContent":["/*\nCopyright 2022 Iguazio Systems Ltd.\nLicensed under the Apache License, Version 2.0 (the \"License\") with\nan addition restriction as set forth herein. You may not use this\nfile except in compliance with the License. You may obtain a copy of\nthe License at http://www.apache.org/licenses/LICENSE-2.0.\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\nimplied. See the License for the specific language governing\npermissions and limitations under the License.\nIn addition, you may not use the software for any purposes that are\nillegal under applicable law, and the grant of the foregoing license\nunder the Apache 2.0 license is conditioned upon your compliance with\nsuch restriction.\n*/\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { Field, useField } from 'react-final-form'\nimport { isEmpty } from 'lodash'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\n\nimport OptionsMenu from '../../elements/OptionsMenu/OptionsMenu'\nimport ValidationTemplate from '../../elements/ValidationTemplate/ValidationTemplate'\nimport PopUpDialog from '../PopUpDialog/PopUpDialog'\nimport TextTooltipTemplate from '../TooltipTemplate/TextTooltipTemplate'\nimport Tooltip from '../Tooltip/Tooltip'\n\nimport { checkPatternsValidity } from '../../utils/validation.util'\nimport { useDetectOutsideClick } from '../../hooks'\nimport { COMBOBOX_SELECT_OPTIONS, COMBOBOX_SUGGESTION_LIST, DENSITY } from '../../types'\n\nimport Arrow from '../../images/arrow.svg?react'\nimport SearchIcon from '../../images/search.svg?react'\nimport WarningIcon from '../../images/warning.svg?react'\nimport ExclamationMarkIcon from '../../images/exclamation-mark.svg?react'\n\nimport './formCombobox.scss'\n\nconst FormCombobox = ({\n comboboxClassName = '',\n density = 'normal',\n disabled = false,\n hideSearchInput = false,\n inputDefaultValue = '',\n inputPlaceholder = '',\n invalidText = 'Invalid',\n label = '',\n maxSuggestedMatches = 1,\n name,\n onBlur = null,\n onChange = null,\n onFocus = null,\n required = false,\n rules = [],\n selectDefaultValue = {\n label: '',\n id: '',\n className: ''\n },\n selectOptions,\n selectPlaceholder = '',\n suggestionList = [],\n validator = null,\n withoutBorder = false\n}) => {\n const { input, meta } = useField(name)\n const [inputValue, setInputValue] = useState(inputDefaultValue)\n const [selectValue, setSelectValue] = useState(selectDefaultValue)\n const [dropdownStyle, setDropdownStyle] = useState({\n left: '0px'\n })\n const [showSelectDropdown, setShowSelectDropdown] = useState(false)\n const [showSuggestionList, setShowSuggestionList] = useState(false)\n const [dropdownList, setDropdownList] = useState(suggestionList)\n const [searchIsFocused, setSearchIsFocused] = useState(false)\n const [isInvalid, setIsInvalid] = useState(false)\n const [validationRules, setValidationRules] = useState(rules)\n const [showValidationRules, setShowValidationRules] = useState(false)\n const comboboxRef = useRef()\n const selectRef = useRef()\n const inputRef = useRef()\n const suggestionListRef = useRef()\n useDetectOutsideClick(comboboxRef, () => setShowValidationRules(false))\n\n const labelClassNames = classnames('form-field__label', disabled && 'form-field__label-disabled')\n const inputClassNames = classnames(\n 'form-field-combobox__input',\n selectValue.id.length === 0 && 'form-field-combobox__input_hidden'\n )\n\n useEffect(() => {\n setValidationRules(prevState =>\n prevState.map(rule => ({\n ...rule,\n isValid:\n !meta.error || !Array.isArray(meta.error)\n ? true\n : !meta.error.some(err => err.name === rule.name)\n }))\n )\n }, [meta.error])\n\n useEffect(() => {\n if (!searchIsFocused) {\n if (JSON.stringify(dropdownList) !== JSON.stringify(suggestionList)) {\n setDropdownList(suggestionList)\n }\n }\n }, [dropdownList, suggestionList, searchIsFocused])\n\n useEffect(() => {\n setIsInvalid(\n meta.invalid && (meta.validating || meta.modified || (meta.submitFailed && meta.touched))\n )\n }, [meta.invalid, meta.modified, meta.submitFailed, meta.touched, meta.validating])\n\n const handleOutsideClick = useCallback(\n event => {\n if (\n comboboxRef.current &&\n !comboboxRef.current.contains(event.target) &&\n suggestionListRef.current &&\n !suggestionListRef.current.contains(event.target)\n ) {\n setSearchIsFocused(false)\n setShowSelectDropdown(false)\n setShowSuggestionList(false)\n input.onBlur(new Event('blur'))\n onBlur && onBlur(input.value)\n }\n },\n [input, onBlur]\n )\n\n const handleScroll = event => {\n if (comboboxRef.current && comboboxRef.current.contains(event.target)) return\n\n if (\n !event.target.closest('.pop-up-dialog') &&\n !event.target.classList.contains('form-field-combobox')\n ) {\n setShowValidationRules(false)\n setShowSelectDropdown(false)\n setShowSuggestionList(false)\n inputRef.current.blur()\n }\n }\n\n useEffect(() => {\n window.addEventListener('click', handleOutsideClick)\n\n return () => {\n window.removeEventListener('click', handleOutsideClick)\n }\n }, [handleOutsideClick])\n\n useEffect(() => {\n if (showValidationRules || showSelectDropdown || showSuggestionList) {\n window.addEventListener('scroll', handleScroll, true)\n }\n return () => {\n window.removeEventListener('scroll', handleScroll, true)\n }\n }, [showSelectDropdown, showSuggestionList, showValidationRules])\n\n const getValidationRules = () => {\n return validationRules.map(({ isValid = false, label, name }) => {\n return <ValidationTemplate valid={isValid} validationMessage={label} key={name} />\n })\n }\n\n const handleInputChange = event => {\n const target = event.target\n\n setDropdownStyle({\n left: `${target.selectionStart < 30 ? target.selectionStart : 30}ch`\n })\n\n if (searchIsFocused) {\n setSearchIsFocused(false)\n }\n\n setInputValue(target.value)\n input.onChange(`${selectValue.id}${target.value}`)\n onChange && onChange(selectValue.id, target.value)\n\n if (dropdownList.length > 0) {\n setShowSuggestionList(true)\n }\n }\n\n const handleSelectOptionClick = selectedOption => {\n if (selectedOption.id !== selectValue.id) {\n setSelectValue(selectedOption)\n input.onChange(selectedOption.id)\n setInputValue('')\n onChange && onChange(selectedOption.id)\n setShowSelectDropdown(false)\n inputRef.current.disabled = false\n inputRef.current.focus()\n }\n }\n\n const handleSuggestionListOptionClick = option => {\n const inputValueItems = inputValue.split('/')\n const valueIndex = inputValueItems.length - 1\n let formattedValue = option.customDelimiter\n ? inputValueItems[valueIndex].replace(new RegExp(`${option.customDelimiter}.*`), '') +\n option.id\n : option.id\n\n if (inputValueItems.length <= maxSuggestedMatches - 1) formattedValue += '/'\n\n inputValueItems[valueIndex] = formattedValue\n\n if (searchIsFocused) {\n setSearchIsFocused(false)\n }\n\n if (inputValueItems.join('/') !== inputValue) {\n setInputValue(inputValueItems.join('/'))\n input.onChange(`${selectValue.id}${inputValueItems.join('/')}`)\n onChange && onChange(selectValue.id, inputValueItems.join('/'))\n }\n\n setShowSuggestionList(false)\n inputRef.current.focus()\n setDropdownStyle({\n left: `${inputRef.current.selectionStart < 30 ? inputRef.current.selectionStart : 30}ch`\n })\n }\n\n const inputOnFocus = () => {\n onFocus && onFocus()\n input.onFocus(new Event('focus'))\n\n if (showSelectDropdown) {\n setShowSelectDropdown(false)\n }\n\n setShowSuggestionList(true)\n }\n\n const suggestionListSearchChange = event => {\n event.persist()\n setDropdownList(() =>\n suggestionList.filter(option => {\n return option.id.startsWith(event.target.value)\n })\n )\n }\n\n const toggleSelect = useCallback(() => {\n if (showSelectDropdown) {\n setShowSelectDropdown(false)\n input.onBlur(new Event('blur'))\n onBlur && onBlur(input.value)\n } else {\n setShowSuggestionList(false)\n setShowValidationRules(false)\n setDropdownStyle({\n left: '0px'\n })\n setShowSelectDropdown(true)\n input.onFocus(new Event('focus'))\n onFocus && onFocus(input.value)\n }\n }, [input, onBlur, onFocus, showSelectDropdown])\n\n const validateField = (value = '', allValues) => {\n const valueToValidate = value.startsWith(selectValue.id)\n ? value.substring(selectValue.id.length)\n : (value ?? '')\n let validationError = null\n\n if (!isEmpty(validationRules)) {\n const [newRules, isValidField] = checkPatternsValidity(rules, valueToValidate)\n const invalidRules = newRules.filter(rule => !rule.isValid)\n\n if (!isValidField) {\n validationError = invalidRules.map(rule => ({ name: rule.name, label: rule.label }))\n }\n }\n\n if (isEmpty(validationError)) {\n if (valueToValidate.startsWith(' ')) {\n validationError = { name: 'empty', label: invalidText }\n } else if (required && valueToValidate.trim().length === 0) {\n validationError = { name: 'required', label: 'This field is required' }\n }\n }\n\n if (!validationError && validator) {\n validationError = validator(value, allValues)\n }\n\n return validationError\n }\n\n const warningIconClick = () => {\n setShowValidationRules(state => !state)\n setShowSelectDropdown(false)\n }\n\n const comboboxClassNames = classnames(\n comboboxClassName,\n 'form-field-combobox',\n 'form-field',\n isInvalid && 'form-field-combobox_invalid'\n )\n const iconClassNames = classnames(\n showSelectDropdown && 'form-field-combobox__icon_open',\n 'form-field-combobox__icon'\n )\n const selectValueClassNames = classnames(selectValue.className)\n\n const wrapperClassNames = classnames(\n 'form-field__wrapper',\n `form-field__wrapper-${density}`,\n disabled && 'form-field__wrapper-disabled',\n isInvalid && 'form-field__wrapper-invalid',\n withoutBorder && 'without-border'\n )\n\n return (\n <Field name={name} validate={validateField}>\n {({ input, meta }) => (\n <div\n className={comboboxClassNames}\n ref={comboboxRef}\n data-testid={name ? `${name}-form-combobox` : 'form-combobox'}\n >\n {label && (\n <div className={labelClassNames}>\n <label data-testid=\"label\" htmlFor={input.name}>\n {label}\n {(required || validationRules.find(rule => rule.name === 'required')) && (\n <span className=\"form-field__label-mandatory\"> *</span>\n )}\n </label>\n </div>\n )}\n <div className={wrapperClassNames}>\n <div className=\"form-field__icons\">\n <Arrow className={iconClassNames} onClick={toggleSelect} />\n </div>\n <div className=\"form-field-combobox__select form-field__control\" ref={selectRef}>\n <div className=\"form-field-combobox__select-header\" onClick={toggleSelect}>\n <span className={selectValueClassNames}>{selectValue.id}</span>\n {selectValue.id.length === 0 && selectPlaceholder && (\n <div className=\"form-field-combobox__placeholder\">\n <label>{selectPlaceholder}</label>\n </div>\n )}\n </div>\n {showSelectDropdown && (\n <PopUpDialog\n headerIsHidden\n customPosition={{\n element: selectRef,\n position: 'bottom-right'\n }}\n className=\"form-field-combobox__dropdown form-field-combobox__dropdown-select\"\n >\n <ul className=\"form-field-combobox__dropdown-list\" ref={suggestionListRef}>\n {selectOptions.map(option => {\n if (!option.hidden) {\n const selectOptionClassNames = classnames(\n 'form-field-combobox__dropdown-list-option',\n option.className\n )\n\n return (\n <li\n className={selectOptionClassNames}\n key={option.id}\n onClick={() => handleSelectOptionClick(option)}\n >\n {option.label}\n </li>\n )\n }\n })}\n </ul>\n </PopUpDialog>\n )}\n </div>\n <input\n className={inputClassNames}\n data-testid={name ? `${name}-form-combobox-input` : 'form-combobox-input'}\n id={input.name}\n onChange={handleInputChange}\n onFocus={inputOnFocus}\n placeholder={inputPlaceholder}\n ref={inputRef}\n required={required}\n type=\"text\"\n value={inputValue}\n />\n {showSuggestionList && (dropdownList.length > 0 || searchIsFocused) && (\n <PopUpDialog\n headerIsHidden\n customPosition={{\n element: selectRef,\n position: 'bottom-right'\n }}\n className=\"form-field-combobox__dropdown form-field-combobox__dropdown-suggestions\"\n style={{\n ...dropdownStyle\n }}\n >\n <div ref={suggestionListRef}>\n {!hideSearchInput && (\n <div className=\"form-field-combobox__search-wrapper\">\n <input\n data-testid={name ? `${name}-form-combobox-search` : 'form-combobox-search'}\n className=\"form-field-combobox__search form-field__control\"\n onChange={suggestionListSearchChange}\n onFocus={() => setSearchIsFocused(true)}\n placeholder=\"Type to search\"\n type=\"text\"\n />\n <SearchIcon />\n </div>\n )}\n <ul className=\"form-field-combobox__dropdown-list\">\n {searchIsFocused && dropdownList.length === 0 ? (\n <li className=\"form-field-combobox__dropdown-list-option\" key=\"no data\">\n No data\n </li>\n ) : (\n dropdownList.map(value => (\n <li\n className=\"form-field-combobox__dropdown-list-option\"\n key={value.id}\n onClick={() => handleSuggestionListOptionClick(value)}\n >\n {value.label}\n </li>\n ))\n )}\n </ul>\n </div>\n </PopUpDialog>\n )}\n <div className=\"form-field__icons\">\n {isInvalid && !Array.isArray(meta.error) && (\n <Tooltip\n className=\"form-field__warning\"\n template={<TextTooltipTemplate text={meta.error?.label ?? invalidText} warning />}\n >\n <ExclamationMarkIcon />\n </Tooltip>\n )}\n {isInvalid && Array.isArray(meta.error) && (\n <button className=\"form-field__warning\" onClick={warningIconClick}>\n <WarningIcon />\n </button>\n )}\n </div>\n {!isEmpty(validationRules) && (\n <OptionsMenu show={showValidationRules} ref={{ refInputContainer: comboboxRef }}>\n {getValidationRules()}\n </OptionsMenu>\n )}\n </div>\n </div>\n )}\n </Field>\n )\n}\n\nFormCombobox.propTypes = {\n comboboxClassName: PropTypes.string,\n density: DENSITY,\n disabled: PropTypes.bool,\n hideSearchInput: PropTypes.bool,\n inputDefaultValue: PropTypes.string,\n inputPlaceholder: PropTypes.string,\n invalidText: PropTypes.string,\n label: PropTypes.string,\n maxSuggestedMatches: PropTypes.number,\n name: PropTypes.string.isRequired,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n required: PropTypes.bool,\n rules: PropTypes.array,\n selectDefaultValue: PropTypes.shape({}),\n selectOptions: COMBOBOX_SELECT_OPTIONS.isRequired,\n selectPlaceholder: PropTypes.string,\n suggestionList: COMBOBOX_SUGGESTION_LIST,\n validator: PropTypes.func,\n withoutBorder: PropTypes.bool\n}\n\nexport default FormCombobox\n"],"names":["FormCombobox","comboboxClassName","density","disabled","hideSearchInput","inputDefaultValue","inputPlaceholder","invalidText","label","maxSuggestedMatches","name","onBlur","onChange","onFocus","required","rules","selectDefaultValue","selectOptions","selectPlaceholder","suggestionList","validator","withoutBorder","input","meta","useField","inputValue","setInputValue","useState","selectValue","setSelectValue","dropdownStyle","setDropdownStyle","showSelectDropdown","setShowSelectDropdown","showSuggestionList","setShowSuggestionList","dropdownList","setDropdownList","searchIsFocused","setSearchIsFocused","isInvalid","setIsInvalid","validationRules","setValidationRules","showValidationRules","setShowValidationRules","comboboxRef","useRef","selectRef","inputRef","suggestionListRef","useDetectOutsideClick","labelClassNames","classnames","inputClassNames","useEffect","prevState","rule","err","handleOutsideClick","useCallback","event","handleScroll","getValidationRules","isValid","ValidationTemplate","handleInputChange","target","handleSelectOptionClick","selectedOption","handleSuggestionListOptionClick","option","inputValueItems","valueIndex","formattedValue","inputOnFocus","suggestionListSearchChange","toggleSelect","validateField","value","allValues","valueToValidate","validationError","isEmpty","newRules","isValidField","checkPatternsValidity","invalidRules","warningIconClick","state","comboboxClassNames","iconClassNames","selectValueClassNames","wrapperClassNames","jsx","Field","jsxs","Arrow","PopUpDialog","selectOptionClassNames","SearchIcon","Tooltip","TextTooltipTemplate","ExclamationMarkIcon","WarningIcon","OptionsMenu","PropTypes","DENSITY","COMBOBOX_SELECT_OPTIONS","COMBOBOX_SUGGESTION_LIST"],"mappings":"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"}
1
+ {"version":3,"file":"FormCombobox.mjs","sources":["../../../src/lib/components/FormCombobox/FormCombobox.jsx"],"sourcesContent":["/*\nCopyright 2022 Iguazio Systems Ltd.\nLicensed under the Apache License, Version 2.0 (the \"License\") with\nan addition restriction as set forth herein. You may not use this\nfile except in compliance with the License. You may obtain a copy of\nthe License at http://www.apache.org/licenses/LICENSE-2.0.\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\nimplied. See the License for the specific language governing\npermissions and limitations under the License.\nIn addition, you may not use the software for any purposes that are\nillegal under applicable law, and the grant of the foregoing license\nunder the Apache 2.0 license is conditioned upon your compliance with\nsuch restriction.\n*/\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { Field, useField } from 'react-final-form'\nimport { isEmpty } from 'lodash'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\n\nimport OptionsMenu from '../../elements/OptionsMenu/OptionsMenu'\nimport ValidationTemplate from '../../elements/ValidationTemplate/ValidationTemplate'\nimport PopUpDialog from '../PopUpDialog/PopUpDialog'\nimport TextTooltipTemplate from '../TooltipTemplate/TextTooltipTemplate'\nimport Tooltip from '../Tooltip/Tooltip'\n\nimport { checkPatternsValidity } from '../../utils/validation.util'\nimport { useDetectOutsideClick } from '../../hooks'\nimport { COMBOBOX_SELECT_OPTIONS, COMBOBOX_SUGGESTION_LIST, DENSITY } from '../../types'\n\nimport Arrow from '../../images/arrow.svg?react'\nimport SearchIcon from '../../images/search.svg?react'\nimport WarningIcon from '../../images/warning.svg?react'\nimport ExclamationMarkIcon from '../../images/exclamation-mark.svg?react'\n\nimport './formCombobox.scss'\n\nconst FormCombobox = ({\n comboboxClassName = '',\n density = 'normal',\n disabled = false,\n hideSearchInput = false,\n inputDefaultValue = '',\n inputPlaceholder = '',\n invalidText = 'Invalid',\n label = '',\n maxSuggestedMatches = 1,\n name,\n onBlur = null,\n onChange = null,\n onFocus = null,\n required = false,\n rules = [],\n selectDefaultValue = {\n label: '',\n id: '',\n className: ''\n },\n selectOptions,\n selectPlaceholder = '',\n suggestionList = [],\n validator = null,\n withoutBorder = false\n}) => {\n const { input, meta } = useField(name)\n const [inputValue, setInputValue] = useState(inputDefaultValue)\n const [selectValue, setSelectValue] = useState(selectDefaultValue)\n const [dropdownStyle, setDropdownStyle] = useState({\n left: '0px'\n })\n const [showSelectDropdown, setShowSelectDropdown] = useState(false)\n const [showSuggestionList, setShowSuggestionList] = useState(false)\n const [dropdownList, setDropdownList] = useState(suggestionList)\n const [searchIsFocused, setSearchIsFocused] = useState(false)\n const [isInvalid, setIsInvalid] = useState(false)\n const [validationRules, setValidationRules] = useState(rules)\n const [showValidationRules, setShowValidationRules] = useState(false)\n const comboboxRef = useRef()\n const selectRef = useRef()\n const inputRef = useRef()\n const suggestionListRef = useRef()\n useDetectOutsideClick(comboboxRef, () => setShowValidationRules(false))\n\n const labelClassNames = classnames('form-field__label', disabled && 'form-field__label-disabled')\n const inputClassNames = classnames(\n 'form-field-combobox__input',\n selectValue.id.length === 0 && 'form-field-combobox__input_hidden'\n )\n\n useEffect(() => {\n setValidationRules(prevState =>\n prevState.map(rule => ({\n ...rule,\n isValid:\n !meta.error || !Array.isArray(meta.error)\n ? true\n : !meta.error.some(err => err.name === rule.name)\n }))\n )\n }, [meta.error])\n\n useEffect(() => {\n if (!searchIsFocused) {\n if (JSON.stringify(dropdownList) !== JSON.stringify(suggestionList)) {\n setDropdownList(suggestionList)\n }\n }\n }, [dropdownList, suggestionList, searchIsFocused])\n\n useEffect(() => {\n setIsInvalid(\n meta.invalid && (meta.validating || meta.modified || (meta.submitFailed && meta.touched))\n )\n }, [meta.invalid, meta.modified, meta.submitFailed, meta.touched, meta.validating])\n\n const handleOutsideClick = useCallback(\n event => {\n if (\n comboboxRef.current &&\n !comboboxRef.current.contains(event.target) &&\n suggestionListRef.current &&\n !suggestionListRef.current.contains(event.target)\n ) {\n setSearchIsFocused(false)\n setShowSelectDropdown(false)\n setShowSuggestionList(false)\n input.onBlur(new Event('blur'))\n onBlur && onBlur(input.value)\n }\n },\n [input, onBlur]\n )\n\n const handleScroll = event => {\n if (comboboxRef.current && comboboxRef.current.contains(event.target)) return\n\n if (\n !event.target.closest('.pop-up-dialog') &&\n !event.target.classList.contains('form-field-combobox')\n ) {\n setShowValidationRules(false)\n setShowSelectDropdown(false)\n setShowSuggestionList(false)\n inputRef.current.blur()\n }\n }\n\n useEffect(() => {\n window.addEventListener('click', handleOutsideClick)\n\n return () => {\n window.removeEventListener('click', handleOutsideClick)\n }\n }, [handleOutsideClick])\n\n useEffect(() => {\n if (showValidationRules || showSelectDropdown || showSuggestionList) {\n window.addEventListener('scroll', handleScroll, true)\n }\n return () => {\n window.removeEventListener('scroll', handleScroll, true)\n }\n }, [showSelectDropdown, showSuggestionList, showValidationRules])\n\n const getValidationRules = () => {\n return validationRules.map(({ isValid = false, label, name }) => {\n return <ValidationTemplate valid={isValid} validationMessage={label} key={name} />\n })\n }\n\n const handleInputChange = event => {\n const target = event.target\n\n setDropdownStyle({\n left: `${target.selectionStart < 30 ? target.selectionStart : 30}ch`\n })\n\n if (searchIsFocused) {\n setSearchIsFocused(false)\n }\n\n setInputValue(target.value)\n input.onChange(`${selectValue.id}${target.value}`)\n onChange && onChange(selectValue.id, target.value)\n\n if (dropdownList.length > 0) {\n setShowSuggestionList(true)\n }\n }\n\n const handleSelectOptionClick = selectedOption => {\n if (selectedOption.id !== selectValue.id) {\n setSelectValue(selectedOption)\n input.onChange(selectedOption.id)\n setInputValue('')\n onChange && onChange(selectedOption.id)\n setShowSelectDropdown(false)\n inputRef.current.disabled = false\n inputRef.current.focus()\n } else {\n setShowSelectDropdown(false)\n inputRef.current.disabled = false\n inputRef.current.focus()\n }\n }\n\n const handleSuggestionListOptionClick = option => {\n const inputValueItems = inputValue.split('/')\n const valueIndex = inputValueItems.length - 1\n let formattedValue = option.customDelimiter\n ? inputValueItems[valueIndex].replace(new RegExp(`${option.customDelimiter}.*`), '') +\n option.id\n : option.id\n\n if (inputValueItems.length <= maxSuggestedMatches - 1) formattedValue += '/'\n\n inputValueItems[valueIndex] = formattedValue\n\n if (searchIsFocused) {\n setSearchIsFocused(false)\n }\n\n if (inputValueItems.join('/') !== inputValue) {\n setInputValue(inputValueItems.join('/'))\n input.onChange(`${selectValue.id}${inputValueItems.join('/')}`)\n onChange && onChange(selectValue.id, inputValueItems.join('/'))\n }\n\n setShowSuggestionList(false)\n inputRef.current.focus()\n setDropdownStyle({\n left: `${inputRef.current.selectionStart < 30 ? inputRef.current.selectionStart : 30}ch`\n })\n }\n\n const inputOnFocus = () => {\n onFocus && onFocus()\n input.onFocus(new Event('focus'))\n\n if (showSelectDropdown) {\n setShowSelectDropdown(false)\n }\n\n setShowSuggestionList(true)\n }\n\n const suggestionListSearchChange = event => {\n event.persist()\n setDropdownList(() =>\n suggestionList.filter(option => {\n return option.id.startsWith(event.target.value)\n })\n )\n }\n\n const toggleSelect = useCallback(() => {\n if (showSelectDropdown) {\n setShowSelectDropdown(false)\n input.onBlur(new Event('blur'))\n onBlur && onBlur(input.value)\n } else {\n setShowSuggestionList(false)\n setShowValidationRules(false)\n setDropdownStyle({\n left: '0px'\n })\n setShowSelectDropdown(true)\n input.onFocus(new Event('focus'))\n onFocus && onFocus(input.value)\n }\n }, [input, onBlur, onFocus, showSelectDropdown])\n\n const validateField = (value = '', allValues) => {\n const valueToValidate = value.startsWith(selectValue.id)\n ? value.substring(selectValue.id.length)\n : (value ?? '')\n let validationError = null\n\n if (!isEmpty(validationRules)) {\n const [newRules, isValidField] = checkPatternsValidity(rules, valueToValidate)\n const invalidRules = newRules.filter(rule => !rule.isValid)\n\n if (!isValidField) {\n validationError = invalidRules.map(rule => ({ name: rule.name, label: rule.label }))\n }\n }\n\n if (isEmpty(validationError)) {\n if (valueToValidate.startsWith(' ')) {\n validationError = { name: 'empty', label: invalidText }\n } else if (required && valueToValidate.trim().length === 0) {\n validationError = { name: 'required', label: 'This field is required' }\n }\n }\n\n if (!validationError && validator) {\n validationError = validator(value, allValues)\n }\n\n return validationError\n }\n\n const warningIconClick = () => {\n setShowValidationRules(state => !state)\n setShowSelectDropdown(false)\n }\n\n const comboboxClassNames = classnames(\n comboboxClassName,\n 'form-field-combobox',\n 'form-field',\n isInvalid && 'form-field-combobox_invalid'\n )\n const iconClassNames = classnames(\n showSelectDropdown && 'form-field-combobox__icon_open',\n 'form-field-combobox__icon'\n )\n const selectValueClassNames = classnames(selectValue.className)\n\n const wrapperClassNames = classnames(\n 'form-field__wrapper',\n `form-field__wrapper-${density}`,\n disabled && 'form-field__wrapper-disabled',\n isInvalid && 'form-field__wrapper-invalid',\n withoutBorder && 'without-border'\n )\n\n return (\n <Field name={name} validate={validateField}>\n {({ input, meta }) => (\n <div\n className={comboboxClassNames}\n ref={comboboxRef}\n data-testid={name ? `${name}-form-combobox` : 'form-combobox'}\n >\n {label && (\n <div className={labelClassNames}>\n <label data-testid=\"label\" htmlFor={input.name}>\n {label}\n {(required || validationRules.find(rule => rule.name === 'required')) && (\n <span className=\"form-field__label-mandatory\"> *</span>\n )}\n </label>\n </div>\n )}\n <div className={wrapperClassNames}>\n <div className=\"form-field__icons\">\n <Arrow className={iconClassNames} onClick={toggleSelect} />\n </div>\n <div className=\"form-field-combobox__select form-field__control\" ref={selectRef}>\n <div className=\"form-field-combobox__select-header\" onClick={toggleSelect}>\n <span className={selectValueClassNames}>{selectValue.id}</span>\n {selectValue.id.length === 0 && selectPlaceholder && (\n <div className=\"form-field-combobox__placeholder\">\n <label>{selectPlaceholder}</label>\n </div>\n )}\n </div>\n {showSelectDropdown && (\n <PopUpDialog\n headerIsHidden\n customPosition={{\n element: selectRef,\n position: 'bottom-right'\n }}\n className=\"form-field-combobox__dropdown form-field-combobox__dropdown-select\"\n >\n <ul className=\"form-field-combobox__dropdown-list\" ref={suggestionListRef}>\n {selectOptions.map(option => {\n if (!option.hidden) {\n const selectOptionClassNames = classnames(\n 'form-field-combobox__dropdown-list-option',\n option.className\n )\n\n return (\n <li\n className={selectOptionClassNames}\n key={option.id}\n onClick={() => handleSelectOptionClick(option)}\n >\n {option.label}\n </li>\n )\n }\n })}\n </ul>\n </PopUpDialog>\n )}\n </div>\n <input\n className={inputClassNames}\n data-testid={name ? `${name}-form-combobox-input` : 'form-combobox-input'}\n id={input.name}\n onChange={handleInputChange}\n onFocus={inputOnFocus}\n placeholder={inputPlaceholder}\n ref={inputRef}\n required={required}\n type=\"text\"\n value={inputValue}\n />\n {showSuggestionList && (dropdownList.length > 0 || searchIsFocused) && (\n <PopUpDialog\n headerIsHidden\n customPosition={{\n element: selectRef,\n position: 'bottom-right'\n }}\n className=\"form-field-combobox__dropdown form-field-combobox__dropdown-suggestions\"\n style={{\n ...dropdownStyle\n }}\n >\n <div ref={suggestionListRef}>\n {!hideSearchInput && (\n <div className=\"form-field-combobox__search-wrapper\">\n <input\n data-testid={name ? `${name}-form-combobox-search` : 'form-combobox-search'}\n className=\"form-field-combobox__search form-field__control\"\n onChange={suggestionListSearchChange}\n onFocus={() => setSearchIsFocused(true)}\n placeholder=\"Type to search\"\n type=\"text\"\n />\n <SearchIcon />\n </div>\n )}\n <ul className=\"form-field-combobox__dropdown-list\">\n {searchIsFocused && dropdownList.length === 0 ? (\n <li className=\"form-field-combobox__dropdown-list-option\" key=\"no data\">\n No data\n </li>\n ) : (\n dropdownList.map(value => (\n <li\n className=\"form-field-combobox__dropdown-list-option\"\n key={value.id}\n onClick={() => handleSuggestionListOptionClick(value)}\n >\n {value.label}\n </li>\n ))\n )}\n </ul>\n </div>\n </PopUpDialog>\n )}\n <div className=\"form-field__icons\">\n {isInvalid && !Array.isArray(meta.error) && (\n <Tooltip\n className=\"form-field__warning\"\n template={<TextTooltipTemplate text={meta.error?.label ?? invalidText} warning />}\n >\n <ExclamationMarkIcon />\n </Tooltip>\n )}\n {isInvalid && Array.isArray(meta.error) && (\n <button className=\"form-field__warning\" onClick={warningIconClick}>\n <WarningIcon />\n </button>\n )}\n </div>\n {!isEmpty(validationRules) && (\n <OptionsMenu show={showValidationRules} ref={{ refInputContainer: comboboxRef }}>\n {getValidationRules()}\n </OptionsMenu>\n )}\n </div>\n </div>\n )}\n </Field>\n )\n}\n\nFormCombobox.propTypes = {\n comboboxClassName: PropTypes.string,\n density: DENSITY,\n disabled: PropTypes.bool,\n hideSearchInput: PropTypes.bool,\n inputDefaultValue: PropTypes.string,\n inputPlaceholder: PropTypes.string,\n invalidText: PropTypes.string,\n label: PropTypes.string,\n maxSuggestedMatches: PropTypes.number,\n name: PropTypes.string.isRequired,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n required: PropTypes.bool,\n rules: PropTypes.array,\n selectDefaultValue: PropTypes.shape({}),\n selectOptions: COMBOBOX_SELECT_OPTIONS.isRequired,\n selectPlaceholder: PropTypes.string,\n suggestionList: COMBOBOX_SUGGESTION_LIST,\n validator: PropTypes.func,\n withoutBorder: PropTypes.bool\n}\n\nexport default FormCombobox\n"],"names":["FormCombobox","comboboxClassName","density","disabled","hideSearchInput","inputDefaultValue","inputPlaceholder","invalidText","label","maxSuggestedMatches","name","onBlur","onChange","onFocus","required","rules","selectDefaultValue","selectOptions","selectPlaceholder","suggestionList","validator","withoutBorder","input","meta","useField","inputValue","setInputValue","useState","selectValue","setSelectValue","dropdownStyle","setDropdownStyle","showSelectDropdown","setShowSelectDropdown","showSuggestionList","setShowSuggestionList","dropdownList","setDropdownList","searchIsFocused","setSearchIsFocused","isInvalid","setIsInvalid","validationRules","setValidationRules","showValidationRules","setShowValidationRules","comboboxRef","useRef","selectRef","inputRef","suggestionListRef","useDetectOutsideClick","labelClassNames","classnames","inputClassNames","useEffect","prevState","rule","err","handleOutsideClick","useCallback","event","handleScroll","getValidationRules","isValid","ValidationTemplate","handleInputChange","target","handleSelectOptionClick","selectedOption","handleSuggestionListOptionClick","option","inputValueItems","valueIndex","formattedValue","inputOnFocus","suggestionListSearchChange","toggleSelect","validateField","value","allValues","valueToValidate","validationError","isEmpty","newRules","isValidField","checkPatternsValidity","invalidRules","warningIconClick","state","comboboxClassNames","iconClassNames","selectValueClassNames","wrapperClassNames","jsx","Field","jsxs","Arrow","PopUpDialog","selectOptionClassNames","SearchIcon","Tooltip","TextTooltipTemplate","ExclamationMarkIcon","WarningIcon","OptionsMenu","PropTypes","DENSITY","COMBOBOX_SELECT_OPTIONS","COMBOBOX_SUGGESTION_LIST"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export default LoadButton;
2
+ declare function LoadButton({ className, label, variant, ...restProps }: {
3
+ [x: string]: any;
4
+ className?: string;
5
+ label?: string;
6
+ variant?: string;
7
+ }, ref: any): JSX.Element;
8
+ declare namespace LoadButton {
9
+ let displayName: string;
10
+ namespace propTypes {
11
+ let className: any;
12
+ let label: any;
13
+ let variant: any;
14
+ }
15
+ }
16
+ //# sourceMappingURL=LoadButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadButton.d.ts","sourceRoot":"","sources":["../../../src/lib/components/LoadButton/LoadButton.jsx"],"names":[],"mappings":";AA2BA;;;;;0BAWC"}
@@ -0,0 +1,22 @@
1
+ import { jsx as p } from "react/jsx-runtime";
2
+ import i from "react";
3
+ import t from "prop-types";
4
+ import d from "classnames";
5
+ import { TERTIARY_BUTTON as a, PRIMARY_BUTTON as f, SECONDARY_BUTTON as T } from "../../constants.mjs";
6
+ /* empty css */
7
+ let o = ({ className: e = "", label: r = "Load button", variant: n = a, ...s }, m) => {
8
+ const l = d("btn-load", `btn-load-${n}`, e);
9
+ return /* @__PURE__ */ p("button", { ref: m, ...s, className: l, children: r });
10
+ };
11
+ o = i.forwardRef(o);
12
+ o.displayName = "LoadButton";
13
+ o.propTypes = {
14
+ className: t.string,
15
+ label: t.oneOfType([t.string, t.element]),
16
+ variant: t.oneOf([f, T, a]).isRequired
17
+ };
18
+ const O = o;
19
+ export {
20
+ O as default
21
+ };
22
+ //# sourceMappingURL=LoadButton.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadButton.mjs","sources":["../../../src/lib/components/LoadButton/LoadButton.jsx"],"sourcesContent":["/*\nCopyright 2019 Iguazio Systems Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\") with\nan addition restriction as set forth herein. You may not use this\nfile except in compliance with the License. You may obtain a copy of\nthe License at http://www.apache.org/licenses/LICENSE-2.0.\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\nimplied. See the License for the specific language governing\npermissions and limitations under the License.\n\nIn addition, you may not use the software for any purposes that are\nillegal under applicable law, and the grant of the foregoing license\nunder the Apache 2.0 license is conditioned upon your compliance with\nsuch restriction.\n*/\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport classNames from 'classnames'\n\nimport { PRIMARY_BUTTON, SECONDARY_BUTTON, TERTIARY_BUTTON } from '../../constants'\n\nimport './loadButton.scss'\n\nlet LoadButton = (\n { className = '', label = 'Load button', variant = TERTIARY_BUTTON, ...restProps },\n ref\n) => {\n const buttonClassName = classNames('btn-load', `btn-load-${variant}`, className)\n\n return (\n <button ref={ref} {...restProps} className={buttonClassName}>\n {label}\n </button>\n )\n}\n\nLoadButton = React.forwardRef(LoadButton)\n\nLoadButton.displayName = 'LoadButton'\n\nLoadButton.propTypes = {\n className: PropTypes.string,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n variant: PropTypes.oneOf([PRIMARY_BUTTON, SECONDARY_BUTTON, TERTIARY_BUTTON]).isRequired\n}\n\nexport default LoadButton\n"],"names":["LoadButton","className","label","variant","TERTIARY_BUTTON","restProps","ref","buttonClassName","classNames","React","PropTypes","PRIMARY_BUTTON","SECONDARY_BUTTON","LoadButton$1"],"mappings":";;;;;;AA2BA,IAAIA,IAAa,CACf,EAAE,WAAAC,IAAY,IAAI,OAAAC,IAAQ,eAAe,SAAAC,IAAUC,GAAiB,GAAGC,EAAU,GACjFC,MACG;AACH,QAAMC,IAAkBC,EAAW,YAAY,YAAYL,CAAO,IAAIF,CAAS;AAE/E,2BACG,UAAO,EAAA,KAAAK,GAAW,GAAGD,GAAW,WAAWE,GACzC,UACHL,GAAA;AAEJ;AAEAF,IAAaS,EAAM,WAAWT,CAAU;AAExCA,EAAW,cAAc;AAEzBA,EAAW,YAAY;AAAA,EACrB,WAAWU,EAAU;AAAA,EACrB,OAAOA,EAAU,UAAU,CAACA,EAAU,QAAQA,EAAU,OAAO,CAAC;AAAA,EAChE,SAASA,EAAU,MAAM,CAACC,GAAgBC,GAAkBR,CAAe,CAAC,EAAE;AAChF;AAEA,MAAAS,IAAeb;"}
@@ -0,0 +1,10 @@
1
+ declare namespace _default {
2
+ export let title: string;
3
+ export { LoadButton as component };
4
+ }
5
+ export default _default;
6
+ export const PrimaryLoader: any;
7
+ export const SecondaryLoader: any;
8
+ export const TertiaryLoader: any;
9
+ import LoadButton from './LoadButton';
10
+ //# sourceMappingURL=LoadButton.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadButton.stories.d.ts","sourceRoot":"","sources":["../../../src/lib/components/LoadButton/LoadButton.stories.js"],"names":[],"mappings":";;;;;AAoCA,gCAA8C;AAO9C,kCAAgD;AAOhD,iCAA+C;uBA7BxB,cAAc"}
@@ -0,0 +1,3 @@
1
+ declare const _default: any;
2
+ export default _default;
3
+ //# sourceMappingURL=Loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Loader.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Loader/Loader.jsx"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ import { jsx as a } from "react/jsx-runtime";
2
+ import d from "react";
3
+ import m from "classnames";
4
+ import o from "prop-types";
5
+ /* empty css */
6
+ const e = ({ secondary: r = !1, section: s = !1, small: l = !1 }) => {
7
+ const t = m(
8
+ "loader-wrapper",
9
+ s && "section-loader",
10
+ l && "small-loader",
11
+ r && "secondary-loader"
12
+ );
13
+ return /* @__PURE__ */ a("div", { className: t, "data-testid": "loader", children: /* @__PURE__ */ a("div", { className: "loader" }) });
14
+ };
15
+ e.propTypes = {
16
+ secondary: o.bool,
17
+ section: o.bool,
18
+ small: o.bool
19
+ };
20
+ const y = d.memo(e);
21
+ export {
22
+ y as default
23
+ };
24
+ //# sourceMappingURL=Loader.mjs.map