@webiny/admin-ui 6.3.0-beta.2 → 6.3.0-beta.4
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/Accordion/components/AccordionItemAction.d.ts +1 -1
- package/Accordion/components/AccordionItemAction.js.map +1 -1
- package/Calendar/Calendar.d.ts +25 -0
- package/Calendar/Calendar.js +45 -0
- package/Calendar/Calendar.js.map +1 -0
- package/Calendar/calendarClassNames.d.ts +2 -0
- package/Calendar/calendarClassNames.js +33 -0
- package/Calendar/calendarClassNames.js.map +1 -0
- package/Calendar/index.d.ts +1 -0
- package/Calendar/index.js +3 -0
- package/Calendar/index.js.map +1 -0
- package/CodeEditor/CodeEditorPrimitive.js +1 -1
- package/CodeEditor/CodeEditorPrimitive.js.map +1 -1
- package/DatePicker/DatePicker.d.ts +24 -0
- package/DatePicker/DatePicker.js +46 -0
- package/DatePicker/DatePicker.js.map +1 -0
- package/DatePicker/DatePicker.mdx +153 -0
- package/DatePicker/DatePicker.stories.d.ts +25 -0
- package/DatePicker/DatePicker.stories.js +365 -0
- package/DatePicker/DatePicker.stories.js.map +1 -0
- package/DatePicker/index.d.ts +2 -0
- package/DatePicker/index.js +4 -0
- package/DatePicker/index.js.map +1 -0
- package/DatePicker/primitives/DateOnlyPicker.d.ts +4 -0
- package/DatePicker/primitives/DateOnlyPicker.js +78 -0
- package/DatePicker/primitives/DateOnlyPicker.js.map +1 -0
- package/DatePicker/primitives/DatePickerPrimitive.d.ts +22 -0
- package/DatePicker/primitives/DatePickerPrimitive.js +46 -0
- package/DatePicker/primitives/DatePickerPrimitive.js.map +1 -0
- package/DatePicker/primitives/DateRangePicker.d.ts +4 -0
- package/DatePicker/primitives/DateRangePicker.js +69 -0
- package/DatePicker/primitives/DateRangePicker.js.map +1 -0
- package/DatePicker/primitives/DateTimePicker.d.ts +7 -0
- package/DatePicker/primitives/DateTimePicker.js +129 -0
- package/DatePicker/primitives/DateTimePicker.js.map +1 -0
- package/DatePicker/primitives/MonthPicker.d.ts +4 -0
- package/DatePicker/primitives/MonthPicker.js +60 -0
- package/DatePicker/primitives/MonthPicker.js.map +1 -0
- package/DatePicker/primitives/MultipleDatesPicker.d.ts +4 -0
- package/DatePicker/primitives/MultipleDatesPicker.js +73 -0
- package/DatePicker/primitives/MultipleDatesPicker.js.map +1 -0
- package/DatePicker/primitives/MultipleMonthsPicker.d.ts +4 -0
- package/DatePicker/primitives/MultipleMonthsPicker.js +85 -0
- package/DatePicker/primitives/MultipleMonthsPicker.js.map +1 -0
- package/DatePicker/primitives/MultipleYearsPicker.d.ts +4 -0
- package/DatePicker/primitives/MultipleYearsPicker.js +75 -0
- package/DatePicker/primitives/MultipleYearsPicker.js.map +1 -0
- package/DatePicker/primitives/TimeOnlyPicker.d.ts +4 -0
- package/DatePicker/primitives/TimeOnlyPicker.js +24 -0
- package/DatePicker/primitives/TimeOnlyPicker.js.map +1 -0
- package/DatePicker/primitives/WeekPicker.d.ts +4 -0
- package/DatePicker/primitives/WeekPicker.js +97 -0
- package/DatePicker/primitives/WeekPicker.js.map +1 -0
- package/DatePicker/primitives/YearPicker.d.ts +4 -0
- package/DatePicker/primitives/YearPicker.js +54 -0
- package/DatePicker/primitives/YearPicker.js.map +1 -0
- package/DatePicker/primitives/components/DatePickerTrigger.d.ts +13 -0
- package/DatePicker/primitives/components/DatePickerTrigger.js +45 -0
- package/DatePicker/primitives/components/DatePickerTrigger.js.map +1 -0
- package/DatePicker/primitives/components/MonthGrid.d.ts +7 -0
- package/DatePicker/primitives/components/MonthGrid.js +23 -0
- package/DatePicker/primitives/components/MonthGrid.js.map +1 -0
- package/DatePicker/primitives/components/SelectedTagsList.d.ts +11 -0
- package/DatePicker/primitives/components/SelectedTagsList.js +23 -0
- package/DatePicker/primitives/components/SelectedTagsList.js.map +1 -0
- package/DatePicker/primitives/components/TimePicker.d.ts +13 -0
- package/DatePicker/primitives/components/TimePicker.js +33 -0
- package/DatePicker/primitives/components/TimePicker.js.map +1 -0
- package/DatePicker/primitives/components/YearGrid.d.ts +8 -0
- package/DatePicker/primitives/components/YearGrid.js +46 -0
- package/DatePicker/primitives/components/YearGrid.js.map +1 -0
- package/DatePicker/primitives/components/YearStepper.d.ts +7 -0
- package/DatePicker/primitives/components/YearStepper.js +36 -0
- package/DatePicker/primitives/components/YearStepper.js.map +1 -0
- package/DatePicker/primitives/components/index.d.ts +6 -0
- package/DatePicker/primitives/components/index.js +8 -0
- package/DatePicker/primitives/components/index.js.map +1 -0
- package/DatePicker/primitives/index.d.ts +1 -0
- package/DatePicker/primitives/index.js +3 -0
- package/DatePicker/primitives/index.js.map +1 -0
- package/DatePicker/utils/constants.d.ts +3 -0
- package/DatePicker/utils/constants.js +5 -0
- package/DatePicker/utils/constants.js.map +1 -0
- package/DatePicker/utils/dateHelpers.d.ts +24 -0
- package/DatePicker/utils/dateHelpers.js +184 -0
- package/DatePicker/utils/dateHelpers.js.map +1 -0
- package/DatePicker/utils/index.d.ts +3 -0
- package/DatePicker/utils/index.js +5 -0
- package/DatePicker/utils/index.js.map +1 -0
- package/DatePicker/utils/types.d.ts +81 -0
- package/DatePicker/utils/types.js +3 -0
- package/DatePicker/utils/types.js.map +1 -0
- package/Dialog/Dialog.d.ts +1 -0
- package/Dialog/Dialog.js +9 -3
- package/Dialog/Dialog.js.map +1 -1
- package/Dialog/components/DialogBody.d.ts +2 -2
- package/Dialog/components/DialogBody.js +10 -3
- package/Dialog/components/DialogBody.js.map +1 -1
- package/Dialog/components/DialogContent.d.ts +3 -0
- package/Dialog/components/DialogContent.js +11 -4
- package/Dialog/components/DialogContent.js.map +1 -1
- package/FilePicker/FilePicker.d.ts +1 -1
- package/FilePicker/FilePicker.js.map +1 -1
- package/FilePicker/FilePicker.stories.js +4 -5
- package/FilePicker/FilePicker.stories.js.map +1 -1
- package/FilePicker/domains/FileItem.js +2 -0
- package/FilePicker/domains/FileItem.js.map +1 -1
- package/List/components/ListItemAction.d.ts +1 -1
- package/List/components/ListItemAction.js.map +1 -1
- package/List/components/ListItemHandle.d.ts +1 -1
- package/List/components/ListItemHandle.js.map +1 -1
- package/MultiFilePicker/MultiFilePicker.stories.js +4 -5
- package/MultiFilePicker/MultiFilePicker.stories.js.map +1 -1
- package/RangeSlider/primitives/RangeSliderPrimitive.js +1 -1
- package/RangeSlider/primitives/RangeSliderPrimitive.js.map +1 -1
- package/Sidebar/Sidebar.js +1 -1
- package/Sidebar/Sidebar.js.map +1 -1
- package/Sidebar/components/SidebarContent.js +1 -1
- package/Sidebar/components/SidebarContent.js.map +1 -1
- package/Sidebar/components/items/SidebarMenuRootButton.js +1 -1
- package/Sidebar/components/items/SidebarMenuRootButton.js.map +1 -1
- package/Sidebar/components/items/SidebarMenuRootItem.js +2 -1
- package/Sidebar/components/items/SidebarMenuRootItem.js.map +1 -1
- package/Sidebar/components/items/SidebarMenuSubButton.js +1 -1
- package/Sidebar/components/items/SidebarMenuSubButton.js.map +1 -1
- package/Tabs/Tabs.js +1 -1
- package/Tabs/Tabs.js.map +1 -1
- package/exports/admin/ui.d.ts +1 -0
- package/exports/admin/ui.js +2 -0
- package/exports/admin/ui.js.map +1 -1
- package/index.d.ts +2 -0
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/package.json +19 -15
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React, { useState, useEffect } from "react";
|
|
2
2
|
import { FilePicker } from "./index.js";
|
|
3
|
-
import { AdminUiProvider } from "../AdminUiProvider/index.js";
|
|
4
3
|
const getRandomNumber = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
|
|
5
4
|
const getFile = () => {
|
|
6
5
|
const width = getRandomNumber(500, 2000); // Random width between 500 and 2000
|
|
@@ -37,12 +36,12 @@ const meta = {
|
|
|
37
36
|
},
|
|
38
37
|
render: args => {
|
|
39
38
|
const [selectedFile, setSelectedFile] = useState(args.value);
|
|
40
|
-
return /*#__PURE__*/React.createElement(
|
|
39
|
+
return /*#__PURE__*/React.createElement(FilePicker, Object.assign({}, args, {
|
|
41
40
|
value: selectedFile,
|
|
42
41
|
onSelectItem: () => setSelectedFile(getFile()),
|
|
43
42
|
onRemoveItem: () => setSelectedFile(null),
|
|
44
43
|
onEditItem: () => alert(`Editing File`)
|
|
45
|
-
}))
|
|
44
|
+
}));
|
|
46
45
|
}
|
|
47
46
|
};
|
|
48
47
|
export default meta;
|
|
@@ -258,13 +257,13 @@ export const Documentation = {
|
|
|
258
257
|
});
|
|
259
258
|
}
|
|
260
259
|
}, [args.required, selectedFile]);
|
|
261
|
-
return /*#__PURE__*/React.createElement(
|
|
260
|
+
return /*#__PURE__*/React.createElement(FilePicker, Object.assign({}, args, {
|
|
262
261
|
value: selectedFile,
|
|
263
262
|
onSelectItem: handleSelect,
|
|
264
263
|
onRemoveItem: handleRemove,
|
|
265
264
|
onEditItem: handleEdit,
|
|
266
265
|
validation: validation
|
|
267
|
-
}))
|
|
266
|
+
}));
|
|
268
267
|
},
|
|
269
268
|
args: {
|
|
270
269
|
label: "Upload Image",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","useEffect","FilePicker","AdminUiProvider","getRandomNumber","min","max","Math","floor","random","getFile","width","height","fileSize","name","mimeType","size","url","meta","title","component","argTypes","onSelectItem","action","onEditItem","onRemoveItem","disabled","control","defaultValue","parameters","layout","render","args","selectedFile","setSelectedFile","value","createElement","Object","assign","alert","Default","AreaType","type","AreaWithLabel","label","AreaWithLabelRequired","required","AreaWithDescription","description","AreaWithNotes","note","AreaWithErrors","validation","isValid","message","AreaDisabled","AreaWithValidateFunction","setValidation","undefined","validate","AreaFullExample","Compact","CompactWithLabel","CompactWithLabelRequired","CompactWithDescription","CompactWithNotes","CompactWithErrors","CompactDisabled","CompactWithValidateFunction","CompactFullExample","Documentation","handleSelect","handleEdit","file","console","log","handleRemove","options"],"sources":["FilePicker.stories.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport type { Meta, StoryObj } from \"@storybook/react-webpack5\";\nimport { type FileItemDto, FilePicker } from \"~/FilePicker/index.js\";\nimport { AdminUiProvider } from \"~/AdminUiProvider/index.js\";\n\nconst getRandomNumber = (min: number, max: number): number =>\n Math.floor(Math.random() * (max - min + 1)) + min;\n\nconst getFile = (): FileItemDto => {\n const width = getRandomNumber(500, 2000); // Random width between 500 and 2000\n const height = getRandomNumber(500, 2000); // Random height between 500 and 2000\n const fileSize = getRandomNumber(500000, 5000000); // Random file size between 500KB and 5MB\n\n return {\n name: \"selected-file.jpg\",\n mimeType: \"image/jpeg\",\n size: fileSize,\n url: `https://picsum.photos/${width}/${height}`\n };\n};\n\nconst meta: Meta<typeof FilePicker> = {\n title: \"Components/Form/FilePicker\",\n component: FilePicker,\n argTypes: {\n onSelectItem: { action: \"onSelectItem\" },\n onEditItem: { action: \"onEditItem\" },\n onRemoveItem: { action: \"onRemoveItem\" },\n disabled: {\n control: \"boolean\",\n defaultValue: false\n }\n },\n parameters: {\n layout: \"padded\"\n },\n render: args => {\n const [selectedFile, setSelectedFile] = useState(args.value);\n return (\n <AdminUiProvider>\n <FilePicker\n {...args}\n value={selectedFile}\n onSelectItem={() => setSelectedFile(getFile())}\n onRemoveItem={() => setSelectedFile(null)}\n onEditItem={() => alert(`Editing File`)}\n />\n </AdminUiProvider>\n );\n }\n};\n\nexport default meta;\ntype Story = StoryObj<typeof FilePicker>;\n\nexport const Default: Story = {};\n\nexport const AreaType: Story = {\n args: {\n ...Default.args,\n type: \"area\"\n }\n};\n\nexport const AreaWithLabel: Story = {\n args: {\n ...AreaType.args,\n label: \"Any field label\"\n }\n};\n\nexport const AreaWithLabelRequired: Story = {\n args: {\n ...AreaType.args,\n label: \"Any field label\",\n required: true\n }\n};\n\nexport const AreaWithDescription: Story = {\n args: {\n ...AreaType.args,\n description: \"Provide the required information for processing your request.\"\n }\n};\n\nexport const AreaWithNotes: Story = {\n args: {\n ...AreaType.args,\n note: \"Note: Ensure your selection or input is accurate before proceeding.\"\n }\n};\n\nexport const AreaWithErrors: Story = {\n args: {\n ...AreaType.args,\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const AreaDisabled: Story = {\n args: {\n ...AreaType.args,\n label: \"Any field label\",\n disabled: true\n }\n};\n\nexport const AreaWithValidateFunction: Story = {\n args: {\n ...AreaType.args\n },\n render: args => {\n const [validation, setValidation] = useState<any>({ isValid: true, message: undefined });\n\n const validate = async () => {\n setValidation({ isValid: false, message: \"Any custom error message.\" });\n };\n\n return <FilePicker {...args} validate={validate} validation={validation} />;\n }\n};\n\nexport const AreaFullExample: Story = {\n args: {\n ...AreaType.args,\n label: \"Any field label\",\n required: true,\n description: \"Provide the required information for processing your request.\",\n note: \"Note: Ensure your selection or input is accurate before proceeding.\",\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const Compact: Story = {\n args: {\n ...Default.args,\n type: \"compact\"\n }\n};\n\nexport const CompactWithLabel: Story = {\n args: {\n ...Compact.args,\n label: \"Any field label\"\n }\n};\n\nexport const CompactWithLabelRequired: Story = {\n args: {\n ...Compact.args,\n label: \"Any field label\",\n required: true\n }\n};\n\nexport const CompactWithDescription: Story = {\n args: {\n ...Compact.args,\n description: \"Provide the required information for processing your request.\"\n }\n};\n\nexport const CompactWithNotes: Story = {\n args: {\n ...Compact.args,\n note: \"Note: Ensure your selection or input is accurate before proceeding.\"\n }\n};\n\nexport const CompactWithErrors: Story = {\n args: {\n ...Compact.args,\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const CompactDisabled: Story = {\n args: {\n ...Compact.args,\n label: \"Any field label\",\n disabled: true\n }\n};\n\nexport const CompactWithValidateFunction: Story = {\n args: {\n ...Compact.args\n },\n render: args => {\n const [validation, setValidation] = useState<any>({ isValid: true, message: undefined });\n\n const validate = async () => {\n setValidation({ isValid: false, message: \"Any custom error message.\" });\n };\n\n return <FilePicker {...args} validate={validate} validation={validation} />;\n }\n};\n\nexport const CompactFullExample: Story = {\n args: {\n ...Compact.args,\n label: \"Any field label\",\n required: true,\n description: \"Provide the required information for processing your request.\",\n note: \"Note: Ensure your selection or input is accurate before proceeding.\",\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const Documentation: Story = {\n render: args => {\n const [selectedFile, setSelectedFile] = useState(args.value);\n const [validation, setValidation] = useState({ isValid: true, message: \"\" });\n\n // Update value when args.value changes\n useEffect(() => {\n setSelectedFile(args.value);\n }, [args.value]);\n\n const handleSelect = () => {\n setSelectedFile(getFile());\n setValidation({ isValid: true, message: \"\" });\n };\n\n const handleEdit = (file: any) => {\n if (file) {\n console.log(\"Editing file:\", file);\n alert(`Editing File: ${file.name}`);\n }\n };\n\n const handleRemove = () => {\n setSelectedFile(null);\n\n if (args.required) {\n setValidation({ isValid: false, message: \"Please select a file\" });\n }\n };\n\n // Validate on required change or value change\n useEffect(() => {\n if (args.required && !selectedFile) {\n setValidation({ isValid: false, message: \"Please select a file\" });\n } else {\n setValidation({ isValid: true, message: \"\" });\n }\n }, [args.required, selectedFile]);\n\n return (\n <AdminUiProvider>\n <FilePicker\n {...args}\n value={selectedFile}\n onSelectItem={handleSelect}\n onRemoveItem={handleRemove}\n onEditItem={handleEdit}\n validation={validation}\n />\n </AdminUiProvider>\n );\n },\n args: {\n label: \"Upload Image\",\n required: true,\n disabled: false,\n description: \"Select a file to upload (JPG, PNG, PDF)\",\n note: \"Note: Maximum file size is 5MB\",\n type: \"area\",\n value: null,\n validation: undefined,\n onSelectItem: undefined,\n onEditItem: undefined,\n onRemoveItem: undefined\n },\n argTypes: {\n label: {\n description: \"Label text for the file picker\",\n control: \"text\"\n },\n required: {\n description: \"Makes the field required when set to true\",\n control: \"boolean\"\n },\n disabled: {\n description: \"Disables the file picker when set to true\",\n control: \"boolean\"\n },\n description: {\n description: \"Additional description text below the field\",\n control: \"text\"\n },\n note: {\n description: \"Additional note text below the field\",\n control: \"text\"\n },\n type: {\n description: \"The visual style of the file picker\",\n control: \"radio\",\n options: [\"area\", \"compact\"]\n },\n value: {\n description: \"The currently selected file\",\n control: \"object\"\n },\n validation: {\n description:\n \"Object containing validation state and message. Please refer to the example code for details on usage.\"\n },\n onSelectItem: {\n description: \"Function called when a file is selected\"\n },\n onEditItem: {\n description: \"Function called when a file is edited\"\n },\n onRemoveItem: {\n description: \"Function called when a file is removed\"\n }\n }\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useState","useEffect","FilePicker","getRandomNumber","min","max","Math","floor","random","getFile","width","height","fileSize","name","mimeType","size","url","meta","title","component","argTypes","onSelectItem","action","onEditItem","onRemoveItem","disabled","control","defaultValue","parameters","layout","render","args","selectedFile","setSelectedFile","value","createElement","Object","assign","alert","Default","AreaType","type","AreaWithLabel","label","AreaWithLabelRequired","required","AreaWithDescription","description","AreaWithNotes","note","AreaWithErrors","validation","isValid","message","AreaDisabled","AreaWithValidateFunction","setValidation","undefined","validate","AreaFullExample","Compact","CompactWithLabel","CompactWithLabelRequired","CompactWithDescription","CompactWithNotes","CompactWithErrors","CompactDisabled","CompactWithValidateFunction","CompactFullExample","Documentation","handleSelect","handleEdit","file","console","log","handleRemove","options"],"sources":["FilePicker.stories.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport type { Meta, StoryObj } from \"@storybook/react-webpack5\";\nimport { type FileItemDto, FilePicker } from \"~/FilePicker/index.js\";\n\nconst getRandomNumber = (min: number, max: number): number =>\n Math.floor(Math.random() * (max - min + 1)) + min;\n\nconst getFile = (): FileItemDto => {\n const width = getRandomNumber(500, 2000); // Random width between 500 and 2000\n const height = getRandomNumber(500, 2000); // Random height between 500 and 2000\n const fileSize = getRandomNumber(500000, 5000000); // Random file size between 500KB and 5MB\n\n return {\n name: \"selected-file.jpg\",\n mimeType: \"image/jpeg\",\n size: fileSize,\n url: `https://picsum.photos/${width}/${height}`\n };\n};\n\nconst meta: Meta<typeof FilePicker> = {\n title: \"Components/Form/FilePicker\",\n component: FilePicker,\n argTypes: {\n onSelectItem: { action: \"onSelectItem\" },\n onEditItem: { action: \"onEditItem\" },\n onRemoveItem: { action: \"onRemoveItem\" },\n disabled: {\n control: \"boolean\",\n defaultValue: false\n }\n },\n parameters: {\n layout: \"padded\"\n },\n render: args => {\n const [selectedFile, setSelectedFile] = useState(args.value);\n return (\n <FilePicker\n {...args}\n value={selectedFile}\n onSelectItem={() => setSelectedFile(getFile())}\n onRemoveItem={() => setSelectedFile(null)}\n onEditItem={() => alert(`Editing File`)}\n />\n );\n }\n};\n\nexport default meta;\ntype Story = StoryObj<typeof FilePicker>;\n\nexport const Default: Story = {};\n\nexport const AreaType: Story = {\n args: {\n ...Default.args,\n type: \"area\"\n }\n};\n\nexport const AreaWithLabel: Story = {\n args: {\n ...AreaType.args,\n label: \"Any field label\"\n }\n};\n\nexport const AreaWithLabelRequired: Story = {\n args: {\n ...AreaType.args,\n label: \"Any field label\",\n required: true\n }\n};\n\nexport const AreaWithDescription: Story = {\n args: {\n ...AreaType.args,\n description: \"Provide the required information for processing your request.\"\n }\n};\n\nexport const AreaWithNotes: Story = {\n args: {\n ...AreaType.args,\n note: \"Note: Ensure your selection or input is accurate before proceeding.\"\n }\n};\n\nexport const AreaWithErrors: Story = {\n args: {\n ...AreaType.args,\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const AreaDisabled: Story = {\n args: {\n ...AreaType.args,\n label: \"Any field label\",\n disabled: true\n }\n};\n\nexport const AreaWithValidateFunction: Story = {\n args: {\n ...AreaType.args\n },\n render: args => {\n const [validation, setValidation] = useState<any>({ isValid: true, message: undefined });\n\n const validate = async () => {\n setValidation({ isValid: false, message: \"Any custom error message.\" });\n };\n\n return <FilePicker {...args} validate={validate} validation={validation} />;\n }\n};\n\nexport const AreaFullExample: Story = {\n args: {\n ...AreaType.args,\n label: \"Any field label\",\n required: true,\n description: \"Provide the required information for processing your request.\",\n note: \"Note: Ensure your selection or input is accurate before proceeding.\",\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const Compact: Story = {\n args: {\n ...Default.args,\n type: \"compact\"\n }\n};\n\nexport const CompactWithLabel: Story = {\n args: {\n ...Compact.args,\n label: \"Any field label\"\n }\n};\n\nexport const CompactWithLabelRequired: Story = {\n args: {\n ...Compact.args,\n label: \"Any field label\",\n required: true\n }\n};\n\nexport const CompactWithDescription: Story = {\n args: {\n ...Compact.args,\n description: \"Provide the required information for processing your request.\"\n }\n};\n\nexport const CompactWithNotes: Story = {\n args: {\n ...Compact.args,\n note: \"Note: Ensure your selection or input is accurate before proceeding.\"\n }\n};\n\nexport const CompactWithErrors: Story = {\n args: {\n ...Compact.args,\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const CompactDisabled: Story = {\n args: {\n ...Compact.args,\n label: \"Any field label\",\n disabled: true\n }\n};\n\nexport const CompactWithValidateFunction: Story = {\n args: {\n ...Compact.args\n },\n render: args => {\n const [validation, setValidation] = useState<any>({ isValid: true, message: undefined });\n\n const validate = async () => {\n setValidation({ isValid: false, message: \"Any custom error message.\" });\n };\n\n return <FilePicker {...args} validate={validate} validation={validation} />;\n }\n};\n\nexport const CompactFullExample: Story = {\n args: {\n ...Compact.args,\n label: \"Any field label\",\n required: true,\n description: \"Provide the required information for processing your request.\",\n note: \"Note: Ensure your selection or input is accurate before proceeding.\",\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const Documentation: Story = {\n render: args => {\n const [selectedFile, setSelectedFile] = useState(args.value);\n const [validation, setValidation] = useState({ isValid: true, message: \"\" });\n\n // Update value when args.value changes\n useEffect(() => {\n setSelectedFile(args.value);\n }, [args.value]);\n\n const handleSelect = () => {\n setSelectedFile(getFile());\n setValidation({ isValid: true, message: \"\" });\n };\n\n const handleEdit = (file: any) => {\n if (file) {\n console.log(\"Editing file:\", file);\n alert(`Editing File: ${file.name}`);\n }\n };\n\n const handleRemove = () => {\n setSelectedFile(null);\n\n if (args.required) {\n setValidation({ isValid: false, message: \"Please select a file\" });\n }\n };\n\n // Validate on required change or value change\n useEffect(() => {\n if (args.required && !selectedFile) {\n setValidation({ isValid: false, message: \"Please select a file\" });\n } else {\n setValidation({ isValid: true, message: \"\" });\n }\n }, [args.required, selectedFile]);\n\n return (\n <FilePicker\n {...args}\n value={selectedFile}\n onSelectItem={handleSelect}\n onRemoveItem={handleRemove}\n onEditItem={handleEdit}\n validation={validation}\n />\n );\n },\n args: {\n label: \"Upload Image\",\n required: true,\n disabled: false,\n description: \"Select a file to upload (JPG, PNG, PDF)\",\n note: \"Note: Maximum file size is 5MB\",\n type: \"area\",\n value: null,\n validation: undefined,\n onSelectItem: undefined,\n onEditItem: undefined,\n onRemoveItem: undefined\n },\n argTypes: {\n label: {\n description: \"Label text for the file picker\",\n control: \"text\"\n },\n required: {\n description: \"Makes the field required when set to true\",\n control: \"boolean\"\n },\n disabled: {\n description: \"Disables the file picker when set to true\",\n control: \"boolean\"\n },\n description: {\n description: \"Additional description text below the field\",\n control: \"text\"\n },\n note: {\n description: \"Additional note text below the field\",\n control: \"text\"\n },\n type: {\n description: \"The visual style of the file picker\",\n control: \"radio\",\n options: [\"area\", \"compact\"]\n },\n value: {\n description: \"The currently selected file\",\n control: \"object\"\n },\n validation: {\n description:\n \"Object containing validation state and message. Please refer to the example code for details on usage.\"\n },\n onSelectItem: {\n description: \"Function called when a file is selected\"\n },\n onEditItem: {\n description: \"Function called when a file is edited\"\n },\n onRemoveItem: {\n description: \"Function called when a file is removed\"\n }\n }\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAElD,SAA2BC,UAAU;AAErC,MAAMC,eAAe,GAAGA,CAACC,GAAW,EAAEC,GAAW,KAC7CC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,IAAIH,GAAG,GAAGD,GAAG,GAAG,CAAC,CAAC,CAAC,GAAGA,GAAG;AAErD,MAAMK,OAAO,GAAGA,CAAA,KAAmB;EAC/B,MAAMC,KAAK,GAAGP,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;EAC1C,MAAMQ,MAAM,GAAGR,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;EAC3C,MAAMS,QAAQ,GAAGT,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;;EAEnD,OAAO;IACHU,IAAI,EAAE,mBAAmB;IACzBC,QAAQ,EAAE,YAAY;IACtBC,IAAI,EAAEH,QAAQ;IACdI,GAAG,EAAE,yBAAyBN,KAAK,IAAIC,MAAM;EACjD,CAAC;AACL,CAAC;AAED,MAAMM,IAA6B,GAAG;EAClCC,KAAK,EAAE,4BAA4B;EACnCC,SAAS,EAAEjB,UAAU;EACrBkB,QAAQ,EAAE;IACNC,YAAY,EAAE;MAAEC,MAAM,EAAE;IAAe,CAAC;IACxCC,UAAU,EAAE;MAAED,MAAM,EAAE;IAAa,CAAC;IACpCE,YAAY,EAAE;MAAEF,MAAM,EAAE;IAAe,CAAC;IACxCG,QAAQ,EAAE;MACNC,OAAO,EAAE,SAAS;MAClBC,YAAY,EAAE;IAClB;EACJ,CAAC;EACDC,UAAU,EAAE;IACRC,MAAM,EAAE;EACZ,CAAC;EACDC,MAAM,EAAEC,IAAI,IAAI;IACZ,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAGjC,QAAQ,CAAC+B,IAAI,CAACG,KAAK,CAAC;IAC5D,oBACInC,KAAA,CAAAoC,aAAA,CAACjC,UAAU,EAAAkC,MAAA,CAAAC,MAAA,KACHN,IAAI;MACRG,KAAK,EAAEF,YAAa;MACpBX,YAAY,EAAEA,CAAA,KAAMY,eAAe,CAACxB,OAAO,CAAC,CAAC,CAAE;MAC/Ce,YAAY,EAAEA,CAAA,KAAMS,eAAe,CAAC,IAAI,CAAE;MAC1CV,UAAU,EAAEA,CAAA,KAAMe,KAAK,CAAC,cAAc;IAAE,EAC3C,CAAC;EAEV;AACJ,CAAC;AAED,eAAerB,IAAI;AAGnB,OAAO,MAAMsB,OAAc,GAAG,CAAC,CAAC;AAEhC,OAAO,MAAMC,QAAe,GAAG;EAC3BT,IAAI,EAAE;IACF,GAAGQ,OAAO,CAACR,IAAI;IACfU,IAAI,EAAE;EACV;AACJ,CAAC;AAED,OAAO,MAAMC,aAAoB,GAAG;EAChCX,IAAI,EAAE;IACF,GAAGS,QAAQ,CAACT,IAAI;IAChBY,KAAK,EAAE;EACX;AACJ,CAAC;AAED,OAAO,MAAMC,qBAA4B,GAAG;EACxCb,IAAI,EAAE;IACF,GAAGS,QAAQ,CAACT,IAAI;IAChBY,KAAK,EAAE,iBAAiB;IACxBE,QAAQ,EAAE;EACd;AACJ,CAAC;AAED,OAAO,MAAMC,mBAA0B,GAAG;EACtCf,IAAI,EAAE;IACF,GAAGS,QAAQ,CAACT,IAAI;IAChBgB,WAAW,EAAE;EACjB;AACJ,CAAC;AAED,OAAO,MAAMC,aAAoB,GAAG;EAChCjB,IAAI,EAAE;IACF,GAAGS,QAAQ,CAACT,IAAI;IAChBkB,IAAI,EAAE;EACV;AACJ,CAAC;AAED,OAAO,MAAMC,cAAqB,GAAG;EACjCnB,IAAI,EAAE;IACF,GAAGS,QAAQ,CAACT,IAAI;IAChBoB,UAAU,EAAE;MACRC,OAAO,EAAE,KAAK;MACdC,OAAO,EAAE;IACb;EACJ;AACJ,CAAC;AAED,OAAO,MAAMC,YAAmB,GAAG;EAC/BvB,IAAI,EAAE;IACF,GAAGS,QAAQ,CAACT,IAAI;IAChBY,KAAK,EAAE,iBAAiB;IACxBlB,QAAQ,EAAE;EACd;AACJ,CAAC;AAED,OAAO,MAAM8B,wBAA+B,GAAG;EAC3CxB,IAAI,EAAE;IACF,GAAGS,QAAQ,CAACT;EAChB,CAAC;EACDD,MAAM,EAAEC,IAAI,IAAI;IACZ,MAAM,CAACoB,UAAU,EAAEK,aAAa,CAAC,GAAGxD,QAAQ,CAAM;MAAEoD,OAAO,EAAE,IAAI;MAAEC,OAAO,EAAEI;IAAU,CAAC,CAAC;IAExF,MAAMC,QAAQ,GAAG,MAAAA,CAAA,KAAY;MACzBF,aAAa,CAAC;QAAEJ,OAAO,EAAE,KAAK;QAAEC,OAAO,EAAE;MAA4B,CAAC,CAAC;IAC3E,CAAC;IAED,oBAAOtD,KAAA,CAAAoC,aAAA,CAACjC,UAAU,EAAAkC,MAAA,CAAAC,MAAA,KAAKN,IAAI;MAAE2B,QAAQ,EAAEA,QAAS;MAACP,UAAU,EAAEA;IAAW,EAAE,CAAC;EAC/E;AACJ,CAAC;AAED,OAAO,MAAMQ,eAAsB,GAAG;EAClC5B,IAAI,EAAE;IACF,GAAGS,QAAQ,CAACT,IAAI;IAChBY,KAAK,EAAE,iBAAiB;IACxBE,QAAQ,EAAE,IAAI;IACdE,WAAW,EAAE,+DAA+D;IAC5EE,IAAI,EAAE,qEAAqE;IAC3EE,UAAU,EAAE;MACRC,OAAO,EAAE,KAAK;MACdC,OAAO,EAAE;IACb;EACJ;AACJ,CAAC;AAED,OAAO,MAAMO,OAAc,GAAG;EAC1B7B,IAAI,EAAE;IACF,GAAGQ,OAAO,CAACR,IAAI;IACfU,IAAI,EAAE;EACV;AACJ,CAAC;AAED,OAAO,MAAMoB,gBAAuB,GAAG;EACnC9B,IAAI,EAAE;IACF,GAAG6B,OAAO,CAAC7B,IAAI;IACfY,KAAK,EAAE;EACX;AACJ,CAAC;AAED,OAAO,MAAMmB,wBAA+B,GAAG;EAC3C/B,IAAI,EAAE;IACF,GAAG6B,OAAO,CAAC7B,IAAI;IACfY,KAAK,EAAE,iBAAiB;IACxBE,QAAQ,EAAE;EACd;AACJ,CAAC;AAED,OAAO,MAAMkB,sBAA6B,GAAG;EACzChC,IAAI,EAAE;IACF,GAAG6B,OAAO,CAAC7B,IAAI;IACfgB,WAAW,EAAE;EACjB;AACJ,CAAC;AAED,OAAO,MAAMiB,gBAAuB,GAAG;EACnCjC,IAAI,EAAE;IACF,GAAG6B,OAAO,CAAC7B,IAAI;IACfkB,IAAI,EAAE;EACV;AACJ,CAAC;AAED,OAAO,MAAMgB,iBAAwB,GAAG;EACpClC,IAAI,EAAE;IACF,GAAG6B,OAAO,CAAC7B,IAAI;IACfoB,UAAU,EAAE;MACRC,OAAO,EAAE,KAAK;MACdC,OAAO,EAAE;IACb;EACJ;AACJ,CAAC;AAED,OAAO,MAAMa,eAAsB,GAAG;EAClCnC,IAAI,EAAE;IACF,GAAG6B,OAAO,CAAC7B,IAAI;IACfY,KAAK,EAAE,iBAAiB;IACxBlB,QAAQ,EAAE;EACd;AACJ,CAAC;AAED,OAAO,MAAM0C,2BAAkC,GAAG;EAC9CpC,IAAI,EAAE;IACF,GAAG6B,OAAO,CAAC7B;EACf,CAAC;EACDD,MAAM,EAAEC,IAAI,IAAI;IACZ,MAAM,CAACoB,UAAU,EAAEK,aAAa,CAAC,GAAGxD,QAAQ,CAAM;MAAEoD,OAAO,EAAE,IAAI;MAAEC,OAAO,EAAEI;IAAU,CAAC,CAAC;IAExF,MAAMC,QAAQ,GAAG,MAAAA,CAAA,KAAY;MACzBF,aAAa,CAAC;QAAEJ,OAAO,EAAE,KAAK;QAAEC,OAAO,EAAE;MAA4B,CAAC,CAAC;IAC3E,CAAC;IAED,oBAAOtD,KAAA,CAAAoC,aAAA,CAACjC,UAAU,EAAAkC,MAAA,CAAAC,MAAA,KAAKN,IAAI;MAAE2B,QAAQ,EAAEA,QAAS;MAACP,UAAU,EAAEA;IAAW,EAAE,CAAC;EAC/E;AACJ,CAAC;AAED,OAAO,MAAMiB,kBAAyB,GAAG;EACrCrC,IAAI,EAAE;IACF,GAAG6B,OAAO,CAAC7B,IAAI;IACfY,KAAK,EAAE,iBAAiB;IACxBE,QAAQ,EAAE,IAAI;IACdE,WAAW,EAAE,+DAA+D;IAC5EE,IAAI,EAAE,qEAAqE;IAC3EE,UAAU,EAAE;MACRC,OAAO,EAAE,KAAK;MACdC,OAAO,EAAE;IACb;EACJ;AACJ,CAAC;AAED,OAAO,MAAMgB,aAAoB,GAAG;EAChCvC,MAAM,EAAEC,IAAI,IAAI;IACZ,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAGjC,QAAQ,CAAC+B,IAAI,CAACG,KAAK,CAAC;IAC5D,MAAM,CAACiB,UAAU,EAAEK,aAAa,CAAC,GAAGxD,QAAQ,CAAC;MAAEoD,OAAO,EAAE,IAAI;MAAEC,OAAO,EAAE;IAAG,CAAC,CAAC;;IAE5E;IACApD,SAAS,CAAC,MAAM;MACZgC,eAAe,CAACF,IAAI,CAACG,KAAK,CAAC;IAC/B,CAAC,EAAE,CAACH,IAAI,CAACG,KAAK,CAAC,CAAC;IAEhB,MAAMoC,YAAY,GAAGA,CAAA,KAAM;MACvBrC,eAAe,CAACxB,OAAO,CAAC,CAAC,CAAC;MAC1B+C,aAAa,CAAC;QAAEJ,OAAO,EAAE,IAAI;QAAEC,OAAO,EAAE;MAAG,CAAC,CAAC;IACjD,CAAC;IAED,MAAMkB,UAAU,GAAIC,IAAS,IAAK;MAC9B,IAAIA,IAAI,EAAE;QACNC,OAAO,CAACC,GAAG,CAAC,eAAe,EAAEF,IAAI,CAAC;QAClClC,KAAK,CAAC,iBAAiBkC,IAAI,CAAC3D,IAAI,EAAE,CAAC;MACvC;IACJ,CAAC;IAED,MAAM8D,YAAY,GAAGA,CAAA,KAAM;MACvB1C,eAAe,CAAC,IAAI,CAAC;MAErB,IAAIF,IAAI,CAACc,QAAQ,EAAE;QACfW,aAAa,CAAC;UAAEJ,OAAO,EAAE,KAAK;UAAEC,OAAO,EAAE;QAAuB,CAAC,CAAC;MACtE;IACJ,CAAC;;IAED;IACApD,SAAS,CAAC,MAAM;MACZ,IAAI8B,IAAI,CAACc,QAAQ,IAAI,CAACb,YAAY,EAAE;QAChCwB,aAAa,CAAC;UAAEJ,OAAO,EAAE,KAAK;UAAEC,OAAO,EAAE;QAAuB,CAAC,CAAC;MACtE,CAAC,MAAM;QACHG,aAAa,CAAC;UAAEJ,OAAO,EAAE,IAAI;UAAEC,OAAO,EAAE;QAAG,CAAC,CAAC;MACjD;IACJ,CAAC,EAAE,CAACtB,IAAI,CAACc,QAAQ,EAAEb,YAAY,CAAC,CAAC;IAEjC,oBACIjC,KAAA,CAAAoC,aAAA,CAACjC,UAAU,EAAAkC,MAAA,CAAAC,MAAA,KACHN,IAAI;MACRG,KAAK,EAAEF,YAAa;MACpBX,YAAY,EAAEiD,YAAa;MAC3B9C,YAAY,EAAEmD,YAAa;MAC3BpD,UAAU,EAAEgD,UAAW;MACvBpB,UAAU,EAAEA;IAAW,EAC1B,CAAC;EAEV,CAAC;EACDpB,IAAI,EAAE;IACFY,KAAK,EAAE,cAAc;IACrBE,QAAQ,EAAE,IAAI;IACdpB,QAAQ,EAAE,KAAK;IACfsB,WAAW,EAAE,yCAAyC;IACtDE,IAAI,EAAE,gCAAgC;IACtCR,IAAI,EAAE,MAAM;IACZP,KAAK,EAAE,IAAI;IACXiB,UAAU,EAAEM,SAAS;IACrBpC,YAAY,EAAEoC,SAAS;IACvBlC,UAAU,EAAEkC,SAAS;IACrBjC,YAAY,EAAEiC;EAClB,CAAC;EACDrC,QAAQ,EAAE;IACNuB,KAAK,EAAE;MACHI,WAAW,EAAE,gCAAgC;MAC7CrB,OAAO,EAAE;IACb,CAAC;IACDmB,QAAQ,EAAE;MACNE,WAAW,EAAE,2CAA2C;MACxDrB,OAAO,EAAE;IACb,CAAC;IACDD,QAAQ,EAAE;MACNsB,WAAW,EAAE,2CAA2C;MACxDrB,OAAO,EAAE;IACb,CAAC;IACDqB,WAAW,EAAE;MACTA,WAAW,EAAE,6CAA6C;MAC1DrB,OAAO,EAAE;IACb,CAAC;IACDuB,IAAI,EAAE;MACFF,WAAW,EAAE,sCAAsC;MACnDrB,OAAO,EAAE;IACb,CAAC;IACDe,IAAI,EAAE;MACFM,WAAW,EAAE,qCAAqC;MAClDrB,OAAO,EAAE,OAAO;MAChBkD,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS;IAC/B,CAAC;IACD1C,KAAK,EAAE;MACHa,WAAW,EAAE,6BAA6B;MAC1CrB,OAAO,EAAE;IACb,CAAC;IACDyB,UAAU,EAAE;MACRJ,WAAW,EACP;IACR,CAAC;IACD1B,YAAY,EAAE;MACV0B,WAAW,EAAE;IACjB,CAAC;IACDxB,UAAU,EAAE;MACRwB,WAAW,EAAE;IACjB,CAAC;IACDvB,YAAY,EAAE;MACVuB,WAAW,EAAE;IACjB;EACJ;AACJ,CAAC","ignoreList":[]}
|
|
@@ -17,10 +17,12 @@ export class FileItem {
|
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
static createFromUrl(url) {
|
|
20
|
+
console.log("createFromUrl", url);
|
|
20
21
|
const documentUrl = new URL(url);
|
|
21
22
|
const pathname = documentUrl.pathname;
|
|
22
23
|
const name = pathname.substring(pathname.lastIndexOf("/") + 1);
|
|
23
24
|
const extension = name.split(".").pop()?.toLowerCase() || "";
|
|
25
|
+
console.log("extension", extension);
|
|
24
26
|
|
|
25
27
|
// Map extensions to mimetypes
|
|
26
28
|
const mimeTypes = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["generateId","FileItem","constructor","data","_id","id","_name","name","_url","url","_mimeType","mimeType","_size","size","create","getDefaultMimeType","createFromUrl","documentUrl","URL","pathname","substring","lastIndexOf","extension","split","pop","toLowerCase","mimeTypes","jpg","jpeg","png","gif","bmp","webp","svg","ico","tif","tiff","pdf","txt","csv","json","xml","html","xhtml","md","doc","docx","xls","xlsx","ppt","pptx","odt","ods","odp","mp3","wav","ogg","flac","aac","m4a","mp4","avi","mov","mkv","webm","flv","wmv","zip","rar","tar","gz","bz2","js","ts","css","py","java","c","cpp","sh","php","rb","go","swift"],"sources":["FileItem.ts"],"sourcesContent":["import type { FileItemDto } from \"./FileItemDto.js\";\nimport { generateId } from \"~/utils.js\";\n\nexport class FileItem {\n private readonly _id: string;\n private readonly _name: string;\n private readonly _url: string;\n private readonly _mimeType: string;\n private readonly _size: number;\n\n protected constructor(data: {\n id: string;\n name: string;\n url: string;\n mimeType: string;\n size: number;\n }) {\n this._id = data.id;\n this._name = data.name;\n this._url = data.url;\n this._mimeType = data.mimeType;\n this._size = data.size;\n }\n\n static create(data: FileItemDto): FileItem {\n return new FileItem({\n id: generateId(data.id),\n name: data.name ?? data.url,\n url: data.url,\n mimeType: data.mimeType ?? this.getDefaultMimeType(),\n size: data.size ?? 0\n });\n }\n\n static createFromUrl(url: string): FileItem {\n const documentUrl = new URL(url);\n const pathname = documentUrl.pathname;\n const name = pathname.substring(pathname.lastIndexOf(\"/\") + 1);\n const extension = name.split(\".\").pop()?.toLowerCase() || \"\";\n\n // Map extensions to mimetypes\n const mimeTypes: Record<string, string> = {\n // Images\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n png: \"image/png\",\n gif: \"image/gif\",\n bmp: \"image/bmp\",\n webp: \"image/webp\",\n svg: \"image/svg+xml\",\n ico: \"image/x-icon\",\n tif: \"image/tiff\",\n tiff: \"image/tiff\",\n\n // Documents\n pdf: \"application/pdf\",\n txt: \"text/plain\",\n csv: \"text/csv\",\n json: \"application/json\",\n xml: \"application/xml\",\n html: \"text/html\",\n xhtml: \"application/xhtml+xml\",\n md: \"text/markdown\",\n\n // Microsoft Office\n doc: \"application/msword\",\n docx: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n xls: \"application/vnd.ms-excel\",\n xlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n ppt: \"application/vnd.ms-powerpoint\",\n pptx: \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n\n // Open Document Format\n odt: \"application/vnd.oasis.opendocument.text\",\n ods: \"application/vnd.oasis.opendocument.spreadsheet\",\n odp: \"application/vnd.oasis.opendocument.presentation\",\n\n // Audio\n mp3: \"audio/mpeg\",\n wav: \"audio/wav\",\n ogg: \"audio/ogg\",\n flac: \"audio/flac\",\n aac: \"audio/aac\",\n m4a: \"audio/mp4\",\n\n // Video\n mp4: \"video/mp4\",\n avi: \"video/x-msvideo\",\n mov: \"video/quicktime\",\n mkv: \"video/x-matroska\",\n webm: \"video/webm\",\n flv: \"video/x-flv\",\n wmv: \"video/x-ms-wmv\",\n\n // Archives & Compressed\n zip: \"application/zip\",\n rar: \"application/vnd.rar\",\n tar: \"application/x-tar\",\n gz: \"application/gzip\",\n bz2: \"application/x-bzip2\",\n \"7z\": \"application/x-7z-compressed\",\n\n // Code & Scripts\n js: \"application/javascript\",\n ts: \"application/typescript\",\n css: \"text/css\",\n py: \"text/x-python\",\n java: \"text/x-java-source\",\n c: \"text/x-c\",\n cpp: \"text/x-c++\",\n sh: \"application/x-sh\",\n php: \"application/x-httpd-php\",\n rb: \"application/x-ruby\",\n go: \"text/x-go\",\n swift: \"text/x-swift\"\n };\n\n return new FileItem({\n id: generateId(),\n name,\n url,\n mimeType: mimeTypes[extension] ?? this.getDefaultMimeType(),\n size: 0\n });\n }\n\n get id() {\n return this._id;\n }\n\n get name() {\n return this._name;\n }\n\n get url() {\n return this._url;\n }\n\n get size() {\n return this._size;\n }\n\n get mimeType() {\n return this._mimeType;\n }\n\n private static getDefaultMimeType(): string {\n return \"application/octet-stream\";\n }\n}\n"],"mappings":"AACA,SAASA,UAAU;AAEnB,OAAO,MAAMC,QAAQ,CAAC;EAORC,WAAWA,CAACC,IAMrB,EAAE;IACC,IAAI,CAACC,GAAG,GAAGD,IAAI,CAACE,EAAE;IAClB,IAAI,CAACC,KAAK,GAAGH,IAAI,CAACI,IAAI;IACtB,IAAI,CAACC,IAAI,GAAGL,IAAI,CAACM,GAAG;IACpB,IAAI,CAACC,SAAS,GAAGP,IAAI,CAACQ,QAAQ;IAC9B,IAAI,CAACC,KAAK,GAAGT,IAAI,CAACU,IAAI;EAC1B;EAEA,OAAOC,MAAMA,CAACX,IAAiB,EAAY;IACvC,OAAO,IAAIF,QAAQ,CAAC;MAChBI,EAAE,EAAEL,UAAU,CAACG,IAAI,CAACE,EAAE,CAAC;MACvBE,IAAI,EAAEJ,IAAI,CAACI,IAAI,IAAIJ,IAAI,CAACM,GAAG;MAC3BA,GAAG,EAAEN,IAAI,CAACM,GAAG;MACbE,QAAQ,EAAER,IAAI,CAACQ,QAAQ,IAAI,IAAI,CAACI,kBAAkB,CAAC,CAAC;MACpDF,IAAI,EAAEV,IAAI,CAACU,IAAI,IAAI;IACvB,CAAC,CAAC;EACN;EAEA,OAAOG,aAAaA,CAACP,GAAW,EAAY;
|
|
1
|
+
{"version":3,"names":["generateId","FileItem","constructor","data","_id","id","_name","name","_url","url","_mimeType","mimeType","_size","size","create","getDefaultMimeType","createFromUrl","console","log","documentUrl","URL","pathname","substring","lastIndexOf","extension","split","pop","toLowerCase","mimeTypes","jpg","jpeg","png","gif","bmp","webp","svg","ico","tif","tiff","pdf","txt","csv","json","xml","html","xhtml","md","doc","docx","xls","xlsx","ppt","pptx","odt","ods","odp","mp3","wav","ogg","flac","aac","m4a","mp4","avi","mov","mkv","webm","flv","wmv","zip","rar","tar","gz","bz2","js","ts","css","py","java","c","cpp","sh","php","rb","go","swift"],"sources":["FileItem.ts"],"sourcesContent":["import type { FileItemDto } from \"./FileItemDto.js\";\nimport { generateId } from \"~/utils.js\";\n\nexport class FileItem {\n private readonly _id: string;\n private readonly _name: string;\n private readonly _url: string;\n private readonly _mimeType: string;\n private readonly _size: number;\n\n protected constructor(data: {\n id: string;\n name: string;\n url: string;\n mimeType: string;\n size: number;\n }) {\n this._id = data.id;\n this._name = data.name;\n this._url = data.url;\n this._mimeType = data.mimeType;\n this._size = data.size;\n }\n\n static create(data: FileItemDto): FileItem {\n return new FileItem({\n id: generateId(data.id),\n name: data.name ?? data.url,\n url: data.url,\n mimeType: data.mimeType ?? this.getDefaultMimeType(),\n size: data.size ?? 0\n });\n }\n\n static createFromUrl(url: string): FileItem {\n console.log(\"createFromUrl\", url);\n const documentUrl = new URL(url);\n const pathname = documentUrl.pathname;\n const name = pathname.substring(pathname.lastIndexOf(\"/\") + 1);\n const extension = name.split(\".\").pop()?.toLowerCase() || \"\";\n console.log(\"extension\", extension);\n\n // Map extensions to mimetypes\n const mimeTypes: Record<string, string> = {\n // Images\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n png: \"image/png\",\n gif: \"image/gif\",\n bmp: \"image/bmp\",\n webp: \"image/webp\",\n svg: \"image/svg+xml\",\n ico: \"image/x-icon\",\n tif: \"image/tiff\",\n tiff: \"image/tiff\",\n\n // Documents\n pdf: \"application/pdf\",\n txt: \"text/plain\",\n csv: \"text/csv\",\n json: \"application/json\",\n xml: \"application/xml\",\n html: \"text/html\",\n xhtml: \"application/xhtml+xml\",\n md: \"text/markdown\",\n\n // Microsoft Office\n doc: \"application/msword\",\n docx: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n xls: \"application/vnd.ms-excel\",\n xlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n ppt: \"application/vnd.ms-powerpoint\",\n pptx: \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n\n // Open Document Format\n odt: \"application/vnd.oasis.opendocument.text\",\n ods: \"application/vnd.oasis.opendocument.spreadsheet\",\n odp: \"application/vnd.oasis.opendocument.presentation\",\n\n // Audio\n mp3: \"audio/mpeg\",\n wav: \"audio/wav\",\n ogg: \"audio/ogg\",\n flac: \"audio/flac\",\n aac: \"audio/aac\",\n m4a: \"audio/mp4\",\n\n // Video\n mp4: \"video/mp4\",\n avi: \"video/x-msvideo\",\n mov: \"video/quicktime\",\n mkv: \"video/x-matroska\",\n webm: \"video/webm\",\n flv: \"video/x-flv\",\n wmv: \"video/x-ms-wmv\",\n\n // Archives & Compressed\n zip: \"application/zip\",\n rar: \"application/vnd.rar\",\n tar: \"application/x-tar\",\n gz: \"application/gzip\",\n bz2: \"application/x-bzip2\",\n \"7z\": \"application/x-7z-compressed\",\n\n // Code & Scripts\n js: \"application/javascript\",\n ts: \"application/typescript\",\n css: \"text/css\",\n py: \"text/x-python\",\n java: \"text/x-java-source\",\n c: \"text/x-c\",\n cpp: \"text/x-c++\",\n sh: \"application/x-sh\",\n php: \"application/x-httpd-php\",\n rb: \"application/x-ruby\",\n go: \"text/x-go\",\n swift: \"text/x-swift\"\n };\n\n return new FileItem({\n id: generateId(),\n name,\n url,\n mimeType: mimeTypes[extension] ?? this.getDefaultMimeType(),\n size: 0\n });\n }\n\n get id() {\n return this._id;\n }\n\n get name() {\n return this._name;\n }\n\n get url() {\n return this._url;\n }\n\n get size() {\n return this._size;\n }\n\n get mimeType() {\n return this._mimeType;\n }\n\n private static getDefaultMimeType(): string {\n return \"application/octet-stream\";\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { IconButtonProps
|
|
2
|
+
import type { IconButtonProps } from "../../Button/index.js";
|
|
3
3
|
type ListItemActionProps = IconButtonProps;
|
|
4
4
|
declare const ListItemAction: ((props: ListItemActionProps) => React.JSX.Element) & {
|
|
5
5
|
original: (props: ListItemActionProps) => React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","makeDecoratable","withStaticProps","IconButton","ListItemSeparator","DecoratableListItemAction","props","createElement","Object","assign","variant","size","ListItemAction","Separator"],"sources":["ListItemAction.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { makeDecoratable, withStaticProps } from \"~/utils.js\";\nimport type { IconButtonProps
|
|
1
|
+
{"version":3,"names":["React","makeDecoratable","withStaticProps","IconButton","ListItemSeparator","DecoratableListItemAction","props","createElement","Object","assign","variant","size","ListItemAction","Separator"],"sources":["ListItemAction.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { makeDecoratable, withStaticProps } from \"~/utils.js\";\nimport type { IconButtonProps } from \"~/Button/index.js\";\nimport { IconButton } from \"~/Button/index.js\";\nimport { ListItemSeparator } from \"./ListItemSeparator.js\";\n\ntype ListItemActionProps = IconButtonProps;\n\nconst DecoratableListItemAction = (props: ListItemActionProps) => {\n return <IconButton variant={\"ghost\"} size={\"sm\"} {...props} />;\n};\n\nconst ListItemAction = withStaticProps(\n makeDecoratable(\"ListItemAction\", DecoratableListItemAction),\n {\n Separator: ListItemSeparator\n }\n);\n\nexport { ListItemAction, type ListItemActionProps };\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,eAAe,EAAEC,eAAe;AAEzC,SAASC,UAAU;AACnB,SAASC,iBAAiB;AAI1B,MAAMC,yBAAyB,GAAIC,KAA0B,IAAK;EAC9D,oBAAON,KAAA,CAAAO,aAAA,CAACJ,UAAU,EAAAK,MAAA,CAAAC,MAAA;IAACC,OAAO,EAAE,OAAQ;IAACC,IAAI,EAAE;EAAK,GAAKL,KAAK,CAAG,CAAC;AAClE,CAAC;AAED,MAAMM,cAAc,GAAGV,eAAe,CAClCD,eAAe,CAAC,gBAAgB,EAAEI,yBAAyB,CAAC,EAC5D;EACIQ,SAAS,EAAET;AACf,CACJ,CAAC;AAED,SAASQ,cAAc","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { IconProps
|
|
2
|
+
import type { IconProps } from "../../Icon/index.js";
|
|
3
3
|
interface ListItemHandleProps extends Omit<IconProps, "icon" | "label"> {
|
|
4
4
|
icon?: React.ReactElement;
|
|
5
5
|
label?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","ReactComponent","DragHandleIcon","makeDecoratable","Icon","DecoratableListItemHandle","props","createElement","Object","assign","size","color","className","icon","label","ListItemHandle"],"sources":["ListItemHandle.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { ReactComponent as DragHandleIcon } from \"@webiny/icons/drag_indicator.svg\";\nimport { makeDecoratable } from \"~/utils.js\";\nimport type { IconProps
|
|
1
|
+
{"version":3,"names":["React","ReactComponent","DragHandleIcon","makeDecoratable","Icon","DecoratableListItemHandle","props","createElement","Object","assign","size","color","className","icon","label","ListItemHandle"],"sources":["ListItemHandle.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { ReactComponent as DragHandleIcon } from \"@webiny/icons/drag_indicator.svg\";\nimport { makeDecoratable } from \"~/utils.js\";\nimport type { IconProps } from \"~/Icon/index.js\";\nimport { Icon } from \"~/Icon/index.js\";\n\ninterface ListItemHandleProps extends Omit<IconProps, \"icon\" | \"label\"> {\n icon?: React.ReactElement;\n label?: string;\n}\n\nconst DecoratableListItemHandle = (props: ListItemHandleProps) => {\n return (\n <Icon\n size={\"md\"}\n color={\"neutral-light\"}\n className={\"mx-xxs cursor-grab\"}\n icon={<DragHandleIcon />}\n label={\"Drag handle\"}\n {...props}\n />\n );\n};\n\nconst ListItemHandle = makeDecoratable(\"ListItemHandle\", DecoratableListItemHandle);\n\nexport { ListItemHandle, type ListItemHandleProps };\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,cAAc,IAAIC,cAAc,QAAQ,kCAAkC;AACnF,SAASC,eAAe;AAExB,SAASC,IAAI;AAOb,MAAMC,yBAAyB,GAAIC,KAA0B,IAAK;EAC9D,oBACIN,KAAA,CAAAO,aAAA,CAACH,IAAI,EAAAI,MAAA,CAAAC,MAAA;IACDC,IAAI,EAAE,IAAK;IACXC,KAAK,EAAE,eAAgB;IACvBC,SAAS,EAAE,oBAAqB;IAChCC,IAAI,eAAEb,KAAA,CAAAO,aAAA,CAACL,cAAc,MAAE,CAAE;IACzBY,KAAK,EAAE;EAAc,GACjBR,KAAK,CACZ,CAAC;AAEV,CAAC;AAED,MAAMS,cAAc,GAAGZ,eAAe,CAAC,gBAAgB,EAAEE,yBAAyB,CAAC;AAEnF,SAASU,cAAc","ignoreList":[]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React, { useState, useEffect } from "react";
|
|
2
2
|
import { MultiFilePicker } from "./index.js";
|
|
3
|
-
import { AdminUiProvider } from "../AdminUiProvider/index.js";
|
|
4
3
|
const getRandomNumber = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
|
|
5
4
|
const createFileList = (size = 10) => {
|
|
6
5
|
return Array.from({
|
|
@@ -41,7 +40,7 @@ const meta = {
|
|
|
41
40
|
},
|
|
42
41
|
render: args => {
|
|
43
42
|
const [selectedFiles, setSelectedFiles] = useState([]);
|
|
44
|
-
return /*#__PURE__*/React.createElement(
|
|
43
|
+
return /*#__PURE__*/React.createElement(MultiFilePicker, Object.assign({}, args, {
|
|
45
44
|
values: selectedFiles,
|
|
46
45
|
onSelectItem: () => setSelectedFiles(createFileList()),
|
|
47
46
|
onReplaceItem: (_, index) => setSelectedFiles(prevState => {
|
|
@@ -52,7 +51,7 @@ const meta = {
|
|
|
52
51
|
}),
|
|
53
52
|
onRemoveItem: item => setSelectedFiles(prevState => prevState?.filter(value => value.name !== item?.name)),
|
|
54
53
|
onEditItem: (item, i) => alert(`Editing ${item?.name} at position ${i}`)
|
|
55
|
-
}))
|
|
54
|
+
}));
|
|
56
55
|
}
|
|
57
56
|
};
|
|
58
57
|
export default meta;
|
|
@@ -297,14 +296,14 @@ export const Documentation = {
|
|
|
297
296
|
});
|
|
298
297
|
}
|
|
299
298
|
}, [args.required, selectedFiles]);
|
|
300
|
-
return /*#__PURE__*/React.createElement(
|
|
299
|
+
return /*#__PURE__*/React.createElement(MultiFilePicker, Object.assign({}, args, {
|
|
301
300
|
values: selectedFiles,
|
|
302
301
|
onSelectItem: handleSelect,
|
|
303
302
|
onReplaceItem: handleReplace,
|
|
304
303
|
onRemoveItem: handleRemove,
|
|
305
304
|
onEditItem: handleEdit,
|
|
306
305
|
validation: validation
|
|
307
|
-
}))
|
|
306
|
+
}));
|
|
308
307
|
},
|
|
309
308
|
args: {
|
|
310
309
|
label: "Upload Images",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","useEffect","MultiFilePicker","AdminUiProvider","getRandomNumber","min","max","Math","floor","random","createFileList","size","Array","from","length","_","index","width","height","fileSize","name","mimeType","url","meta","title","component","argTypes","onSelectItem","action","onEditItem","onRemoveItem","disabled","control","defaultValue","parameters","layout","render","args","selectedFiles","setSelectedFiles","createElement","Object","assign","values","onReplaceItem","prevState","slice","item","filter","value","i","alert","Default","AreaType","type","AreaWithLabel","label","AreaWithLabelRequired","required","AreaWithDescription","description","AreaWithNotes","note","AreaWithErrors","validation","isValid","message","AreaDisabled","AreaWithValidateFunction","setValidation","undefined","validate","AreaFullExample","Compact","CompactWithLabel","CompactWithLabelRequired","CompactWithDescription","CompactWithNotes","CompactWithErrors","CompactDisabled","CompactWithValidateFunction","CompactFullExample","Documentation","isArray","formattedValues","map","split","pop","handleSelect","handleReplace","handleEdit","file","console","log","handleRemove","options"],"sources":["MultiFilePicker.stories.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport type { Meta, StoryObj } from \"@storybook/react-webpack5\";\nimport { type FileItemDto, MultiFilePicker } from \"~/MultiFilePicker/index.js\";\nimport { AdminUiProvider } from \"~/AdminUiProvider/index.js\";\n\nconst getRandomNumber = (min: number, max: number): number =>\n Math.floor(Math.random() * (max - min + 1)) + min;\n\nconst createFileList = (size: number = 10): FileItemDto[] => {\n return Array.from({ length: size }, (_, index) => {\n const width = getRandomNumber(500, 2000); // Random width between 500 and 2000\n const height = getRandomNumber(500, 2000); // Random height between 500 and 2000\n const fileSize = getRandomNumber(500000, 5000000); // Random file size between 500KB and 5MB\n\n return {\n name: `file-${index + 1}.jpg`,\n mimeType: \"image/jpeg\",\n size: fileSize,\n url: `https://picsum.photos/${width}/${height}`\n };\n });\n};\n\nconst meta: Meta<typeof MultiFilePicker> = {\n title: \"Components/Form/Multi FilePicker\",\n component: MultiFilePicker,\n argTypes: {\n onSelectItem: { action: \"onSelectItem\" },\n onEditItem: { action: \"onEditItem\" },\n onRemoveItem: { action: \"onRemoveItem\" },\n disabled: {\n control: \"boolean\",\n defaultValue: false\n }\n },\n parameters: {\n layout: \"padded\"\n },\n render: args => {\n const [selectedFiles, setSelectedFiles] = useState<FileItemDto[]>([]);\n return (\n <AdminUiProvider>\n <MultiFilePicker\n {...args}\n values={selectedFiles}\n onSelectItem={() => setSelectedFiles(createFileList())}\n onReplaceItem={(_, index) =>\n setSelectedFiles(prevState => {\n if (!prevState) {\n return [];\n }\n\n return [\n ...prevState.slice(0, index),\n ...createFileList(1),\n ...prevState.slice(index + 1)\n ];\n })\n }\n onRemoveItem={item =>\n setSelectedFiles(prevState =>\n prevState?.filter(value => value.name !== item?.name)\n )\n }\n onEditItem={(item, i) => alert(`Editing ${item?.name} at position ${i}`)}\n />\n </AdminUiProvider>\n );\n }\n};\n\nexport default meta;\ntype Story = StoryObj<typeof MultiFilePicker>;\n\nexport const Default: Story = {};\n\nexport const AreaType: Story = {\n args: {\n ...Default.args,\n type: \"area\"\n }\n};\n\nexport const AreaWithLabel: Story = {\n args: {\n ...AreaType.args,\n label: \"Any field label\"\n }\n};\n\nexport const AreaWithLabelRequired: Story = {\n args: {\n ...AreaType.args,\n label: \"Any field label\",\n required: true\n }\n};\n\nexport const AreaWithDescription: Story = {\n args: {\n ...AreaType.args,\n description: \"Provide the required information for processing your request.\"\n }\n};\n\nexport const AreaWithNotes: Story = {\n args: {\n ...AreaType.args,\n note: \"Note: Ensure your selection or input is accurate before proceeding.\"\n }\n};\n\nexport const AreaWithErrors: Story = {\n args: {\n ...AreaType.args,\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const AreaDisabled: Story = {\n args: {\n ...AreaType.args,\n label: \"Any field label\",\n disabled: true\n }\n};\n\nexport const AreaWithValidateFunction: Story = {\n args: {\n ...AreaType.args\n },\n render: args => {\n const [validation, setValidation] = useState<any>({ isValid: true, message: undefined });\n\n const validate = async () => {\n setValidation({ isValid: false, message: \"Any custom error message.\" });\n };\n\n return <MultiFilePicker {...args} validate={validate} validation={validation} />;\n }\n};\n\nexport const AreaFullExample: Story = {\n args: {\n ...AreaType.args,\n label: \"Any field label\",\n required: true,\n description: \"Provide the required information for processing your request.\",\n note: \"Note: Ensure your selection or input is accurate before proceeding.\",\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const Compact: Story = {\n args: {\n ...Default.args,\n type: \"compact\"\n }\n};\n\nexport const CompactWithLabel: Story = {\n args: {\n ...Compact.args,\n label: \"Any field label\"\n }\n};\n\nexport const CompactWithLabelRequired: Story = {\n args: {\n ...Compact.args,\n label: \"Any field label\",\n required: true\n }\n};\n\nexport const CompactWithDescription: Story = {\n args: {\n ...Compact.args,\n description: \"Provide the required information for processing your request.\"\n }\n};\n\nexport const CompactWithNotes: Story = {\n args: {\n ...Compact.args,\n note: \"Note: Ensure your selection or input is accurate before proceeding.\"\n }\n};\n\nexport const CompactWithErrors: Story = {\n args: {\n ...Compact.args,\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const CompactDisabled: Story = {\n args: {\n ...Compact.args,\n label: \"Any field label\",\n disabled: true\n }\n};\n\nexport const CompactWithValidateFunction: Story = {\n args: {\n ...Compact.args\n },\n render: args => {\n const [validation, setValidation] = useState<any>({ isValid: true, message: undefined });\n\n const validate = async () => {\n setValidation({ isValid: false, message: \"Any custom error message.\" });\n };\n\n return <MultiFilePicker {...args} validate={validate} validation={validation} />;\n }\n};\n\nexport const CompactFullExample: Story = {\n args: {\n ...Compact.args,\n label: \"Any field label\",\n required: true,\n description: \"Provide the required information for processing your request.\",\n note: \"Note: Ensure your selection or input is accurate before proceeding.\",\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const Documentation: Story = {\n render: args => {\n const [selectedFiles, setSelectedFiles] = useState<FileItemDto[]>([]);\n const [validation, setValidation] = useState({ isValid: true, message: \"\" });\n\n // Update value when args.values changes\n useEffect(() => {\n if (!args.values) {\n setSelectedFiles([]);\n } else if (Array.isArray(args.values)) {\n // Convert any string values to FileItemDto format\n const formattedValues = args.values.map(value => {\n if (typeof value === \"string\") {\n return {\n name: value.split(\"/\").pop() || \"file\",\n mimeType: \"image/jpeg\", // Default mime type\n size: 0,\n url: value\n };\n }\n return value as FileItemDto;\n });\n setSelectedFiles(formattedValues);\n }\n }, [args.values]);\n\n const handleSelect = () => {\n setSelectedFiles(createFileList(3));\n setValidation({ isValid: true, message: \"\" });\n };\n\n const handleReplace = (_: any, index: number) => {\n setSelectedFiles(prevState => {\n if (!prevState) {\n return [];\n }\n\n return [\n ...prevState.slice(0, index),\n ...createFileList(1),\n ...prevState.slice(index + 1)\n ];\n });\n setValidation({ isValid: true, message: \"\" });\n };\n\n const handleEdit = (file: any, index: number) => {\n if (file) {\n console.log(\"Editing file:\", file, \"at index:\", index);\n alert(`Editing File: ${file.name} at position ${index}`);\n }\n };\n\n const handleRemove = (file: any, index: number) => {\n setSelectedFiles(prevState => prevState?.filter((_, i) => i !== index));\n\n if (args.required && (!selectedFiles || selectedFiles.length <= 1)) {\n setValidation({ isValid: false, message: \"Please select at least one file\" });\n }\n };\n\n // Validate on required change or value change\n useEffect(() => {\n if (args.required && (!selectedFiles || selectedFiles.length === 0)) {\n setValidation({ isValid: false, message: \"Please select at least one file\" });\n } else {\n setValidation({ isValid: true, message: \"\" });\n }\n }, [args.required, selectedFiles]);\n\n return (\n <AdminUiProvider>\n <MultiFilePicker\n {...args}\n values={selectedFiles}\n onSelectItem={handleSelect}\n onReplaceItem={handleReplace}\n onRemoveItem={handleRemove}\n onEditItem={handleEdit}\n validation={validation}\n />\n </AdminUiProvider>\n );\n },\n args: {\n label: \"Upload Images\",\n required: true,\n disabled: false,\n description: \"Select files to upload (JPG, PNG, PDF)\",\n note: \"Note: Maximum file size is 5MB per file\",\n type: \"area\",\n values: [],\n validation: undefined,\n onSelectItem: undefined,\n onReplaceItem: undefined,\n onEditItem: undefined,\n onRemoveItem: undefined\n },\n argTypes: {\n label: {\n description: \"Label text for the file picker\",\n control: \"text\",\n defaultValue: \"Upload Images\"\n },\n type: {\n description: \"The type of file picker to display\",\n control: \"select\",\n options: [\"area\", \"compact\"],\n defaultValue: \"area\"\n },\n required: {\n description: \"Makes the field required when set to true\",\n control: \"boolean\",\n defaultValue: true\n },\n disabled: {\n description: \"Disables the field when set to true\",\n control: \"boolean\",\n defaultValue: false\n },\n description: {\n description: \"Additional description text below the field\",\n control: \"text\"\n },\n note: {\n description: \"Additional note text below the field\",\n control: \"text\"\n },\n values: {\n description: \"Array of selected files\",\n control: \"object\"\n },\n validation: {\n description:\n \"Validation state and message. Please refer to the example code for details on usage.\"\n },\n onSelectItem: {\n description:\n \"Callback when user selects files - Please refer to the example code for details on usage.\",\n action: \"onSelectItem\"\n },\n onReplaceItem: {\n description:\n \"Callback when user replaces a file - Please refer to the example code for details on usage.\",\n action: \"onReplaceItem\"\n },\n onEditItem: {\n description:\n \"Callback when user edits a file - Please refer to the example code for details on usage.\",\n action: \"onEditItem\"\n },\n onRemoveItem: {\n description:\n \"Callback when user removes a file - Please refer to the example code for details on usage.\",\n action: \"onRemoveItem\"\n }\n }\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useState","useEffect","MultiFilePicker","getRandomNumber","min","max","Math","floor","random","createFileList","size","Array","from","length","_","index","width","height","fileSize","name","mimeType","url","meta","title","component","argTypes","onSelectItem","action","onEditItem","onRemoveItem","disabled","control","defaultValue","parameters","layout","render","args","selectedFiles","setSelectedFiles","createElement","Object","assign","values","onReplaceItem","prevState","slice","item","filter","value","i","alert","Default","AreaType","type","AreaWithLabel","label","AreaWithLabelRequired","required","AreaWithDescription","description","AreaWithNotes","note","AreaWithErrors","validation","isValid","message","AreaDisabled","AreaWithValidateFunction","setValidation","undefined","validate","AreaFullExample","Compact","CompactWithLabel","CompactWithLabelRequired","CompactWithDescription","CompactWithNotes","CompactWithErrors","CompactDisabled","CompactWithValidateFunction","CompactFullExample","Documentation","isArray","formattedValues","map","split","pop","handleSelect","handleReplace","handleEdit","file","console","log","handleRemove","options"],"sources":["MultiFilePicker.stories.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport type { Meta, StoryObj } from \"@storybook/react-webpack5\";\nimport { type FileItemDto, MultiFilePicker } from \"~/MultiFilePicker/index.js\";\n\nconst getRandomNumber = (min: number, max: number): number =>\n Math.floor(Math.random() * (max - min + 1)) + min;\n\nconst createFileList = (size: number = 10): FileItemDto[] => {\n return Array.from({ length: size }, (_, index) => {\n const width = getRandomNumber(500, 2000); // Random width between 500 and 2000\n const height = getRandomNumber(500, 2000); // Random height between 500 and 2000\n const fileSize = getRandomNumber(500000, 5000000); // Random file size between 500KB and 5MB\n\n return {\n name: `file-${index + 1}.jpg`,\n mimeType: \"image/jpeg\",\n size: fileSize,\n url: `https://picsum.photos/${width}/${height}`\n };\n });\n};\n\nconst meta: Meta<typeof MultiFilePicker> = {\n title: \"Components/Form/Multi FilePicker\",\n component: MultiFilePicker,\n argTypes: {\n onSelectItem: { action: \"onSelectItem\" },\n onEditItem: { action: \"onEditItem\" },\n onRemoveItem: { action: \"onRemoveItem\" },\n disabled: {\n control: \"boolean\",\n defaultValue: false\n }\n },\n parameters: {\n layout: \"padded\"\n },\n render: args => {\n const [selectedFiles, setSelectedFiles] = useState<FileItemDto[]>([]);\n return (\n <MultiFilePicker\n {...args}\n values={selectedFiles}\n onSelectItem={() => setSelectedFiles(createFileList())}\n onReplaceItem={(_, index) =>\n setSelectedFiles(prevState => {\n if (!prevState) {\n return [];\n }\n\n return [\n ...prevState.slice(0, index),\n ...createFileList(1),\n ...prevState.slice(index + 1)\n ];\n })\n }\n onRemoveItem={item =>\n setSelectedFiles(prevState =>\n prevState?.filter(value => value.name !== item?.name)\n )\n }\n onEditItem={(item, i) => alert(`Editing ${item?.name} at position ${i}`)}\n />\n );\n }\n};\n\nexport default meta;\ntype Story = StoryObj<typeof MultiFilePicker>;\n\nexport const Default: Story = {};\n\nexport const AreaType: Story = {\n args: {\n ...Default.args,\n type: \"area\"\n }\n};\n\nexport const AreaWithLabel: Story = {\n args: {\n ...AreaType.args,\n label: \"Any field label\"\n }\n};\n\nexport const AreaWithLabelRequired: Story = {\n args: {\n ...AreaType.args,\n label: \"Any field label\",\n required: true\n }\n};\n\nexport const AreaWithDescription: Story = {\n args: {\n ...AreaType.args,\n description: \"Provide the required information for processing your request.\"\n }\n};\n\nexport const AreaWithNotes: Story = {\n args: {\n ...AreaType.args,\n note: \"Note: Ensure your selection or input is accurate before proceeding.\"\n }\n};\n\nexport const AreaWithErrors: Story = {\n args: {\n ...AreaType.args,\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const AreaDisabled: Story = {\n args: {\n ...AreaType.args,\n label: \"Any field label\",\n disabled: true\n }\n};\n\nexport const AreaWithValidateFunction: Story = {\n args: {\n ...AreaType.args\n },\n render: args => {\n const [validation, setValidation] = useState<any>({ isValid: true, message: undefined });\n\n const validate = async () => {\n setValidation({ isValid: false, message: \"Any custom error message.\" });\n };\n\n return <MultiFilePicker {...args} validate={validate} validation={validation} />;\n }\n};\n\nexport const AreaFullExample: Story = {\n args: {\n ...AreaType.args,\n label: \"Any field label\",\n required: true,\n description: \"Provide the required information for processing your request.\",\n note: \"Note: Ensure your selection or input is accurate before proceeding.\",\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const Compact: Story = {\n args: {\n ...Default.args,\n type: \"compact\"\n }\n};\n\nexport const CompactWithLabel: Story = {\n args: {\n ...Compact.args,\n label: \"Any field label\"\n }\n};\n\nexport const CompactWithLabelRequired: Story = {\n args: {\n ...Compact.args,\n label: \"Any field label\",\n required: true\n }\n};\n\nexport const CompactWithDescription: Story = {\n args: {\n ...Compact.args,\n description: \"Provide the required information for processing your request.\"\n }\n};\n\nexport const CompactWithNotes: Story = {\n args: {\n ...Compact.args,\n note: \"Note: Ensure your selection or input is accurate before proceeding.\"\n }\n};\n\nexport const CompactWithErrors: Story = {\n args: {\n ...Compact.args,\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const CompactDisabled: Story = {\n args: {\n ...Compact.args,\n label: \"Any field label\",\n disabled: true\n }\n};\n\nexport const CompactWithValidateFunction: Story = {\n args: {\n ...Compact.args\n },\n render: args => {\n const [validation, setValidation] = useState<any>({ isValid: true, message: undefined });\n\n const validate = async () => {\n setValidation({ isValid: false, message: \"Any custom error message.\" });\n };\n\n return <MultiFilePicker {...args} validate={validate} validation={validation} />;\n }\n};\n\nexport const CompactFullExample: Story = {\n args: {\n ...Compact.args,\n label: \"Any field label\",\n required: true,\n description: \"Provide the required information for processing your request.\",\n note: \"Note: Ensure your selection or input is accurate before proceeding.\",\n validation: {\n isValid: false,\n message: \"This field is required.\"\n }\n }\n};\n\nexport const Documentation: Story = {\n render: args => {\n const [selectedFiles, setSelectedFiles] = useState<FileItemDto[]>([]);\n const [validation, setValidation] = useState({ isValid: true, message: \"\" });\n\n // Update value when args.values changes\n useEffect(() => {\n if (!args.values) {\n setSelectedFiles([]);\n } else if (Array.isArray(args.values)) {\n // Convert any string values to FileItemDto format\n const formattedValues = args.values.map(value => {\n if (typeof value === \"string\") {\n return {\n name: value.split(\"/\").pop() || \"file\",\n mimeType: \"image/jpeg\", // Default mime type\n size: 0,\n url: value\n };\n }\n return value as FileItemDto;\n });\n setSelectedFiles(formattedValues);\n }\n }, [args.values]);\n\n const handleSelect = () => {\n setSelectedFiles(createFileList(3));\n setValidation({ isValid: true, message: \"\" });\n };\n\n const handleReplace = (_: any, index: number) => {\n setSelectedFiles(prevState => {\n if (!prevState) {\n return [];\n }\n\n return [\n ...prevState.slice(0, index),\n ...createFileList(1),\n ...prevState.slice(index + 1)\n ];\n });\n setValidation({ isValid: true, message: \"\" });\n };\n\n const handleEdit = (file: any, index: number) => {\n if (file) {\n console.log(\"Editing file:\", file, \"at index:\", index);\n alert(`Editing File: ${file.name} at position ${index}`);\n }\n };\n\n const handleRemove = (file: any, index: number) => {\n setSelectedFiles(prevState => prevState?.filter((_, i) => i !== index));\n\n if (args.required && (!selectedFiles || selectedFiles.length <= 1)) {\n setValidation({ isValid: false, message: \"Please select at least one file\" });\n }\n };\n\n // Validate on required change or value change\n useEffect(() => {\n if (args.required && (!selectedFiles || selectedFiles.length === 0)) {\n setValidation({ isValid: false, message: \"Please select at least one file\" });\n } else {\n setValidation({ isValid: true, message: \"\" });\n }\n }, [args.required, selectedFiles]);\n\n return (\n <MultiFilePicker\n {...args}\n values={selectedFiles}\n onSelectItem={handleSelect}\n onReplaceItem={handleReplace}\n onRemoveItem={handleRemove}\n onEditItem={handleEdit}\n validation={validation}\n />\n );\n },\n args: {\n label: \"Upload Images\",\n required: true,\n disabled: false,\n description: \"Select files to upload (JPG, PNG, PDF)\",\n note: \"Note: Maximum file size is 5MB per file\",\n type: \"area\",\n values: [],\n validation: undefined,\n onSelectItem: undefined,\n onReplaceItem: undefined,\n onEditItem: undefined,\n onRemoveItem: undefined\n },\n argTypes: {\n label: {\n description: \"Label text for the file picker\",\n control: \"text\",\n defaultValue: \"Upload Images\"\n },\n type: {\n description: \"The type of file picker to display\",\n control: \"select\",\n options: [\"area\", \"compact\"],\n defaultValue: \"area\"\n },\n required: {\n description: \"Makes the field required when set to true\",\n control: \"boolean\",\n defaultValue: true\n },\n disabled: {\n description: \"Disables the field when set to true\",\n control: \"boolean\",\n defaultValue: false\n },\n description: {\n description: \"Additional description text below the field\",\n control: \"text\"\n },\n note: {\n description: \"Additional note text below the field\",\n control: \"text\"\n },\n values: {\n description: \"Array of selected files\",\n control: \"object\"\n },\n validation: {\n description:\n \"Validation state and message. Please refer to the example code for details on usage.\"\n },\n onSelectItem: {\n description:\n \"Callback when user selects files - Please refer to the example code for details on usage.\",\n action: \"onSelectItem\"\n },\n onReplaceItem: {\n description:\n \"Callback when user replaces a file - Please refer to the example code for details on usage.\",\n action: \"onReplaceItem\"\n },\n onEditItem: {\n description:\n \"Callback when user edits a file - Please refer to the example code for details on usage.\",\n action: \"onEditItem\"\n },\n onRemoveItem: {\n description:\n \"Callback when user removes a file - Please refer to the example code for details on usage.\",\n action: \"onRemoveItem\"\n }\n }\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAElD,SAA2BC,eAAe;AAE1C,MAAMC,eAAe,GAAGA,CAACC,GAAW,EAAEC,GAAW,KAC7CC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,IAAIH,GAAG,GAAGD,GAAG,GAAG,CAAC,CAAC,CAAC,GAAGA,GAAG;AAErD,MAAMK,cAAc,GAAGA,CAACC,IAAY,GAAG,EAAE,KAAoB;EACzD,OAAOC,KAAK,CAACC,IAAI,CAAC;IAAEC,MAAM,EAAEH;EAAK,CAAC,EAAE,CAACI,CAAC,EAAEC,KAAK,KAAK;IAC9C,MAAMC,KAAK,GAAGb,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1C,MAAMc,MAAM,GAAGd,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3C,MAAMe,QAAQ,GAAGf,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;;IAEnD,OAAO;MACHgB,IAAI,EAAE,QAAQJ,KAAK,GAAG,CAAC,MAAM;MAC7BK,QAAQ,EAAE,YAAY;MACtBV,IAAI,EAAEQ,QAAQ;MACdG,GAAG,EAAE,yBAAyBL,KAAK,IAAIC,MAAM;IACjD,CAAC;EACL,CAAC,CAAC;AACN,CAAC;AAED,MAAMK,IAAkC,GAAG;EACvCC,KAAK,EAAE,kCAAkC;EACzCC,SAAS,EAAEtB,eAAe;EAC1BuB,QAAQ,EAAE;IACNC,YAAY,EAAE;MAAEC,MAAM,EAAE;IAAe,CAAC;IACxCC,UAAU,EAAE;MAAED,MAAM,EAAE;IAAa,CAAC;IACpCE,YAAY,EAAE;MAAEF,MAAM,EAAE;IAAe,CAAC;IACxCG,QAAQ,EAAE;MACNC,OAAO,EAAE,SAAS;MAClBC,YAAY,EAAE;IAClB;EACJ,CAAC;EACDC,UAAU,EAAE;IACRC,MAAM,EAAE;EACZ,CAAC;EACDC,MAAM,EAAEC,IAAI,IAAI;IACZ,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAGtC,QAAQ,CAAgB,EAAE,CAAC;IACrE,oBACID,KAAA,CAAAwC,aAAA,CAACrC,eAAe,EAAAsC,MAAA,CAAAC,MAAA,KACRL,IAAI;MACRM,MAAM,EAAEL,aAAc;MACtBX,YAAY,EAAEA,CAAA,KAAMY,gBAAgB,CAAC7B,cAAc,CAAC,CAAC,CAAE;MACvDkC,aAAa,EAAEA,CAAC7B,CAAC,EAAEC,KAAK,KACpBuB,gBAAgB,CAACM,SAAS,IAAI;QAC1B,IAAI,CAACA,SAAS,EAAE;UACZ,OAAO,EAAE;QACb;QAEA,OAAO,CACH,GAAGA,SAAS,CAACC,KAAK,CAAC,CAAC,EAAE9B,KAAK,CAAC,EAC5B,GAAGN,cAAc,CAAC,CAAC,CAAC,EACpB,GAAGmC,SAAS,CAACC,KAAK,CAAC9B,KAAK,GAAG,CAAC,CAAC,CAChC;MACL,CAAC,CACJ;MACDc,YAAY,EAAEiB,IAAI,IACdR,gBAAgB,CAACM,SAAS,IACtBA,SAAS,EAAEG,MAAM,CAACC,KAAK,IAAIA,KAAK,CAAC7B,IAAI,KAAK2B,IAAI,EAAE3B,IAAI,CACxD,CACH;MACDS,UAAU,EAAEA,CAACkB,IAAI,EAAEG,CAAC,KAAKC,KAAK,CAAC,WAAWJ,IAAI,EAAE3B,IAAI,gBAAgB8B,CAAC,EAAE;IAAE,EAC5E,CAAC;EAEV;AACJ,CAAC;AAED,eAAe3B,IAAI;AAGnB,OAAO,MAAM6B,OAAc,GAAG,CAAC,CAAC;AAEhC,OAAO,MAAMC,QAAe,GAAG;EAC3BhB,IAAI,EAAE;IACF,GAAGe,OAAO,CAACf,IAAI;IACfiB,IAAI,EAAE;EACV;AACJ,CAAC;AAED,OAAO,MAAMC,aAAoB,GAAG;EAChClB,IAAI,EAAE;IACF,GAAGgB,QAAQ,CAAChB,IAAI;IAChBmB,KAAK,EAAE;EACX;AACJ,CAAC;AAED,OAAO,MAAMC,qBAA4B,GAAG;EACxCpB,IAAI,EAAE;IACF,GAAGgB,QAAQ,CAAChB,IAAI;IAChBmB,KAAK,EAAE,iBAAiB;IACxBE,QAAQ,EAAE;EACd;AACJ,CAAC;AAED,OAAO,MAAMC,mBAA0B,GAAG;EACtCtB,IAAI,EAAE;IACF,GAAGgB,QAAQ,CAAChB,IAAI;IAChBuB,WAAW,EAAE;EACjB;AACJ,CAAC;AAED,OAAO,MAAMC,aAAoB,GAAG;EAChCxB,IAAI,EAAE;IACF,GAAGgB,QAAQ,CAAChB,IAAI;IAChByB,IAAI,EAAE;EACV;AACJ,CAAC;AAED,OAAO,MAAMC,cAAqB,GAAG;EACjC1B,IAAI,EAAE;IACF,GAAGgB,QAAQ,CAAChB,IAAI;IAChB2B,UAAU,EAAE;MACRC,OAAO,EAAE,KAAK;MACdC,OAAO,EAAE;IACb;EACJ;AACJ,CAAC;AAED,OAAO,MAAMC,YAAmB,GAAG;EAC/B9B,IAAI,EAAE;IACF,GAAGgB,QAAQ,CAAChB,IAAI;IAChBmB,KAAK,EAAE,iBAAiB;IACxBzB,QAAQ,EAAE;EACd;AACJ,CAAC;AAED,OAAO,MAAMqC,wBAA+B,GAAG;EAC3C/B,IAAI,EAAE;IACF,GAAGgB,QAAQ,CAAChB;EAChB,CAAC;EACDD,MAAM,EAAEC,IAAI,IAAI;IACZ,MAAM,CAAC2B,UAAU,EAAEK,aAAa,CAAC,GAAGpE,QAAQ,CAAM;MAAEgE,OAAO,EAAE,IAAI;MAAEC,OAAO,EAAEI;IAAU,CAAC,CAAC;IAExF,MAAMC,QAAQ,GAAG,MAAAA,CAAA,KAAY;MACzBF,aAAa,CAAC;QAAEJ,OAAO,EAAE,KAAK;QAAEC,OAAO,EAAE;MAA4B,CAAC,CAAC;IAC3E,CAAC;IAED,oBAAOlE,KAAA,CAAAwC,aAAA,CAACrC,eAAe,EAAAsC,MAAA,CAAAC,MAAA,KAAKL,IAAI;MAAEkC,QAAQ,EAAEA,QAAS;MAACP,UAAU,EAAEA;IAAW,EAAE,CAAC;EACpF;AACJ,CAAC;AAED,OAAO,MAAMQ,eAAsB,GAAG;EAClCnC,IAAI,EAAE;IACF,GAAGgB,QAAQ,CAAChB,IAAI;IAChBmB,KAAK,EAAE,iBAAiB;IACxBE,QAAQ,EAAE,IAAI;IACdE,WAAW,EAAE,+DAA+D;IAC5EE,IAAI,EAAE,qEAAqE;IAC3EE,UAAU,EAAE;MACRC,OAAO,EAAE,KAAK;MACdC,OAAO,EAAE;IACb;EACJ;AACJ,CAAC;AAED,OAAO,MAAMO,OAAc,GAAG;EAC1BpC,IAAI,EAAE;IACF,GAAGe,OAAO,CAACf,IAAI;IACfiB,IAAI,EAAE;EACV;AACJ,CAAC;AAED,OAAO,MAAMoB,gBAAuB,GAAG;EACnCrC,IAAI,EAAE;IACF,GAAGoC,OAAO,CAACpC,IAAI;IACfmB,KAAK,EAAE;EACX;AACJ,CAAC;AAED,OAAO,MAAMmB,wBAA+B,GAAG;EAC3CtC,IAAI,EAAE;IACF,GAAGoC,OAAO,CAACpC,IAAI;IACfmB,KAAK,EAAE,iBAAiB;IACxBE,QAAQ,EAAE;EACd;AACJ,CAAC;AAED,OAAO,MAAMkB,sBAA6B,GAAG;EACzCvC,IAAI,EAAE;IACF,GAAGoC,OAAO,CAACpC,IAAI;IACfuB,WAAW,EAAE;EACjB;AACJ,CAAC;AAED,OAAO,MAAMiB,gBAAuB,GAAG;EACnCxC,IAAI,EAAE;IACF,GAAGoC,OAAO,CAACpC,IAAI;IACfyB,IAAI,EAAE;EACV;AACJ,CAAC;AAED,OAAO,MAAMgB,iBAAwB,GAAG;EACpCzC,IAAI,EAAE;IACF,GAAGoC,OAAO,CAACpC,IAAI;IACf2B,UAAU,EAAE;MACRC,OAAO,EAAE,KAAK;MACdC,OAAO,EAAE;IACb;EACJ;AACJ,CAAC;AAED,OAAO,MAAMa,eAAsB,GAAG;EAClC1C,IAAI,EAAE;IACF,GAAGoC,OAAO,CAACpC,IAAI;IACfmB,KAAK,EAAE,iBAAiB;IACxBzB,QAAQ,EAAE;EACd;AACJ,CAAC;AAED,OAAO,MAAMiD,2BAAkC,GAAG;EAC9C3C,IAAI,EAAE;IACF,GAAGoC,OAAO,CAACpC;EACf,CAAC;EACDD,MAAM,EAAEC,IAAI,IAAI;IACZ,MAAM,CAAC2B,UAAU,EAAEK,aAAa,CAAC,GAAGpE,QAAQ,CAAM;MAAEgE,OAAO,EAAE,IAAI;MAAEC,OAAO,EAAEI;IAAU,CAAC,CAAC;IAExF,MAAMC,QAAQ,GAAG,MAAAA,CAAA,KAAY;MACzBF,aAAa,CAAC;QAAEJ,OAAO,EAAE,KAAK;QAAEC,OAAO,EAAE;MAA4B,CAAC,CAAC;IAC3E,CAAC;IAED,oBAAOlE,KAAA,CAAAwC,aAAA,CAACrC,eAAe,EAAAsC,MAAA,CAAAC,MAAA,KAAKL,IAAI;MAAEkC,QAAQ,EAAEA,QAAS;MAACP,UAAU,EAAEA;IAAW,EAAE,CAAC;EACpF;AACJ,CAAC;AAED,OAAO,MAAMiB,kBAAyB,GAAG;EACrC5C,IAAI,EAAE;IACF,GAAGoC,OAAO,CAACpC,IAAI;IACfmB,KAAK,EAAE,iBAAiB;IACxBE,QAAQ,EAAE,IAAI;IACdE,WAAW,EAAE,+DAA+D;IAC5EE,IAAI,EAAE,qEAAqE;IAC3EE,UAAU,EAAE;MACRC,OAAO,EAAE,KAAK;MACdC,OAAO,EAAE;IACb;EACJ;AACJ,CAAC;AAED,OAAO,MAAMgB,aAAoB,GAAG;EAChC9C,MAAM,EAAEC,IAAI,IAAI;IACZ,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAGtC,QAAQ,CAAgB,EAAE,CAAC;IACrE,MAAM,CAAC+D,UAAU,EAAEK,aAAa,CAAC,GAAGpE,QAAQ,CAAC;MAAEgE,OAAO,EAAE,IAAI;MAAEC,OAAO,EAAE;IAAG,CAAC,CAAC;;IAE5E;IACAhE,SAAS,CAAC,MAAM;MACZ,IAAI,CAACmC,IAAI,CAACM,MAAM,EAAE;QACdJ,gBAAgB,CAAC,EAAE,CAAC;MACxB,CAAC,MAAM,IAAI3B,KAAK,CAACuE,OAAO,CAAC9C,IAAI,CAACM,MAAM,CAAC,EAAE;QACnC;QACA,MAAMyC,eAAe,GAAG/C,IAAI,CAACM,MAAM,CAAC0C,GAAG,CAACpC,KAAK,IAAI;UAC7C,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;YAC3B,OAAO;cACH7B,IAAI,EAAE6B,KAAK,CAACqC,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,CAAC,IAAI,MAAM;cACtClE,QAAQ,EAAE,YAAY;cAAE;cACxBV,IAAI,EAAE,CAAC;cACPW,GAAG,EAAE2B;YACT,CAAC;UACL;UACA,OAAOA,KAAK;QAChB,CAAC,CAAC;QACFV,gBAAgB,CAAC6C,eAAe,CAAC;MACrC;IACJ,CAAC,EAAE,CAAC/C,IAAI,CAACM,MAAM,CAAC,CAAC;IAEjB,MAAM6C,YAAY,GAAGA,CAAA,KAAM;MACvBjD,gBAAgB,CAAC7B,cAAc,CAAC,CAAC,CAAC,CAAC;MACnC2D,aAAa,CAAC;QAAEJ,OAAO,EAAE,IAAI;QAAEC,OAAO,EAAE;MAAG,CAAC,CAAC;IACjD,CAAC;IAED,MAAMuB,aAAa,GAAGA,CAAC1E,CAAM,EAAEC,KAAa,KAAK;MAC7CuB,gBAAgB,CAACM,SAAS,IAAI;QAC1B,IAAI,CAACA,SAAS,EAAE;UACZ,OAAO,EAAE;QACb;QAEA,OAAO,CACH,GAAGA,SAAS,CAACC,KAAK,CAAC,CAAC,EAAE9B,KAAK,CAAC,EAC5B,GAAGN,cAAc,CAAC,CAAC,CAAC,EACpB,GAAGmC,SAAS,CAACC,KAAK,CAAC9B,KAAK,GAAG,CAAC,CAAC,CAChC;MACL,CAAC,CAAC;MACFqD,aAAa,CAAC;QAAEJ,OAAO,EAAE,IAAI;QAAEC,OAAO,EAAE;MAAG,CAAC,CAAC;IACjD,CAAC;IAED,MAAMwB,UAAU,GAAGA,CAACC,IAAS,EAAE3E,KAAa,KAAK;MAC7C,IAAI2E,IAAI,EAAE;QACNC,OAAO,CAACC,GAAG,CAAC,eAAe,EAAEF,IAAI,EAAE,WAAW,EAAE3E,KAAK,CAAC;QACtDmC,KAAK,CAAC,iBAAiBwC,IAAI,CAACvE,IAAI,gBAAgBJ,KAAK,EAAE,CAAC;MAC5D;IACJ,CAAC;IAED,MAAM8E,YAAY,GAAGA,CAACH,IAAS,EAAE3E,KAAa,KAAK;MAC/CuB,gBAAgB,CAACM,SAAS,IAAIA,SAAS,EAAEG,MAAM,CAAC,CAACjC,CAAC,EAAEmC,CAAC,KAAKA,CAAC,KAAKlC,KAAK,CAAC,CAAC;MAEvE,IAAIqB,IAAI,CAACqB,QAAQ,KAAK,CAACpB,aAAa,IAAIA,aAAa,CAACxB,MAAM,IAAI,CAAC,CAAC,EAAE;QAChEuD,aAAa,CAAC;UAAEJ,OAAO,EAAE,KAAK;UAAEC,OAAO,EAAE;QAAkC,CAAC,CAAC;MACjF;IACJ,CAAC;;IAED;IACAhE,SAAS,CAAC,MAAM;MACZ,IAAImC,IAAI,CAACqB,QAAQ,KAAK,CAACpB,aAAa,IAAIA,aAAa,CAACxB,MAAM,KAAK,CAAC,CAAC,EAAE;QACjEuD,aAAa,CAAC;UAAEJ,OAAO,EAAE,KAAK;UAAEC,OAAO,EAAE;QAAkC,CAAC,CAAC;MACjF,CAAC,MAAM;QACHG,aAAa,CAAC;UAAEJ,OAAO,EAAE,IAAI;UAAEC,OAAO,EAAE;QAAG,CAAC,CAAC;MACjD;IACJ,CAAC,EAAE,CAAC7B,IAAI,CAACqB,QAAQ,EAAEpB,aAAa,CAAC,CAAC;IAElC,oBACItC,KAAA,CAAAwC,aAAA,CAACrC,eAAe,EAAAsC,MAAA,CAAAC,MAAA,KACRL,IAAI;MACRM,MAAM,EAAEL,aAAc;MACtBX,YAAY,EAAE6D,YAAa;MAC3B5C,aAAa,EAAE6C,aAAc;MAC7B3D,YAAY,EAAEgE,YAAa;MAC3BjE,UAAU,EAAE6D,UAAW;MACvB1B,UAAU,EAAEA;IAAW,EAC1B,CAAC;EAEV,CAAC;EACD3B,IAAI,EAAE;IACFmB,KAAK,EAAE,eAAe;IACtBE,QAAQ,EAAE,IAAI;IACd3B,QAAQ,EAAE,KAAK;IACf6B,WAAW,EAAE,wCAAwC;IACrDE,IAAI,EAAE,yCAAyC;IAC/CR,IAAI,EAAE,MAAM;IACZX,MAAM,EAAE,EAAE;IACVqB,UAAU,EAAEM,SAAS;IACrB3C,YAAY,EAAE2C,SAAS;IACvB1B,aAAa,EAAE0B,SAAS;IACxBzC,UAAU,EAAEyC,SAAS;IACrBxC,YAAY,EAAEwC;EAClB,CAAC;EACD5C,QAAQ,EAAE;IACN8B,KAAK,EAAE;MACHI,WAAW,EAAE,gCAAgC;MAC7C5B,OAAO,EAAE,MAAM;MACfC,YAAY,EAAE;IAClB,CAAC;IACDqB,IAAI,EAAE;MACFM,WAAW,EAAE,oCAAoC;MACjD5B,OAAO,EAAE,QAAQ;MACjB+D,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;MAC5B9D,YAAY,EAAE;IAClB,CAAC;IACDyB,QAAQ,EAAE;MACNE,WAAW,EAAE,2CAA2C;MACxD5B,OAAO,EAAE,SAAS;MAClBC,YAAY,EAAE;IAClB,CAAC;IACDF,QAAQ,EAAE;MACN6B,WAAW,EAAE,qCAAqC;MAClD5B,OAAO,EAAE,SAAS;MAClBC,YAAY,EAAE;IAClB,CAAC;IACD2B,WAAW,EAAE;MACTA,WAAW,EAAE,6CAA6C;MAC1D5B,OAAO,EAAE;IACb,CAAC;IACD8B,IAAI,EAAE;MACFF,WAAW,EAAE,sCAAsC;MACnD5B,OAAO,EAAE;IACb,CAAC;IACDW,MAAM,EAAE;MACJiB,WAAW,EAAE,yBAAyB;MACtC5B,OAAO,EAAE;IACb,CAAC;IACDgC,UAAU,EAAE;MACRJ,WAAW,EACP;IACR,CAAC;IACDjC,YAAY,EAAE;MACViC,WAAW,EACP,2FAA2F;MAC/FhC,MAAM,EAAE;IACZ,CAAC;IACDgB,aAAa,EAAE;MACXgB,WAAW,EACP,6FAA6F;MACjGhC,MAAM,EAAE;IACZ,CAAC;IACDC,UAAU,EAAE;MACR+B,WAAW,EACP,0FAA0F;MAC9FhC,MAAM,EAAE;IACZ,CAAC;IACDE,YAAY,EAAE;MACV8B,WAAW,EACP,4FAA4F;MAChGhC,MAAM,EAAE;IACZ;EACJ;AACJ,CAAC","ignoreList":[]}
|
|
@@ -37,7 +37,7 @@ const RangeSliderPrimitive = props => {
|
|
|
37
37
|
onValuesChange,
|
|
38
38
|
onValuesCommit,
|
|
39
39
|
...restProps
|
|
40
|
-
} = props; // Rename transformValue to _ to avoid
|
|
40
|
+
} = props; // Rename transformValue to _ to avoid Oxlint warning
|
|
41
41
|
const {
|
|
42
42
|
vm,
|
|
43
43
|
changeValues,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","SliderRoot","SliderThumb","SliderTrack","useRangeSlider","RangeSliderPrimitiveRenderer","tooltipSide","textValues","showTooltip","values","sliderProps","createElement","className","Object","assign","value","textValue","RangeSliderPrimitive","props","transformValue","onValuesChange","onValuesCommit","restProps","vm","changeValues","commitValues","onValueChange","onValueCommit"],"sources":["RangeSliderPrimitive.tsx"],"sourcesContent":["import * as React from \"react\";\nimport type { Slider as SliderPrimitives } from \"radix-ui\";\nimport { SliderRoot, SliderThumb, type SliderThumbProps, SliderTrack } from \"~/Slider/index.js\";\nimport { useRangeSlider } from \"./useRangeSlider.js\";\n\ninterface RangeSliderPrimitiveRootProps extends Omit<\n SliderPrimitives.SliderProps,\n \"min\" | \"max\" | \"value\"\n> {\n /**\n * Array of numbers representing the current values of the range slider.\n */\n values: number[];\n /**\n * Minimum value of the range slider.\n */\n min: number;\n /**\n * Maximum value of the range slider.\n */\n max: number;\n}\n\ninterface RangeSliderPrimitiveThumbProps extends Omit<SliderThumbProps, \"labelValue\"> {\n textValues: string[];\n}\n\ninterface RangeSliderPrimitiveVm\n extends RangeSliderPrimitiveRootProps, Omit<RangeSliderPrimitiveThumbProps, \"textValue\"> {\n textValues: string[];\n}\n\n/**\n * RangeSliderRenderer\n */\n\nconst RangeSliderPrimitiveRenderer = ({\n tooltipSide,\n textValues,\n showTooltip,\n values,\n ...sliderProps\n}: RangeSliderPrimitiveVm) => {\n return (\n <div className={\"flex h-md w-full\"}>\n <SliderRoot {...sliderProps} value={values}>\n <SliderTrack />\n <SliderThumb\n showTooltip={showTooltip}\n tooltipSide={tooltipSide}\n textValue={textValues[0]}\n />\n <SliderThumb\n showTooltip={showTooltip}\n tooltipSide={tooltipSide}\n textValue={textValues[1]}\n />\n </SliderRoot>\n </div>\n );\n};\n\n/**\n * RangeSlider\n */\ninterface RangeSliderPrimitiveProps extends Omit<\n SliderPrimitives.SliderProps,\n \"defaultValue\" | \"value\" | \"onValueChange\" | \"onValueCommit\"\n> {\n onValuesChange: (values: number[]) => void;\n onValuesCommit?: (values: number[]) => void;\n showTooltip?: boolean;\n tooltipSide?: \"top\" | \"bottom\";\n transformValue?: (value: number) => string;\n values?: number[];\n}\n\nconst RangeSliderPrimitive = (props: RangeSliderPrimitiveProps) => {\n const { transformValue, onValuesChange, onValuesCommit, ...restProps } = props; // Rename transformValue to _ to avoid
|
|
1
|
+
{"version":3,"names":["React","SliderRoot","SliderThumb","SliderTrack","useRangeSlider","RangeSliderPrimitiveRenderer","tooltipSide","textValues","showTooltip","values","sliderProps","createElement","className","Object","assign","value","textValue","RangeSliderPrimitive","props","transformValue","onValuesChange","onValuesCommit","restProps","vm","changeValues","commitValues","onValueChange","onValueCommit"],"sources":["RangeSliderPrimitive.tsx"],"sourcesContent":["import * as React from \"react\";\nimport type { Slider as SliderPrimitives } from \"radix-ui\";\nimport { SliderRoot, SliderThumb, type SliderThumbProps, SliderTrack } from \"~/Slider/index.js\";\nimport { useRangeSlider } from \"./useRangeSlider.js\";\n\ninterface RangeSliderPrimitiveRootProps extends Omit<\n SliderPrimitives.SliderProps,\n \"min\" | \"max\" | \"value\"\n> {\n /**\n * Array of numbers representing the current values of the range slider.\n */\n values: number[];\n /**\n * Minimum value of the range slider.\n */\n min: number;\n /**\n * Maximum value of the range slider.\n */\n max: number;\n}\n\ninterface RangeSliderPrimitiveThumbProps extends Omit<SliderThumbProps, \"labelValue\"> {\n textValues: string[];\n}\n\ninterface RangeSliderPrimitiveVm\n extends RangeSliderPrimitiveRootProps, Omit<RangeSliderPrimitiveThumbProps, \"textValue\"> {\n textValues: string[];\n}\n\n/**\n * RangeSliderRenderer\n */\n\nconst RangeSliderPrimitiveRenderer = ({\n tooltipSide,\n textValues,\n showTooltip,\n values,\n ...sliderProps\n}: RangeSliderPrimitiveVm) => {\n return (\n <div className={\"flex h-md w-full\"}>\n <SliderRoot {...sliderProps} value={values}>\n <SliderTrack />\n <SliderThumb\n showTooltip={showTooltip}\n tooltipSide={tooltipSide}\n textValue={textValues[0]}\n />\n <SliderThumb\n showTooltip={showTooltip}\n tooltipSide={tooltipSide}\n textValue={textValues[1]}\n />\n </SliderRoot>\n </div>\n );\n};\n\n/**\n * RangeSlider\n */\ninterface RangeSliderPrimitiveProps extends Omit<\n SliderPrimitives.SliderProps,\n \"defaultValue\" | \"value\" | \"onValueChange\" | \"onValueCommit\"\n> {\n onValuesChange: (values: number[]) => void;\n onValuesCommit?: (values: number[]) => void;\n showTooltip?: boolean;\n tooltipSide?: \"top\" | \"bottom\";\n transformValue?: (value: number) => string;\n values?: number[];\n}\n\nconst RangeSliderPrimitive = (props: RangeSliderPrimitiveProps) => {\n const { transformValue, onValuesChange, onValuesCommit, ...restProps } = props; // Rename transformValue to _ to avoid Oxlint warning\n const { vm, changeValues, commitValues } = useRangeSlider({\n ...restProps,\n transformValue,\n onValuesChange,\n onValuesCommit\n });\n\n return (\n <RangeSliderPrimitiveRenderer\n {...restProps}\n {...vm}\n onValueChange={changeValues}\n onValueCommit={commitValues}\n />\n );\n};\n\nexport {\n RangeSliderPrimitive,\n RangeSliderPrimitiveRenderer,\n type RangeSliderPrimitiveProps,\n type RangeSliderPrimitiveVm\n};\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,UAAU,EAAEC,WAAW,EAAyBC,WAAW;AACpE,SAASC,cAAc;AA6BvB;AACA;AACA;;AAEA,MAAMC,4BAA4B,GAAGA,CAAC;EAClCC,WAAW;EACXC,UAAU;EACVC,WAAW;EACXC,MAAM;EACN,GAAGC;AACiB,CAAC,KAAK;EAC1B,oBACIV,KAAA,CAAAW,aAAA;IAAKC,SAAS,EAAE;EAAmB,gBAC/BZ,KAAA,CAAAW,aAAA,CAACV,UAAU,EAAAY,MAAA,CAAAC,MAAA,KAAKJ,WAAW;IAAEK,KAAK,EAAEN;EAAO,iBACvCT,KAAA,CAAAW,aAAA,CAACR,WAAW,MAAE,CAAC,eACfH,KAAA,CAAAW,aAAA,CAACT,WAAW;IACRM,WAAW,EAAEA,WAAY;IACzBF,WAAW,EAAEA,WAAY;IACzBU,SAAS,EAAET,UAAU,CAAC,CAAC;EAAE,CAC5B,CAAC,eACFP,KAAA,CAAAW,aAAA,CAACT,WAAW;IACRM,WAAW,EAAEA,WAAY;IACzBF,WAAW,EAAEA,WAAY;IACzBU,SAAS,EAAET,UAAU,CAAC,CAAC;EAAE,CAC5B,CACO,CACX,CAAC;AAEd,CAAC;;AAED;AACA;AACA;;AAaA,MAAMU,oBAAoB,GAAIC,KAAgC,IAAK;EAC/D,MAAM;IAAEC,cAAc;IAAEC,cAAc;IAAEC,cAAc;IAAE,GAAGC;EAAU,CAAC,GAAGJ,KAAK,CAAC,CAAC;EAChF,MAAM;IAAEK,EAAE;IAAEC,YAAY;IAAEC;EAAa,CAAC,GAAGrB,cAAc,CAAC;IACtD,GAAGkB,SAAS;IACZH,cAAc;IACdC,cAAc;IACdC;EACJ,CAAC,CAAC;EAEF,oBACIrB,KAAA,CAAAW,aAAA,CAACN,4BAA4B,EAAAQ,MAAA,CAAAC,MAAA,KACrBQ,SAAS,EACTC,EAAE;IACNG,aAAa,EAAEF,YAAa;IAC5BG,aAAa,EAAEF;EAAa,EAC/B,CAAC;AAEV,CAAC;AAED,SACIR,oBAAoB,EACpBZ,4BAA4B","ignoreList":[]}
|
package/Sidebar/Sidebar.js
CHANGED
|
@@ -43,7 +43,7 @@ const SidebarBase = props => {
|
|
|
43
43
|
}, [props]);
|
|
44
44
|
return /*#__PURE__*/React.createElement(SidebarRoot, rootProps, /*#__PURE__*/React.createElement(SidebarHeader, headerProps), /*#__PURE__*/React.createElement(SidebarContent, contentProps, /*#__PURE__*/React.createElement(SidebarMenuRoot, {
|
|
45
45
|
showPinnedItems: true
|
|
46
|
-
}, props.children)), /*#__PURE__*/React.createElement(SidebarFooter, null, /*#__PURE__*/React.createElement(SidebarMenuRoot, {
|
|
46
|
+
}, props.children)), footerProps.footer && /*#__PURE__*/React.createElement(SidebarFooter, null, /*#__PURE__*/React.createElement(SidebarMenuRoot, {
|
|
47
47
|
showPinnedItems: false
|
|
48
48
|
}, footerProps.footer)));
|
|
49
49
|
};
|
package/Sidebar/Sidebar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","makeDecoratable","withStaticProps","SidebarRoot","SidebarHeader","SidebarContent","SidebarIcon","SidebarFooter","SidebarMenuItem","SidebarMenuLink","SidebarMenuRoot","SidebarMenuGroup","SidebarBase","props","headerProps","rootProps","footerProps","contentProps","useMemo","title","icon","side","footer","rest","createElement","showPinnedItems","children","DecoratableSidebar","Sidebar","Item","Link","Group","Icon"],"sources":["Sidebar.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { makeDecoratable, withStaticProps } from \"~/utils.js\";\nimport { SidebarRoot } from \"./components/SidebarRoot.js\";\nimport { SidebarHeader } from \"./components/SidebarHeader.js\";\nimport { SidebarContent } from \"./components/SidebarContent.js\";\nimport { SidebarIcon } from \"./components/SidebarIcon.js\";\nimport { SidebarFooter } from \"./components/SidebarFooter.js\";\nimport { SidebarMenuItem } from \"./components/items/SidebarMenuItem.js\";\nimport { SidebarMenuLink } from \"./components/items/SidebarMenuLink.js\";\nimport { SidebarMenuRoot } from \"./components/items/SidebarMenuRoot.js\";\nimport { SidebarMenuGroup } from \"~/Sidebar/components/items/SidebarMenuGroup.js\";\n\ninterface SidebarProps\n extends\n Omit<React.ComponentPropsWithoutRef<typeof SidebarRoot>, \"title\">,\n Omit<React.ComponentPropsWithoutRef<typeof SidebarContent>, \"title\"> {\n title?: React.ReactNode;\n icon?: React.ReactNode;\n children: React.ReactNode;\n footer?: React.ReactNode;\n}\n\nconst SidebarBase = (props: SidebarProps) => {\n const { headerProps, rootProps, footerProps, contentProps } = React.useMemo(() => {\n const {\n // Header props.\n title,\n icon,\n\n // Root props.\n side,\n\n // Footer props.\n footer,\n\n // Content props.\n ...rest\n } = props;\n\n return {\n headerProps: {\n title,\n icon\n },\n rootProps: {\n side\n },\n footerProps: {\n footer\n },\n contentProps: rest\n };\n }, [props]);\n\n return (\n <SidebarRoot {...rootProps}>\n <SidebarHeader {...headerProps} />\n <SidebarContent {...contentProps}>\n <SidebarMenuRoot showPinnedItems={true}>{props.children}</SidebarMenuRoot>\n </SidebarContent>\n <SidebarFooter>\n
|
|
1
|
+
{"version":3,"names":["React","makeDecoratable","withStaticProps","SidebarRoot","SidebarHeader","SidebarContent","SidebarIcon","SidebarFooter","SidebarMenuItem","SidebarMenuLink","SidebarMenuRoot","SidebarMenuGroup","SidebarBase","props","headerProps","rootProps","footerProps","contentProps","useMemo","title","icon","side","footer","rest","createElement","showPinnedItems","children","DecoratableSidebar","Sidebar","Item","Link","Group","Icon"],"sources":["Sidebar.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { makeDecoratable, withStaticProps } from \"~/utils.js\";\nimport { SidebarRoot } from \"./components/SidebarRoot.js\";\nimport { SidebarHeader } from \"./components/SidebarHeader.js\";\nimport { SidebarContent } from \"./components/SidebarContent.js\";\nimport { SidebarIcon } from \"./components/SidebarIcon.js\";\nimport { SidebarFooter } from \"./components/SidebarFooter.js\";\nimport { SidebarMenuItem } from \"./components/items/SidebarMenuItem.js\";\nimport { SidebarMenuLink } from \"./components/items/SidebarMenuLink.js\";\nimport { SidebarMenuRoot } from \"./components/items/SidebarMenuRoot.js\";\nimport { SidebarMenuGroup } from \"~/Sidebar/components/items/SidebarMenuGroup.js\";\n\ninterface SidebarProps\n extends\n Omit<React.ComponentPropsWithoutRef<typeof SidebarRoot>, \"title\">,\n Omit<React.ComponentPropsWithoutRef<typeof SidebarContent>, \"title\"> {\n title?: React.ReactNode;\n icon?: React.ReactNode;\n children: React.ReactNode;\n footer?: React.ReactNode;\n}\n\nconst SidebarBase = (props: SidebarProps) => {\n const { headerProps, rootProps, footerProps, contentProps } = React.useMemo(() => {\n const {\n // Header props.\n title,\n icon,\n\n // Root props.\n side,\n\n // Footer props.\n footer,\n\n // Content props.\n ...rest\n } = props;\n\n return {\n headerProps: {\n title,\n icon\n },\n rootProps: {\n side\n },\n footerProps: {\n footer\n },\n contentProps: rest\n };\n }, [props]);\n\n return (\n <SidebarRoot {...rootProps}>\n <SidebarHeader {...headerProps} />\n <SidebarContent {...contentProps}>\n <SidebarMenuRoot showPinnedItems={true}>{props.children}</SidebarMenuRoot>\n </SidebarContent>\n {footerProps.footer && (\n <SidebarFooter>\n <SidebarMenuRoot showPinnedItems={false}>{footerProps.footer}</SidebarMenuRoot>\n </SidebarFooter>\n )}\n </SidebarRoot>\n );\n};\n\nconst DecoratableSidebar = makeDecoratable(\"Sidebar\", SidebarBase);\n\nconst Sidebar = withStaticProps(DecoratableSidebar, {\n Item: SidebarMenuItem,\n Link: SidebarMenuLink,\n Group: SidebarMenuGroup,\n Icon: SidebarIcon\n});\n\nexport { Sidebar };\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,eAAe,EAAEC,eAAe;AACzC,SAASC,WAAW;AACpB,SAASC,aAAa;AACtB,SAASC,cAAc;AACvB,SAASC,WAAW;AACpB,SAASC,aAAa;AACtB,SAASC,eAAe;AACxB,SAASC,eAAe;AACxB,SAASC,eAAe;AACxB,SAASC,gBAAgB;AAYzB,MAAMC,WAAW,GAAIC,KAAmB,IAAK;EACzC,MAAM;IAAEC,WAAW;IAAEC,SAAS;IAAEC,WAAW;IAAEC;EAAa,CAAC,GAAGjB,KAAK,CAACkB,OAAO,CAAC,MAAM;IAC9E,MAAM;MACF;MACAC,KAAK;MACLC,IAAI;MAEJ;MACAC,IAAI;MAEJ;MACAC,MAAM;MAEN;MACA,GAAGC;IACP,CAAC,GAAGV,KAAK;IAET,OAAO;MACHC,WAAW,EAAE;QACTK,KAAK;QACLC;MACJ,CAAC;MACDL,SAAS,EAAE;QACPM;MACJ,CAAC;MACDL,WAAW,EAAE;QACTM;MACJ,CAAC;MACDL,YAAY,EAAEM;IAClB,CAAC;EACL,CAAC,EAAE,CAACV,KAAK,CAAC,CAAC;EAEX,oBACIb,KAAA,CAAAwB,aAAA,CAACrB,WAAW,EAAKY,SAAS,eACtBf,KAAA,CAAAwB,aAAA,CAACpB,aAAa,EAAKU,WAAc,CAAC,eAClCd,KAAA,CAAAwB,aAAA,CAACnB,cAAc,EAAKY,YAAY,eAC5BjB,KAAA,CAAAwB,aAAA,CAACd,eAAe;IAACe,eAAe,EAAE;EAAK,GAAEZ,KAAK,CAACa,QAA0B,CAC7D,CAAC,EAChBV,WAAW,CAACM,MAAM,iBACftB,KAAA,CAAAwB,aAAA,CAACjB,aAAa,qBACVP,KAAA,CAAAwB,aAAA,CAACd,eAAe;IAACe,eAAe,EAAE;EAAM,GAAET,WAAW,CAACM,MAAwB,CACnE,CAEV,CAAC;AAEtB,CAAC;AAED,MAAMK,kBAAkB,GAAG1B,eAAe,CAAC,SAAS,EAAEW,WAAW,CAAC;AAElE,MAAMgB,OAAO,GAAG1B,eAAe,CAACyB,kBAAkB,EAAE;EAChDE,IAAI,EAAErB,eAAe;EACrBsB,IAAI,EAAErB,eAAe;EACrBsB,KAAK,EAAEpB,gBAAgB;EACvBqB,IAAI,EAAE1B;AACV,CAAC,CAAC;AAEF,SAASsB,OAAO","ignoreList":[]}
|
|
@@ -13,7 +13,7 @@ const SidebarContent = ({
|
|
|
13
13
|
const isExpanded = state === "expanded";
|
|
14
14
|
if (isExpanded) {
|
|
15
15
|
// Extract dir and onScroll props to avoid type conflicts with ScrollArea.
|
|
16
|
-
//
|
|
16
|
+
// oxlint-disable-next-line typescript/no-unused-vars
|
|
17
17
|
const {
|
|
18
18
|
dir,
|
|
19
19
|
onScroll,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","cn","ScrollArea","useSidebar","SidebarContent","className","children","props","state","isExpanded","dir","onScroll","restProps","createElement","Object","assign"],"sources":["SidebarContent.tsx"],"sourcesContent":["import React from \"react\";\nimport { cn } from \"~/utils.js\";\nimport { ScrollArea } from \"~/ScrollArea/index.js\";\nimport { useSidebar } from \"./SidebarProvider.js\";\n\nconst SidebarContent = ({ className, children, ...props }: React.ComponentProps<\"div\">) => {\n const { state } = useSidebar();\n const isExpanded = state === \"expanded\";\n\n if (isExpanded) {\n // Extract dir and onScroll props to avoid type conflicts with ScrollArea.\n //
|
|
1
|
+
{"version":3,"names":["React","cn","ScrollArea","useSidebar","SidebarContent","className","children","props","state","isExpanded","dir","onScroll","restProps","createElement","Object","assign"],"sources":["SidebarContent.tsx"],"sourcesContent":["import React from \"react\";\nimport { cn } from \"~/utils.js\";\nimport { ScrollArea } from \"~/ScrollArea/index.js\";\nimport { useSidebar } from \"./SidebarProvider.js\";\n\nconst SidebarContent = ({ className, children, ...props }: React.ComponentProps<\"div\">) => {\n const { state } = useSidebar();\n const isExpanded = state === \"expanded\";\n\n if (isExpanded) {\n // Extract dir and onScroll props to avoid type conflicts with ScrollArea.\n // oxlint-disable-next-line typescript/no-unused-vars\n const { dir, onScroll, ...restProps } = props;\n return (\n <ScrollArea\n data-sidebar=\"content\"\n className={cn(\"flex text-neutral-primary min-h-0 flex-1 flex-col gap-2\", className)}\n {...restProps}\n >\n {children}\n </ScrollArea>\n );\n }\n\n return (\n <div\n {...props}\n data-sidebar=\"content\"\n className={cn(\n \"flex text-neutral-primary min-h-0 flex-1 flex-col gap-2 overflow-y-auto overflow-x-hidden group-data-[state=collapsed]:overflow-hidden\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nexport { SidebarContent };\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,EAAE;AACX,SAASC,UAAU;AACnB,SAASC,UAAU;AAEnB,MAAMC,cAAc,GAAGA,CAAC;EAAEC,SAAS;EAAEC,QAAQ;EAAE,GAAGC;AAAmC,CAAC,KAAK;EACvF,MAAM;IAAEC;EAAM,CAAC,GAAGL,UAAU,CAAC,CAAC;EAC9B,MAAMM,UAAU,GAAGD,KAAK,KAAK,UAAU;EAEvC,IAAIC,UAAU,EAAE;IACZ;IACA;IACA,MAAM;MAAEC,GAAG;MAAEC,QAAQ;MAAE,GAAGC;IAAU,CAAC,GAAGL,KAAK;IAC7C,oBACIP,KAAA,CAAAa,aAAA,CAACX,UAAU,EAAAY,MAAA,CAAAC,MAAA;MACP,gBAAa,SAAS;MACtBV,SAAS,EAAEJ,EAAE,CAAC,yDAAyD,EAAEI,SAAS;IAAE,GAChFO,SAAS,GAEZN,QACO,CAAC;EAErB;EAEA,oBACIN,KAAA,CAAAa,aAAA,QAAAC,MAAA,CAAAC,MAAA,KACQR,KAAK;IACT,gBAAa,SAAS;IACtBF,SAAS,EAAEJ,EAAE,CACT,wIAAwI,EACxII,SACJ;EAAE,IAEDC,QACA,CAAC;AAEd,CAAC;AAED,SAASF,cAAc","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","cn","cva","DivButton","useAdminUi","variants","variant","disabled","true","SidebarMenuRootButton","className","onClick","active","icon","pinnedIcon","action","text","to","linkProps","sharedProps","linkComponent","LinkComponent","content","createElement","Object","assign","tabIndex","undefined"],"sources":["SidebarMenuRootButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { cn, cva } from \"~/utils.js\";\nimport type { SidebarMenuItemProps } from \"./SidebarMenuRootItem.js\";\nimport { DivButton } from \"./DivButton.js\";\nimport { useAdminUi } from \"~/index.js\";\n\nconst variants = cva(\n [\n \"flex w-full items-center gap-sm rounded-md\",\n \"no-underline! text-neutral-primary cursor-pointer px-sm py-xs-plus text-left\",\n \"text-md outline-none transition-[width,height,padding]\",\n \"whitespace-nowrap overflow-hidden\",\n \"hover:bg-neutral-dark/5\",\n \"group-hover/menu-root-button:bg-neutral-dark/5\",\n \"focus:bg-neutral-dark/5 focus:ring-none focus:ring-transparent\",\n \"data-[active=true]:bg-neutral-dark/5 data-[active=true]:font-semibold data-[active=true]:pointer-events-none\",\n \"group-data-[state=open]/menu-item-collapsible:font-semibold!\"\n ],\n {\n variants: {\n variant: {\n \"group-label\":\n \"text-neutral-muted! uppercase hover:bg-transparent! group-hover/menu-root-button:bg-transparent! focus:bg-transparent! cursor-default!\"\n },\n disabled: {\n true: \"pointer-events-none text-neutral-disabled!\"\n }\n }\n }\n);\n\ntype SidebarMenuButtonBaseProps = Omit<SidebarMenuItemProps, \"children\">;\n\nconst SidebarMenuRootButton = ({\n className,\n onClick,\n variant,\n active,\n disabled,\n icon,\n\n //
|
|
1
|
+
{"version":3,"names":["React","cn","cva","DivButton","useAdminUi","variants","variant","disabled","true","SidebarMenuRootButton","className","onClick","active","icon","pinnedIcon","action","text","to","linkProps","sharedProps","linkComponent","LinkComponent","content","createElement","Object","assign","tabIndex","undefined"],"sources":["SidebarMenuRootButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { cn, cva } from \"~/utils.js\";\nimport type { SidebarMenuItemProps } from \"./SidebarMenuRootItem.js\";\nimport { DivButton } from \"./DivButton.js\";\nimport { useAdminUi } from \"~/index.js\";\n\nconst variants = cva(\n [\n \"flex w-full items-center gap-sm rounded-md\",\n \"no-underline! text-neutral-primary cursor-pointer px-sm py-xs-plus text-left\",\n \"text-md outline-none transition-[width,height,padding]\",\n \"whitespace-nowrap overflow-hidden\",\n \"hover:bg-neutral-dark/5\",\n \"group-hover/menu-root-button:bg-neutral-dark/5\",\n \"focus:bg-neutral-dark/5 focus:ring-none focus:ring-transparent\",\n \"data-[active=true]:bg-neutral-dark/5 data-[active=true]:font-semibold data-[active=true]:pointer-events-none\",\n \"group-data-[state=open]/menu-item-collapsible:font-semibold!\"\n ],\n {\n variants: {\n variant: {\n \"group-label\":\n \"text-neutral-muted! uppercase hover:bg-transparent! group-hover/menu-root-button:bg-transparent! focus:bg-transparent! cursor-default!\"\n },\n disabled: {\n true: \"pointer-events-none text-neutral-disabled!\"\n }\n }\n }\n);\n\ntype SidebarMenuButtonBaseProps = Omit<SidebarMenuItemProps, \"children\">;\n\nconst SidebarMenuRootButton = ({\n className,\n onClick,\n variant,\n active,\n disabled,\n icon,\n\n // oxlint-disable-next-line\n pinnedIcon,\n\n action,\n text,\n to,\n ...linkProps\n}: SidebarMenuButtonBaseProps) => {\n const sharedProps = {\n \"data-sidebar\": \"menu-button\",\n \"data-active\": active,\n className: variants({ variant, disabled }),\n onClick\n };\n\n const { linkComponent: LinkComponent } = useAdminUi();\n\n const content = to ? (\n <LinkComponent {...sharedProps} to={to} {...linkProps}>\n {icon}\n {text}\n </LinkComponent>\n ) : (\n <DivButton\n {...sharedProps}\n disabled={disabled}\n tabIndex={variant === \"group-label\" ? -1 : undefined}\n >\n {icon}\n {text}\n </DivButton>\n );\n\n return (\n <div className={cn(\"flex items-center w-full relative group/menu-root-button\", className)}>\n {content}\n {action && (\n <div className=\"absolute top-0 right-0 mr-sm h-full flex items-center\">\n {action}\n </div>\n )}\n </div>\n );\n};\n\nexport { SidebarMenuRootButton };\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,EAAE,EAAEC,GAAG;AAEhB,SAASC,SAAS;AAClB,SAASC,UAAU;AAEnB,MAAMC,QAAQ,GAAGH,GAAG,CAChB,CACI,4CAA4C,EAC5C,8EAA8E,EAC9E,wDAAwD,EACxD,mCAAmC,EACnC,yBAAyB,EACzB,gDAAgD,EAChD,gEAAgE,EAChE,8GAA8G,EAC9G,8DAA8D,CACjE,EACD;EACIG,QAAQ,EAAE;IACNC,OAAO,EAAE;MACL,aAAa,EACT;IACR,CAAC;IACDC,QAAQ,EAAE;MACNC,IAAI,EAAE;IACV;EACJ;AACJ,CACJ,CAAC;AAID,MAAMC,qBAAqB,GAAGA,CAAC;EAC3BC,SAAS;EACTC,OAAO;EACPL,OAAO;EACPM,MAAM;EACNL,QAAQ;EACRM,IAAI;EAEJ;EACAC,UAAU;EAEVC,MAAM;EACNC,IAAI;EACJC,EAAE;EACF,GAAGC;AACqB,CAAC,KAAK;EAC9B,MAAMC,WAAW,GAAG;IAChB,cAAc,EAAE,aAAa;IAC7B,aAAa,EAAEP,MAAM;IACrBF,SAAS,EAAEL,QAAQ,CAAC;MAAEC,OAAO;MAAEC;IAAS,CAAC,CAAC;IAC1CI;EACJ,CAAC;EAED,MAAM;IAAES,aAAa,EAAEC;EAAc,CAAC,GAAGjB,UAAU,CAAC,CAAC;EAErD,MAAMkB,OAAO,GAAGL,EAAE,gBACdjB,KAAA,CAAAuB,aAAA,CAACF,aAAa,EAAAG,MAAA,CAAAC,MAAA,KAAKN,WAAW;IAAEF,EAAE,EAAEA;EAAG,GAAKC,SAAS,GAChDL,IAAI,EACJG,IACU,CAAC,gBAEhBhB,KAAA,CAAAuB,aAAA,CAACpB,SAAS,EAAAqB,MAAA,CAAAC,MAAA,KACFN,WAAW;IACfZ,QAAQ,EAAEA,QAAS;IACnBmB,QAAQ,EAAEpB,OAAO,KAAK,aAAa,GAAG,CAAC,CAAC,GAAGqB;EAAU,IAEpDd,IAAI,EACJG,IACM,CACd;EAED,oBACIhB,KAAA,CAAAuB,aAAA;IAAKb,SAAS,EAAET,EAAE,CAAC,0DAA0D,EAAES,SAAS;EAAE,GACrFY,OAAO,EACPP,MAAM,iBACHf,KAAA,CAAAuB,aAAA;IAAKb,SAAS,EAAC;EAAuD,GACjEK,MACA,CAER,CAAC;AAEd,CAAC;AAED,SAASN,qBAAqB","ignoreList":[]}
|
|
@@ -118,7 +118,8 @@ const SidebarMenuItemBase = ({
|
|
|
118
118
|
className: "ml-auto transition-transform duration-100 group-data-[state=open]/menu-item-collapsible:rotate-180 group-data-[state=collapsed]:hidden",
|
|
119
119
|
color: "neutral-strong",
|
|
120
120
|
"data-sidebar": "menu-item-expanded-indicator",
|
|
121
|
-
icon: /*#__PURE__*/React.createElement(KeyboardArrowRightIcon, null)
|
|
121
|
+
icon: /*#__PURE__*/React.createElement(KeyboardArrowRightIcon, null),
|
|
122
|
+
onClick: toggleSectionExpanded
|
|
122
123
|
}) : null;
|
|
123
124
|
const collapsibleAction = pinnable ? /*#__PURE__*/React.createElement("div", {
|
|
124
125
|
className: "flex items-center gap-xs"
|