@payloadcms/ui 4.0.0-beta.4 → 4.0.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/dist/css/utilities.css +1 -0
  2. package/dist/elements/AddNewRelation/index.d.ts.map +1 -1
  3. package/dist/elements/AddNewRelation/index.js +4 -0
  4. package/dist/elements/AddNewRelation/index.js.map +1 -1
  5. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  6. package/dist/elements/AppHeader/index.js +2 -0
  7. package/dist/elements/AppHeader/index.js.map +1 -1
  8. package/dist/elements/Collapsible/index.css +1 -1
  9. package/dist/elements/ColumnSelection/Popup.css +2 -2
  10. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  11. package/dist/elements/DocumentDrawer/DrawerContent.js +15 -9
  12. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  13. package/dist/elements/DocumentHeader/Tabs/index.d.ts.map +1 -1
  14. package/dist/elements/DocumentHeader/Tabs/index.js +10 -8
  15. package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -1
  16. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts.map +1 -1
  17. package/dist/elements/FileDetails/DraggableFileDetails/index.js +19 -12
  18. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  19. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts.map +1 -1
  20. package/dist/elements/FileDetails/StaticFileDetails/index.js +63 -33
  21. package/dist/elements/FileDetails/StaticFileDetails/index.js.map +1 -1
  22. package/dist/elements/FileManager/index.d.ts.map +1 -1
  23. package/dist/elements/FileManager/index.js +18 -11
  24. package/dist/elements/FileManager/index.js.map +1 -1
  25. package/dist/elements/FilterTrigger/index.d.ts.map +1 -1
  26. package/dist/elements/FilterTrigger/index.js +80 -44
  27. package/dist/elements/FilterTrigger/index.js.map +1 -1
  28. package/dist/elements/ListControls/index.css +1 -0
  29. package/dist/elements/ListControls/index.d.ts.map +1 -1
  30. package/dist/elements/ListControls/index.js +7 -4
  31. package/dist/elements/ListControls/index.js.map +1 -1
  32. package/dist/elements/ListControls/types.d.ts +1 -0
  33. package/dist/elements/ListControls/types.d.ts.map +1 -1
  34. package/dist/elements/ListControls/types.js.map +1 -1
  35. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  36. package/dist/elements/ListDrawer/DrawerContent.js +18 -12
  37. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  38. package/dist/elements/LivePreview/Toolbar/index.d.ts.map +1 -1
  39. package/dist/elements/LivePreview/Toolbar/index.js +13 -7
  40. package/dist/elements/LivePreview/Toolbar/index.js.map +1 -1
  41. package/dist/elements/Nav/NavSidebarToggle/index.d.ts.map +1 -1
  42. package/dist/elements/Nav/NavSidebarToggle/index.js +26 -37
  43. package/dist/elements/Nav/NavSidebarToggle/index.js.map +1 -1
  44. package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
  45. package/dist/elements/Nav/SidebarTabs/index.client.js +9 -2
  46. package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
  47. package/dist/elements/Nav/SidebarTabs/index.css +1 -1
  48. package/dist/elements/Nav/context.d.ts +1 -0
  49. package/dist/elements/Nav/context.d.ts.map +1 -1
  50. package/dist/elements/Nav/context.js +2 -0
  51. package/dist/elements/Nav/context.js.map +1 -1
  52. package/dist/elements/Nav/getNavPrefs.d.ts.map +1 -1
  53. package/dist/elements/Nav/getNavPrefs.js +7 -2
  54. package/dist/elements/Nav/getNavPrefs.js.map +1 -1
  55. package/dist/elements/Nav/index.css +11 -0
  56. package/dist/elements/Popup/PopupButtonList/index.css +1 -1
  57. package/dist/elements/Popup/SubmenuScope.d.ts +3 -5
  58. package/dist/elements/Popup/SubmenuScope.d.ts.map +1 -1
  59. package/dist/elements/Popup/SubmenuScope.js +10 -54
  60. package/dist/elements/Popup/SubmenuScope.js.map +1 -1
  61. package/dist/elements/Popup/index.css +15 -0
  62. package/dist/elements/Popup/index.d.ts.map +1 -1
  63. package/dist/elements/Popup/index.js +69 -30
  64. package/dist/elements/Popup/index.js.map +1 -1
  65. package/dist/elements/Popup/useSubmenuPointerIntent.d.ts +16 -4
  66. package/dist/elements/Popup/useSubmenuPointerIntent.d.ts.map +1 -1
  67. package/dist/elements/Popup/useSubmenuPointerIntent.js +68 -27
  68. package/dist/elements/Popup/useSubmenuPointerIntent.js.map +1 -1
  69. package/dist/elements/PreviewButton/index.d.ts.map +1 -1
  70. package/dist/elements/PreviewButton/index.js +4 -0
  71. package/dist/elements/PreviewButton/index.js.map +1 -1
  72. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.d.ts.map +1 -1
  73. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js +1 -0
  74. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js.map +1 -1
  75. package/dist/elements/ReactSelect/MultiValue/index.css +1 -1
  76. package/dist/elements/ReactSelect/index.css +4 -2
  77. package/dist/elements/ReactSelect/index.d.ts.map +1 -1
  78. package/dist/elements/ReactSelect/index.js +8 -3
  79. package/dist/elements/ReactSelect/index.js.map +1 -1
  80. package/dist/elements/SchedulePublishButton/index.d.ts.map +1 -1
  81. package/dist/elements/SchedulePublishButton/index.js +4 -0
  82. package/dist/elements/SchedulePublishButton/index.js.map +1 -1
  83. package/dist/elements/Search/SearchInput/index.css +32 -3
  84. package/dist/elements/SegmentedControl/index.css +1 -1
  85. package/dist/elements/SidebarToggle/index.css +1 -1
  86. package/dist/elements/SortColumn/index.css +49 -5
  87. package/dist/elements/SortRow/index.css +1 -3
  88. package/dist/elements/SortRow/index.d.ts.map +1 -1
  89. package/dist/elements/SortRow/index.js +16 -10
  90. package/dist/elements/SortRow/index.js.map +1 -1
  91. package/dist/elements/StepNav/index.d.ts.map +1 -1
  92. package/dist/elements/StepNav/index.js +4 -1
  93. package/dist/elements/StepNav/index.js.map +1 -1
  94. package/dist/elements/Tabs/index.css +1 -1
  95. package/dist/elements/TimezonePicker/index.css +6 -5
  96. package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
  97. package/dist/elements/TimezonePicker/index.js +80 -43
  98. package/dist/elements/TimezonePicker/index.js.map +1 -1
  99. package/dist/elements/Upload/index.js +2 -0
  100. package/dist/elements/Upload/index.js.map +1 -1
  101. package/dist/elements/UploadDropzoneContent/index.d.ts.map +1 -1
  102. package/dist/elements/UploadDropzoneContent/index.js +1 -0
  103. package/dist/elements/UploadDropzoneContent/index.js.map +1 -1
  104. package/dist/elements/UserMenu/index.css +1 -1
  105. package/dist/exports/client/{DatePicker-AZBZPMY6.js → DatePicker-DJN2NVQC.js} +2 -2
  106. package/dist/exports/client/chunk-GQEFXRCN.js +29 -0
  107. package/dist/exports/client/{chunk-ZP2PB6M4.js.map → chunk-GQEFXRCN.js.map} +4 -4
  108. package/dist/exports/client/index.js +27 -27
  109. package/dist/exports/client/index.js.map +4 -4
  110. package/dist/fields/Blocks/SectionTitle/index.css +21 -2
  111. package/dist/fields/DateTime/index.js +1 -1
  112. package/dist/fields/DateTime/index.js.map +1 -1
  113. package/dist/fields/Upload/Input.d.ts.map +1 -1
  114. package/dist/fields/Upload/Input.js +1 -0
  115. package/dist/fields/Upload/Input.js.map +1 -1
  116. package/dist/fields/Upload/RelationshipContent/index.css +1 -1
  117. package/dist/forms/Form/index.d.ts.map +1 -1
  118. package/dist/forms/Form/index.js +9 -7
  119. package/dist/forms/Form/index.js.map +1 -1
  120. package/dist/hooks/usePointerSafeArea.d.ts +29 -0
  121. package/dist/hooks/usePointerSafeArea.d.ts.map +1 -0
  122. package/dist/hooks/usePointerSafeArea.js +232 -0
  123. package/dist/hooks/usePointerSafeArea.js.map +1 -0
  124. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  125. package/dist/providers/ListQuery/index.js +17 -1
  126. package/dist/providers/ListQuery/index.js.map +1 -1
  127. package/dist/styles.css +2 -1
  128. package/dist/views/List/index.client.d.ts.map +1 -1
  129. package/dist/views/List/index.client.js +15 -9
  130. package/dist/views/List/index.client.js.map +1 -1
  131. package/dist/views/Version/Default/index.d.ts.map +1 -1
  132. package/dist/views/Version/Default/index.js +6 -9
  133. package/dist/views/Version/Default/index.js.map +1 -1
  134. package/dist/views/Version/Default/types.d.ts +0 -1
  135. package/dist/views/Version/Default/types.d.ts.map +1 -1
  136. package/dist/views/Version/Default/types.js.map +1 -1
  137. package/dist/views/Version/Restore/index.css +0 -11
  138. package/dist/views/Version/Restore/index.d.ts +0 -1
  139. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  140. package/dist/views/Version/Restore/index.js +87 -115
  141. package/dist/views/Version/Restore/index.js.map +1 -1
  142. package/dist/views/Version/index.d.ts.map +1 -1
  143. package/dist/views/Version/index.js +1 -2
  144. package/dist/views/Version/index.js.map +1 -1
  145. package/package.json +4 -4
  146. package/dist/exports/client/chunk-ZP2PB6M4.js +0 -29
  147. /package/dist/exports/client/{DatePicker-AZBZPMY6.js.map → DatePicker-DJN2NVQC.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["arrayMove","horizontalListSortingStrategy","getTranslation","React","useCallback","useEffect","useId","useMemo","useState","Select","CreatableSelect","useDebouncedEffect","useTranslation","DraggableSortable","ShimmerEffect","ClearIndicator","Control","DefaultMenuPortal","DropdownIndicator","getCaptureMenuScroll","getMenuListStyles","getMenuStyles","Input","generateMultiValueDraggableID","MultiValue","MultiValueLabel","MultiValueRemove","Option","SelectOption","SingleValue","ValueContainer","DEFAULT_MAX_MENU_HEIGHT","SelectAdapter","props","i18n","t","inputValue","setInputValue","uuid","hasMounted","setHasMounted","captureMenuScroll","captureMenuScrollProp","className","classNames","externalClassNames","components","disabled","filterOption","undefined","getOptionValue","isClearable","isCreatable","isLoading","isSearchable","menuPortalTarget","menuPortalTargetProp","menuPosition","menuPositionProp","noOptionsMessage","numberOnly","onChange","onMenuClose","onMenuOpen","options","placeholder","showError","styles","externalStyles","value","document","body","shouldUseFloatingMenuPortal","Boolean","MenuPortal","isLoadingDebounced","setIsLoadingDebounced","menuClassName","state","placement","external","menu","filter","join","selectClassNames","menuList","selectComponents","sharedSelectProps","classNamePrefix","instanceId","isDisabled","loadingMessage","maxMenuHeight","menuPlacement","menuShouldBlockScroll","menuPortal","rsStyles","zIndex","control","minHeight","option","unstyled","_jsx","height","handleKeyDown","event","acceptableKeys","isNumber","test","key","isActionKey","includes","preventDefault","trim","nativeEvent","isComposing","label","onInputChange","newValue","onKeyDown","SortableSelect","draggableIDs","Array","isArray","map","optionValue","ids","onDragEnd","moveFromIndex","moveToIndex","sorted","sortingStrategy","ReactSelect","isMulti","isSortable"],"sources":["../../../src/elements/ReactSelect/index.tsx"],"sourcesContent":["'use client'\nimport type { KeyboardEventHandler } from 'react'\nimport type { GroupBase, MenuListProps, MenuProps } from 'react-select'\n\nimport { arrayMove, horizontalListSortingStrategy } from '@dnd-kit/sortable'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useEffect, useId, useMemo, useState } from 'react'\nimport Select from 'react-select'\nimport CreatableSelect from 'react-select/creatable'\n\nimport type { Option, ReactSelectAdapterProps } from './types.js'\nexport type { Option } from './types.js'\n\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { DraggableSortable } from '../DraggableSortable/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\nimport { ClearIndicator } from './ClearIndicator/index.js'\nimport { Control } from './Control/index.js'\nimport { DefaultMenuPortal } from './DefaultMenuPortal.js'\nimport { DropdownIndicator } from './DropdownIndicator/index.js'\nimport { getCaptureMenuScroll } from './getCaptureMenuScroll.js'\nimport { getMenuListStyles } from './getMenuListStyles.js'\nimport { getMenuStyles } from './getMenuStyles.js'\nimport { Input } from './Input/index.js'\nimport { generateMultiValueDraggableID, MultiValue } from './MultiValue/index.js'\nimport { MultiValueLabel } from './MultiValueLabel/index.js'\nimport { MultiValueRemove } from './MultiValueRemove/index.js'\nimport { Option as SelectOption } from './Option/index.js'\nimport { SingleValue } from './SingleValue/index.js'\nimport { ValueContainer } from './ValueContainer/index.js'\nimport './index.css'\n\nconst DEFAULT_MAX_MENU_HEIGHT = 300\n\nconst SelectAdapter: React.FC<ReactSelectAdapterProps> = (props) => {\n const { i18n, t } = useTranslation()\n const [inputValue, setInputValue] = useState('') // for creatable select\n const uuid = useId()\n const [hasMounted, setHasMounted] = useState(false)\n\n const {\n captureMenuScroll: captureMenuScrollProp,\n className,\n classNames: externalClassNames,\n components,\n disabled = false,\n filterOption = undefined,\n getOptionValue,\n isClearable = true,\n isCreatable,\n isLoading,\n isSearchable = true,\n menuPortalTarget: menuPortalTargetProp,\n menuPosition: menuPositionProp,\n noOptionsMessage = () => t('general:noOptions'),\n numberOnly = false,\n onChange,\n onMenuClose,\n onMenuOpen,\n options,\n placeholder = t('general:selectValue'),\n showError,\n styles: externalStyles,\n value,\n } = props\n\n const menuPortalTarget =\n menuPortalTargetProp === undefined\n ? typeof document !== 'undefined'\n ? document.body\n : null\n : menuPortalTargetProp\n\n const menuPosition = menuPositionProp ?? (menuPortalTarget ? 'fixed' : undefined)\n const shouldUseFloatingMenuPortal = Boolean(menuPortalTarget && !components?.MenuPortal)\n const captureMenuScroll = getCaptureMenuScroll({\n captureMenuScroll: captureMenuScrollProp,\n menuPortalTarget,\n })\n\n useEffect(() => {\n setHasMounted(true)\n }, [])\n\n // Debounce the loading state so that fast option fetches (e.g. relationship\n // fields that resolve almost instantly) don't cause the clear indicator to\n // flash to react-select's loading indicator and back. The loading indicator\n // only appears once a load takes longer than the threshold below.\n const [isLoadingDebounced, setIsLoadingDebounced] = useState(false)\n\n useDebouncedEffect(\n () => {\n setIsLoadingDebounced(isLoading)\n },\n [isLoading],\n 250,\n )\n\n const menuClassName = useCallback(\n (state: MenuProps<Option, boolean, GroupBase<Option>>) => {\n const placement = state.placement ? `rs__menu--placement-${state.placement}` : ''\n const external = externalClassNames?.menu?.(state) ?? ''\n return [placement, external].filter(Boolean).join(' ')\n },\n [externalClassNames],\n )\n\n const selectClassNames = useMemo(\n () => ({\n ...externalClassNames,\n menu: menuClassName,\n menuList: (state: MenuListProps<Option, boolean, GroupBase<Option>>) => {\n const external = externalClassNames?.menuList?.(state) ?? ''\n return ['scrollbar-thin', external].filter(Boolean).join(' ')\n },\n }),\n [externalClassNames, menuClassName],\n )\n\n const selectComponents = useMemo(\n () => ({\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MenuPortal: DefaultMenuPortal,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n Option: SelectOption,\n SingleValue,\n ValueContainer,\n ...components,\n }),\n [components],\n )\n\n const sharedSelectProps = {\n captureMenuScroll,\n className: [className, 'react-select', showError && 'react-select--error']\n .filter(Boolean)\n .join(' '),\n classNamePrefix: 'rs',\n classNames: selectClassNames,\n components: selectComponents,\n filterOption,\n instanceId: uuid,\n isClearable,\n isDisabled: disabled,\n isLoading: isLoadingDebounced,\n isSearchable,\n loadingMessage: () => t('general:loading') + '...',\n maxMenuHeight: DEFAULT_MAX_MENU_HEIGHT,\n menuPlacement: 'auto' as const,\n menuPortalTarget,\n menuPosition,\n menuShouldBlockScroll: false,\n noOptionsMessage,\n onChange,\n onMenuClose,\n onMenuOpen,\n options,\n placeholder: getTranslation(placeholder, i18n),\n styles: {\n menu: getMenuStyles({\n externalStyles,\n shouldUseFloatingMenuPortal,\n }),\n // When portaling to document.body, the portal container needs an explicit\n // z-index so the menu appears above drawers and dialogs. unstyled={true}\n // strips react-select's default zIndex:9999 from the portal container.\n ...(menuPortalTarget && {\n menuPortal: (rsStyles, state) => ({\n ...rsStyles,\n zIndex: 'var(--z-portal-element)',\n ...externalStyles?.menuPortal?.(rsStyles, state),\n }),\n }),\n // Remove the default react-select min-height so our CSS can control it\n control: (rsStyles, state) => ({\n ...rsStyles,\n minHeight: undefined,\n ...externalStyles?.control?.(rsStyles, state),\n }),\n // Allow external option styles to override emotion defaults\n option: (rsStyles, state) => ({\n ...rsStyles,\n ...externalStyles?.option?.(rsStyles, state),\n }),\n // Keep react-select's computed maxHeight so the menu can fit available\n // viewport space near screen edges (instead of using a fixed class value).\n menuList: getMenuListStyles(externalStyles, shouldUseFloatingMenuPortal),\n },\n unstyled: true,\n }\n\n if (!hasMounted) {\n return <ShimmerEffect height=\"var(--field-min-height-large)\" />\n }\n\n if (!isCreatable) {\n return (\n <div>\n <Select<Option, boolean, GroupBase<Option>>\n {...props}\n {...sharedSelectProps}\n getOptionValue={getOptionValue}\n value={value}\n />\n </div>\n )\n }\n\n const handleKeyDown: KeyboardEventHandler = (event) => {\n if (numberOnly === true) {\n const acceptableKeys = [\n 'Tab',\n 'Escape',\n 'Backspace',\n 'Enter',\n 'ArrowRight',\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowDown',\n ]\n const isNumber = !/\\D/.test(event.key)\n const isActionKey = acceptableKeys.includes(event.key)\n if (!isNumber && !isActionKey) {\n event.preventDefault()\n return\n }\n }\n\n if (!value || !inputValue || inputValue.trim() === '') {\n return\n }\n\n if (filterOption && !filterOption(null, inputValue)) {\n return\n }\n\n if (event.nativeEvent.isComposing) {\n return\n }\n\n switch (event.key) {\n case 'Enter':\n case 'Tab':\n onChange([\n ...(value as Option[]),\n {\n label: inputValue,\n value: inputValue,\n },\n ])\n setInputValue('')\n event.preventDefault()\n break\n default:\n break\n }\n }\n\n return (\n <div>\n <CreatableSelect<Option, boolean, GroupBase<Option>>\n {...props}\n {...sharedSelectProps}\n inputValue={inputValue}\n onInputChange={(newValue) => setInputValue(newValue)}\n onKeyDown={handleKeyDown}\n value={value}\n />\n </div>\n )\n}\n\nconst SortableSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { getOptionValue, onChange, value } = props\n\n let draggableIDs: string[] = []\n if (value) {\n draggableIDs = (Array.isArray(value) ? value : [value]).map((optionValue) => {\n return generateMultiValueDraggableID(optionValue, getOptionValue)\n })\n }\n\n return (\n <DraggableSortable\n className=\"react-select-container\"\n ids={draggableIDs}\n onDragEnd={({ moveFromIndex, moveToIndex }) => {\n let sorted = value\n if (value && Array.isArray(value)) {\n sorted = arrayMove(value, moveFromIndex, moveToIndex)\n }\n onChange(sorted)\n }}\n sortingStrategy={horizontalListSortingStrategy}\n >\n <SelectAdapter {...props} />\n </DraggableSortable>\n )\n}\n\nexport const ReactSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { isMulti, isSortable } = props\n\n if (isMulti && isSortable) {\n return <SortableSelect {...props} />\n }\n\n return <SelectAdapter {...props} />\n}\n"],"mappings":"AAAA;;;AAIA,SAASA,SAAS,EAAEC,6BAA6B,QAAQ;AACzD,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,KAAK,EAAEC,OAAO,EAAEC,QAAQ,QAAQ;AACxE,OAAOC,MAAA,MAAY;AACnB,OAAOC,eAAA,MAAqB;AAK5B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,cAAc,QAAQ;AAC/B,SAASC,iBAAiB,QAAQ;AAClC,SAASC,aAAa,QAAQ;AAC9B,SAASC,cAAc,QAAQ;AAC/B,SAASC,OAAO,QAAQ;AACxB,SAASC,iBAAiB,QAAQ;AAClC,SAASC,iBAAiB,QAAQ;AAClC,SAASC,oBAAoB,QAAQ;AACrC,SAASC,iBAAiB,QAAQ;AAClC,SAASC,aAAa,QAAQ;AAC9B,SAASC,KAAK,QAAQ;AACtB,SAASC,6BAA6B,EAAEC,UAAU,QAAQ;AAC1D,SAASC,eAAe,QAAQ;AAChC,SAASC,gBAAgB,QAAQ;AACjC,SAASC,MAAA,IAAUC,YAAY,QAAQ;AACvC,SAASC,WAAW,QAAQ;AAC5B,SAASC,cAAc,QAAQ;AAC/B,OAAO;AAEP,MAAMC,uBAAA,GAA0B;AAEhC,MAAMC,aAAA,GAAoDC,KAAA;EACxD,MAAM;IAAEC,IAAI;IAAEC;EAAC,CAAE,GAAGvB,cAAA;EACpB,MAAM,CAACwB,UAAA,EAAYC,aAAA,CAAc,GAAG7B,QAAA,CAAS,IAAI;AAAA;EACjD,MAAM8B,IAAA,GAAOhC,KAAA;EACb,MAAM,CAACiC,UAAA,EAAYC,aAAA,CAAc,GAAGhC,QAAA,CAAS;EAE7C,MAAM;IACJiC,iBAAA,EAAmBC,qBAAqB;IACxCC,SAAS;IACTC,UAAA,EAAYC,kBAAkB;IAC9BC,UAAU;IACVC,QAAA,GAAW,KAAK;IAChBC,YAAA,GAAeC,SAAS;IACxBC,cAAc;IACdC,WAAA,GAAc,IAAI;IAClBC,WAAW;IACXC,SAAS;IACTC,YAAA,GAAe,IAAI;IACnBC,gBAAA,EAAkBC,oBAAoB;IACtCC,YAAA,EAAcC,gBAAgB;IAC9BC,gBAAA,GAAmBA,CAAA,KAAMxB,CAAA,CAAE,oBAAoB;IAC/CyB,UAAA,GAAa,KAAK;IAClBC,QAAQ;IACRC,WAAW;IACXC,UAAU;IACVC,OAAO;IACPC,WAAA,GAAc9B,CAAA,CAAE,sBAAsB;IACtC+B,SAAS;IACTC,MAAA,EAAQC,cAAc;IACtBC;EAAK,CACN,GAAGpC,KAAA;EAEJ,MAAMsB,gBAAA,GACJC,oBAAA,KAAyBP,SAAA,GACrB,OAAOqB,QAAA,KAAa,cAClBA,QAAA,CAASC,IAAI,GACb,OACFf,oBAAA;EAEN,MAAMC,YAAA,GAAeC,gBAAA,KAAqBH,gBAAA,GAAmB,UAAUN,SAAQ;EAC/E,MAAMuB,2BAAA,GAA8BC,OAAA,CAAQlB,gBAAA,IAAoB,CAACT,UAAA,EAAY4B,UAAA;EAC7E,MAAMjC,iBAAA,GAAoBtB,oBAAA,CAAqB;IAC7CsB,iBAAA,EAAmBC,qBAAA;IACnBa;EACF;EAEAlD,SAAA,CAAU;IACRmC,aAAA,CAAc;EAChB,GAAG,EAAE;EAEL;EACA;EACA;EACA;EACA,MAAM,CAACmC,kBAAA,EAAoBC,qBAAA,CAAsB,GAAGpE,QAAA,CAAS;EAE7DG,kBAAA,CACE;IACEiE,qBAAA,CAAsBvB,SAAA;EACxB,GACA,CAACA,SAAA,CAAU,EACX;EAGF,MAAMwB,aAAA,GAAgBzE,WAAA,CACnB0E,KAAA;IACC,MAAMC,SAAA,GAAYD,KAAA,CAAMC,SAAS,GAAG,uBAAuBD,KAAA,CAAMC,SAAS,EAAE,GAAG;IAC/E,MAAMC,QAAA,GAAWnC,kBAAA,EAAoBoC,IAAA,GAAOH,KAAA,KAAU;IACtD,OAAO,CAACC,SAAA,EAAWC,QAAA,CAAS,CAACE,MAAM,CAACT,OAAA,EAASU,IAAI,CAAC;EACpD,GACA,CAACtC,kBAAA,CAAmB;EAGtB,MAAMuC,gBAAA,GAAmB7E,OAAA,CACvB,OAAO;IACL,GAAGsC,kBAAkB;IACrBoC,IAAA,EAAMJ,aAAA;IACNQ,QAAA,EAAWP,OAAA;MACT,MAAME,UAAA,GAAWnC,kBAAA,EAAoBwC,QAAA,GAAWP,OAAA,KAAU;MAC1D,OAAO,CAAC,kBAAkBE,UAAA,CAAS,CAACE,MAAM,CAACT,OAAA,EAASU,IAAI,CAAC;IAC3D;EACF,IACA,CAACtC,kBAAA,EAAoBgC,aAAA,CAAc;EAGrC,MAAMS,gBAAA,GAAmB/E,OAAA,CACvB,OAAO;IACLQ,cAAA;IACAC,OAAA;IACAE,iBAAA;IACAI,KAAA;IACAoD,UAAA,EAAYzD,iBAAA;IACZO,UAAA;IACAC,eAAA;IACAC,gBAAA;IACAC,MAAA,EAAQC,YAAA;IACRC,WAAA;IACAC,cAAA;IACA,GAAGgB;EACL,IACA,CAACA,UAAA,CAAW;EAGd,MAAMyC,iBAAA,GAAoB;IACxB9C,iBAAA;IACAE,SAAA,EAAW,CAACA,SAAA,EAAW,gBAAgBuB,SAAA,IAAa,sBAAsB,CACvEgB,MAAM,CAACT,OAAA,EACPU,IAAI,CAAC;IACRK,eAAA,EAAiB;IACjB5C,UAAA,EAAYwC,gBAAA;IACZtC,UAAA,EAAYwC,gBAAA;IACZtC,YAAA;IACAyC,UAAA,EAAYnD,IAAA;IACZa,WAAA;IACAuC,UAAA,EAAY3C,QAAA;IACZM,SAAA,EAAWsB,kBAAA;IACXrB,YAAA;IACAqC,cAAA,EAAgBA,CAAA,KAAMxD,CAAA,CAAE,qBAAqB;IAC7CyD,aAAA,EAAe7D,uBAAA;IACf8D,aAAA,EAAe;IACftC,gBAAA;IACAE,YAAA;IACAqC,qBAAA,EAAuB;IACvBnC,gBAAA;IACAE,QAAA;IACAC,WAAA;IACAC,UAAA;IACAC,OAAA;IACAC,WAAA,EAAa/D,cAAA,CAAe+D,WAAA,EAAa/B,IAAA;IACzCiC,MAAA,EAAQ;MACNc,IAAA,EAAM5D,aAAA,CAAc;QAClB+C,cAAA;QACAI;MACF;MACA;MACA;MACA;MACA,IAAIjB,gBAAA,IAAoB;QACtBwC,UAAA,EAAYA,CAACC,QAAA,EAAUlB,OAAA,MAAW;UAChC,GAAGkB,QAAQ;UACXC,MAAA,EAAQ;UACR,GAAG7B,cAAA,EAAgB2B,UAAA,GAAaC,QAAA,EAAUlB,OAAA;QAC5C;MACF,CAAC;MACD;MACAoB,OAAA,EAASA,CAACF,UAAA,EAAUlB,OAAA,MAAW;QAC7B,GAAGkB,UAAQ;QACXG,SAAA,EAAWlD,SAAA;QACX,GAAGmB,cAAA,EAAgB8B,OAAA,GAAUF,UAAA,EAAUlB,OAAA;MACzC;MACA;MACAsB,MAAA,EAAQA,CAACJ,UAAA,EAAUlB,OAAA,MAAW;QAC5B,GAAGkB,UAAQ;QACX,GAAG5B,cAAA,EAAgBgC,MAAA,GAASJ,UAAA,EAAUlB,OAAA;MACxC;MACA;MACA;MACAO,QAAA,EAAUjE,iBAAA,CAAkBgD,cAAA,EAAgBI,2BAAA;IAC9C;IACA6B,QAAA,EAAU;EACZ;EAEA,IAAI,CAAC9D,UAAA,EAAY;IACf,oBAAO+D,IAAA,CAACxF,aAAA;MAAcyF,MAAA,EAAO;;EAC/B;EAEA,IAAI,CAACnD,WAAA,EAAa;IAChB,oBACEkD,IAAA,CAAC;gBACC,aAAAA,IAAA,CAAC7F,MAAA;QACE,GAAGwB,KAAK;QACR,GAAGsD,iBAAiB;QACrBrC,cAAA,EAAgBA,cAAA;QAChBmB,KAAA,EAAOA;;;EAIf;EAEA,MAAMmC,aAAA,GAAuCC,KAAA;IAC3C,IAAI7C,UAAA,KAAe,MAAM;MACvB,MAAM8C,cAAA,GAAiB,CACrB,OACA,UACA,aACA,SACA,cACA,aACA,WACA,YACD;MACD,MAAMC,QAAA,GAAW,CAAC,KAAKC,IAAI,CAACH,KAAA,CAAMI,GAAG;MACrC,MAAMC,WAAA,GAAcJ,cAAA,CAAeK,QAAQ,CAACN,KAAA,CAAMI,GAAG;MACrD,IAAI,CAACF,QAAA,IAAY,CAACG,WAAA,EAAa;QAC7BL,KAAA,CAAMO,cAAc;QACpB;MACF;IACF;IAEA,IAAI,CAAC3C,KAAA,IAAS,CAACjC,UAAA,IAAcA,UAAA,CAAW6E,IAAI,OAAO,IAAI;MACrD;IACF;IAEA,IAAIjE,YAAA,IAAgB,CAACA,YAAA,CAAa,MAAMZ,UAAA,GAAa;MACnD;IACF;IAEA,IAAIqE,KAAA,CAAMS,WAAW,CAACC,WAAW,EAAE;MACjC;IACF;IAEA,QAAQV,KAAA,CAAMI,GAAG;MACf,KAAK;MACL,KAAK;QACHhD,QAAA,CAAS,C,GACHQ,KAAA,EACJ;UACE+C,KAAA,EAAOhF,UAAA;UACPiC,KAAA,EAAOjC;QACT,EACD;QACDC,aAAA,CAAc;QACdoE,KAAA,CAAMO,cAAc;QACpB;MACF;QACE;IACJ;EACF;EAEA,oBACEV,IAAA,CAAC;cACC,aAAAA,IAAA,CAAC5F,eAAA;MACE,GAAGuB,KAAK;MACR,GAAGsD,iBAAiB;MACrBnD,UAAA,EAAYA,UAAA;MACZiF,aAAA,EAAgBC,QAAA,IAAajF,aAAA,CAAciF,QAAA;MAC3CC,SAAA,EAAWf,aAAA;MACXnC,KAAA,EAAOA;;;AAIf;AAEA,MAAMmD,cAAA,GAAqDvF,KAAA;EACzD,MAAM;IAAEiB,cAAc;IAAEW,QAAQ;IAAEQ;EAAK,CAAE,GAAGpC,KAAA;EAE5C,IAAIwF,YAAA,GAAyB,EAAE;EAC/B,IAAIpD,KAAA,EAAO;IACToD,YAAA,GAAe,CAACC,KAAA,CAAMC,OAAO,CAACtD,KAAA,IAASA,KAAA,GAAQ,CAACA,KAAA,CAAM,EAAEuD,GAAG,CAAEC,WAAA;MAC3D,OAAOtG,6BAAA,CAA8BsG,WAAA,EAAa3E,cAAA;IACpD;EACF;EAEA,oBACEoD,IAAA,CAACzF,iBAAA;IACC8B,SAAA,EAAU;IACVmF,GAAA,EAAKL,YAAA;IACLM,SAAA,EAAWA,CAAC;MAAEC,aAAa;MAAEC;IAAW,CAAE;MACxC,IAAIC,MAAA,GAAS7D,KAAA;MACb,IAAIA,KAAA,IAASqD,KAAA,CAAMC,OAAO,CAACtD,KAAA,GAAQ;QACjC6D,MAAA,GAASlI,SAAA,CAAUqE,KAAA,EAAO2D,aAAA,EAAeC,WAAA;MAC3C;MACApE,QAAA,CAASqE,MAAA;IACX;IACAC,eAAA,EAAiBlI,6BAAA;cAEjB,aAAAqG,IAAA,CAACtE,aAAA;MAAe,GAAGC;;;AAGzB;AAEA,OAAO,MAAMmG,WAAA,GAAkDnG,KAAA;EAC7D,MAAM;IAAEoG,OAAO;IAAEC;EAAU,CAAE,GAAGrG,KAAA;EAEhC,IAAIoG,OAAA,IAAWC,UAAA,EAAY;IACzB,oBAAOhC,IAAA,CAACkB,cAAA;MAAgB,GAAGvF;;EAC7B;EAEA,oBAAOqE,IAAA,CAACtE,aAAA;IAAe,GAAGC;;AAC5B","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["arrayMove","horizontalListSortingStrategy","getTranslation","React","useCallback","useEffect","useId","useMemo","useState","Select","CreatableSelect","useDebouncedEffect","useTranslation","DraggableSortable","ShimmerEffect","ClearIndicator","Control","DefaultMenuPortal","DropdownIndicator","getCaptureMenuScroll","getMenuListStyles","getMenuStyles","Input","generateMultiValueDraggableID","MultiValue","MultiValueLabel","MultiValueRemove","Option","SelectOption","SingleValue","ValueContainer","DEFAULT_MAX_MENU_HEIGHT","SelectAdapter","props","i18n","t","inputValue","setInputValue","uuid","hasMounted","setHasMounted","captureMenuScroll","captureMenuScrollProp","className","classNames","externalClassNames","components","disabled","filterOption","undefined","getOptionValue","isClearable","isCreatable","isLoading","isSearchable","menuPortalTarget","menuPortalTargetProp","menuPosition","menuPositionProp","noOptionsMessage","numberOnly","onChange","onMenuClose","onMenuOpen","options","placeholder","showError","styles","externalStyles","value","document","body","shouldUseFloatingMenuPortal","Boolean","MenuPortal","isLoadingDebounced","setIsLoadingDebounced","menuClassName","state","placement","external","menu","filter","join","selectClassNames","menuList","selectComponents","sharedSelectProps","classNamePrefix","instanceId","isDisabled","loadingMessage","maxMenuHeight","menuPlacement","menuShouldBlockScroll","menuPortal","rsStyles","zIndex","control","minHeight","input","gridTemplateColumns","option","unstyled","_jsx","height","handleKeyDown","event","acceptableKeys","isNumber","test","key","isActionKey","includes","preventDefault","trim","nativeEvent","isComposing","label","onInputChange","newValue","onKeyDown","SortableSelect","draggableIDs","Array","isArray","map","optionValue","ids","onDragEnd","moveFromIndex","moveToIndex","sorted","sortingStrategy","ReactSelect","isMulti","isSortable"],"sources":["../../../src/elements/ReactSelect/index.tsx"],"sourcesContent":["'use client'\nimport type { KeyboardEventHandler } from 'react'\nimport type { GroupBase, MenuListProps, MenuProps } from 'react-select'\n\nimport { arrayMove, horizontalListSortingStrategy } from '@dnd-kit/sortable'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useEffect, useId, useMemo, useState } from 'react'\nimport Select from 'react-select'\nimport CreatableSelect from 'react-select/creatable'\n\nimport type { Option, ReactSelectAdapterProps } from './types.js'\nexport type { Option } from './types.js'\n\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { DraggableSortable } from '../DraggableSortable/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\nimport { ClearIndicator } from './ClearIndicator/index.js'\nimport { Control } from './Control/index.js'\nimport { DefaultMenuPortal } from './DefaultMenuPortal.js'\nimport { DropdownIndicator } from './DropdownIndicator/index.js'\nimport { getCaptureMenuScroll } from './getCaptureMenuScroll.js'\nimport { getMenuListStyles } from './getMenuListStyles.js'\nimport { getMenuStyles } from './getMenuStyles.js'\nimport { Input } from './Input/index.js'\nimport { generateMultiValueDraggableID, MultiValue } from './MultiValue/index.js'\nimport { MultiValueLabel } from './MultiValueLabel/index.js'\nimport { MultiValueRemove } from './MultiValueRemove/index.js'\nimport { Option as SelectOption } from './Option/index.js'\nimport { SingleValue } from './SingleValue/index.js'\nimport { ValueContainer } from './ValueContainer/index.js'\nimport './index.css'\n\nconst DEFAULT_MAX_MENU_HEIGHT = 300\n\nconst SelectAdapter: React.FC<ReactSelectAdapterProps> = (props) => {\n const { i18n, t } = useTranslation()\n const [inputValue, setInputValue] = useState('') // for creatable select\n const uuid = useId()\n const [hasMounted, setHasMounted] = useState(false)\n\n const {\n captureMenuScroll: captureMenuScrollProp,\n className,\n classNames: externalClassNames,\n components,\n disabled = false,\n filterOption = undefined,\n getOptionValue,\n isClearable = true,\n isCreatable,\n isLoading,\n isSearchable = true,\n menuPortalTarget: menuPortalTargetProp,\n menuPosition: menuPositionProp,\n noOptionsMessage = () => t('general:noOptions'),\n numberOnly = false,\n onChange,\n onMenuClose,\n onMenuOpen,\n options,\n placeholder = t('general:selectValue'),\n showError,\n styles: externalStyles,\n value,\n } = props\n\n const menuPortalTarget =\n menuPortalTargetProp === undefined\n ? typeof document !== 'undefined'\n ? document.body\n : null\n : menuPortalTargetProp\n\n const menuPosition = menuPositionProp ?? (menuPortalTarget ? 'fixed' : undefined)\n const shouldUseFloatingMenuPortal = Boolean(menuPortalTarget && !components?.MenuPortal)\n const captureMenuScroll = getCaptureMenuScroll({\n captureMenuScroll: captureMenuScrollProp,\n menuPortalTarget,\n })\n\n useEffect(() => {\n setHasMounted(true)\n }, [])\n\n // Debounce the loading state so that fast option fetches (e.g. relationship\n // fields that resolve almost instantly) don't cause the clear indicator to\n // flash to react-select's loading indicator and back. The loading indicator\n // only appears once a load takes longer than the threshold below.\n const [isLoadingDebounced, setIsLoadingDebounced] = useState(false)\n\n useDebouncedEffect(\n () => {\n setIsLoadingDebounced(isLoading)\n },\n [isLoading],\n 250,\n )\n\n const menuClassName = useCallback(\n (state: MenuProps<Option, boolean, GroupBase<Option>>) => {\n const placement = state.placement ? `rs__menu--placement-${state.placement}` : ''\n const external = externalClassNames?.menu?.(state) ?? ''\n return [placement, external].filter(Boolean).join(' ')\n },\n [externalClassNames],\n )\n\n const selectClassNames = useMemo(\n () => ({\n ...externalClassNames,\n menu: menuClassName,\n menuList: (state: MenuListProps<Option, boolean, GroupBase<Option>>) => {\n const external = externalClassNames?.menuList?.(state) ?? ''\n return ['scrollbar-thin', external].filter(Boolean).join(' ')\n },\n }),\n [externalClassNames, menuClassName],\n )\n\n const selectComponents = useMemo(\n () => ({\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MenuPortal: DefaultMenuPortal,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n Option: SelectOption,\n SingleValue,\n ValueContainer,\n ...components,\n }),\n [components],\n )\n\n const sharedSelectProps = {\n captureMenuScroll,\n className: [className, 'react-select', showError && 'react-select--error']\n .filter(Boolean)\n .join(' '),\n classNamePrefix: 'rs',\n classNames: selectClassNames,\n components: selectComponents,\n filterOption,\n instanceId: uuid,\n isClearable,\n isDisabled: disabled,\n isLoading: isLoadingDebounced,\n isSearchable,\n loadingMessage: () => t('general:loading') + '...',\n maxMenuHeight: DEFAULT_MAX_MENU_HEIGHT,\n menuPlacement: 'auto' as const,\n menuPortalTarget,\n menuPosition,\n menuShouldBlockScroll: false,\n noOptionsMessage,\n onChange,\n onMenuClose,\n onMenuOpen,\n options,\n placeholder: getTranslation(placeholder, i18n),\n styles: {\n menu: getMenuStyles({\n externalStyles,\n shouldUseFloatingMenuPortal,\n }),\n // When portaling to document.body, the portal container needs an explicit\n // z-index so the menu appears above drawers and dialogs. unstyled={true}\n // strips react-select's default zIndex:9999 from the portal container.\n ...(menuPortalTarget && {\n menuPortal: (rsStyles, state) => ({\n ...rsStyles,\n zIndex: 'var(--z-portal-element)',\n ...externalStyles?.menuPortal?.(rsStyles, state),\n }),\n }),\n // Remove the default react-select min-height so our CSS can control it\n control: (rsStyles, state) => ({\n ...rsStyles,\n minHeight: undefined,\n ...externalStyles?.control?.(rsStyles, state),\n }),\n input: (rsStyles, state) => ({\n ...rsStyles,\n gridTemplateColumns: undefined,\n ...externalStyles?.input?.(rsStyles, state),\n }),\n // Allow external option styles to override emotion defaults\n option: (rsStyles, state) => ({\n ...rsStyles,\n ...externalStyles?.option?.(rsStyles, state),\n }),\n // Keep react-select's computed maxHeight so the menu can fit available\n // viewport space near screen edges (instead of using a fixed class value).\n menuList: getMenuListStyles(externalStyles, shouldUseFloatingMenuPortal),\n },\n unstyled: true,\n }\n\n if (!hasMounted) {\n return <ShimmerEffect height=\"var(--field-min-height-large)\" />\n }\n\n if (!isCreatable) {\n return (\n <div>\n <Select<Option, boolean, GroupBase<Option>>\n {...props}\n {...sharedSelectProps}\n getOptionValue={getOptionValue}\n value={value}\n />\n </div>\n )\n }\n\n const handleKeyDown: KeyboardEventHandler = (event) => {\n if (numberOnly === true) {\n const acceptableKeys = [\n 'Tab',\n 'Escape',\n 'Backspace',\n 'Enter',\n 'ArrowRight',\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowDown',\n ]\n const isNumber = !/\\D/.test(event.key)\n const isActionKey = acceptableKeys.includes(event.key)\n if (!isNumber && !isActionKey) {\n event.preventDefault()\n return\n }\n }\n\n if (!value || !inputValue || inputValue.trim() === '') {\n return\n }\n\n if (filterOption && !filterOption(null, inputValue)) {\n return\n }\n\n if (event.nativeEvent.isComposing) {\n return\n }\n\n switch (event.key) {\n case 'Enter':\n case 'Tab':\n onChange([\n ...(value as Option[]),\n {\n label: inputValue,\n value: inputValue,\n },\n ])\n setInputValue('')\n event.preventDefault()\n break\n default:\n break\n }\n }\n\n return (\n <div>\n <CreatableSelect<Option, boolean, GroupBase<Option>>\n {...props}\n {...sharedSelectProps}\n inputValue={inputValue}\n onInputChange={(newValue) => setInputValue(newValue)}\n onKeyDown={handleKeyDown}\n value={value}\n />\n </div>\n )\n}\n\nconst SortableSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { getOptionValue, onChange, value } = props\n\n let draggableIDs: string[] = []\n if (value) {\n draggableIDs = (Array.isArray(value) ? value : [value]).map((optionValue) => {\n return generateMultiValueDraggableID(optionValue, getOptionValue)\n })\n }\n\n return (\n <DraggableSortable\n className=\"react-select-container\"\n ids={draggableIDs}\n onDragEnd={({ moveFromIndex, moveToIndex }) => {\n let sorted = value\n if (value && Array.isArray(value)) {\n sorted = arrayMove(value, moveFromIndex, moveToIndex)\n }\n onChange(sorted)\n }}\n sortingStrategy={horizontalListSortingStrategy}\n >\n <SelectAdapter {...props} />\n </DraggableSortable>\n )\n}\n\nexport const ReactSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { isMulti, isSortable } = props\n\n if (isMulti && isSortable) {\n return <SortableSelect {...props} />\n }\n\n return <SelectAdapter {...props} />\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/SchedulePublishButton/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAWhD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CA8ElE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/SchedulePublishButton/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAWhD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAgFlE,CAAA"}
@@ -121,8 +121,12 @@ export const SchedulePublishButton = t0 => {
121
121
  position: "relative"
122
122
  },
123
123
  children: [_jsx(Button, {
124
+ "aria-label": label,
124
125
  buttonStyle: "ghost",
125
126
  disabled,
127
+ extraButtonProps: {
128
+ title: undefined
129
+ },
126
130
  icon: _jsx(ScheduleIcon, {
127
131
  active: hasScheduledPublish
128
132
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useModal","hasAutosaveEnabled","hasScheduledPublishEnabled","React","useMemo","useState","useFormModified","ScheduleIcon","useConfig","useDocumentInfo","useTranslation","Button","ScheduleDrawer","Tooltip","SchedulePublishButton","t0","$","disabled","id","collectionSlug","globalSlug","hasPublishPermission","hasScheduledPublish","setHasScheduledPublish","unpublishedVersionCount","getEntityConfig","isModalOpen","toggleModal","t","modified","hovered","setHovered","t1","bb0","t2","undefined","entityConfig","scheduledPublishEnabled","hasAutosave","canSchedulePublish","Boolean","drawerSlug","hasNewerVersions","t3","label","t4","t5","Symbol","for","t6","_jsxs","Fragment","children","onPointerEnter","onPointerLeave","style","position","_jsx","buttonStyle","icon","active","onClick","delay","show","defaultType","onUpcomingChange","schedulePublishConfig","versions","drafts","schedulePublish","slug"],"sources":["../../../src/elements/SchedulePublishButton/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { hasAutosaveEnabled, hasScheduledPublishEnabled } from 'payload/shared'\nimport React, { useMemo, useState } from 'react'\n\nimport { useFormModified } from '../../forms/Form/context.js'\nimport { ScheduleIcon } from '../../icons/Schedule/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { ScheduleDrawer } from '../PublishButton/ScheduleDrawer/index.js'\nimport { Tooltip } from '../Tooltip/index.js'\n\nexport const SchedulePublishButton: React.FC<{ disabled?: boolean }> = ({ disabled }) => {\n const {\n id,\n collectionSlug,\n globalSlug,\n hasPublishPermission,\n hasScheduledPublish,\n setHasScheduledPublish,\n unpublishedVersionCount,\n } = useDocumentInfo()\n\n const { getEntityConfig } = useConfig()\n const { isModalOpen, toggleModal } = useModal()\n const { t } = useTranslation()\n const modified = useFormModified()\n const [hovered, setHovered] = useState(false)\n\n const entityConfig = useMemo(() => {\n if (collectionSlug) {\n return getEntityConfig({ collectionSlug })\n }\n if (globalSlug) {\n return getEntityConfig({ globalSlug })\n }\n }, [collectionSlug, globalSlug, getEntityConfig])\n\n const scheduledPublishEnabled = hasScheduledPublishEnabled(entityConfig)\n const hasAutosave = hasAutosaveEnabled(entityConfig)\n\n const canSchedulePublish = Boolean(\n scheduledPublishEnabled &&\n hasPublishPermission &&\n (globalSlug || (collectionSlug && id)) &&\n (hasAutosave || !modified),\n )\n\n const drawerSlug = `schedule-publish-${id}`\n const hasNewerVersions = unpublishedVersionCount > 0\n\n if (!canSchedulePublish) {\n return null\n }\n\n const label = t('version:schedulePublish')\n\n return (\n <React.Fragment>\n <span\n onPointerEnter={() => setHovered(true)}\n onPointerLeave={() => setHovered(false)}\n style={{ position: 'relative' }}\n >\n <Button\n buttonStyle=\"ghost\"\n disabled={disabled}\n icon={<ScheduleIcon active={hasScheduledPublish} />}\n id=\"schedule-publish-button\"\n onClick={() => toggleModal(drawerSlug)}\n />\n <Tooltip delay={0} show={hovered}>\n {label}\n </Tooltip>\n </span>\n {isModalOpen(drawerSlug) && (\n <ScheduleDrawer\n defaultType={!hasNewerVersions ? 'unpublish' : 'publish'}\n onUpcomingChange={setHasScheduledPublish}\n schedulePublishConfig={\n scheduledPublishEnabled &&\n typeof entityConfig.versions.drafts.schedulePublish === 'object'\n ? entityConfig.versions.drafts.schedulePublish\n : undefined\n }\n slug={drawerSlug}\n />\n )}\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useModal","hasAutosaveEnabled","hasScheduledPublishEnabled","React","useMemo","useState","useFormModified","ScheduleIcon","useConfig","useDocumentInfo","useTranslation","Button","ScheduleDrawer","Tooltip","SchedulePublishButton","t0","$","disabled","id","collectionSlug","globalSlug","hasPublishPermission","hasScheduledPublish","setHasScheduledPublish","unpublishedVersionCount","getEntityConfig","isModalOpen","toggleModal","t","modified","hovered","setHovered","t1","bb0","t2","undefined","entityConfig","scheduledPublishEnabled","hasAutosave","canSchedulePublish","Boolean","drawerSlug","hasNewerVersions","t3","label","t4","t5","Symbol","for","t6","_jsxs","Fragment","children","onPointerEnter","onPointerLeave","style","position","_jsx","buttonStyle","extraButtonProps","title","icon","active","onClick","delay","show","defaultType","onUpcomingChange","schedulePublishConfig","versions","drafts","schedulePublish","slug"],"sources":["../../../src/elements/SchedulePublishButton/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { hasAutosaveEnabled, hasScheduledPublishEnabled } from 'payload/shared'\nimport React, { useMemo, useState } from 'react'\n\nimport { useFormModified } from '../../forms/Form/context.js'\nimport { ScheduleIcon } from '../../icons/Schedule/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { ScheduleDrawer } from '../PublishButton/ScheduleDrawer/index.js'\nimport { Tooltip } from '../Tooltip/index.js'\n\nexport const SchedulePublishButton: React.FC<{ disabled?: boolean }> = ({ disabled }) => {\n const {\n id,\n collectionSlug,\n globalSlug,\n hasPublishPermission,\n hasScheduledPublish,\n setHasScheduledPublish,\n unpublishedVersionCount,\n } = useDocumentInfo()\n\n const { getEntityConfig } = useConfig()\n const { isModalOpen, toggleModal } = useModal()\n const { t } = useTranslation()\n const modified = useFormModified()\n const [hovered, setHovered] = useState(false)\n\n const entityConfig = useMemo(() => {\n if (collectionSlug) {\n return getEntityConfig({ collectionSlug })\n }\n if (globalSlug) {\n return getEntityConfig({ globalSlug })\n }\n }, [collectionSlug, globalSlug, getEntityConfig])\n\n const scheduledPublishEnabled = hasScheduledPublishEnabled(entityConfig)\n const hasAutosave = hasAutosaveEnabled(entityConfig)\n\n const canSchedulePublish = Boolean(\n scheduledPublishEnabled &&\n hasPublishPermission &&\n (globalSlug || (collectionSlug && id)) &&\n (hasAutosave || !modified),\n )\n\n const drawerSlug = `schedule-publish-${id}`\n const hasNewerVersions = unpublishedVersionCount > 0\n\n if (!canSchedulePublish) {\n return null\n }\n\n const label = t('version:schedulePublish')\n\n return (\n <React.Fragment>\n <span\n onPointerEnter={() => setHovered(true)}\n onPointerLeave={() => setHovered(false)}\n style={{ position: 'relative' }}\n >\n <Button\n aria-label={label}\n buttonStyle=\"ghost\"\n disabled={disabled}\n extraButtonProps={{ title: undefined }}\n icon={<ScheduleIcon active={hasScheduledPublish} />}\n id=\"schedule-publish-button\"\n onClick={() => toggleModal(drawerSlug)}\n />\n <Tooltip delay={0} show={hovered}>\n {label}\n </Tooltip>\n </span>\n {isModalOpen(drawerSlug) && (\n <ScheduleDrawer\n defaultType={!hasNewerVersions ? 'unpublish' : 'publish'}\n onUpcomingChange={setHasScheduledPublish}\n schedulePublishConfig={\n scheduledPublishEnabled &&\n typeof entityConfig.versions.drafts.schedulePublish === 'object'\n ? entityConfig.versions.drafts.schedulePublish\n : undefined\n }\n slug={drawerSlug}\n />\n )}\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -61,14 +61,43 @@
61
61
 
62
62
  .search-input__clear {
63
63
  position: absolute;
64
- inset-inline-end: var(--spacer-1);
64
+ inset-inline-end: var(--spacer-0);
65
65
  top: 50%;
66
66
  transform: translateY(-50%);
67
67
  color: var(--color-icon-secondary);
68
+ isolation: isolate;
69
+
70
+ &::before {
71
+ content: '';
72
+ position: absolute;
73
+ inset-block: 0;
74
+ inset-inline: 0;
75
+ margin: auto;
76
+ width: var(--spacer-3);
77
+ height: var(--spacer-3);
78
+ border-radius: inherit;
79
+ z-index: -1;
80
+ }
68
81
 
69
82
  &.btn {
70
- height: unset;
71
- width: unset;
83
+ height: var(--spacer-4);
84
+ width: var(--spacer-4);
85
+ }
86
+
87
+ &:hover:not(.btn--disabled) {
88
+ background: transparent;
89
+
90
+ &::before {
91
+ background: var(--color-bg-transparent-hover);
92
+ }
93
+ }
94
+
95
+ &:active:not(.btn--disabled) {
96
+ background: transparent;
97
+
98
+ &::before {
99
+ background: var(--color-bg-transparent-pressed);
100
+ }
72
101
  }
73
102
 
74
103
  &:hover:not(.btn--disabled),
@@ -46,7 +46,7 @@
46
46
  }
47
47
  .segmented-control__input:focus-visible + .segmented-control__icon {
48
48
  outline: var(--stroke-width-small) solid var(--color-border-selected);
49
- outline-offset: -1px;
49
+ outline-offset: var(--accessibility-outline-inset);
50
50
  box-shadow: none;
51
51
  }
52
52
  }
@@ -24,7 +24,7 @@
24
24
 
25
25
  &:focus-visible {
26
26
  outline: var(--accessibility-outline);
27
- outline-offset: -1px;
27
+ outline-offset: var(--accessibility-outline-inset);
28
28
  }
29
29
  }
30
30
  }
@@ -42,6 +42,7 @@
42
42
 
43
43
  .sort-column__button {
44
44
  margin: 0;
45
+ padding: 0;
45
46
  display: inline-flex;
46
47
  align-items: center;
47
48
  justify-content: center;
@@ -50,22 +51,65 @@
50
51
  cursor: pointer;
51
52
  border-radius: var(--button-radius);
52
53
  color: var(--color-icon-tertiary);
54
+ position: relative;
55
+ isolation: isolate;
56
+ flex-shrink: 0;
57
+ width: var(--spacer-4);
58
+ height: var(--spacer-4);
59
+
60
+ /* Expand targets outward so the arrows retain their spacing without overlapping targets. */
61
+ &:first-child {
62
+ margin-inline-start: calc(var(--spacer-2) * -1);
63
+ justify-content: flex-end;
64
+
65
+ &::before {
66
+ inset-inline-start: auto;
67
+ }
68
+ }
69
+
70
+ &:last-child {
71
+ margin-inline-end: calc(var(--spacer-2) * -1);
72
+ justify-content: flex-start;
73
+
74
+ &::before {
75
+ inset-inline-end: auto;
76
+ }
77
+ }
78
+
79
+ &::before {
80
+ content: '';
81
+ position: absolute;
82
+ inset-block: 0;
83
+ inset-inline: 0;
84
+ margin: auto;
85
+ width: var(--spacer-3);
86
+ height: var(--spacer-3);
87
+ border-radius: inherit;
88
+ z-index: -1;
89
+ }
53
90
 
54
91
  &.sort-column--active {
55
92
  color: var(--color-icon);
56
- background: var(--color-bg-secondary);
93
+ &::before {
94
+ background: var(--color-bg-secondary);
95
+ }
57
96
  }
58
97
 
59
98
  &:hover {
60
99
  color: var(--color-icon);
61
- background: var(--color-bg-secondary);
100
+ &::before {
101
+ background: var(--color-bg-secondary);
102
+ }
62
103
  }
63
104
 
64
105
  &:focus-visible {
65
- outline: var(--stroke-width-small) solid var(--accessibility-focus-color);
66
- outline-offset: var(--accessibility-outline-offset);
67
- border-radius: var(--button-radius);
106
+ outline: none;
68
107
  color: var(--color-icon);
108
+
109
+ &::before {
110
+ outline: var(--stroke-width-small) solid var(--accessibility-focus-color);
111
+ outline-offset: var(--accessibility-outline-offset);
112
+ }
69
113
  }
70
114
  }
71
115
 
@@ -14,9 +14,7 @@
14
14
  color: var(--color-icon);
15
15
  }
16
16
 
17
- &:focus-visible {
18
- outline: var(--accessibility-outline);
19
- outline-offset: var(--accessibility-outline-offset);
17
+ .cell-_dragHandle > :focus-visible & {
20
18
  color: var(--color-icon);
21
19
  }
22
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/SortRow/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,OAAO,yBASnB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/SortRow/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,OAAO,yBAWnB,CAAA"}
@@ -1,32 +1,38 @@
1
1
  'use client';
2
2
 
3
3
  import { c as _c } from "react/compiler-runtime";
4
- import { jsx as _jsx } from "react/jsx-runtime";
4
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  import React from 'react';
6
6
  import { AlignJustifiedIcon } from '../../icons/AlignJustified/index.js';
7
7
  import { useListQuery } from '../../providers/ListQuery/index.js';
8
+ import { useTranslation } from '../../providers/Translation/index.js';
8
9
  import './index.css';
9
10
  const baseClass = 'sort-row';
10
11
  export const SortRow = () => {
11
- const $ = _c(2);
12
+ const $ = _c(3);
12
13
  const {
13
14
  orderableFieldName,
14
15
  query
15
16
  } = useListQuery();
17
+ const {
18
+ t
19
+ } = useTranslation();
16
20
  const isActive = query.sort === orderableFieldName || query.sort === `-${orderableFieldName}`;
17
21
  const t0 = `${baseClass} ${isActive ? "active" : ""}`;
18
22
  let t1;
19
- if ($[0] !== t0) {
20
- t1 = _jsx("div", {
23
+ if ($[0] !== t || $[1] !== t0) {
24
+ t1 = _jsxs("div", {
21
25
  className: t0,
22
- role: "button",
23
- tabIndex: 0,
24
- children: _jsx(AlignJustifiedIcon, {})
26
+ children: [_jsx("span", {
27
+ className: "sr-only",
28
+ children: t("general:dragToMove")
29
+ }), _jsx(AlignJustifiedIcon, {})]
25
30
  });
26
- $[0] = t0;
27
- $[1] = t1;
31
+ $[0] = t;
32
+ $[1] = t0;
33
+ $[2] = t1;
28
34
  } else {
29
- t1 = $[1];
35
+ t1 = $[2];
30
36
  }
31
37
  return t1;
32
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","AlignJustifiedIcon","useListQuery","baseClass","SortRow","$","orderableFieldName","query","isActive","sort","t0","t1","_jsx","className","role","tabIndex","children"],"sources":["../../../src/elements/SortRow/index.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { AlignJustifiedIcon } from '../../icons/AlignJustified/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport './index.css'\n\nconst baseClass = 'sort-row'\n\nexport const SortRow = () => {\n const { orderableFieldName, query } = useListQuery()\n const isActive = query.sort === orderableFieldName || query.sort === `-${orderableFieldName}`\n\n return (\n <div className={`${baseClass} ${isActive ? 'active' : ''}`} role=\"button\" tabIndex={0}>\n <AlignJustifiedIcon />\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,OAAOC,KAAA,MAAW;AAElB,SAASC,kBAAkB,QAAQ;AACnC,SAASC,YAAY,QAAQ;AAC7B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,OAAA,GAAUA,CAAA;EAAA,MAAAC,CAAA,GAAAN,EAAA;EACrB;IAAAO,kBAAA;IAAAC;EAAA,IAAsCL,YAAA;EACtC,MAAAM,QAAA,GAAiBD,KAAA,CAAAE,IAAU,KAAKH,kBAA6D,IAAvCC,KAAA,CAAAE,IAAU,KAAK,IAAIH,kBAAA,EAAoB;EAG3E,MAAAI,EAAA,MAAGP,SAAA,IAAaK,QAAA,WAAsB,GAAtB,EAAsB,EAAI;EAAA,IAAAG,EAAA;EAAA,IAAAN,CAAA,QAAAK,EAAA;IAA1DC,EAAA,GAAAC,IAAA,CAAC;MAAAC,SAAA,EAAeH,EAA0C;MAAAI,IAAA,EAAO;MAAAC,QAAA,EAAmB;MAAAC,QAAA,EAClFJ,IAAA,CAACX,kBAAA;;;;;;;SADHU,E;CAIJ","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","AlignJustifiedIcon","useListQuery","useTranslation","baseClass","SortRow","$","orderableFieldName","query","t","isActive","sort","t0","t1","_jsxs","className","children","_jsx"],"sources":["../../../src/elements/SortRow/index.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { AlignJustifiedIcon } from '../../icons/AlignJustified/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.css'\n\nconst baseClass = 'sort-row'\n\nexport const SortRow = () => {\n const { orderableFieldName, query } = useListQuery()\n const { t } = useTranslation()\n const isActive = query.sort === orderableFieldName || query.sort === `-${orderableFieldName}`\n\n return (\n <div className={`${baseClass} ${isActive ? 'active' : ''}`}>\n <span className=\"sr-only\">{t('general:dragToMove')}</span>\n <AlignJustifiedIcon />\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,OAAOC,KAAA,MAAW;AAElB,SAASC,kBAAkB,QAAQ;AACnC,SAASC,YAAY,QAAQ;AAC7B,SAASC,cAAc,QAAQ;AAC/B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,OAAA,GAAUA,CAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EACrB;IAAAQ,kBAAA;IAAAC;EAAA,IAAsCN,YAAA;EACtC;IAAAO;EAAA,IAAcN,cAAA;EACd,MAAAO,QAAA,GAAiBF,KAAA,CAAAG,IAAU,KAAKJ,kBAA6D,IAAvCC,KAAA,CAAAG,IAAU,KAAK,IAAIJ,kBAAA,EAAoB;EAG3E,MAAAK,EAAA,MAAGR,SAAA,IAAaM,QAAA,WAAsB,GAAtB,EAAsB,EAAI;EAAA,IAAAG,EAAA;EAAA,IAAAP,CAAA,QAAAG,CAAA,IAAAH,CAAA,QAAAM,EAAA;IAA1DC,EAAA,GAAAC,KAAA,CAAC;MAAAC,SAAA,EAAeH,EAA0C;MAAAI,QAAA,E,CACxDC,IAAA,CAAC;QAAAF,SAAA,EAAe;QAAAC,QAAA,EAAWP,CAAA,CAAE;UAC7BQ,IAAA,CAAChB,kBAAA;;;;;;;;SAFHY,E;CAKJ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/StepNav/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAgD,MAAM,OAAO,CAAA;AAEpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAM7C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,aAAa,CAAA;AAEpB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAM5C,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B,CAkMA,CAAA;AAED,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/StepNav/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAgD,MAAM,OAAO,CAAA;AAEpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAM7C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,aAAa,CAAA;AAEpB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAM5C,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B,CAmMA,CAAA;AAED,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,CAAA"}
@@ -82,6 +82,7 @@ const StepNav = ({
82
82
  isLast
83
83
  }) => {
84
84
  const StepLabel = getTranslation(item.label, i18n);
85
+ const title = typeof StepLabel === 'string' ? StepLabel : undefined;
85
86
  const isCurrent = item.isCurrent ?? isLast;
86
87
  const itemClassName = [`${baseClass}__item`, isLast ? `${baseClass}__last` : undefined, isFirst ? `${baseClass}__first` : undefined].filter(Boolean).join(' ');
87
88
  if (item.url) {
@@ -90,7 +91,8 @@ const StepNav = ({
90
91
  className: itemClassName,
91
92
  el: "link",
92
93
  extraButtonProps: {
93
- 'aria-current': isCurrent ? 'page' : false
94
+ 'aria-current': isCurrent ? 'page' : false,
95
+ title
94
96
  },
95
97
  url: item.url,
96
98
  children: StepLabel
@@ -99,6 +101,7 @@ const StepNav = ({
99
101
  return /*#__PURE__*/_jsx("span", {
100
102
  "aria-current": isCurrent ? 'page' : undefined,
101
103
  className: itemClassName,
104
+ title: title,
102
105
  children: StepLabel
103
106
  });
104
107
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getTranslation","React","Fragment","useEffect","useRef","useState","useConfig","useTranslation","Button","Popup","PopupList","StepNavProvider","useStepNav","SetStepNav","baseClass","minItemsToCollapse","StepNav","className","i18n","stepNav","config","routes","admin","t","navRef","measurerRef","isCollapsed","setIsCollapsed","firstItem","hasDashboardDropdown","url","label","isValidElement","stepNavItems","canCollapse","length","nav","current","measurer","container","parentElement","measure","available","clientWidth","needed","getBoundingClientRect","width","observer","ResizeObserver","observe","isEffectActive","document","fonts","ready","then","disconnect","renderItem","item","isFirst","isLast","StepLabel","isCurrent","itemClassName","undefined","filter","Boolean","join","_jsx","buttonStyle","el","extraButtonProps","separator","shouldCollapse","collapsedItems","slice","lastItem","_jsxs","ref","button","buttonAriaLabel","buttonClassName","buttonType","horizontalAlign","noBackground","popupType","render","close","ButtonGroup","map","i","ariaCurrent","href","onClick","size","verticalAlign","inert"],"sources":["../../../src/elements/StepNav/index.tsx"],"sourcesContent":["'use client'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useEffect, useRef, useState } from 'react'\n\nimport type { StepNavItem } from './types.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { StepNavProvider, useStepNav } from './context.js'\nimport './index.css'\n\nexport { SetStepNav } from './SetStepNav.js'\n\nconst baseClass = 'step-nav'\n\nconst minItemsToCollapse = 4\n\nconst StepNav: React.FC<{\n readonly className?: string\n}> = ({ className }) => {\n const { i18n } = useTranslation()\n\n const { stepNav } = useStepNav()\n\n const {\n config: {\n routes: { admin },\n },\n } = useConfig()\n\n const { t } = useTranslation()\n\n const navRef = useRef<HTMLElement>(null)\n const measurerRef = useRef<HTMLDivElement>(null)\n const [isCollapsed, setIsCollapsed] = useState(false)\n\n // Check if first item is a dashboard dropdown (React element with no URL)\n // In that case, it replaces the home element entirely\n const firstItem = stepNav[0]\n const hasDashboardDropdown =\n firstItem &&\n !firstItem.url &&\n typeof firstItem.label !== 'string' &&\n React.isValidElement(firstItem.label)\n\n const stepNavItems = hasDashboardDropdown\n ? stepNav\n : [\n {\n label: t('general:dashboard'),\n url: admin,\n },\n ...stepNav,\n ]\n\n const canCollapse = !hasDashboardDropdown && stepNavItems.length >= minItemsToCollapse\n\n // Collapse only when the expanded breadcrumbs (measured via the hidden\n // measurer) can't fit the available width.\n useEffect(() => {\n if (!canCollapse) {\n setIsCollapsed(false)\n return\n }\n\n const nav = navRef.current\n const measurer = measurerRef.current\n const container = nav?.parentElement\n\n if (!nav || !measurer || !container) {\n return\n }\n\n const measure = () => {\n const available = container.clientWidth\n const needed = measurer.getBoundingClientRect().width\n setIsCollapsed(needed - available > 1)\n }\n\n measure()\n\n const observer = new ResizeObserver(measure)\n observer.observe(container)\n\n // A web font finishing loading can change the measured width without the\n // container resizing, so the ResizeObserver alone won't catch it.\n let isEffectActive = true\n void document.fonts?.ready.then(() => {\n if (isEffectActive) {\n measure()\n }\n })\n\n return () => {\n isEffectActive = false\n observer.disconnect()\n }\n }, [canCollapse, stepNav, i18n, admin, t])\n\n const renderItem = (\n item: StepNavItem,\n { isFirst, isLast }: { isFirst: boolean; isLast: boolean },\n ) => {\n const StepLabel = getTranslation(item.label, i18n)\n const isCurrent = item.isCurrent ?? isLast\n const itemClassName = [\n `${baseClass}__item`,\n isLast ? `${baseClass}__last` : undefined,\n isFirst ? `${baseClass}__first` : undefined,\n ]\n .filter(Boolean)\n .join(' ')\n\n if (item.url) {\n return (\n <Button\n buttonStyle=\"ghost\"\n className={itemClassName}\n el=\"link\"\n extraButtonProps={{ 'aria-current': isCurrent ? 'page' : false }}\n url={item.url}\n >\n {StepLabel}\n </Button>\n )\n }\n\n return (\n <span aria-current={isCurrent ? 'page' : undefined} className={itemClassName}>\n {StepLabel}\n </span>\n )\n }\n\n const separator = <span className={`${baseClass}__separator`}>/</span>\n\n const shouldCollapse = canCollapse && isCollapsed\n const collapsedItems = shouldCollapse ? stepNavItems.slice(1, -1) : []\n const lastItem = stepNavItems[stepNavItems.length - 1]\n\n return (\n <Fragment>\n <nav\n aria-label={t('general:breadcrumb')}\n className={[baseClass, className].filter(Boolean).join(' ')}\n ref={navRef}\n >\n {shouldCollapse ? (\n <Fragment>\n {renderItem(stepNavItems[0], { isFirst: true, isLast: false })}\n {separator}\n <Popup\n button=\"…\"\n buttonAriaLabel={t('general:moreOptions')}\n buttonClassName={`${baseClass}__collapsed-toggle`}\n buttonType=\"custom\"\n className={`${baseClass}__collapsed`}\n horizontalAlign=\"left\"\n noBackground\n popupType=\"menu\"\n render={({ close }) => (\n <PopupList.ButtonGroup className={`${baseClass}__collapsed-list`}>\n {collapsedItems.map((item, i) => (\n <PopupList.Button\n ariaCurrent={item.isCurrent ? 'page' : false}\n href={item.url}\n key={i}\n onClick={close}\n >\n {getTranslation(item.label, i18n)}\n </PopupList.Button>\n ))}\n </PopupList.ButtonGroup>\n )}\n size=\"fit-content\"\n verticalAlign=\"bottom\"\n />\n {separator}\n {renderItem(lastItem, { isFirst: false, isLast: true })}\n </Fragment>\n ) : (\n stepNavItems.map((item, i) => {\n const isLast = stepNavItems.length === i + 1\n const isFirst = i === 0\n\n return (\n <Fragment key={i}>\n {renderItem(item, { isFirst, isLast })}\n {!isLast && separator}\n </Fragment>\n )\n })\n )}\n </nav>\n {canCollapse ? (\n <span aria-hidden=\"true\" className={`${baseClass}__measurer-clip`} inert>\n <div className={`${baseClass}__measurer`} ref={measurerRef}>\n {stepNavItems.map((item, i) => {\n const isLast = stepNavItems.length === i + 1\n const isFirst = i === 0\n\n return (\n <Fragment key={i}>\n {renderItem(item, { isFirst, isLast })}\n {!isLast && separator}\n </Fragment>\n )\n })}\n </div>\n </span>\n ) : null}\n </Fragment>\n )\n}\n\nexport { StepNav, StepNavItem, StepNavProvider, useStepNav }\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getTranslation","React","Fragment","useEffect","useRef","useState","useConfig","useTranslation","Button","Popup","PopupList","StepNavProvider","useStepNav","SetStepNav","baseClass","minItemsToCollapse","StepNav","className","i18n","stepNav","config","routes","admin","t","navRef","measurerRef","isCollapsed","setIsCollapsed","firstItem","hasDashboardDropdown","url","label","isValidElement","stepNavItems","canCollapse","length","nav","current","measurer","container","parentElement","measure","available","clientWidth","needed","getBoundingClientRect","width","observer","ResizeObserver","observe","isEffectActive","document","fonts","ready","then","disconnect","renderItem","item","isFirst","isLast","StepLabel","title","undefined","isCurrent","itemClassName","filter","Boolean","join","_jsx","buttonStyle","el","extraButtonProps","separator","shouldCollapse","collapsedItems","slice","lastItem","_jsxs","ref","button","buttonAriaLabel","buttonClassName","buttonType","horizontalAlign","noBackground","popupType","render","close","ButtonGroup","map","i","ariaCurrent","href","onClick","size","verticalAlign","inert"],"sources":["../../../src/elements/StepNav/index.tsx"],"sourcesContent":["'use client'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useEffect, useRef, useState } from 'react'\n\nimport type { StepNavItem } from './types.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { StepNavProvider, useStepNav } from './context.js'\nimport './index.css'\n\nexport { SetStepNav } from './SetStepNav.js'\n\nconst baseClass = 'step-nav'\n\nconst minItemsToCollapse = 4\n\nconst StepNav: React.FC<{\n readonly className?: string\n}> = ({ className }) => {\n const { i18n } = useTranslation()\n\n const { stepNav } = useStepNav()\n\n const {\n config: {\n routes: { admin },\n },\n } = useConfig()\n\n const { t } = useTranslation()\n\n const navRef = useRef<HTMLElement>(null)\n const measurerRef = useRef<HTMLDivElement>(null)\n const [isCollapsed, setIsCollapsed] = useState(false)\n\n // Check if first item is a dashboard dropdown (React element with no URL)\n // In that case, it replaces the home element entirely\n const firstItem = stepNav[0]\n const hasDashboardDropdown =\n firstItem &&\n !firstItem.url &&\n typeof firstItem.label !== 'string' &&\n React.isValidElement(firstItem.label)\n\n const stepNavItems = hasDashboardDropdown\n ? stepNav\n : [\n {\n label: t('general:dashboard'),\n url: admin,\n },\n ...stepNav,\n ]\n\n const canCollapse = !hasDashboardDropdown && stepNavItems.length >= minItemsToCollapse\n\n // Collapse only when the expanded breadcrumbs (measured via the hidden\n // measurer) can't fit the available width.\n useEffect(() => {\n if (!canCollapse) {\n setIsCollapsed(false)\n return\n }\n\n const nav = navRef.current\n const measurer = measurerRef.current\n const container = nav?.parentElement\n\n if (!nav || !measurer || !container) {\n return\n }\n\n const measure = () => {\n const available = container.clientWidth\n const needed = measurer.getBoundingClientRect().width\n setIsCollapsed(needed - available > 1)\n }\n\n measure()\n\n const observer = new ResizeObserver(measure)\n observer.observe(container)\n\n // A web font finishing loading can change the measured width without the\n // container resizing, so the ResizeObserver alone won't catch it.\n let isEffectActive = true\n void document.fonts?.ready.then(() => {\n if (isEffectActive) {\n measure()\n }\n })\n\n return () => {\n isEffectActive = false\n observer.disconnect()\n }\n }, [canCollapse, stepNav, i18n, admin, t])\n\n const renderItem = (\n item: StepNavItem,\n { isFirst, isLast }: { isFirst: boolean; isLast: boolean },\n ) => {\n const StepLabel = getTranslation(item.label, i18n)\n const title = typeof StepLabel === 'string' ? StepLabel : undefined\n const isCurrent = item.isCurrent ?? isLast\n const itemClassName = [\n `${baseClass}__item`,\n isLast ? `${baseClass}__last` : undefined,\n isFirst ? `${baseClass}__first` : undefined,\n ]\n .filter(Boolean)\n .join(' ')\n\n if (item.url) {\n return (\n <Button\n buttonStyle=\"ghost\"\n className={itemClassName}\n el=\"link\"\n extraButtonProps={{ 'aria-current': isCurrent ? 'page' : false, title }}\n url={item.url}\n >\n {StepLabel}\n </Button>\n )\n }\n\n return (\n <span aria-current={isCurrent ? 'page' : undefined} className={itemClassName} title={title}>\n {StepLabel}\n </span>\n )\n }\n\n const separator = <span className={`${baseClass}__separator`}>/</span>\n\n const shouldCollapse = canCollapse && isCollapsed\n const collapsedItems = shouldCollapse ? stepNavItems.slice(1, -1) : []\n const lastItem = stepNavItems[stepNavItems.length - 1]\n\n return (\n <Fragment>\n <nav\n aria-label={t('general:breadcrumb')}\n className={[baseClass, className].filter(Boolean).join(' ')}\n ref={navRef}\n >\n {shouldCollapse ? (\n <Fragment>\n {renderItem(stepNavItems[0], { isFirst: true, isLast: false })}\n {separator}\n <Popup\n button=\"…\"\n buttonAriaLabel={t('general:moreOptions')}\n buttonClassName={`${baseClass}__collapsed-toggle`}\n buttonType=\"custom\"\n className={`${baseClass}__collapsed`}\n horizontalAlign=\"left\"\n noBackground\n popupType=\"menu\"\n render={({ close }) => (\n <PopupList.ButtonGroup className={`${baseClass}__collapsed-list`}>\n {collapsedItems.map((item, i) => (\n <PopupList.Button\n ariaCurrent={item.isCurrent ? 'page' : false}\n href={item.url}\n key={i}\n onClick={close}\n >\n {getTranslation(item.label, i18n)}\n </PopupList.Button>\n ))}\n </PopupList.ButtonGroup>\n )}\n size=\"fit-content\"\n verticalAlign=\"bottom\"\n />\n {separator}\n {renderItem(lastItem, { isFirst: false, isLast: true })}\n </Fragment>\n ) : (\n stepNavItems.map((item, i) => {\n const isLast = stepNavItems.length === i + 1\n const isFirst = i === 0\n\n return (\n <Fragment key={i}>\n {renderItem(item, { isFirst, isLast })}\n {!isLast && separator}\n </Fragment>\n )\n })\n )}\n </nav>\n {canCollapse ? (\n <span aria-hidden=\"true\" className={`${baseClass}__measurer-clip`} inert>\n <div className={`${baseClass}__measurer`} ref={measurerRef}>\n {stepNavItems.map((item, i) => {\n const isLast = stepNavItems.length === i + 1\n const isFirst = i === 0\n\n return (\n <Fragment key={i}>\n {renderItem(item, { isFirst, isLast })}\n {!isLast && separator}\n </Fragment>\n )\n })}\n </div>\n </span>\n ) : null}\n </Fragment>\n )\n}\n\nexport { StepNav, StepNavItem, StepNavProvider, useStepNav }\n"],"mappings":"AAAA;;;AAEA,SAASA,cAAc,QAAQ;AAC/B,OAAOC,KAAA,IAASC,QAAQ,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAI7D,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,KAAK,EAAEC,SAAS,QAAQ;AACjC,SAASC,eAAe,EAAEC,UAAU,QAAQ;AAC5C,OAAO;AAEP,SAASC,UAAU,QAAQ;AAE3B,MAAMC,SAAA,GAAY;AAElB,MAAMC,kBAAA,GAAqB;AAE3B,MAAMC,OAAA,GAEDA,CAAC;EAAEC;AAAS,CAAE;EACjB,MAAM;IAAEC;EAAI,CAAE,GAAGX,cAAA;EAEjB,MAAM;IAAEY;EAAO,CAAE,GAAGP,UAAA;EAEpB,MAAM;IACJQ,MAAA,EAAQ;MACNC,MAAA,EAAQ;QAAEC;MAAK;IAAE;EAClB,CACF,GAAGhB,SAAA;EAEJ,MAAM;IAAEiB;EAAC,CAAE,GAAGhB,cAAA;EAEd,MAAMiB,MAAA,GAASpB,MAAA,CAAoB;EACnC,MAAMqB,WAAA,GAAcrB,MAAA,CAAuB;EAC3C,MAAM,CAACsB,WAAA,EAAaC,cAAA,CAAe,GAAGtB,QAAA,CAAS;EAE/C;EACA;EACA,MAAMuB,SAAA,GAAYT,OAAO,CAAC,EAAE;EAC5B,MAAMU,oBAAA,GACJD,SAAA,IACA,CAACA,SAAA,CAAUE,GAAG,IACd,OAAOF,SAAA,CAAUG,KAAK,KAAK,yBAC3B9B,KAAA,CAAM+B,cAAc,CAACJ,SAAA,CAAUG,KAAK;EAEtC,MAAME,YAAA,GAAeJ,oBAAA,GACjBV,OAAA,GACA,CACE;IACEY,KAAA,EAAOR,CAAA,CAAE;IACTO,GAAA,EAAKR;EACP,G,GACGH,OAAA,CACJ;EAEL,MAAMe,WAAA,GAAc,CAACL,oBAAA,IAAwBI,YAAA,CAAaE,MAAM,IAAIpB,kBAAA;EAEpE;EACA;EACAZ,SAAA,CAAU;IACR,IAAI,CAAC+B,WAAA,EAAa;MAChBP,cAAA,CAAe;MACf;IACF;IAEA,MAAMS,GAAA,GAAMZ,MAAA,CAAOa,OAAO;IAC1B,MAAMC,QAAA,GAAWb,WAAA,CAAYY,OAAO;IACpC,MAAME,SAAA,GAAYH,GAAA,EAAKI,aAAA;IAEvB,IAAI,CAACJ,GAAA,IAAO,CAACE,QAAA,IAAY,CAACC,SAAA,EAAW;MACnC;IACF;IAEA,MAAME,OAAA,GAAUA,CAAA;MACd,MAAMC,SAAA,GAAYH,SAAA,CAAUI,WAAW;MACvC,MAAMC,MAAA,GAASN,QAAA,CAASO,qBAAqB,GAAGC,KAAK;MACrDnB,cAAA,CAAeiB,MAAA,GAASF,SAAA,GAAY;IACtC;IAEAD,OAAA;IAEA,MAAMM,QAAA,GAAW,IAAIC,cAAA,CAAeP,OAAA;IACpCM,QAAA,CAASE,OAAO,CAACV,SAAA;IAEjB;IACA;IACA,IAAIW,cAAA,GAAiB;IACrB,KAAKC,QAAA,CAASC,KAAK,EAAEC,KAAA,CAAMC,IAAA,CAAK;MAC9B,IAAIJ,cAAA,EAAgB;QAClBT,OAAA;MACF;IACF;IAEA,OAAO;MACLS,cAAA,GAAiB;MACjBH,QAAA,CAASQ,UAAU;IACrB;EACF,GAAG,CAACrB,WAAA,EAAaf,OAAA,EAASD,IAAA,EAAMI,KAAA,EAAOC,CAAA,CAAE;EAEzC,MAAMiC,UAAA,GAAaA,CACjBC,IAAA,EACA;IAAEC,OAAO;IAAEC;EAAM,CAAyC;IAE1D,MAAMC,SAAA,GAAY5D,cAAA,CAAeyD,IAAA,CAAK1B,KAAK,EAAEb,IAAA;IAC7C,MAAM2C,KAAA,GAAQ,OAAOD,SAAA,KAAc,WAAWA,SAAA,GAAYE,SAAA;IAC1D,MAAMC,SAAA,GAAYN,IAAA,CAAKM,SAAS,IAAIJ,MAAA;IACpC,MAAMK,aAAA,GAAgB,CACpB,GAAGlD,SAAA,QAAiB,EACpB6C,MAAA,GAAS,GAAG7C,SAAA,QAAiB,GAAGgD,SAAA,EAChCJ,OAAA,GAAU,GAAG5C,SAAA,SAAkB,GAAGgD,SAAA,CACnC,CACEG,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;IAER,IAAIV,IAAA,CAAK3B,GAAG,EAAE;MACZ,oBACEsC,IAAA,CAAC5D,MAAA;QACC6D,WAAA,EAAY;QACZpD,SAAA,EAAW+C,aAAA;QACXM,EAAA,EAAG;QACHC,gBAAA,EAAkB;UAAE,gBAAgBR,SAAA,GAAY,SAAS;UAAOF;QAAM;QACtE/B,GAAA,EAAK2B,IAAA,CAAK3B,GAAG;kBAEZ8B;;IAGP;IAEA,oBACEQ,IAAA,CAAC;MAAK,gBAAcL,SAAA,GAAY,SAASD,SAAA;MAAW7C,SAAA,EAAW+C,aAAA;MAAeH,KAAA,EAAOA,KAAA;gBAClFD;;EAGP;EAEA,MAAMY,SAAA,gBAAYJ,IAAA,CAAC;IAAKnD,SAAA,EAAW,GAAGH,SAAA,aAAsB;cAAE;;EAE9D,MAAM2D,cAAA,GAAiBvC,WAAA,IAAeR,WAAA;EACtC,MAAMgD,cAAA,GAAiBD,cAAA,GAAiBxC,YAAA,CAAa0C,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE;EACtE,MAAMC,QAAA,GAAW3C,YAAY,CAACA,YAAA,CAAaE,MAAM,GAAG,EAAE;EAEtD,oBACE0C,KAAA,CAAC3E,QAAA;4BACCkE,IAAA,CAAC;MACC,cAAY7C,CAAA,CAAE;MACdN,SAAA,EAAW,CAACH,SAAA,EAAWG,SAAA,CAAU,CAACgD,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;MACvDW,GAAA,EAAKtD,MAAA;gBAEJiD,cAAA,gBACCI,KAAA,CAAC3E,QAAA;mBACEsD,UAAA,CAAWvB,YAAY,CAAC,EAAE,EAAE;UAAEyB,OAAA,EAAS;UAAMC,MAAA,EAAQ;QAAM,IAC3Da,SAAA,E,aACDJ,IAAA,CAAC3D,KAAA;UACCsE,MAAA,EAAO;UACPC,eAAA,EAAiBzD,CAAA,CAAE;UACnB0D,eAAA,EAAiB,GAAGnE,SAAA,oBAA6B;UACjDoE,UAAA,EAAW;UACXjE,SAAA,EAAW,GAAGH,SAAA,aAAsB;UACpCqE,eAAA,EAAgB;UAChBC,YAAY;UACZC,SAAA,EAAU;UACVC,MAAA,EAAQA,CAAC;YAAEC;UAAK,CAAE,kBAChBnB,IAAA,CAAC1D,SAAA,CAAU8E,WAAW;YAACvE,SAAA,EAAW,GAAGH,SAAA,kBAA2B;sBAC7D4D,cAAA,CAAee,GAAG,CAAC,CAAChC,MAAA,EAAMiC,CAAA,kBACzBtB,IAAA,CAAC1D,SAAA,CAAUF,MAAM;cACfmF,WAAA,EAAalC,MAAA,CAAKM,SAAS,GAAG,SAAS;cACvC6B,IAAA,EAAMnC,MAAA,CAAK3B,GAAG;cAEd+D,OAAA,EAASN,KAAA;wBAERvF,cAAA,CAAeyD,MAAA,CAAK1B,KAAK,EAAEb,IAAA;eAHvBwE,CAAA;;UAQbI,IAAA,EAAK;UACLC,aAAA,EAAc;YAEfvB,SAAA,EACAhB,UAAA,CAAWoB,QAAA,EAAU;UAAElB,OAAA,EAAS;UAAOC,MAAA,EAAQ;QAAK;WAGvD1B,YAAA,CAAawD,GAAG,CAAC,CAAChC,MAAA,EAAMiC,GAAA;QACtB,MAAM/B,QAAA,GAAS1B,YAAA,CAAaE,MAAM,KAAKuD,GAAA,GAAI;QAC3C,MAAMhC,SAAA,GAAUgC,GAAA,KAAM;QAEtB,oBACEb,KAAA,CAAC3E,QAAA;qBACEsD,UAAA,CAAWC,MAAA,EAAM;YAAEC,OAAA,EAAAA,SAAA;YAASC,MAAA,EAAAA;UAAO,IACnC,CAACA,QAAA,IAAUa,SAAA;WAFCkB,GAAA;MAKnB;QAGHxD,WAAA,gBACCkC,IAAA,CAAC;MAAK,eAAY;MAAOnD,SAAA,EAAW,GAAGH,SAAA,iBAA0B;MAAEkF,KAAK;gBACtE,aAAA5B,IAAA,CAAC;QAAInD,SAAA,EAAW,GAAGH,SAAA,YAAqB;QAAEgE,GAAA,EAAKrD,WAAA;kBAC5CQ,YAAA,CAAawD,GAAG,CAAC,CAAChC,MAAA,EAAMiC,GAAA;UACvB,MAAM/B,QAAA,GAAS1B,YAAA,CAAaE,MAAM,KAAKuD,GAAA,GAAI;UAC3C,MAAMhC,SAAA,GAAUgC,GAAA,KAAM;UAEtB,oBACEb,KAAA,CAAC3E,QAAA;uBACEsD,UAAA,CAAWC,MAAA,EAAM;cAAEC,OAAA,EAAAA,SAAA;cAASC,MAAA,EAAAA;YAAO,IACnC,CAACA,QAAA,IAAUa,SAAA;aAFCkB,GAAA;QAKnB;;SAGF;;AAGV;AAEA,SAAS1E,OAAO,EAAeL,eAAe,EAAEC,UAAU","ignoreList":[]}
@@ -58,7 +58,7 @@
58
58
  }
59
59
 
60
60
  .tabs__tab-button:focus-visible {
61
- outline-offset: -1px;
61
+ outline-offset: var(--accessibility-outline-inset);
62
62
  }
63
63
 
64
64
  .tabs__tab-button--hidden {
@@ -122,7 +122,7 @@
122
122
 
123
123
  &:focus-visible {
124
124
  outline: var(--stroke-width-small) solid var(--accessibility-focus-color);
125
- outline-offset: calc(-1 * var(--stroke-width-small));
125
+ outline-offset: var(--accessibility-outline-inset);
126
126
  }
127
127
  }
128
128
 
@@ -130,15 +130,16 @@
130
130
  display: flex;
131
131
  align-items: center;
132
132
  justify-content: center;
133
- padding-inline: calc(-1 * var(--stroke-width-small));
133
+ padding: 0;
134
134
  cursor: pointer;
135
- margin-left: calc(var(--spacer-1) / 2);
136
- height: var(--spacer-3);
135
+ margin-inline-start: calc(var(--spacer-1) / 2);
136
+ min-width: var(--spacer-4);
137
+ height: var(--spacer-4);
137
138
  overflow: visible;
138
139
  border-radius: var(--button-radius);
139
140
 
140
141
  &:focus-visible {
141
- outline: var(--stroke-width-small) solid var(--accessibility-focus-color);
142
+ outline-offset: var(--accessibility-outline-inset);
142
143
  }
143
144
  }
144
145
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/TimezonePicker/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAa9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAQvC,OAAO,aAAa,CAAA;AAqEpB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAqE1C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/TimezonePicker/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAQvC,OAAO,aAAa,CAAA;AA0DpB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAqE1C,CAAA"}