@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-
|
|
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 `
|
|
567
|
-
// inline select can keep addressing the picker after the popover
|
|
568
|
-
|
|
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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"}
|
package/dist/v2/TagsComponent.js
CHANGED
|
@@ -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 {
|
|
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 `
|
|
565
|
-
// inline select can keep addressing the picker after the popover
|
|
566
|
-
|
|
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.
|
|
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.
|
|
74
|
+
"@bigbinary/neeto-atoms": "1.0.144",
|
|
75
75
|
"@bigbinary/neeto-cist": "1.0.17",
|
|
76
|
-
"@bigbinary/neeto-commons-frontend": "4.13.
|
|
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.
|
|
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.
|
|
187
|
+
"@bigbinary/neeto-atoms": "1.0.144",
|
|
188
188
|
"@bigbinary/neeto-cist": "1.0.17",
|
|
189
|
-
"@bigbinary/neeto-commons-frontend": "4.13.
|
|
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.
|
|
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",
|