@optimum-intelligence/opti-ui 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -0
- package/dist/components/accordion/Accordion.d.ts +12 -0
- package/dist/components/accordion/Accordion.js +12 -0
- package/dist/components/accordion/Accordion.js.map +1 -1
- package/dist/components/alert/Alert.d.ts +4 -0
- package/dist/components/alert/Alert.js.map +1 -1
- package/dist/components/app-shell/AppShell.d.ts +22 -0
- package/dist/components/app-shell/AppShell.js +6 -0
- package/dist/components/app-shell/AppShell.js.map +1 -1
- package/dist/components/avatar/Avatar.d.ts +8 -0
- package/dist/components/avatar/Avatar.js +2 -0
- package/dist/components/avatar/Avatar.js.map +1 -1
- package/dist/components/badge/Badge.d.ts +9 -0
- package/dist/components/badge/Badge.js +6 -0
- package/dist/components/badge/Badge.js.map +1 -1
- package/dist/components/breadcrumbs/Breadcrumbs.d.ts +1 -0
- package/dist/components/breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/components/button/Button.d.ts +8 -0
- package/dist/components/button/Button.js +6 -0
- package/dist/components/button/Button.js.map +1 -1
- package/dist/components/calendar/Calendar.d.ts +3 -0
- package/dist/components/calendar/Calendar.js.map +1 -1
- package/dist/components/card/Card.d.ts +13 -0
- package/dist/components/card/Card.js +13 -0
- package/dist/components/card/Card.js.map +1 -1
- package/dist/components/choice/Choice.d.ts +13 -0
- package/dist/components/choice/Choice.js +10 -0
- package/dist/components/choice/Choice.js.map +1 -1
- package/dist/components/combobox/Combobox.d.ts +12 -0
- package/dist/components/combobox/Combobox.js.map +1 -1
- package/dist/components/command-palette/CommandPalette.d.ts +10 -0
- package/dist/components/command-palette/CommandPalette.js.map +1 -1
- package/dist/components/data-table/DataTable.d.ts +4 -0
- package/dist/components/data-table/DataTable.js.map +1 -1
- package/dist/components/data-table/DataTableContent.d.ts +1 -0
- package/dist/components/data-table/DataTableContent.js.map +1 -1
- package/dist/components/data-table/DataTableFilters.d.ts +3 -0
- package/dist/components/data-table/DataTableFilters.js.map +1 -1
- package/dist/components/data-table/types.d.ts +16 -0
- package/dist/components/date-picker/DateRangePicker.d.ts +1 -0
- package/dist/components/date-picker/DateRangePicker.js.map +1 -1
- package/dist/components/date-picker/PickerField.d.ts +13 -0
- package/dist/components/date-picker/PickerField.js.map +1 -1
- package/dist/components/dialog/Dialog.d.ts +5 -0
- package/dist/components/dialog/Dialog.js.map +1 -1
- package/dist/components/drawer/Drawer.d.ts +10 -0
- package/dist/components/drawer/Drawer.js.map +1 -1
- package/dist/components/empty-state/EmptyState.d.ts +5 -0
- package/dist/components/empty-state/EmptyState.js.map +1 -1
- package/dist/components/file-upload/FileUpload.d.ts +21 -0
- package/dist/components/file-upload/FileUpload.js.map +1 -1
- package/dist/components/input/Input.d.ts +7 -0
- package/dist/components/input/Input.js +3 -0
- package/dist/components/input/Input.js.map +1 -1
- package/dist/components/link/Link.d.ts +1 -0
- package/dist/components/link/Link.js.map +1 -1
- package/dist/components/menu/Menu.d.ts +6 -0
- package/dist/components/menu/Menu.js.map +1 -1
- package/dist/components/number-field/NumberField.d.ts +7 -0
- package/dist/components/number-field/NumberField.js.map +1 -1
- package/dist/components/pagination/Pagination.d.ts +4 -0
- package/dist/components/pagination/Pagination.js.map +1 -1
- package/dist/components/popover/Popover.d.ts +4 -0
- package/dist/components/popover/Popover.js.map +1 -1
- package/dist/components/preview-card/PreviewCard.d.ts +4 -0
- package/dist/components/preview-card/PreviewCard.js.map +1 -1
- package/dist/components/progress/Progress.d.ts +8 -0
- package/dist/components/progress/Progress.js.map +1 -1
- package/dist/components/scroll-area/ScrollArea.d.ts +1 -0
- package/dist/components/scroll-area/ScrollArea.js.map +1 -1
- package/dist/components/search-input/SearchInput.d.ts +2 -0
- package/dist/components/search-input/SearchInput.js.map +1 -1
- package/dist/components/select/Select.d.ts +11 -0
- package/dist/components/select/Select.js.map +1 -1
- package/dist/components/separator/Separator.d.ts +1 -0
- package/dist/components/separator/Separator.js +1 -0
- package/dist/components/separator/Separator.js.map +1 -1
- package/dist/components/skeleton/Skeleton.d.ts +7 -0
- package/dist/components/skeleton/Skeleton.js +1 -0
- package/dist/components/skeleton/Skeleton.js.map +1 -1
- package/dist/components/slider/Slider.d.ts +1 -0
- package/dist/components/slider/Slider.js.map +1 -1
- package/dist/components/spinner/Spinner.d.ts +2 -0
- package/dist/components/spinner/Spinner.js +1 -0
- package/dist/components/spinner/Spinner.js.map +1 -1
- package/dist/components/stat-card/StatCard.d.ts +4 -0
- package/dist/components/stat-card/StatCard.js.map +1 -1
- package/dist/components/stepper/Stepper.d.ts +4 -0
- package/dist/components/stepper/Stepper.js.map +1 -1
- package/dist/components/table/Table.d.ts +23 -0
- package/dist/components/table/Table.js +17 -0
- package/dist/components/table/Table.js.map +1 -1
- package/dist/components/tabs/Tabs.d.ts +1 -0
- package/dist/components/tabs/Tabs.js.map +1 -1
- package/dist/components/tag/Tag.d.ts +3 -0
- package/dist/components/tag/Tag.js.map +1 -1
- package/dist/components/toast/Toast.d.ts +2 -0
- package/dist/components/toast/Toast.js.map +1 -1
- package/dist/components/toggle/Toggle.d.ts +7 -0
- package/dist/components/toggle/Toggle.js +1 -0
- package/dist/components/toggle/Toggle.js.map +1 -1
- package/dist/components/tooltip/Tooltip.d.ts +8 -0
- package/dist/components/tooltip/Tooltip.js.map +1 -1
- package/dist/components/typography/Typography.d.ts +5 -0
- package/dist/components/typography/Typography.js +2 -0
- package/dist/components/typography/Typography.js.map +1 -1
- package/dist/components.json +5375 -0
- package/dist/llms-full.txt +2590 -0
- package/dist/llms.txt +175 -0
- package/dist/theme/ThemeProvider.d.ts +1 -0
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/utils/portal.d.ts +4 -0
- package/dist/utils/portal.js +4 -0
- package/dist/utils/portal.js.map +1 -1
- package/package.json +7 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableFilters.js","names":["React","cx","ChevronDownIcon","XIcon","Button","formatDate","DateRange","DateRangePicker","Select","Toggle","useDataTableContext","DataTableControlSize","DataTableFilterProps","id","size","className","DataTableFilter","t0","$","_c","t1","undefined","table","t2","filters","T0","T1","t3","t4","t5","t6","t7","t8","t9","Symbol","for","bb0","t10","candidate","filter","find","value","filterValues","t11","classes","type","t12","pressed","setFilterValue","label","range","next","presets","min","max","locale","start","end","Root","labels","filterAll","options","next_0","t13","Content","map","_temp","option","DataTableFiltersProps","HTMLAttributes","HTMLDivElement","DataTableFilters","children","props","length","activeFilterCount","clearFilters","_c"],"sources":["../../../src/components/data-table/DataTableFilters.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cx } from '../../utils/cx';\nimport { ChevronDownIcon, XIcon } from '../../icons';\nimport { Button } from '../button/Button';\nimport { formatDate, type DateRange } from '../calendar/date-utils';\nimport { DateRangePicker } from '../date-picker/DateRangePicker';\nimport { Select } from '../select/Select';\nimport { Toggle } from '../toggle/Toggle';\nimport { useDataTableContext } from './context';\n\nexport type DataTableControlSize = 'sm' | 'md';\n\nexport interface DataTableFilterProps {\n /** Id of the filter: the column id, or the `id` given in `filters`. */\n id: string;\n size?: DataTableControlSize;\n className?: string;\n}\n\n/** The control of one filter: a dropdown, a toggle chip or a date range picker. */\nexport function DataTableFilter({ id, size = 'md', className }: DataTableFilterProps) {\n const table = useDataTableContext();\n const filter = table.filters.find((candidate) => candidate.id === id);\n if (!filter) return null;\n const value = table.filterValues[id];\n const classes = cx('oui-data-table__filter', className);\n\n if (filter.type === 'toggle') {\n return (\n <Toggle\n size={size}\n className={classes}\n pressed={value !== undefined}\n onPressedChange={(pressed) => table.setFilterValue(id, pressed || undefined)}\n >\n {filter.label}\n </Toggle>\n );\n }\n\n if (filter.type === 'dateRange') {\n const range = (value as DateRange | undefined) ?? null;\n return (\n <DateRangePicker\n size={size}\n className={classes}\n placeholder={filter.label}\n value={range}\n onValueChange={(next) => table.setFilterValue(id, next ?? undefined)}\n presets={filter.presets}\n min={filter.min}\n max={filter.max}\n locale={table.locale}\n triggerProps={{\n 'aria-label': range ? `${filter.label}: ${formatDate(range.start)} – ${formatDate(range.end)}` : filter.label,\n }}\n />\n );\n }\n\n return (\n <Select.Root\n items={[{ value: null, label: table.labels.filterAll }, ...filter.options]}\n value={(value as string | undefined) ?? null}\n onValueChange={(next) => table.setFilterValue(id, next ?? undefined)}\n >\n <Select.Trigger size={size} className={classes} data-active={value !== undefined ? '' : undefined}>\n <span className=\"oui-data-table__filter-label\">{filter.label}</span>\n <Select.Value />\n <span className=\"oui-select__icon\">\n <ChevronDownIcon />\n </span>\n </Select.Trigger>\n <Select.Content>\n <Select.Item value={null}>{table.labels.filterAll}</Select.Item>\n {filter.options.map((option) => (\n <Select.Item key={option.value} value={option.value}>\n {option.label}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n );\n}\n\nexport interface DataTableFiltersProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: DataTableControlSize;\n}\n\n/** Every filter of the table, with a clear button while any is active. Children are added after the filters. */\nexport function DataTableFilters({ size = 'md', className, children, ...props }: DataTableFiltersProps) {\n const table = useDataTableContext();\n if (!table.filters.length && !children) return null;\n return (\n <div role=\"group\" aria-label={table.labels.filters} className={cx('oui-data-table__filters', className)} {...props}>\n {table.filters.map((filter) => (\n <DataTableFilter key={filter.id} id={filter.id} size={size} />\n ))}\n {children}\n {table.activeFilterCount > 0 && (\n <Button size=\"sm\" variant=\"ghost\" shape=\"rounded\" onClick={table.clearFilters}>\n <XIcon />\n {table.labels.clearFilters}\n </Button>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataTableFilters.js","names":["React","cx","ChevronDownIcon","XIcon","Button","formatDate","DateRange","DateRangePicker","Select","Toggle","useDataTableContext","DataTableControlSize","DataTableFilterProps","id","size","className","DataTableFilter","t0","$","_c","t1","undefined","table","t2","filters","T0","T1","t3","t4","t5","t6","t7","t8","t9","Symbol","for","bb0","t10","candidate","filter","find","value","filterValues","t11","classes","type","t12","pressed","setFilterValue","label","range","next","presets","min","max","locale","start","end","Root","labels","filterAll","options","next_0","t13","Content","map","_temp","option","DataTableFiltersProps","HTMLAttributes","HTMLDivElement","DataTableFilters","children","props","length","activeFilterCount","clearFilters","_c"],"sources":["../../../src/components/data-table/DataTableFilters.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cx } from '../../utils/cx';\nimport { ChevronDownIcon, XIcon } from '../../icons';\nimport { Button } from '../button/Button';\nimport { formatDate, type DateRange } from '../calendar/date-utils';\nimport { DateRangePicker } from '../date-picker/DateRangePicker';\nimport { Select } from '../select/Select';\nimport { Toggle } from '../toggle/Toggle';\nimport { useDataTableContext } from './context';\n\nexport type DataTableControlSize = 'sm' | 'md';\n\nexport interface DataTableFilterProps {\n /** Id of the filter: the column id, or the `id` given in `filters`. */\n id: string;\n /** Control height. */\n size?: DataTableControlSize;\n /** Class name for the filter control. */\n className?: string;\n}\n\n/** The control of one filter: a dropdown, a toggle chip or a date range picker. */\nexport function DataTableFilter({ id, size = 'md', className }: DataTableFilterProps) {\n const table = useDataTableContext();\n const filter = table.filters.find((candidate) => candidate.id === id);\n if (!filter) return null;\n const value = table.filterValues[id];\n const classes = cx('oui-data-table__filter', className);\n\n if (filter.type === 'toggle') {\n return (\n <Toggle\n size={size}\n className={classes}\n pressed={value !== undefined}\n onPressedChange={(pressed) => table.setFilterValue(id, pressed || undefined)}\n >\n {filter.label}\n </Toggle>\n );\n }\n\n if (filter.type === 'dateRange') {\n const range = (value as DateRange | undefined) ?? null;\n return (\n <DateRangePicker\n size={size}\n className={classes}\n placeholder={filter.label}\n value={range}\n onValueChange={(next) => table.setFilterValue(id, next ?? undefined)}\n presets={filter.presets}\n min={filter.min}\n max={filter.max}\n locale={table.locale}\n triggerProps={{\n 'aria-label': range ? `${filter.label}: ${formatDate(range.start)} – ${formatDate(range.end)}` : filter.label,\n }}\n />\n );\n }\n\n return (\n <Select.Root\n items={[{ value: null, label: table.labels.filterAll }, ...filter.options]}\n value={(value as string | undefined) ?? null}\n onValueChange={(next) => table.setFilterValue(id, next ?? undefined)}\n >\n <Select.Trigger size={size} className={classes} data-active={value !== undefined ? '' : undefined}>\n <span className=\"oui-data-table__filter-label\">{filter.label}</span>\n <Select.Value />\n <span className=\"oui-select__icon\">\n <ChevronDownIcon />\n </span>\n </Select.Trigger>\n <Select.Content>\n <Select.Item value={null}>{table.labels.filterAll}</Select.Item>\n {filter.options.map((option) => (\n <Select.Item key={option.value} value={option.value}>\n {option.label}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n );\n}\n\nexport interface DataTableFiltersProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Control height of every filter. */\n size?: DataTableControlSize;\n}\n\n/** Every filter of the table, with a clear button while any is active. Children are added after the filters. */\nexport function DataTableFilters({ size = 'md', className, children, ...props }: DataTableFiltersProps) {\n const table = useDataTableContext();\n if (!table.filters.length && !children) return null;\n return (\n <div role=\"group\" aria-label={table.labels.filters} className={cx('oui-data-table__filters', className)} {...props}>\n {table.filters.map((filter) => (\n <DataTableFilter key={filter.id} id={filter.id} size={size} />\n ))}\n {children}\n {table.activeFilterCount > 0 && (\n <Button size=\"sm\" variant=\"ghost\" shape=\"rounded\" onClick={table.clearFilters}>\n <XIcon />\n {table.labels.clearFilters}\n </Button>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AAsBA,SAAOgB,gBAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAyB,MAAA,EAAAN,IAAAC,MAAAM,IAAAL,cAAAE;CAAM,MAAAH,OAAAM,OAAAC,KAAAA,IAAA,OAAAD;CACpC,MAAAE,QAAcZ,oBAAoB;CACnB,MAAAa,KAAAD,MAAKE;CAAQ,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAf,EAAA,OAAAH,aAAAG,EAAA,OAAAL,MAAAK,EAAA,OAAAJ,QAAAI,EAAA,OAAAI,OAAA;EACRW,KAAAC,OAAIC,IAAJ,6BAAG;EAACC,KAAA;GAAA,IAAAC;GAAA,IAAAnB,EAAA,QAAAL,IAAA;IADUwB,OAAAC,cAAeA,UAASzB,OAAQA;IAAEK,EAAA,MAAAL;IAAAK,EAAA,MAAAmB;GAAA,OAAAA,MAAAnB,EAAA;GAApE,MAAAqB,SAAehB,GAAaiB,KAAMH,GAAkC;GACpE,IAAI,CAACE,QAAM;IAASN,KAAA;IAAA,MAAAG;GAAI;GACxB,MAAAK,QAAcnB,MAAKoB,aAAc7B;GAAI,IAAA8B;GAAA,IAAAzB,EAAA,QAAAH,WAAA;IACrB4B,MAAA1C,GAAG,0BAA0Bc,SAAS;IAACG,EAAA,MAAAH;IAAAG,EAAA,MAAAyB;GAAA,OAAAA,MAAAzB,EAAA;GAAvD,MAAA0B,UAAgBD;GAEhB,IAAIJ,OAAMM,SAAU,UAAQ;IAAA,IAAAC;IAAA,IAAA5B,EAAA,QAAAL,MAAAK,EAAA,QAAAI,OAAA;KAMLwB,OAAAC,YAAazB,MAAK0B,eAAgBnC,IAAIkC,WAAA1B,KAAAA,CAAoB;KAACH,EAAA,MAAAL;KAAAK,EAAA,MAAAI;KAAAJ,EAAA,MAAA4B;IAAA,OAAAA,MAAA5B,EAAA;IAJ9Ee,KAAA,oBAAC,QAAD;KACQnB;KACK8B,WAAAA;KACF,SAAAH,UAAUpB,KAAAA;KACF,iBAAAyB;KAEhBP,UAAAA,OAAMU;IANF,CAAA;IAAP,MAAAb;GAOS;GAIb,IAAIG,OAAMM,SAAU,aAAW;IAC7B,MAAAK,QAAeT,SAAD;IAAyC,IAAAK;IAAA,IAAA5B,EAAA,QAAAL,MAAAK,EAAA,QAAAI,OAAA;KAOpCwB,OAAAK,SAAU7B,MAAK0B,eAAgBnC,IAAIsC,QAAA9B,KAAAA,CAAiB;KAACH,EAAA,MAAAL;KAAAK,EAAA,MAAAI;KAAAJ,EAAA,MAAA4B;IAAA,OAAAA,MAAA5B,EAAA;IALtEe,KAAA,oBAAC,iBAAD;KACQnB;KACK8B,WAAAA;KACE,aAAAL,OAAMU;KACZC,OAAAA;KACQ,eAAAJ;KACN,SAAAP,OAAMa;KACV,KAAAb,OAAMc;KACN,KAAAd,OAAMe;KACH,QAAAhC,MAAKiC;KACC,cAAA,EAAA,cACEL,QAAA,GAAWX,OAAMU,MAAM,IAAK5C,WAAW6C,MAAKM,KAAM,EAAC,KAAMnD,WAAW6C,MAAKO,GAAI,MAAMlB,OAAMU,MACzG;IAAC,CAAA;IAZH,MAAAb;GAaE;GAKHV,KAAAlB,OAAMkD;GACE7B,KAAA,CAAC;IAAAY,OAAS;IAAIQ,OAAS3B,MAAKqC,OAAOC;GAAW,GAAC,GAAKrB,OAAMsB,OAAQ;GAClE/B,KAACW,SAAD;GAAqC,IAAAvB,EAAA,QAAAL,MAAAK,EAAA,QAAAI,OAAA;IAC7BS,MAAA+B,WAAUxC,MAAK0B,eAAgBnC,IAAIiD,UAAAzC,KAAAA,CAAiB;IAACH,EAAA,MAAAL;IAAAK,EAAA,MAAAI;IAAAJ,EAAA,MAAAa;GAAA,OAAAA,KAAAb,EAAA;GAAA,IAAA4B;GAAA,IAAA5B,EAAA,QAAAgB,OAAAC,IAAA,2BAAA,GAAA;IAIlEW,MAAA,oBAAA,OAAA,OAAA,CAAA,CAAA;IAAgB5B,EAAA,MAAA4B;GAAA,OAAAA,MAAA5B,EAAA;GAAA,IAAA6C;GAAA,IAAA7C,EAAA,QAAAgB,OAAAC,IAAA,2BAAA,GAAA;IAChB4B,MAAA,oBAAA,QAAA;KAAgB,WAAA;KACd,UAAA,oBAAC,iBAAD,CAAgB,CAAA;IACX,CAAA;IAAA7C,EAAA,MAAA6C;GAAA,OAAAA,MAAA7C,EAAA;GALTc,KAAA,qBAAA,OAAA,SAAA;IAAsBlB;IAAiB8B,WAAAA;IAAsB,eAAAH,UAAUpB,KAAAA,IAAV,KAAAA,KAAAA;IAA7D,UAAA;KACE,oBAAA,QAAA;MAAgB,WAAA;MAAgCkB,UAAAA,OAAMU;KAAc,CAAA;KACpEH;KACAiB;IAGF;;GACCtC,KAAAjB,OAAMwD;GAAQ,IAAA9C,EAAA,QAAAI,MAAAqC,OAAAC,WAAA;IACbjC,KAAA,oBAAA,OAAA,MAAA;KAAoB,OAAA;KAAOL,UAAAA,MAAKqC,OAAOC;IAAW,CAAA;IAAc1C,EAAA,MAAAI,MAAAqC,OAAAC;IAAA1C,EAAA,MAAAS;GAAA,OAAAA,KAAAT,EAAA;GAC/DU,KAAAW,OAAMsB,QAAQI,IAAKC,KAInB;EAAC;EAAAhD,EAAA,KAAAH;EAAAG,EAAA,KAAAL;EAAAK,EAAA,KAAAJ;EAAAI,EAAA,KAAAI;EAAAJ,EAAA,KAAAO;EAAAP,EAAA,KAAAQ;EAAAR,EAAA,KAAAS;EAAAT,EAAA,KAAAU;EAAAV,EAAA,KAAAW;EAAAX,EAAA,KAAAY;EAAAZ,EAAA,MAAAa;EAAAb,EAAA,MAAAc;EAAAd,EAAA,MAAAe;CAAA,OAAA;EAAAR,KAAAP,EAAA;EAAAQ,KAAAR,EAAA;EAAAS,KAAAT,EAAA;EAAAU,KAAAV,EAAA;EAAAW,KAAAX,EAAA;EAAAY,KAAAZ,EAAA;EAAAa,KAAAb,EAAA;EAAAc,KAAAd,EAAA;EAAAe,KAAAf,EAAA;CAAA;CAAA,IAAAe,OAAAC,OAAAC,IAAA,6BAAA,GAAA,OAAAF;CAAA,IAAAI;CAAA,IAAAnB,EAAA,QAAAO,MAAAP,EAAA,QAAAS,MAAAT,EAAA,QAAAU,IAAA;EANJS,MAAA,qBAAC,IAAD,EAAA,UAAA,CACEV,IACCC,EAFY,EAAA,CAAA;EAOEV,EAAA,MAAAO;EAAAP,EAAA,MAAAS;EAAAT,EAAA,MAAAU;EAAAV,EAAA,MAAAmB;CAAA,OAAAA,MAAAnB,EAAA;CAAA,IAAAyB;CAAA,IAAAzB,EAAA,QAAAQ,MAAAR,EAAA,QAAAmB,OAAAnB,EAAA,QAAAW,MAAAX,EAAA,QAAAY,MAAAZ,EAAA,QAAAa,MAAAb,EAAA,QAAAc,IAAA;EAnBnBW,MAAA,qBAAC,IAAD;GACS,OAAAd;GACA,OAAAC;GACQ,eAAAC;GAHjB,UAAA,CAKEC,IAOAK,GAZU;;EAoBEnB,EAAA,MAAAQ;EAAAR,EAAA,MAAAmB;EAAAnB,EAAA,MAAAW;EAAAX,EAAA,MAAAY;EAAAZ,EAAA,MAAAa;EAAAb,EAAA,MAAAc;EAAAd,EAAA,MAAAyB;CAAA,OAAAA,MAAAzB,EAAA;CAAA,OApBdyB;AAoBc;AA7DX,SAAAuB,MAAAC,QAAA;CAAA,OAwDG,oBAAA,OAAA,MAAA;EAAuC,OAAAA,OAAM1B;EAC1C0B,UAAAA,OAAMlB;CACT,GAFkBkB,OAAM1B,KAExB;AAAc;;AAaxB,SAAO8B,iBAAAtD,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAqD;CAAA,IAAAzD;CAAA,IAAA0D;CAAA,IAAArD;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAA0B,CAAA,CAAAH,MAAAM,IAAAL,WAAAyD,UAAA,GAAAC,SAAAxD;EAAqEC,EAAA,KAAAD;EAAAC,EAAA,KAAAsD;EAAAtD,EAAA,KAAAH;EAAAG,EAAA,KAAAuD;EAAAvD,EAAA,KAAAE;CAAA,OAAA;EAAAoD,WAAAtD,EAAA;EAAAH,YAAAG,EAAA;EAAAuD,QAAAvD,EAAA;EAAAE,KAAAF,EAAA;CAAA;CAAnE,MAAAJ,OAAAM,OAAAC,KAAAA,IAAA,OAAAD;CACjC,MAAAE,QAAcZ,oBAAoB;CAClC,IAAI,CAACY,MAAKE,QAAQkD,UAAd,CAA0BF,UAAQ,OAAS;CAEf,MAAAjD,KAAAD,MAAKqC,OAAOnC;CAAQ,IAAAG;CAAA,IAAAT,EAAA,OAAAH,WAAA;EAAaY,KAAA1B,GAAG,2BAA2Bc,SAAS;EAACG,EAAA,KAAAH;EAAAG,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAA,IAAAU;CAAA,IAAAV,EAAA,OAAAJ,QAAAI,EAAA,OAAAI,MAAAE,SAAA;EAAA,IAAAK;EAAA,IAAAX,EAAA,QAAAJ,MAAA;GAClFe,MAAAU,WACjB,oBAAC,iBAAD;IAAqC,IAAAA,OAAM1B;IAAWC;GAAI,GAApCyB,OAAM1B,EAA8B;GAC3DK,EAAA,MAAAJ;GAAAI,EAAA,MAAAW;EAAA,OAAAA,KAAAX,EAAA;EAFAU,KAAAN,MAAKE,QAAQyC,IAAKpC,EAElB;EAACX,EAAA,KAAAJ;EAAAI,EAAA,KAAAI,MAAAE;EAAAN,EAAA,KAAAU;CAAA,OAAAA,KAAAV,EAAA;CAAA,IAAAW;CAAA,IAAAX,EAAA,QAAAI,MAAAqD,qBAAAzD,EAAA,QAAAI,MAAAsD,gBAAA1D,EAAA,QAAAI,MAAAqC,OAAAiB,cAAA;EAED/C,KAAAP,MAAKqD,oBAAqB,KACzB,qBAAC,QAAD;GAAa,MAAA;GAAa,SAAA;GAAc,OAAA;GAAmB,SAAArD,MAAKsD;GAAhE,UAAA,CACE,oBAAC,OAAD,CAAM,CAAA,GACLtD,MAAKqC,OAAOiB,YAFR;;EAIR1D,EAAA,MAAAI,MAAAqD;EAAAzD,EAAA,MAAAI,MAAAsD;EAAA1D,EAAA,MAAAI,MAAAqC,OAAAiB;EAAA1D,EAAA,MAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,QAAAsD,YAAAtD,EAAA,QAAAuD,SAAAvD,EAAA,QAAAS,MAAAT,EAAA,QAAAU,MAAAV,EAAA,QAAAW,MAAAX,EAAA,QAAAI,MAAAqC,OAAAnC,SAAA;EAVHM,KAAA,qBAAA,OAAA;GAAU,MAAA;GAAoB,cAAAP;GAAiC,WAAAI;GAAwC,GAAM8C;GAA7G,UAAA;IACG7C;IAGA4C;IACA3C;GAMG;;EAAAX,EAAA,MAAAsD;EAAAtD,EAAA,MAAAuD;EAAAvD,EAAA,MAAAS;EAAAT,EAAA,MAAAU;EAAAV,EAAA,MAAAW;EAAAX,EAAA,MAAAI,MAAAqC,OAAAnC;EAAAN,EAAA,MAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,OAXNY;AAWM"}
|
|
@@ -172,6 +172,7 @@ export type DataTableResolvedLabels = Omit<DataTableLabels, keyof PaginationLabe
|
|
|
172
172
|
export interface UseDataTableOptions<T> {
|
|
173
173
|
/** All rows, or in server mode the rows of the current page. */
|
|
174
174
|
data: T[];
|
|
175
|
+
/** Column definitions: id, header, cell renderer, sorting, filter and layout options. */
|
|
175
176
|
columns: DataTableColumn<T>[];
|
|
176
177
|
/**
|
|
177
178
|
* `server` renders `data` as it is: search, filtering, sorting and pagination are
|
|
@@ -192,8 +193,11 @@ export interface UseDataTableOptions<T> {
|
|
|
192
193
|
locale?: string;
|
|
193
194
|
/** Show the search box (default `true`). */
|
|
194
195
|
searchable?: boolean;
|
|
196
|
+
/** Search text (controlled). */
|
|
195
197
|
search?: string;
|
|
198
|
+
/** Initial search text when uncontrolled. */
|
|
196
199
|
defaultSearch?: string;
|
|
200
|
+
/** Called when the search text changes (after `searchDebounce`). */
|
|
197
201
|
onSearchChange?: (search: string) => void;
|
|
198
202
|
/** Milliseconds of typing pause before the search applies. Defaults to 300 in server mode, 0 otherwise. */
|
|
199
203
|
searchDebounce?: number;
|
|
@@ -201,24 +205,36 @@ export interface UseDataTableOptions<T> {
|
|
|
201
205
|
filter?: (row: T, search: string) => boolean;
|
|
202
206
|
/** Toolbar filters that are not tied to a column. Columns add theirs with `filter`. */
|
|
203
207
|
filters?: DataTableFilter<T>[];
|
|
208
|
+
/** Filter values by filter id (controlled). */
|
|
204
209
|
filterValues?: DataTableFilterValues;
|
|
210
|
+
/** Initial filter values when uncontrolled. */
|
|
205
211
|
defaultFilterValues?: DataTableFilterValues;
|
|
212
|
+
/** Called with all filter values when one changes or they are cleared. */
|
|
206
213
|
onFilterValuesChange?: (values: DataTableFilterValues) => void;
|
|
214
|
+
/** Column sort (controlled); `null` for none. */
|
|
207
215
|
sort?: DataTableSort | null;
|
|
216
|
+
/** Initial sort when uncontrolled. */
|
|
208
217
|
defaultSort?: DataTableSort | null;
|
|
218
|
+
/** Called when the user sorts a column. */
|
|
209
219
|
onSortChange?: (sort: DataTableSort | null) => void;
|
|
210
220
|
/** Paginate rows (default `true`). */
|
|
211
221
|
paginated?: boolean;
|
|
222
|
+
/** Current page, starting at 1 (controlled). */
|
|
212
223
|
page?: number;
|
|
224
|
+
/** Called when the page changes. */
|
|
213
225
|
onPageChange?: (page: number) => void;
|
|
226
|
+
/** Rows per page (controlled). */
|
|
214
227
|
pageSize?: number;
|
|
228
|
+
/** Initial rows per page when uncontrolled. */
|
|
215
229
|
defaultPageSize?: number;
|
|
230
|
+
/** Called when the rows per page change. */
|
|
216
231
|
onPageSizeChange?: (pageSize: number) => void;
|
|
217
232
|
/**
|
|
218
233
|
* Selected row ids. Passing `onSelectionChange` adds the checkbox column.
|
|
219
234
|
* Select-all covers every filtered row, or in server mode the current page.
|
|
220
235
|
*/
|
|
221
236
|
selection?: string[];
|
|
237
|
+
/** Called with the selected row ids. */
|
|
222
238
|
onSelectionChange?: (selection: string[]) => void;
|
|
223
239
|
/** Makes rows clickable and keyboard-activatable (Enter). */
|
|
224
240
|
onRowClick?: (row: T) => void;
|
|
@@ -12,6 +12,7 @@ export interface DateRangePreset {
|
|
|
12
12
|
export interface DateRangePickerProps extends PickerFieldProps, Pick<RangeCalendarProps, 'isDateDisabled' | 'defaultMonth' | 'locale' | 'weekStartsOn' | 'numberOfMonths'> {
|
|
13
13
|
/** Selected days as ISO dates; both ends are inclusive. */
|
|
14
14
|
value?: DateRange | null;
|
|
15
|
+
/** Initially selected range when uncontrolled. */
|
|
15
16
|
defaultValue?: DateRange | null;
|
|
16
17
|
/** Called with the new range, or `null` when cleared. */
|
|
17
18
|
onValueChange?: (value: DateRange | null) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker.js","names":["React","cx","Button","RangeCalendar","CalendarLabels","DateRange","RangeCalendarProps","clampDate","datePart","formatDate","toRange","PickerField","useOpenState","PickerFieldProps","DateRangePickerLabels","clear","presets","defaultLabels","Omit","DateRangePreset","label","ReactNode","value","DateRangePickerProps","Pick","defaultValue","onValueChange","min","max","startName","endName","clearable","formatValue","labels","Partial","formatDisplay","range","start","end","DateRangePicker","t0","$","_c","contentProps","defaultMonth","field","isDateDisabled","locale","t1","t2","t3","weekStartsOn","numberOfMonths","placeholder","undefined","t4","text","t5","inner","setInner","useState","t6","current","open","setOpen","T0","commit","lower","t10","t11","t12","t13","t14","t15","t7","t8","t9","upper","next","bounded","t16","className","t17","t18","t19","length","map","preset","index","active","Boolean","required","_c","_Fragment"],"sources":["../../../src/components/date-picker/DateRangePicker.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cx } from '../../utils/cx';\nimport { Button } from '../button/Button';\nimport { RangeCalendar, type CalendarLabels, type DateRange, type RangeCalendarProps } from '../calendar/Calendar';\nimport { clampDate, datePart, formatDate, toRange } from '../calendar/date-utils';\nimport { PickerField, useOpenState, type PickerFieldProps } from './PickerField';\n\nexport interface DateRangePickerLabels extends CalendarLabels {\n clear: string;\n presets: string;\n}\n\nconst defaultLabels: Omit<DateRangePickerLabels, keyof CalendarLabels> = {\n clear: 'Clear',\n presets: 'Presets',\n};\n\nexport interface DateRangePreset {\n label: React.ReactNode;\n value: DateRange;\n}\n\nexport interface DateRangePickerProps\n extends PickerFieldProps,\n Pick<RangeCalendarProps, 'isDateDisabled' | 'defaultMonth' | 'locale' | 'weekStartsOn' | 'numberOfMonths'> {\n /** Selected days as ISO dates; both ends are inclusive. */\n value?: DateRange | null;\n defaultValue?: DateRange | null;\n /** Called with the new range, or `null` when cleared. */\n onValueChange?: (value: DateRange | null) => void;\n /** Earliest allowed day. */\n min?: string;\n /** Latest allowed day. */\n max?: string;\n /** Shortcuts listed beside the calendar (\"Last 7 days\", \"This month\"…). */\n presets?: DateRangePreset[];\n /** Submits the first day with a form under this name. */\n startName?: string;\n /** Submits the last day with a form under this name. */\n endName?: string;\n /** Show the Clear action. Defaults to `true` unless `required`. */\n clearable?: boolean;\n /** Custom display text for the selected range. */\n formatValue?: (value: DateRange) => React.ReactNode;\n /** Override texts for localisation. */\n labels?: Partial<DateRangePickerLabels>;\n}\n\nfunction formatDisplay(range: DateRange): string {\n return `${formatDate(range.start)} – ${formatDate(range.end)}`;\n}\n\n/**\n * Date range field with a calendar popover and optional presets. Values are\n * `{ start, end }` ISO dates (`\"2026-03-09\"`), both inclusive.\n */\nexport function DateRangePicker({\n value,\n defaultValue = null,\n onValueChange,\n min,\n max,\n isDateDisabled,\n defaultMonth,\n locale,\n weekStartsOn,\n numberOfMonths = 2,\n presets,\n startName,\n endName,\n placeholder = 'Select dates',\n clearable,\n formatValue,\n labels,\n contentProps,\n ...field\n}: DateRangePickerProps) {\n const text = { ...defaultLabels, ...labels };\n const [inner, setInner] = React.useState(() => toRange(defaultValue?.start, defaultValue?.end));\n const current = value === undefined ? inner : toRange(value?.start, value?.end);\n const [open, setOpen] = useOpenState(field);\n const [lower, upper] = [datePart(min) ?? undefined, datePart(max) ?? undefined];\n\n const commit = (next: DateRange | null) => {\n const bounded = next && toRange(clampDate(next.start, lower, upper), clampDate(next.end, lower, upper));\n setInner(bounded);\n onValueChange?.(bounded);\n setOpen(false);\n };\n\n return (\n <PickerField\n {...field}\n open={open}\n onOpenChange={setOpen}\n placeholder={placeholder}\n display={current ? (formatValue?.(current) ?? formatDisplay(current)) : null}\n contentProps={{\n ...contentProps,\n className: cx('oui-date-range-picker__popup', typeof contentProps?.className === 'string' && contentProps.className),\n }}\n inputs={\n <>\n {startName && <input type=\"hidden\" name={startName} value={current?.start ?? ''} />}\n {endName && <input type=\"hidden\" name={endName} value={current?.end ?? ''} />}\n </>\n }\n >\n <div className=\"oui-date-range-picker__body\">\n {presets && presets.length > 0 && (\n <div role=\"group\" aria-label={text.presets} className=\"oui-date-range-picker__presets\">\n {presets.map((preset, index) => {\n const range = toRange(preset.value.start, preset.value.end);\n const active = Boolean(range && current && range.start === current.start && range.end === current.end);\n return (\n <button\n key={index}\n type=\"button\"\n className=\"oui-date-range-picker__preset\"\n aria-pressed={active}\n data-active={active ? '' : undefined}\n disabled={!range}\n onClick={() => commit(range)}\n >\n {preset.label}\n </button>\n );\n })}\n </div>\n )}\n <RangeCalendar\n value={current}\n onValueChange={commit}\n min={lower}\n max={upper}\n isDateDisabled={isDateDisabled}\n defaultMonth={defaultMonth}\n locale={locale}\n weekStartsOn={weekStartsOn}\n numberOfMonths={numberOfMonths}\n labels={labels}\n />\n </div>\n {(clearable ?? !field.required) && (\n <div className=\"oui-date-picker__footer\">\n <Button size=\"sm\" variant=\"ghost\" shape=\"rounded\" disabled={!current} onClick={() => commit(null)}>\n {text.clear}\n </Button>\n </div>\n )}\n </PickerField>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DateRangePicker.js","names":["React","cx","Button","RangeCalendar","CalendarLabels","DateRange","RangeCalendarProps","clampDate","datePart","formatDate","toRange","PickerField","useOpenState","PickerFieldProps","DateRangePickerLabels","clear","presets","defaultLabels","Omit","DateRangePreset","label","ReactNode","value","DateRangePickerProps","Pick","defaultValue","onValueChange","min","max","startName","endName","clearable","formatValue","labels","Partial","formatDisplay","range","start","end","DateRangePicker","t0","$","_c","contentProps","defaultMonth","field","isDateDisabled","locale","t1","t2","t3","weekStartsOn","numberOfMonths","placeholder","undefined","t4","text","t5","inner","setInner","useState","t6","current","open","setOpen","T0","commit","lower","t10","t11","t12","t13","t14","t15","t7","t8","t9","upper","next","bounded","t16","className","t17","t18","t19","length","map","preset","index","active","Boolean","required","_c","_Fragment"],"sources":["../../../src/components/date-picker/DateRangePicker.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cx } from '../../utils/cx';\nimport { Button } from '../button/Button';\nimport { RangeCalendar, type CalendarLabels, type DateRange, type RangeCalendarProps } from '../calendar/Calendar';\nimport { clampDate, datePart, formatDate, toRange } from '../calendar/date-utils';\nimport { PickerField, useOpenState, type PickerFieldProps } from './PickerField';\n\nexport interface DateRangePickerLabels extends CalendarLabels {\n clear: string;\n presets: string;\n}\n\nconst defaultLabels: Omit<DateRangePickerLabels, keyof CalendarLabels> = {\n clear: 'Clear',\n presets: 'Presets',\n};\n\nexport interface DateRangePreset {\n label: React.ReactNode;\n value: DateRange;\n}\n\nexport interface DateRangePickerProps\n extends PickerFieldProps,\n Pick<RangeCalendarProps, 'isDateDisabled' | 'defaultMonth' | 'locale' | 'weekStartsOn' | 'numberOfMonths'> {\n /** Selected days as ISO dates; both ends are inclusive. */\n value?: DateRange | null;\n /** Initially selected range when uncontrolled. */\n defaultValue?: DateRange | null;\n /** Called with the new range, or `null` when cleared. */\n onValueChange?: (value: DateRange | null) => void;\n /** Earliest allowed day. */\n min?: string;\n /** Latest allowed day. */\n max?: string;\n /** Shortcuts listed beside the calendar (\"Last 7 days\", \"This month\"…). */\n presets?: DateRangePreset[];\n /** Submits the first day with a form under this name. */\n startName?: string;\n /** Submits the last day with a form under this name. */\n endName?: string;\n /** Show the Clear action. Defaults to `true` unless `required`. */\n clearable?: boolean;\n /** Custom display text for the selected range. */\n formatValue?: (value: DateRange) => React.ReactNode;\n /** Override texts for localisation. */\n labels?: Partial<DateRangePickerLabels>;\n}\n\nfunction formatDisplay(range: DateRange): string {\n return `${formatDate(range.start)} – ${formatDate(range.end)}`;\n}\n\n/**\n * Date range field with a calendar popover and optional presets. Values are\n * `{ start, end }` ISO dates (`\"2026-03-09\"`), both inclusive.\n */\nexport function DateRangePicker({\n value,\n defaultValue = null,\n onValueChange,\n min,\n max,\n isDateDisabled,\n defaultMonth,\n locale,\n weekStartsOn,\n numberOfMonths = 2,\n presets,\n startName,\n endName,\n placeholder = 'Select dates',\n clearable,\n formatValue,\n labels,\n contentProps,\n ...field\n}: DateRangePickerProps) {\n const text = { ...defaultLabels, ...labels };\n const [inner, setInner] = React.useState(() => toRange(defaultValue?.start, defaultValue?.end));\n const current = value === undefined ? inner : toRange(value?.start, value?.end);\n const [open, setOpen] = useOpenState(field);\n const [lower, upper] = [datePart(min) ?? undefined, datePart(max) ?? undefined];\n\n const commit = (next: DateRange | null) => {\n const bounded = next && toRange(clampDate(next.start, lower, upper), clampDate(next.end, lower, upper));\n setInner(bounded);\n onValueChange?.(bounded);\n setOpen(false);\n };\n\n return (\n <PickerField\n {...field}\n open={open}\n onOpenChange={setOpen}\n placeholder={placeholder}\n display={current ? (formatValue?.(current) ?? formatDisplay(current)) : null}\n contentProps={{\n ...contentProps,\n className: cx('oui-date-range-picker__popup', typeof contentProps?.className === 'string' && contentProps.className),\n }}\n inputs={\n <>\n {startName && <input type=\"hidden\" name={startName} value={current?.start ?? ''} />}\n {endName && <input type=\"hidden\" name={endName} value={current?.end ?? ''} />}\n </>\n }\n >\n <div className=\"oui-date-range-picker__body\">\n {presets && presets.length > 0 && (\n <div role=\"group\" aria-label={text.presets} className=\"oui-date-range-picker__presets\">\n {presets.map((preset, index) => {\n const range = toRange(preset.value.start, preset.value.end);\n const active = Boolean(range && current && range.start === current.start && range.end === current.end);\n return (\n <button\n key={index}\n type=\"button\"\n className=\"oui-date-range-picker__preset\"\n aria-pressed={active}\n data-active={active ? '' : undefined}\n disabled={!range}\n onClick={() => commit(range)}\n >\n {preset.label}\n </button>\n );\n })}\n </div>\n )}\n <RangeCalendar\n value={current}\n onValueChange={commit}\n min={lower}\n max={upper}\n isDateDisabled={isDateDisabled}\n defaultMonth={defaultMonth}\n locale={locale}\n weekStartsOn={weekStartsOn}\n numberOfMonths={numberOfMonths}\n labels={labels}\n />\n </div>\n {(clearable ?? !field.required) && (\n <div className=\"oui-date-picker__footer\">\n <Button size=\"sm\" variant=\"ghost\" shape=\"rounded\" disabled={!current} onClick={() => commit(null)}>\n {text.clear}\n </Button>\n </div>\n )}\n </PickerField>\n );\n}\n"],"mappings":"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"}
|
|
@@ -4,22 +4,35 @@ import { type PopoverContentProps } from '../popover/Popover';
|
|
|
4
4
|
import type { ControlSize } from '../input/Input';
|
|
5
5
|
/** Field props shared by the date pickers. */
|
|
6
6
|
export interface PickerFieldProps {
|
|
7
|
+
/** Ref to the trigger button. */
|
|
7
8
|
ref?: React.Ref<HTMLButtonElement>;
|
|
9
|
+
/** Visible field label. */
|
|
8
10
|
label?: React.ReactNode;
|
|
11
|
+
/** Help text under the field. */
|
|
9
12
|
description?: React.ReactNode;
|
|
10
13
|
/** Error message. When set, the field is marked invalid. */
|
|
11
14
|
error?: React.ReactNode;
|
|
15
|
+
/** Marks the field required and adds the required indicator to the label. */
|
|
12
16
|
required?: boolean;
|
|
17
|
+
/** Disables the field. */
|
|
13
18
|
disabled?: boolean;
|
|
19
|
+
/** Text shown while no date is selected. */
|
|
14
20
|
placeholder?: React.ReactNode;
|
|
21
|
+
/** Control height. */
|
|
15
22
|
size?: ControlSize;
|
|
23
|
+
/** Whether the calendar popover is open (controlled). */
|
|
16
24
|
open?: boolean;
|
|
25
|
+
/** Initial popover state when uncontrolled. */
|
|
17
26
|
defaultOpen?: boolean;
|
|
27
|
+
/** Called when the popover opens or closes. */
|
|
18
28
|
onOpenChange?: (open: boolean) => void;
|
|
29
|
+
/** Id of the trigger button. Generated when omitted. */
|
|
19
30
|
id?: string;
|
|
31
|
+
/** Class name for the trigger button. */
|
|
20
32
|
className?: string;
|
|
21
33
|
/** Props for the trigger button (aria-*, data-*, onBlur…). */
|
|
22
34
|
triggerProps?: Omit<React.ComponentProps<typeof BasePopover.Trigger>, 'children' | 'disabled' | 'id'>;
|
|
35
|
+
/** Props for the popover content. */
|
|
23
36
|
contentProps?: Omit<PopoverContentProps, 'children'>;
|
|
24
37
|
}
|
|
25
38
|
export declare function useOpenState({ open, defaultOpen, onOpenChange }: PickerFieldProps): readonly [boolean, (next: boolean) => void];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PickerField.js","names":["React","Popover","BasePopover","cx","CalendarIcon","PopoverContentProps","ControlSize","PickerFieldProps","ref","Ref","HTMLButtonElement","label","ReactNode","description","error","required","disabled","placeholder","size","open","defaultOpen","onOpenChange","id","className","triggerProps","Omit","ComponentProps","Trigger","contentProps","useOpenState","t0","$","_c","t1","undefined","inner","setInner","useState","t2","next","setOpen","t3","t4","const","PickerFieldShellProps","display","children","inputs","PickerField","idProp","generatedId","useId","popupRef","useRef","errorId","describedBy","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","Symbol","for","t19","t20","current","querySelector","t21","t22","t23","t24","t25","t26","t27","_c","BasePopover","Popover"],"sources":["../../../src/components/date-picker/PickerField.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Popover as BasePopover } from '@base-ui/react/popover';\nimport { cx } from '../../utils/cx';\nimport { CalendarIcon } from '../../icons';\nimport { Popover, type PopoverContentProps } from '../popover/Popover';\nimport type { ControlSize } from '../input/Input';\n\n/** Field props shared by the date pickers. */\nexport interface PickerFieldProps {\n ref?: React.Ref<HTMLButtonElement>;\n label?: React.ReactNode;\n description?: React.ReactNode;\n /** Error message. When set, the field is marked invalid. */\n error?: React.ReactNode;\n required?: boolean;\n disabled?: boolean;\n placeholder?: React.ReactNode;\n size?: ControlSize;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n id?: string;\n className?: string;\n /** Props for the trigger button (aria-*, data-*, onBlur…). */\n triggerProps?: Omit<React.ComponentProps<typeof BasePopover.Trigger>, 'children' | 'disabled' | 'id'>;\n contentProps?: Omit<PopoverContentProps, 'children'>;\n}\n\nexport function useOpenState({ open, defaultOpen = false, onOpenChange }: PickerFieldProps) {\n const [inner, setInner] = React.useState(defaultOpen);\n const setOpen = (next: boolean) => {\n setInner(next);\n onOpenChange?.(next);\n };\n return [open ?? inner, setOpen] as const;\n}\n\ninterface PickerFieldShellProps extends Omit<PickerFieldProps, 'open' | 'defaultOpen' | 'onOpenChange'> {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n /** Text for the current value; `null` shows the placeholder. */\n display: React.ReactNode | null;\n /** Popover content. */\n children: React.ReactNode;\n /** Hidden inputs that submit the value with a form. */\n inputs?: React.ReactNode;\n}\n\n/** Label, trigger button, calendar popover, description and error of a date picker. */\nexport function PickerField({\n label,\n description,\n error,\n required,\n disabled,\n placeholder,\n size = 'md',\n open,\n onOpenChange,\n id: idProp,\n className,\n triggerProps,\n contentProps,\n display,\n children,\n inputs,\n ref,\n}: PickerFieldShellProps) {\n const generatedId = React.useId();\n const id = idProp ?? generatedId;\n const popupRef = React.useRef<HTMLDivElement>(null);\n const errorId = error ? `${id}-error` : undefined;\n const describedBy = cx(description != null && `${id}-description`, errorId) || undefined;\n\n return (\n <div\n className={cx('oui-field', 'oui-date-picker', className)}\n data-disabled={disabled || undefined}\n data-invalid={error ? '' : undefined}\n >\n {label != null && (\n <label id={`${id}-label`} htmlFor={id} className=\"oui-field__label\">\n {label}\n {required && (\n <span className=\"oui-field__required\" aria-hidden>\n *\n </span>\n )}\n </label>\n )}\n <Popover.Root open={open} onOpenChange={(next) => onOpenChange(next)}>\n <BasePopover.Trigger\n ref={ref}\n id={id}\n disabled={disabled}\n aria-labelledby={label != null ? `${id}-label ${id}-value` : undefined}\n aria-describedby={describedBy}\n aria-required={required || undefined}\n aria-invalid={error ? true : undefined}\n {...triggerProps}\n className={cx('oui-date-picker__trigger', typeof triggerProps?.className === 'string' && triggerProps.className)}\n data-size={size}\n data-invalid={error ? '' : undefined}\n data-placeholder={display == null ? '' : undefined}\n >\n <span id={`${id}-value`} className=\"oui-date-picker__value\">\n {display ?? placeholder}\n </span>\n <CalendarIcon />\n </BasePopover.Trigger>\n <Popover.Content\n ref={popupRef}\n align=\"start\"\n sideOffset={6}\n initialFocus={() => popupRef.current?.querySelector<HTMLElement>('.oui-calendar__day[tabindex=\"0\"]') ?? true}\n {...contentProps}\n className={cx('oui-date-picker__popup', typeof contentProps?.className === 'string' && contentProps.className)}\n >\n {children}\n </Popover.Content>\n </Popover.Root>\n {inputs}\n {description != null && (\n <p id={`${id}-description`} className=\"oui-field__description\">\n {description}\n </p>\n )}\n {error && (\n <div id={`${id}-error`} className=\"oui-field__error\">\n {error}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PickerField.js","names":["React","Popover","BasePopover","cx","CalendarIcon","PopoverContentProps","ControlSize","PickerFieldProps","ref","Ref","HTMLButtonElement","label","ReactNode","description","error","required","disabled","placeholder","size","open","defaultOpen","onOpenChange","id","className","triggerProps","Omit","ComponentProps","Trigger","contentProps","useOpenState","t0","$","_c","t1","undefined","inner","setInner","useState","t2","next","setOpen","t3","t4","const","PickerFieldShellProps","display","children","inputs","PickerField","idProp","generatedId","useId","popupRef","useRef","errorId","describedBy","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","Symbol","for","t19","t20","current","querySelector","t21","t22","t23","t24","t25","t26","t27","_c","BasePopover","Popover"],"sources":["../../../src/components/date-picker/PickerField.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Popover as BasePopover } from '@base-ui/react/popover';\nimport { cx } from '../../utils/cx';\nimport { CalendarIcon } from '../../icons';\nimport { Popover, type PopoverContentProps } from '../popover/Popover';\nimport type { ControlSize } from '../input/Input';\n\n/** Field props shared by the date pickers. */\nexport interface PickerFieldProps {\n /** Ref to the trigger button. */\n ref?: React.Ref<HTMLButtonElement>;\n /** Visible field label. */\n label?: React.ReactNode;\n /** Help text under the field. */\n description?: React.ReactNode;\n /** Error message. When set, the field is marked invalid. */\n error?: React.ReactNode;\n /** Marks the field required and adds the required indicator to the label. */\n required?: boolean;\n /** Disables the field. */\n disabled?: boolean;\n /** Text shown while no date is selected. */\n placeholder?: React.ReactNode;\n /** Control height. */\n size?: ControlSize;\n /** Whether the calendar popover is open (controlled). */\n open?: boolean;\n /** Initial popover state when uncontrolled. */\n defaultOpen?: boolean;\n /** Called when the popover opens or closes. */\n onOpenChange?: (open: boolean) => void;\n /** Id of the trigger button. Generated when omitted. */\n id?: string;\n /** Class name for the trigger button. */\n className?: string;\n /** Props for the trigger button (aria-*, data-*, onBlur…). */\n triggerProps?: Omit<React.ComponentProps<typeof BasePopover.Trigger>, 'children' | 'disabled' | 'id'>;\n /** Props for the popover content. */\n contentProps?: Omit<PopoverContentProps, 'children'>;\n}\n\nexport function useOpenState({ open, defaultOpen = false, onOpenChange }: PickerFieldProps) {\n const [inner, setInner] = React.useState(defaultOpen);\n const setOpen = (next: boolean) => {\n setInner(next);\n onOpenChange?.(next);\n };\n return [open ?? inner, setOpen] as const;\n}\n\ninterface PickerFieldShellProps extends Omit<PickerFieldProps, 'open' | 'defaultOpen' | 'onOpenChange'> {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n /** Text for the current value; `null` shows the placeholder. */\n display: React.ReactNode | null;\n /** Popover content. */\n children: React.ReactNode;\n /** Hidden inputs that submit the value with a form. */\n inputs?: React.ReactNode;\n}\n\n/** Label, trigger button, calendar popover, description and error of a date picker. */\nexport function PickerField({\n label,\n description,\n error,\n required,\n disabled,\n placeholder,\n size = 'md',\n open,\n onOpenChange,\n id: idProp,\n className,\n triggerProps,\n contentProps,\n display,\n children,\n inputs,\n ref,\n}: PickerFieldShellProps) {\n const generatedId = React.useId();\n const id = idProp ?? generatedId;\n const popupRef = React.useRef<HTMLDivElement>(null);\n const errorId = error ? `${id}-error` : undefined;\n const describedBy = cx(description != null && `${id}-description`, errorId) || undefined;\n\n return (\n <div\n className={cx('oui-field', 'oui-date-picker', className)}\n data-disabled={disabled || undefined}\n data-invalid={error ? '' : undefined}\n >\n {label != null && (\n <label id={`${id}-label`} htmlFor={id} className=\"oui-field__label\">\n {label}\n {required && (\n <span className=\"oui-field__required\" aria-hidden>\n *\n </span>\n )}\n </label>\n )}\n <Popover.Root open={open} onOpenChange={(next) => onOpenChange(next)}>\n <BasePopover.Trigger\n ref={ref}\n id={id}\n disabled={disabled}\n aria-labelledby={label != null ? `${id}-label ${id}-value` : undefined}\n aria-describedby={describedBy}\n aria-required={required || undefined}\n aria-invalid={error ? true : undefined}\n {...triggerProps}\n className={cx('oui-date-picker__trigger', typeof triggerProps?.className === 'string' && triggerProps.className)}\n data-size={size}\n data-invalid={error ? '' : undefined}\n data-placeholder={display == null ? '' : undefined}\n >\n <span id={`${id}-value`} className=\"oui-date-picker__value\">\n {display ?? placeholder}\n </span>\n <CalendarIcon />\n </BasePopover.Trigger>\n <Popover.Content\n ref={popupRef}\n align=\"start\"\n sideOffset={6}\n initialFocus={() => popupRef.current?.querySelector<HTMLElement>('.oui-calendar__day[tabindex=\"0\"]') ?? true}\n {...contentProps}\n className={cx('oui-date-picker__popup', typeof contentProps?.className === 'string' && contentProps.className)}\n >\n {children}\n </Popover.Content>\n </Popover.Root>\n {inputs}\n {description != null && (\n <p id={`${id}-description`} className=\"oui-field__description\">\n {description}\n </p>\n )}\n {error && (\n <div id={`${id}-error`} className=\"oui-field__error\">\n {error}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -4,11 +4,15 @@ export type DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
|
|
|
4
4
|
/** `center` is a modal; the edges turn the dialog into a sheet / drawer. */
|
|
5
5
|
export type DialogPlacement = 'center' | 'right' | 'left' | 'bottom';
|
|
6
6
|
export interface DialogContentProps extends BaseDialog.Popup.Props {
|
|
7
|
+
/** Width of a centered dialog, or of a sheet. */
|
|
7
8
|
size?: DialogSize;
|
|
9
|
+
/** `center` modal, or a sheet docked to an edge. */
|
|
8
10
|
placement?: DialogPlacement;
|
|
9
11
|
/** Render the corner close button. */
|
|
10
12
|
showClose?: boolean;
|
|
13
|
+
/** Accessible name of the close button. */
|
|
11
14
|
closeLabel?: string;
|
|
15
|
+
/** Props for the backdrop behind the dialog. */
|
|
12
16
|
backdropProps?: BaseDialog.Backdrop.Props;
|
|
13
17
|
}
|
|
14
18
|
declare function DialogContent({ size, placement, showClose, closeLabel, backdropProps, className, children, ref, ...props }: DialogContentProps): import("react").JSX.Element;
|
|
@@ -41,6 +45,7 @@ export declare const Dialog: {
|
|
|
41
45
|
createHandle: typeof BaseDialog.createHandle;
|
|
42
46
|
};
|
|
43
47
|
export interface AlertDialogContentProps extends BaseAlertDialog.Popup.Props {
|
|
48
|
+
/** Dialog width. */
|
|
44
49
|
size?: Exclude<DialogSize, 'full'>;
|
|
45
50
|
}
|
|
46
51
|
declare function AlertDialogContent({ size, className, ref, ...props }: AlertDialogContentProps): import("react").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.js","names":["Dialog","BaseDialog","AlertDialog","BaseAlertDialog","withClass","createPrimitive","usePortalContainer","XIcon","DialogSize","DialogPlacement","DialogContentProps","Popup","Props","size","placement","showClose","closeLabel","backdropProps","Backdrop","DialogContent","t0","$","_c","children","className","props","ref","t1","t2","t3","t4","undefined","container","t5","t6","t7","t8","t9","t10","t11","DialogTitle","DialogDescription","DialogHeader","DialogBody","DialogFooter","Root","Trigger","Content","Header","Title","Description","Body","Footer","Close","createHandle","AlertDialogContentProps","Exclude","AlertDialogContent","Symbol","for","AlertDialogTitle","AlertDialogDescription","_c","BaseDialog","Dialog","BaseAlertDialog","AlertDialog"],"sources":["../../../src/components/dialog/Dialog.tsx"],"sourcesContent":["import { Dialog as BaseDialog } from '@base-ui/react/dialog';\nimport { AlertDialog as BaseAlertDialog } from '@base-ui/react/alert-dialog';\nimport { withClass } from '../../utils/cx';\nimport { createPrimitive } from '../../utils/primitive';\nimport { usePortalContainer } from '../../utils/portal';\nimport { XIcon } from '../../icons';\n\nexport type DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n/** `center` is a modal; the edges turn the dialog into a sheet / drawer. */\nexport type DialogPlacement = 'center' | 'right' | 'left' | 'bottom';\n\nexport interface DialogContentProps extends BaseDialog.Popup.Props {\n size?: DialogSize;\n placement?: DialogPlacement;\n /** Render the corner close button. */\n showClose?: boolean;\n closeLabel?: string;\n backdropProps?: BaseDialog.Backdrop.Props;\n}\n\nfunction DialogContent({\n size = 'md',\n placement = 'center',\n showClose = true,\n closeLabel = 'Close',\n backdropProps,\n className,\n children,\n ref,\n ...props\n}: DialogContentProps) {\n const container = usePortalContainer();\n return (\n <BaseDialog.Portal container={container}>\n <BaseDialog.Backdrop {...backdropProps} className={withClass('oui-dialog__backdrop', backdropProps?.className)} />\n <BaseDialog.Popup\n ref={ref}\n className={withClass('oui-dialog', className)}\n data-size={size}\n data-placement={placement}\n {...props}\n >\n {children}\n {showClose && (\n <BaseDialog.Close className=\"oui-dialog__close\" aria-label={closeLabel}>\n <XIcon />\n </BaseDialog.Close>\n )}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n );\n}\n\nfunction DialogTitle({ className, ref, ...props }: BaseDialog.Title.Props) {\n return <BaseDialog.Title ref={ref} className={withClass('oui-dialog__title', className)} {...props} />;\n}\n\nfunction DialogDescription({ className, ref, ...props }: BaseDialog.Description.Props) {\n return <BaseDialog.Description ref={ref} className={withClass('oui-dialog__description', className)} {...props} />;\n}\n\nconst DialogHeader = createPrimitive('div', 'oui-dialog__header', 'DialogHeader');\nconst DialogBody = createPrimitive('div', 'oui-dialog__body', 'DialogBody');\nconst DialogFooter = createPrimitive('div', 'oui-dialog__footer', 'DialogFooter');\n\n/**\n * Modal dialog and side sheet. Compose:\n * `Dialog.Root` › `Dialog.Trigger` + `Dialog.Content` › `Dialog.Header` (`Title`, `Description`), `Dialog.Body`, `Dialog.Footer`.\n * Use `render={<Button />}` on `Dialog.Trigger` / `Dialog.Close` to style them as buttons.\n */\nexport const Dialog = {\n Root: BaseDialog.Root,\n Trigger: BaseDialog.Trigger,\n Content: DialogContent,\n Header: DialogHeader,\n Title: DialogTitle,\n Description: DialogDescription,\n Body: DialogBody,\n Footer: DialogFooter,\n Close: BaseDialog.Close,\n createHandle: BaseDialog.createHandle,\n};\n\n// ─── Alert dialog ────────────────────────────────────────────────────────────\n\nexport interface AlertDialogContentProps extends BaseAlertDialog.Popup.Props {\n size?: Exclude<DialogSize, 'full'>;\n}\n\nfunction AlertDialogContent({ size = 'sm', className, ref, ...props }: AlertDialogContentProps) {\n const container = usePortalContainer();\n return (\n <BaseAlertDialog.Portal container={container}>\n <BaseAlertDialog.Backdrop className=\"oui-dialog__backdrop\" />\n <BaseAlertDialog.Popup\n ref={ref}\n className={withClass('oui-dialog', className)}\n data-size={size}\n data-placement=\"center\"\n {...props}\n />\n </BaseAlertDialog.Portal>\n );\n}\n\nfunction AlertDialogTitle({ className, ref, ...props }: BaseAlertDialog.Title.Props) {\n return <BaseAlertDialog.Title ref={ref} className={withClass('oui-dialog__title', className)} {...props} />;\n}\n\nfunction AlertDialogDescription({ className, ref, ...props }: BaseAlertDialog.Description.Props) {\n return (\n <BaseAlertDialog.Description ref={ref} className={withClass('oui-dialog__description', className)} {...props} />\n );\n}\n\n/** Confirmation dialog that requires an explicit choice (no outside-click dismissal). */\nexport const AlertDialog = {\n Root: BaseAlertDialog.Root,\n Trigger: BaseAlertDialog.Trigger,\n Content: AlertDialogContent,\n Header: DialogHeader,\n Title: AlertDialogTitle,\n Description: AlertDialogDescription,\n Body: DialogBody,\n Footer: DialogFooter,\n Close: BaseAlertDialog.Close,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Dialog.js","names":["Dialog","BaseDialog","AlertDialog","BaseAlertDialog","withClass","createPrimitive","usePortalContainer","XIcon","DialogSize","DialogPlacement","DialogContentProps","Popup","Props","size","placement","showClose","closeLabel","backdropProps","Backdrop","DialogContent","t0","$","_c","children","className","props","ref","t1","t2","t3","t4","undefined","container","t5","t6","t7","t8","t9","t10","t11","DialogTitle","DialogDescription","DialogHeader","DialogBody","DialogFooter","Root","Trigger","Content","Header","Title","Description","Body","Footer","Close","createHandle","AlertDialogContentProps","Exclude","AlertDialogContent","Symbol","for","AlertDialogTitle","AlertDialogDescription","_c","BaseDialog","Dialog","BaseAlertDialog","AlertDialog"],"sources":["../../../src/components/dialog/Dialog.tsx"],"sourcesContent":["import { Dialog as BaseDialog } from '@base-ui/react/dialog';\nimport { AlertDialog as BaseAlertDialog } from '@base-ui/react/alert-dialog';\nimport { withClass } from '../../utils/cx';\nimport { createPrimitive } from '../../utils/primitive';\nimport { usePortalContainer } from '../../utils/portal';\nimport { XIcon } from '../../icons';\n\nexport type DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n/** `center` is a modal; the edges turn the dialog into a sheet / drawer. */\nexport type DialogPlacement = 'center' | 'right' | 'left' | 'bottom';\n\nexport interface DialogContentProps extends BaseDialog.Popup.Props {\n /** Width of a centered dialog, or of a sheet. */\n size?: DialogSize;\n /** `center` modal, or a sheet docked to an edge. */\n placement?: DialogPlacement;\n /** Render the corner close button. */\n showClose?: boolean;\n /** Accessible name of the close button. */\n closeLabel?: string;\n /** Props for the backdrop behind the dialog. */\n backdropProps?: BaseDialog.Backdrop.Props;\n}\n\nfunction DialogContent({\n size = 'md',\n placement = 'center',\n showClose = true,\n closeLabel = 'Close',\n backdropProps,\n className,\n children,\n ref,\n ...props\n}: DialogContentProps) {\n const container = usePortalContainer();\n return (\n <BaseDialog.Portal container={container}>\n <BaseDialog.Backdrop {...backdropProps} className={withClass('oui-dialog__backdrop', backdropProps?.className)} />\n <BaseDialog.Popup\n ref={ref}\n className={withClass('oui-dialog', className)}\n data-size={size}\n data-placement={placement}\n {...props}\n >\n {children}\n {showClose && (\n <BaseDialog.Close className=\"oui-dialog__close\" aria-label={closeLabel}>\n <XIcon />\n </BaseDialog.Close>\n )}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n );\n}\n\nfunction DialogTitle({ className, ref, ...props }: BaseDialog.Title.Props) {\n return <BaseDialog.Title ref={ref} className={withClass('oui-dialog__title', className)} {...props} />;\n}\n\nfunction DialogDescription({ className, ref, ...props }: BaseDialog.Description.Props) {\n return <BaseDialog.Description ref={ref} className={withClass('oui-dialog__description', className)} {...props} />;\n}\n\nconst DialogHeader = createPrimitive('div', 'oui-dialog__header', 'DialogHeader');\nconst DialogBody = createPrimitive('div', 'oui-dialog__body', 'DialogBody');\nconst DialogFooter = createPrimitive('div', 'oui-dialog__footer', 'DialogFooter');\n\n/**\n * Modal dialog and side sheet. Compose:\n * `Dialog.Root` › `Dialog.Trigger` + `Dialog.Content` › `Dialog.Header` (`Title`, `Description`), `Dialog.Body`, `Dialog.Footer`.\n * Use `render={<Button />}` on `Dialog.Trigger` / `Dialog.Close` to style them as buttons.\n */\nexport const Dialog = {\n Root: BaseDialog.Root,\n Trigger: BaseDialog.Trigger,\n Content: DialogContent,\n Header: DialogHeader,\n Title: DialogTitle,\n Description: DialogDescription,\n Body: DialogBody,\n Footer: DialogFooter,\n Close: BaseDialog.Close,\n createHandle: BaseDialog.createHandle,\n};\n\n// ─── Alert dialog ────────────────────────────────────────────────────────────\n\nexport interface AlertDialogContentProps extends BaseAlertDialog.Popup.Props {\n /** Dialog width. */\n size?: Exclude<DialogSize, 'full'>;\n}\n\nfunction AlertDialogContent({ size = 'sm', className, ref, ...props }: AlertDialogContentProps) {\n const container = usePortalContainer();\n return (\n <BaseAlertDialog.Portal container={container}>\n <BaseAlertDialog.Backdrop className=\"oui-dialog__backdrop\" />\n <BaseAlertDialog.Popup\n ref={ref}\n className={withClass('oui-dialog', className)}\n data-size={size}\n data-placement=\"center\"\n {...props}\n />\n </BaseAlertDialog.Portal>\n );\n}\n\nfunction AlertDialogTitle({ className, ref, ...props }: BaseAlertDialog.Title.Props) {\n return <BaseAlertDialog.Title ref={ref} className={withClass('oui-dialog__title', className)} {...props} />;\n}\n\nfunction AlertDialogDescription({ className, ref, ...props }: BaseAlertDialog.Description.Props) {\n return (\n <BaseAlertDialog.Description ref={ref} className={withClass('oui-dialog__description', className)} {...props} />\n );\n}\n\n/** Confirmation dialog that requires an explicit choice (no outside-click dismissal). */\nexport const AlertDialog = {\n Root: BaseAlertDialog.Root,\n Trigger: BaseAlertDialog.Trigger,\n Content: AlertDialogContent,\n Header: DialogHeader,\n Title: AlertDialogTitle,\n Description: AlertDialogDescription,\n Body: DialogBody,\n Footer: DialogFooter,\n Close: BaseAlertDialog.Close,\n};\n"],"mappings":"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"}
|
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
export type DrawerSize = 'sm' | 'md' | 'lg' | 'xl';
|
|
3
3
|
export interface DrawerProps {
|
|
4
|
+
/** Ref to the drawer panel. */
|
|
4
5
|
ref?: React.Ref<HTMLDivElement>;
|
|
6
|
+
/** Whether the drawer is open (controlled). */
|
|
5
7
|
open?: boolean;
|
|
8
|
+
/** Initial state when uncontrolled. */
|
|
6
9
|
defaultOpen?: boolean;
|
|
10
|
+
/** Called when the drawer opens or closes. */
|
|
7
11
|
onOpenChange?: (open: boolean) => void;
|
|
8
12
|
/** Element that opens the drawer, e.g. `<Button>Details</Button>`. Omit when `open` is controlled. */
|
|
9
13
|
trigger?: React.ReactElement;
|
|
14
|
+
/** Header title; also the drawer's accessible name. */
|
|
10
15
|
title: React.ReactNode;
|
|
11
16
|
/** Small label above the title, e.g. the record type. */
|
|
12
17
|
eyebrow?: React.ReactNode;
|
|
18
|
+
/** Supporting text under the title. */
|
|
13
19
|
description?: React.ReactNode;
|
|
14
20
|
/** Header content next to the close button (edit, delete, a menu…). */
|
|
15
21
|
actions?: React.ReactNode;
|
|
16
22
|
/** Pinned to the bottom, for form buttons. */
|
|
17
23
|
footer?: React.ReactNode;
|
|
24
|
+
/** Edge the drawer slides in from. */
|
|
18
25
|
side?: 'right' | 'left';
|
|
19
26
|
/** Width: sm 24rem, md 32rem (default), lg 48rem, xl 60rem. Override with `--oui-drawer-width`. */
|
|
20
27
|
size?: DrawerSize;
|
|
@@ -25,10 +32,13 @@ export interface DrawerProps {
|
|
|
25
32
|
dismissible?: boolean;
|
|
26
33
|
/** `false` leaves the page behind interactive and drops the backdrop. */
|
|
27
34
|
modal?: boolean;
|
|
35
|
+
/** Accessible name of the close button. */
|
|
28
36
|
closeLabel?: string;
|
|
37
|
+
/** Class name for the drawer panel. */
|
|
29
38
|
className?: string;
|
|
30
39
|
/** Props for the scrolling content area. */
|
|
31
40
|
bodyProps?: React.HTMLAttributes<HTMLDivElement>;
|
|
41
|
+
/** Drawer body content. */
|
|
32
42
|
children?: React.ReactNode;
|
|
33
43
|
}
|
|
34
44
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Drawer.js","names":["React","Dialog","BaseDialog","cx","usePortalContainer","XIcon","IconButton","DrawerSize","DrawerProps","ref","Ref","HTMLDivElement","open","defaultOpen","onOpenChange","trigger","ReactElement","title","ReactNode","eyebrow","description","actions","footer","side","size","dismissible","modal","closeLabel","className","bodyProps","HTMLAttributes","children","Drawer","t0","$","_c","openProp","t1","t2","t3","t4","t5","t6","undefined","inner","setInner","useState","container","t7","next","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","Symbol","for","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","_c","BaseDialog"],"sources":["../../../src/components/drawer/Drawer.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Dialog as BaseDialog } from '@base-ui/react/dialog';\nimport { cx } from '../../utils/cx';\nimport { usePortalContainer } from '../../utils/portal';\nimport { XIcon } from '../../icons';\nimport { IconButton } from '../button/Button';\n\nexport type DrawerSize = 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface DrawerProps {\n ref?: React.Ref<HTMLDivElement>;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Element that opens the drawer, e.g. `<Button>Details</Button>`. Omit when `open` is controlled. */\n trigger?: React.ReactElement;\n title: React.ReactNode;\n /** Small label above the title, e.g. the record type. */\n eyebrow?: React.ReactNode;\n description?: React.ReactNode;\n /** Header content next to the close button (edit, delete, a menu…). */\n actions?: React.ReactNode;\n /** Pinned to the bottom, for form buttons. */\n footer?: React.ReactNode;\n side?: 'right' | 'left';\n /** Width: sm 24rem, md 32rem (default), lg 48rem, xl 60rem. Override with `--oui-drawer-width`. */\n size?: DrawerSize;\n /**\n * Set to `false` to block Esc, outside clicks and the close button, e.g.\n * while a form inside is saving.\n */\n dismissible?: boolean;\n /** `false` leaves the page behind interactive and drops the backdrop. */\n modal?: boolean;\n closeLabel?: string;\n className?: string;\n /** Props for the scrolling content area. */\n bodyProps?: React.HTMLAttributes<HTMLDivElement>;\n children?: React.ReactNode;\n}\n\n/**\n * Side panel for inspecting or editing a record without leaving the page:\n * pinned header, scrolling body, optional pinned footer. For a free-form\n * sheet use `Dialog.Content` with `placement`.\n */\nexport function Drawer({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n trigger,\n title,\n eyebrow,\n description,\n actions,\n footer,\n side = 'right',\n size = 'md',\n dismissible = true,\n modal = true,\n closeLabel = 'Close',\n className,\n bodyProps,\n children,\n ref,\n}: DrawerProps) {\n const [inner, setInner] = React.useState(defaultOpen);\n const open = openProp ?? inner;\n const container = usePortalContainer();\n\n return (\n <BaseDialog.Root\n open={open}\n modal={modal}\n onOpenChange={(next) => {\n if (!next && !dismissible) return;\n setInner(next);\n onOpenChange?.(next);\n }}\n >\n {trigger && <BaseDialog.Trigger render={trigger} />}\n <BaseDialog.Portal container={container}>\n {modal && <BaseDialog.Backdrop className=\"oui-dialog__backdrop\" />}\n <BaseDialog.Popup ref={ref} className={cx('oui-drawer', className)} data-side={side} data-size={size}>\n <header className=\"oui-drawer__header\">\n <div className=\"oui-drawer__heading\">\n {eyebrow && <div className=\"oui-drawer__eyebrow\">{eyebrow}</div>}\n <BaseDialog.Title className=\"oui-drawer__title\">{title}</BaseDialog.Title>\n {description && (\n <BaseDialog.Description className=\"oui-drawer__description\">{description}</BaseDialog.Description>\n )}\n </div>\n <div className=\"oui-drawer__actions\">\n {actions}\n <BaseDialog.Close render={<IconButton aria-label={closeLabel} disabled={!dismissible} />}>\n <XIcon />\n </BaseDialog.Close>\n </div>\n </header>\n <div {...bodyProps} className={cx('oui-drawer__body', bodyProps?.className)}>\n {children}\n </div>\n {footer && <footer className=\"oui-drawer__footer\">{footer}</footer>}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"Drawer.js","names":["React","Dialog","BaseDialog","cx","usePortalContainer","XIcon","IconButton","DrawerSize","DrawerProps","ref","Ref","HTMLDivElement","open","defaultOpen","onOpenChange","trigger","ReactElement","title","ReactNode","eyebrow","description","actions","footer","side","size","dismissible","modal","closeLabel","className","bodyProps","HTMLAttributes","children","Drawer","t0","$","_c","openProp","t1","t2","t3","t4","t5","t6","undefined","inner","setInner","useState","container","t7","next","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","Symbol","for","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","_c","BaseDialog"],"sources":["../../../src/components/drawer/Drawer.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Dialog as BaseDialog } from '@base-ui/react/dialog';\nimport { cx } from '../../utils/cx';\nimport { usePortalContainer } from '../../utils/portal';\nimport { XIcon } from '../../icons';\nimport { IconButton } from '../button/Button';\n\nexport type DrawerSize = 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface DrawerProps {\n /** Ref to the drawer panel. */\n ref?: React.Ref<HTMLDivElement>;\n /** Whether the drawer is open (controlled). */\n open?: boolean;\n /** Initial state when uncontrolled. */\n defaultOpen?: boolean;\n /** Called when the drawer opens or closes. */\n onOpenChange?: (open: boolean) => void;\n /** Element that opens the drawer, e.g. `<Button>Details</Button>`. Omit when `open` is controlled. */\n trigger?: React.ReactElement;\n /** Header title; also the drawer's accessible name. */\n title: React.ReactNode;\n /** Small label above the title, e.g. the record type. */\n eyebrow?: React.ReactNode;\n /** Supporting text under the title. */\n description?: React.ReactNode;\n /** Header content next to the close button (edit, delete, a menu…). */\n actions?: React.ReactNode;\n /** Pinned to the bottom, for form buttons. */\n footer?: React.ReactNode;\n /** Edge the drawer slides in from. */\n side?: 'right' | 'left';\n /** Width: sm 24rem, md 32rem (default), lg 48rem, xl 60rem. Override with `--oui-drawer-width`. */\n size?: DrawerSize;\n /**\n * Set to `false` to block Esc, outside clicks and the close button, e.g.\n * while a form inside is saving.\n */\n dismissible?: boolean;\n /** `false` leaves the page behind interactive and drops the backdrop. */\n modal?: boolean;\n /** Accessible name of the close button. */\n closeLabel?: string;\n /** Class name for the drawer panel. */\n className?: string;\n /** Props for the scrolling content area. */\n bodyProps?: React.HTMLAttributes<HTMLDivElement>;\n /** Drawer body content. */\n children?: React.ReactNode;\n}\n\n/**\n * Side panel for inspecting or editing a record without leaving the page:\n * pinned header, scrolling body, optional pinned footer. For a free-form\n * sheet use `Dialog.Content` with `placement`.\n */\nexport function Drawer({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n trigger,\n title,\n eyebrow,\n description,\n actions,\n footer,\n side = 'right',\n size = 'md',\n dismissible = true,\n modal = true,\n closeLabel = 'Close',\n className,\n bodyProps,\n children,\n ref,\n}: DrawerProps) {\n const [inner, setInner] = React.useState(defaultOpen);\n const open = openProp ?? inner;\n const container = usePortalContainer();\n\n return (\n <BaseDialog.Root\n open={open}\n modal={modal}\n onOpenChange={(next) => {\n if (!next && !dismissible) return;\n setInner(next);\n onOpenChange?.(next);\n }}\n >\n {trigger && <BaseDialog.Trigger render={trigger} />}\n <BaseDialog.Portal container={container}>\n {modal && <BaseDialog.Backdrop className=\"oui-dialog__backdrop\" />}\n <BaseDialog.Popup ref={ref} className={cx('oui-drawer', className)} data-side={side} data-size={size}>\n <header className=\"oui-drawer__header\">\n <div className=\"oui-drawer__heading\">\n {eyebrow && <div className=\"oui-drawer__eyebrow\">{eyebrow}</div>}\n <BaseDialog.Title className=\"oui-drawer__title\">{title}</BaseDialog.Title>\n {description && (\n <BaseDialog.Description className=\"oui-drawer__description\">{description}</BaseDialog.Description>\n )}\n </div>\n <div className=\"oui-drawer__actions\">\n {actions}\n <BaseDialog.Close render={<IconButton aria-label={closeLabel} disabled={!dismissible} />}>\n <XIcon />\n </BaseDialog.Close>\n </div>\n </header>\n <div {...bodyProps} className={cx('oui-drawer__body', bodyProps?.className)}>\n {children}\n </div>\n {footer && <footer className=\"oui-drawer__footer\">{footer}</footer>}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
export interface EmptyStateProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
3
|
+
/** Ref to the root element. */
|
|
3
4
|
ref?: React.Ref<HTMLDivElement>;
|
|
5
|
+
/** Illustration or icon above the title. */
|
|
4
6
|
icon?: React.ReactNode;
|
|
7
|
+
/** What is missing, e.g. "No vehicles yet". */
|
|
5
8
|
title: React.ReactNode;
|
|
9
|
+
/** Explains why it is empty or what to do next. */
|
|
6
10
|
description?: React.ReactNode;
|
|
11
|
+
/** Buttons for the next step. */
|
|
7
12
|
actions?: React.ReactNode;
|
|
8
13
|
/** Center content (default) or align to start. */
|
|
9
14
|
align?: 'center' | 'start';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyState.js","names":["React","cx","EmptyStateProps","Omit","HTMLAttributes","HTMLDivElement","ref","Ref","icon","ReactNode","title","description","actions","align","EmptyState","t0","$","_c","children","className","props","t1","undefined","t2","t3","t4","t5","t6","t7","_c"],"sources":["../../../src/components/empty-state/EmptyState.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cx } from '../../utils/cx';\n\nexport interface EmptyStateProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n ref?: React.Ref<HTMLDivElement>;\n icon?: React.ReactNode;\n title: React.ReactNode;\n description?: React.ReactNode;\n actions?: React.ReactNode;\n /** Center content (default) or align to start. */\n align?: 'center' | 'start';\n}\n\n/** Placeholder for empty lists, searches without results and first-run screens. */\nexport function EmptyState({\n icon,\n title,\n description,\n actions,\n align = 'center',\n className,\n children,\n ref,\n ...props\n}: EmptyStateProps) {\n return (\n <div ref={ref} className={cx('oui-empty', className)} data-align={align} {...props}>\n {icon && <div className=\"oui-empty__icon\">{icon}</div>}\n <p className=\"oui-empty__title\">{title}</p>\n {description && <p className=\"oui-empty__description\">{description}</p>}\n {children}\n {actions && <div className=\"oui-empty__actions\">{actions}</div>}\n </div>\n );\n}\n"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"EmptyState.js","names":["React","cx","EmptyStateProps","Omit","HTMLAttributes","HTMLDivElement","ref","Ref","icon","ReactNode","title","description","actions","align","EmptyState","t0","$","_c","children","className","props","t1","undefined","t2","t3","t4","t5","t6","t7","_c"],"sources":["../../../src/components/empty-state/EmptyState.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cx } from '../../utils/cx';\n\nexport interface EmptyStateProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Ref to the root element. */\n ref?: React.Ref<HTMLDivElement>;\n /** Illustration or icon above the title. */\n icon?: React.ReactNode;\n /** What is missing, e.g. \"No vehicles yet\". */\n title: React.ReactNode;\n /** Explains why it is empty or what to do next. */\n description?: React.ReactNode;\n /** Buttons for the next step. */\n actions?: React.ReactNode;\n /** Center content (default) or align to start. */\n align?: 'center' | 'start';\n}\n\n/** Placeholder for empty lists, searches without results and first-run screens. */\nexport function EmptyState({\n icon,\n title,\n description,\n actions,\n align = 'center',\n className,\n children,\n ref,\n ...props\n}: EmptyStateProps) {\n return (\n <div ref={ref} className={cx('oui-empty', className)} data-align={align} {...props}>\n {icon && <div className=\"oui-empty__icon\">{icon}</div>}\n <p className=\"oui-empty__title\">{title}</p>\n {description && <p className=\"oui-empty__description\">{description}</p>}\n {children}\n {actions && <div className=\"oui-empty__actions\">{actions}</div>}\n </div>\n );\n}\n"],"mappings":";;;;;;;AAmBA,SAAOc,WAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAL;CAAA,IAAAM;CAAA,IAAAC;CAAA,IAAAR;CAAA,IAAAH;CAAA,IAAAY;CAAA,IAAAd;CAAA,IAAAe;CAAA,IAAAX;CAAA,IAAAM,EAAA,OAAAD,IAAA;EAAoB,CAAA,CAAAP,MAAAE,OAAAC,aAAAC,SAAAC,OAAAQ,IAAAF,WAAAD,UAAAZ,KAAA,GAAAc,SAAAL;EAUTC,EAAA,KAAAD;EAAAC,EAAA,KAAAJ;EAAAI,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAL;EAAAK,EAAA,KAAAR;EAAAQ,EAAA,KAAAI;EAAAJ,EAAA,KAAAV;EAAAU,EAAA,KAAAK;EAAAL,EAAA,KAAAN;CAAA,OAAA;EAAAE,UAAAI,EAAA;EAAAE,WAAAF,EAAA;EAAAG,YAAAH,EAAA;EAAAL,cAAAK,EAAA;EAAAR,OAAAQ,EAAA;EAAAI,QAAAJ,EAAA;EAAAV,MAAAU,EAAA;EAAAK,KAAAL,EAAA;EAAAN,QAAAM,EAAA;CAAA;CALhB,MAAAH,QAAAQ,OAAAC,KAAAA,IAAA,WAAAD;CAAgB,IAAAE;CAAA,IAAAP,EAAA,QAAAG,WAAA;EAOYI,KAAAtB,GAAG,aAAakB,SAAS;EAACH,EAAA,MAAAG;EAAAH,EAAA,MAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,IAAAQ;CAAA,IAAAR,EAAA,QAAAR,MAAA;EACjDgB,KAAAhB,QAAQ,oBAAA,OAAA;GAAe,WAAA;GAAmBA,UAAAA;EAAW,CAAA;EAAAQ,EAAA,MAAAR;EAAAQ,EAAA,MAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,IAAAS;CAAA,IAAAT,EAAA,QAAAN,OAAA;EACtDe,KAAA,oBAAA,KAAA;GAAa,WAAA;GAAoBf,UAAAA;EAAU,CAAA;EAAAM,EAAA,MAAAN;EAAAM,EAAA,MAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAA,IAAAU;CAAA,IAAAV,EAAA,QAAAL,aAAA;EAC1Ce,KAAAf,eAAe,oBAAA,KAAA;GAAa,WAAA;GAA0BA,UAAAA;EAAgB,CAAA;EAAAK,EAAA,MAAAL;EAAAK,EAAA,MAAAU;CAAA,OAAAA,KAAAV,EAAA;CAAA,IAAAW;CAAA,IAAAX,EAAA,QAAAJ,SAAA;EAEtEe,KAAAf,WAAW,oBAAA,OAAA;GAAe,WAAA;GAAsBA,UAAAA;EAAc,CAAA;EAAAI,EAAA,MAAAJ;EAAAI,EAAA,MAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,QAAAH,SAAAG,EAAA,QAAAE,YAAAF,EAAA,QAAAI,SAAAJ,EAAA,QAAAV,OAAAU,EAAA,QAAAO,MAAAP,EAAA,QAAAQ,MAAAR,EAAA,QAAAS,MAAAT,EAAA,QAAAU,MAAAV,EAAA,QAAAW,IAAA;EALjEC,KAAA,qBAAA,OAAA;GAAUtB;GAAgB,WAAAiB;GAAwCV,cAAAA;GAAK,GAAMO;GAA7E,UAAA;IACGI;IACDC;IACCC;IACAR;IACAS;GACG;;EAAAX,EAAA,MAAAH;EAAAG,EAAA,MAAAE;EAAAF,EAAA,MAAAI;EAAAJ,EAAA,MAAAV;EAAAU,EAAA,MAAAO;EAAAP,EAAA,MAAAQ;EAAAR,EAAA,MAAAS;EAAAT,EAAA,MAAAU;EAAAV,EAAA,MAAAW;EAAAX,EAAA,MAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,OANNY;AAMM"}
|
|
@@ -7,6 +7,7 @@ export interface FileRejection {
|
|
|
7
7
|
/** `1536` → `"1.5 KB"`. */
|
|
8
8
|
export declare function formatFileSize(bytes: number, locale?: string): string;
|
|
9
9
|
export interface DropzoneProps extends Omit<React.LabelHTMLAttributes<HTMLLabelElement>, 'title'> {
|
|
10
|
+
/** Ref to the dropzone element. */
|
|
10
11
|
ref?: React.Ref<HTMLLabelElement>;
|
|
11
12
|
/** Called with the picked or dropped files that pass `accept` and `maxSize`. */
|
|
12
13
|
onFiles?: (files: File[]) => void;
|
|
@@ -14,6 +15,7 @@ export interface DropzoneProps extends Omit<React.LabelHTMLAttributes<HTMLLabelE
|
|
|
14
15
|
onReject?: (rejections: FileRejection[]) => void;
|
|
15
16
|
/** Allowed types, as for `<input accept>`: `".pdf,image/*"`. */
|
|
16
17
|
accept?: string;
|
|
18
|
+
/** Allow choosing several files. */
|
|
17
19
|
multiple?: boolean;
|
|
18
20
|
/** Largest allowed file, in bytes. */
|
|
19
21
|
maxSize?: number;
|
|
@@ -22,11 +24,15 @@ export interface DropzoneProps extends Omit<React.LabelHTMLAttributes<HTMLLabelE
|
|
|
22
24
|
* with a form and `required` validates. Without it the input is emptied after each pick.
|
|
23
25
|
*/
|
|
24
26
|
files?: File[];
|
|
27
|
+
/** Disables picking and dropping. */
|
|
25
28
|
disabled?: boolean;
|
|
29
|
+
/** Shows the error styling. */
|
|
26
30
|
invalid?: boolean;
|
|
27
31
|
/** `sm` is a single compact row. */
|
|
28
32
|
size?: 'sm' | 'md';
|
|
33
|
+
/** Icon shown before the title. Defaults to an upload icon. */
|
|
29
34
|
icon?: React.ReactNode;
|
|
35
|
+
/** Main line. Defaults to "Drop files here or click to browse". */
|
|
30
36
|
title?: React.ReactNode;
|
|
31
37
|
/** Secondary line, e.g. the allowed types and size. */
|
|
32
38
|
hint?: React.ReactNode;
|
|
@@ -37,11 +43,15 @@ export interface DropzoneProps extends Omit<React.LabelHTMLAttributes<HTMLLabelE
|
|
|
37
43
|
export declare function Dropzone({ onFiles, onReject, accept, multiple, maxSize, files, disabled, invalid, size, icon, title, hint, inputProps, className, children, ref, ...props }: DropzoneProps): React.JSX.Element;
|
|
38
44
|
export type FileItemStatus = 'idle' | 'uploading' | 'success' | 'error';
|
|
39
45
|
export interface FileItemProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
46
|
+
/** Ref to the item element. */
|
|
40
47
|
ref?: React.Ref<HTMLDivElement>;
|
|
48
|
+
/** File name. */
|
|
41
49
|
name: string;
|
|
42
50
|
/** Size in bytes. */
|
|
43
51
|
size?: number;
|
|
52
|
+
/** Icon before the name. Defaults to a file icon. */
|
|
44
53
|
icon?: React.ReactNode;
|
|
54
|
+
/** Upload state; sets the progress bar and error styling. */
|
|
45
55
|
status?: FileItemStatus;
|
|
46
56
|
/** Upload progress from 0 to 100, shown while `uploading`. `null` is indeterminate. */
|
|
47
57
|
progress?: number | null;
|
|
@@ -49,6 +59,7 @@ export interface FileItemProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
49
59
|
error?: React.ReactNode;
|
|
50
60
|
/** Adds the remove button. */
|
|
51
61
|
onRemove?: () => void;
|
|
62
|
+
/** Accessible name of the remove button. Defaults to "Remove {name}". */
|
|
52
63
|
removeLabel?: string;
|
|
53
64
|
/** Extra controls before the remove button (download, preview…). */
|
|
54
65
|
actions?: React.ReactNode;
|
|
@@ -61,23 +72,33 @@ export interface FileUploadLabels {
|
|
|
61
72
|
remove: (name: string) => string;
|
|
62
73
|
}
|
|
63
74
|
export interface FileUploadProps extends Pick<DropzoneProps, 'accept' | 'multiple' | 'maxSize' | 'onReject' | 'size' | 'icon' | 'title' | 'hint'> {
|
|
75
|
+
/** Ref to the dropzone element. */
|
|
64
76
|
ref?: React.Ref<HTMLLabelElement>;
|
|
77
|
+
/** Chosen files (controlled). */
|
|
65
78
|
value?: File[];
|
|
79
|
+
/** Initially chosen files when uncontrolled. */
|
|
66
80
|
defaultValue?: File[];
|
|
81
|
+
/** Called with the full list of files after a file is added or removed. */
|
|
67
82
|
onValueChange?: (files: File[]) => void;
|
|
68
83
|
/** Most files allowed when `multiple`. */
|
|
69
84
|
maxFiles?: number;
|
|
70
85
|
/** Upload state of a file, for showing progress and errors in the list. */
|
|
71
86
|
fileState?: (file: File) => Pick<FileItemProps, 'status' | 'progress' | 'error'> | undefined;
|
|
87
|
+
/** Visible field label. */
|
|
72
88
|
label?: React.ReactNode;
|
|
89
|
+
/** Help text under the dropzone. */
|
|
73
90
|
description?: React.ReactNode;
|
|
74
91
|
/** Error message. When set, the field is marked invalid. */
|
|
75
92
|
error?: React.ReactNode;
|
|
93
|
+
/** Requires at least one file before the form submits. */
|
|
76
94
|
required?: boolean;
|
|
95
|
+
/** Disables picking, dropping and removing files. */
|
|
77
96
|
disabled?: boolean;
|
|
78
97
|
/** Submits the files with a form under this name. */
|
|
79
98
|
name?: string;
|
|
99
|
+
/** Id of the file input. Generated when omitted. */
|
|
80
100
|
id?: string;
|
|
101
|
+
/** Class name for the root element. */
|
|
81
102
|
className?: string;
|
|
82
103
|
/** BCP 47 locale for file sizes. */
|
|
83
104
|
locale?: string;
|