{"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, VISIBLE_CHIPS_MAX_LENGTH } 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    children,\n    chips,\n    editConfig,\n    handleAddNewChip,\n    handleEditChip,\n    handleRemoveChip,\n    handleShowElements,\n    handleToEditMode,\n    isDeletable = false,\n    isEditable = false,\n    name,\n    setChipsSizes,\n    setEditConfig,\n    shortChips = false,\n    showChips,\n    showHiddenChips,\n    validateFields,\n    validationRules = {},\n    visibleChipsMaxLength = null\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    visibleChipsMaxLength === 'all' && 'chips-wrapper_all-visible'\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                            isDeletable={isDeletable}\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                {children}\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  children: PropTypes.node,\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  isDeletable: PropTypes.bool,\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  visibleChipsMaxLength: VISIBLE_CHIPS_MAX_LENGTH\n}\n\nexport default FormChipCellView\n"],"names":["FormChipCellView","chipOptions","chipSizeIsRecalculated","setChipSizeIsRecalculated","children","chips","editConfig","handleAddNewChip","handleEditChip","handleRemoveChip","handleShowElements","handleToEditMode","isDeletable","isEditable","name","setChipsSizes","setEditConfig","shortChips","showChips","showHiddenChips","validateFields","validationRules","visibleChipsMaxLength","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","VISIBLE_CHIPS_MAX_LENGTH","FormChipCellView$1"],"mappings":"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"}