@panneau/lists 5.0.0-alpha.2 → 5.0.0-alpha.21

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 (165) hide show
  1. package/README.md +17 -15
  2. package/dist/ItemDetails.css +50 -0
  3. package/dist/ItemDetails.d.ts +27 -0
  4. package/dist/ItemDetails.d.ts.map +1 -0
  5. package/dist/ItemDetails.js +134 -0
  6. package/dist/ItemDetails.js.map +1 -0
  7. package/dist/ItemDetails.module.js +20 -0
  8. package/dist/ItemDetails.module.js.map +1 -0
  9. package/dist/List.d.ts +3 -3
  10. package/dist/List.d.ts.map +1 -1
  11. package/dist/List.js +31 -10
  12. package/dist/List.js.map +1 -1
  13. package/dist/ListSkeleton.d.ts +19 -0
  14. package/dist/ListSkeleton.d.ts.map +1 -0
  15. package/dist/ListSkeleton.js +115 -0
  16. package/dist/ListSkeleton.js.map +1 -0
  17. package/dist/ListView.d.ts +73 -8
  18. package/dist/ListView.d.ts.map +1 -1
  19. package/dist/ListView.js +616 -218
  20. package/dist/ListView.js.map +1 -1
  21. package/dist/actions/ActionButton.d.ts +8 -2
  22. package/dist/actions/ActionButton.d.ts.map +1 -1
  23. package/dist/actions/ActionButton.js +98 -26
  24. package/dist/actions/ActionButton.js.map +1 -1
  25. package/dist/actions/Actions.css +16 -38
  26. package/dist/actions/Actions.module.js +6 -6
  27. package/dist/actions/Actions.module.js.map +1 -1
  28. package/dist/actions/ConfirmDialog.d.ts +20 -4
  29. package/dist/actions/ConfirmDialog.d.ts.map +1 -1
  30. package/dist/actions/ConfirmDialog.js +110 -92
  31. package/dist/actions/ConfirmDialog.js.map +1 -1
  32. package/dist/actions/RowActions.d.ts +25 -9
  33. package/dist/actions/RowActions.d.ts.map +1 -1
  34. package/dist/actions/RowActions.js +151 -80
  35. package/dist/actions/RowActions.js.map +1 -1
  36. package/dist/actions/actions.d.ts +5 -4
  37. package/dist/actions/actions.d.ts.map +1 -1
  38. package/dist/actions/actions.js +7 -14
  39. package/dist/actions/actions.js.map +1 -1
  40. package/dist/actions/fit.d.ts +25 -0
  41. package/dist/actions/fit.d.ts.map +1 -0
  42. package/dist/actions/fit.js +197 -0
  43. package/dist/actions/fit.js.map +1 -0
  44. package/dist/actions/icons.d.ts +5 -0
  45. package/dist/actions/icons.d.ts.map +1 -1
  46. package/dist/actions/icons.js +15 -1
  47. package/dist/actions/icons.js.map +1 -1
  48. package/dist/columns.d.ts +10 -0
  49. package/dist/columns.d.ts.map +1 -0
  50. package/dist/columns.js +25 -0
  51. package/dist/columns.js.map +1 -0
  52. package/dist/cx.js.map +1 -1
  53. package/dist/displays/Displays.css +48 -0
  54. package/dist/displays/Displays.module.js +18 -2
  55. package/dist/displays/Displays.module.js.map +1 -1
  56. package/dist/displays/displays.d.ts +62 -6
  57. package/dist/displays/displays.d.ts.map +1 -1
  58. package/dist/displays/displays.js +1151 -89
  59. package/dist/displays/displays.js.map +1 -1
  60. package/dist/filters/Filters.css +25 -11
  61. package/dist/filters/Filters.d.ts +1 -1
  62. package/dist/filters/Filters.js.map +1 -1
  63. package/dist/filters/Filters.module.js +5 -1
  64. package/dist/filters/Filters.module.js.map +1 -1
  65. package/dist/filters/controls.d.ts +1 -1
  66. package/dist/filters/controls.d.ts.map +1 -1
  67. package/dist/filters/controls.js +57 -35
  68. package/dist/filters/controls.js.map +1 -1
  69. package/dist/filters/format.d.ts +1 -1
  70. package/dist/filters/format.js.map +1 -1
  71. package/dist/images.d.ts +7 -0
  72. package/dist/images.d.ts.map +1 -0
  73. package/dist/images.js +39 -0
  74. package/dist/images.js.map +1 -0
  75. package/dist/index.d.ts +22 -18
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +7 -3
  78. package/dist/inline/Inline.css +58 -0
  79. package/dist/inline/Inline.module.js +20 -0
  80. package/dist/inline/Inline.module.js.map +1 -0
  81. package/dist/inline/InlineCell.d.ts +29 -0
  82. package/dist/inline/InlineCell.d.ts.map +1 -0
  83. package/dist/inline/InlineCell.js +490 -0
  84. package/dist/inline/InlineCell.js.map +1 -0
  85. package/dist/inline/editable.d.ts +12 -0
  86. package/dist/inline/editable.d.ts.map +1 -0
  87. package/dist/inline/editable.js +29 -0
  88. package/dist/inline/editable.js.map +1 -0
  89. package/dist/layouts/CalendarLayout.css +153 -0
  90. package/dist/layouts/CalendarLayout.d.ts +9 -0
  91. package/dist/layouts/CalendarLayout.d.ts.map +1 -0
  92. package/dist/layouts/CalendarLayout.js +303 -0
  93. package/dist/layouts/CalendarLayout.js.map +1 -0
  94. package/dist/layouts/CalendarLayout.module.js +28 -0
  95. package/dist/layouts/CalendarLayout.module.js.map +1 -0
  96. package/dist/layouts/CardsLayout.css +5 -0
  97. package/dist/layouts/CardsLayout.d.ts +2 -2
  98. package/dist/layouts/CardsLayout.d.ts.map +1 -1
  99. package/dist/layouts/CardsLayout.js +92 -91
  100. package/dist/layouts/CardsLayout.js.map +1 -1
  101. package/dist/layouts/CardsLayout.module.js.map +1 -1
  102. package/dist/layouts/GalleryLayout.css +87 -0
  103. package/dist/layouts/GalleryLayout.d.ts +8 -0
  104. package/dist/layouts/GalleryLayout.d.ts.map +1 -0
  105. package/dist/layouts/GalleryLayout.js +152 -0
  106. package/dist/layouts/GalleryLayout.js.map +1 -0
  107. package/dist/layouts/GalleryLayout.module.js +26 -0
  108. package/dist/layouts/GalleryLayout.module.js.map +1 -0
  109. package/dist/layouts/ItemTitle.d.ts +3 -1
  110. package/dist/layouts/ItemTitle.d.ts.map +1 -1
  111. package/dist/layouts/ItemTitle.js +12 -8
  112. package/dist/layouts/ItemTitle.js.map +1 -1
  113. package/dist/layouts/TableLayout.css +56 -0
  114. package/dist/layouts/TableLayout.d.ts +5 -4
  115. package/dist/layouts/TableLayout.d.ts.map +1 -1
  116. package/dist/layouts/TableLayout.js +171 -101
  117. package/dist/layouts/TableLayout.js.map +1 -1
  118. package/dist/layouts/TableLayout.module.js +8 -4
  119. package/dist/layouts/TableLayout.module.js.map +1 -1
  120. package/dist/layouts/builtIn.d.ts +2 -2
  121. package/dist/layouts/builtIn.d.ts.map +1 -1
  122. package/dist/layouts/builtIn.js +6 -2
  123. package/dist/layouts/builtIn.js.map +1 -1
  124. package/dist/layouts/calendarDays.d.ts +14 -0
  125. package/dist/layouts/calendarDays.d.ts.map +1 -0
  126. package/dist/layouts/calendarDays.js +44 -0
  127. package/dist/layouts/calendarDays.js.map +1 -0
  128. package/dist/plugin.d.ts +1 -1
  129. package/dist/plugin.js.map +1 -1
  130. package/dist/query.d.ts +4 -3
  131. package/dist/query.d.ts.map +1 -1
  132. package/dist/query.js +15 -4
  133. package/dist/query.js.map +1 -1
  134. package/dist/selection.d.ts +1 -1
  135. package/dist/selection.js.map +1 -1
  136. package/dist/toolbar/ColumnMenu.d.ts +17 -0
  137. package/dist/toolbar/ColumnMenu.d.ts.map +1 -0
  138. package/dist/toolbar/ColumnMenu.js +193 -0
  139. package/dist/toolbar/ColumnMenu.js.map +1 -0
  140. package/dist/toolbar/LayoutSwitch.d.ts.map +1 -1
  141. package/dist/toolbar/LayoutSwitch.js +73 -55
  142. package/dist/toolbar/LayoutSwitch.js.map +1 -1
  143. package/dist/toolbar/Pagination.d.ts +33 -0
  144. package/dist/toolbar/Pagination.d.ts.map +1 -1
  145. package/dist/toolbar/Pagination.js +282 -42
  146. package/dist/toolbar/Pagination.js.map +1 -1
  147. package/dist/toolbar/SearchField.js.map +1 -1
  148. package/dist/toolbar/SortSelect.d.ts +1 -1
  149. package/dist/toolbar/SortSelect.js.map +1 -1
  150. package/dist/toolbar/Toolbar.css +36 -0
  151. package/dist/toolbar/Toolbar.module.js +12 -2
  152. package/dist/toolbar/Toolbar.module.js.map +1 -1
  153. package/dist/types.d.ts +69 -1
  154. package/dist/types.d.ts.map +1 -1
  155. package/dist/useDraft.js.map +1 -1
  156. package/dist/useListState.js.map +1 -1
  157. package/dist/useRenderValue.d.ts +10 -0
  158. package/dist/useRenderValue.d.ts.map +1 -0
  159. package/dist/useRenderValue.js +84 -0
  160. package/dist/useRenderValue.js.map +1 -0
  161. package/dist/values.d.ts +4 -1
  162. package/dist/values.d.ts.map +1 -1
  163. package/dist/values.js +6 -2
  164. package/dist/values.js.map +1 -1
  165. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"displays.js","names":["text","value","source","label","_c","styles"],"sources":["../../src/displays/displays.tsx"],"sourcesContent":["import { Check, Minus } from 'lucide-react';\n\nimport { toReferences } from '@panneau/fields';\nimport { Badge, Icon, usePanneauIntl } from '@panneau/ui';\n\nimport { messages } from '../messages';\nimport type { DisplayEntry, DisplayProps } from '../types';\nimport { getFieldOptions, getOptionLabel, toText } from '../values';\nimport styles from './Displays.module.css';\n\n/** What a cell shows without a value. Hidden from assistive technologies, which skip the cell. */\nexport function EmptyValue() {\n return (\n <span className={styles.empty} aria-hidden=\"true\">\n —\n </span>\n );\n}\n\nfunction isEmpty(value: unknown): boolean {\n return (\n value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0)\n );\n}\n\n/** Text, on two lines at most. The default display. */\nexport function TextDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n const text = toText(value, intl.locale);\n return text === '' ? <EmptyValue /> : <span className={styles.text}>{text}</span>;\n}\n\n/** HTML as plain text. */\nexport function RichTextDisplay({ value }: DisplayProps) {\n const text =\n typeof value === 'string'\n ? value\n .replace(/<[^>]*>/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim()\n : '';\n return text === '' ? <EmptyValue /> : <span className={styles.text}>{text}</span>;\n}\n\n/** A number, in the format of the locale. */\nexport function NumberDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n const number =\n typeof value === 'number' ? value : typeof value === 'string' ? Number(value) : NaN;\n if (Number.isNaN(number) || isEmpty(value)) {\n return <EmptyValue />;\n }\n return <span className={styles.number}>{intl.formatNumber(number)}</span>;\n}\n\n/** Yes or no, as an icon with its label. */\nexport function BooleanDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n if (value === null || value === undefined) {\n return <EmptyValue />;\n }\n const checked = value === true || value === 1 || value === 'true' || value === '1';\n return (\n <span className={`${styles.boolean} ${checked ? styles.true : styles.false}`}>\n <Icon\n icon={checked ? Check : Minus}\n label={intl.formatMessage(checked ? messages.yes : messages.no)}\n />\n </span>\n );\n}\n\nconst DATE_ONLY = /^(\\d{4})-(\\d{2})-(\\d{2})$/;\nconst TIME_ONLY = /^(\\d{2}):(\\d{2})(?::(\\d{2}))?$/;\n\n/** A date (`2026-10-15`) as a local date, so that it doesn't move with the time zone. */\nfunction parseDate(value: unknown): Date | null {\n if (typeof value !== 'string' || value === '') {\n return null;\n }\n const day = DATE_ONLY.exec(value);\n const date =\n day !== null\n ? new Date(Number(day[1]), Number(day[2]) - 1, Number(day[3]))\n : new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n}\n\n/** A date, in the format of the locale. */\nexport function DateDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n const date = parseDate(value);\n if (date === null) {\n return <EmptyValue />;\n }\n return <time dateTime={String(value)}>{intl.formatDate(date, { dateStyle: 'medium' })}</time>;\n}\n\n/** A date and a time, in the format and the time zone of the user. */\nexport function DateTimeDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n const date = parseDate(value);\n if (date === null) {\n return <EmptyValue />;\n }\n return (\n <time dateTime={String(value)}>\n {intl.formatDate(date, { dateStyle: 'medium', timeStyle: 'short' })}\n </time>\n );\n}\n\n/** A time of day (`14:30`), in the format of the locale. */\nexport function TimeDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n const match = typeof value === 'string' ? TIME_ONLY.exec(value) : null;\n if (match === null) {\n return <EmptyValue />;\n }\n const date = new Date(2000, 0, 1, Number(match[1]), Number(match[2]), Number(match[3] ?? 0));\n return <time dateTime={String(value)}>{intl.formatTime(date, { timeStyle: 'short' })}</time>;\n}\n\n/** The labels of the selected options, as badges. */\nexport function SelectDisplay({ value, field }: DisplayProps) {\n const options = getFieldOptions(field);\n const values: unknown[] = Array.isArray(value) ? value : isEmpty(value) ? [] : [value];\n if (values.length === 0) {\n return <EmptyValue />;\n }\n return (\n <span className={styles.badges}>\n {values.map((entry) => (\n <Badge key={String(entry)}>{getOptionLabel(options, entry) ?? String(entry)}</Badge>\n ))}\n </span>\n );\n}\n\n/** The labels of related items. */\nexport function RelationDisplay({ value }: DisplayProps) {\n const references = toReferences(value);\n if (references.length === 0) {\n return <EmptyValue />;\n }\n return (\n <span className={styles.text}>\n {references.map((reference) => reference.label).join(', ')}\n </span>\n );\n}\n\n/** A link that opens the URL. */\nexport function UrlDisplay({ value }: DisplayProps) {\n if (typeof value !== 'string' || value === '') {\n return <EmptyValue />;\n }\n return (\n <a className={styles.link} href={value} target=\"_blank\" rel=\"noreferrer\">\n {value.replace(/^https?:\\/\\//, '')}\n </a>\n );\n}\n\n/** A link that writes an email. */\nexport function EmailDisplay({ value }: DisplayProps) {\n if (typeof value !== 'string' || value === '') {\n return <EmptyValue />;\n }\n return (\n <a className={styles.link} href={`mailto:${value}`}>\n {value}\n </a>\n );\n}\n\n/** A swatch, with the color's code. */\nexport function ColorDisplay({ value }: DisplayProps) {\n if (typeof value !== 'string' || value === '') {\n return <EmptyValue />;\n }\n return (\n <span className={styles.color}>\n <span className={styles.swatch} style={{ backgroundColor: value }} aria-hidden=\"true\" />\n {value}\n </span>\n );\n}\n\n/** A thumbnail and the name of a media item (or of the first one). */\nexport function MediaDisplay({ value }: DisplayProps) {\n const media: unknown = Array.isArray(value) ? value[0] : value;\n if (media === null || typeof media !== 'object') {\n return <EmptyValue />;\n }\n const { thumbnailUrl, url, name, filename } = media as Record<string, unknown>;\n const source =\n typeof thumbnailUrl === 'string' ? thumbnailUrl : typeof url === 'string' ? url : null;\n const label = typeof name === 'string' ? name : typeof filename === 'string' ? filename : '';\n return (\n <span className={styles.media}>\n {source !== null ? <img className={styles.thumbnail} src={source} alt=\"\" /> : null}\n {label !== '' ? <span className={styles.text}>{label}</span> : null}\n </span>\n );\n}\n\n/**\n * The built-in displays, by name. A column's display is its `display`, its field's `display`, or\n * its field's type: field types are display names. Values without a known display are shown as\n * text.\n */\nexport const builtInDisplays: Readonly<Record<string, DisplayEntry>> = {\n text: TextDisplay,\n textarea: TextDisplay,\n slug: TextDisplay,\n richtext: RichTextDisplay,\n number: NumberDisplay,\n boolean: BooleanDisplay,\n date: DateDisplay,\n datetime: DateTimeDisplay,\n time: TimeDisplay,\n select: SelectDisplay,\n relation: RelationDisplay,\n url: UrlDisplay,\n email: EmailDisplay,\n color: ColorDisplay,\n media: MediaDisplay,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"displays.js","names":["Check","File","FileText","Globe","Hash","Mail","Minus","Phone","toReferences","formatAddress","isAddress","getColorPalette","getSwatchColor","getCountryFlag","getCountryName","isCountryCode","formatDateRange","getDateRangeSettings","formatDuration","getDurationUnits","getLinkText","isLink","formatMoney","RegionFlag","getRegionCountry","getRegionName","parsePhone","splitExtension","fieldsMessages","Badge","Icon","Tone","usePanneauIntl","getImageUrl","messages","DisplayEntry","DisplayProps","findOption","getFieldOptions","isRecord","toText","styles","EmptyValue","$","_c","t0","Symbol","for","empty","isEmpty","value","undefined","Array","isArray","length","TextDisplay","field","intl","t1","locale","text","t2","settings","secret","formatMessage","secretValue","t3","RichTextDisplay","replace","trim","NumberDisplay","number","Number","NaN","isNaN","formatNumber","BooleanDisplay","checked","boolean","true","false","yes","no","t4","t5","DATE_ONLY","TIME_ONLY","parseDate","Date","day","exec","date","getTime","DateDisplay","bb0","String","formatDate","dateStyle","DateTimeDisplay","timeStyle","DateRangeDisplay","range","timeZone","kind","rangeFrom","start","rangeUntil","end","MoneyDisplay","TimeDisplay","match","formatTime","SelectDisplay","options","values","badges","map","entry","option","tone","label","RelationDisplay","references","_temp","join","reference","UrlDisplay","link","EmailDisplay","TelDisplay","extension","t6","t7","t8","flagged","country","flag","phoneExtension","international","Country","code","CountryDisplay","codes","filter","_temp2","countries","_temp3","code_0","RegionDisplay","item","name","regionFlag","DurationDisplay","labels","days","daysUnit","hours","hoursUnit","minutes","minutesUnit","seconds","secondsUnit","units","JsonDisplay","json","JSON","stringify","slice","TagsDisplay","tags","_temp4","tag_0","tag","find","EmbedDisplay","url","title","thumbnailUrl","thumbnail","media","LocationDisplay","lat","lng","address","maximumFractionDigits","format","AddressDisplay","LINK_ICONS","page","email","tel","file","LinkDisplay","type","icon","newTab","target","rel","ColorDisplay","candidate","swatch","backgroundColor","paletteColor","color","mediaLabel","Record","key","MediaDisplay","source","FileDisplay","files","_temp5","index","image","content","builtInDisplays","Readonly","textarea","slug","richtext","datetime","time","select","relation","duration","embed","location","region","daterange","money","_c","styles","_Fragment"],"sources":["../../src/displays/displays.tsx"],"sourcesContent":["import { Check, File, FileText, Globe, Hash, Mail, Minus, Phone } from 'lucide-react';\n\nimport { toReferences } from '@panneau/fields';\nimport { formatAddress, isAddress } from '@panneau/fields/address';\nimport { getColorPalette, getSwatchColor } from '@panneau/fields/color';\nimport { getCountryFlag, getCountryName, isCountryCode } from '@panneau/fields/country';\nimport { formatDateRange, getDateRangeSettings } from '@panneau/fields/daterange';\nimport { formatDuration, getDurationUnits } from '@panneau/fields/duration';\nimport { getLinkText, isLink } from '@panneau/fields/link';\nimport { formatMoney } from '@panneau/fields/money';\nimport { RegionFlag, getRegionCountry, getRegionName } from '@panneau/fields/region';\nimport { parsePhone, splitExtension } from '@panneau/fields/tel';\nimport { fieldsMessages } from '@panneau/intl';\nimport { Badge, Icon, type Tone, usePanneauIntl } from '@panneau/ui';\n\nimport { getImageUrl } from '../images';\nimport { messages } from '../messages';\nimport type { DisplayEntry, DisplayProps } from '../types';\nimport { findOption, getFieldOptions, isRecord, toText } from '../values';\nimport styles from './Displays.module.css';\n\n/** What a cell shows without a value. Hidden from assistive technologies, which skip the cell. */\nexport function EmptyValue() {\n return (\n <span className={styles.empty} aria-hidden=\"true\">\n —\n </span>\n );\n}\n\nfunction isEmpty(value: unknown): boolean {\n return (\n value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0)\n );\n}\n\n/**\n * Text, on two lines at most. The default display. The value of a `secret` text field\n * (`settings.secret`) shows as dots, never in clear.\n */\nexport function TextDisplay({ value, field }: DisplayProps) {\n const intl = usePanneauIntl();\n const text = toText(value, intl.locale);\n if (text === '') {\n return <EmptyValue />;\n }\n if (field?.settings?.secret === true) {\n return (\n <span role=\"img\" aria-label={intl.formatMessage(messages.secretValue)}>\n ••••••••\n </span>\n );\n }\n return (\n <span className={styles.text} data-clamp=\"\">\n {text}\n </span>\n );\n}\n\n/** HTML as plain text. */\nexport function RichTextDisplay({ value }: DisplayProps) {\n const text =\n typeof value === 'string'\n ? value\n .replace(/<[^>]*>/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim()\n : '';\n return text === '' ? (\n <EmptyValue />\n ) : (\n <span className={styles.text} data-clamp=\"\">\n {text}\n </span>\n );\n}\n\n/** A number, in the format of the locale. */\nexport function NumberDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n const number =\n typeof value === 'number' ? value : typeof value === 'string' ? Number(value) : NaN;\n if (Number.isNaN(number) || isEmpty(value)) {\n return <EmptyValue />;\n }\n return <span className={styles.number}>{intl.formatNumber(number)}</span>;\n}\n\n/** Yes or no, as an icon with its label. */\nexport function BooleanDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n if (value === null || value === undefined) {\n return <EmptyValue />;\n }\n const checked = value === true || value === 1 || value === 'true' || value === '1';\n return (\n <span className={`${styles.boolean} ${checked ? styles.true : styles.false}`}>\n <Icon\n icon={checked ? Check : Minus}\n label={intl.formatMessage(checked ? messages.yes : messages.no)}\n />\n </span>\n );\n}\n\nconst DATE_ONLY = /^(\\d{4})-(\\d{2})-(\\d{2})$/;\nconst TIME_ONLY = /^(\\d{2}):(\\d{2})(?::(\\d{2}))?$/;\n\n/** A date (`2026-10-15`) as a local date, so that it doesn't move with the time zone. */\nfunction parseDate(value: unknown): Date | null {\n if (typeof value !== 'string' || value === '') {\n return null;\n }\n const day = DATE_ONLY.exec(value);\n const date =\n day !== null\n ? new Date(Number(day[1]), Number(day[2]) - 1, Number(day[3]))\n : new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n}\n\n/** A date, in the format of the locale. */\nexport function DateDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n const date = parseDate(value);\n if (date === null) {\n return <EmptyValue />;\n }\n return <time dateTime={String(value)}>{intl.formatDate(date, { dateStyle: 'medium' })}</time>;\n}\n\n/** A date and a time, in the format and the time zone of the user. */\nexport function DateTimeDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n const date = parseDate(value);\n if (date === null) {\n return <EmptyValue />;\n }\n return (\n <time dateTime={String(value)}>\n {intl.formatDate(date, { dateStyle: 'medium', timeStyle: 'short' })}\n </time>\n );\n}\n\n/**\n * A range of dates (decision 0053), in the format of the locale: `Nov 4 – 6, 2026`. Date-times show\n * in the zone of the value or the field, with its short name when it isn't the user's. A range open\n * at one end shows `From Nov 4, 2026` or `Until Dec 1, 2026`.\n */\nexport function DateRangeDisplay({ value, field }: DisplayProps) {\n const intl = usePanneauIntl();\n const range = formatDateRange(\n value,\n intl.locale,\n getDateRangeSettings(field?.settings).timeZone,\n );\n if (range === null) {\n return <EmptyValue />;\n }\n const text =\n range.kind === 'from'\n ? intl.formatMessage(messages.rangeFrom, { start: range.text })\n : range.kind === 'until'\n ? intl.formatMessage(messages.rangeUntil, { end: range.text })\n : range.text;\n return (\n <span className={styles.text} data-clamp=\"\">\n {text}\n </span>\n );\n}\n\n/** An amount of money (decision 0053), in the currency format of the locale: `1 250,00 $`. */\nexport function MoneyDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n const text = formatMoney(value, intl.locale);\n if (text === null) {\n return <EmptyValue />;\n }\n return <span className={styles.number}>{text}</span>;\n}\n\n/** A time of day (`14:30`), in the format of the locale. */\nexport function TimeDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n const match = typeof value === 'string' ? TIME_ONLY.exec(value) : null;\n if (match === null) {\n return <EmptyValue />;\n }\n const date = new Date(2000, 0, 1, Number(match[1]), Number(match[2]), Number(match[3] ?? 0));\n return <time dateTime={String(value)}>{intl.formatTime(date, { timeStyle: 'short' })}</time>;\n}\n\n/** The labels of the selected options, as badges. */\nexport function SelectDisplay({ value, field }: DisplayProps) {\n const options = getFieldOptions(field);\n const values: unknown[] = Array.isArray(value) ? value : isEmpty(value) ? [] : [value];\n if (values.length === 0) {\n return <EmptyValue />;\n }\n return (\n <span className={styles.badges}>\n {values.map((entry) => {\n const option = findOption(options, entry);\n return (\n <Badge key={String(entry)} tone={(option?.tone ?? 'neutral') as Tone}>\n {option?.label ?? String(entry)}\n </Badge>\n );\n })}\n </span>\n );\n}\n\n/** The labels of related items. */\nexport function RelationDisplay({ value }: DisplayProps) {\n const references = toReferences(value);\n if (references.length === 0) {\n return <EmptyValue />;\n }\n return (\n <span className={styles.text} data-clamp=\"\">\n {references.map((reference) => reference.label).join(', ')}\n </span>\n );\n}\n\n/** A link that opens the URL. */\nexport function UrlDisplay({ value }: DisplayProps) {\n if (typeof value !== 'string' || value === '') {\n return <EmptyValue />;\n }\n return (\n <a className={styles.link} href={value} target=\"_blank\" rel=\"noreferrer\">\n {value.replace(/^https?:\\/\\//, '')}\n </a>\n );\n}\n\n/** A link that writes an email. */\nexport function EmailDisplay({ value }: DisplayProps) {\n if (typeof value !== 'string' || value === '') {\n return <EmptyValue />;\n }\n return (\n <a className={styles.link} href={`mailto:${value}`}>\n {value}\n </a>\n );\n}\n\n/**\n * A link that calls the phone number: the flag of its country and the number in its international\n * format (`+1 514 555 0199`), with its extension (`, ext. 123`) when its field allows one\n * (`settings.extension`) or the column has no field. A value that isn't E.164 shows as it is.\n */\nexport function TelDisplay({ value, field }: DisplayProps) {\n const intl = usePanneauIntl();\n if (typeof value !== 'string' || value.trim() === '') {\n return <EmptyValue />;\n }\n const { number: text, extension } =\n field === null || field.settings?.extension === true\n ? splitExtension(value)\n : { number: value, extension: null };\n const number = parsePhone(text);\n if (number === null) {\n return (\n <a className={styles.link} href={`tel:${value.replace(/[^\\d+]/g, '')}`}>\n {value}\n </a>\n );\n }\n return (\n <a\n className={`${styles.link} ${styles.flagged}`}\n href={`tel:${number.number}${extension !== null ? `;ext=${extension}` : ''}`}\n >\n {number.country !== null ? (\n <span className={styles.flag} aria-hidden=\"true\">\n {getCountryFlag(number.country)}\n </span>\n ) : null}\n {extension !== null\n ? intl.formatMessage(messages.phoneExtension, {\n number: number.international,\n extension,\n })\n : number.international}\n </a>\n );\n}\n\n/** A country: its flag and its name in the user's locale. */\nfunction Country({ code }: { code: string }) {\n const intl = usePanneauIntl();\n if (!isCountryCode(code)) {\n return (\n <span className={styles.text} data-clamp=\"\">\n {code}\n </span>\n );\n }\n return (\n <span className={styles.flagged}>\n <span className={styles.flag} aria-hidden=\"true\">\n {getCountryFlag(code)}\n </span>\n <span className={styles.text} data-clamp=\"\">\n {getCountryName(code, intl.locale)}\n </span>\n </span>\n );\n}\n\n/** A country, or several (`multiple`): their flags and their names in the user's locale. */\nexport function CountryDisplay({ value }: DisplayProps) {\n const codes = (Array.isArray(value) ? value : [value]).filter(\n (code): code is string => typeof code === 'string' && code !== '',\n );\n if (codes.length === 0) {\n return <EmptyValue />;\n }\n if (codes.length === 1) {\n return <Country code={codes[0] as string} />;\n }\n return (\n <span className={styles.countries}>\n {codes.map((code) => (\n <Country key={code} code={code} />\n ))}\n </span>\n );\n}\n\n/**\n * A region: its flag, when it has one, and its name in the user's locale, from its country in the\n * item (the field's `from`) or the field's settings. A region that Panneau doesn't know shows as it\n * is.\n */\nexport function RegionDisplay({ value, field, item }: DisplayProps) {\n const intl = usePanneauIntl();\n if (typeof value !== 'string' || value === '') {\n return <EmptyValue />;\n }\n const country = field !== null ? getRegionCountry(field, item) : null;\n const name = getRegionName(country, value, intl.locale);\n if (name === null) {\n return (\n <span className={styles.text} data-clamp=\"\">\n {value}\n </span>\n );\n }\n return (\n <span className={styles.flagged}>\n <RegionFlag country={country} code={value} className={styles.regionFlag} />\n <span className={styles.text} data-clamp=\"\">\n {name}\n </span>\n </span>\n );\n}\n\n/**\n * A duration with its units, `1 h 5 min` or `2 d 4 h`: in the unit of its field (seconds by\n * default), from its largest unit to its precision.\n */\nexport function DurationDisplay({ value, field }: DisplayProps) {\n const intl = usePanneauIntl();\n if (typeof value !== 'number' || Number.isNaN(value)) {\n return <EmptyValue />;\n }\n const labels = {\n days: intl.formatMessage(fieldsMessages.daysUnit),\n hours: intl.formatMessage(fieldsMessages.hoursUnit),\n minutes: intl.formatMessage(fieldsMessages.minutesUnit),\n seconds: intl.formatMessage(fieldsMessages.secondsUnit),\n };\n const units = field !== null ? getDurationUnits(field) : {};\n return <span className={styles.number}>{formatDuration(value, { ...units, labels })}</span>;\n}\n\n/** JSON on one line, shortened. */\nexport function JsonDisplay({ value }: DisplayProps) {\n if (value === null || value === undefined || typeof value !== 'object') {\n return <EmptyValue />;\n }\n const json = JSON.stringify(value);\n return (\n <code className={styles.code} title={json.length > 80 ? json : undefined}>\n {json.length > 80 ? `${json.slice(0, 79)}…` : json}\n </code>\n );\n}\n\n/** Tags, as badges, with the labels of their options. */\nexport function TagsDisplay({ value, field }: DisplayProps) {\n const tags = Array.isArray(value) ? value.filter((tag) => typeof tag === 'string') : [];\n if (tags.length === 0) {\n return <EmptyValue />;\n }\n const options = field?.options ?? [];\n return (\n <span className={styles.tags}>\n {tags.map((tag) => (\n <Badge key={tag}>\n {options.find((option) => String(option.value) === tag)?.label ?? tag}\n </Badge>\n ))}\n </span>\n );\n}\n\n/** What a URL embeds: its thumbnail and title, linked to it. */\nexport function EmbedDisplay({ value }: DisplayProps) {\n if (\n value === null ||\n typeof value !== 'object' ||\n typeof (value as { url?: unknown }).url !== 'string'\n ) {\n return <EmptyValue />;\n }\n const { url, title, thumbnailUrl } = value as {\n url: string;\n title?: unknown;\n thumbnailUrl?: unknown;\n };\n return (\n <a className={`${styles.link} ${styles.media}`} href={url} target=\"_blank\" rel=\"noreferrer\">\n {typeof thumbnailUrl === 'string' ? (\n <img className={styles.thumbnail} src={thumbnailUrl} alt=\"\" />\n ) : null}\n <span className={styles.text} data-clamp=\"\">\n {typeof title === 'string' ? title : url.replace(/^https?:\\/\\//, '')}\n </span>\n </a>\n );\n}\n\n/** A place: its address, or its coordinates. */\nexport function LocationDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n if (value === null || typeof value !== 'object') {\n return <EmptyValue />;\n }\n const { lat, lng, address } = value as { lat?: unknown; lng?: unknown; address?: unknown };\n if (typeof address === 'string' && address !== '') {\n return (\n <span className={styles.text} data-clamp=\"\">\n {address}\n </span>\n );\n }\n if (typeof lat !== 'number' || typeof lng !== 'number') {\n return <EmptyValue />;\n }\n const format = (number: number) => intl.formatNumber(number, { maximumFractionDigits: 5 });\n return (\n <span className={styles.number}>\n {format(lat)}, {format(lng)}\n </span>\n );\n}\n\n/** An address on one line, in the order of its country, after the flag of its country. */\nexport function AddressDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n if (!isAddress(value)) {\n return <EmptyValue />;\n }\n const text = formatAddress(value, intl.locale);\n const country = typeof value.country === 'string' ? value.country : '';\n if (text === '' && !isCountryCode(country)) {\n return <EmptyValue />;\n }\n return (\n <span className={styles.flagged}>\n {isCountryCode(country) ? (\n <span className={styles.flag} title={getCountryName(country, intl.locale)}>\n {getCountryFlag(country)}\n </span>\n ) : null}\n <span className={styles.text} data-clamp=\"\">\n {text !== '' ? text : getCountryName(country, intl.locale)}\n </span>\n </span>\n );\n}\n\nconst LINK_ICONS = { url: Globe, page: FileText, email: Mail, tel: Phone, file: File };\n\n/**\n * A link: the icon of its type, and its label in the user's locale, or its page or its URL. It\n * opens its URL when it has one, in a new tab when the link does.\n */\nexport function LinkDisplay({ value }: DisplayProps) {\n const intl = usePanneauIntl();\n if (!isLink(value)) {\n return <EmptyValue />;\n }\n const text = getLinkText(value, intl.locale);\n if (text === null) {\n return <EmptyValue />;\n }\n const icon = (\n <Icon icon={LINK_ICONS[value.type as keyof typeof LINK_ICONS] ?? Hash} size=\"sm\" />\n );\n const url = typeof value.url === 'string' && value.url !== '' ? value.url : null;\n if (url === null) {\n return (\n <span className={styles.flagged}>\n {icon}\n <span className={styles.text} data-clamp=\"\">\n {text}\n </span>\n </span>\n );\n }\n return (\n <a\n className={`${styles.link} ${styles.flagged}`}\n href={url}\n {...(value.newTab === true ? { target: '_blank', rel: 'noopener noreferrer' } : {})}\n >\n {icon}\n {text}\n </a>\n );\n}\n\n/**\n * A swatch, with the color's code. A color of the field's palette (`settings.palette`) shows its\n * swatch and its label.\n */\nexport function ColorDisplay({ value, field }: DisplayProps) {\n if (typeof value !== 'string' || value === '') {\n return <EmptyValue />;\n }\n const entry = getColorPalette(field)?.find((candidate) => candidate.value === value);\n if (entry !== undefined) {\n const swatch = getSwatchColor(entry);\n return (\n <span className={styles.paletteColor}>\n <span\n className={styles.swatch}\n style={swatch !== null ? { backgroundColor: swatch } : undefined}\n aria-hidden=\"true\"\n />\n <span className={styles.text} data-clamp=\"\">\n {entry.label ?? entry.value}\n </span>\n </span>\n );\n }\n return (\n <span className={styles.color}>\n <span className={styles.swatch} style={{ backgroundColor: value }} aria-hidden=\"true\" />\n {value}\n </span>\n );\n}\n\n/** The text of a media, a reference or a file: its label, name or file name. */\nfunction mediaLabel(value: Record<string, unknown>): string {\n for (const key of ['label', 'name', 'filename']) {\n const text = value[key];\n if (typeof text === 'string' && text !== '') {\n return text;\n }\n }\n return '';\n}\n\n/**\n * A thumbnail and the name of a media (or of the first one), for `media` and `image` values:\n * a media reference (`{ id, label, media }`), or a media with its URLs.\n */\nexport function MediaDisplay({ value }: DisplayProps) {\n const media: unknown = Array.isArray(value) ? value[0] : value;\n if (!isRecord(media)) {\n return <EmptyValue />;\n }\n const source = getImageUrl(media);\n const label = mediaLabel(media);\n return (\n <span className={styles.media}>\n {source !== null ? (\n <img className={styles.thumbnail} src={source} alt=\"\" loading=\"lazy\" />\n ) : null}\n {label !== '' ? (\n <span className={styles.text} data-clamp=\"\">\n {label}\n </span>\n ) : null}\n </span>\n );\n}\n\n/**\n * Stored files (`file` values): the thumbnail of an image, or an icon, and the name of each file,\n * linked to its URL.\n */\nexport function FileDisplay({ value }: DisplayProps) {\n const files = (Array.isArray(value) ? value : [value]).filter(isRecord);\n if (files.length === 0) {\n return <EmptyValue />;\n }\n return (\n <span className={styles.files}>\n {files.map((file, index) => {\n const image = getImageUrl(file);\n const name = mediaLabel(file);\n const content = (\n <>\n {image !== null ? (\n <img className={styles.thumbnail} src={image} alt=\"\" loading=\"lazy\" />\n ) : (\n <Icon icon={File} size=\"sm\" />\n )}\n <span className={styles.text} data-clamp=\"\">\n {name !== '' ? name : typeof file.url === 'string' ? file.url : ''}\n </span>\n </>\n );\n return typeof file.url === 'string' && file.url !== '' ? (\n <a\n key={index}\n className={`${styles.link} ${styles.media}`}\n href={file.url}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {content}\n </a>\n ) : (\n <span key={index} className={styles.media}>\n {content}\n </span>\n );\n })}\n </span>\n );\n}\n\n/**\n * The built-in displays, by name. A column's display is its `display`, its field's `display`, or\n * its field's type: field types are display names. Values without a known display are shown as\n * text.\n */\nexport const builtInDisplays: Readonly<Record<string, DisplayEntry>> = {\n text: TextDisplay,\n textarea: TextDisplay,\n slug: TextDisplay,\n richtext: RichTextDisplay,\n number: NumberDisplay,\n boolean: BooleanDisplay,\n date: DateDisplay,\n datetime: DateTimeDisplay,\n time: TimeDisplay,\n select: SelectDisplay,\n relation: RelationDisplay,\n url: UrlDisplay,\n email: EmailDisplay,\n color: ColorDisplay,\n media: MediaDisplay,\n image: MediaDisplay,\n file: FileDisplay,\n tel: TelDisplay,\n range: NumberDisplay,\n duration: DurationDisplay,\n json: JsonDisplay,\n tags: TagsDisplay,\n embed: EmbedDisplay,\n location: LocationDisplay,\n country: CountryDisplay,\n region: RegionDisplay,\n address: AddressDisplay,\n link: LinkDisplay,\n daterange: DateRangeDisplay,\n money: MoneyDisplay,\n};\n"],"mappings":"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"}
@@ -10,23 +10,33 @@
10
10
  max-width: 100%;
11
11
  }
12
12
 
13
- .panneau-filters-toggle {
14
- align-self: center;
15
- min-height: var(--panneau-control-height);
13
+ /* On the line of the controls, below the labels of the other filters. The switch's own wrapper
14
+ * is a column: two classes outweigh it. */
15
+ .panneau-filters .panneau-filters-toggle {
16
16
  display: flex;
17
- align-items: center;
17
+ flex-direction: column;
18
+ justify-content: center;
19
+ align-self: flex-end;
20
+ min-height: var(--panneau-control-height);
18
21
  }
19
22
 
20
23
  .panneau-filters-range {
24
+ max-width: 100%;
25
+ }
26
+
27
+ .panneau-filters-range-inputs {
21
28
  display: flex;
22
- flex-wrap: wrap;
29
+ align-items: center;
23
30
  gap: var(--panneau-space-2);
24
- max-width: 100%;
25
31
  }
26
32
 
27
- .panneau-filters-range > :not(legend) {
28
- width: 11rem;
29
- max-width: 100%;
33
+ .panneau-filters-range-inputs > :not(.panneau-filters-range-dash) {
34
+ width: 10.5rem;
35
+ min-width: 0;
36
+ }
37
+
38
+ .panneau-filters-range-dash {
39
+ color: var(--panneau-color-text-muted);
30
40
  }
31
41
 
32
42
  .panneau-filters-chips {
@@ -64,8 +74,12 @@
64
74
  @container panneau-list (max-width: 40rem) {
65
75
  .panneau-filters,
66
76
  .panneau-filters-control,
67
- .panneau-filters-range,
68
- .panneau-filters-range > :not(legend) {
77
+ .panneau-filters-range {
69
78
  width: 100%;
70
79
  }
80
+
81
+ .panneau-filters-range-inputs > :not(.panneau-filters-range-dash) {
82
+ flex: 1 1 0;
83
+ width: auto;
84
+ }
71
85
  }
@@ -1,5 +1,5 @@
1
1
  import type { Field, Filter, FilterValue } from '@panneau/protocol';
2
- import type { FilterEntry, ListColumn } from '../types';
2
+ import type { FilterEntry, ListColumn } from '../types.js';
3
3
  /** Labels of filter values (relation ids), by filter id, for the chips. */
4
4
  export type FilterLabels = Readonly<Record<string, Readonly<Record<string, string>>>>;
5
5
  /** Remembers the labels of filter values, for the chips of active filters. */
@@ -1 +1 @@
1
- {"version":3,"file":"Filters.js","names":["filter","value","X","onClearSearch","text","label","id","onClear","_c","styles","_Fragment"],"sources":["../../src/filters/Filters.tsx"],"sourcesContent":["import { X } from 'lucide-react';\nimport { useState } from 'react';\n\nimport type { Field, Filter, FilterValue } from '@panneau/protocol';\nimport { Button, IconButton, usePanneauIntl } from '@panneau/ui';\n\nimport { messages } from '../messages';\nimport type { FilterEntry, ListColumn } from '../types';\nimport styles from './Filters.module.css';\nimport { builtInFilters } from './controls';\nimport { formatFilterValue, getFilterLabel, getFilterOptions } from './format';\n\n/** Labels of filter values (relation ids), by filter id, for the chips. */\nexport type FilterLabels = Readonly<Record<string, Readonly<Record<string, string>>>>;\n\n/** Remembers the labels of filter values, for the chips of active filters. */\nexport function useFilterLabels(): {\n labels: FilterLabels;\n remember: (filter: string, value: string, label: string) => void;\n} {\n const [labels, setLabels] = useState<FilterLabels>({});\n return {\n labels,\n remember: (filter, value, label) =>\n setLabels((current) =>\n current[filter]?.[value] === label\n ? current\n : { ...current, [filter]: { ...current[filter], [value]: label } },\n ),\n };\n}\n\ninterface FilterContext {\n columns: readonly ListColumn[];\n fields: readonly Field[];\n labels: FilterLabels;\n}\n\nexport interface FilterControlsProps extends FilterContext {\n filters: readonly Filter[];\n /** The current filter values, by filter id. */\n values: Readonly<Record<string, FilterValue>>;\n onChange: (id: string, value: FilterValue | undefined) => void;\n onLabel: (filter: string, value: string, label: string) => void;\n /** Controls by filter type, over the built-in ones. */\n controls?: Readonly<Record<string, FilterEntry>> | undefined;\n}\n\n/** A control for each filter of the list. */\nexport function FilterControls({\n filters,\n values,\n onChange,\n onLabel,\n controls,\n columns,\n fields,\n labels,\n}: FilterControlsProps) {\n const intl = usePanneauIntl();\n return (\n <div\n role=\"group\"\n aria-label={intl.formatMessage(messages.filters)}\n className={styles.filters}\n >\n {filters.map((filter) => {\n const Control =\n controls?.[filter.type] ?? builtInFilters[filter.type] ?? builtInFilters.text;\n if (Control === undefined) {\n return null;\n }\n return (\n <Control\n key={filter.id}\n filter={filter}\n label={getFilterLabel(filter, columns, fields)}\n options={getFilterOptions(filter, columns, fields)}\n value={values[filter.id]}\n onChange={(value) => onChange(filter.id, value)}\n onLabel={(value, label) => onLabel(filter.id, value, label)}\n getValueLabel={(value) => labels[filter.id]?.[value] ?? null}\n />\n );\n })}\n </div>\n );\n}\n\nexport interface FilterChipsProps extends FilterContext {\n filters: readonly Filter[];\n values: Readonly<Record<string, FilterValue>>;\n /** The search, shown as a chip too. */\n q?: string | undefined;\n onRemove: (id: string) => void;\n onClearSearch: () => void;\n onClear: () => void;\n}\n\n/** The active filters and the search, as chips that remove them, and a button to clear them all. */\nexport function FilterChips({\n filters,\n values,\n q,\n onRemove,\n onClearSearch,\n onClear,\n columns,\n fields,\n labels,\n}: FilterChipsProps) {\n const intl = usePanneauIntl();\n const chips = Object.entries(values).map(([id, value]) => {\n const filter = filters.find((candidate) => candidate.id === id) ?? { id, type: 'text' };\n const label = getFilterLabel(filter, columns, fields);\n const text =\n filter.type === 'toggle'\n ? null\n : formatFilterValue(filter, value, {\n intl,\n options: getFilterOptions(filter, columns, fields),\n getValueLabel: (entry) => labels[id]?.[entry] ?? null,\n });\n return { id, label, text };\n });\n const search = q !== undefined && q !== '' ? q : null;\n if (chips.length === 0 && search === null) {\n return null;\n }\n return (\n <div className={styles.chips}>\n <ul aria-label={intl.formatMessage(messages.activeFilters)} className={styles.chips}>\n {search !== null ? (\n <li className={styles.chip}>\n <span className={styles.chipText}>\n {intl.formatMessage(messages.searchChip, { q: search })}\n </span>\n <IconButton\n icon={X}\n size=\"sm\"\n showTooltip={false}\n label={intl.formatMessage(messages.removeFilter, {\n filter: intl.formatMessage(messages.searchChip, { q: search }),\n })}\n onPress={onClearSearch}\n />\n </li>\n ) : null}\n {chips.map(({ id, label, text }) => {\n const name = text !== null ? `${label}: ${text}` : label;\n return (\n <li key={id} className={styles.chip}>\n <span className={styles.chipText}>\n {text !== null ? (\n <>\n <span className={styles.chipLabel}>{label}:</span> {text}\n </>\n ) : (\n label\n )}\n </span>\n <IconButton\n icon={X}\n size=\"sm\"\n showTooltip={false}\n label={intl.formatMessage(messages.removeFilter, { filter: name })}\n onPress={() => onRemove(id)}\n />\n </li>\n );\n })}\n </ul>\n <Button variant=\"ghost\" size=\"sm\" onPress={onClear}>\n {intl.formatMessage(messages.clearFilters)}\n </Button>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Filters.js","names":["X","useState","Field","Filter","FilterValue","Button","IconButton","usePanneauIntl","messages","FilterEntry","ListColumn","styles","builtInFilters","formatFilterValue","getFilterLabel","getFilterOptions","FilterLabels","Readonly","Record","useFilterLabels","$","_c","t0","Symbol","for","labels","setLabels","t1","filter","value","label","current","t2","remember","FilterContext","columns","fields","FilterControlsProps","filters","values","onChange","id","onLabel","controls","FilterControls","intl","formatMessage","t3","Control","type","text","undefined","value_0","value_1","map","FilterChipsProps","q","onRemove","onClearSearch","onClear","FilterChips","Object","entries","find","candidate","options","getValueLabel","entry","chips","search","length","activeFilters","chip","chipText","searchChip","removeFilter","t4","t5","id_0","label_0","text_0","name","chipLabel","t6","clearFilters","t7","t8","_c","styles","_Fragment"],"sources":["../../src/filters/Filters.tsx"],"sourcesContent":["import { X } from 'lucide-react';\nimport { useState } from 'react';\n\nimport type { Field, Filter, FilterValue } from '@panneau/protocol';\nimport { Button, IconButton, usePanneauIntl } from '@panneau/ui';\n\nimport { messages } from '../messages';\nimport type { FilterEntry, ListColumn } from '../types';\nimport styles from './Filters.module.css';\nimport { builtInFilters } from './controls';\nimport { formatFilterValue, getFilterLabel, getFilterOptions } from './format';\n\n/** Labels of filter values (relation ids), by filter id, for the chips. */\nexport type FilterLabels = Readonly<Record<string, Readonly<Record<string, string>>>>;\n\n/** Remembers the labels of filter values, for the chips of active filters. */\nexport function useFilterLabels(): {\n labels: FilterLabels;\n remember: (filter: string, value: string, label: string) => void;\n} {\n const [labels, setLabels] = useState<FilterLabels>({});\n return {\n labels,\n remember: (filter, value, label) =>\n setLabels((current) =>\n current[filter]?.[value] === label\n ? current\n : { ...current, [filter]: { ...current[filter], [value]: label } },\n ),\n };\n}\n\ninterface FilterContext {\n columns: readonly ListColumn[];\n fields: readonly Field[];\n labels: FilterLabels;\n}\n\nexport interface FilterControlsProps extends FilterContext {\n filters: readonly Filter[];\n /** The current filter values, by filter id. */\n values: Readonly<Record<string, FilterValue>>;\n onChange: (id: string, value: FilterValue | undefined) => void;\n onLabel: (filter: string, value: string, label: string) => void;\n /** Controls by filter type, over the built-in ones. */\n controls?: Readonly<Record<string, FilterEntry>> | undefined;\n}\n\n/** A control for each filter of the list. */\nexport function FilterControls({\n filters,\n values,\n onChange,\n onLabel,\n controls,\n columns,\n fields,\n labels,\n}: FilterControlsProps) {\n const intl = usePanneauIntl();\n return (\n <div\n role=\"group\"\n aria-label={intl.formatMessage(messages.filters)}\n className={styles.filters}\n >\n {filters.map((filter) => {\n const Control =\n controls?.[filter.type] ?? builtInFilters[filter.type] ?? builtInFilters.text;\n if (Control === undefined) {\n return null;\n }\n return (\n <Control\n key={filter.id}\n filter={filter}\n label={getFilterLabel(filter, columns, fields)}\n options={getFilterOptions(filter, columns, fields)}\n value={values[filter.id]}\n onChange={(value) => onChange(filter.id, value)}\n onLabel={(value, label) => onLabel(filter.id, value, label)}\n getValueLabel={(value) => labels[filter.id]?.[value] ?? null}\n />\n );\n })}\n </div>\n );\n}\n\nexport interface FilterChipsProps extends FilterContext {\n filters: readonly Filter[];\n values: Readonly<Record<string, FilterValue>>;\n /** The search, shown as a chip too. */\n q?: string | undefined;\n onRemove: (id: string) => void;\n onClearSearch: () => void;\n onClear: () => void;\n}\n\n/** The active filters and the search, as chips that remove them, and a button to clear them all. */\nexport function FilterChips({\n filters,\n values,\n q,\n onRemove,\n onClearSearch,\n onClear,\n columns,\n fields,\n labels,\n}: FilterChipsProps) {\n const intl = usePanneauIntl();\n const chips = Object.entries(values).map(([id, value]) => {\n const filter = filters.find((candidate) => candidate.id === id) ?? { id, type: 'text' };\n const label = getFilterLabel(filter, columns, fields);\n const text =\n filter.type === 'toggle'\n ? null\n : formatFilterValue(filter, value, {\n intl,\n options: getFilterOptions(filter, columns, fields),\n getValueLabel: (entry) => labels[id]?.[entry] ?? null,\n });\n return { id, label, text };\n });\n const search = q !== undefined && q !== '' ? q : null;\n if (chips.length === 0 && search === null) {\n return null;\n }\n return (\n <div className={styles.chips}>\n <ul aria-label={intl.formatMessage(messages.activeFilters)} className={styles.chips}>\n {search !== null ? (\n <li className={styles.chip}>\n <span className={styles.chipText}>\n {intl.formatMessage(messages.searchChip, { q: search })}\n </span>\n <IconButton\n icon={X}\n size=\"sm\"\n showTooltip={false}\n label={intl.formatMessage(messages.removeFilter, {\n filter: intl.formatMessage(messages.searchChip, { q: search }),\n })}\n onPress={onClearSearch}\n />\n </li>\n ) : null}\n {chips.map(({ id, label, text }) => {\n const name = text !== null ? `${label}: ${text}` : label;\n return (\n <li key={id} className={styles.chip}>\n <span className={styles.chipText}>\n {text !== null ? (\n <>\n <span className={styles.chipLabel}>{label}:</span> {text}\n </>\n ) : (\n label\n )}\n </span>\n <IconButton\n icon={X}\n size=\"sm\"\n showTooltip={false}\n label={intl.formatMessage(messages.removeFilter, { filter: name })}\n onPress={() => onRemove(id)}\n />\n </li>\n );\n })}\n </ul>\n <Button variant=\"ghost\" size=\"sm\" onPress={onClear}>\n {intl.formatMessage(messages.clearFilters)}\n </Button>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -4,6 +4,8 @@ var filters = "panneau-filters";
4
4
  var control = "panneau-filters-control";
5
5
  var toggle = "panneau-filters-toggle";
6
6
  var range = "panneau-filters-range";
7
+ var rangeInputs = "panneau-filters-range-inputs";
8
+ var rangeDash = "panneau-filters-range-dash";
7
9
  var chips = "panneau-filters-chips";
8
10
  var chip = "panneau-filters-chip";
9
11
  var chipText = "panneau-filters-chip-text";
@@ -13,12 +15,14 @@ var Filters_module_default = {
13
15
  control,
14
16
  toggle,
15
17
  range,
18
+ rangeInputs,
19
+ rangeDash,
16
20
  chips,
17
21
  chip,
18
22
  chipText,
19
23
  chipLabel
20
24
  };
21
25
  //#endregion
22
- export { chip, chipLabel, chipText, chips, control, Filters_module_default as default, filters, range, toggle };
26
+ export { chip, chipLabel, chipText, chips, control, Filters_module_default as default, filters, range, rangeDash, rangeInputs, toggle };
23
27
 
24
28
  //# sourceMappingURL=Filters.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Filters.module.js","names":[],"sources":["../../src/filters/Filters.module.css"],"sourcesContent":[".filters {\n display: flex;\n flex-wrap: wrap;\n align-items: flex-end;\n gap: var(--panneau-space-3);\n}\n\n.control {\n width: 12rem;\n max-width: 100%;\n}\n\n.toggle {\n align-self: center;\n min-height: var(--panneau-control-height);\n display: flex;\n align-items: center;\n}\n\n.range {\n display: flex;\n flex-wrap: wrap;\n gap: var(--panneau-space-2);\n max-width: 100%;\n}\n\n.range > :not(legend) {\n width: 11rem;\n max-width: 100%;\n}\n\n.chips {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--panneau-space-2);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.chip {\n display: inline-flex;\n align-items: center;\n gap: var(--panneau-space-1);\n max-width: 100%;\n padding-inline-start: var(--panneau-space-3);\n font-size: var(--panneau-font-size-sm);\n background-color: var(--panneau-color-surface-sunken);\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-radius-full);\n}\n\n.chipText {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.chipLabel {\n color: var(--panneau-color-text-muted);\n}\n\n@container panneau-list (max-width: 40rem) {\n .filters,\n .control,\n .range,\n .range > :not(legend) {\n width: 100%;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"Filters.module.js","names":[],"sources":["../../src/filters/Filters.module.css"],"sourcesContent":[".filters {\n display: flex;\n flex-wrap: wrap;\n align-items: flex-end;\n gap: var(--panneau-space-3);\n}\n\n.control {\n width: 12rem;\n max-width: 100%;\n}\n\n/* On the line of the controls, below the labels of the other filters. The switch's own wrapper\n * is a column: two classes outweigh it. */\n.filters .toggle {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-self: flex-end;\n min-height: var(--panneau-control-height);\n}\n\n.range {\n max-width: 100%;\n}\n\n.rangeInputs {\n display: flex;\n align-items: center;\n gap: var(--panneau-space-2);\n}\n\n.rangeInputs > :not(.rangeDash) {\n width: 10.5rem;\n min-width: 0;\n}\n\n.rangeDash {\n color: var(--panneau-color-text-muted);\n}\n\n.chips {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--panneau-space-2);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.chip {\n display: inline-flex;\n align-items: center;\n gap: var(--panneau-space-1);\n max-width: 100%;\n padding-inline-start: var(--panneau-space-3);\n font-size: var(--panneau-font-size-sm);\n background-color: var(--panneau-color-surface-sunken);\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-radius-full);\n}\n\n.chipText {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.chipLabel {\n color: var(--panneau-color-text-muted);\n}\n\n@container panneau-list (max-width: 40rem) {\n .filters,\n .control,\n .range {\n width: 100%;\n }\n\n .rangeInputs > :not(.rangeDash) {\n flex: 1 1 0;\n width: auto;\n }\n}\n"],"mappings":""}
@@ -1,4 +1,4 @@
1
- import type { FilterControlProps, FilterEntry } from '../types';
1
+ import type { FilterControlProps, FilterEntry } from '../types.js';
2
2
  /** A text filter: the list changes once the user stops typing. */
3
3
  export declare function TextFilter({ label, value, onChange }: FilterControlProps): import("react").JSX.Element;
4
4
  /** A choice among the options, or several with `multiple`. */
@@ -1 +1 @@
1
- {"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../src/filters/controls.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAchE,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,kBAAkB,+BAmBxE;AAED,8DAA8D;AAC9D,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,kBAAkB,+BAgC3F;AAED,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,kBAAkB,+BAU1E;AAED,4BAA4B;AAC5B,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,kBAAkB,+BASxE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,kBAAkB,+BA4B7E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAC3B,MAAM,EACN,KAAK,EACL,KAAK,EACL,QAAQ,EACR,OAAO,EACP,aAAa,GAChB,EAAE,kBAAkB,+BA8CpB;AAED,oFAAoF;AACpF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAOhE,CAAC"}
1
+ {"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../src/filters/controls.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAchE,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,kBAAkB,+BAmBxE;AAED,8DAA8D;AAC9D,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,kBAAkB,+BAgC3F;AAED,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,kBAAkB,+BAU1E;AAED,4BAA4B;AAC5B,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,kBAAkB,+BASxE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,kBAAkB,+BAmC7E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAC3B,MAAM,EACN,KAAK,EACL,KAAK,EACL,QAAQ,EACR,OAAO,EACP,aAAa,GAChB,EAAE,kBAAkB,+BA8CpB;AAED,oFAAoF;AACpF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAOhE,CAAC"}
@@ -214,7 +214,7 @@ function DateFilter(t0) {
214
214
  * can be open: it is left out.
215
215
  */
216
216
  function DateRangeFilter(t0) {
217
- const $ = c(26);
217
+ const $ = c(29);
218
218
  const { label, value, onChange } = t0;
219
219
  const intl = usePanneauIntl();
220
220
  let t1;
@@ -253,7 +253,7 @@ function DateRangeFilter(t0) {
253
253
  let t6;
254
254
  if ($[9] !== t3 || $[10] !== t4 || $[11] !== t5) {
255
255
  t6 = /* @__PURE__ */ jsx(DateField, {
256
- label: t3,
256
+ "aria-label": t3,
257
257
  value: t4,
258
258
  onChange: t5
259
259
  });
@@ -263,44 +263,66 @@ function DateRangeFilter(t0) {
263
263
  $[12] = t6;
264
264
  } else t6 = $[12];
265
265
  let t7;
266
- if ($[13] !== intl) {
267
- t7 = intl.formatMessage(messages.to);
268
- $[13] = intl;
269
- $[14] = t7;
270
- } else t7 = $[14];
271
- const t8 = to !== "" ? to : null;
272
- let t9;
273
- if ($[15] !== from || $[16] !== set) {
274
- t9 = (next_0) => set(from, next_0 ?? "");
275
- $[15] = from;
276
- $[16] = set;
277
- $[17] = t9;
278
- } else t9 = $[17];
279
- let t10;
280
- if ($[18] !== t7 || $[19] !== t8 || $[20] !== t9) {
281
- t10 = /* @__PURE__ */ jsx(DateField, {
282
- label: t7,
283
- value: t8,
284
- onChange: t9
266
+ if ($[13] === Symbol.for("react.memo_cache_sentinel")) {
267
+ t7 = /* @__PURE__ */ jsx("span", {
268
+ className: Filters_module_default.rangeDash,
269
+ "aria-hidden": "true",
270
+ children: "–"
285
271
  });
286
- $[18] = t7;
287
- $[19] = t8;
288
- $[20] = t9;
289
- $[21] = t10;
290
- } else t10 = $[21];
272
+ $[13] = t7;
273
+ } else t7 = $[13];
274
+ let t8;
275
+ if ($[14] !== intl) {
276
+ t8 = intl.formatMessage(messages.to);
277
+ $[14] = intl;
278
+ $[15] = t8;
279
+ } else t8 = $[15];
280
+ const t9 = to !== "" ? to : null;
281
+ let t10;
282
+ if ($[16] !== from || $[17] !== set) {
283
+ t10 = (next_0) => set(from, next_0 ?? "");
284
+ $[16] = from;
285
+ $[17] = set;
286
+ $[18] = t10;
287
+ } else t10 = $[18];
291
288
  let t11;
292
- if ($[22] !== label || $[23] !== t10 || $[24] !== t6) {
293
- t11 = /* @__PURE__ */ jsxs(Fieldset, {
289
+ if ($[19] !== t10 || $[20] !== t8 || $[21] !== t9) {
290
+ t11 = /* @__PURE__ */ jsx(DateField, {
291
+ "aria-label": t8,
292
+ value: t9,
293
+ onChange: t10
294
+ });
295
+ $[19] = t10;
296
+ $[20] = t8;
297
+ $[21] = t9;
298
+ $[22] = t11;
299
+ } else t11 = $[22];
300
+ let t12;
301
+ if ($[23] !== t11 || $[24] !== t6) {
302
+ t12 = /* @__PURE__ */ jsxs("div", {
303
+ className: Filters_module_default.rangeInputs,
304
+ children: [
305
+ t6,
306
+ t7,
307
+ t11
308
+ ]
309
+ });
310
+ $[23] = t11;
311
+ $[24] = t6;
312
+ $[25] = t12;
313
+ } else t12 = $[25];
314
+ let t13;
315
+ if ($[26] !== label || $[27] !== t12) {
316
+ t13 = /* @__PURE__ */ jsx(Fieldset, {
294
317
  legend: label,
295
318
  className: Filters_module_default.range,
296
- children: [t6, t10]
319
+ children: t12
297
320
  });
298
- $[22] = label;
299
- $[23] = t10;
300
- $[24] = t6;
301
- $[25] = t11;
302
- } else t11 = $[25];
303
- return t11;
321
+ $[26] = label;
322
+ $[27] = t12;
323
+ $[28] = t13;
324
+ } else t13 = $[28];
325
+ return t13;
304
326
  }
305
327
  /**
306
328
  * An item of another resource (`resource`), or several with `multiple`, picked with the relation
@@ -1 +1 @@
1
- {"version":3,"file":"controls.js","names":["label","draft","setDraft","flush","options","placeholder","option","reference","next","resource","references","_c","styles"],"sources":["../../src/filters/controls.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useFieldsContext } from '@panneau/fields';\nimport { DateField } from '@panneau/fields/date';\nimport { RelationField, useRelationReferences } from '@panneau/fields/relation';\nimport type { FilterValue } from '@panneau/protocol';\nimport { isFilterRange } from '@panneau/protocol/runtime';\nimport { Fieldset, type OptionValue, Select, Switch, TextInput, usePanneauIntl } from '@panneau/ui';\n\nimport { messages } from '../messages';\nimport type { FilterControlProps, FilterEntry } from '../types';\nimport { useDraft } from '../useDraft';\nimport styles from './Filters.module.css';\n\nfunction asStrings(value: unknown): string[] {\n if (isFilterRange(value)) {\n return [];\n }\n if (Array.isArray(value)) {\n return value.map(String);\n }\n return value === undefined || value === null || value === '' ? [] : [String(value)];\n}\n\n/** A text filter: the list changes once the user stops typing. */\nexport function TextFilter({ label, value, onChange }: FilterControlProps) {\n const current = typeof value === 'string' || typeof value === 'number' ? String(value) : '';\n const { draft, setDraft, flush } = useDraft(current, (next) =>\n onChange(next !== '' ? next : undefined),\n );\n return (\n <TextInput\n label={label}\n value={draft}\n onChange={setDraft}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n flush();\n }\n }}\n onBlur={flush}\n className={styles.control}\n />\n );\n}\n\n/** A choice among the options, or several with `multiple`. */\nexport function SelectFilter({ filter, label, options, value, onChange }: FilterControlProps) {\n const intl = usePanneauIntl();\n const selected = asStrings(value);\n // Values from the URL are strings: match them to the options' values.\n const toOptions = (values: readonly string[]): OptionValue[] =>\n options\n .filter((option) => values.includes(String(option.value)))\n .map((option) => option.value);\n const placeholder = intl.formatMessage(messages.any);\n if (filter.multiple === true) {\n return (\n <Select\n multiple\n label={label}\n options={options}\n placeholder={placeholder}\n value={toOptions(selected)}\n onChange={(next) => onChange(next.length > 0 ? next : undefined)}\n className={styles.control}\n />\n );\n }\n return (\n <Select\n label={label}\n options={options}\n placeholder={placeholder}\n value={toOptions(selected)[0] ?? null}\n onChange={(next) => onChange(next ?? undefined)}\n className={styles.control}\n />\n );\n}\n\n/** On or off: on filters with `true`, off removes the filter. */\nexport function ToggleFilter({ label, value, onChange }: FilterControlProps) {\n return (\n <Switch\n isSelected={String(value) === 'true'}\n onChange={(checked) => onChange(checked ? true : undefined)}\n className={styles.toggle}\n >\n {label}\n </Switch>\n );\n}\n\n/** A day (`2026-10-15`). */\nexport function DateFilter({ label, value, onChange }: FilterControlProps) {\n return (\n <DateField\n label={label}\n value={typeof value === 'string' && value !== '' ? value : null}\n onChange={(next) => onChange(next ?? undefined)}\n className={styles.control}\n />\n );\n}\n\n/**\n * A range of days, sent as its bounds (`filter[published_at][from]=2026-01-01&…[to]=…`). Either end\n * can be open: it is left out.\n */\nexport function DateRangeFilter({ label, value, onChange }: FilterControlProps) {\n const intl = usePanneauIntl();\n const range = isFilterRange(value) ? value : {};\n const from = range.from !== undefined ? String(range.from) : '';\n const to = range.to !== undefined ? String(range.to) : '';\n const set = (nextFrom: string, nextTo: string) =>\n onChange(\n nextFrom === '' && nextTo === ''\n ? undefined\n : {\n ...(nextFrom !== '' ? { from: nextFrom } : {}),\n ...(nextTo !== '' ? { to: nextTo } : {}),\n },\n );\n return (\n <Fieldset legend={label} className={styles.range}>\n <DateField\n label={intl.formatMessage(messages.from)}\n value={from !== '' ? from : null}\n onChange={(next) => set(next ?? '', to)}\n />\n <DateField\n label={intl.formatMessage(messages.to)}\n value={to !== '' ? to : null}\n onChange={(next) => set(from, next ?? '')}\n />\n </Fieldset>\n );\n}\n\n/**\n * An item of another resource (`resource`), or several with `multiple`, picked with the relation\n * source of the fields context. The filter keeps their ids; their labels are remembered for the\n * chips.\n */\nexport function RelationFilter({\n filter,\n label,\n value,\n onChange,\n onLabel,\n getValueLabel,\n}: FilterControlProps) {\n const resource = filter.resource ?? filter.id;\n // Ids from the URL have no label: the relation source resolves them, for the picker and chips.\n const references = useRelationReferences(\n useFieldsContext().relationSource,\n resource,\n asStrings(value).map((id) => ({ id, label: getValueLabel(id) ?? id })),\n );\n const remember = (next: readonly { id: string; label: string }[]) =>\n next.forEach((reference) => onLabel(reference.id, reference.label));\n useEffect(() => {\n references\n .filter((reference) => reference.label !== reference.id)\n .forEach((reference) => onLabel(reference.id, reference.label));\n }, [references, onLabel]);\n if (filter.multiple === true) {\n return (\n <RelationField\n multiple\n label={label}\n resource={resource}\n value={references}\n onChange={(next) => {\n remember(next ?? []);\n const ids: FilterValue | undefined =\n next !== null && next.length > 0\n ? next.map((reference) => reference.id)\n : undefined;\n onChange(ids);\n }}\n className={styles.control}\n />\n );\n }\n return (\n <RelationField\n label={label}\n resource={resource}\n value={references[0] ?? null}\n onChange={(next) => {\n remember(next !== null ? [next] : []);\n onChange(next?.id);\n }}\n className={styles.control}\n />\n );\n}\n\n/** The built-in filter controls, by filter type. Unknown types are text filters. */\nexport const builtInFilters: Readonly<Record<string, FilterEntry>> = {\n text: TextFilter,\n select: SelectFilter,\n toggle: ToggleFilter,\n date: DateFilter,\n 'date-range': DateRangeFilter,\n relation: RelationFilter,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"controls.js","names":["useEffect","useFieldsContext","DateField","RelationField","useRelationReferences","FilterValue","isFilterRange","Fieldset","OptionValue","Select","Switch","TextInput","usePanneauIntl","messages","FilterControlProps","FilterEntry","useDraft","styles","asStrings","value","Array","isArray","map","String","undefined","TextFilter","t0","$","_c","label","onChange","current","t1","next","draft","setDraft","flush","t2","event","key","t3","control","SelectFilter","filter","options","intl","T0","t4","t5","multiple","Symbol","for","bb0","selected","t6","values","option","includes","_temp","toOptions","t7","formatMessage","any","placeholder","t8","length","next_0","option_0","ToggleFilter","checked","toggle","DateFilter","DateRangeFilter","range","from","to","nextFrom","nextTo","set","rangeDash","t9","t10","t11","t12","rangeInputs","t13","RelationFilter","onLabel","getValueLabel","resource","id","relationSource","references","forEach","reference","remember","_temp2","reference_1","ids","_temp3","next_1","reference_2","reference_0","builtInFilters","Readonly","Record","text","select","date","relation","_c","styles"],"sources":["../../src/filters/controls.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useFieldsContext } from '@panneau/fields';\nimport { DateField } from '@panneau/fields/date';\nimport { RelationField, useRelationReferences } from '@panneau/fields/relation';\nimport type { FilterValue } from '@panneau/protocol';\nimport { isFilterRange } from '@panneau/protocol/runtime';\nimport { Fieldset, type OptionValue, Select, Switch, TextInput, usePanneauIntl } from '@panneau/ui';\n\nimport { messages } from '../messages';\nimport type { FilterControlProps, FilterEntry } from '../types';\nimport { useDraft } from '../useDraft';\nimport styles from './Filters.module.css';\n\nfunction asStrings(value: unknown): string[] {\n if (isFilterRange(value)) {\n return [];\n }\n if (Array.isArray(value)) {\n return value.map(String);\n }\n return value === undefined || value === null || value === '' ? [] : [String(value)];\n}\n\n/** A text filter: the list changes once the user stops typing. */\nexport function TextFilter({ label, value, onChange }: FilterControlProps) {\n const current = typeof value === 'string' || typeof value === 'number' ? String(value) : '';\n const { draft, setDraft, flush } = useDraft(current, (next) =>\n onChange(next !== '' ? next : undefined),\n );\n return (\n <TextInput\n label={label}\n value={draft}\n onChange={setDraft}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n flush();\n }\n }}\n onBlur={flush}\n className={styles.control}\n />\n );\n}\n\n/** A choice among the options, or several with `multiple`. */\nexport function SelectFilter({ filter, label, options, value, onChange }: FilterControlProps) {\n const intl = usePanneauIntl();\n const selected = asStrings(value);\n // Values from the URL are strings: match them to the options' values.\n const toOptions = (values: readonly string[]): OptionValue[] =>\n options\n .filter((option) => values.includes(String(option.value)))\n .map((option) => option.value);\n const placeholder = intl.formatMessage(messages.any);\n if (filter.multiple === true) {\n return (\n <Select\n multiple\n label={label}\n options={options}\n placeholder={placeholder}\n value={toOptions(selected)}\n onChange={(next) => onChange(next.length > 0 ? next : undefined)}\n className={styles.control}\n />\n );\n }\n return (\n <Select\n label={label}\n options={options}\n placeholder={placeholder}\n value={toOptions(selected)[0] ?? null}\n onChange={(next) => onChange(next ?? undefined)}\n className={styles.control}\n />\n );\n}\n\n/** On or off: on filters with `true`, off removes the filter. */\nexport function ToggleFilter({ label, value, onChange }: FilterControlProps) {\n return (\n <Switch\n isSelected={String(value) === 'true'}\n onChange={(checked) => onChange(checked ? true : undefined)}\n className={styles.toggle}\n >\n {label}\n </Switch>\n );\n}\n\n/** A day (`2026-10-15`). */\nexport function DateFilter({ label, value, onChange }: FilterControlProps) {\n return (\n <DateField\n label={label}\n value={typeof value === 'string' && value !== '' ? value : null}\n onChange={(next) => onChange(next ?? undefined)}\n className={styles.control}\n />\n );\n}\n\n/**\n * A range of days, sent as its bounds (`filter[published_at][from]=2026-01-01&…[to]=…`). Either end\n * can be open: it is left out.\n */\nexport function DateRangeFilter({ label, value, onChange }: FilterControlProps) {\n const intl = usePanneauIntl();\n const range = isFilterRange(value) ? value : {};\n const from = range.from !== undefined ? String(range.from) : '';\n const to = range.to !== undefined ? String(range.to) : '';\n const set = (nextFrom: string, nextTo: string) =>\n onChange(\n nextFrom === '' && nextTo === ''\n ? undefined\n : {\n ...(nextFrom !== '' ? { from: nextFrom } : {}),\n ...(nextTo !== '' ? { to: nextTo } : {}),\n },\n );\n return (\n <Fieldset legend={label} className={styles.range}>\n {/* One row, like the other filters: the legend names the range, and each end is named\n for assistive technologies only. */}\n <div className={styles.rangeInputs}>\n <DateField\n aria-label={intl.formatMessage(messages.from)}\n value={from !== '' ? from : null}\n onChange={(next) => set(next ?? '', to)}\n />\n <span className={styles.rangeDash} aria-hidden=\"true\">\n –\n </span>\n <DateField\n aria-label={intl.formatMessage(messages.to)}\n value={to !== '' ? to : null}\n onChange={(next) => set(from, next ?? '')}\n />\n </div>\n </Fieldset>\n );\n}\n\n/**\n * An item of another resource (`resource`), or several with `multiple`, picked with the relation\n * source of the fields context. The filter keeps their ids; their labels are remembered for the\n * chips.\n */\nexport function RelationFilter({\n filter,\n label,\n value,\n onChange,\n onLabel,\n getValueLabel,\n}: FilterControlProps) {\n const resource = filter.resource ?? filter.id;\n // Ids from the URL have no label: the relation source resolves them, for the picker and chips.\n const references = useRelationReferences(\n useFieldsContext().relationSource,\n resource,\n asStrings(value).map((id) => ({ id, label: getValueLabel(id) ?? id })),\n );\n const remember = (next: readonly { id: string; label: string }[]) =>\n next.forEach((reference) => onLabel(reference.id, reference.label));\n useEffect(() => {\n references\n .filter((reference) => reference.label !== reference.id)\n .forEach((reference) => onLabel(reference.id, reference.label));\n }, [references, onLabel]);\n if (filter.multiple === true) {\n return (\n <RelationField\n multiple\n label={label}\n resource={resource}\n value={references}\n onChange={(next) => {\n remember(next ?? []);\n const ids: FilterValue | undefined =\n next !== null && next.length > 0\n ? next.map((reference) => reference.id)\n : undefined;\n onChange(ids);\n }}\n className={styles.control}\n />\n );\n }\n return (\n <RelationField\n label={label}\n resource={resource}\n value={references[0] ?? null}\n onChange={(next) => {\n remember(next !== null ? [next] : []);\n onChange(next?.id);\n }}\n className={styles.control}\n />\n );\n}\n\n/** The built-in filter controls, by filter type. Unknown types are text filters. */\nexport const builtInFilters: Readonly<Record<string, FilterEntry>> = {\n text: TextFilter,\n select: SelectFilter,\n toggle: ToggleFilter,\n date: DateFilter,\n 'date-range': DateRangeFilter,\n relation: RelationFilter,\n};\n"],"mappings":";;;;;;;;;;;;AAcA,SAASkB,UAAUC,OAA0B;CACzC,IAAIb,cAAca,KAAK,GACnB,OAAO,CAAA;CAEX,IAAIC,MAAMC,QAAQF,KAAK,GACnB,OAAOA,MAAMG,IAAIC,MAAM;CAE3B,OAAOJ,UAAUK,KAAAA,KAAaL,UAAU,QAAQA,UAAU,KAAK,CAAA,IAAK,CAACI,OAAOJ,KAAK,CAAC;AACtF;;AAGA,SAAOM,WAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAoB,MAAA,EAAAC,OAAAV,OAAAW,aAAAJ;CACvB,MAAAK,UAAgB,OAAOZ,UAAU,YAAY,OAAOA,UAAU,WAAWI,OAAOJ,KAAU,IAA1E;CAA4E,IAAAa;CAAA,IAAAL,EAAA,OAAAG,UAAA;EACvCE,MAAAC,SACjDH,SAASG,SAAS,KAATA,OAAAT,KAAAA,CAA8B;EAACG,EAAA,KAAAG;EAAAH,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAD5C,MAAA,EAAAO,OAAAC,UAAAC,UAAmCpB,SAASe,SAASC,EAErD;CAAE,IAAAK;CAAA,IAAAV,EAAA,OAAAS,OAAA;EAMiBC,MAAAC,UAAA;GACP,IAAIA,MAAKC,QAAS,SACdH,MAAM;EACT;EACJT,EAAA,KAAAS;EAAAT,EAAA,KAAAU;CAAA,OAAAA,KAAAV,EAAA;CAAA,IAAAa;CAAA,IAAAb,EAAA,OAAAO,SAAAP,EAAA,OAAAS,SAAAT,EAAA,OAAAE,SAAAF,EAAA,OAAAQ,YAAAR,EAAA,OAAAU,IAAA;EARLG,KAAA,oBAAC,WAAD;GACWX;GACAK,OAAAA;GACGC,UAAAA;GACC,WAAAE;GAKHD,QAAAA;GACG,WAAAnB,uBAAMwB;EAAQ,CAAA;EAC3Bd,EAAA,KAAAO;EAAAP,EAAA,KAAAS;EAAAT,EAAA,KAAAE;EAAAF,EAAA,KAAAQ;EAAAR,EAAA,KAAAU;EAAAV,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,OAXFa;AAWE;;AAKV,SAAOE,aAAAhB,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAsB,MAAA,EAAAe,QAAAd,OAAAe,SAAAzB,OAAAW,aAAAJ;CACzB,MAAAmB,OAAajC,eAAe;CAAE,IAAAkC;CAAA,IAAAd;CAAA,IAAAK;CAAA,IAAAG;CAAA,IAAAO;CAAA,IAAAC;CAAA,IAAArB,EAAA,OAAAgB,OAAAM,YAAAtB,EAAA,OAAAkB,QAAAlB,EAAA,OAAAE,SAAAF,EAAA,OAAAG,YAAAH,EAAA,OAAAiB,WAAAjB,EAAA,OAAAR,OAAA;EAUtB6B,KAAAE,OAQEC,IARF,6BAQC;EAACC,KAAA;GAjBV,MAAAC,WAAiBnC,UAAUC,KAAK;GAAE,IAAAmC;GAAA,IAAA3B,EAAA,QAAAiB,SAAA;IAEhBU,MAAAC,WACdX,QAAOD,QACKa,WAAYD,OAAME,SAAUlC,OAAOiC,OAAMrC,KAAM,CAAC,CAAC,CAAC,CAAAG,IACrDoC,KAAwB;IAAC/B,EAAA,MAAAiB;IAAAjB,EAAA,MAAA2B;GAAA,OAAAA,KAAA3B,EAAA;GAHtC,MAAAgC,YAAkBL;GAGqB,IAAAM;GAAA,IAAAjC,EAAA,QAAAkB,MAAA;IACnBe,KAAAf,KAAIgB,cAAehD,SAAQiD,GAAI;IAACnC,EAAA,MAAAkB;IAAAlB,EAAA,MAAAiC;GAAA,OAAAA,KAAAjC,EAAA;GAApD,MAAAoC,cAAoBH;GACpB,IAAIjB,OAAMM,aAAc,MAAI;IAAA,IAAAe;IAAA,IAAArC,EAAA,QAAAG,UAAA;KAQNkC,MAAA/B,SAAUH,SAASG,KAAIgC,SAAU,IAAdhC,OAAAT,KAAAA,CAAkC;KAACG,EAAA,MAAAG;KAAAH,EAAA,MAAAqC;IAAA,OAAAA,KAAArC,EAAA;IANpEqB,KAAA,oBAAC,QAAD;KACI,UAAA;KACOnB;KACEe;KACImB;KACN,OAAAJ,UAAUN,QAAQ;KACf,UAAAW;KACC,WAAA/C,uBAAMwB;IAAQ,CAAA;IAP7B,MAAAW;GAQE;GAILN,KAAArC;GACUoB,KAAAA;GACEe,KAAAA;GACImB,KAAAA;GACNhB,KAAAY,UAAUN,QAAQ,CAAC,CAAA,MAAnB;EAA8B;EAAA1B,EAAA,KAAAgB,OAAAM;EAAAtB,EAAA,KAAAkB;EAAAlB,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAiB;EAAAjB,EAAA,KAAAR;EAAAQ,EAAA,KAAAmB;EAAAnB,EAAA,KAAAK;EAAAL,EAAA,KAAAU;EAAAV,EAAA,KAAAa;EAAAb,EAAA,MAAAoB;EAAApB,EAAA,MAAAqB;CAAA,OAAA;EAAAF,KAAAnB,EAAA;EAAAK,KAAAL,EAAA;EAAAU,KAAAV,EAAA;EAAAa,KAAAb,EAAA;EAAAoB,KAAApB,EAAA;EAAAqB,KAAArB,EAAA;CAAA;CAAA,IAAAqB,OAAAE,OAAAC,IAAA,6BAAA,GAAA,OAAAH;CAAA,IAAAM;CAAA,IAAA3B,EAAA,QAAAG,UAAA;EAC3BwB,MAAAY,WAAUpC,SAASoC,UAAA1C,KAAAA,CAAiB;EAACG,EAAA,MAAAG;EAAAH,EAAA,MAAA2B;CAAA,OAAAA,KAAA3B,EAAA;CAAA,IAAAiC;CAAA,IAAAjC,EAAA,QAAAmB,MAAAnB,EAAA,QAAAK,MAAAL,EAAA,QAAAU,MAAAV,EAAA,QAAAa,MAAAb,EAAA,QAAAoB,MAAApB,EAAA,QAAA2B,IAAA;EALnDM,KAAA,oBAAC,IAAD;GACW/B,OAAAA;GACEe,SAAAA;GACImB,aAAAA;GACN,OAAAhB;GACG,UAAAO;GACC,WAAArC,uBAAMwB;EAAQ,CAAA;EAC3Bd,EAAA,MAAAmB;EAAAnB,EAAA,MAAAK;EAAAL,EAAA,MAAAU;EAAAV,EAAA,MAAAa;EAAAb,EAAA,MAAAoB;EAAApB,EAAA,MAAA2B;EAAA3B,EAAA,MAAAiC;CAAA,OAAAA,KAAAjC,EAAA;CAAA,OAPFiC;AAOE;;AA9BH,SAAAF,MAAAS,UAAA;CAAA,OAOsBX,SAAMrC;AAAM;AA4BzC,SAAOiD,aAAA1C,IAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAsB,MAAA,EAAAC,OAAAV,OAAAW,aAAAJ;CAGL,MAAAM,KAAAT,OAAOJ,KAAK,MAAM;CAAM,IAAAkB;CAAA,IAAAV,EAAA,OAAAG,UAAA;EAC1BO,MAAAgC,YAAavC,SAASuC,UAAA,OAAA7C,KAAAA,CAA0B;EAACG,EAAA,KAAAG;EAAAH,EAAA,KAAAU;CAAA,OAAAA,KAAAV,EAAA;CAAA,IAAAa;CAAA,IAAAb,EAAA,OAAAE,SAAAF,EAAA,OAAAK,MAAAL,EAAA,OAAAU,IAAA;EAF/DG,KAAA,oBAAC,QAAD;GACgB,YAAAR;GACF,UAAAK;GACC,WAAApB,uBAAMqD;GAEhBzC,UAAAA;EALE,CAAA;EAMEF,EAAA,KAAAE;EAAAF,EAAA,KAAAK;EAAAL,EAAA,KAAAU;EAAAV,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,OANTa;AAMS;;AAKjB,SAAO+B,WAAA7C,IAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAoB,MAAA,EAAAC,OAAAV,OAAAW,aAAAJ;CAIR,MAAAM,KAAA,OAAOb,UAAU,YAAYA,UAAU,KAAvCA,QAAA;CAAwD,IAAAkB;CAAA,IAAAV,EAAA,OAAAG,UAAA;EACrDO,MAAAJ,SAAUH,SAASG,QAAAT,KAAAA,CAAiB;EAACG,EAAA,KAAAG;EAAAH,EAAA,KAAAU;CAAA,OAAAA,KAAAV,EAAA;CAAA,IAAAa;CAAA,IAAAb,EAAA,OAAAE,SAAAF,EAAA,OAAAK,MAAAL,EAAA,OAAAU,IAAA;EAHnDG,KAAA,oBAAC,WAAD;GACWX;GACA,OAAAG;GACG,UAAAK;GACC,WAAApB,uBAAMwB;EAAQ,CAAA;EAC3Bd,EAAA,KAAAE;EAAAF,EAAA,KAAAK;EAAAL,EAAA,KAAAU;EAAAV,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,OALFa;AAKE;;;;;AAQV,SAAOgC,gBAAA9C,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAyB,MAAA,EAAAC,OAAAV,OAAAW,aAAAJ;CAC5B,MAAAmB,OAAajC,eAAe;CAAE,IAAAoB;CAAA,IAAAL,EAAA,OAAAR,OAAA;EAChBa,KAAA1B,cAAca,KAAkB,IAAhCA,QAAA,CAAgC;EAACQ,EAAA,KAAAR;EAAAQ,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAA/C,MAAA8C,QAAczC;CACd,MAAA0C,OAAaD,MAAKC,SAAUlD,KAAAA,IAAYD,OAAOkD,MAAKC,IAAU,IAAjD;CACb,MAAAC,KAAWF,MAAKE,OAAQnD,KAAAA,IAAYD,OAAOkD,MAAKE,EAAQ,IAA7C;CAA+C,IAAAtC;CAAA,IAAAV,EAAA,OAAAG,UAAA;EAC9CO,MAAAuC,UAAAC,WACR/C,SACI8C,aAAa,MAAMC,WAAW,KAA9BrD,KAAAA,IAAA;GAAA,GAGcoD,aAAa,KAAb,EAAAF,MAA0BE,SAAc,IAAxC,CAAwC;GAAC,GACzCC,WAAW,KAAX,EAAAF,IAAsBE,OAAY,IAAlC,CAAkC;EAC1C,CACV;EAAClD,EAAA,KAAAG;EAAAH,EAAA,KAAAU;CAAA,OAAAA,KAAAV,EAAA;CARL,MAAAmD,MAAYzC;CAQN,IAAAG;CAAA,IAAAb,EAAA,OAAAkB,MAAA;EAOsBL,KAAAK,KAAIgB,cAAehD,SAAQ6D,IAAK;EAAC/C,EAAA,KAAAkB;EAAAlB,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CACtC,MAAAoB,KAAA2B,SAAS,KAATA,OAAA;CAAyB,IAAA1B;CAAA,IAAArB,EAAA,OAAAmD,OAAAnD,EAAA,OAAAgD,IAAA;EACtB3B,MAAAf,SAAU6C,IAAI7C,QAAA,IAAY0C,EAAE;EAAChD,EAAA,KAAAmD;EAAAnD,EAAA,KAAAgD;EAAAhD,EAAA,KAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAAA,IAAA2B;CAAA,IAAA3B,EAAA,OAAAa,MAAAb,EAAA,QAAAoB,MAAApB,EAAA,QAAAqB,IAAA;EAH3CM,KAAA,oBAAC,WAAD;GACgB,cAAAd;GACL,OAAAO;GACG,UAAAC;EAA6B,CAAA;EACzCrB,EAAA,KAAAa;EAAAb,EAAA,MAAAoB;EAAApB,EAAA,MAAAqB;EAAArB,EAAA,MAAA2B;CAAA,OAAAA,KAAA3B,EAAA;CAAA,IAAAiC;CAAA,IAAAjC,EAAA,QAAAuB,OAAAC,IAAA,2BAAA,GAAA;EACFS,KAAA,oBAAA,QAAA;GAAiB,WAAA3C,uBAAM8D;GAAwB,eAAA;GAAO,UAAA;EAE/C,CAAA;EAAApD,EAAA,MAAAiC;CAAA,OAAAA,KAAAjC,EAAA;CAAA,IAAAqC;CAAA,IAAArC,EAAA,QAAAkB,MAAA;EAESmB,KAAAnB,KAAIgB,cAAehD,SAAQ8D,EAAG;EAAChD,EAAA,MAAAkB;EAAAlB,EAAA,MAAAqC;CAAA,OAAAA,KAAArC,EAAA;CACpC,MAAAqD,KAAAL,OAAO,KAAPA,KAAA;CAAqB,IAAAM;CAAA,IAAAtD,EAAA,QAAA+C,QAAA/C,EAAA,QAAAmD,KAAA;EAClBG,OAAAf,WAAUY,IAAIJ,MAAMR,UAAA,EAAU;EAACvC,EAAA,MAAA+C;EAAA/C,EAAA,MAAAmD;EAAAnD,EAAA,MAAAsD;CAAA,OAAAA,MAAAtD,EAAA;CAAA,IAAAuD;CAAA,IAAAvD,EAAA,QAAAsD,OAAAtD,EAAA,QAAAqC,MAAArC,EAAA,QAAAqD,IAAA;EAH7CE,MAAA,oBAAC,WAAD;GACgB,cAAAlB;GACL,OAAAgB;GACG,UAAAC;EAA+B,CAAA;EAC3CtD,EAAA,MAAAsD;EAAAtD,EAAA,MAAAqC;EAAArC,EAAA,MAAAqD;EAAArD,EAAA,MAAAuD;CAAA,OAAAA,MAAAvD,EAAA;CAAA,IAAAwD;CAAA,IAAAxD,EAAA,QAAAuD,OAAAvD,EAAA,QAAA2B,IAAA;EAbN6B,MAAA,qBAAA,OAAA;GAAgB,WAAAlE,uBAAMmE;GAAtB,UAAA;IACI9B;IAKAM;IAGAsB;GAKE;;EAAAvD,EAAA,MAAAuD;EAAAvD,EAAA,MAAA2B;EAAA3B,EAAA,MAAAwD;CAAA,OAAAA,MAAAxD,EAAA;CAAA,IAAA0D;CAAA,IAAA1D,EAAA,QAAAE,SAAAF,EAAA,QAAAwD,KAAA;EAjBVE,MAAA,oBAAC,UAAD;GAAkBxD,QAAAA;GAAkB,WAAAZ,uBAAMwD;GAGtCU,UAAAA;EAHK,CAAA;EAkBExD,EAAA,MAAAE;EAAAF,EAAA,MAAAwD;EAAAxD,EAAA,MAAA0D;CAAA,OAAAA,MAAA1D,EAAA;CAAA,OAlBX0D;AAkBW;;;;;;AASnB,SAAOC,eAAA5D,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAwB,MAAA,EAAAe,QAAAd,OAAAV,OAAAW,UAAAyD,SAAAC,kBAAA9D;CAQ3B,MAAA+D,WAAiB9C,OAAM8C,YAAa9C,OAAM+C;CAGtC,MAAA1D,KAAA/B,iBAAiB,CAAC,CAAA0F;CAAe,IAAAtD;CAAA,IAAAV,EAAA,OAAA6D,iBAAA7D,EAAA,OAAAR,OAAA;EAAA,IAAAqB;EAAA,IAAAb,EAAA,OAAA6D,eAAA;GAEZhD,MAAAkD,QAAS;IAAAA;IAAA7D,OAAa2D,cAAcE,EAAQ,KAAtBA;GAAwB;GAAE/D,EAAA,KAAA6D;GAAA7D,EAAA,KAAAa;EAAA,OAAAA,KAAAb,EAAA;EAArEU,KAAAnB,UAAUC,KAAK,CAAC,CAAAG,IAAKkB,EAAgD;EAACb,EAAA,KAAA6D;EAAA7D,EAAA,KAAAR;EAAAQ,EAAA,KAAAU;CAAA,OAAAA,KAAAV,EAAA;CAH1E,MAAAiE,aAAmBxF,sBACf4B,IACAyD,UACApD,EACJ;CAAE,IAAAG;CAAA,IAAAb,EAAA,OAAA4D,SAAA;EACe/C,MAAAP,SACbA,KAAI4D,SAASC,cAAeP,QAAQO,UAASJ,IAAKI,UAASjE,KAAM,CAAC;EAACF,EAAA,KAAA4D;EAAA5D,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CADvE,MAAAoE,WAAiBvD;CACuD,IAAAO;CAAA,IAAAC;CAAA,IAAArB,EAAA,OAAA4D,WAAA5D,EAAA,OAAAiE,YAAA;EAC9D7C,WAAA;GACN6C,WAAUjD,OACEqD,MAA+C,CAAC,CAAAH,SAC/CI,gBAAeV,QAAQO,YAASJ,IAAKI,YAASjE,KAAM,CAAC;EAAC;EACpEmB,KAAA,CAAC4C,YAAYL,OAAO;EAAC5D,EAAA,KAAA4D;EAAA5D,EAAA,KAAAiE;EAAAjE,EAAA,KAAAoB;EAAApB,EAAA,MAAAqB;CAAA,OAAA;EAAAD,KAAApB,EAAA;EAAAqB,KAAArB,EAAA;CAAA;CAJxB3B,UAAU+C,IAIPC,EAAqB;CACxB,IAAIL,OAAMM,aAAc,MAAI;EAAA,IAAAK;EAAA,IAAA3B,EAAA,QAAAG,YAAAH,EAAA,QAAAoE,UAAA;GAONzC,MAAAY,WAAA;IACN6B,SAAS7B,UAAA,CAAA,CAAU;IACnB,MAAAgC,MACIjE,WAAS,QAAQA,OAAIgC,SAAU,IACzBhC,OAAIX,IAAK6E,MACD,IAFd3E,KAAAA;IAGJM,SAASoE,GAAG;GAAC;GAChBvE,EAAA,MAAAG;GAAAH,EAAA,MAAAoE;GAAApE,EAAA,MAAA2B;EAAA,OAAAA,KAAA3B,EAAA;EAAA,IAAAiC;EAAA,IAAAjC,EAAA,QAAAE,SAAAF,EAAA,QAAAiE,cAAAjE,EAAA,QAAA8D,YAAA9D,EAAA,QAAA2B,IAAA;GAZLM,KAAA,oBAAC,eAAD;IACI,UAAA;IACO/B;IACG4D;IACHG,OAAAA;IACG,UAAAtC;IAQC,WAAArC,uBAAMwB;GAAQ,CAAA;GAC3Bd,EAAA,MAAAE;GAAAF,EAAA,MAAAiE;GAAAjE,EAAA,MAAA8D;GAAA9D,EAAA,MAAA2B;GAAA3B,EAAA,MAAAiC;EAAA,OAAAA,KAAAjC,EAAA;EAAA,OAdFiC;CAcE;CAOK,MAAAN,KAAAsC,WAAU,MAAV;CAAqB,IAAAhC;CAAA,IAAAjC,EAAA,QAAAG,YAAAH,EAAA,QAAAoE,UAAA;EAClBnC,MAAAwC,WAAA;GACNL,SAAS9D,WAAS,OAAT,CAAiBA,MAAI,IAArB,CAAA,CAA2B;GACpCH,SAASG,QAAIyD,EAAI;EAAC;EACrB/D,EAAA,MAAAG;EAAAH,EAAA,MAAAoE;EAAApE,EAAA,MAAAiC;CAAA,OAAAA,KAAAjC,EAAA;CAAA,IAAAqC;CAAA,IAAArC,EAAA,QAAAE,SAAAF,EAAA,QAAA8D,YAAA9D,EAAA,QAAA2B,MAAA3B,EAAA,QAAAiC,IAAA;EAPLI,KAAA,oBAAC,eAAD;GACWnC;GACG4D;GACH,OAAAnC;GACG,UAAAM;GAIC,WAAA3C,uBAAMwB;EAAQ,CAAA;EAC3Bd,EAAA,MAAAE;EAAAF,EAAA,MAAA8D;EAAA9D,EAAA,MAAA2B;EAAA3B,EAAA,MAAAiC;EAAAjC,EAAA,MAAAqC;CAAA,OAAAA,KAAArC,EAAA;CAAA,OATFqC;AASE;;AAnDH,SAAAmC,OAAAE,aAAA;CAAA,OAiC+CP,YAASJ;AAAG;AAjC3D,SAAAM,OAAAM,aAAA;CAAA,OAmB4BR,YAASjE,UAAWiE,YAASJ;AAAG;AAqCnE,IAAaa,iBAAwD;CACjEG,MAAMjF;CACNkF,QAAQjE;CACR4B,QAAQF;CACRwC,MAAMrC;CACN,cAAcC;CACdqC,UAAUvB;AACd"}
@@ -1,6 +1,6 @@
1
1
  import type { IntlShape } from 'react-intl';
2
2
  import type { Field, Filter, Option } from '@panneau/protocol';
3
- import type { ListColumn } from '../types';
3
+ import type { ListColumn } from '../types.js';
4
4
  /** The label of a filter: its `label`, the label of its field, or its id. */
5
5
  export declare function getFilterLabel(filter: Filter, columns: readonly ListColumn[], fields: readonly Field[]): string;
6
6
  /** The field a filter filters, when a column or the list's fields have one with its id. */