@payloadcms/ui 4.0.0-internal.3aa3d85 → 4.0.0-internal.43ccea7

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 (53) hide show
  1. package/dist/elements/APIKeyInput/index.css +4 -4
  2. package/dist/elements/AppHeader/index.css +2 -15
  3. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  4. package/dist/elements/AppHeader/index.js +5 -9
  5. package/dist/elements/AppHeader/index.js.map +1 -1
  6. package/dist/elements/DocumentControls/index.css +0 -2
  7. package/dist/elements/ListControls/index.js +1 -1
  8. package/dist/elements/ListControls/index.js.map +1 -1
  9. package/dist/elements/Nav/index.css +0 -5
  10. package/dist/elements/Pagination/index.css +5 -0
  11. package/dist/elements/Pagination/index.d.ts.map +1 -1
  12. package/dist/elements/Pagination/index.js +21 -21
  13. package/dist/elements/Pagination/index.js.map +1 -1
  14. package/dist/elements/Search/ListSearchFilter/index.d.ts.map +1 -1
  15. package/dist/elements/Search/ListSearchFilter/index.js +1 -0
  16. package/dist/elements/Search/ListSearchFilter/index.js.map +1 -1
  17. package/dist/elements/Search/SearchInput/index.d.ts +2 -0
  18. package/dist/elements/Search/SearchInput/index.d.ts.map +1 -1
  19. package/dist/elements/Search/SearchInput/index.js +21 -18
  20. package/dist/elements/Search/SearchInput/index.js.map +1 -1
  21. package/dist/exports/client/index.d.ts +0 -1
  22. package/dist/exports/client/index.d.ts.map +1 -1
  23. package/dist/exports/client/index.js +1 -1
  24. package/dist/exports/client/index.js.map +3 -3
  25. package/dist/exports/shared/index.js +1 -1
  26. package/dist/exports/shared/index.js.map +2 -2
  27. package/dist/fields/Array/index.d.ts.map +1 -1
  28. package/dist/fields/Array/index.js +7 -4
  29. package/dist/fields/Array/index.js.map +1 -1
  30. package/dist/fields/Blocks/index.d.ts.map +1 -1
  31. package/dist/fields/Blocks/index.js +6 -3
  32. package/dist/fields/Blocks/index.js.map +1 -1
  33. package/dist/fields/Password/types.d.ts +3 -3
  34. package/dist/fields/Password/types.d.ts.map +1 -1
  35. package/dist/fields/Password/types.js.map +1 -1
  36. package/dist/fields/Text/types.d.ts +2 -2
  37. package/dist/fields/Text/types.d.ts.map +1 -1
  38. package/dist/fields/Text/types.js.map +1 -1
  39. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  40. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +12 -4
  41. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  42. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  43. package/dist/providers/ListQuery/index.js +8 -1
  44. package/dist/providers/ListQuery/index.js.map +1 -1
  45. package/dist/styles.css +1 -1
  46. package/dist/utilities/formatDocTitle/index.js +1 -1
  47. package/dist/utilities/formatDocTitle/index.js.map +1 -1
  48. package/package.json +6 -6
  49. package/dist/elements/Nav/NavToggler/index.css +0 -12
  50. package/dist/elements/Nav/NavToggler/index.d.ts +0 -9
  51. package/dist/elements/Nav/NavToggler/index.d.ts.map +0 -1
  52. package/dist/elements/Nav/NavToggler/index.js +0 -91
  53. package/dist/elements/Nav/NavToggler/index.js.map +0 -1
@@ -35,8 +35,8 @@
35
35
  outline: none;
36
36
  color: var(--color-text);
37
37
  font-family: var(--font-family-mono);
38
- font-size: var(--text-body-large-font-size);
39
- line-height: var(--text-body-large-line-height);
38
+ font-size: var(--text-body-medium-font-size);
39
+ line-height: var(--text-body-medium-line-height);
40
40
  }
41
41
 
42
42
  .api-key-input__field:focus,
@@ -47,8 +47,8 @@
47
47
 
48
48
  .api-key-input__field[type='password'] {
49
49
  font-family: var(--font-family-sans);
50
- font-size: var(--text-body-large-font-size);
51
- font-weight: var(--text-body-large-strong-font-weight);
50
+ font-size: var(--text-body-medium-font-size);
51
+ font-weight: var(--text-body-medium-strong-font-weight);
52
52
  letter-spacing: 0.025rem;
53
53
  }
54
54
 
@@ -5,10 +5,6 @@
5
5
  z-index: var(--z-modal);
6
6
  }
7
7
 
8
- .app-header__mobile-nav-toggler {
9
- display: none;
10
- }
11
-
12
8
  .app-header__localizer.localizer {
13
9
  flex-shrink: 0;
14
10
  }
@@ -148,8 +144,8 @@
148
144
  }
149
145
 
150
146
  @media (max-width: 768px) {
151
- .app-header__content {
152
- padding: var(--spacer-2-5);
147
+ .app-header__wrapper {
148
+ align-items: flex-start;
153
149
  }
154
150
 
155
151
  .app-header__controls-wrapper {
@@ -164,15 +160,6 @@
164
160
  display: none;
165
161
  }
166
162
 
167
- .app-header__mobile-nav-toggler {
168
- display: flex;
169
- align-items: center;
170
- }
171
-
172
- .app-header__mobile-nav-toggler.nav-toggler--is-open {
173
- opacity: 0.5;
174
- }
175
-
176
163
  .app-header__gradient-placeholder {
177
164
  right: 0;
178
165
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/AppHeader/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAE1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AAgB9E,OAAO,aAAa,CAAA;AAIpB,KAAK,KAAK,GAAG;IACX,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC9B,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACpC,kBAAkB,CAAC,EAAE,qBAAqB,EAAE,CAAA;CAC7C,CAAA;AACD,wBAAgB,SAAS,CAAC,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,EAAE,KAAK,qBA4GxF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/AppHeader/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAE1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AAe9E,OAAO,aAAa,CAAA;AAIpB,KAAK,KAAK,GAAG;IACX,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC9B,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACpC,kBAAkB,CAAC,EAAE,qBAAqB,EAAE,CAAA;CAC7C,CAAA;AACD,wBAAgB,SAAS,CAAC,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,EAAE,KAAK,qBA2GxF"}
@@ -13,7 +13,6 @@ import { useTranslation } from '../../providers/Translation/index.js';
13
13
  import { Button } from '../Button/index.js';
14
14
  import { Localizer } from '../Localizer/index.js';
15
15
  import { useNav } from '../Nav/context.js';
16
- import { NavToggler } from '../Nav/NavToggler/index.js';
17
16
  import { StepNav } from '../StepNav/index.js';
18
17
  import { UserMenu } from '../UserMenu/index.js';
19
18
  import './index.css';
@@ -68,10 +67,7 @@ export function AppHeader({
68
67
  className: `${baseClass}__content`,
69
68
  children: /*#__PURE__*/_jsxs("div", {
70
69
  className: `${baseClass}__wrapper`,
71
- children: [/*#__PURE__*/_jsx(NavToggler, {
72
- className: `${baseClass}__mobile-nav-toggler`,
73
- tabIndex: -1
74
- }), /*#__PURE__*/_jsxs("div", {
70
+ children: [/*#__PURE__*/_jsxs("div", {
75
71
  className: `${baseClass}__controls-wrapper`,
76
72
  children: [/*#__PURE__*/_jsxs("div", {
77
73
  className: `${baseClass}__step-nav-wrapper`,
@@ -131,11 +127,11 @@ export function AppHeader({
131
127
  })]
132
128
  })
133
129
  })
134
- }), /*#__PURE__*/_jsx(UserMenu, {
135
- CustomAvatar: CustomAvatar,
136
- CustomLogoutButton: CustomLogoutButton,
137
- settingsItemGroups: settingsItemGroups
138
130
  })]
131
+ }), /*#__PURE__*/_jsx(UserMenu, {
132
+ CustomAvatar: CustomAvatar,
133
+ CustomLogoutButton: CustomLogoutButton,
134
+ settingsItemGroups: settingsItemGroups
139
135
  })]
140
136
  })
141
137
  })
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useEffect","useRef","useState","useElementHeightVariable","ChevronIcon","LanguageIcon","SidebarIcon","useActions","useConfig","useLocale","useTranslation","Button","Localizer","useNav","NavToggler","StepNav","UserMenu","baseClass","AppHeader","CustomAvatar","CustomLogoutButton","settingsItemGroups","t","locale","Actions","navOpen","setNavOpen","config","localization","headerRef","customControlsRef","isScrollable","setIsScrollable","cssVar","ref","checkIsScrollable","el","current","scrollable","scrollWidth","clientWidth","window","addEventListener","removeEventListener","ActionComponents","Object","values","_jsx","className","filter","Boolean","join","_jsxs","tabIndex","buttonStyle","icon","onClick","type","map","Action","i","length","renderButton","active","onKeyDown","ariaProps","extraButtonProps","style","padding","size","iconPosition","selected","code","direction"],"sources":["../../../src/elements/AppHeader/index.tsx"],"sourcesContent":["'use client'\nimport React, { useEffect, useRef, useState } from 'react'\n\nimport type { UserMenuSettingsGroup } from '../UserMenu/SettingsMenu/index.js'\n\nimport { useElementHeightVariable } from '../../hooks/useElementHeightVariable.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { LanguageIcon } from '../../icons/Language/index.js'\nimport { SidebarIcon } from '../../icons/Sidebar/index.js'\nimport { useActions } from '../../providers/Actions/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Localizer } from '../Localizer/index.js'\nimport { useNav } from '../Nav/context.js'\nimport { NavToggler } from '../Nav/NavToggler/index.js'\nimport { StepNav } from '../StepNav/index.js'\nimport { UserMenu } from '../UserMenu/index.js'\nimport './index.css'\n\nconst baseClass = 'app-header'\n\ntype Props = {\n CustomAvatar?: React.ReactNode\n CustomLogoutButton?: React.ReactNode\n settingsItemGroups?: UserMenuSettingsGroup[]\n}\nexport function AppHeader({ CustomAvatar, CustomLogoutButton, settingsItemGroups }: Props) {\n const { t } = useTranslation()\n const locale = useLocale()\n\n const { Actions } = useActions()\n\n const { navOpen, setNavOpen } = useNav()\n\n const {\n config: { localization },\n } = useConfig()\n\n const headerRef = useRef<HTMLElement>(null)\n const customControlsRef = useRef<HTMLDivElement>(null)\n const [isScrollable, setIsScrollable] = useState(false)\n\n useElementHeightVariable({ cssVar: '--app-header-height', ref: headerRef })\n\n useEffect(() => {\n const checkIsScrollable = () => {\n const el = customControlsRef.current\n if (el) {\n const scrollable = el.scrollWidth > el.clientWidth\n setIsScrollable(scrollable)\n }\n }\n\n checkIsScrollable()\n window.addEventListener('resize', checkIsScrollable)\n\n return () => {\n window.removeEventListener('resize', checkIsScrollable)\n }\n }, [Actions])\n\n const ActionComponents = Actions ? Object.values(Actions) : []\n\n return (\n <header\n className={[baseClass, navOpen && `${baseClass}--nav-open`].filter(Boolean).join(' ')}\n ref={headerRef}\n >\n <div className={`${baseClass}__content`}>\n <div className={`${baseClass}__wrapper`}>\n <NavToggler className={`${baseClass}__mobile-nav-toggler`} tabIndex={-1} />\n <div className={`${baseClass}__controls-wrapper`}>\n <div className={`${baseClass}__step-nav-wrapper`}>\n <Button\n aria-label={`${navOpen ? t('general:close') : t('general:open')} ${t('general:menu')}`}\n buttonStyle=\"ghost\"\n className={`${baseClass}__sidebar-toggle`}\n icon={<SidebarIcon />}\n onClick={() => setNavOpen(!navOpen)}\n type=\"button\"\n />\n <div className={`${baseClass}__step-nav-wrapper`}>\n <StepNav className={`${baseClass}__step-nav`} />\n </div>\n </div>\n <div className={`${baseClass}__actions-wrapper`}>\n <div className={`${baseClass}__actions`} ref={customControlsRef}>\n {ActionComponents.map((Action, i) => (\n <div\n className={\n isScrollable && i === ActionComponents.length - 1\n ? `${baseClass}__last-action`\n : ''\n }\n key={i}\n >\n {Action}\n </div>\n ))}\n </div>\n {isScrollable && <div className={`${baseClass}__gradient-placeholder`} />}\n </div>\n {localization && (\n <Localizer\n className={`${baseClass}__localizer`}\n renderButton={({ active, onClick, onKeyDown, ...ariaProps }) => (\n <Button\n aria-label={t('general:locale')}\n buttonStyle=\"secondary\"\n extraButtonProps={{ onKeyDown, style: { padding: '0 var(--spacer-1) 0 0' } }}\n icon={<LanguageIcon size={24} />}\n iconPosition=\"left\"\n onClick={onClick}\n selected={active}\n {...ariaProps}\n >\n <div className=\"localizer__button-content\">\n {locale.code}\n <ChevronIcon direction={active ? 'up' : 'down'} size={16} />\n </div>\n </Button>\n )}\n />\n )}\n <UserMenu\n CustomAvatar={CustomAvatar}\n CustomLogoutButton={CustomLogoutButton}\n settingsItemGroups={settingsItemGroups}\n />\n </div>\n </div>\n </div>\n </header>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useEffect","useRef","useState","useElementHeightVariable","ChevronIcon","LanguageIcon","SidebarIcon","useActions","useConfig","useLocale","useTranslation","Button","Localizer","useNav","StepNav","UserMenu","baseClass","AppHeader","CustomAvatar","CustomLogoutButton","settingsItemGroups","t","locale","Actions","navOpen","setNavOpen","config","localization","headerRef","customControlsRef","isScrollable","setIsScrollable","cssVar","ref","checkIsScrollable","el","current","scrollable","scrollWidth","clientWidth","window","addEventListener","removeEventListener","ActionComponents","Object","values","_jsx","className","filter","Boolean","join","_jsxs","buttonStyle","icon","onClick","type","map","Action","i","length","renderButton","active","onKeyDown","ariaProps","extraButtonProps","style","padding","size","iconPosition","selected","code","direction"],"sources":["../../../src/elements/AppHeader/index.tsx"],"sourcesContent":["'use client'\nimport React, { useEffect, useRef, useState } from 'react'\n\nimport type { UserMenuSettingsGroup } from '../UserMenu/SettingsMenu/index.js'\n\nimport { useElementHeightVariable } from '../../hooks/useElementHeightVariable.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { LanguageIcon } from '../../icons/Language/index.js'\nimport { SidebarIcon } from '../../icons/Sidebar/index.js'\nimport { useActions } from '../../providers/Actions/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Localizer } from '../Localizer/index.js'\nimport { useNav } from '../Nav/context.js'\nimport { StepNav } from '../StepNav/index.js'\nimport { UserMenu } from '../UserMenu/index.js'\nimport './index.css'\n\nconst baseClass = 'app-header'\n\ntype Props = {\n CustomAvatar?: React.ReactNode\n CustomLogoutButton?: React.ReactNode\n settingsItemGroups?: UserMenuSettingsGroup[]\n}\nexport function AppHeader({ CustomAvatar, CustomLogoutButton, settingsItemGroups }: Props) {\n const { t } = useTranslation()\n const locale = useLocale()\n\n const { Actions } = useActions()\n\n const { navOpen, setNavOpen } = useNav()\n\n const {\n config: { localization },\n } = useConfig()\n\n const headerRef = useRef<HTMLElement>(null)\n const customControlsRef = useRef<HTMLDivElement>(null)\n const [isScrollable, setIsScrollable] = useState(false)\n\n useElementHeightVariable({ cssVar: '--app-header-height', ref: headerRef })\n\n useEffect(() => {\n const checkIsScrollable = () => {\n const el = customControlsRef.current\n if (el) {\n const scrollable = el.scrollWidth > el.clientWidth\n setIsScrollable(scrollable)\n }\n }\n\n checkIsScrollable()\n window.addEventListener('resize', checkIsScrollable)\n\n return () => {\n window.removeEventListener('resize', checkIsScrollable)\n }\n }, [Actions])\n\n const ActionComponents = Actions ? Object.values(Actions) : []\n\n return (\n <header\n className={[baseClass, navOpen && `${baseClass}--nav-open`].filter(Boolean).join(' ')}\n ref={headerRef}\n >\n <div className={`${baseClass}__content`}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__controls-wrapper`}>\n <div className={`${baseClass}__step-nav-wrapper`}>\n <Button\n aria-label={`${navOpen ? t('general:close') : t('general:open')} ${t('general:menu')}`}\n buttonStyle=\"ghost\"\n className={`${baseClass}__sidebar-toggle`}\n icon={<SidebarIcon />}\n onClick={() => setNavOpen(!navOpen)}\n type=\"button\"\n />\n <div className={`${baseClass}__step-nav-wrapper`}>\n <StepNav className={`${baseClass}__step-nav`} />\n </div>\n </div>\n <div className={`${baseClass}__actions-wrapper`}>\n <div className={`${baseClass}__actions`} ref={customControlsRef}>\n {ActionComponents.map((Action, i) => (\n <div\n className={\n isScrollable && i === ActionComponents.length - 1\n ? `${baseClass}__last-action`\n : ''\n }\n key={i}\n >\n {Action}\n </div>\n ))}\n </div>\n {isScrollable && <div className={`${baseClass}__gradient-placeholder`} />}\n </div>\n {localization && (\n <Localizer\n className={`${baseClass}__localizer`}\n renderButton={({ active, onClick, onKeyDown, ...ariaProps }) => (\n <Button\n aria-label={t('general:locale')}\n buttonStyle=\"secondary\"\n extraButtonProps={{ onKeyDown, style: { padding: '0 var(--spacer-1) 0 0' } }}\n icon={<LanguageIcon size={24} />}\n iconPosition=\"left\"\n onClick={onClick}\n selected={active}\n {...ariaProps}\n >\n <div className=\"localizer__button-content\">\n {locale.code}\n <ChevronIcon direction={active ? 'up' : 'down'} size={16} />\n </div>\n </Button>\n )}\n />\n )}\n </div>\n <UserMenu\n CustomAvatar={CustomAvatar}\n CustomLogoutButton={CustomLogoutButton}\n settingsItemGroups={settingsItemGroups}\n />\n </div>\n </div>\n </header>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -150,8 +150,6 @@
150
150
  }
151
151
 
152
152
  .doc-controls {
153
- padding: var(--spacer-2-5);
154
- padding-right: var(--spacer-2-5);
155
153
  gap: var(--spacer-2);
156
154
  flex-wrap: wrap;
157
155
  }
@@ -127,7 +127,7 @@ export const ListControls = props => {
127
127
  className: `${baseClass}__toggle-where`,
128
128
  extraButtonProps: {
129
129
  "aria-controls": `${baseClass}-where`,
130
- "aria-expanded": visibleDrawer === "where"
130
+ "aria-expanded": isWhereOpen
131
131
  },
132
132
  icon: _jsx(ChevronIcon, {
133
133
  direction: isWhereOpen ? "up" : "down",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useWindowInfo","React","Fragment","useEffect","useRef","useState","Popup","PopupList","ChevronIcon","Dots","useListQuery","useTranslation","Button","ListColumnSelectionButton","ListGroupByButton","ListWhereBuilder","QueryPresetBar","ListSearchFilter","baseClass","ListControls","props","$","beforeActions","collectionConfig","collectionSlug","disableQueryPresets","enableColumns","t0","enableFilters","t1","enableSort","t2","hasCreatePermission","isWhereOpen","isWhereOpenFromProps","listMenuItems","newDocumentURL","onWhereToggle","queryPreset","activePreset","queryPresetPermissions","renderedFilters","resolvedFilterOptions","undefined","isControlled","handleSearchChange","hasActiveFilters","query","t","breakpoints","t3","s","smallBreak","searchLabelTranslated","label","split","hasWhereParam","Boolean","where","visibleDrawer","setVisibleDrawer","t4","current","t5","t6","t7","handleWhereToggle","_jsxs","className","children","_jsx","onSearchChange","searchQueryParam","search","enableQueryPresets","buttonStyle","extraButtonProps","icon","direction","size","onClick","selected","slug","fields","el","id","to","Array","isArray","length","button","ariaLabel","horizontalAlign","verticalAlign","ButtonGroup","map","_temp","collectionPluralLabel","labels","plural","onEmptyRemove","item","i"],"sources":["../../../src/elements/ListControls/index.tsx"],"sourcesContent":["'use client'\n\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport React, { Fragment, useEffect, useRef, useState } from 'react'\n\nimport type { ListControlsProps } from './types.js'\n\nimport { Popup, PopupList } from '../../elements/Popup/index.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { Dots } from '../../icons/Dots/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { ListColumnSelectionButton } from '../ListColumnSelectionButton/index.js'\nimport { ListGroupByButton } from '../ListGroupByButton/index.js'\nimport { ListWhereBuilder } from '../ListWhereBuilder/index.js'\nimport { QueryPresetBar } from '../QueryPresets/QueryPresetBar/index.js'\nimport { ListSearchFilter } from '../Search/ListSearchFilter/index.js'\nimport './index.css'\n\nconst baseClass = 'list-controls'\n\n/**\n * The ListControls component is used to render the controls (search, filter, where)\n * for a collection's list view. You can find those directly above the table which lists\n * the collection's documents.\n */\nexport const ListControls: React.FC<ListControlsProps> = (props) => {\n const {\n beforeActions,\n collectionConfig,\n collectionSlug,\n disableQueryPresets,\n enableColumns = true,\n enableFilters = true,\n enableSort = false,\n hasCreatePermission,\n isWhereOpen: isWhereOpenFromProps,\n listMenuItems,\n newDocumentURL,\n onWhereToggle,\n queryPreset: activePreset,\n queryPresetPermissions,\n renderedFilters,\n resolvedFilterOptions,\n } = props\n\n const isControlled = typeof onWhereToggle === 'function'\n\n const { handleSearchChange, hasActiveFilters, query } = useListQuery()\n\n const { t } = useTranslation()\n\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n // Simplified placeholder - just \"Search\" instead of \"Search by X, Y, Z\"\n const searchLabelTranslated = t('general:searchBy', { label: '' }).split(' ')[0]\n\n const hasWhereParam = useRef(Boolean(query?.where))\n\n const [visibleDrawer, setVisibleDrawer] = useState<'columns' | 'sort' | 'where'>(\n hasActiveFilters ? 'where' : undefined,\n )\n\n useEffect(() => {\n if (hasWhereParam.current && !query?.where) {\n hasWhereParam.current = false\n } else if (query?.where) {\n hasWhereParam.current = true\n }\n }, [setVisibleDrawer, query?.where])\n\n const isWhereOpen = isControlled ? Boolean(isWhereOpenFromProps) : visibleDrawer === 'where'\n const handleWhereToggle = isControlled\n ? onWhereToggle\n : () => setVisibleDrawer(visibleDrawer !== 'where' ? 'where' : undefined)\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__search-row`}>\n <div className={`${baseClass}__left`}>\n <ListSearchFilter\n key={collectionSlug}\n label={searchLabelTranslated}\n onSearchChange={handleSearchChange}\n searchQueryParam={query?.search}\n />\n {collectionConfig?.enableQueryPresets && !disableQueryPresets && (\n <QueryPresetBar\n activePreset={activePreset}\n collectionSlug={collectionSlug}\n queryPresetPermissions={queryPresetPermissions}\n />\n )}\n </div>\n <div className={`${baseClass}__spacer`} />\n <div className={`${baseClass}__actions`}>\n {!smallBreak && beforeActions}\n {enableFilters && (\n <Button\n buttonStyle=\"secondary\"\n className={`${baseClass}__toggle-where`}\n extraButtonProps={{\n 'aria-controls': `${baseClass}-where`,\n 'aria-expanded': visibleDrawer === 'where',\n }}\n icon={<ChevronIcon direction={isWhereOpen ? 'up' : 'down'} size={16} />}\n id=\"toggle-list-filters\"\n onClick={handleWhereToggle}\n selected={isWhereOpen || hasActiveFilters}\n size=\"medium\"\n >\n {t('general:filters')}\n </Button>\n )}\n <ListGroupByButton\n collectionSlug={collectionConfig.slug}\n fields={collectionConfig.fields}\n />\n {enableColumns && <ListColumnSelectionButton collectionSlug={collectionConfig.slug} />}\n {enableSort && (\n <Button\n buttonStyle=\"secondary\"\n className={`${baseClass}__toggle-sort`}\n extraButtonProps={{\n 'aria-controls': `${baseClass}-sort`,\n 'aria-expanded': visibleDrawer === 'sort',\n }}\n icon={<ChevronIcon size={16} />}\n id=\"toggle-list-sort\"\n onClick={() => setVisibleDrawer(visibleDrawer !== 'sort' ? 'sort' : undefined)}\n size=\"medium\"\n >\n {t('general:sort')}\n </Button>\n )}\n {hasCreatePermission && newDocumentURL && (\n <Button\n buttonStyle=\"primary\"\n className={`${baseClass}__create-new`}\n el=\"link\"\n id=\"create-new-doc\"\n size=\"medium\"\n to={newDocumentURL}\n >\n {t('general:createNew')}\n </Button>\n )}\n {listMenuItems && Array.isArray(listMenuItems) && listMenuItems.length > 0 && (\n <Popup\n button={<Dots ariaLabel={t('general:moreOptions')} />}\n className={`${baseClass}__popup`}\n horizontalAlign=\"right\"\n id=\"list-menu\"\n verticalAlign=\"bottom\"\n >\n <PopupList.ButtonGroup>\n {listMenuItems.map((item, i) => (\n <Fragment key={`list-menu-item-${i}`}>{item}</Fragment>\n ))}\n </PopupList.ButtonGroup>\n </Popup>\n )}\n </div>\n </div>\n {!isControlled && isWhereOpen && (\n <div className={`${baseClass}__where`} id={`${baseClass}-where`}>\n <ListWhereBuilder\n collectionPluralLabel={collectionConfig?.labels?.plural}\n collectionSlug={collectionConfig.slug}\n fields={collectionConfig?.fields}\n onEmptyRemove={() => setVisibleDrawer(undefined)}\n renderedFilters={renderedFilters}\n resolvedFilterOptions={resolvedFilterOptions}\n />\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useWindowInfo","React","Fragment","useEffect","useRef","useState","Popup","PopupList","ChevronIcon","Dots","useListQuery","useTranslation","Button","ListColumnSelectionButton","ListGroupByButton","ListWhereBuilder","QueryPresetBar","ListSearchFilter","baseClass","ListControls","props","$","beforeActions","collectionConfig","collectionSlug","disableQueryPresets","enableColumns","t0","enableFilters","t1","enableSort","t2","hasCreatePermission","isWhereOpen","isWhereOpenFromProps","listMenuItems","newDocumentURL","onWhereToggle","queryPreset","activePreset","queryPresetPermissions","renderedFilters","resolvedFilterOptions","undefined","isControlled","handleSearchChange","hasActiveFilters","query","t","breakpoints","t3","s","smallBreak","searchLabelTranslated","label","split","hasWhereParam","Boolean","where","visibleDrawer","setVisibleDrawer","t4","current","t5","t6","t7","handleWhereToggle","_jsxs","className","children","_jsx","onSearchChange","searchQueryParam","search","enableQueryPresets","buttonStyle","extraButtonProps","icon","direction","size","onClick","selected","slug","fields","el","id","to","Array","isArray","length","button","ariaLabel","horizontalAlign","verticalAlign","ButtonGroup","map","_temp","collectionPluralLabel","labels","plural","onEmptyRemove","item","i"],"sources":["../../../src/elements/ListControls/index.tsx"],"sourcesContent":["'use client'\n\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport React, { Fragment, useEffect, useRef, useState } from 'react'\n\nimport type { ListControlsProps } from './types.js'\n\nimport { Popup, PopupList } from '../../elements/Popup/index.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { Dots } from '../../icons/Dots/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { ListColumnSelectionButton } from '../ListColumnSelectionButton/index.js'\nimport { ListGroupByButton } from '../ListGroupByButton/index.js'\nimport { ListWhereBuilder } from '../ListWhereBuilder/index.js'\nimport { QueryPresetBar } from '../QueryPresets/QueryPresetBar/index.js'\nimport { ListSearchFilter } from '../Search/ListSearchFilter/index.js'\nimport './index.css'\n\nconst baseClass = 'list-controls'\n\n/**\n * The ListControls component is used to render the controls (search, filter, where)\n * for a collection's list view. You can find those directly above the table which lists\n * the collection's documents.\n */\nexport const ListControls: React.FC<ListControlsProps> = (props) => {\n const {\n beforeActions,\n collectionConfig,\n collectionSlug,\n disableQueryPresets,\n enableColumns = true,\n enableFilters = true,\n enableSort = false,\n hasCreatePermission,\n isWhereOpen: isWhereOpenFromProps,\n listMenuItems,\n newDocumentURL,\n onWhereToggle,\n queryPreset: activePreset,\n queryPresetPermissions,\n renderedFilters,\n resolvedFilterOptions,\n } = props\n\n const isControlled = typeof onWhereToggle === 'function'\n\n const { handleSearchChange, hasActiveFilters, query } = useListQuery()\n\n const { t } = useTranslation()\n\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n // Simplified placeholder - just \"Search\" instead of \"Search by X, Y, Z\"\n const searchLabelTranslated = t('general:searchBy', { label: '' }).split(' ')[0]\n\n const hasWhereParam = useRef(Boolean(query?.where))\n\n const [visibleDrawer, setVisibleDrawer] = useState<'columns' | 'sort' | 'where'>(\n hasActiveFilters ? 'where' : undefined,\n )\n\n useEffect(() => {\n if (hasWhereParam.current && !query?.where) {\n hasWhereParam.current = false\n } else if (query?.where) {\n hasWhereParam.current = true\n }\n }, [setVisibleDrawer, query?.where])\n\n const isWhereOpen = isControlled ? Boolean(isWhereOpenFromProps) : visibleDrawer === 'where'\n const handleWhereToggle = isControlled\n ? onWhereToggle\n : () => setVisibleDrawer(visibleDrawer !== 'where' ? 'where' : undefined)\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__search-row`}>\n <div className={`${baseClass}__left`}>\n <ListSearchFilter\n key={collectionSlug}\n label={searchLabelTranslated}\n onSearchChange={handleSearchChange}\n searchQueryParam={query?.search}\n />\n {collectionConfig?.enableQueryPresets && !disableQueryPresets && (\n <QueryPresetBar\n activePreset={activePreset}\n collectionSlug={collectionSlug}\n queryPresetPermissions={queryPresetPermissions}\n />\n )}\n </div>\n <div className={`${baseClass}__spacer`} />\n <div className={`${baseClass}__actions`}>\n {!smallBreak && beforeActions}\n {enableFilters && (\n <Button\n buttonStyle=\"secondary\"\n className={`${baseClass}__toggle-where`}\n extraButtonProps={{\n 'aria-controls': `${baseClass}-where`,\n 'aria-expanded': isWhereOpen,\n }}\n icon={<ChevronIcon direction={isWhereOpen ? 'up' : 'down'} size={16} />}\n id=\"toggle-list-filters\"\n onClick={handleWhereToggle}\n selected={isWhereOpen || hasActiveFilters}\n size=\"medium\"\n >\n {t('general:filters')}\n </Button>\n )}\n <ListGroupByButton\n collectionSlug={collectionConfig.slug}\n fields={collectionConfig.fields}\n />\n {enableColumns && <ListColumnSelectionButton collectionSlug={collectionConfig.slug} />}\n {enableSort && (\n <Button\n buttonStyle=\"secondary\"\n className={`${baseClass}__toggle-sort`}\n extraButtonProps={{\n 'aria-controls': `${baseClass}-sort`,\n 'aria-expanded': visibleDrawer === 'sort',\n }}\n icon={<ChevronIcon size={16} />}\n id=\"toggle-list-sort\"\n onClick={() => setVisibleDrawer(visibleDrawer !== 'sort' ? 'sort' : undefined)}\n size=\"medium\"\n >\n {t('general:sort')}\n </Button>\n )}\n {hasCreatePermission && newDocumentURL && (\n <Button\n buttonStyle=\"primary\"\n className={`${baseClass}__create-new`}\n el=\"link\"\n id=\"create-new-doc\"\n size=\"medium\"\n to={newDocumentURL}\n >\n {t('general:createNew')}\n </Button>\n )}\n {listMenuItems && Array.isArray(listMenuItems) && listMenuItems.length > 0 && (\n <Popup\n button={<Dots ariaLabel={t('general:moreOptions')} />}\n className={`${baseClass}__popup`}\n horizontalAlign=\"right\"\n id=\"list-menu\"\n verticalAlign=\"bottom\"\n >\n <PopupList.ButtonGroup>\n {listMenuItems.map((item, i) => (\n <Fragment key={`list-menu-item-${i}`}>{item}</Fragment>\n ))}\n </PopupList.ButtonGroup>\n </Popup>\n )}\n </div>\n </div>\n {!isControlled && isWhereOpen && (\n <div className={`${baseClass}__where`} id={`${baseClass}-where`}>\n <ListWhereBuilder\n collectionPluralLabel={collectionConfig?.labels?.plural}\n collectionSlug={collectionConfig.slug}\n fields={collectionConfig?.fields}\n onEmptyRemove={() => setVisibleDrawer(undefined)}\n renderedFilters={renderedFilters}\n resolvedFilterOptions={resolvedFilterOptions}\n />\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -119,11 +119,6 @@
119
119
  --nav-padding-inline-end: var(--gutter-h);
120
120
  }
121
121
 
122
- .nav__link {
123
- font-size: var(--text-body-small-font-size);
124
- line-height: var(--spacer-4);
125
- }
126
-
127
122
  .nav__mobile-close {
128
123
  display: flex;
129
124
  align-items: center;
@@ -37,6 +37,11 @@
37
37
  &:focus-visible {
38
38
  outline: none;
39
39
  }
40
+
41
+ &:disabled {
42
+ cursor: not-allowed;
43
+ opacity: 0.5;
44
+ }
40
45
  }
41
46
 
42
47
  .paginator__page-total {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Pagination/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAGpD,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAsGhD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Pagination/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAGpD,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAqGhD,CAAA"}
@@ -7,7 +7,7 @@ import { ClickableArrow } from './ClickableArrow/index.js';
7
7
  import './index.css';
8
8
  const baseClass = 'paginator';
9
9
  export const Pagination = props => {
10
- const $ = _c(34);
10
+ const $ = _c(35);
11
11
  const {
12
12
  hasNextPage: t0,
13
13
  hasPrevPage: t1,
@@ -122,10 +122,8 @@ export const Pagination = props => {
122
122
  t11 = $[14];
123
123
  }
124
124
  const handleInputKeyDown = t11;
125
- if (!totalPages || totalPages <= 1) {
126
- return null;
127
- }
128
- const t12 = !hasPrevPage;
125
+ const isSinglePage = !totalPages || totalPages <= 1;
126
+ const t12 = isSinglePage || !hasPrevPage;
129
127
  let t13;
130
128
  if ($[15] !== currentPage || $[16] !== prevPage || $[17] !== updatePage) {
131
129
  t13 = () => updatePage(prevPage ?? Math.max(1, currentPage - 1));
@@ -137,16 +135,16 @@ export const Pagination = props => {
137
135
  t13 = $[18];
138
136
  }
139
137
  let t14;
140
- if ($[19] !== currentPage || $[20] !== handleInputBlur || $[21] !== handleInputKeyDown || $[22] !== hasNextPage || $[23] !== inputValue || $[24] !== nextPage || $[25] !== t12 || $[26] !== t13 || $[27] !== totalPages || $[28] !== updatePage) {
138
+ if ($[19] !== currentPage || $[20] !== handleInputBlur || $[21] !== handleInputKeyDown || $[22] !== hasNextPage || $[23] !== inputValue || $[24] !== isSinglePage || $[25] !== nextPage || $[26] !== t12 || $[27] !== t13 || $[28] !== totalPages || $[29] !== updatePage) {
141
139
  let t15;
142
- if ($[30] !== currentPage || $[31] !== nextPage || $[32] !== updatePage) {
140
+ if ($[31] !== currentPage || $[32] !== nextPage || $[33] !== updatePage) {
143
141
  t15 = () => updatePage(nextPage ?? currentPage + 1);
144
- $[30] = currentPage;
145
- $[31] = nextPage;
146
- $[32] = updatePage;
147
- $[33] = t15;
142
+ $[31] = currentPage;
143
+ $[32] = nextPage;
144
+ $[33] = updatePage;
145
+ $[34] = t15;
148
146
  } else {
149
- t15 = $[33];
147
+ t15 = $[34];
150
148
  }
151
149
  t14 = _jsxs("div", {
152
150
  className: baseClass,
@@ -156,13 +154,14 @@ export const Pagination = props => {
156
154
  updatePage: t13
157
155
  }), _jsx(ClickableArrow, {
158
156
  direction: "right",
159
- isDisabled: !hasNextPage,
157
+ isDisabled: isSinglePage || !hasNextPage,
160
158
  updatePage: t15
161
159
  }), _jsxs("div", {
162
160
  className: `${baseClass}__page-input-wrapper`,
163
161
  children: [_jsx("input", {
164
162
  "aria-label": "Go to page",
165
163
  className: `${baseClass}__page-input`,
164
+ disabled: isSinglePage,
166
165
  inputMode: "numeric",
167
166
  max: totalPages,
168
167
  min: 1,
@@ -176,7 +175,7 @@ export const Pagination = props => {
176
175
  value: inputValue
177
176
  }), _jsxs("span", {
178
177
  className: `${baseClass}__page-total`,
179
- children: ["of ", totalPages]
178
+ children: ["of ", isSinglePage ? 1 : totalPages]
180
179
  })]
181
180
  })]
182
181
  });
@@ -185,14 +184,15 @@ export const Pagination = props => {
185
184
  $[21] = handleInputKeyDown;
186
185
  $[22] = hasNextPage;
187
186
  $[23] = inputValue;
188
- $[24] = nextPage;
189
- $[25] = t12;
190
- $[26] = t13;
191
- $[27] = totalPages;
192
- $[28] = updatePage;
193
- $[29] = t14;
187
+ $[24] = isSinglePage;
188
+ $[25] = nextPage;
189
+ $[26] = t12;
190
+ $[27] = t13;
191
+ $[28] = totalPages;
192
+ $[29] = updatePage;
193
+ $[30] = t14;
194
194
  } else {
195
- t14 = $[29];
195
+ t14 = $[30];
196
196
  }
197
197
  return t14;
198
198
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","useCallback","useState","ClickableArrow","baseClass","Pagination","props","$","hasNextPage","t0","hasPrevPage","t1","nextPage","t2","onChange","page","t3","prevPage","t4","totalPages","t5","undefined","currentPage","inputValue","setInputValue","String","t6","t7","useEffect","t8","updatePage","t9","Symbol","for","e","target","value","handleInputChange","t10","parsed","parseInt","isNaN","clamped","Math","max","min","handleInputBlur","t11","e_0","key","currentTarget","blur","preventDefault","parsed_0","parsed_1","handleInputKeyDown","t12","t13","t14","t15","_jsxs","className","children","_jsx","direction","isDisabled","inputMode","onBlur","onKeyDown","style","width","length","type"],"sources":["../../../src/elements/Pagination/index.tsx"],"sourcesContent":["'use client'\nimport React, { useCallback, useState } from 'react'\n\nimport { ClickableArrow } from './ClickableArrow/index.js'\nimport './index.css'\n\nconst baseClass = 'paginator'\n\nexport type PaginationProps = {\n hasNextPage?: boolean\n hasPrevPage?: boolean\n limit?: number\n nextPage?: number\n numberOfNeighbors?: number\n onChange?: (page: number) => void\n page?: number\n prevPage?: number\n totalPages?: number\n}\n\nexport const Pagination: React.FC<PaginationProps> = (props) => {\n const {\n hasNextPage = false,\n hasPrevPage = false,\n nextPage = null,\n onChange,\n page: currentPage = 1,\n prevPage = null,\n totalPages = 1,\n } = props\n\n const [inputValue, setInputValue] = useState(String(currentPage))\n\n // Sync input value when currentPage changes externally\n React.useEffect(() => {\n setInputValue(String(currentPage))\n }, [currentPage])\n\n const updatePage = useCallback(\n (page: number) => {\n if (typeof onChange === 'function') {\n onChange(page)\n }\n },\n [onChange],\n )\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value)\n }\n\n const handleInputBlur = () => {\n const parsed = parseInt(inputValue, 10)\n if (!isNaN(parsed)) {\n // Clamp to valid range\n const clamped = Math.max(1, Math.min(parsed, totalPages))\n if (clamped !== currentPage) {\n updatePage(clamped)\n } else {\n setInputValue(String(currentPage))\n }\n } else {\n // Reset to current page if not a number\n setInputValue(String(currentPage))\n }\n }\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.currentTarget.blur()\n } else if (e.key === 'Escape') {\n setInputValue(String(currentPage))\n e.currentTarget.blur()\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n const parsed = parseInt(inputValue, 10)\n if (!isNaN(parsed) && parsed < totalPages) {\n setInputValue(String(parsed + 1))\n }\n } else if (e.key === 'ArrowDown') {\n e.preventDefault()\n const parsed = parseInt(inputValue, 10)\n if (!isNaN(parsed) && parsed > 1) {\n setInputValue(String(parsed - 1))\n }\n }\n }\n\n if (!totalPages || totalPages <= 1) {\n return null\n }\n\n return (\n <div className={baseClass}>\n <ClickableArrow\n direction=\"left\"\n isDisabled={!hasPrevPage}\n updatePage={() => updatePage(prevPage ?? Math.max(1, currentPage - 1))}\n />\n <ClickableArrow\n direction=\"right\"\n isDisabled={!hasNextPage}\n updatePage={() => updatePage(nextPage ?? currentPage + 1)}\n />\n <div className={`${baseClass}__page-input-wrapper`}>\n <input\n aria-label=\"Go to page\"\n className={`${baseClass}__page-input`}\n inputMode=\"numeric\"\n max={totalPages}\n min={1}\n onBlur={handleInputBlur}\n onChange={handleInputChange}\n onKeyDown={handleInputKeyDown}\n style={{ width: `${Math.max(inputValue.length, 1)}ch` }}\n type=\"text\"\n value={inputValue}\n />\n <span className={`${baseClass}__page-total`}>of {totalPages}</span>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useCallback","useState","ClickableArrow","baseClass","Pagination","props","$","hasNextPage","t0","hasPrevPage","t1","nextPage","t2","onChange","page","t3","prevPage","t4","totalPages","t5","undefined","currentPage","inputValue","setInputValue","String","t6","t7","useEffect","t8","updatePage","t9","Symbol","for","e","target","value","handleInputChange","t10","parsed","parseInt","isNaN","clamped","Math","max","min","handleInputBlur","t11","e_0","key","currentTarget","blur","preventDefault","parsed_0","parsed_1","handleInputKeyDown","isSinglePage","t12","t13","t14","t15","_jsxs","className","children","_jsx","direction","isDisabled","disabled","inputMode","onBlur","onKeyDown","style","width","length","type"],"sources":["../../../src/elements/Pagination/index.tsx"],"sourcesContent":["'use client'\nimport React, { useCallback, useState } from 'react'\n\nimport { ClickableArrow } from './ClickableArrow/index.js'\nimport './index.css'\n\nconst baseClass = 'paginator'\n\nexport type PaginationProps = {\n hasNextPage?: boolean\n hasPrevPage?: boolean\n limit?: number\n nextPage?: number\n numberOfNeighbors?: number\n onChange?: (page: number) => void\n page?: number\n prevPage?: number\n totalPages?: number\n}\n\nexport const Pagination: React.FC<PaginationProps> = (props) => {\n const {\n hasNextPage = false,\n hasPrevPage = false,\n nextPage = null,\n onChange,\n page: currentPage = 1,\n prevPage = null,\n totalPages = 1,\n } = props\n\n const [inputValue, setInputValue] = useState(String(currentPage))\n\n // Sync input value when currentPage changes externally\n React.useEffect(() => {\n setInputValue(String(currentPage))\n }, [currentPage])\n\n const updatePage = useCallback(\n (page: number) => {\n if (typeof onChange === 'function') {\n onChange(page)\n }\n },\n [onChange],\n )\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value)\n }\n\n const handleInputBlur = () => {\n const parsed = parseInt(inputValue, 10)\n if (!isNaN(parsed)) {\n // Clamp to valid range\n const clamped = Math.max(1, Math.min(parsed, totalPages))\n if (clamped !== currentPage) {\n updatePage(clamped)\n } else {\n setInputValue(String(currentPage))\n }\n } else {\n // Reset to current page if not a number\n setInputValue(String(currentPage))\n }\n }\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.currentTarget.blur()\n } else if (e.key === 'Escape') {\n setInputValue(String(currentPage))\n e.currentTarget.blur()\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n const parsed = parseInt(inputValue, 10)\n if (!isNaN(parsed) && parsed < totalPages) {\n setInputValue(String(parsed + 1))\n }\n } else if (e.key === 'ArrowDown') {\n e.preventDefault()\n const parsed = parseInt(inputValue, 10)\n if (!isNaN(parsed) && parsed > 1) {\n setInputValue(String(parsed - 1))\n }\n }\n }\n\n const isSinglePage = !totalPages || totalPages <= 1\n\n return (\n <div className={baseClass}>\n <ClickableArrow\n direction=\"left\"\n isDisabled={isSinglePage || !hasPrevPage}\n updatePage={() => updatePage(prevPage ?? Math.max(1, currentPage - 1))}\n />\n <ClickableArrow\n direction=\"right\"\n isDisabled={isSinglePage || !hasNextPage}\n updatePage={() => updatePage(nextPage ?? currentPage + 1)}\n />\n <div className={`${baseClass}__page-input-wrapper`}>\n <input\n aria-label=\"Go to page\"\n className={`${baseClass}__page-input`}\n disabled={isSinglePage}\n inputMode=\"numeric\"\n max={totalPages}\n min={1}\n onBlur={handleInputBlur}\n onChange={handleInputChange}\n onKeyDown={handleInputKeyDown}\n style={{ width: `${Math.max(inputValue.length, 1)}ch` }}\n type=\"text\"\n value={inputValue}\n />\n <span className={`${baseClass}__page-total`}>of {isSinglePage ? 1 : totalPages}</span>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Search/ListSearchFilter/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAK1D,KAAK,qBAAqB,GAAG;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,QAAQ,EACR,KAAmB,EACnB,cAAc,EACd,gBAAgB,GACjB,EAAE,qBAAqB,qBA+CvB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Search/ListSearchFilter/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAK1D,KAAK,qBAAqB,GAAG;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,QAAQ,EACR,KAAmB,EACnB,cAAc,EACd,gBAAgB,GACjB,EAAE,qBAAqB,qBAgDvB"}
@@ -33,6 +33,7 @@ export function ListSearchFilter({
33
33
  }
34
34
  }, [debouncedSearch, onSearchChange]);
35
35
  return /*#__PURE__*/_jsx(SearchInput, {
36
+ autoComplete: "off",
36
37
  className: className,
37
38
  disabled: disabled,
38
39
  id: "search-filter-input",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useEffect","useRef","useState","useDebounce","SearchInput","ListSearchFilter","className","disabled","label","onSearchChange","searchQueryParam","search","setSearch","undefined","shouldUpdateState","previousSearch","debouncedSearch","current","_jsx","id","onChange","value","onClear","placeholder"],"sources":["../../../../src/elements/Search/ListSearchFilter/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { useEffect, useRef, useState } from 'react'\n\nimport { useDebounce } from '../../../hooks/useDebounce.js'\nimport { SearchInput } from '../SearchInput/index.js'\n\ntype ListSearchFilterProps = {\n className?: string\n disabled?: boolean\n label?: string\n onSearchChange: (search: string) => void\n searchQueryParam?: string\n}\n\nexport function ListSearchFilter({\n className,\n disabled,\n label = 'Search...',\n onSearchChange,\n searchQueryParam,\n}: ListSearchFilterProps) {\n const [search, setSearch] = useState(\n typeof searchQueryParam === 'string' ? searchQueryParam : undefined,\n )\n\n const shouldUpdateState = useRef(true)\n const previousSearch = useRef(typeof searchQueryParam === 'string' ? searchQueryParam : undefined)\n\n const debouncedSearch = useDebounce(search, 300)\n\n useEffect(() => {\n if (searchQueryParam !== previousSearch.current) {\n shouldUpdateState.current = false\n setSearch(searchQueryParam)\n previousSearch.current = searchQueryParam\n }\n\n return () => {\n shouldUpdateState.current = true\n previousSearch.current = undefined\n }\n }, [searchQueryParam])\n\n useEffect(() => {\n if (debouncedSearch !== previousSearch.current && shouldUpdateState.current) {\n onSearchChange(debouncedSearch)\n previousSearch.current = debouncedSearch\n }\n }, [debouncedSearch, onSearchChange])\n\n return (\n <SearchInput\n className={className}\n disabled={disabled}\n id=\"search-filter-input\"\n onChange={(value) => {\n shouldUpdateState.current = true\n setSearch(value)\n }}\n onClear={() => {\n shouldUpdateState.current = true\n setSearch('')\n }}\n placeholder={label}\n value={search || ''}\n />\n )\n}\n"],"mappings":"AAAA;;;AAEA,OAAOA,KAAA,IAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAEnD,SAASC,WAAW,QAAQ;AAC5B,SAASC,WAAW,QAAQ;AAU5B,OAAO,SAASC,iBAAiB;EAC/BC,SAAS;EACTC,QAAQ;EACRC,KAAA,GAAQ,WAAW;EACnBC,cAAc;EACdC;AAAgB,CACM;EACtB,MAAM,CAACC,MAAA,EAAQC,SAAA,CAAU,GAAGV,QAAA,CAC1B,OAAOQ,gBAAA,KAAqB,WAAWA,gBAAA,GAAmBG,SAAA;EAG5D,MAAMC,iBAAA,GAAoBb,MAAA,CAAO;EACjC,MAAMc,cAAA,GAAiBd,MAAA,CAAO,OAAOS,gBAAA,KAAqB,WAAWA,gBAAA,GAAmBG,SAAA;EAExF,MAAMG,eAAA,GAAkBb,WAAA,CAAYQ,MAAA,EAAQ;EAE5CX,SAAA,CAAU;IACR,IAAIU,gBAAA,KAAqBK,cAAA,CAAeE,OAAO,EAAE;MAC/CH,iBAAA,CAAkBG,OAAO,GAAG;MAC5BL,SAAA,CAAUF,gBAAA;MACVK,cAAA,CAAeE,OAAO,GAAGP,gBAAA;IAC3B;IAEA,OAAO;MACLI,iBAAA,CAAkBG,OAAO,GAAG;MAC5BF,cAAA,CAAeE,OAAO,GAAGJ,SAAA;IAC3B;EACF,GAAG,CAACH,gBAAA,CAAiB;EAErBV,SAAA,CAAU;IACR,IAAIgB,eAAA,KAAoBD,cAAA,CAAeE,OAAO,IAAIH,iBAAA,CAAkBG,OAAO,EAAE;MAC3ER,cAAA,CAAeO,eAAA;MACfD,cAAA,CAAeE,OAAO,GAAGD,eAAA;IAC3B;EACF,GAAG,CAACA,eAAA,EAAiBP,cAAA,CAAe;EAEpC,oBACES,IAAA,CAACd,WAAA;IACCE,SAAA,EAAWA,SAAA;IACXC,QAAA,EAAUA,QAAA;IACVY,EAAA,EAAG;IACHC,QAAA,EAAWC,KAAA;MACTP,iBAAA,CAAkBG,OAAO,GAAG;MAC5BL,SAAA,CAAUS,KAAA;IACZ;IACAC,OAAA,EAASA,CAAA;MACPR,iBAAA,CAAkBG,OAAO,GAAG;MAC5BL,SAAA,CAAU;IACZ;IACAW,WAAA,EAAaf,KAAA;IACba,KAAA,EAAOV,MAAA,IAAU;;AAGvB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useEffect","useRef","useState","useDebounce","SearchInput","ListSearchFilter","className","disabled","label","onSearchChange","searchQueryParam","search","setSearch","undefined","shouldUpdateState","previousSearch","debouncedSearch","current","_jsx","autoComplete","id","onChange","value","onClear","placeholder"],"sources":["../../../../src/elements/Search/ListSearchFilter/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { useEffect, useRef, useState } from 'react'\n\nimport { useDebounce } from '../../../hooks/useDebounce.js'\nimport { SearchInput } from '../SearchInput/index.js'\n\ntype ListSearchFilterProps = {\n className?: string\n disabled?: boolean\n label?: string\n onSearchChange: (search: string) => void\n searchQueryParam?: string\n}\n\nexport function ListSearchFilter({\n className,\n disabled,\n label = 'Search...',\n onSearchChange,\n searchQueryParam,\n}: ListSearchFilterProps) {\n const [search, setSearch] = useState(\n typeof searchQueryParam === 'string' ? searchQueryParam : undefined,\n )\n\n const shouldUpdateState = useRef(true)\n const previousSearch = useRef(typeof searchQueryParam === 'string' ? searchQueryParam : undefined)\n\n const debouncedSearch = useDebounce(search, 300)\n\n useEffect(() => {\n if (searchQueryParam !== previousSearch.current) {\n shouldUpdateState.current = false\n setSearch(searchQueryParam)\n previousSearch.current = searchQueryParam\n }\n\n return () => {\n shouldUpdateState.current = true\n previousSearch.current = undefined\n }\n }, [searchQueryParam])\n\n useEffect(() => {\n if (debouncedSearch !== previousSearch.current && shouldUpdateState.current) {\n onSearchChange(debouncedSearch)\n previousSearch.current = debouncedSearch\n }\n }, [debouncedSearch, onSearchChange])\n\n return (\n <SearchInput\n autoComplete=\"off\"\n className={className}\n disabled={disabled}\n id=\"search-filter-input\"\n onChange={(value) => {\n shouldUpdateState.current = true\n setSearch(value)\n }}\n onClear={() => {\n shouldUpdateState.current = true\n setSearch('')\n }}\n placeholder={label}\n value={search || ''}\n />\n )\n}\n"],"mappings":"AAAA;;;AAEA,OAAOA,KAAA,IAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAEnD,SAASC,WAAW,QAAQ;AAC5B,SAASC,WAAW,QAAQ;AAU5B,OAAO,SAASC,iBAAiB;EAC/BC,SAAS;EACTC,QAAQ;EACRC,KAAA,GAAQ,WAAW;EACnBC,cAAc;EACdC;AAAgB,CACM;EACtB,MAAM,CAACC,MAAA,EAAQC,SAAA,CAAU,GAAGV,QAAA,CAC1B,OAAOQ,gBAAA,KAAqB,WAAWA,gBAAA,GAAmBG,SAAA;EAG5D,MAAMC,iBAAA,GAAoBb,MAAA,CAAO;EACjC,MAAMc,cAAA,GAAiBd,MAAA,CAAO,OAAOS,gBAAA,KAAqB,WAAWA,gBAAA,GAAmBG,SAAA;EAExF,MAAMG,eAAA,GAAkBb,WAAA,CAAYQ,MAAA,EAAQ;EAE5CX,SAAA,CAAU;IACR,IAAIU,gBAAA,KAAqBK,cAAA,CAAeE,OAAO,EAAE;MAC/CH,iBAAA,CAAkBG,OAAO,GAAG;MAC5BL,SAAA,CAAUF,gBAAA;MACVK,cAAA,CAAeE,OAAO,GAAGP,gBAAA;IAC3B;IAEA,OAAO;MACLI,iBAAA,CAAkBG,OAAO,GAAG;MAC5BF,cAAA,CAAeE,OAAO,GAAGJ,SAAA;IAC3B;EACF,GAAG,CAACH,gBAAA,CAAiB;EAErBV,SAAA,CAAU;IACR,IAAIgB,eAAA,KAAoBD,cAAA,CAAeE,OAAO,IAAIH,iBAAA,CAAkBG,OAAO,EAAE;MAC3ER,cAAA,CAAeO,eAAA;MACfD,cAAA,CAAeE,OAAO,GAAGD,eAAA;IAC3B;EACF,GAAG,CAACA,eAAA,EAAiBP,cAAA,CAAe;EAEpC,oBACES,IAAA,CAACd,WAAA;IACCe,YAAA,EAAa;IACbb,SAAA,EAAWA,SAAA;IACXC,QAAA,EAAUA,QAAA;IACVa,EAAA,EAAG;IACHC,QAAA,EAAWC,KAAA;MACTR,iBAAA,CAAkBG,OAAO,GAAG;MAC5BL,SAAA,CAAUU,KAAA;IACZ;IACAC,OAAA,EAASA,CAAA;MACPT,iBAAA,CAAkBG,OAAO,GAAG;MAC5BL,SAAA,CAAU;IACZ;IACAY,WAAA,EAAahB,KAAA;IACbc,KAAA,EAAOX,MAAA,IAAU;;AAGvB","ignoreList":[]}
@@ -1,7 +1,9 @@
1
+ import type { BrowserAutoComplete } from 'payload';
1
2
  import React from 'react';
2
3
  import './index.css';
3
4
  type SearchInputProps = {
4
5
  'aria-label'?: string;
6
+ autoComplete?: BrowserAutoComplete;
5
7
  className?: string;
6
8
  disabled?: boolean;
7
9
  id?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Search/SearchInput/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAM1C,OAAO,aAAa,CAAA;AAIpB,KAAK,gBAAgB,GAAG;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAkDlD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Search/SearchInput/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAElD,OAAO,KAAsB,MAAM,OAAO,CAAA;AAM1C,OAAO,aAAa,CAAA;AAIpB,KAAK,gBAAgB,GAAG;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,mBAAmB,CAAA;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAoDlD,CAAA"}
@@ -10,10 +10,11 @@ import { Button } from '../../Button/index.js';
10
10
  import './index.css';
11
11
  const baseClass = 'search-input';
12
12
  export const SearchInput = t0 => {
13
- const $ = _c(19);
13
+ const $ = _c(20);
14
14
  const {
15
15
  id,
16
16
  "aria-label": ariaLabel,
17
+ autoComplete,
17
18
  className,
18
19
  disabled,
19
20
  onChange,
@@ -49,19 +50,20 @@ export const SearchInput = t0 => {
49
50
  }
50
51
  const t3 = t2.join(" ");
51
52
  let t4;
52
- if ($[5] !== ariaLabel || $[6] !== disabled || $[7] !== handleKeyDown || $[8] !== id || $[9] !== onChange || $[10] !== onClear || $[11] !== onSearch || $[12] !== placeholder || $[13] !== t || $[14] !== t3 || $[15] !== value) {
53
+ if ($[5] !== ariaLabel || $[6] !== autoComplete || $[7] !== disabled || $[8] !== handleKeyDown || $[9] !== id || $[10] !== onChange || $[11] !== onClear || $[12] !== onSearch || $[13] !== placeholder || $[14] !== t || $[15] !== t3 || $[16] !== value) {
53
54
  let t5;
54
- if ($[17] !== onChange) {
55
+ if ($[18] !== onChange) {
55
56
  t5 = e_0 => onChange(e_0.target.value);
56
- $[17] = onChange;
57
- $[18] = t5;
57
+ $[18] = onChange;
58
+ $[19] = t5;
58
59
  } else {
59
- t5 = $[18];
60
+ t5 = $[19];
60
61
  }
61
62
  t4 = _jsxs("div", {
62
63
  className: t3,
63
64
  children: [_jsx(SearchIcon, {}), _jsx("input", {
64
65
  "aria-label": ariaLabel ?? placeholder,
66
+ autoComplete,
65
67
  className: `${baseClass}__input`,
66
68
  disabled,
67
69
  id,
@@ -84,19 +86,20 @@ export const SearchInput = t0 => {
84
86
  })]
85
87
  });
86
88
  $[5] = ariaLabel;
87
- $[6] = disabled;
88
- $[7] = handleKeyDown;
89
- $[8] = id;
90
- $[9] = onChange;
91
- $[10] = onClear;
92
- $[11] = onSearch;
93
- $[12] = placeholder;
94
- $[13] = t;
95
- $[14] = t3;
96
- $[15] = value;
97
- $[16] = t4;
89
+ $[6] = autoComplete;
90
+ $[7] = disabled;
91
+ $[8] = handleKeyDown;
92
+ $[9] = id;
93
+ $[10] = onChange;
94
+ $[11] = onClear;
95
+ $[12] = onSearch;
96
+ $[13] = placeholder;
97
+ $[14] = t;
98
+ $[15] = t3;
99
+ $[16] = value;
100
+ $[17] = t4;
98
101
  } else {
99
- t4 = $[16];
102
+ t4 = $[17];
100
103
  }
101
104
  return t4;
102
105
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","useCallback","SearchIcon","XIcon","useTranslation","Button","baseClass","SearchInput","t0","$","id","ariaLabel","className","disabled","onChange","onClear","onSearch","placeholder","value","t","t1","e","key","nativeEvent","isComposing","length","handleKeyDown","t2","filter","Boolean","t3","join","t4","t5","e_0","target","_jsxs","children","_jsx","onKeyDown","undefined","type","buttonStyle","icon","size","round"],"sources":["../../../../src/elements/Search/SearchInput/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { useCallback } from 'react'\n\nimport { SearchIcon } from '../../../icons/Search/index.js'\nimport { XIcon } from '../../../icons/X/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport './index.css'\n\nconst baseClass = 'search-input'\n\ntype SearchInputProps = {\n 'aria-label'?: string\n className?: string\n disabled?: boolean\n id?: string\n onChange: (value: string) => void\n onClear?: () => void\n onSearch?: (value: string) => void\n placeholder?: string\n value: string\n}\n\nexport const SearchInput: React.FC<SearchInputProps> = ({\n id,\n 'aria-label': ariaLabel,\n className,\n disabled,\n onChange,\n onClear,\n onSearch,\n placeholder,\n value,\n}) => {\n const { t } = useTranslation()\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' && !e.nativeEvent.isComposing && value.length > 0) {\n onSearch(value)\n }\n },\n [value, onSearch],\n )\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <SearchIcon />\n <input\n aria-label={ariaLabel ?? placeholder}\n className={`${baseClass}__input`}\n disabled={disabled}\n id={id}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={onSearch ? handleKeyDown : undefined}\n placeholder={placeholder}\n type=\"text\"\n value={value}\n />\n {onClear && value.length > 0 && (\n <Button\n aria-label={t('general:clear')}\n buttonStyle=\"ghost\"\n className={`${baseClass}__clear`}\n icon={<XIcon size={16} />}\n margin={false}\n onClick={onClear}\n round\n size=\"medium\"\n />\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useCallback","SearchIcon","XIcon","useTranslation","Button","baseClass","SearchInput","t0","$","id","ariaLabel","autoComplete","className","disabled","onChange","onClear","onSearch","placeholder","value","t","t1","e","key","nativeEvent","isComposing","length","handleKeyDown","t2","filter","Boolean","t3","join","t4","t5","e_0","target","_jsxs","children","_jsx","onKeyDown","undefined","type","buttonStyle","icon","size","round"],"sources":["../../../../src/elements/Search/SearchInput/index.tsx"],"sourcesContent":["'use client'\n\nimport type { BrowserAutoComplete } from 'payload'\n\nimport React, { useCallback } from 'react'\n\nimport { SearchIcon } from '../../../icons/Search/index.js'\nimport { XIcon } from '../../../icons/X/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport './index.css'\n\nconst baseClass = 'search-input'\n\ntype SearchInputProps = {\n 'aria-label'?: string\n autoComplete?: BrowserAutoComplete\n className?: string\n disabled?: boolean\n id?: string\n onChange: (value: string) => void\n onClear?: () => void\n onSearch?: (value: string) => void\n placeholder?: string\n value: string\n}\n\nexport const SearchInput: React.FC<SearchInputProps> = ({\n id,\n 'aria-label': ariaLabel,\n autoComplete,\n className,\n disabled,\n onChange,\n onClear,\n onSearch,\n placeholder,\n value,\n}) => {\n const { t } = useTranslation()\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' && !e.nativeEvent.isComposing && value.length > 0) {\n onSearch(value)\n }\n },\n [value, onSearch],\n )\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <SearchIcon />\n <input\n aria-label={ariaLabel ?? placeholder}\n autoComplete={autoComplete}\n className={`${baseClass}__input`}\n disabled={disabled}\n id={id}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={onSearch ? handleKeyDown : undefined}\n placeholder={placeholder}\n type=\"text\"\n value={value}\n />\n {onClear && value.length > 0 && (\n <Button\n aria-label={t('general:clear')}\n buttonStyle=\"ghost\"\n className={`${baseClass}__clear`}\n icon={<XIcon size={16} />}\n margin={false}\n onClick={onClear}\n round\n size=\"medium\"\n />\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -123,7 +123,6 @@ export type { SwitchProps } from '../../elements/Switch/index.js';
123
123
  export { DelayedSpinner } from '../../elements/DelayedSpinner/index.js';
124
124
  export type { DelayedSpinnerProps } from '../../elements/DelayedSpinner/index.js';
125
125
  export { Logout } from '../../elements/Logout/index.js';
126
- export { NavToggler } from '../../elements/Nav/NavToggler/index.js';
127
126
  export { NavSidebarToggle } from '../../elements/Nav/NavSidebarToggle/index.js';
128
127
  export { NavWrapper } from '../../elements/Nav/NavWrapper/index.js';
129
128
  export { SettingsMenuButton } from '../../elements/Nav/SettingsMenuButton/index.js';