@bigbinary/neeto-tags-frontend 2.2.35-beta1 → 2.3.0-beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/.ready CHANGED
@@ -1 +1 @@
1
- Built at 2026-09-24T09:45:06.949Z
1
+ Built at 2026-10-10T07:03:42.271Z
@@ -3,8 +3,8 @@
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
4
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
5
  var react = require('react');
6
- var neetoAtoms = require('@bigbinary/neeto-atoms');
7
6
  var lucideReact = require('lucide-react');
7
+ var neetoAtoms = require('@bigbinary/neeto-atoms');
8
8
  var neetoCist = require('@bigbinary/neeto-cist');
9
9
  var constants = require('@bigbinary/neeto-commons-frontend/v2/constants');
10
10
  var utils = require('@bigbinary/neeto-commons-frontend/v2/utils');
@@ -351,6 +351,7 @@ var PopoverTagsSelector = function PopoverTagsSelector(_ref) {
351
351
  return /*#__PURE__*/jsxRuntime.jsx("button", {
352
352
  "aria-selected": index === activeIndex,
353
353
  className: optionClassName(index === activeIndex),
354
+ "data-testid": "".concat(neetoCist.hyphenate(tag.label), "-select-option"),
354
355
  id: optionId(index),
355
356
  role: "option",
356
357
  type: "button",
@@ -368,6 +369,7 @@ var PopoverTagsSelector = function PopoverTagsSelector(_ref) {
368
369
  }), canCreate && /*#__PURE__*/jsxRuntime.jsxs("button", {
369
370
  "aria-selected": activeIndex === filteredTags.length,
370
371
  className: optionClassName(activeIndex === filteredTags.length),
372
+ "data-testid": "create-new-tag-select-option",
371
373
  id: optionId(filteredTags.length),
372
374
  role: "option",
373
375
  type: "button",
@@ -491,6 +493,7 @@ var TagsSelector = function TagsSelector(_ref) {
491
493
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
492
494
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
493
495
  var Tags = function Tags(_ref) {
496
+ var _ref3;
494
497
  var _ref$title = _ref.title,
495
498
  title = _ref$title === void 0 ? "" : _ref$title,
496
499
  allTags = _ref.allTags,
@@ -563,9 +566,11 @@ var Tags = function Tags(_ref) {
563
566
  onTagCreate(tagName);
564
567
  };
565
568
 
566
- // Fall back to `selectProps.dataTestId` so consumers that only targeted the
567
- // inline select can keep addressing the picker after the popover default.
568
- var resolvedDataTestId = dataTestId !== null && dataTestId !== void 0 ? dataTestId : selectProps.dataTestId;
569
+ // Fall back to a `dataTestId` carried on `selectProps` so consumers that only
570
+ // targeted the inline select can keep addressing the picker after the popover
571
+ // default. Accept both the camelCase key and the kebab-case `data-testid`
572
+ // React prop key, since consumers use either.
573
+ var resolvedDataTestId = (_ref3 = dataTestId !== null && dataTestId !== void 0 ? dataTestId : selectProps.dataTestId) !== null && _ref3 !== void 0 ? _ref3 : selectProps["data-testid"];
569
574
  var isPopoverPicker = pickerVariant === "popover";
570
575
  // A settings gear in the title bar (always shown in a metadata block) acts as
571
576
  // the popover's trigger and positioning anchor. When present, the popover
@@ -1 +1 @@
1
- {"version":3,"file":"TagsComponent.js","sources":["../../../app/javascript/src/v2/components/Tags/constants.js","../../../app/javascript/src/v2/components/Tags/Title.jsx","../../../app/javascript/src/v2/components/Tags/TitleActionBlock.jsx","../../../app/javascript/src/v2/components/Tags/Container.jsx","../../../app/javascript/src/v2/components/Tags/PopoverTagsSelector.jsx","../../../app/javascript/src/v2/components/Tags/TagsList.jsx","../../../app/javascript/src/v2/components/Tags/TagsSelector.jsx","../../../app/javascript/src/v2/components/Tags/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\n\nexport const KEYBOARD_SHORTCUTS = {\n addTag: {\n sequence: \"t\",\n description: t(\"neetoTags.shortcuts.addTag\"),\n },\n};\n\nexport const POPOVER_PANEL_WIDTH = 256;\nexport const POPOVER_VIEWPORT_MARGIN = 8;\nexport const POPOVER_TRIGGER_GAP = 4;\n","import { useEffect, useState } from \"react\";\n\nimport { Label, Spinner } from \"@bigbinary/neeto-atoms\";\nimport { Check } from \"lucide-react\";\nimport { PLURAL } from \"neetocommons/v2/constants\";\nimport { useTranslation } from \"react-i18next\";\n\nconst Title = ({ titleProps = {}, title, isUpdating, isLoading }) => {\n const { t } = useTranslation();\n const tagsTitle = title || t(\"neetoTags.common.tag\", PLURAL);\n\n const [didStartUpdate, setDidStartUpdate] = useState(false);\n const [isCheckIconVisible, setIsCheckIconVisible] = useState(false);\n\n useEffect(() => {\n if (!isUpdating) return;\n\n setDidStartUpdate(true);\n }, [isUpdating]);\n\n useEffect(() => {\n if (isUpdating || !didStartUpdate) return;\n\n setIsCheckIconVisible(true);\n setDidStartUpdate(false);\n setTimeout(() => {\n setIsCheckIconVisible(false);\n }, 5000);\n }, [didStartUpdate, isUpdating]);\n\n return (\n <div className=\"flex items-center gap-2\">\n <Label {...titleProps}>{tagsTitle}</Label>\n <div className=\"inline-flex h-6 items-center\">\n {(isUpdating || isLoading) && <Spinner />}\n {!isUpdating && isCheckIconVisible && (\n <Check className=\"text-success-solid\" size={20} />\n )}\n </div>\n </div>\n );\n};\n\nexport default Title;\n","import { Button } from \"@bigbinary/neeto-atoms\";\nimport { Settings } from \"lucide-react\";\nimport { not } from \"ramda\";\n\nconst TitleActionBlock = ({\n isDisabled,\n setIsTagsDropdownVisible,\n anchorRef,\n}) => (\n <span className=\"inline-flex\" ref={anchorRef}>\n <Button\n data-testid=\"neeto-tags-add-tag-button\"\n disabled={isDisabled}\n icon={Settings}\n size=\"icon-sm\"\n variant=\"ghost\"\n onClick={event => {\n event.stopPropagation();\n setIsTagsDropdownVisible(not);\n }}\n />\n </span>\n);\n\nexport default TitleActionBlock;\n","import classNames from \"classnames\";\nimport { not } from \"ramda\";\n\nimport Title from \"./Title\";\nimport TitleActionBlock from \"./TitleActionBlock\";\n\nconst Container = ({\n isMetadataBlock,\n containerProps,\n actionBlockProps,\n titleComponentProps,\n children,\n isTagsBodyVisible,\n bodyProps,\n isHeaderInteractive = true,\n}) => {\n if (isMetadataBlock) {\n return (\n <div\n className=\"space-y-4 rounded-lg border border-border bg-background p-4\"\n {...containerProps}\n >\n <div className=\"flex items-center justify-between\">\n <Title {...titleComponentProps} />\n <TitleActionBlock {...actionBlockProps} />\n </div>\n {isTagsBodyVisible && children}\n </div>\n );\n }\n\n const { isDisabled, setIsTagsDropdownVisible } = actionBlockProps;\n const onHeaderClick = () => {\n isHeaderInteractive && !isDisabled && setIsTagsDropdownVisible(not);\n };\n\n return (\n <div className=\"flex w-full flex-col items-start gap-2\" {...containerProps}>\n {titleComponentProps.showTitleBar && (\n <div\n className={classNames(\n \"flex w-full items-center justify-between gap-2 text-foreground\",\n isHeaderInteractive && \"cursor-pointer\",\n titleComponentProps.containerClassName\n )}\n onClick={onHeaderClick}\n >\n <Title {...titleComponentProps} />\n {titleComponentProps.showAddTagsOnTitle && (\n <TitleActionBlock {...actionBlockProps} />\n )}\n </div>\n )}\n {isTagsBodyVisible && (\n <div\n className=\"w-full rounded-lg border border-border bg-background p-4\"\n {...bodyProps}\n >\n {children}\n </div>\n )}\n </div>\n );\n};\n\nexport default Container;\n","import {\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { Badge, Button, Input } from \"@bigbinary/neeto-atoms\";\nimport classNames from \"classnames\";\nimport { Plus, Search } from \"lucide-react\";\nimport { isNotEmpty } from \"neetocist\";\nimport { SINGULAR } from \"neetocommons/v2/constants\";\nimport { createPortal } from \"react-dom\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { TAG_STYLE_TO_BADGE_VARIANT } from \"v2/common/constants\";\n\nimport {\n POPOVER_PANEL_WIDTH,\n POPOVER_TRIGGER_GAP,\n POPOVER_VIEWPORT_MARGIN,\n} from \"./constants\";\n\n// A compact tag picker whose search-and-create input lives inside the dropdown\n// panel, instead of expanding the row into a full-width select. This is the\n// default picker (`pickerVariant=\"popover\"`); pass `pickerVariant=\"inline\"` for\n// the legacy full-width select. When a title-bar gear is present it acts as the\n// trigger (see `hideTriggerButton`/`anchorRef`); otherwise this component renders\n// its own \"Add tag\" button. The panel is rendered in a portal with fixed,\n// viewport-clamped positioning so it never widens (and horizontally overflows)\n// the detail column it sits in.\nconst PopoverTagsSelector = ({\n open,\n onOpenChange,\n tags,\n onChange,\n onCreateOption,\n buttonProps = {},\n isDisabled = false,\n dataTestId,\n // When the picker is anchored to an external trigger (the title-bar gear),\n // `anchorRef` points at it and `hideTriggerButton` drops this component's own\n // in-body \"Add tag\" button so only the floating panel is rendered.\n anchorRef,\n hideTriggerButton = false,\n}) => {\n const { t } = useTranslation();\n\n const triggerRef = useRef(null);\n const panelRef = useRef(null);\n const rafRef = useRef(null);\n const listboxId = useId();\n\n const [query, setQuery] = useState(\"\");\n const [activeIndex, setActiveIndex] = useState(0);\n // `null` until measured, so the panel stays hidden for its first paint and\n // never flashes at the top-left corner before it is positioned.\n const [coords, setCoords] = useState(null);\n\n const trimmedQuery = query.trim();\n\n const filteredTags = useMemo(() => {\n if (!trimmedQuery) return tags;\n const search = trimmedQuery.toLowerCase();\n\n return tags.filter(({ label }) => label.toLowerCase().includes(search));\n }, [tags, trimmedQuery]);\n\n const canCreate =\n isNotEmpty(trimmedQuery) &&\n !tags.some(\n ({ label }) => label.toLowerCase() === trimmedQuery.toLowerCase()\n );\n\n const optionCount = filteredTags.length + (canCreate ? 1 : 0);\n const optionId = index => `${listboxId}-option-${index}`;\n\n // Positioning and focus target the external anchor (the gear) when the\n // in-body trigger button is hidden, otherwise this component's own wrapper.\n const focusTrigger = useCallback(() => {\n const anchor =\n (hideTriggerButton && anchorRef?.current) || triggerRef.current;\n anchor?.querySelector(\"button\")?.focus({ preventScroll: true });\n }, [hideTriggerButton, anchorRef]);\n\n const close = useCallback(\n ({ restoreFocus = false } = {}) => {\n setQuery(\"\");\n setActiveIndex(0);\n setCoords(null);\n onOpenChange(false);\n // Return focus to the trigger only for keyboard / selection dismissals;\n // an outside click should leave focus wherever the user clicked.\n if (restoreFocus) focusTrigger();\n },\n [onOpenChange, focusTrigger]\n );\n\n const handleSelect = tag => {\n onChange(tag);\n close({ restoreFocus: true });\n };\n\n const handleCreate = () => {\n onCreateOption(trimmedQuery);\n close({ restoreFocus: true });\n };\n\n const handleQueryChange = event => {\n setQuery(event.target.value);\n setActiveIndex(0);\n };\n\n const handleKeyDown = event => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n close({ restoreFocus: true });\n } else if (event.key === \"ArrowDown\" && optionCount > 0) {\n event.preventDefault();\n setActiveIndex(previous => (previous + 1) % optionCount);\n } else if (event.key === \"ArrowUp\" && optionCount > 0) {\n event.preventDefault();\n setActiveIndex(previous => (previous - 1 + optionCount) % optionCount);\n } else if (event.key === \"Enter\") {\n event.preventDefault();\n if (activeIndex < filteredTags.length) {\n handleSelect(filteredTags[activeIndex]);\n } else if (canCreate) {\n handleCreate();\n }\n }\n };\n\n const updatePosition = useCallback(() => {\n const trigger =\n (hideTriggerButton && anchorRef?.current) || triggerRef.current;\n if (!trigger) return;\n\n const rect = trigger.getBoundingClientRect();\n const panelHeight = panelRef.current?.offsetHeight ?? 0;\n\n const left = Math.max(\n POPOVER_VIEWPORT_MARGIN,\n Math.min(\n rect.left,\n window.innerWidth - POPOVER_PANEL_WIDTH - POPOVER_VIEWPORT_MARGIN\n )\n );\n\n const belowTop = rect.bottom + POPOVER_TRIGGER_GAP;\n const overflowsBelow =\n belowTop + panelHeight + POPOVER_VIEWPORT_MARGIN > window.innerHeight;\n\n const fitsAbove =\n rect.top - POPOVER_TRIGGER_GAP - panelHeight > POPOVER_VIEWPORT_MARGIN;\n\n const top =\n overflowsBelow && fitsAbove\n ? rect.top - POPOVER_TRIGGER_GAP - panelHeight\n : belowTop;\n\n setCoords({ top, left });\n }, [hideTriggerButton, anchorRef]);\n\n // Position on open and whenever the panel's height changes (list filtering),\n // synchronously before paint so the panel is never seen mispositioned.\n useLayoutEffect(() => {\n if (open) updatePosition();\n }, [open, optionCount, updatePosition]);\n\n useEffect(() => {\n if (!open) return undefined;\n\n // Focus the search field without scrolling the surrounding column.\n panelRef.current?.querySelector(\"input\")?.focus({ preventScroll: true });\n\n const handleClickOutside = event => {\n if (triggerRef.current?.contains(event.target)) return;\n\n // Treat the external anchor (the gear) as inside, so its own toggle\n // governs open/close instead of this handler racing it.\n if (anchorRef?.current?.contains(event.target)) return;\n\n if (panelRef.current?.contains(event.target)) return;\n close();\n };\n\n // Coalesce scroll/resize repositioning into one measurement per frame to\n // avoid layout thrashing on busy scroll containers.\n const scheduleReposition = () => {\n if (rafRef.current) return;\n rafRef.current = window.requestAnimationFrame(() => {\n rafRef.current = null;\n updatePosition();\n });\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n window.addEventListener(\"resize\", scheduleReposition);\n window.addEventListener(\"scroll\", scheduleReposition, true);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n window.removeEventListener(\"resize\", scheduleReposition);\n window.removeEventListener(\"scroll\", scheduleReposition, true);\n if (rafRef.current) window.cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n };\n }, [open, close, updatePosition, anchorRef]);\n\n const optionClassName = isActive =>\n classNames(\n \"flex w-full cursor-pointer items-center gap-2 rounded px-2 py-1.5 text-start text-sm\",\n isActive ? \"bg-accent text-accent-foreground\" : \"hover:bg-accent\"\n );\n\n const panel =\n open &&\n createPortal(\n <div\n className=\"bg-popover text-popover-foreground border-border fixed z-50 overflow-hidden rounded-md border shadow-md\"\n ref={panelRef}\n style={{\n top: coords?.top ?? 0,\n left: coords?.left ?? 0,\n width: POPOVER_PANEL_WIDTH,\n visibility: coords ? \"visible\" : \"hidden\",\n }}\n >\n <div className=\"border-border border-b p-2\">\n <Input\n aria-autocomplete=\"list\"\n aria-controls={listboxId}\n aria-expanded={open}\n data-testid={dataTestId}\n placeholder={t(\"neetoTags.placeholder.searchOrCreateTags\")}\n prefix={<Search size={14} />}\n role=\"combobox\"\n size=\"small\"\n value={query}\n aria-activedescendant={\n optionCount > 0 ? optionId(activeIndex) : undefined\n }\n onChange={handleQueryChange}\n onKeyDown={handleKeyDown}\n />\n </div>\n <div\n className=\"max-h-56 overflow-y-auto p-1\"\n id={listboxId}\n role=\"listbox\"\n >\n {filteredTags.map((tag, index) => (\n <button\n aria-selected={index === activeIndex}\n className={optionClassName(index === activeIndex)}\n id={optionId(index)}\n key={tag.value}\n role=\"option\"\n type=\"button\"\n onClick={() => handleSelect(tag)}\n onMouseEnter={() => setActiveIndex(index)}\n >\n <Badge\n label={tag.label}\n variant={TAG_STYLE_TO_BADGE_VARIANT[tag.style] || \"secondary\"}\n />\n </button>\n ))}\n {canCreate && (\n <button\n aria-selected={activeIndex === filteredTags.length}\n className={optionClassName(activeIndex === filteredTags.length)}\n id={optionId(filteredTags.length)}\n role=\"option\"\n type=\"button\"\n onClick={handleCreate}\n onMouseEnter={() => setActiveIndex(filteredTags.length)}\n >\n <Plus size={14} />\n <span className=\"truncate\">\n {t(\"neetoTags.button.createNewTag\")}\n {\": \"}\n <span className=\"font-medium\">{trimmedQuery}</span>\n </span>\n </button>\n )}\n {optionCount === 0 && (\n <div className=\"text-muted-foreground px-2 py-2 text-sm\">\n {t(\"neetoTags.common.noTagsFound\")}\n </div>\n )}\n </div>\n </div>,\n document.body\n );\n\n // Gear-anchored mode: render only the floating panel (the gear is the\n // trigger), with no in-body wrapper or button of its own.\n if (hideTriggerButton) return panel || null;\n\n return (\n <div className=\"inline-block\" ref={triggerRef}>\n <Button\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n disabled={isDisabled}\n icon={Plus}\n label={t(\"neetoTags.button.addTag\", SINGULAR)}\n size=\"sm\"\n variant=\"link\"\n onClick={() => onOpenChange(!open)}\n {...buttonProps}\n />\n {panel}\n </div>\n );\n};\n\nexport default PopoverTagsSelector;\n","import { Badge } from \"@bigbinary/neeto-atoms\";\nimport classNames from \"classnames\";\nimport { isNotEmpty } from \"neetocist\";\n\nimport { TAG_STYLE_TO_BADGE_VARIANT } from \"v2/common/constants\";\n\nconst TagsList = ({ selectedTags, isDisabled, handleDeleteTag, tagProps }) => (\n <div\n className={classNames(\n \"flex flex-row flex-wrap items-start justify-start gap-2 break-all\",\n { \"mb-2\": isNotEmpty(selectedTags) }\n )}\n >\n {selectedTags?.map(tag => (\n <Badge\n disabled={isDisabled}\n key={tag.value}\n label={tag.label}\n variant={TAG_STYLE_TO_BADGE_VARIANT[tag.style] || \"secondary\"}\n className={classNames({\n \"cursor-not-allowed opacity-50\": isDisabled,\n })}\n onDismiss={isDisabled ? undefined : () => handleDeleteTag(tag)}\n {...tagProps}\n />\n ))}\n </div>\n);\n\nexport default TagsList;\n","import { useRef } from \"react\";\n\nimport { Badge, Select } from \"@bigbinary/neeto-atoms\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { TAG_STYLE_TO_BADGE_VARIANT } from \"v2/common/constants\";\n\nconst renderTagOption = option => (\n <Badge\n label={option.label}\n variant={TAG_STYLE_TO_BADGE_VARIANT[option.style] || \"secondary\"}\n />\n);\n\nconst TagsSelector = ({\n defaultMenuIsOpen,\n tags,\n onChange,\n onCreateOption,\n selectProps,\n}) => {\n const isMenuOpen = useRef(defaultMenuIsOpen);\n\n const { t } = useTranslation();\n\n const handleOpenChange = open => {\n isMenuOpen.current = open;\n if (open) {\n selectProps.onMenuOpen?.();\n } else {\n selectProps.onMenuClose?.();\n }\n };\n\n const handleChange = value => {\n const selectedTag = tags.find(tag => tag.value === value);\n if (selectedTag) {\n onChange(selectedTag);\n }\n };\n\n return (\n <Select\n isCreatable\n isSearchable\n formatOptionLabel={renderTagOption}\n options={tags}\n placeholder={t(\"neetoTags.placeholder.selectOrCreateTag\")}\n {...{ ...selectProps, onCreateOption }}\n onChange={handleChange}\n onOpenChange={handleOpenChange}\n />\n );\n};\n\nexport default TagsSelector;\n","import { useMemo, useRef, useState } from \"react\";\n\nimport { Button } from \"@bigbinary/neeto-atoms\";\nimport { Plus } from \"lucide-react\";\nimport { isNotEmpty } from \"neetocist\";\nimport { SINGULAR } from \"neetocommons/v2/constants\";\nimport { showThumbsUpToastr } from \"neetocommons/v2/utils\";\nimport useHotkeys from \"neetohotkeys\";\nimport { pluck } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { KEYBOARD_SHORTCUTS } from \"./constants\";\nimport Container from \"./Container\";\nimport PopoverTagsSelector from \"./PopoverTagsSelector\";\nimport TagsList from \"./TagsList\";\nimport TagsSelector from \"./TagsSelector\";\n\n/**\n * A component that helps to manage tags.\n * Renders selected tags and, by default, a compact popover picker\n * (`pickerVariant=\"popover\"`) to search/create tags and remove them; pass\n * `pickerVariant=\"inline\"` for the legacy full-width select.\n */\nconst Tags = ({\n title = \"\",\n allTags,\n selectedTags,\n onTagSelect,\n onTagCreate,\n onTagDelete,\n tagProps,\n selectProps = {},\n buttonProps,\n showSuccessToastr = false,\n titleProps,\n containerProps = {},\n isUpdating = false,\n showAddTagsOnTitle = true,\n isLoading = false,\n showTitleBar = true,\n bodyProps = {},\n isDisabled = false,\n isMetadataBlock = false,\n pickerVariant = \"popover\",\n dataTestId,\n}) => {\n const { t } = useTranslation();\n\n const [isTagsDropdownVisible, setIsTagsDropdownVisible] = useState(false);\n\n // The title-bar/metadata settings gear, used as the popover's trigger anchor.\n const gearAnchorRef = useRef(null);\n\n useHotkeys(KEYBOARD_SHORTCUTS.addTag.sequence, event => {\n if (isDisabled) return;\n event.preventDefault();\n setIsTagsDropdownVisible(true);\n });\n\n const tags = useMemo(() => {\n if (!allTags) return [];\n\n if (!selectedTags) return allTags;\n\n const selectedTagValues = pluck(\"value\", selectedTags);\n\n return allTags.filter(({ value }) => !selectedTagValues.includes(value));\n }, [allTags, selectedTags]);\n\n const handleAddExistingTag = tag => {\n setIsTagsDropdownVisible(false);\n onTagSelect(tag);\n // @ts-ignore\n showSuccessToastr && showThumbsUpToastr();\n };\n\n const handleDeleteTag = tag => {\n onTagDelete(tag);\n // @ts-ignore\n showSuccessToastr && showThumbsUpToastr();\n };\n\n const handleCreateTag = tagName => {\n setIsTagsDropdownVisible(false);\n onTagCreate(tagName);\n };\n\n // Fall back to `selectProps.dataTestId` so consumers that only targeted the\n // inline select can keep addressing the picker after the popover default.\n const resolvedDataTestId = dataTestId ?? selectProps.dataTestId;\n\n const isPopoverPicker = pickerVariant === \"popover\";\n // A settings gear in the title bar (always shown in a metadata block) acts as\n // the popover's trigger and positioning anchor. When present, the popover\n // drops its own in-body \"Add tag\" button and opens directly below the gear.\n const hasTitleGear = isMetadataBlock || (showTitleBar && showAddTagsOnTitle);\n const isGearAnchoredPopover = isPopoverPicker && hasTitleGear;\n // Without a gear to anchor to, the popover renders its own in-body \"Add tag\"\n // button as the trigger (kept permanently visible so there is always an\n // anchor), e.g. when `showAddTagsOnTitle` is false or the title bar is hidden.\n const isInBodyPopoverPicker = isPopoverPicker && !hasTitleGear;\n\n const isAddTagsButtonVisible =\n !isPopoverPicker && !showAddTagsOnTitle && !isTagsDropdownVisible;\n\n const isTagsBodyVisible =\n isNotEmpty(selectedTags) ||\n (!isPopoverPicker && isTagsDropdownVisible) ||\n isAddTagsButtonVisible ||\n isInBodyPopoverPicker;\n\n const titleComponentProps = {\n isLoading,\n isUpdating,\n showAddTagsOnTitle,\n title,\n titleProps,\n showTitleBar,\n };\n\n const actionBlockProps = {\n isDisabled,\n setIsTagsDropdownVisible,\n anchorRef: isGearAnchoredPopover ? gearAnchorRef : undefined,\n };\n\n const tagsListProps = { handleDeleteTag, isDisabled, selectedTags, tagProps };\n\n const tagsSelectorProps = {\n defaultMenuIsOpen: showAddTagsOnTitle,\n tags,\n onChange: handleAddExistingTag,\n onCreateOption: handleCreateTag,\n selectProps,\n };\n\n const popoverTagsSelectorProps = {\n buttonProps,\n isDisabled,\n tags,\n dataTestId: resolvedDataTestId,\n open: isTagsDropdownVisible,\n onChange: handleAddExistingTag,\n onCreateOption: handleCreateTag,\n onOpenChange: setIsTagsDropdownVisible,\n };\n\n return (\n <>\n <Container\n {...{\n actionBlockProps,\n bodyProps,\n containerProps,\n isMetadataBlock,\n isTagsBodyVisible,\n titleComponentProps,\n }}\n // The gear is the popover's sole trigger; letting the header row toggle\n // too would race the panel's outside-click close and reopen it.\n isHeaderInteractive={!isGearAnchoredPopover}\n >\n {isNotEmpty(selectedTags) && <TagsList {...tagsListProps} />}\n {isInBodyPopoverPicker && (\n <PopoverTagsSelector {...popoverTagsSelectorProps} />\n )}\n {!isPopoverPicker && (\n <>\n {isTagsDropdownVisible && <TagsSelector {...tagsSelectorProps} />}\n {isAddTagsButtonVisible && (\n <Button\n disabled={isDisabled}\n icon={Plus}\n label={t(\"neetoTags.button.addTag\", SINGULAR)}\n size=\"sm\"\n variant=\"link\"\n onClick={() => setIsTagsDropdownVisible(true)}\n {...buttonProps}\n />\n )}\n </>\n )}\n </Container>\n {/* Anchored to the gear and rendered outside the body so it stays mounted\n (and openable) even when there are no tags to show a body box for. */}\n {isGearAnchoredPopover && (\n <PopoverTagsSelector\n {...popoverTagsSelectorProps}\n hideTriggerButton\n anchorRef={gearAnchorRef}\n />\n )}\n </>\n );\n};\n\nexport default Tags;\n"],"names":["KEYBOARD_SHORTCUTS","addTag","sequence","description","t","POPOVER_PANEL_WIDTH","POPOVER_VIEWPORT_MARGIN","POPOVER_TRIGGER_GAP","Title","_ref","_ref$titleProps","titleProps","title","isUpdating","isLoading","_useTranslation","useTranslation","tagsTitle","PLURAL","_useState","useState","_useState2","_slicedToArray","didStartUpdate","setDidStartUpdate","_useState3","_useState4","isCheckIconVisible","setIsCheckIconVisible","useEffect","setTimeout","_jsxs","className","children","_jsx","Label","_objectSpread","Spinner","Check","size","TitleActionBlock","isDisabled","setIsTagsDropdownVisible","anchorRef","ref","Button","disabled","icon","Settings","variant","onClick","event","stopPropagation","not","Container","isMetadataBlock","containerProps","actionBlockProps","titleComponentProps","isTagsBodyVisible","bodyProps","_ref$isHeaderInteract","isHeaderInteractive","onHeaderClick","showTitleBar","classNames","containerClassName","showAddTagsOnTitle","PopoverTagsSelector","_coords$top","_coords$left","open","onOpenChange","tags","onChange","onCreateOption","_ref$buttonProps","buttonProps","_ref$isDisabled","dataTestId","_ref$hideTriggerButto","hideTriggerButton","triggerRef","useRef","panelRef","rafRef","listboxId","useId","query","setQuery","activeIndex","setActiveIndex","_useState5","_useState6","coords","setCoords","trimmedQuery","trim","filteredTags","useMemo","search","toLowerCase","filter","_ref2","label","includes","canCreate","isNotEmpty","some","_ref3","optionCount","length","optionId","index","concat","focusTrigger","useCallback","_anchor$querySelector","anchor","current","querySelector","focus","preventScroll","close","_ref4","arguments","undefined","_ref4$restoreFocus","restoreFocus","handleSelect","tag","handleCreate","handleQueryChange","target","value","handleKeyDown","key","preventDefault","previous","updatePosition","_panelRef$current$off","_panelRef$current","trigger","rect","getBoundingClientRect","panelHeight","offsetHeight","left","Math","max","min","window","innerWidth","belowTop","bottom","overflowsBelow","innerHeight","fitsAbove","top","useLayoutEffect","_panelRef$current2","handleClickOutside","_triggerRef$current","_anchorRef$current","_panelRef$current3","contains","scheduleReposition","requestAnimationFrame","document","addEventListener","removeEventListener","cancelAnimationFrame","optionClassName","isActive","panel","createPortal","style","width","visibility","Input","placeholder","prefix","Search","role","onKeyDown","id","map","type","onMouseEnter","Badge","TAG_STYLE_TO_BADGE_VARIANT","Plus","body","SINGULAR","TagsList","selectedTags","handleDeleteTag","tagProps","onDismiss","renderTagOption","option","TagsSelector","defaultMenuIsOpen","selectProps","isMenuOpen","handleOpenChange","_selectProps$onMenuOp","onMenuOpen","call","_selectProps$onMenuCl","onMenuClose","handleChange","selectedTag","find","Select","isCreatable","isSearchable","formatOptionLabel","options","Tags","_ref$title","allTags","onTagSelect","onTagCreate","onTagDelete","_ref$selectProps","_ref$showSuccessToast","showSuccessToastr","_ref$containerProps","_ref$isUpdating","_ref$showAddTagsOnTit","_ref$isLoading","_ref$showTitleBar","_ref$bodyProps","_ref$isMetadataBlock","_ref$pickerVariant","pickerVariant","isTagsDropdownVisible","gearAnchorRef","useHotkeys","selectedTagValues","pluck","handleAddExistingTag","showThumbsUpToastr","handleCreateTag","tagName","resolvedDataTestId","isPopoverPicker","hasTitleGear","isGearAnchoredPopover","isInBodyPopoverPicker","isAddTagsButtonVisible","tagsListProps","tagsSelectorProps","popoverTagsSelectorProps","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"TagsComponent.js","sources":["../../../app/javascript/src/v2/components/Tags/constants.js","../../../app/javascript/src/v2/components/Tags/Title.jsx","../../../app/javascript/src/v2/components/Tags/TitleActionBlock.jsx","../../../app/javascript/src/v2/components/Tags/Container.jsx","../../../app/javascript/src/v2/components/Tags/PopoverTagsSelector.jsx","../../../app/javascript/src/v2/components/Tags/TagsList.jsx","../../../app/javascript/src/v2/components/Tags/TagsSelector.jsx","../../../app/javascript/src/v2/components/Tags/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\n\nexport const KEYBOARD_SHORTCUTS = {\n addTag: {\n sequence: \"t\",\n description: t(\"neetoTags.shortcuts.addTag\"),\n },\n};\n\nexport const POPOVER_PANEL_WIDTH = 256;\nexport const POPOVER_VIEWPORT_MARGIN = 8;\nexport const POPOVER_TRIGGER_GAP = 4;\n","import { useEffect, useState } from \"react\";\n\nimport { Label, Spinner } from \"@bigbinary/neeto-atoms\";\nimport { Check } from \"lucide-react\";\nimport { PLURAL } from \"neetocommons/v2/constants\";\nimport { useTranslation } from \"react-i18next\";\n\nconst Title = ({ titleProps = {}, title, isUpdating, isLoading }) => {\n const { t } = useTranslation();\n const tagsTitle = title || t(\"neetoTags.common.tag\", PLURAL);\n\n const [didStartUpdate, setDidStartUpdate] = useState(false);\n const [isCheckIconVisible, setIsCheckIconVisible] = useState(false);\n\n useEffect(() => {\n if (!isUpdating) return;\n\n setDidStartUpdate(true);\n }, [isUpdating]);\n\n useEffect(() => {\n if (isUpdating || !didStartUpdate) return;\n\n setIsCheckIconVisible(true);\n setDidStartUpdate(false);\n setTimeout(() => {\n setIsCheckIconVisible(false);\n }, 5000);\n }, [didStartUpdate, isUpdating]);\n\n return (\n <div className=\"flex items-center gap-2\">\n <Label {...titleProps}>{tagsTitle}</Label>\n <div className=\"inline-flex h-6 items-center\">\n {(isUpdating || isLoading) && <Spinner />}\n {!isUpdating && isCheckIconVisible && (\n <Check className=\"text-success-solid\" size={20} />\n )}\n </div>\n </div>\n );\n};\n\nexport default Title;\n","import { Button } from \"@bigbinary/neeto-atoms\";\nimport { Settings } from \"lucide-react\";\nimport { not } from \"ramda\";\n\nconst TitleActionBlock = ({\n isDisabled,\n setIsTagsDropdownVisible,\n anchorRef,\n}) => (\n <span className=\"inline-flex\" ref={anchorRef}>\n <Button\n data-testid=\"neeto-tags-add-tag-button\"\n disabled={isDisabled}\n icon={Settings}\n size=\"icon-sm\"\n variant=\"ghost\"\n onClick={event => {\n event.stopPropagation();\n setIsTagsDropdownVisible(not);\n }}\n />\n </span>\n);\n\nexport default TitleActionBlock;\n","import classNames from \"classnames\";\nimport { not } from \"ramda\";\n\nimport Title from \"./Title\";\nimport TitleActionBlock from \"./TitleActionBlock\";\n\nconst Container = ({\n isMetadataBlock,\n containerProps,\n actionBlockProps,\n titleComponentProps,\n children,\n isTagsBodyVisible,\n bodyProps,\n isHeaderInteractive = true,\n}) => {\n if (isMetadataBlock) {\n return (\n <div\n className=\"space-y-4 rounded-lg border border-border bg-background p-4\"\n {...containerProps}\n >\n <div className=\"flex items-center justify-between\">\n <Title {...titleComponentProps} />\n <TitleActionBlock {...actionBlockProps} />\n </div>\n {isTagsBodyVisible && children}\n </div>\n );\n }\n\n const { isDisabled, setIsTagsDropdownVisible } = actionBlockProps;\n const onHeaderClick = () => {\n isHeaderInteractive && !isDisabled && setIsTagsDropdownVisible(not);\n };\n\n return (\n <div className=\"flex w-full flex-col items-start gap-2\" {...containerProps}>\n {titleComponentProps.showTitleBar && (\n <div\n className={classNames(\n \"flex w-full items-center justify-between gap-2 text-foreground\",\n isHeaderInteractive && \"cursor-pointer\",\n titleComponentProps.containerClassName\n )}\n onClick={onHeaderClick}\n >\n <Title {...titleComponentProps} />\n {titleComponentProps.showAddTagsOnTitle && (\n <TitleActionBlock {...actionBlockProps} />\n )}\n </div>\n )}\n {isTagsBodyVisible && (\n <div\n className=\"w-full rounded-lg border border-border bg-background p-4\"\n {...bodyProps}\n >\n {children}\n </div>\n )}\n </div>\n );\n};\n\nexport default Container;\n","import {\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport classNames from \"classnames\";\nimport { Plus, Search } from \"lucide-react\";\nimport { Badge, Button, Input } from \"neetoatoms\";\nimport { hyphenate, isNotEmpty } from \"neetocist\";\nimport { SINGULAR } from \"neetocommons/v2/constants\";\nimport { createPortal } from \"react-dom\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { TAG_STYLE_TO_BADGE_VARIANT } from \"v2/common/constants\";\n\nimport {\n POPOVER_PANEL_WIDTH,\n POPOVER_TRIGGER_GAP,\n POPOVER_VIEWPORT_MARGIN,\n} from \"./constants\";\n\n// A compact tag picker whose search-and-create input lives inside the dropdown\n// panel, instead of expanding the row into a full-width select. This is the\n// default picker (`pickerVariant=\"popover\"`); pass `pickerVariant=\"inline\"` for\n// the legacy full-width select. When a title-bar gear is present it acts as the\n// trigger (see `hideTriggerButton`/`anchorRef`); otherwise this component renders\n// its own \"Add tag\" button. The panel is rendered in a portal with fixed,\n// viewport-clamped positioning so it never widens (and horizontally overflows)\n// the detail column it sits in.\nconst PopoverTagsSelector = ({\n open,\n onOpenChange,\n tags,\n onChange,\n onCreateOption,\n buttonProps = {},\n isDisabled = false,\n dataTestId,\n // When the picker is anchored to an external trigger (the title-bar gear),\n // `anchorRef` points at it and `hideTriggerButton` drops this component's own\n // in-body \"Add tag\" button so only the floating panel is rendered.\n anchorRef,\n hideTriggerButton = false,\n}) => {\n const { t } = useTranslation();\n\n const triggerRef = useRef(null);\n const panelRef = useRef(null);\n const rafRef = useRef(null);\n const listboxId = useId();\n\n const [query, setQuery] = useState(\"\");\n const [activeIndex, setActiveIndex] = useState(0);\n // `null` until measured, so the panel stays hidden for its first paint and\n // never flashes at the top-left corner before it is positioned.\n const [coords, setCoords] = useState(null);\n\n const trimmedQuery = query.trim();\n\n const filteredTags = useMemo(() => {\n if (!trimmedQuery) return tags;\n const search = trimmedQuery.toLowerCase();\n\n return tags.filter(({ label }) => label.toLowerCase().includes(search));\n }, [tags, trimmedQuery]);\n\n const canCreate =\n isNotEmpty(trimmedQuery) &&\n !tags.some(\n ({ label }) => label.toLowerCase() === trimmedQuery.toLowerCase()\n );\n\n const optionCount = filteredTags.length + (canCreate ? 1 : 0);\n const optionId = index => `${listboxId}-option-${index}`;\n\n // Positioning and focus target the external anchor (the gear) when the\n // in-body trigger button is hidden, otherwise this component's own wrapper.\n const focusTrigger = useCallback(() => {\n const anchor =\n (hideTriggerButton && anchorRef?.current) || triggerRef.current;\n anchor?.querySelector(\"button\")?.focus({ preventScroll: true });\n }, [hideTriggerButton, anchorRef]);\n\n const close = useCallback(\n ({ restoreFocus = false } = {}) => {\n setQuery(\"\");\n setActiveIndex(0);\n setCoords(null);\n onOpenChange(false);\n // Return focus to the trigger only for keyboard / selection dismissals;\n // an outside click should leave focus wherever the user clicked.\n if (restoreFocus) focusTrigger();\n },\n [onOpenChange, focusTrigger]\n );\n\n const handleSelect = tag => {\n onChange(tag);\n close({ restoreFocus: true });\n };\n\n const handleCreate = () => {\n onCreateOption(trimmedQuery);\n close({ restoreFocus: true });\n };\n\n const handleQueryChange = event => {\n setQuery(event.target.value);\n setActiveIndex(0);\n };\n\n const handleKeyDown = event => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n close({ restoreFocus: true });\n } else if (event.key === \"ArrowDown\" && optionCount > 0) {\n event.preventDefault();\n setActiveIndex(previous => (previous + 1) % optionCount);\n } else if (event.key === \"ArrowUp\" && optionCount > 0) {\n event.preventDefault();\n setActiveIndex(previous => (previous - 1 + optionCount) % optionCount);\n } else if (event.key === \"Enter\") {\n event.preventDefault();\n if (activeIndex < filteredTags.length) {\n handleSelect(filteredTags[activeIndex]);\n } else if (canCreate) {\n handleCreate();\n }\n }\n };\n\n const updatePosition = useCallback(() => {\n const trigger =\n (hideTriggerButton && anchorRef?.current) || triggerRef.current;\n if (!trigger) return;\n\n const rect = trigger.getBoundingClientRect();\n const panelHeight = panelRef.current?.offsetHeight ?? 0;\n\n const left = Math.max(\n POPOVER_VIEWPORT_MARGIN,\n Math.min(\n rect.left,\n window.innerWidth - POPOVER_PANEL_WIDTH - POPOVER_VIEWPORT_MARGIN\n )\n );\n\n const belowTop = rect.bottom + POPOVER_TRIGGER_GAP;\n const overflowsBelow =\n belowTop + panelHeight + POPOVER_VIEWPORT_MARGIN > window.innerHeight;\n\n const fitsAbove =\n rect.top - POPOVER_TRIGGER_GAP - panelHeight > POPOVER_VIEWPORT_MARGIN;\n\n const top =\n overflowsBelow && fitsAbove\n ? rect.top - POPOVER_TRIGGER_GAP - panelHeight\n : belowTop;\n\n setCoords({ top, left });\n }, [hideTriggerButton, anchorRef]);\n\n // Position on open and whenever the panel's height changes (list filtering),\n // synchronously before paint so the panel is never seen mispositioned.\n useLayoutEffect(() => {\n if (open) updatePosition();\n }, [open, optionCount, updatePosition]);\n\n useEffect(() => {\n if (!open) return undefined;\n\n // Focus the search field without scrolling the surrounding column.\n panelRef.current?.querySelector(\"input\")?.focus({ preventScroll: true });\n\n const handleClickOutside = event => {\n if (triggerRef.current?.contains(event.target)) return;\n\n // Treat the external anchor (the gear) as inside, so its own toggle\n // governs open/close instead of this handler racing it.\n if (anchorRef?.current?.contains(event.target)) return;\n\n if (panelRef.current?.contains(event.target)) return;\n close();\n };\n\n // Coalesce scroll/resize repositioning into one measurement per frame to\n // avoid layout thrashing on busy scroll containers.\n const scheduleReposition = () => {\n if (rafRef.current) return;\n rafRef.current = window.requestAnimationFrame(() => {\n rafRef.current = null;\n updatePosition();\n });\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n window.addEventListener(\"resize\", scheduleReposition);\n window.addEventListener(\"scroll\", scheduleReposition, true);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n window.removeEventListener(\"resize\", scheduleReposition);\n window.removeEventListener(\"scroll\", scheduleReposition, true);\n if (rafRef.current) window.cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n };\n }, [open, close, updatePosition, anchorRef]);\n\n const optionClassName = isActive =>\n classNames(\n \"flex w-full cursor-pointer items-center gap-2 rounded px-2 py-1.5 text-start text-sm\",\n isActive ? \"bg-accent text-accent-foreground\" : \"hover:bg-accent\"\n );\n\n const panel =\n open &&\n createPortal(\n <div\n className=\"bg-popover text-popover-foreground border-border fixed z-50 overflow-hidden rounded-md border shadow-md\"\n ref={panelRef}\n style={{\n top: coords?.top ?? 0,\n left: coords?.left ?? 0,\n width: POPOVER_PANEL_WIDTH,\n visibility: coords ? \"visible\" : \"hidden\",\n }}\n >\n <div className=\"border-border border-b p-2\">\n <Input\n aria-autocomplete=\"list\"\n aria-controls={listboxId}\n aria-expanded={open}\n data-testid={dataTestId}\n placeholder={t(\"neetoTags.placeholder.searchOrCreateTags\")}\n prefix={<Search size={14} />}\n role=\"combobox\"\n size=\"small\"\n value={query}\n aria-activedescendant={\n optionCount > 0 ? optionId(activeIndex) : undefined\n }\n onChange={handleQueryChange}\n onKeyDown={handleKeyDown}\n />\n </div>\n <div\n className=\"max-h-56 overflow-y-auto p-1\"\n id={listboxId}\n role=\"listbox\"\n >\n {filteredTags.map((tag, index) => (\n <button\n aria-selected={index === activeIndex}\n className={optionClassName(index === activeIndex)}\n data-testid={`${hyphenate(tag.label)}-select-option`}\n id={optionId(index)}\n key={tag.value}\n role=\"option\"\n type=\"button\"\n onClick={() => handleSelect(tag)}\n onMouseEnter={() => setActiveIndex(index)}\n >\n <Badge\n label={tag.label}\n variant={TAG_STYLE_TO_BADGE_VARIANT[tag.style] || \"secondary\"}\n />\n </button>\n ))}\n {canCreate && (\n <button\n aria-selected={activeIndex === filteredTags.length}\n className={optionClassName(activeIndex === filteredTags.length)}\n data-testid=\"create-new-tag-select-option\"\n id={optionId(filteredTags.length)}\n role=\"option\"\n type=\"button\"\n onClick={handleCreate}\n onMouseEnter={() => setActiveIndex(filteredTags.length)}\n >\n <Plus size={14} />\n <span className=\"truncate\">\n {t(\"neetoTags.button.createNewTag\")}\n {\": \"}\n <span className=\"font-medium\">{trimmedQuery}</span>\n </span>\n </button>\n )}\n {optionCount === 0 && (\n <div className=\"text-muted-foreground px-2 py-2 text-sm\">\n {t(\"neetoTags.common.noTagsFound\")}\n </div>\n )}\n </div>\n </div>,\n document.body\n );\n\n // Gear-anchored mode: render only the floating panel (the gear is the\n // trigger), with no in-body wrapper or button of its own.\n if (hideTriggerButton) return panel || null;\n\n return (\n <div className=\"inline-block\" ref={triggerRef}>\n <Button\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n disabled={isDisabled}\n icon={Plus}\n label={t(\"neetoTags.button.addTag\", SINGULAR)}\n size=\"sm\"\n variant=\"link\"\n onClick={() => onOpenChange(!open)}\n {...buttonProps}\n />\n {panel}\n </div>\n );\n};\n\nexport default PopoverTagsSelector;\n","import { Badge } from \"@bigbinary/neeto-atoms\";\nimport classNames from \"classnames\";\nimport { isNotEmpty } from \"neetocist\";\n\nimport { TAG_STYLE_TO_BADGE_VARIANT } from \"v2/common/constants\";\n\nconst TagsList = ({ selectedTags, isDisabled, handleDeleteTag, tagProps }) => (\n <div\n className={classNames(\n \"flex flex-row flex-wrap items-start justify-start gap-2 break-all\",\n { \"mb-2\": isNotEmpty(selectedTags) }\n )}\n >\n {selectedTags?.map(tag => (\n <Badge\n disabled={isDisabled}\n key={tag.value}\n label={tag.label}\n variant={TAG_STYLE_TO_BADGE_VARIANT[tag.style] || \"secondary\"}\n className={classNames({\n \"cursor-not-allowed opacity-50\": isDisabled,\n })}\n onDismiss={isDisabled ? undefined : () => handleDeleteTag(tag)}\n {...tagProps}\n />\n ))}\n </div>\n);\n\nexport default TagsList;\n","import { useRef } from \"react\";\n\nimport { Badge, Select } from \"@bigbinary/neeto-atoms\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { TAG_STYLE_TO_BADGE_VARIANT } from \"v2/common/constants\";\n\nconst renderTagOption = option => (\n <Badge\n label={option.label}\n variant={TAG_STYLE_TO_BADGE_VARIANT[option.style] || \"secondary\"}\n />\n);\n\nconst TagsSelector = ({\n defaultMenuIsOpen,\n tags,\n onChange,\n onCreateOption,\n selectProps,\n}) => {\n const isMenuOpen = useRef(defaultMenuIsOpen);\n\n const { t } = useTranslation();\n\n const handleOpenChange = open => {\n isMenuOpen.current = open;\n if (open) {\n selectProps.onMenuOpen?.();\n } else {\n selectProps.onMenuClose?.();\n }\n };\n\n const handleChange = value => {\n const selectedTag = tags.find(tag => tag.value === value);\n if (selectedTag) {\n onChange(selectedTag);\n }\n };\n\n return (\n <Select\n isCreatable\n isSearchable\n formatOptionLabel={renderTagOption}\n options={tags}\n placeholder={t(\"neetoTags.placeholder.selectOrCreateTag\")}\n {...{ ...selectProps, onCreateOption }}\n onChange={handleChange}\n onOpenChange={handleOpenChange}\n />\n );\n};\n\nexport default TagsSelector;\n","import { useMemo, useRef, useState } from \"react\";\n\nimport { Plus } from \"lucide-react\";\nimport { Button } from \"neetoatoms\";\nimport { isNotEmpty } from \"neetocist\";\nimport { SINGULAR } from \"neetocommons/v2/constants\";\nimport { showThumbsUpToastr } from \"neetocommons/v2/utils\";\nimport useHotkeys from \"neetohotkeys\";\nimport { pluck } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { KEYBOARD_SHORTCUTS } from \"./constants\";\nimport Container from \"./Container\";\nimport PopoverTagsSelector from \"./PopoverTagsSelector\";\nimport TagsList from \"./TagsList\";\nimport TagsSelector from \"./TagsSelector\";\n\n/**\n * A component that helps to manage tags.\n * Renders selected tags and, by default, a compact popover picker\n * (`pickerVariant=\"popover\"`) to search/create tags and remove them; pass\n * `pickerVariant=\"inline\"` for the legacy full-width select.\n */\nconst Tags = ({\n title = \"\",\n allTags,\n selectedTags,\n onTagSelect,\n onTagCreate,\n onTagDelete,\n tagProps,\n selectProps = {},\n buttonProps,\n showSuccessToastr = false,\n titleProps,\n containerProps = {},\n isUpdating = false,\n showAddTagsOnTitle = true,\n isLoading = false,\n showTitleBar = true,\n bodyProps = {},\n isDisabled = false,\n isMetadataBlock = false,\n pickerVariant = \"popover\",\n dataTestId,\n}) => {\n const { t } = useTranslation();\n\n const [isTagsDropdownVisible, setIsTagsDropdownVisible] = useState(false);\n\n // The title-bar/metadata settings gear, used as the popover's trigger anchor.\n const gearAnchorRef = useRef(null);\n\n useHotkeys(KEYBOARD_SHORTCUTS.addTag.sequence, event => {\n if (isDisabled) return;\n event.preventDefault();\n setIsTagsDropdownVisible(true);\n });\n\n const tags = useMemo(() => {\n if (!allTags) return [];\n\n if (!selectedTags) return allTags;\n\n const selectedTagValues = pluck(\"value\", selectedTags);\n\n return allTags.filter(({ value }) => !selectedTagValues.includes(value));\n }, [allTags, selectedTags]);\n\n const handleAddExistingTag = tag => {\n setIsTagsDropdownVisible(false);\n onTagSelect(tag);\n // @ts-ignore\n showSuccessToastr && showThumbsUpToastr();\n };\n\n const handleDeleteTag = tag => {\n onTagDelete(tag);\n // @ts-ignore\n showSuccessToastr && showThumbsUpToastr();\n };\n\n const handleCreateTag = tagName => {\n setIsTagsDropdownVisible(false);\n onTagCreate(tagName);\n };\n\n // Fall back to a `dataTestId` carried on `selectProps` so consumers that only\n // targeted the inline select can keep addressing the picker after the popover\n // default. Accept both the camelCase key and the kebab-case `data-testid`\n // React prop key, since consumers use either.\n const resolvedDataTestId =\n dataTestId ?? selectProps.dataTestId ?? selectProps[\"data-testid\"];\n\n const isPopoverPicker = pickerVariant === \"popover\";\n // A settings gear in the title bar (always shown in a metadata block) acts as\n // the popover's trigger and positioning anchor. When present, the popover\n // drops its own in-body \"Add tag\" button and opens directly below the gear.\n const hasTitleGear = isMetadataBlock || (showTitleBar && showAddTagsOnTitle);\n const isGearAnchoredPopover = isPopoverPicker && hasTitleGear;\n // Without a gear to anchor to, the popover renders its own in-body \"Add tag\"\n // button as the trigger (kept permanently visible so there is always an\n // anchor), e.g. when `showAddTagsOnTitle` is false or the title bar is hidden.\n const isInBodyPopoverPicker = isPopoverPicker && !hasTitleGear;\n\n const isAddTagsButtonVisible =\n !isPopoverPicker && !showAddTagsOnTitle && !isTagsDropdownVisible;\n\n const isTagsBodyVisible =\n isNotEmpty(selectedTags) ||\n (!isPopoverPicker && isTagsDropdownVisible) ||\n isAddTagsButtonVisible ||\n isInBodyPopoverPicker;\n\n const titleComponentProps = {\n isLoading,\n isUpdating,\n showAddTagsOnTitle,\n title,\n titleProps,\n showTitleBar,\n };\n\n const actionBlockProps = {\n isDisabled,\n setIsTagsDropdownVisible,\n anchorRef: isGearAnchoredPopover ? gearAnchorRef : undefined,\n };\n\n const tagsListProps = { handleDeleteTag, isDisabled, selectedTags, tagProps };\n\n const tagsSelectorProps = {\n defaultMenuIsOpen: showAddTagsOnTitle,\n tags,\n onChange: handleAddExistingTag,\n onCreateOption: handleCreateTag,\n selectProps,\n };\n\n const popoverTagsSelectorProps = {\n buttonProps,\n isDisabled,\n tags,\n dataTestId: resolvedDataTestId,\n open: isTagsDropdownVisible,\n onChange: handleAddExistingTag,\n onCreateOption: handleCreateTag,\n onOpenChange: setIsTagsDropdownVisible,\n };\n\n return (\n <>\n <Container\n {...{\n actionBlockProps,\n bodyProps,\n containerProps,\n isMetadataBlock,\n isTagsBodyVisible,\n titleComponentProps,\n }}\n // The gear is the popover's sole trigger; letting the header row toggle\n // too would race the panel's outside-click close and reopen it.\n isHeaderInteractive={!isGearAnchoredPopover}\n >\n {isNotEmpty(selectedTags) && <TagsList {...tagsListProps} />}\n {isInBodyPopoverPicker && (\n <PopoverTagsSelector {...popoverTagsSelectorProps} />\n )}\n {!isPopoverPicker && (\n <>\n {isTagsDropdownVisible && <TagsSelector {...tagsSelectorProps} />}\n {isAddTagsButtonVisible && (\n <Button\n disabled={isDisabled}\n icon={Plus}\n label={t(\"neetoTags.button.addTag\", SINGULAR)}\n size=\"sm\"\n variant=\"link\"\n onClick={() => setIsTagsDropdownVisible(true)}\n {...buttonProps}\n />\n )}\n </>\n )}\n </Container>\n {/* Anchored to the gear and rendered outside the body so it stays mounted\n (and openable) even when there are no tags to show a body box for. */}\n {isGearAnchoredPopover && (\n <PopoverTagsSelector\n {...popoverTagsSelectorProps}\n hideTriggerButton\n anchorRef={gearAnchorRef}\n />\n )}\n </>\n );\n};\n\nexport default Tags;\n"],"names":["KEYBOARD_SHORTCUTS","addTag","sequence","description","t","POPOVER_PANEL_WIDTH","POPOVER_VIEWPORT_MARGIN","POPOVER_TRIGGER_GAP","Title","_ref","_ref$titleProps","titleProps","title","isUpdating","isLoading","_useTranslation","useTranslation","tagsTitle","PLURAL","_useState","useState","_useState2","_slicedToArray","didStartUpdate","setDidStartUpdate","_useState3","_useState4","isCheckIconVisible","setIsCheckIconVisible","useEffect","setTimeout","_jsxs","className","children","_jsx","Label","_objectSpread","Spinner","Check","size","TitleActionBlock","isDisabled","setIsTagsDropdownVisible","anchorRef","ref","Button","disabled","icon","Settings","variant","onClick","event","stopPropagation","not","Container","isMetadataBlock","containerProps","actionBlockProps","titleComponentProps","isTagsBodyVisible","bodyProps","_ref$isHeaderInteract","isHeaderInteractive","onHeaderClick","showTitleBar","classNames","containerClassName","showAddTagsOnTitle","PopoverTagsSelector","_coords$top","_coords$left","open","onOpenChange","tags","onChange","onCreateOption","_ref$buttonProps","buttonProps","_ref$isDisabled","dataTestId","_ref$hideTriggerButto","hideTriggerButton","triggerRef","useRef","panelRef","rafRef","listboxId","useId","query","setQuery","activeIndex","setActiveIndex","_useState5","_useState6","coords","setCoords","trimmedQuery","trim","filteredTags","useMemo","search","toLowerCase","filter","_ref2","label","includes","canCreate","isNotEmpty","some","_ref3","optionCount","length","optionId","index","concat","focusTrigger","useCallback","_anchor$querySelector","anchor","current","querySelector","focus","preventScroll","close","_ref4","arguments","undefined","_ref4$restoreFocus","restoreFocus","handleSelect","tag","handleCreate","handleQueryChange","target","value","handleKeyDown","key","preventDefault","previous","updatePosition","_panelRef$current$off","_panelRef$current","trigger","rect","getBoundingClientRect","panelHeight","offsetHeight","left","Math","max","min","window","innerWidth","belowTop","bottom","overflowsBelow","innerHeight","fitsAbove","top","useLayoutEffect","_panelRef$current2","handleClickOutside","_triggerRef$current","_anchorRef$current","_panelRef$current3","contains","scheduleReposition","requestAnimationFrame","document","addEventListener","removeEventListener","cancelAnimationFrame","optionClassName","isActive","panel","createPortal","style","width","visibility","Input","placeholder","prefix","Search","role","onKeyDown","id","map","hyphenate","type","onMouseEnter","Badge","TAG_STYLE_TO_BADGE_VARIANT","Plus","body","SINGULAR","TagsList","selectedTags","handleDeleteTag","tagProps","onDismiss","renderTagOption","option","TagsSelector","defaultMenuIsOpen","selectProps","isMenuOpen","handleOpenChange","_selectProps$onMenuOp","onMenuOpen","call","_selectProps$onMenuCl","onMenuClose","handleChange","selectedTag","find","Select","isCreatable","isSearchable","formatOptionLabel","options","Tags","_ref$title","allTags","onTagSelect","onTagCreate","onTagDelete","_ref$selectProps","_ref$showSuccessToast","showSuccessToastr","_ref$containerProps","_ref$isUpdating","_ref$showAddTagsOnTit","_ref$isLoading","_ref$showTitleBar","_ref$bodyProps","_ref$isMetadataBlock","_ref$pickerVariant","pickerVariant","isTagsDropdownVisible","gearAnchorRef","useHotkeys","selectedTagValues","pluck","handleAddExistingTag","showThumbsUpToastr","handleCreateTag","tagName","resolvedDataTestId","isPopoverPicker","hasTitleGear","isGearAnchoredPopover","isInBodyPopoverPicker","isAddTagsButtonVisible","tagsListProps","tagsSelectorProps","popoverTagsSelectorProps","_Fragment"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
2
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
3
3
  import { useState, useEffect, useRef, useId, useMemo, useCallback, useLayoutEffect } from 'react';
4
- import { Label, Spinner, Button, Input, Badge, Select } from '@bigbinary/neeto-atoms';
5
4
  import { Check, Settings, Search, Plus } from 'lucide-react';
6
- import { isNotEmpty } from '@bigbinary/neeto-cist';
5
+ import { Label, Spinner, Button, Input, Badge, Select } from '@bigbinary/neeto-atoms';
6
+ import { isNotEmpty, hyphenate } from '@bigbinary/neeto-cist';
7
7
  import { PLURAL, SINGULAR } from '@bigbinary/neeto-commons-frontend/v2/constants';
8
8
  import { showThumbsUpToastr } from '@bigbinary/neeto-commons-frontend/v2/utils';
9
9
  import useHotkeys from '@bigbinary/neeto-hotkeys';
@@ -349,6 +349,7 @@ var PopoverTagsSelector = function PopoverTagsSelector(_ref) {
349
349
  return /*#__PURE__*/jsx("button", {
350
350
  "aria-selected": index === activeIndex,
351
351
  className: optionClassName(index === activeIndex),
352
+ "data-testid": "".concat(hyphenate(tag.label), "-select-option"),
352
353
  id: optionId(index),
353
354
  role: "option",
354
355
  type: "button",
@@ -366,6 +367,7 @@ var PopoverTagsSelector = function PopoverTagsSelector(_ref) {
366
367
  }), canCreate && /*#__PURE__*/jsxs("button", {
367
368
  "aria-selected": activeIndex === filteredTags.length,
368
369
  className: optionClassName(activeIndex === filteredTags.length),
370
+ "data-testid": "create-new-tag-select-option",
369
371
  id: optionId(filteredTags.length),
370
372
  role: "option",
371
373
  type: "button",
@@ -489,6 +491,7 @@ var TagsSelector = function TagsSelector(_ref) {
489
491
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
490
492
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
491
493
  var Tags = function Tags(_ref) {
494
+ var _ref3;
492
495
  var _ref$title = _ref.title,
493
496
  title = _ref$title === void 0 ? "" : _ref$title,
494
497
  allTags = _ref.allTags,
@@ -561,9 +564,11 @@ var Tags = function Tags(_ref) {
561
564
  onTagCreate(tagName);
562
565
  };
563
566
 
564
- // Fall back to `selectProps.dataTestId` so consumers that only targeted the
565
- // inline select can keep addressing the picker after the popover default.
566
- var resolvedDataTestId = dataTestId !== null && dataTestId !== void 0 ? dataTestId : selectProps.dataTestId;
567
+ // Fall back to a `dataTestId` carried on `selectProps` so consumers that only
568
+ // targeted the inline select can keep addressing the picker after the popover
569
+ // default. Accept both the camelCase key and the kebab-case `data-testid`
570
+ // React prop key, since consumers use either.
571
+ var resolvedDataTestId = (_ref3 = dataTestId !== null && dataTestId !== void 0 ? dataTestId : selectProps.dataTestId) !== null && _ref3 !== void 0 ? _ref3 : selectProps["data-testid"];
567
572
  var isPopoverPicker = pickerVariant === "popover";
568
573
  // A settings gear in the title bar (always shown in a metadata block) acts as
569
574
  // the popover's trigger and positioning anchor. When present, the popover
@@ -1 +1 @@
1
- {"version":3,"file":"TagsComponent.js","sources":["../../app/javascript/src/v2/components/Tags/constants.js","../../app/javascript/src/v2/components/Tags/Title.jsx","../../app/javascript/src/v2/components/Tags/TitleActionBlock.jsx","../../app/javascript/src/v2/components/Tags/Container.jsx","../../app/javascript/src/v2/components/Tags/PopoverTagsSelector.jsx","../../app/javascript/src/v2/components/Tags/TagsList.jsx","../../app/javascript/src/v2/components/Tags/TagsSelector.jsx","../../app/javascript/src/v2/components/Tags/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\n\nexport const KEYBOARD_SHORTCUTS = {\n addTag: {\n sequence: \"t\",\n description: t(\"neetoTags.shortcuts.addTag\"),\n },\n};\n\nexport const POPOVER_PANEL_WIDTH = 256;\nexport const POPOVER_VIEWPORT_MARGIN = 8;\nexport const POPOVER_TRIGGER_GAP = 4;\n","import { useEffect, useState } from \"react\";\n\nimport { Label, Spinner } from \"@bigbinary/neeto-atoms\";\nimport { Check } from \"lucide-react\";\nimport { PLURAL } from \"neetocommons/v2/constants\";\nimport { useTranslation } from \"react-i18next\";\n\nconst Title = ({ titleProps = {}, title, isUpdating, isLoading }) => {\n const { t } = useTranslation();\n const tagsTitle = title || t(\"neetoTags.common.tag\", PLURAL);\n\n const [didStartUpdate, setDidStartUpdate] = useState(false);\n const [isCheckIconVisible, setIsCheckIconVisible] = useState(false);\n\n useEffect(() => {\n if (!isUpdating) return;\n\n setDidStartUpdate(true);\n }, [isUpdating]);\n\n useEffect(() => {\n if (isUpdating || !didStartUpdate) return;\n\n setIsCheckIconVisible(true);\n setDidStartUpdate(false);\n setTimeout(() => {\n setIsCheckIconVisible(false);\n }, 5000);\n }, [didStartUpdate, isUpdating]);\n\n return (\n <div className=\"flex items-center gap-2\">\n <Label {...titleProps}>{tagsTitle}</Label>\n <div className=\"inline-flex h-6 items-center\">\n {(isUpdating || isLoading) && <Spinner />}\n {!isUpdating && isCheckIconVisible && (\n <Check className=\"text-success-solid\" size={20} />\n )}\n </div>\n </div>\n );\n};\n\nexport default Title;\n","import { Button } from \"@bigbinary/neeto-atoms\";\nimport { Settings } from \"lucide-react\";\nimport { not } from \"ramda\";\n\nconst TitleActionBlock = ({\n isDisabled,\n setIsTagsDropdownVisible,\n anchorRef,\n}) => (\n <span className=\"inline-flex\" ref={anchorRef}>\n <Button\n data-testid=\"neeto-tags-add-tag-button\"\n disabled={isDisabled}\n icon={Settings}\n size=\"icon-sm\"\n variant=\"ghost\"\n onClick={event => {\n event.stopPropagation();\n setIsTagsDropdownVisible(not);\n }}\n />\n </span>\n);\n\nexport default TitleActionBlock;\n","import classNames from \"classnames\";\nimport { not } from \"ramda\";\n\nimport Title from \"./Title\";\nimport TitleActionBlock from \"./TitleActionBlock\";\n\nconst Container = ({\n isMetadataBlock,\n containerProps,\n actionBlockProps,\n titleComponentProps,\n children,\n isTagsBodyVisible,\n bodyProps,\n isHeaderInteractive = true,\n}) => {\n if (isMetadataBlock) {\n return (\n <div\n className=\"space-y-4 rounded-lg border border-border bg-background p-4\"\n {...containerProps}\n >\n <div className=\"flex items-center justify-between\">\n <Title {...titleComponentProps} />\n <TitleActionBlock {...actionBlockProps} />\n </div>\n {isTagsBodyVisible && children}\n </div>\n );\n }\n\n const { isDisabled, setIsTagsDropdownVisible } = actionBlockProps;\n const onHeaderClick = () => {\n isHeaderInteractive && !isDisabled && setIsTagsDropdownVisible(not);\n };\n\n return (\n <div className=\"flex w-full flex-col items-start gap-2\" {...containerProps}>\n {titleComponentProps.showTitleBar && (\n <div\n className={classNames(\n \"flex w-full items-center justify-between gap-2 text-foreground\",\n isHeaderInteractive && \"cursor-pointer\",\n titleComponentProps.containerClassName\n )}\n onClick={onHeaderClick}\n >\n <Title {...titleComponentProps} />\n {titleComponentProps.showAddTagsOnTitle && (\n <TitleActionBlock {...actionBlockProps} />\n )}\n </div>\n )}\n {isTagsBodyVisible && (\n <div\n className=\"w-full rounded-lg border border-border bg-background p-4\"\n {...bodyProps}\n >\n {children}\n </div>\n )}\n </div>\n );\n};\n\nexport default Container;\n","import {\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { Badge, Button, Input } from \"@bigbinary/neeto-atoms\";\nimport classNames from \"classnames\";\nimport { Plus, Search } from \"lucide-react\";\nimport { isNotEmpty } from \"neetocist\";\nimport { SINGULAR } from \"neetocommons/v2/constants\";\nimport { createPortal } from \"react-dom\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { TAG_STYLE_TO_BADGE_VARIANT } from \"v2/common/constants\";\n\nimport {\n POPOVER_PANEL_WIDTH,\n POPOVER_TRIGGER_GAP,\n POPOVER_VIEWPORT_MARGIN,\n} from \"./constants\";\n\n// A compact tag picker whose search-and-create input lives inside the dropdown\n// panel, instead of expanding the row into a full-width select. This is the\n// default picker (`pickerVariant=\"popover\"`); pass `pickerVariant=\"inline\"` for\n// the legacy full-width select. When a title-bar gear is present it acts as the\n// trigger (see `hideTriggerButton`/`anchorRef`); otherwise this component renders\n// its own \"Add tag\" button. The panel is rendered in a portal with fixed,\n// viewport-clamped positioning so it never widens (and horizontally overflows)\n// the detail column it sits in.\nconst PopoverTagsSelector = ({\n open,\n onOpenChange,\n tags,\n onChange,\n onCreateOption,\n buttonProps = {},\n isDisabled = false,\n dataTestId,\n // When the picker is anchored to an external trigger (the title-bar gear),\n // `anchorRef` points at it and `hideTriggerButton` drops this component's own\n // in-body \"Add tag\" button so only the floating panel is rendered.\n anchorRef,\n hideTriggerButton = false,\n}) => {\n const { t } = useTranslation();\n\n const triggerRef = useRef(null);\n const panelRef = useRef(null);\n const rafRef = useRef(null);\n const listboxId = useId();\n\n const [query, setQuery] = useState(\"\");\n const [activeIndex, setActiveIndex] = useState(0);\n // `null` until measured, so the panel stays hidden for its first paint and\n // never flashes at the top-left corner before it is positioned.\n const [coords, setCoords] = useState(null);\n\n const trimmedQuery = query.trim();\n\n const filteredTags = useMemo(() => {\n if (!trimmedQuery) return tags;\n const search = trimmedQuery.toLowerCase();\n\n return tags.filter(({ label }) => label.toLowerCase().includes(search));\n }, [tags, trimmedQuery]);\n\n const canCreate =\n isNotEmpty(trimmedQuery) &&\n !tags.some(\n ({ label }) => label.toLowerCase() === trimmedQuery.toLowerCase()\n );\n\n const optionCount = filteredTags.length + (canCreate ? 1 : 0);\n const optionId = index => `${listboxId}-option-${index}`;\n\n // Positioning and focus target the external anchor (the gear) when the\n // in-body trigger button is hidden, otherwise this component's own wrapper.\n const focusTrigger = useCallback(() => {\n const anchor =\n (hideTriggerButton && anchorRef?.current) || triggerRef.current;\n anchor?.querySelector(\"button\")?.focus({ preventScroll: true });\n }, [hideTriggerButton, anchorRef]);\n\n const close = useCallback(\n ({ restoreFocus = false } = {}) => {\n setQuery(\"\");\n setActiveIndex(0);\n setCoords(null);\n onOpenChange(false);\n // Return focus to the trigger only for keyboard / selection dismissals;\n // an outside click should leave focus wherever the user clicked.\n if (restoreFocus) focusTrigger();\n },\n [onOpenChange, focusTrigger]\n );\n\n const handleSelect = tag => {\n onChange(tag);\n close({ restoreFocus: true });\n };\n\n const handleCreate = () => {\n onCreateOption(trimmedQuery);\n close({ restoreFocus: true });\n };\n\n const handleQueryChange = event => {\n setQuery(event.target.value);\n setActiveIndex(0);\n };\n\n const handleKeyDown = event => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n close({ restoreFocus: true });\n } else if (event.key === \"ArrowDown\" && optionCount > 0) {\n event.preventDefault();\n setActiveIndex(previous => (previous + 1) % optionCount);\n } else if (event.key === \"ArrowUp\" && optionCount > 0) {\n event.preventDefault();\n setActiveIndex(previous => (previous - 1 + optionCount) % optionCount);\n } else if (event.key === \"Enter\") {\n event.preventDefault();\n if (activeIndex < filteredTags.length) {\n handleSelect(filteredTags[activeIndex]);\n } else if (canCreate) {\n handleCreate();\n }\n }\n };\n\n const updatePosition = useCallback(() => {\n const trigger =\n (hideTriggerButton && anchorRef?.current) || triggerRef.current;\n if (!trigger) return;\n\n const rect = trigger.getBoundingClientRect();\n const panelHeight = panelRef.current?.offsetHeight ?? 0;\n\n const left = Math.max(\n POPOVER_VIEWPORT_MARGIN,\n Math.min(\n rect.left,\n window.innerWidth - POPOVER_PANEL_WIDTH - POPOVER_VIEWPORT_MARGIN\n )\n );\n\n const belowTop = rect.bottom + POPOVER_TRIGGER_GAP;\n const overflowsBelow =\n belowTop + panelHeight + POPOVER_VIEWPORT_MARGIN > window.innerHeight;\n\n const fitsAbove =\n rect.top - POPOVER_TRIGGER_GAP - panelHeight > POPOVER_VIEWPORT_MARGIN;\n\n const top =\n overflowsBelow && fitsAbove\n ? rect.top - POPOVER_TRIGGER_GAP - panelHeight\n : belowTop;\n\n setCoords({ top, left });\n }, [hideTriggerButton, anchorRef]);\n\n // Position on open and whenever the panel's height changes (list filtering),\n // synchronously before paint so the panel is never seen mispositioned.\n useLayoutEffect(() => {\n if (open) updatePosition();\n }, [open, optionCount, updatePosition]);\n\n useEffect(() => {\n if (!open) return undefined;\n\n // Focus the search field without scrolling the surrounding column.\n panelRef.current?.querySelector(\"input\")?.focus({ preventScroll: true });\n\n const handleClickOutside = event => {\n if (triggerRef.current?.contains(event.target)) return;\n\n // Treat the external anchor (the gear) as inside, so its own toggle\n // governs open/close instead of this handler racing it.\n if (anchorRef?.current?.contains(event.target)) return;\n\n if (panelRef.current?.contains(event.target)) return;\n close();\n };\n\n // Coalesce scroll/resize repositioning into one measurement per frame to\n // avoid layout thrashing on busy scroll containers.\n const scheduleReposition = () => {\n if (rafRef.current) return;\n rafRef.current = window.requestAnimationFrame(() => {\n rafRef.current = null;\n updatePosition();\n });\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n window.addEventListener(\"resize\", scheduleReposition);\n window.addEventListener(\"scroll\", scheduleReposition, true);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n window.removeEventListener(\"resize\", scheduleReposition);\n window.removeEventListener(\"scroll\", scheduleReposition, true);\n if (rafRef.current) window.cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n };\n }, [open, close, updatePosition, anchorRef]);\n\n const optionClassName = isActive =>\n classNames(\n \"flex w-full cursor-pointer items-center gap-2 rounded px-2 py-1.5 text-start text-sm\",\n isActive ? \"bg-accent text-accent-foreground\" : \"hover:bg-accent\"\n );\n\n const panel =\n open &&\n createPortal(\n <div\n className=\"bg-popover text-popover-foreground border-border fixed z-50 overflow-hidden rounded-md border shadow-md\"\n ref={panelRef}\n style={{\n top: coords?.top ?? 0,\n left: coords?.left ?? 0,\n width: POPOVER_PANEL_WIDTH,\n visibility: coords ? \"visible\" : \"hidden\",\n }}\n >\n <div className=\"border-border border-b p-2\">\n <Input\n aria-autocomplete=\"list\"\n aria-controls={listboxId}\n aria-expanded={open}\n data-testid={dataTestId}\n placeholder={t(\"neetoTags.placeholder.searchOrCreateTags\")}\n prefix={<Search size={14} />}\n role=\"combobox\"\n size=\"small\"\n value={query}\n aria-activedescendant={\n optionCount > 0 ? optionId(activeIndex) : undefined\n }\n onChange={handleQueryChange}\n onKeyDown={handleKeyDown}\n />\n </div>\n <div\n className=\"max-h-56 overflow-y-auto p-1\"\n id={listboxId}\n role=\"listbox\"\n >\n {filteredTags.map((tag, index) => (\n <button\n aria-selected={index === activeIndex}\n className={optionClassName(index === activeIndex)}\n id={optionId(index)}\n key={tag.value}\n role=\"option\"\n type=\"button\"\n onClick={() => handleSelect(tag)}\n onMouseEnter={() => setActiveIndex(index)}\n >\n <Badge\n label={tag.label}\n variant={TAG_STYLE_TO_BADGE_VARIANT[tag.style] || \"secondary\"}\n />\n </button>\n ))}\n {canCreate && (\n <button\n aria-selected={activeIndex === filteredTags.length}\n className={optionClassName(activeIndex === filteredTags.length)}\n id={optionId(filteredTags.length)}\n role=\"option\"\n type=\"button\"\n onClick={handleCreate}\n onMouseEnter={() => setActiveIndex(filteredTags.length)}\n >\n <Plus size={14} />\n <span className=\"truncate\">\n {t(\"neetoTags.button.createNewTag\")}\n {\": \"}\n <span className=\"font-medium\">{trimmedQuery}</span>\n </span>\n </button>\n )}\n {optionCount === 0 && (\n <div className=\"text-muted-foreground px-2 py-2 text-sm\">\n {t(\"neetoTags.common.noTagsFound\")}\n </div>\n )}\n </div>\n </div>,\n document.body\n );\n\n // Gear-anchored mode: render only the floating panel (the gear is the\n // trigger), with no in-body wrapper or button of its own.\n if (hideTriggerButton) return panel || null;\n\n return (\n <div className=\"inline-block\" ref={triggerRef}>\n <Button\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n disabled={isDisabled}\n icon={Plus}\n label={t(\"neetoTags.button.addTag\", SINGULAR)}\n size=\"sm\"\n variant=\"link\"\n onClick={() => onOpenChange(!open)}\n {...buttonProps}\n />\n {panel}\n </div>\n );\n};\n\nexport default PopoverTagsSelector;\n","import { Badge } from \"@bigbinary/neeto-atoms\";\nimport classNames from \"classnames\";\nimport { isNotEmpty } from \"neetocist\";\n\nimport { TAG_STYLE_TO_BADGE_VARIANT } from \"v2/common/constants\";\n\nconst TagsList = ({ selectedTags, isDisabled, handleDeleteTag, tagProps }) => (\n <div\n className={classNames(\n \"flex flex-row flex-wrap items-start justify-start gap-2 break-all\",\n { \"mb-2\": isNotEmpty(selectedTags) }\n )}\n >\n {selectedTags?.map(tag => (\n <Badge\n disabled={isDisabled}\n key={tag.value}\n label={tag.label}\n variant={TAG_STYLE_TO_BADGE_VARIANT[tag.style] || \"secondary\"}\n className={classNames({\n \"cursor-not-allowed opacity-50\": isDisabled,\n })}\n onDismiss={isDisabled ? undefined : () => handleDeleteTag(tag)}\n {...tagProps}\n />\n ))}\n </div>\n);\n\nexport default TagsList;\n","import { useRef } from \"react\";\n\nimport { Badge, Select } from \"@bigbinary/neeto-atoms\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { TAG_STYLE_TO_BADGE_VARIANT } from \"v2/common/constants\";\n\nconst renderTagOption = option => (\n <Badge\n label={option.label}\n variant={TAG_STYLE_TO_BADGE_VARIANT[option.style] || \"secondary\"}\n />\n);\n\nconst TagsSelector = ({\n defaultMenuIsOpen,\n tags,\n onChange,\n onCreateOption,\n selectProps,\n}) => {\n const isMenuOpen = useRef(defaultMenuIsOpen);\n\n const { t } = useTranslation();\n\n const handleOpenChange = open => {\n isMenuOpen.current = open;\n if (open) {\n selectProps.onMenuOpen?.();\n } else {\n selectProps.onMenuClose?.();\n }\n };\n\n const handleChange = value => {\n const selectedTag = tags.find(tag => tag.value === value);\n if (selectedTag) {\n onChange(selectedTag);\n }\n };\n\n return (\n <Select\n isCreatable\n isSearchable\n formatOptionLabel={renderTagOption}\n options={tags}\n placeholder={t(\"neetoTags.placeholder.selectOrCreateTag\")}\n {...{ ...selectProps, onCreateOption }}\n onChange={handleChange}\n onOpenChange={handleOpenChange}\n />\n );\n};\n\nexport default TagsSelector;\n","import { useMemo, useRef, useState } from \"react\";\n\nimport { Button } from \"@bigbinary/neeto-atoms\";\nimport { Plus } from \"lucide-react\";\nimport { isNotEmpty } from \"neetocist\";\nimport { SINGULAR } from \"neetocommons/v2/constants\";\nimport { showThumbsUpToastr } from \"neetocommons/v2/utils\";\nimport useHotkeys from \"neetohotkeys\";\nimport { pluck } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { KEYBOARD_SHORTCUTS } from \"./constants\";\nimport Container from \"./Container\";\nimport PopoverTagsSelector from \"./PopoverTagsSelector\";\nimport TagsList from \"./TagsList\";\nimport TagsSelector from \"./TagsSelector\";\n\n/**\n * A component that helps to manage tags.\n * Renders selected tags and, by default, a compact popover picker\n * (`pickerVariant=\"popover\"`) to search/create tags and remove them; pass\n * `pickerVariant=\"inline\"` for the legacy full-width select.\n */\nconst Tags = ({\n title = \"\",\n allTags,\n selectedTags,\n onTagSelect,\n onTagCreate,\n onTagDelete,\n tagProps,\n selectProps = {},\n buttonProps,\n showSuccessToastr = false,\n titleProps,\n containerProps = {},\n isUpdating = false,\n showAddTagsOnTitle = true,\n isLoading = false,\n showTitleBar = true,\n bodyProps = {},\n isDisabled = false,\n isMetadataBlock = false,\n pickerVariant = \"popover\",\n dataTestId,\n}) => {\n const { t } = useTranslation();\n\n const [isTagsDropdownVisible, setIsTagsDropdownVisible] = useState(false);\n\n // The title-bar/metadata settings gear, used as the popover's trigger anchor.\n const gearAnchorRef = useRef(null);\n\n useHotkeys(KEYBOARD_SHORTCUTS.addTag.sequence, event => {\n if (isDisabled) return;\n event.preventDefault();\n setIsTagsDropdownVisible(true);\n });\n\n const tags = useMemo(() => {\n if (!allTags) return [];\n\n if (!selectedTags) return allTags;\n\n const selectedTagValues = pluck(\"value\", selectedTags);\n\n return allTags.filter(({ value }) => !selectedTagValues.includes(value));\n }, [allTags, selectedTags]);\n\n const handleAddExistingTag = tag => {\n setIsTagsDropdownVisible(false);\n onTagSelect(tag);\n // @ts-ignore\n showSuccessToastr && showThumbsUpToastr();\n };\n\n const handleDeleteTag = tag => {\n onTagDelete(tag);\n // @ts-ignore\n showSuccessToastr && showThumbsUpToastr();\n };\n\n const handleCreateTag = tagName => {\n setIsTagsDropdownVisible(false);\n onTagCreate(tagName);\n };\n\n // Fall back to `selectProps.dataTestId` so consumers that only targeted the\n // inline select can keep addressing the picker after the popover default.\n const resolvedDataTestId = dataTestId ?? selectProps.dataTestId;\n\n const isPopoverPicker = pickerVariant === \"popover\";\n // A settings gear in the title bar (always shown in a metadata block) acts as\n // the popover's trigger and positioning anchor. When present, the popover\n // drops its own in-body \"Add tag\" button and opens directly below the gear.\n const hasTitleGear = isMetadataBlock || (showTitleBar && showAddTagsOnTitle);\n const isGearAnchoredPopover = isPopoverPicker && hasTitleGear;\n // Without a gear to anchor to, the popover renders its own in-body \"Add tag\"\n // button as the trigger (kept permanently visible so there is always an\n // anchor), e.g. when `showAddTagsOnTitle` is false or the title bar is hidden.\n const isInBodyPopoverPicker = isPopoverPicker && !hasTitleGear;\n\n const isAddTagsButtonVisible =\n !isPopoverPicker && !showAddTagsOnTitle && !isTagsDropdownVisible;\n\n const isTagsBodyVisible =\n isNotEmpty(selectedTags) ||\n (!isPopoverPicker && isTagsDropdownVisible) ||\n isAddTagsButtonVisible ||\n isInBodyPopoverPicker;\n\n const titleComponentProps = {\n isLoading,\n isUpdating,\n showAddTagsOnTitle,\n title,\n titleProps,\n showTitleBar,\n };\n\n const actionBlockProps = {\n isDisabled,\n setIsTagsDropdownVisible,\n anchorRef: isGearAnchoredPopover ? gearAnchorRef : undefined,\n };\n\n const tagsListProps = { handleDeleteTag, isDisabled, selectedTags, tagProps };\n\n const tagsSelectorProps = {\n defaultMenuIsOpen: showAddTagsOnTitle,\n tags,\n onChange: handleAddExistingTag,\n onCreateOption: handleCreateTag,\n selectProps,\n };\n\n const popoverTagsSelectorProps = {\n buttonProps,\n isDisabled,\n tags,\n dataTestId: resolvedDataTestId,\n open: isTagsDropdownVisible,\n onChange: handleAddExistingTag,\n onCreateOption: handleCreateTag,\n onOpenChange: setIsTagsDropdownVisible,\n };\n\n return (\n <>\n <Container\n {...{\n actionBlockProps,\n bodyProps,\n containerProps,\n isMetadataBlock,\n isTagsBodyVisible,\n titleComponentProps,\n }}\n // The gear is the popover's sole trigger; letting the header row toggle\n // too would race the panel's outside-click close and reopen it.\n isHeaderInteractive={!isGearAnchoredPopover}\n >\n {isNotEmpty(selectedTags) && <TagsList {...tagsListProps} />}\n {isInBodyPopoverPicker && (\n <PopoverTagsSelector {...popoverTagsSelectorProps} />\n )}\n {!isPopoverPicker && (\n <>\n {isTagsDropdownVisible && <TagsSelector {...tagsSelectorProps} />}\n {isAddTagsButtonVisible && (\n <Button\n disabled={isDisabled}\n icon={Plus}\n label={t(\"neetoTags.button.addTag\", SINGULAR)}\n size=\"sm\"\n variant=\"link\"\n onClick={() => setIsTagsDropdownVisible(true)}\n {...buttonProps}\n />\n )}\n </>\n )}\n </Container>\n {/* Anchored to the gear and rendered outside the body so it stays mounted\n (and openable) even when there are no tags to show a body box for. */}\n {isGearAnchoredPopover && (\n <PopoverTagsSelector\n {...popoverTagsSelectorProps}\n hideTriggerButton\n anchorRef={gearAnchorRef}\n />\n )}\n </>\n );\n};\n\nexport default Tags;\n"],"names":["KEYBOARD_SHORTCUTS","addTag","sequence","description","t","POPOVER_PANEL_WIDTH","POPOVER_VIEWPORT_MARGIN","POPOVER_TRIGGER_GAP","Title","_ref","_ref$titleProps","titleProps","title","isUpdating","isLoading","_useTranslation","useTranslation","tagsTitle","PLURAL","_useState","useState","_useState2","_slicedToArray","didStartUpdate","setDidStartUpdate","_useState3","_useState4","isCheckIconVisible","setIsCheckIconVisible","useEffect","setTimeout","_jsxs","className","children","_jsx","Label","_objectSpread","Spinner","Check","size","TitleActionBlock","isDisabled","setIsTagsDropdownVisible","anchorRef","ref","Button","disabled","icon","Settings","variant","onClick","event","stopPropagation","not","Container","isMetadataBlock","containerProps","actionBlockProps","titleComponentProps","isTagsBodyVisible","bodyProps","_ref$isHeaderInteract","isHeaderInteractive","onHeaderClick","showTitleBar","classNames","containerClassName","showAddTagsOnTitle","PopoverTagsSelector","_coords$top","_coords$left","open","onOpenChange","tags","onChange","onCreateOption","_ref$buttonProps","buttonProps","_ref$isDisabled","dataTestId","_ref$hideTriggerButto","hideTriggerButton","triggerRef","useRef","panelRef","rafRef","listboxId","useId","query","setQuery","activeIndex","setActiveIndex","_useState5","_useState6","coords","setCoords","trimmedQuery","trim","filteredTags","useMemo","search","toLowerCase","filter","_ref2","label","includes","canCreate","isNotEmpty","some","_ref3","optionCount","length","optionId","index","concat","focusTrigger","useCallback","_anchor$querySelector","anchor","current","querySelector","focus","preventScroll","close","_ref4","arguments","undefined","_ref4$restoreFocus","restoreFocus","handleSelect","tag","handleCreate","handleQueryChange","target","value","handleKeyDown","key","preventDefault","previous","updatePosition","_panelRef$current$off","_panelRef$current","trigger","rect","getBoundingClientRect","panelHeight","offsetHeight","left","Math","max","min","window","innerWidth","belowTop","bottom","overflowsBelow","innerHeight","fitsAbove","top","useLayoutEffect","_panelRef$current2","handleClickOutside","_triggerRef$current","_anchorRef$current","_panelRef$current3","contains","scheduleReposition","requestAnimationFrame","document","addEventListener","removeEventListener","cancelAnimationFrame","optionClassName","isActive","panel","createPortal","style","width","visibility","Input","placeholder","prefix","Search","role","onKeyDown","id","map","type","onMouseEnter","Badge","TAG_STYLE_TO_BADGE_VARIANT","Plus","body","SINGULAR","TagsList","selectedTags","handleDeleteTag","tagProps","onDismiss","renderTagOption","option","TagsSelector","defaultMenuIsOpen","selectProps","isMenuOpen","handleOpenChange","_selectProps$onMenuOp","onMenuOpen","call","_selectProps$onMenuCl","onMenuClose","handleChange","selectedTag","find","Select","isCreatable","isSearchable","formatOptionLabel","options","Tags","_ref$title","allTags","onTagSelect","onTagCreate","onTagDelete","_ref$selectProps","_ref$showSuccessToast","showSuccessToastr","_ref$containerProps","_ref$isUpdating","_ref$showAddTagsOnTit","_ref$isLoading","_ref$showTitleBar","_ref$bodyProps","_ref$isMetadataBlock","_ref$pickerVariant","pickerVariant","isTagsDropdownVisible","gearAnchorRef","useHotkeys","selectedTagValues","pluck","handleAddExistingTag","showThumbsUpToastr","handleCreateTag","tagName","resolvedDataTestId","isPopoverPicker","hasTitleGear","isGearAnchoredPopover","isInBodyPopoverPicker","isAddTagsButtonVisible","tagsListProps","tagsSelectorProps","popoverTagsSelectorProps","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"TagsComponent.js","sources":["../../app/javascript/src/v2/components/Tags/constants.js","../../app/javascript/src/v2/components/Tags/Title.jsx","../../app/javascript/src/v2/components/Tags/TitleActionBlock.jsx","../../app/javascript/src/v2/components/Tags/Container.jsx","../../app/javascript/src/v2/components/Tags/PopoverTagsSelector.jsx","../../app/javascript/src/v2/components/Tags/TagsList.jsx","../../app/javascript/src/v2/components/Tags/TagsSelector.jsx","../../app/javascript/src/v2/components/Tags/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\n\nexport const KEYBOARD_SHORTCUTS = {\n addTag: {\n sequence: \"t\",\n description: t(\"neetoTags.shortcuts.addTag\"),\n },\n};\n\nexport const POPOVER_PANEL_WIDTH = 256;\nexport const POPOVER_VIEWPORT_MARGIN = 8;\nexport const POPOVER_TRIGGER_GAP = 4;\n","import { useEffect, useState } from \"react\";\n\nimport { Label, Spinner } from \"@bigbinary/neeto-atoms\";\nimport { Check } from \"lucide-react\";\nimport { PLURAL } from \"neetocommons/v2/constants\";\nimport { useTranslation } from \"react-i18next\";\n\nconst Title = ({ titleProps = {}, title, isUpdating, isLoading }) => {\n const { t } = useTranslation();\n const tagsTitle = title || t(\"neetoTags.common.tag\", PLURAL);\n\n const [didStartUpdate, setDidStartUpdate] = useState(false);\n const [isCheckIconVisible, setIsCheckIconVisible] = useState(false);\n\n useEffect(() => {\n if (!isUpdating) return;\n\n setDidStartUpdate(true);\n }, [isUpdating]);\n\n useEffect(() => {\n if (isUpdating || !didStartUpdate) return;\n\n setIsCheckIconVisible(true);\n setDidStartUpdate(false);\n setTimeout(() => {\n setIsCheckIconVisible(false);\n }, 5000);\n }, [didStartUpdate, isUpdating]);\n\n return (\n <div className=\"flex items-center gap-2\">\n <Label {...titleProps}>{tagsTitle}</Label>\n <div className=\"inline-flex h-6 items-center\">\n {(isUpdating || isLoading) && <Spinner />}\n {!isUpdating && isCheckIconVisible && (\n <Check className=\"text-success-solid\" size={20} />\n )}\n </div>\n </div>\n );\n};\n\nexport default Title;\n","import { Button } from \"@bigbinary/neeto-atoms\";\nimport { Settings } from \"lucide-react\";\nimport { not } from \"ramda\";\n\nconst TitleActionBlock = ({\n isDisabled,\n setIsTagsDropdownVisible,\n anchorRef,\n}) => (\n <span className=\"inline-flex\" ref={anchorRef}>\n <Button\n data-testid=\"neeto-tags-add-tag-button\"\n disabled={isDisabled}\n icon={Settings}\n size=\"icon-sm\"\n variant=\"ghost\"\n onClick={event => {\n event.stopPropagation();\n setIsTagsDropdownVisible(not);\n }}\n />\n </span>\n);\n\nexport default TitleActionBlock;\n","import classNames from \"classnames\";\nimport { not } from \"ramda\";\n\nimport Title from \"./Title\";\nimport TitleActionBlock from \"./TitleActionBlock\";\n\nconst Container = ({\n isMetadataBlock,\n containerProps,\n actionBlockProps,\n titleComponentProps,\n children,\n isTagsBodyVisible,\n bodyProps,\n isHeaderInteractive = true,\n}) => {\n if (isMetadataBlock) {\n return (\n <div\n className=\"space-y-4 rounded-lg border border-border bg-background p-4\"\n {...containerProps}\n >\n <div className=\"flex items-center justify-between\">\n <Title {...titleComponentProps} />\n <TitleActionBlock {...actionBlockProps} />\n </div>\n {isTagsBodyVisible && children}\n </div>\n );\n }\n\n const { isDisabled, setIsTagsDropdownVisible } = actionBlockProps;\n const onHeaderClick = () => {\n isHeaderInteractive && !isDisabled && setIsTagsDropdownVisible(not);\n };\n\n return (\n <div className=\"flex w-full flex-col items-start gap-2\" {...containerProps}>\n {titleComponentProps.showTitleBar && (\n <div\n className={classNames(\n \"flex w-full items-center justify-between gap-2 text-foreground\",\n isHeaderInteractive && \"cursor-pointer\",\n titleComponentProps.containerClassName\n )}\n onClick={onHeaderClick}\n >\n <Title {...titleComponentProps} />\n {titleComponentProps.showAddTagsOnTitle && (\n <TitleActionBlock {...actionBlockProps} />\n )}\n </div>\n )}\n {isTagsBodyVisible && (\n <div\n className=\"w-full rounded-lg border border-border bg-background p-4\"\n {...bodyProps}\n >\n {children}\n </div>\n )}\n </div>\n );\n};\n\nexport default Container;\n","import {\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport classNames from \"classnames\";\nimport { Plus, Search } from \"lucide-react\";\nimport { Badge, Button, Input } from \"neetoatoms\";\nimport { hyphenate, isNotEmpty } from \"neetocist\";\nimport { SINGULAR } from \"neetocommons/v2/constants\";\nimport { createPortal } from \"react-dom\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { TAG_STYLE_TO_BADGE_VARIANT } from \"v2/common/constants\";\n\nimport {\n POPOVER_PANEL_WIDTH,\n POPOVER_TRIGGER_GAP,\n POPOVER_VIEWPORT_MARGIN,\n} from \"./constants\";\n\n// A compact tag picker whose search-and-create input lives inside the dropdown\n// panel, instead of expanding the row into a full-width select. This is the\n// default picker (`pickerVariant=\"popover\"`); pass `pickerVariant=\"inline\"` for\n// the legacy full-width select. When a title-bar gear is present it acts as the\n// trigger (see `hideTriggerButton`/`anchorRef`); otherwise this component renders\n// its own \"Add tag\" button. The panel is rendered in a portal with fixed,\n// viewport-clamped positioning so it never widens (and horizontally overflows)\n// the detail column it sits in.\nconst PopoverTagsSelector = ({\n open,\n onOpenChange,\n tags,\n onChange,\n onCreateOption,\n buttonProps = {},\n isDisabled = false,\n dataTestId,\n // When the picker is anchored to an external trigger (the title-bar gear),\n // `anchorRef` points at it and `hideTriggerButton` drops this component's own\n // in-body \"Add tag\" button so only the floating panel is rendered.\n anchorRef,\n hideTriggerButton = false,\n}) => {\n const { t } = useTranslation();\n\n const triggerRef = useRef(null);\n const panelRef = useRef(null);\n const rafRef = useRef(null);\n const listboxId = useId();\n\n const [query, setQuery] = useState(\"\");\n const [activeIndex, setActiveIndex] = useState(0);\n // `null` until measured, so the panel stays hidden for its first paint and\n // never flashes at the top-left corner before it is positioned.\n const [coords, setCoords] = useState(null);\n\n const trimmedQuery = query.trim();\n\n const filteredTags = useMemo(() => {\n if (!trimmedQuery) return tags;\n const search = trimmedQuery.toLowerCase();\n\n return tags.filter(({ label }) => label.toLowerCase().includes(search));\n }, [tags, trimmedQuery]);\n\n const canCreate =\n isNotEmpty(trimmedQuery) &&\n !tags.some(\n ({ label }) => label.toLowerCase() === trimmedQuery.toLowerCase()\n );\n\n const optionCount = filteredTags.length + (canCreate ? 1 : 0);\n const optionId = index => `${listboxId}-option-${index}`;\n\n // Positioning and focus target the external anchor (the gear) when the\n // in-body trigger button is hidden, otherwise this component's own wrapper.\n const focusTrigger = useCallback(() => {\n const anchor =\n (hideTriggerButton && anchorRef?.current) || triggerRef.current;\n anchor?.querySelector(\"button\")?.focus({ preventScroll: true });\n }, [hideTriggerButton, anchorRef]);\n\n const close = useCallback(\n ({ restoreFocus = false } = {}) => {\n setQuery(\"\");\n setActiveIndex(0);\n setCoords(null);\n onOpenChange(false);\n // Return focus to the trigger only for keyboard / selection dismissals;\n // an outside click should leave focus wherever the user clicked.\n if (restoreFocus) focusTrigger();\n },\n [onOpenChange, focusTrigger]\n );\n\n const handleSelect = tag => {\n onChange(tag);\n close({ restoreFocus: true });\n };\n\n const handleCreate = () => {\n onCreateOption(trimmedQuery);\n close({ restoreFocus: true });\n };\n\n const handleQueryChange = event => {\n setQuery(event.target.value);\n setActiveIndex(0);\n };\n\n const handleKeyDown = event => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n close({ restoreFocus: true });\n } else if (event.key === \"ArrowDown\" && optionCount > 0) {\n event.preventDefault();\n setActiveIndex(previous => (previous + 1) % optionCount);\n } else if (event.key === \"ArrowUp\" && optionCount > 0) {\n event.preventDefault();\n setActiveIndex(previous => (previous - 1 + optionCount) % optionCount);\n } else if (event.key === \"Enter\") {\n event.preventDefault();\n if (activeIndex < filteredTags.length) {\n handleSelect(filteredTags[activeIndex]);\n } else if (canCreate) {\n handleCreate();\n }\n }\n };\n\n const updatePosition = useCallback(() => {\n const trigger =\n (hideTriggerButton && anchorRef?.current) || triggerRef.current;\n if (!trigger) return;\n\n const rect = trigger.getBoundingClientRect();\n const panelHeight = panelRef.current?.offsetHeight ?? 0;\n\n const left = Math.max(\n POPOVER_VIEWPORT_MARGIN,\n Math.min(\n rect.left,\n window.innerWidth - POPOVER_PANEL_WIDTH - POPOVER_VIEWPORT_MARGIN\n )\n );\n\n const belowTop = rect.bottom + POPOVER_TRIGGER_GAP;\n const overflowsBelow =\n belowTop + panelHeight + POPOVER_VIEWPORT_MARGIN > window.innerHeight;\n\n const fitsAbove =\n rect.top - POPOVER_TRIGGER_GAP - panelHeight > POPOVER_VIEWPORT_MARGIN;\n\n const top =\n overflowsBelow && fitsAbove\n ? rect.top - POPOVER_TRIGGER_GAP - panelHeight\n : belowTop;\n\n setCoords({ top, left });\n }, [hideTriggerButton, anchorRef]);\n\n // Position on open and whenever the panel's height changes (list filtering),\n // synchronously before paint so the panel is never seen mispositioned.\n useLayoutEffect(() => {\n if (open) updatePosition();\n }, [open, optionCount, updatePosition]);\n\n useEffect(() => {\n if (!open) return undefined;\n\n // Focus the search field without scrolling the surrounding column.\n panelRef.current?.querySelector(\"input\")?.focus({ preventScroll: true });\n\n const handleClickOutside = event => {\n if (triggerRef.current?.contains(event.target)) return;\n\n // Treat the external anchor (the gear) as inside, so its own toggle\n // governs open/close instead of this handler racing it.\n if (anchorRef?.current?.contains(event.target)) return;\n\n if (panelRef.current?.contains(event.target)) return;\n close();\n };\n\n // Coalesce scroll/resize repositioning into one measurement per frame to\n // avoid layout thrashing on busy scroll containers.\n const scheduleReposition = () => {\n if (rafRef.current) return;\n rafRef.current = window.requestAnimationFrame(() => {\n rafRef.current = null;\n updatePosition();\n });\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n window.addEventListener(\"resize\", scheduleReposition);\n window.addEventListener(\"scroll\", scheduleReposition, true);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n window.removeEventListener(\"resize\", scheduleReposition);\n window.removeEventListener(\"scroll\", scheduleReposition, true);\n if (rafRef.current) window.cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n };\n }, [open, close, updatePosition, anchorRef]);\n\n const optionClassName = isActive =>\n classNames(\n \"flex w-full cursor-pointer items-center gap-2 rounded px-2 py-1.5 text-start text-sm\",\n isActive ? \"bg-accent text-accent-foreground\" : \"hover:bg-accent\"\n );\n\n const panel =\n open &&\n createPortal(\n <div\n className=\"bg-popover text-popover-foreground border-border fixed z-50 overflow-hidden rounded-md border shadow-md\"\n ref={panelRef}\n style={{\n top: coords?.top ?? 0,\n left: coords?.left ?? 0,\n width: POPOVER_PANEL_WIDTH,\n visibility: coords ? \"visible\" : \"hidden\",\n }}\n >\n <div className=\"border-border border-b p-2\">\n <Input\n aria-autocomplete=\"list\"\n aria-controls={listboxId}\n aria-expanded={open}\n data-testid={dataTestId}\n placeholder={t(\"neetoTags.placeholder.searchOrCreateTags\")}\n prefix={<Search size={14} />}\n role=\"combobox\"\n size=\"small\"\n value={query}\n aria-activedescendant={\n optionCount > 0 ? optionId(activeIndex) : undefined\n }\n onChange={handleQueryChange}\n onKeyDown={handleKeyDown}\n />\n </div>\n <div\n className=\"max-h-56 overflow-y-auto p-1\"\n id={listboxId}\n role=\"listbox\"\n >\n {filteredTags.map((tag, index) => (\n <button\n aria-selected={index === activeIndex}\n className={optionClassName(index === activeIndex)}\n data-testid={`${hyphenate(tag.label)}-select-option`}\n id={optionId(index)}\n key={tag.value}\n role=\"option\"\n type=\"button\"\n onClick={() => handleSelect(tag)}\n onMouseEnter={() => setActiveIndex(index)}\n >\n <Badge\n label={tag.label}\n variant={TAG_STYLE_TO_BADGE_VARIANT[tag.style] || \"secondary\"}\n />\n </button>\n ))}\n {canCreate && (\n <button\n aria-selected={activeIndex === filteredTags.length}\n className={optionClassName(activeIndex === filteredTags.length)}\n data-testid=\"create-new-tag-select-option\"\n id={optionId(filteredTags.length)}\n role=\"option\"\n type=\"button\"\n onClick={handleCreate}\n onMouseEnter={() => setActiveIndex(filteredTags.length)}\n >\n <Plus size={14} />\n <span className=\"truncate\">\n {t(\"neetoTags.button.createNewTag\")}\n {\": \"}\n <span className=\"font-medium\">{trimmedQuery}</span>\n </span>\n </button>\n )}\n {optionCount === 0 && (\n <div className=\"text-muted-foreground px-2 py-2 text-sm\">\n {t(\"neetoTags.common.noTagsFound\")}\n </div>\n )}\n </div>\n </div>,\n document.body\n );\n\n // Gear-anchored mode: render only the floating panel (the gear is the\n // trigger), with no in-body wrapper or button of its own.\n if (hideTriggerButton) return panel || null;\n\n return (\n <div className=\"inline-block\" ref={triggerRef}>\n <Button\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n disabled={isDisabled}\n icon={Plus}\n label={t(\"neetoTags.button.addTag\", SINGULAR)}\n size=\"sm\"\n variant=\"link\"\n onClick={() => onOpenChange(!open)}\n {...buttonProps}\n />\n {panel}\n </div>\n );\n};\n\nexport default PopoverTagsSelector;\n","import { Badge } from \"@bigbinary/neeto-atoms\";\nimport classNames from \"classnames\";\nimport { isNotEmpty } from \"neetocist\";\n\nimport { TAG_STYLE_TO_BADGE_VARIANT } from \"v2/common/constants\";\n\nconst TagsList = ({ selectedTags, isDisabled, handleDeleteTag, tagProps }) => (\n <div\n className={classNames(\n \"flex flex-row flex-wrap items-start justify-start gap-2 break-all\",\n { \"mb-2\": isNotEmpty(selectedTags) }\n )}\n >\n {selectedTags?.map(tag => (\n <Badge\n disabled={isDisabled}\n key={tag.value}\n label={tag.label}\n variant={TAG_STYLE_TO_BADGE_VARIANT[tag.style] || \"secondary\"}\n className={classNames({\n \"cursor-not-allowed opacity-50\": isDisabled,\n })}\n onDismiss={isDisabled ? undefined : () => handleDeleteTag(tag)}\n {...tagProps}\n />\n ))}\n </div>\n);\n\nexport default TagsList;\n","import { useRef } from \"react\";\n\nimport { Badge, Select } from \"@bigbinary/neeto-atoms\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { TAG_STYLE_TO_BADGE_VARIANT } from \"v2/common/constants\";\n\nconst renderTagOption = option => (\n <Badge\n label={option.label}\n variant={TAG_STYLE_TO_BADGE_VARIANT[option.style] || \"secondary\"}\n />\n);\n\nconst TagsSelector = ({\n defaultMenuIsOpen,\n tags,\n onChange,\n onCreateOption,\n selectProps,\n}) => {\n const isMenuOpen = useRef(defaultMenuIsOpen);\n\n const { t } = useTranslation();\n\n const handleOpenChange = open => {\n isMenuOpen.current = open;\n if (open) {\n selectProps.onMenuOpen?.();\n } else {\n selectProps.onMenuClose?.();\n }\n };\n\n const handleChange = value => {\n const selectedTag = tags.find(tag => tag.value === value);\n if (selectedTag) {\n onChange(selectedTag);\n }\n };\n\n return (\n <Select\n isCreatable\n isSearchable\n formatOptionLabel={renderTagOption}\n options={tags}\n placeholder={t(\"neetoTags.placeholder.selectOrCreateTag\")}\n {...{ ...selectProps, onCreateOption }}\n onChange={handleChange}\n onOpenChange={handleOpenChange}\n />\n );\n};\n\nexport default TagsSelector;\n","import { useMemo, useRef, useState } from \"react\";\n\nimport { Plus } from \"lucide-react\";\nimport { Button } from \"neetoatoms\";\nimport { isNotEmpty } from \"neetocist\";\nimport { SINGULAR } from \"neetocommons/v2/constants\";\nimport { showThumbsUpToastr } from \"neetocommons/v2/utils\";\nimport useHotkeys from \"neetohotkeys\";\nimport { pluck } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { KEYBOARD_SHORTCUTS } from \"./constants\";\nimport Container from \"./Container\";\nimport PopoverTagsSelector from \"./PopoverTagsSelector\";\nimport TagsList from \"./TagsList\";\nimport TagsSelector from \"./TagsSelector\";\n\n/**\n * A component that helps to manage tags.\n * Renders selected tags and, by default, a compact popover picker\n * (`pickerVariant=\"popover\"`) to search/create tags and remove them; pass\n * `pickerVariant=\"inline\"` for the legacy full-width select.\n */\nconst Tags = ({\n title = \"\",\n allTags,\n selectedTags,\n onTagSelect,\n onTagCreate,\n onTagDelete,\n tagProps,\n selectProps = {},\n buttonProps,\n showSuccessToastr = false,\n titleProps,\n containerProps = {},\n isUpdating = false,\n showAddTagsOnTitle = true,\n isLoading = false,\n showTitleBar = true,\n bodyProps = {},\n isDisabled = false,\n isMetadataBlock = false,\n pickerVariant = \"popover\",\n dataTestId,\n}) => {\n const { t } = useTranslation();\n\n const [isTagsDropdownVisible, setIsTagsDropdownVisible] = useState(false);\n\n // The title-bar/metadata settings gear, used as the popover's trigger anchor.\n const gearAnchorRef = useRef(null);\n\n useHotkeys(KEYBOARD_SHORTCUTS.addTag.sequence, event => {\n if (isDisabled) return;\n event.preventDefault();\n setIsTagsDropdownVisible(true);\n });\n\n const tags = useMemo(() => {\n if (!allTags) return [];\n\n if (!selectedTags) return allTags;\n\n const selectedTagValues = pluck(\"value\", selectedTags);\n\n return allTags.filter(({ value }) => !selectedTagValues.includes(value));\n }, [allTags, selectedTags]);\n\n const handleAddExistingTag = tag => {\n setIsTagsDropdownVisible(false);\n onTagSelect(tag);\n // @ts-ignore\n showSuccessToastr && showThumbsUpToastr();\n };\n\n const handleDeleteTag = tag => {\n onTagDelete(tag);\n // @ts-ignore\n showSuccessToastr && showThumbsUpToastr();\n };\n\n const handleCreateTag = tagName => {\n setIsTagsDropdownVisible(false);\n onTagCreate(tagName);\n };\n\n // Fall back to a `dataTestId` carried on `selectProps` so consumers that only\n // targeted the inline select can keep addressing the picker after the popover\n // default. Accept both the camelCase key and the kebab-case `data-testid`\n // React prop key, since consumers use either.\n const resolvedDataTestId =\n dataTestId ?? selectProps.dataTestId ?? selectProps[\"data-testid\"];\n\n const isPopoverPicker = pickerVariant === \"popover\";\n // A settings gear in the title bar (always shown in a metadata block) acts as\n // the popover's trigger and positioning anchor. When present, the popover\n // drops its own in-body \"Add tag\" button and opens directly below the gear.\n const hasTitleGear = isMetadataBlock || (showTitleBar && showAddTagsOnTitle);\n const isGearAnchoredPopover = isPopoverPicker && hasTitleGear;\n // Without a gear to anchor to, the popover renders its own in-body \"Add tag\"\n // button as the trigger (kept permanently visible so there is always an\n // anchor), e.g. when `showAddTagsOnTitle` is false or the title bar is hidden.\n const isInBodyPopoverPicker = isPopoverPicker && !hasTitleGear;\n\n const isAddTagsButtonVisible =\n !isPopoverPicker && !showAddTagsOnTitle && !isTagsDropdownVisible;\n\n const isTagsBodyVisible =\n isNotEmpty(selectedTags) ||\n (!isPopoverPicker && isTagsDropdownVisible) ||\n isAddTagsButtonVisible ||\n isInBodyPopoverPicker;\n\n const titleComponentProps = {\n isLoading,\n isUpdating,\n showAddTagsOnTitle,\n title,\n titleProps,\n showTitleBar,\n };\n\n const actionBlockProps = {\n isDisabled,\n setIsTagsDropdownVisible,\n anchorRef: isGearAnchoredPopover ? gearAnchorRef : undefined,\n };\n\n const tagsListProps = { handleDeleteTag, isDisabled, selectedTags, tagProps };\n\n const tagsSelectorProps = {\n defaultMenuIsOpen: showAddTagsOnTitle,\n tags,\n onChange: handleAddExistingTag,\n onCreateOption: handleCreateTag,\n selectProps,\n };\n\n const popoverTagsSelectorProps = {\n buttonProps,\n isDisabled,\n tags,\n dataTestId: resolvedDataTestId,\n open: isTagsDropdownVisible,\n onChange: handleAddExistingTag,\n onCreateOption: handleCreateTag,\n onOpenChange: setIsTagsDropdownVisible,\n };\n\n return (\n <>\n <Container\n {...{\n actionBlockProps,\n bodyProps,\n containerProps,\n isMetadataBlock,\n isTagsBodyVisible,\n titleComponentProps,\n }}\n // The gear is the popover's sole trigger; letting the header row toggle\n // too would race the panel's outside-click close and reopen it.\n isHeaderInteractive={!isGearAnchoredPopover}\n >\n {isNotEmpty(selectedTags) && <TagsList {...tagsListProps} />}\n {isInBodyPopoverPicker && (\n <PopoverTagsSelector {...popoverTagsSelectorProps} />\n )}\n {!isPopoverPicker && (\n <>\n {isTagsDropdownVisible && <TagsSelector {...tagsSelectorProps} />}\n {isAddTagsButtonVisible && (\n <Button\n disabled={isDisabled}\n icon={Plus}\n label={t(\"neetoTags.button.addTag\", SINGULAR)}\n size=\"sm\"\n variant=\"link\"\n onClick={() => setIsTagsDropdownVisible(true)}\n {...buttonProps}\n />\n )}\n </>\n )}\n </Container>\n {/* Anchored to the gear and rendered outside the body so it stays mounted\n (and openable) even when there are no tags to show a body box for. */}\n {isGearAnchoredPopover && (\n <PopoverTagsSelector\n {...popoverTagsSelectorProps}\n hideTriggerButton\n anchorRef={gearAnchorRef}\n />\n )}\n </>\n );\n};\n\nexport default Tags;\n"],"names":["KEYBOARD_SHORTCUTS","addTag","sequence","description","t","POPOVER_PANEL_WIDTH","POPOVER_VIEWPORT_MARGIN","POPOVER_TRIGGER_GAP","Title","_ref","_ref$titleProps","titleProps","title","isUpdating","isLoading","_useTranslation","useTranslation","tagsTitle","PLURAL","_useState","useState","_useState2","_slicedToArray","didStartUpdate","setDidStartUpdate","_useState3","_useState4","isCheckIconVisible","setIsCheckIconVisible","useEffect","setTimeout","_jsxs","className","children","_jsx","Label","_objectSpread","Spinner","Check","size","TitleActionBlock","isDisabled","setIsTagsDropdownVisible","anchorRef","ref","Button","disabled","icon","Settings","variant","onClick","event","stopPropagation","not","Container","isMetadataBlock","containerProps","actionBlockProps","titleComponentProps","isTagsBodyVisible","bodyProps","_ref$isHeaderInteract","isHeaderInteractive","onHeaderClick","showTitleBar","classNames","containerClassName","showAddTagsOnTitle","PopoverTagsSelector","_coords$top","_coords$left","open","onOpenChange","tags","onChange","onCreateOption","_ref$buttonProps","buttonProps","_ref$isDisabled","dataTestId","_ref$hideTriggerButto","hideTriggerButton","triggerRef","useRef","panelRef","rafRef","listboxId","useId","query","setQuery","activeIndex","setActiveIndex","_useState5","_useState6","coords","setCoords","trimmedQuery","trim","filteredTags","useMemo","search","toLowerCase","filter","_ref2","label","includes","canCreate","isNotEmpty","some","_ref3","optionCount","length","optionId","index","concat","focusTrigger","useCallback","_anchor$querySelector","anchor","current","querySelector","focus","preventScroll","close","_ref4","arguments","undefined","_ref4$restoreFocus","restoreFocus","handleSelect","tag","handleCreate","handleQueryChange","target","value","handleKeyDown","key","preventDefault","previous","updatePosition","_panelRef$current$off","_panelRef$current","trigger","rect","getBoundingClientRect","panelHeight","offsetHeight","left","Math","max","min","window","innerWidth","belowTop","bottom","overflowsBelow","innerHeight","fitsAbove","top","useLayoutEffect","_panelRef$current2","handleClickOutside","_triggerRef$current","_anchorRef$current","_panelRef$current3","contains","scheduleReposition","requestAnimationFrame","document","addEventListener","removeEventListener","cancelAnimationFrame","optionClassName","isActive","panel","createPortal","style","width","visibility","Input","placeholder","prefix","Search","role","onKeyDown","id","map","hyphenate","type","onMouseEnter","Badge","TAG_STYLE_TO_BADGE_VARIANT","Plus","body","SINGULAR","TagsList","selectedTags","handleDeleteTag","tagProps","onDismiss","renderTagOption","option","TagsSelector","defaultMenuIsOpen","selectProps","isMenuOpen","handleOpenChange","_selectProps$onMenuOp","onMenuOpen","call","_selectProps$onMenuCl","onMenuClose","handleChange","selectedTag","find","Select","isCreatable","isSearchable","formatOptionLabel","options","Tags","_ref$title","allTags","onTagSelect","onTagCreate","onTagDelete","_ref$selectProps","_ref$showSuccessToast","showSuccessToastr","_ref$containerProps","_ref$isUpdating","_ref$showAddTagsOnTit","_ref$isLoading","_ref$showTitleBar","_ref$bodyProps","_ref$isMetadataBlock","_ref$pickerVariant","pickerVariant","isTagsDropdownVisible","gearAnchorRef","useHotkeys","selectedTagValues","pluck","handleAddExistingTag","showThumbsUpToastr","handleCreateTag","tagName","resolvedDataTestId","isPopoverPicker","hasTitleGear","isGearAnchoredPopover","isInBodyPopoverPicker","isAddTagsButtonVisible","tagsListProps","tagsSelectorProps","popoverTagsSelectorProps","_Fragment"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigbinary/neeto-tags-frontend",
3
- "version": "2.2.35-beta1",
3
+ "version": "2.3.0-beta1",
4
4
  "description": "A repo acts as the source of truth for the new nano's structure, configs, data etc.",
5
5
  "license": "UNLICENSED",
6
6
  "homepage": "https://github.com/bigbinary/neeto-tags-nano",
@@ -71,13 +71,13 @@
71
71
  "@babel/runtime": "7.29.7",
72
72
  "@bigbinary/babel-preset-neeto": "^1.0.3",
73
73
  "@bigbinary/eslint-plugin-neeto": "1.9.1",
74
- "@bigbinary/neeto-atoms": "1.0.137",
74
+ "@bigbinary/neeto-atoms": "1.0.144",
75
75
  "@bigbinary/neeto-cist": "1.0.17",
76
- "@bigbinary/neeto-commons-frontend": "4.13.160",
76
+ "@bigbinary/neeto-commons-frontend": "4.13.165",
77
77
  "@bigbinary/neeto-filters-frontend": "4.3.45",
78
78
  "@bigbinary/neeto-hotkeys": "1.0.9",
79
79
  "@bigbinary/neeto-icons": "1.20.89",
80
- "@bigbinary/neeto-molecules": "5.3.31",
80
+ "@bigbinary/neeto-molecules": "5.5.6",
81
81
  "@bigbinary/neetoui": "8.8.3",
82
82
  "@emotion/is-prop-valid": "1.2.0",
83
83
  "@faker-js/faker": "8.2.0",
@@ -184,13 +184,13 @@
184
184
  },
185
185
  "peerDependencies": {
186
186
  "@babel/runtime": "7.29.7",
187
- "@bigbinary/neeto-atoms": "1.0.137",
187
+ "@bigbinary/neeto-atoms": "1.0.144",
188
188
  "@bigbinary/neeto-cist": "1.0.17",
189
- "@bigbinary/neeto-commons-frontend": "4.13.160",
189
+ "@bigbinary/neeto-commons-frontend": "4.13.165",
190
190
  "@bigbinary/neeto-filters-frontend": "4.3.45",
191
191
  "@bigbinary/neeto-hotkeys": "1.0.9",
192
192
  "@bigbinary/neeto-icons": "1.20.89",
193
- "@bigbinary/neeto-molecules": "5.3.31",
193
+ "@bigbinary/neeto-molecules": "5.5.6",
194
194
  "@bigbinary/neetoui": "8.8.3",
195
195
  "@honeybadger-io/js": "6.10.1",
196
196
  "@honeybadger-io/react": "6.1.25",