@leav/ui 1.5.0-98bf7b08 → 1.5.0-ba7c6a04
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/dist/components/LibraryPicker/LibrariesList/LibrariesList.js +1 -1
- package/dist/components/LibraryPicker/LibrariesList/LibrariesList.js.map +1 -1
- package/dist/components/SearchModal/SearchModal.js +1 -1
- package/dist/components/SearchModal/SearchModal.js.map +1 -1
- package/dist/components/TreePicker/TreesList/TreesList.js +1 -1
- package/dist/components/TreePicker/TreesList/TreesList.js.map +1 -1
- package/dist/hooks/useIFrameMessenger/types.d.ts +3 -0
- package/dist/hooks/useIFrameMessenger/types.js.map +1 -1
- package/package.json +2 -3
|
@@ -109,7 +109,7 @@ function LibrariesList({ onSelect, selected = [], multiple = true, showSelected
|
|
|
109
109
|
},
|
|
110
110
|
},
|
|
111
111
|
];
|
|
112
|
-
const tableData =
|
|
112
|
+
const tableData = [...(data?.libraries?.list ?? [])]
|
|
113
113
|
.filter(lib => {
|
|
114
114
|
// Do not display already selected libraries unless showSelected is true
|
|
115
115
|
if (!showSelected && selected.find(selectedLib => selectedLib === lib.id)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LibrariesList.js","sourceRoot":"","sources":["../../../../src/components/LibraryPicker/LibrariesList/LibrariesList.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {PlusOutlined} from '@ant-design/icons';\nimport {useApolloClient} from '@apollo/client';\nimport {localizedTranslation, type Override} from '@leav/utils';\nimport {Button, Input, Table, type TableColumnsType} from 'antd';\nimport {type Key, useState} from 'react';\nimport styled from 'styled-components';\nimport {PreviewSize} from '../../../constants';\nimport {useLang} from '../../../hooks';\nimport {useSharedTranslation} from '../../../hooks/useSharedTranslation';\nimport {\n type GetLibrariesQuery,\n type LibraryLightFragment,\n PermissionsActions,\n PermissionTypes,\n type SaveLibraryMutation,\n useGetLibrariesQuery,\n useIsAllowedQuery,\n} from '../../../_gqlTypes';\nimport {getLibrariesQuery} from '../../../_queries/libraries/getLibrariesQuery';\nimport {extractPermissionFromQuery} from '../../../_utils';\nimport {EditLibraryModal} from '../../EditLibraryModal';\nimport {EntityCard, type IEntityData} from '../../EntityCard';\nimport {ErrorDisplay} from '../../ErrorDisplay';\nimport {Loading} from '../../Loading';\n\nconst HeaderWrapper = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 0.5rem;\n\n > input {\n flex-grow: 1;\n }\n`;\n\ntype LibraryType = Override<LibraryLightFragment, {label: string}> & {key: string};\n\ninterface ILibrariesListProps {\n onSelect: (selectedLibraries: LibraryLightFragment[]) => void;\n selected?: string[];\n multiple?: boolean;\n showSelected?: boolean;\n}\n\nfunction LibrariesList({\n onSelect,\n selected = [],\n multiple = true,\n showSelected = false,\n}: ILibrariesListProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {lang} = useLang();\n const {loading, error, data} = useGetLibrariesQuery();\n\n const isAllowedQueryResult = useIsAllowedQuery({\n fetchPolicy: 'cache-and-network',\n variables: {\n type: PermissionTypes.admin,\n actions: [PermissionsActions.admin_create_library],\n },\n });\n const canCreate = extractPermissionFromQuery(isAllowedQueryResult, PermissionsActions.admin_create_library);\n\n const [selectedRowKeys, setSelectedRowKeys] = useState<Key[]>(showSelected ? selected : []);\n const [search, setSearch] = useState('');\n const [isNewLibraryModalOpen, setIsNewLibraryModalOpen] = useState(false);\n const client = useApolloClient();\n\n const _handleSelectionChange = (selection: Key[]) => {\n setSelectedRowKeys(selection);\n onSelect(_getLibsFromKeys(selection));\n };\n\n const _getLibsFromKeys = (keys: Key[], libsList?: LibraryLightFragment[]) => {\n // The list coming from data might not be up to date after a create, so we use the one passed as argument\n const list = libsList ?? data?.libraries?.list ?? [];\n return list.filter(lib => keys.find(k => lib.id === k));\n };\n\n const _handleRowClick = (record: LibraryType) => {\n let newSelection: Key[];\n\n if (selectedRowKeys.indexOf(record.key) === -1) {\n newSelection = multiple ? [...selectedRowKeys, record.key] : [record.key]; // Add to selection\n } else {\n newSelection = multiple ? selectedRowKeys.filter(key => key !== record.key) : []; // Remove from selection\n }\n\n _handleSelectionChange(newSelection);\n };\n\n const _handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearch(e.currentTarget.value);\n };\n\n const _handleClickNewLibrary = () => {\n setIsNewLibraryModalOpen(true);\n };\n const _handleCloseNewLibrary = () => setIsNewLibraryModalOpen(false);\n\n const _handlePostCreate = async (newLibrary: SaveLibraryMutation['saveLibrary']) => {\n const allLibrariesData = client.readQuery<GetLibrariesQuery>({query: getLibrariesQuery});\n\n const newLibsList = [newLibrary, ...(allLibrariesData?.libraries?.list ?? [])];\n if (allLibrariesData) {\n client.writeQuery({\n query: getLibrariesQuery,\n data: {\n libraries: {\n ...allLibrariesData.libraries,\n list: newLibsList,\n },\n },\n });\n }\n const newSelection = [...selectedRowKeys, newLibrary.id];\n setSelectedRowKeys(newSelection);\n onSelect(_getLibsFromKeys(newSelection, newLibsList));\n };\n\n if (loading) {\n return <Loading />;\n }\n\n if (error || isAllowedQueryResult.error) {\n return <ErrorDisplay message={error?.message || isAllowedQueryResult?.error?.message} />;\n }\n\n const columns: TableColumnsType<LibraryType> = [\n {\n title: t('libraries.library'),\n key: 'library',\n render: (_, library) => {\n const libraryIdentity: IEntityData = {\n label: library.label,\n subLabel: library.id,\n preview: (library.icon?.whoAmI?.preview?.[PreviewSize.SMALL] as string) ?? null,\n color: null,\n };\n return <EntityCard entity={libraryIdentity} size={PreviewSize.SMALL} />;\n },\n },\n ];\n\n const tableData: LibraryType[] = ([...data?.libraries?.list] ?? [])\n .filter(lib => {\n // Do not display already selected libraries unless showSelected is true\n if (!showSelected && selected.find(selectedLib => selectedLib === lib.id)) {\n return false;\n }\n\n // Filter based on search\n const label = localizedTranslation(lib.label, lang);\n const searchStr = search.toLowerCase();\n\n // Search on id or label\n return lib.id.toLowerCase().includes(searchStr) || label.toLowerCase().includes(searchStr);\n })\n .map(lib => ({\n ...lib,\n key: lib.id,\n label: localizedTranslation(lib.label, lang),\n }));\n\n const tableHeader = (\n <HeaderWrapper>\n <Input.Search onChange={_handleSearchChange} placeholder={t('libraries.search') + '...'} allowClear />\n {canCreate && (\n <Button type=\"primary\" icon={<PlusOutlined />} onClick={_handleClickNewLibrary}>\n {t('libraries.new_library')}\n </Button>\n )}\n </HeaderWrapper>\n );\n\n return (\n <>\n <Table\n size=\"middle\"\n rowSelection={{\n type: multiple ? 'checkbox' : 'radio',\n selectedRowKeys,\n onChange: _handleSelectionChange,\n }}\n columns={columns}\n dataSource={tableData}\n bordered\n pagination={false}\n scroll={{y: 'calc(95vh - 20rem)'}}\n title={() => tableHeader}\n onRow={record => ({\n onClick: () => _handleRowClick(record),\n })}\n />\n {isNewLibraryModalOpen && (\n <EditLibraryModal\n open={isNewLibraryModalOpen}\n onClose={_handleCloseNewLibrary}\n onPostCreate={_handlePostCreate}\n width={790}\n />\n )}\n </>\n );\n}\n\nexport default LibrariesList;\n"]}
|
|
1
|
+
{"version":3,"file":"LibrariesList.js","sourceRoot":"","sources":["../../../../src/components/LibraryPicker/LibrariesList/LibrariesList.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {PlusOutlined} from '@ant-design/icons';\nimport {useApolloClient} from '@apollo/client';\nimport {localizedTranslation, type Override} from '@leav/utils';\nimport {Button, Input, Table, type TableColumnsType} from 'antd';\nimport {type Key, useState} from 'react';\nimport styled from 'styled-components';\nimport {PreviewSize} from '../../../constants';\nimport {useLang} from '../../../hooks';\nimport {useSharedTranslation} from '../../../hooks/useSharedTranslation';\nimport {\n type GetLibrariesQuery,\n type LibraryLightFragment,\n PermissionsActions,\n PermissionTypes,\n type SaveLibraryMutation,\n useGetLibrariesQuery,\n useIsAllowedQuery,\n} from '../../../_gqlTypes';\nimport {getLibrariesQuery} from '../../../_queries/libraries/getLibrariesQuery';\nimport {extractPermissionFromQuery} from '../../../_utils';\nimport {EditLibraryModal} from '../../EditLibraryModal';\nimport {EntityCard, type IEntityData} from '../../EntityCard';\nimport {ErrorDisplay} from '../../ErrorDisplay';\nimport {Loading} from '../../Loading';\n\nconst HeaderWrapper = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 0.5rem;\n\n > input {\n flex-grow: 1;\n }\n`;\n\ntype LibraryType = Override<LibraryLightFragment, {label: string}> & {key: string};\n\ninterface ILibrariesListProps {\n onSelect: (selectedLibraries: LibraryLightFragment[]) => void;\n selected?: string[];\n multiple?: boolean;\n showSelected?: boolean;\n}\n\nfunction LibrariesList({\n onSelect,\n selected = [],\n multiple = true,\n showSelected = false,\n}: ILibrariesListProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {lang} = useLang();\n const {loading, error, data} = useGetLibrariesQuery();\n\n const isAllowedQueryResult = useIsAllowedQuery({\n fetchPolicy: 'cache-and-network',\n variables: {\n type: PermissionTypes.admin,\n actions: [PermissionsActions.admin_create_library],\n },\n });\n const canCreate = extractPermissionFromQuery(isAllowedQueryResult, PermissionsActions.admin_create_library);\n\n const [selectedRowKeys, setSelectedRowKeys] = useState<Key[]>(showSelected ? selected : []);\n const [search, setSearch] = useState('');\n const [isNewLibraryModalOpen, setIsNewLibraryModalOpen] = useState(false);\n const client = useApolloClient();\n\n const _handleSelectionChange = (selection: Key[]) => {\n setSelectedRowKeys(selection);\n onSelect(_getLibsFromKeys(selection));\n };\n\n const _getLibsFromKeys = (keys: Key[], libsList?: LibraryLightFragment[]) => {\n // The list coming from data might not be up to date after a create, so we use the one passed as argument\n const list = libsList ?? data?.libraries?.list ?? [];\n return list.filter(lib => keys.find(k => lib.id === k));\n };\n\n const _handleRowClick = (record: LibraryType) => {\n let newSelection: Key[];\n\n if (selectedRowKeys.indexOf(record.key) === -1) {\n newSelection = multiple ? [...selectedRowKeys, record.key] : [record.key]; // Add to selection\n } else {\n newSelection = multiple ? selectedRowKeys.filter(key => key !== record.key) : []; // Remove from selection\n }\n\n _handleSelectionChange(newSelection);\n };\n\n const _handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearch(e.currentTarget.value);\n };\n\n const _handleClickNewLibrary = () => {\n setIsNewLibraryModalOpen(true);\n };\n const _handleCloseNewLibrary = () => setIsNewLibraryModalOpen(false);\n\n const _handlePostCreate = async (newLibrary: SaveLibraryMutation['saveLibrary']) => {\n const allLibrariesData = client.readQuery<GetLibrariesQuery>({query: getLibrariesQuery});\n\n const newLibsList = [newLibrary, ...(allLibrariesData?.libraries?.list ?? [])];\n if (allLibrariesData) {\n client.writeQuery({\n query: getLibrariesQuery,\n data: {\n libraries: {\n ...allLibrariesData.libraries,\n list: newLibsList,\n },\n },\n });\n }\n const newSelection = [...selectedRowKeys, newLibrary.id];\n setSelectedRowKeys(newSelection);\n onSelect(_getLibsFromKeys(newSelection, newLibsList));\n };\n\n if (loading) {\n return <Loading />;\n }\n\n if (error || isAllowedQueryResult.error) {\n return <ErrorDisplay message={error?.message || isAllowedQueryResult?.error?.message} />;\n }\n\n const columns: TableColumnsType<LibraryType> = [\n {\n title: t('libraries.library'),\n key: 'library',\n render: (_, library) => {\n const libraryIdentity: IEntityData = {\n label: library.label,\n subLabel: library.id,\n preview: (library.icon?.whoAmI?.preview?.[PreviewSize.SMALL] as string) ?? null,\n color: null,\n };\n return <EntityCard entity={libraryIdentity} size={PreviewSize.SMALL} />;\n },\n },\n ];\n\n const tableData: LibraryType[] = [...(data?.libraries?.list ?? [])]\n .filter(lib => {\n // Do not display already selected libraries unless showSelected is true\n if (!showSelected && selected.find(selectedLib => selectedLib === lib.id)) {\n return false;\n }\n\n // Filter based on search\n const label = localizedTranslation(lib.label, lang);\n const searchStr = search.toLowerCase();\n\n // Search on id or label\n return lib.id.toLowerCase().includes(searchStr) || label.toLowerCase().includes(searchStr);\n })\n .map(lib => ({\n ...lib,\n key: lib.id,\n label: localizedTranslation(lib.label, lang),\n }));\n\n const tableHeader = (\n <HeaderWrapper>\n <Input.Search onChange={_handleSearchChange} placeholder={t('libraries.search') + '...'} allowClear />\n {canCreate && (\n <Button type=\"primary\" icon={<PlusOutlined />} onClick={_handleClickNewLibrary}>\n {t('libraries.new_library')}\n </Button>\n )}\n </HeaderWrapper>\n );\n\n return (\n <>\n <Table\n size=\"middle\"\n rowSelection={{\n type: multiple ? 'checkbox' : 'radio',\n selectedRowKeys,\n onChange: _handleSelectionChange,\n }}\n columns={columns}\n dataSource={tableData}\n bordered\n pagination={false}\n scroll={{y: 'calc(95vh - 20rem)'}}\n title={() => tableHeader}\n onRow={record => ({\n onClick: () => _handleRowClick(record),\n })}\n />\n {isNewLibraryModalOpen && (\n <EditLibraryModal\n open={isNewLibraryModalOpen}\n onClose={_handleCloseNewLibrary}\n onPostCreate={_handlePostCreate}\n width={790}\n />\n )}\n </>\n );\n}\n\nexport default LibrariesList;\n"]}
|
|
@@ -4,7 +4,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
4
4
|
// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
|
|
5
5
|
import { Modal } from 'antd';
|
|
6
6
|
import { useState } from 'react';
|
|
7
|
-
import { LibraryItemsList } from '../../components
|
|
7
|
+
import { LibraryItemsList } from '../../components';
|
|
8
8
|
import { ErrorDisplayTypes } from '../../constants';
|
|
9
9
|
import useGetLibraryDetailExtendedQuery from '../../hooks/useGetLibraryDetailExtendedQuery/useGetLibraryDetailExtendedQuery';
|
|
10
10
|
import { useSharedTranslation } from '../../hooks/useSharedTranslation';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchModal.js","sourceRoot":"","sources":["../../../src/components/SearchModal/SearchModal.tsx"],"names":[],"mappings":";AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,KAAK,EAAC,MAAM,MAAM,CAAC;AAC3B,OAAO,EAAyB,QAAQ,EAAC,MAAM,OAAO,CAAC;AACvD,OAAO,EAAC,gBAAgB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"SearchModal.js","sourceRoot":"","sources":["../../../src/components/SearchModal/SearchModal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {Modal} from 'antd';\nimport {type FunctionComponent, useState} from 'react';\nimport {LibraryItemsList} from '_ui/components';\nimport {ErrorDisplayTypes} from '_ui/constants';\nimport useGetLibraryDetailExtendedQuery from '_ui/hooks/useGetLibraryDetailExtendedQuery/useGetLibraryDetailExtendedQuery';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {type ISearchSelection} from '_ui/types';\nimport {ErrorDisplay} from '../ErrorDisplay';\nimport {Loading} from '../Loading';\n\ninterface ISearchModalProps {\n libId: string;\n visible: boolean;\n setVisible: (visible: boolean) => void;\n submitAction: (selection: ISearchSelection) => void;\n}\n\nexport const SearchModal: FunctionComponent<ISearchModalProps> = ({visible, setVisible, submitAction, libId}) => {\n const {t} = useSharedTranslation();\n const [selection, setSelection] = useState<ISearchSelection>({selected: [], allSelected: false});\n\n const _handleModalClose = () => {\n setVisible(false);\n };\n\n const _handleOk = () => {\n submitAction(selection);\n _handleModalClose();\n };\n\n const _handleSelectionChange = (newSelection: ISearchSelection) => {\n setSelection(newSelection);\n };\n\n const renderModal = (content: JSX.Element): JSX.Element => (\n <Modal\n open={visible}\n onCancel={_handleModalClose}\n width=\"95vw\"\n styles={{body: {height: '90vh', overflow: 'hidden'}}}\n style={{\n top: '1rem',\n }}\n onOk={_handleOk}\n okText={t('global.apply')}\n cancelText={t('global.cancel')}\n >\n {content}\n </Modal>\n );\n\n const {loading, data, error} = useGetLibraryDetailExtendedQuery({library: libId});\n\n if (loading) {\n return renderModal(<Loading />);\n }\n\n if (error) {\n return renderModal(<ErrorDisplay message={error.message} />);\n }\n\n if (!data?.libraries?.list?.length) {\n return renderModal(<ErrorDisplay message={t('lib_detail.not_found', {libraryId: libId})} />);\n }\n\n if (!data.libraries.list[0].permissions.access_library) {\n return <ErrorDisplay type={ErrorDisplayTypes.PERMISSION_ERROR} showActionButton={false} />;\n }\n\n return renderModal(\n <div style={{position: 'relative'}}>\n <LibraryItemsList\n selectionMode={true}\n library={data.libraries.list[0]}\n style={{height: 'calc(100vh - 11rem)'}}\n onSelectChange={_handleSelectionChange}\n />\n </div>,\n );\n};\n\nexport default SearchModal;\n"]}
|
|
@@ -111,7 +111,7 @@ function TreesList({ onSelect, selected = [], multiple = true, showSelected = fa
|
|
|
111
111
|
},
|
|
112
112
|
},
|
|
113
113
|
];
|
|
114
|
-
const tableData =
|
|
114
|
+
const tableData = [...(data?.trees?.list ?? [])]
|
|
115
115
|
.filter(tree => {
|
|
116
116
|
// Do not display already selected libraries
|
|
117
117
|
if (!showSelected && selected.find(selectedTree => selectedTree === tree.id)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreesList.js","sourceRoot":"","sources":["../../../../src/components/TreePicker/TreesList/TreesList.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {PlusOutlined} from '@ant-design/icons';\nimport {useApolloClient} from '@apollo/client';\nimport {localizedTranslation, type Override} from '@leav/utils';\nimport {Button, Input, Table, type TableColumnsType} from 'antd';\nimport {type ComponentProps, type Key, useState} from 'react';\nimport styled from 'styled-components';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n type GetTreesQuery,\n PermissionsActions,\n PermissionTypes,\n type TreeLightFragment,\n useGetTreesQuery,\n useIsAllowedQuery,\n} from '_ui/_gqlTypes';\nimport {getTreesQuery} from '_ui/_queries/trees/getTreesQuery';\nimport {extractPermissionFromQuery} from '_ui/_utils';\nimport {PreviewSize} from '../../../constants';\nimport {useLang} from '../../../hooks';\nimport {EditTreeModal} from '../../EditTreeModal';\nimport {EntityCard, type IEntityData} from '../../EntityCard';\nimport {ErrorDisplay} from '../../ErrorDisplay';\nimport {Loading} from '../../Loading';\n\nconst HeaderWrapper = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 0.5rem;\n\n > input {\n flex-grow: 1;\n }\n`;\n\ntype TreeType = Override<GetTreesQuery['trees']['list'][number], {label: string}> & {key: string};\n\ninterface ITreesListProps {\n onSelect: (selectedTrees: TreeLightFragment[]) => void;\n selected?: string[];\n multiple?: boolean;\n showSelected?: boolean;\n}\n\nfunction TreesList({onSelect, selected = [], multiple = true, showSelected = false}: ITreesListProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {lang} = useLang();\n const {loading, error, data} = useGetTreesQuery();\n\n const isAllowedQueryResult = useIsAllowedQuery({\n fetchPolicy: 'cache-and-network',\n variables: {\n type: PermissionTypes.admin,\n actions: [PermissionsActions.admin_create_tree],\n },\n });\n const canCreate = extractPermissionFromQuery(isAllowedQueryResult, PermissionsActions.admin_create_tree);\n\n const [selectedRowKeys, setSelectedRowKeys] = useState<Key[]>(showSelected ? selected : []);\n const [search, setSearch] = useState('');\n const [isNewTreeModalOpen, setIsNewTreeModalOpen] = useState(false);\n const client = useApolloClient();\n\n const _getTreesFromKeys = (keys: Key[], treesList?: TreeLightFragment[]): TreeLightFragment[] => {\n // The list coming from data might not be up to date after a create, so we use the one passed as argument\n const list = treesList ?? data?.trees?.list ?? [];\n return list.filter(tree => keys.find(k => tree.id === k));\n };\n\n const _handleSelectionChange = (selection: Key[]) => {\n setSelectedRowKeys(selection);\n const treesSelected = _getTreesFromKeys(selection);\n onSelect(treesSelected);\n };\n\n const _handleRowClick = (record: TreeType) => {\n let newSelection: Key[];\n\n if (selectedRowKeys.indexOf(record.key) === -1) {\n newSelection = multiple ? [...selectedRowKeys, record.key] : [record.key]; // Add to selection\n } else {\n newSelection = multiple ? selectedRowKeys.filter(key => key !== record.key) : []; // Remove from selection\n }\n\n _handleSelectionChange(newSelection);\n };\n\n const _handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearch(e.currentTarget.value);\n };\n\n const _handleClickNewTree = () => {\n setIsNewTreeModalOpen(true);\n };\n const _handleCloseNewAttribute = () => setIsNewTreeModalOpen(false);\n\n const _handlePostCreate: ComponentProps<typeof EditTreeModal>['onPostCreate'] = async newTree => {\n const allTreesData = client.readQuery<GetTreesQuery>({query: getTreesQuery});\n\n const newTreesList = [newTree, ...(allTreesData?.trees?.list ?? [])];\n if (allTreesData) {\n client.writeQuery({\n query: getTreesQuery,\n data: {\n trees: {\n ...allTreesData.trees,\n list: newTreesList,\n },\n },\n });\n }\n\n const newSelection = [...selectedRowKeys, newTree.id];\n setSelectedRowKeys(newSelection);\n const treesSelected = _getTreesFromKeys(newSelection, newTreesList);\n onSelect(treesSelected);\n };\n\n if (loading) {\n return <Loading />;\n }\n\n if (error) {\n return <ErrorDisplay message={error.message} />;\n }\n\n const columns: TableColumnsType<TreeType> = [\n {\n title: t('trees.tree'),\n key: 'tree',\n render: (_, tree) => {\n const treeIdentity: IEntityData = {\n label: tree.label,\n subLabel: tree.id,\n preview: null,\n color: null,\n };\n return <EntityCard entity={treeIdentity} size={PreviewSize.SMALL} />;\n },\n },\n ];\n\n const tableData: TreeType[] = ([...data?.trees?.list] ?? [])\n .filter(tree => {\n // Do not display already selected libraries\n if (!showSelected && selected.find(selectedTree => selectedTree === tree.id)) {\n return false;\n }\n\n // Filter based on search\n const label = localizedTranslation(tree.label, lang);\n const searchStr = search.toLowerCase();\n\n // Search on id or label\n return tree.id.toLowerCase().includes(searchStr) || label.toLowerCase().includes(searchStr);\n })\n .map(tree => ({\n ...tree,\n key: tree.id,\n label: localizedTranslation(tree.label, lang),\n }));\n\n const tableHeader = (\n <HeaderWrapper>\n <Input.Search onChange={_handleSearchChange} placeholder={t('global.search') + '...'} allowClear />\n {canCreate && (\n <Button type=\"primary\" icon={<PlusOutlined />} onClick={_handleClickNewTree}>\n {t('trees.new_tree')}\n </Button>\n )}\n </HeaderWrapper>\n );\n\n return (\n <>\n <Table\n size=\"middle\"\n rowSelection={{\n type: multiple ? 'checkbox' : 'radio',\n selectedRowKeys,\n onChange: _handleSelectionChange,\n }}\n columns={columns}\n dataSource={tableData}\n bordered\n pagination={false}\n scroll={{y: 'calc(95vh - 20rem)'}}\n title={() => tableHeader}\n onRow={record => ({\n onClick: () => _handleRowClick(record),\n })}\n />\n {isNewTreeModalOpen && (\n <EditTreeModal\n open={isNewTreeModalOpen}\n onClose={_handleCloseNewAttribute}\n onPostCreate={_handlePostCreate}\n width={790}\n />\n )}\n </>\n );\n}\n\nexport default TreesList;\n"]}
|
|
1
|
+
{"version":3,"file":"TreesList.js","sourceRoot":"","sources":["../../../../src/components/TreePicker/TreesList/TreesList.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {PlusOutlined} from '@ant-design/icons';\nimport {useApolloClient} from '@apollo/client';\nimport {localizedTranslation, type Override} from '@leav/utils';\nimport {Button, Input, Table, type TableColumnsType} from 'antd';\nimport {type ComponentProps, type Key, useState} from 'react';\nimport styled from 'styled-components';\nimport {useSharedTranslation} from '_ui/hooks/useSharedTranslation';\nimport {\n type GetTreesQuery,\n PermissionsActions,\n PermissionTypes,\n type TreeLightFragment,\n useGetTreesQuery,\n useIsAllowedQuery,\n} from '_ui/_gqlTypes';\nimport {getTreesQuery} from '_ui/_queries/trees/getTreesQuery';\nimport {extractPermissionFromQuery} from '_ui/_utils';\nimport {PreviewSize} from '../../../constants';\nimport {useLang} from '../../../hooks';\nimport {EditTreeModal} from '../../EditTreeModal';\nimport {EntityCard, type IEntityData} from '../../EntityCard';\nimport {ErrorDisplay} from '../../ErrorDisplay';\nimport {Loading} from '../../Loading';\n\nconst HeaderWrapper = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 0.5rem;\n\n > input {\n flex-grow: 1;\n }\n`;\n\ntype TreeType = Override<GetTreesQuery['trees']['list'][number], {label: string}> & {key: string};\n\ninterface ITreesListProps {\n onSelect: (selectedTrees: TreeLightFragment[]) => void;\n selected?: string[];\n multiple?: boolean;\n showSelected?: boolean;\n}\n\nfunction TreesList({onSelect, selected = [], multiple = true, showSelected = false}: ITreesListProps): JSX.Element {\n const {t} = useSharedTranslation();\n const {lang} = useLang();\n const {loading, error, data} = useGetTreesQuery();\n\n const isAllowedQueryResult = useIsAllowedQuery({\n fetchPolicy: 'cache-and-network',\n variables: {\n type: PermissionTypes.admin,\n actions: [PermissionsActions.admin_create_tree],\n },\n });\n const canCreate = extractPermissionFromQuery(isAllowedQueryResult, PermissionsActions.admin_create_tree);\n\n const [selectedRowKeys, setSelectedRowKeys] = useState<Key[]>(showSelected ? selected : []);\n const [search, setSearch] = useState('');\n const [isNewTreeModalOpen, setIsNewTreeModalOpen] = useState(false);\n const client = useApolloClient();\n\n const _getTreesFromKeys = (keys: Key[], treesList?: TreeLightFragment[]): TreeLightFragment[] => {\n // The list coming from data might not be up to date after a create, so we use the one passed as argument\n const list = treesList ?? data?.trees?.list ?? [];\n return list.filter(tree => keys.find(k => tree.id === k));\n };\n\n const _handleSelectionChange = (selection: Key[]) => {\n setSelectedRowKeys(selection);\n const treesSelected = _getTreesFromKeys(selection);\n onSelect(treesSelected);\n };\n\n const _handleRowClick = (record: TreeType) => {\n let newSelection: Key[];\n\n if (selectedRowKeys.indexOf(record.key) === -1) {\n newSelection = multiple ? [...selectedRowKeys, record.key] : [record.key]; // Add to selection\n } else {\n newSelection = multiple ? selectedRowKeys.filter(key => key !== record.key) : []; // Remove from selection\n }\n\n _handleSelectionChange(newSelection);\n };\n\n const _handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearch(e.currentTarget.value);\n };\n\n const _handleClickNewTree = () => {\n setIsNewTreeModalOpen(true);\n };\n const _handleCloseNewAttribute = () => setIsNewTreeModalOpen(false);\n\n const _handlePostCreate: ComponentProps<typeof EditTreeModal>['onPostCreate'] = async newTree => {\n const allTreesData = client.readQuery<GetTreesQuery>({query: getTreesQuery});\n\n const newTreesList = [newTree, ...(allTreesData?.trees?.list ?? [])];\n if (allTreesData) {\n client.writeQuery({\n query: getTreesQuery,\n data: {\n trees: {\n ...allTreesData.trees,\n list: newTreesList,\n },\n },\n });\n }\n\n const newSelection = [...selectedRowKeys, newTree.id];\n setSelectedRowKeys(newSelection);\n const treesSelected = _getTreesFromKeys(newSelection, newTreesList);\n onSelect(treesSelected);\n };\n\n if (loading) {\n return <Loading />;\n }\n\n if (error) {\n return <ErrorDisplay message={error.message} />;\n }\n\n const columns: TableColumnsType<TreeType> = [\n {\n title: t('trees.tree'),\n key: 'tree',\n render: (_, tree) => {\n const treeIdentity: IEntityData = {\n label: tree.label,\n subLabel: tree.id,\n preview: null,\n color: null,\n };\n return <EntityCard entity={treeIdentity} size={PreviewSize.SMALL} />;\n },\n },\n ];\n\n const tableData: TreeType[] = [...(data?.trees?.list ?? [])]\n .filter(tree => {\n // Do not display already selected libraries\n if (!showSelected && selected.find(selectedTree => selectedTree === tree.id)) {\n return false;\n }\n\n // Filter based on search\n const label = localizedTranslation(tree.label, lang);\n const searchStr = search.toLowerCase();\n\n // Search on id or label\n return tree.id.toLowerCase().includes(searchStr) || label.toLowerCase().includes(searchStr);\n })\n .map(tree => ({\n ...tree,\n key: tree.id,\n label: localizedTranslation(tree.label, lang),\n }));\n\n const tableHeader = (\n <HeaderWrapper>\n <Input.Search onChange={_handleSearchChange} placeholder={t('global.search') + '...'} allowClear />\n {canCreate && (\n <Button type=\"primary\" icon={<PlusOutlined />} onClick={_handleClickNewTree}>\n {t('trees.new_tree')}\n </Button>\n )}\n </HeaderWrapper>\n );\n\n return (\n <>\n <Table\n size=\"middle\"\n rowSelection={{\n type: multiple ? 'checkbox' : 'radio',\n selectedRowKeys,\n onChange: _handleSelectionChange,\n }}\n columns={columns}\n dataSource={tableData}\n bordered\n pagination={false}\n scroll={{y: 'calc(95vh - 20rem)'}}\n title={() => tableHeader}\n onRow={record => ({\n onClick: () => _handleRowClick(record),\n })}\n />\n {isNewTreeModalOpen && (\n <EditTreeModal\n open={isNewTreeModalOpen}\n onClose={_handleCloseNewAttribute}\n onPostCreate={_handlePostCreate}\n width={790}\n />\n )}\n </>\n );\n}\n\nexport default TreesList;\n"]}
|
|
@@ -62,6 +62,9 @@ export type NavigateToPanelMessage = IMessageBase & {
|
|
|
62
62
|
libraryId: LibraryId;
|
|
63
63
|
panelId?: PanelId;
|
|
64
64
|
recordId?: string;
|
|
65
|
+
flapRecordId?: string;
|
|
66
|
+
flapLibraryId?: LibraryId;
|
|
67
|
+
flapPanelId?: 'info-history' | 'comment';
|
|
65
68
|
};
|
|
66
69
|
};
|
|
67
70
|
export type ClosePanelMessage = IMessageBase & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hooks/useIFrameMessenger/types.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,MAAM,QAAQ,GAAG,uBAAuB,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type RefObject, type ComponentProps, type Key, type JSXElementConstructor} from 'react';\nimport type * as z from 'zod/v4';\nimport {type KitNotification} from 'aristid-ds';\nimport {type IKitConfirmDialog} from 'aristid-ds/dist/Kit/Feedback/Modal/types';\nimport {type ToastedAlertProps} from 'aristid-ds/dist/Kit/Feedback/Alert/types';\nimport {\n type LibraryIdSchema,\n type WhereSchema,\n type PanelIdSchema,\n type PanelSchema,\n type PanelIFrameSchema,\n} from '_ui/hooks/useIFrameMessenger/schema';\n\nexport const packetId = '__fromIframeMessenger';\n\nexport interface IEncodedMessage {\n payload: string;\n [packetId]: boolean;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ComponentPropsWithKey<T extends keyof JSX.IntrinsicElements | JSXElementConstructor<any>> =\n ComponentProps<T> & {\n key?: Key;\n };\n\nexport interface IMessageBase {\n __frameId?: string;\n}\n\nexport type ModalConfirmMessage = IMessageBase & {\n type: 'modal-confirm';\n id: string;\n data: IKitConfirmDialog;\n overrides?: string[];\n};\n\nexport type AlertMessage = IMessageBase & {\n type: 'alert';\n id: string;\n data: ToastedAlertProps;\n overrides?: string[];\n};\n\nexport type NotificationMessage = IMessageBase & {\n type: 'notification';\n id: string;\n data: ComponentPropsWithKey<typeof KitNotification>;\n overrides?: string[];\n};\n\nexport type ChangeLanguageMessage = IMessageBase & {\n type: 'change-language';\n language: string;\n};\n\nexport type SimpleMessage = IMessageBase & {\n type: 'message';\n id: string;\n data: unknown;\n};\n\nexport type RegisterMessage = IMessageBase & {\n type: 'register';\n id: string;\n};\n\nexport type UnregisterMessage = IMessageBase & {\n type: 'unregister';\n id: string;\n};\n\nexport type Panel = z.infer<typeof PanelSchema>;\n\nexport type LibraryId = z.infer<typeof LibraryIdSchema>;\n\nexport type PanelId = z.infer<typeof PanelIdSchema>;\n\nexport type Where = z.infer<typeof WhereSchema>;\n\ntype PanelIFrame = z.infer<typeof PanelIFrameSchema>;\n\nexport type NavigateToPanelMessage = IMessageBase & {\n type: 'navigate-to-panel';\n data: {\n where: Where;\n libraryId: LibraryId;\n panelId?: PanelId;\n recordId?: string;\n };\n};\n\nexport type ClosePanelMessage = IMessageBase & {\n type: 'close-panel';\n data: {\n recordId: string;\n where: string;\n recordPanelId: string;\n };\n};\n\nexport type NavigateToIframeMessage = IMessageBase & {\n type: 'navigate-to-iframe';\n data: {\n panel: PanelIFrame;\n destination: {libraryId: LibraryId};\n where: Where;\n recordId: string;\n recordPanelId: string;\n };\n};\n\nexport type MessageToPanelMessage = IMessageBase & {\n type: 'message-to-panel';\n data: {\n type: string;\n target?: string;\n payload: unknown;\n };\n};\n\nexport type MessageToParent =\n | ModalConfirmMessage\n | AlertMessage\n | NotificationMessage\n | SimpleMessage\n | RegisterMessage\n | UnregisterMessage\n | NavigateToPanelMessage\n | ClosePanelMessage\n | NavigateToIframeMessage\n | MessageToPanelMessage;\n\nexport type MessageFromParent =\n | (IMessageBase & {\n type: 'on-call-callback';\n path: string;\n data: unknown;\n })\n | ChangeLanguageMessage;\n\nexport type Message = MessageToParent | MessageFromParent;\n\nexport type MessageHandler<T = Message> = (message: T, dispatch: MessageDispatcher<T>) => void;\nexport type MessageDispatcher<T = Message> = (message: T, frameId?: string) => void;\n\nexport type CallCbFunction = (path: string, data: unknown, frameId: string) => void;\n\nexport type CallbackFunction = (...args: never[]) => void;\nexport type Callbacks = Record<string, Record<string, CallbackFunction>>;\n\nexport type MessageToPanelMessageHandler = (data: MessageToPanelMessage['data']['payload']) => void;\nexport type AddMessageToPanelMessageHandler = (type: string, handler: MessageToPanelMessageHandler) => void;\n\nexport interface IUseIFrameMessengerOptions {\n ref?: RefObject<HTMLIFrameElement>;\n id?: string;\n handlers?: {\n onModalConfirm?: (\n data: ModalConfirmMessage['data'],\n id: string,\n dispatch: MessageDispatcher,\n callCb: CallCbFunction,\n ) => void;\n onAlert?: (data: AlertMessage['data'], id: string, dispatch: MessageDispatcher, callCb: CallCbFunction) => void;\n onNotification?: (\n data: NotificationMessage['data'],\n id: string,\n dispatch: MessageDispatcher,\n callCb: CallCbFunction,\n ) => void;\n onMessage?: (data: unknown, id: string, dispatch: MessageDispatcher, callCb: CallCbFunction) => void;\n onNavigateToPanel?: (data: NavigateToPanelMessage['data']) => void;\n onClosePanel?: (data: ClosePanelMessage['data']) => void;\n onNavigateToIframe?: (data: NavigateToIframeMessage['data']) => void;\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hooks/useIFrameMessenger/types.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,MAAM,QAAQ,GAAG,uBAAuB,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {type RefObject, type ComponentProps, type Key, type JSXElementConstructor} from 'react';\nimport type * as z from 'zod/v4';\nimport {type KitNotification} from 'aristid-ds';\nimport {type IKitConfirmDialog} from 'aristid-ds/dist/Kit/Feedback/Modal/types';\nimport {type ToastedAlertProps} from 'aristid-ds/dist/Kit/Feedback/Alert/types';\nimport {\n type LibraryIdSchema,\n type WhereSchema,\n type PanelIdSchema,\n type PanelSchema,\n type PanelIFrameSchema,\n} from '_ui/hooks/useIFrameMessenger/schema';\n\nexport const packetId = '__fromIframeMessenger';\n\nexport interface IEncodedMessage {\n payload: string;\n [packetId]: boolean;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ComponentPropsWithKey<T extends keyof JSX.IntrinsicElements | JSXElementConstructor<any>> =\n ComponentProps<T> & {\n key?: Key;\n };\n\nexport interface IMessageBase {\n __frameId?: string;\n}\n\nexport type ModalConfirmMessage = IMessageBase & {\n type: 'modal-confirm';\n id: string;\n data: IKitConfirmDialog;\n overrides?: string[];\n};\n\nexport type AlertMessage = IMessageBase & {\n type: 'alert';\n id: string;\n data: ToastedAlertProps;\n overrides?: string[];\n};\n\nexport type NotificationMessage = IMessageBase & {\n type: 'notification';\n id: string;\n data: ComponentPropsWithKey<typeof KitNotification>;\n overrides?: string[];\n};\n\nexport type ChangeLanguageMessage = IMessageBase & {\n type: 'change-language';\n language: string;\n};\n\nexport type SimpleMessage = IMessageBase & {\n type: 'message';\n id: string;\n data: unknown;\n};\n\nexport type RegisterMessage = IMessageBase & {\n type: 'register';\n id: string;\n};\n\nexport type UnregisterMessage = IMessageBase & {\n type: 'unregister';\n id: string;\n};\n\nexport type Panel = z.infer<typeof PanelSchema>;\n\nexport type LibraryId = z.infer<typeof LibraryIdSchema>;\n\nexport type PanelId = z.infer<typeof PanelIdSchema>;\n\nexport type Where = z.infer<typeof WhereSchema>;\n\ntype PanelIFrame = z.infer<typeof PanelIFrameSchema>;\n\nexport type NavigateToPanelMessage = IMessageBase & {\n type: 'navigate-to-panel';\n data: {\n where: Where;\n libraryId: LibraryId;\n panelId?: PanelId;\n recordId?: string;\n flapRecordId?: string;\n flapLibraryId?: LibraryId;\n flapPanelId?: 'info-history' | 'comment';\n };\n};\n\nexport type ClosePanelMessage = IMessageBase & {\n type: 'close-panel';\n data: {\n recordId: string;\n where: string;\n recordPanelId: string;\n };\n};\n\nexport type NavigateToIframeMessage = IMessageBase & {\n type: 'navigate-to-iframe';\n data: {\n panel: PanelIFrame;\n destination: {libraryId: LibraryId};\n where: Where;\n recordId: string;\n recordPanelId: string;\n };\n};\n\nexport type MessageToPanelMessage = IMessageBase & {\n type: 'message-to-panel';\n data: {\n type: string;\n target?: string;\n payload: unknown;\n };\n};\n\nexport type MessageToParent =\n | ModalConfirmMessage\n | AlertMessage\n | NotificationMessage\n | SimpleMessage\n | RegisterMessage\n | UnregisterMessage\n | NavigateToPanelMessage\n | ClosePanelMessage\n | NavigateToIframeMessage\n | MessageToPanelMessage;\n\nexport type MessageFromParent =\n | (IMessageBase & {\n type: 'on-call-callback';\n path: string;\n data: unknown;\n })\n | ChangeLanguageMessage;\n\nexport type Message = MessageToParent | MessageFromParent;\n\nexport type MessageHandler<T = Message> = (message: T, dispatch: MessageDispatcher<T>) => void;\nexport type MessageDispatcher<T = Message> = (message: T, frameId?: string) => void;\n\nexport type CallCbFunction = (path: string, data: unknown, frameId: string) => void;\n\nexport type CallbackFunction = (...args: never[]) => void;\nexport type Callbacks = Record<string, Record<string, CallbackFunction>>;\n\nexport type MessageToPanelMessageHandler = (data: MessageToPanelMessage['data']['payload']) => void;\nexport type AddMessageToPanelMessageHandler = (type: string, handler: MessageToPanelMessageHandler) => void;\n\nexport interface IUseIFrameMessengerOptions {\n ref?: RefObject<HTMLIFrameElement>;\n id?: string;\n handlers?: {\n onModalConfirm?: (\n data: ModalConfirmMessage['data'],\n id: string,\n dispatch: MessageDispatcher,\n callCb: CallCbFunction,\n ) => void;\n onAlert?: (data: AlertMessage['data'], id: string, dispatch: MessageDispatcher, callCb: CallCbFunction) => void;\n onNotification?: (\n data: NotificationMessage['data'],\n id: string,\n dispatch: MessageDispatcher,\n callCb: CallCbFunction,\n ) => void;\n onMessage?: (data: unknown, id: string, dispatch: MessageDispatcher, callCb: CallCbFunction) => void;\n onNavigateToPanel?: (data: NavigateToPanelMessage['data']) => void;\n onClosePanel?: (data: ClosePanelMessage['data']) => void;\n onNavigateToIframe?: (data: NavigateToIframeMessage['data']) => void;\n };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leav/ui",
|
|
3
|
-
"version": "1.5.0-
|
|
3
|
+
"version": "1.5.0-ba7c6a04",
|
|
4
4
|
"description": "Shared React components and hooks",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"prepublishOnly": "yarn build",
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
"test": "jest",
|
|
13
13
|
"test:ci": "jest --maxWorkers=2",
|
|
14
14
|
"test:commit": "jest --maxWorkers=50% --onlyChanged",
|
|
15
|
-
"create_comp": "scripts/createComponent.js",
|
|
16
15
|
"publish-ui": "yarn npm publish --access public",
|
|
17
16
|
"get-version": "jq -r '.version' package.json",
|
|
18
17
|
"set-version": "jq --arg v $1 '.version = $v' package.json > package.tmp.json && mv package.tmp.json package.json"
|
|
@@ -61,7 +60,7 @@
|
|
|
61
60
|
"ts-jest": "29.0.1",
|
|
62
61
|
"tsc-alias": "1.8.8",
|
|
63
62
|
"typescript": "5.5.3",
|
|
64
|
-
"vite": "
|
|
63
|
+
"vite": "7.2.2"
|
|
65
64
|
},
|
|
66
65
|
"peerDependencies": {
|
|
67
66
|
"@ant-design/icons": ">=5.2",
|