@knockout-js/org
Version:
Knockout组织相关组件
198 lines (197 loc) • 9.42 kB
JavaScript
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@ice/jsx-runtime/jsx-runtime";
import { AutoComplete, Input } from 'antd';
import ModalApp from '../app-modal';
import { useCallback, useEffect, useState } from 'react';
import { gid, instanceName } from '@knockout-js/api';
import { useLocale } from '../locale';
import { gql, paging, query } from '@knockout-js/ice-urql/request';
import styles from '../assets/autoComplete.module.css';
const appInfoQuery = gql(/* GraphQL */ `query orgPkgAppInfo($gid: GID!){
node(id:$gid){
... on App{
id,name,code,kind,comments,status
}
}
}`);
const orgAppListQuery = gql(/* GraphQL */ `query orgAppList($gid: GID!,$first: Int,$orderBy:AppOrder,$where:AppWhereInput){
node(id:$gid){
... on Org{
id
apps(first:$first,orderBy: $orderBy,where: $where){
totalCount,pageInfo{ hasNextPage,hasPreviousPage,startCursor,endCursor }
edges{
cursor,node{
id,name,code,kind,comments,status
}
}
}
}
}
}`);
const appListQuery = gql(/* GraphQL */ `query appList($first: Int,$orderBy:AppOrder,$where:AppWhereInput){
apps(first:$first,orderBy: $orderBy,where: $where){
totalCount,pageInfo{ hasNextPage,hasPreviousPage,startCursor,endCursor }
edges{
cursor,node{
id,name,code,kind,comments,status
}
}
}
}`);
let searchTimeoutFn = undefined;
export default ((props)=>{
const locale = useLocale('AppSelect'), [info, setInfo] = useState(), [keyword, setKeyword] = useState(), [options, setOptions] = useState([]), [modal, setModal] = useState({
open: false
});
const setValue = useCallback((original)=>{
if (original) {
var _props_onChange, _props;
const value = props.changeValue ? original[props.changeValue] : original;
setInfo(original);
setKeyword(original.name);
(_props_onChange = (_props = props).onChange) === null || _props_onChange === void 0 ? void 0 : _props_onChange.call(_props, value, original);
} else {
var _props_onChange1, _props1;
setKeyword(undefined);
setInfo(undefined);
(_props_onChange1 = (_props1 = props).onChange) === null || _props_onChange1 === void 0 ? void 0 : _props_onChange1.call(_props1);
}
}, []);
useEffect(()=>{
if (typeof props.value === 'string') {
if (props.dataSource) {
var _data;
const data = props.dataSource.find((item)=>item.id === props.value);
setInfo(data);
setKeyword((_data = data) === null || _data === void 0 ? void 0 : _data.name);
} else {
query(appInfoQuery, {
gid: gid('App', props.value)
}, {
instanceName: instanceName.UCENTER
}).then((result)=>{
var _result_data_node, _result_data;
if (((_result_data = result.data) === null || _result_data === void 0 ? void 0 : (_result_data_node = _result_data.node) === null || _result_data_node === void 0 ? void 0 : _result_data_node.__typename) === 'App') {
setInfo(result.data.node);
setKeyword(result.data.node.name);
}
});
}
} else {
var _props_value;
setInfo(props.value);
setKeyword((_props_value = props.value) === null || _props_value === void 0 ? void 0 : _props_value.name);
}
}, [
props.value,
props.dataSource
]);
return /*#__PURE__*/ _jsxs(_Fragment, {
children: [
/*#__PURE__*/ _jsx(AutoComplete, {
className: styles.autoComplete,
value: keyword,
options: options,
allowClear: !props.disabled,
disabled: props.disabled,
onClear: ()=>{
setValue();
setOptions([]);
},
onBlur: ()=>{
var _info;
setKeyword((_info = info) === null || _info === void 0 ? void 0 : _info.name);
},
onSelect: (v, option)=>{
setValue(option.info);
},
onSearch: async (keywordStr)=>{
setKeyword(keywordStr);
clearTimeout(searchTimeoutFn);
searchTimeoutFn = setTimeout(async ()=>{
const os = [];
if (keywordStr) {
if (props.orgId) {
var _result_data_node, _result_data;
const result = await paging(orgAppListQuery, {
gid: gid('Org', props.orgId),
first: 15,
where: {
nameContains: keywordStr
}
}, 1, {
instanceName: instanceName.UCENTER
});
if (((_result_data = result.data) === null || _result_data === void 0 ? void 0 : (_result_data_node = _result_data.node) === null || _result_data_node === void 0 ? void 0 : _result_data_node.__typename) === 'Org') {
var _result_data_node_apps_edges;
(_result_data_node_apps_edges = result.data.node.apps.edges) === null || _result_data_node_apps_edges === void 0 ? void 0 : _result_data_node_apps_edges.forEach((item)=>{
var _item;
if ((_item = item) === null || _item === void 0 ? void 0 : _item.node) {
os.push({
label: item.node.name,
value: item.node.id,
info: item.node
});
}
});
}
} else {
var _result_data1;
const result = await paging(appListQuery, {
first: 15,
where: {
nameContains: keywordStr
}
}, 1, {
instanceName: instanceName.UCENTER
});
if ((_result_data1 = result.data) === null || _result_data1 === void 0 ? void 0 : _result_data1.apps.totalCount) {
var _result_data_apps_edges;
(_result_data_apps_edges = result.data.apps.edges) === null || _result_data_apps_edges === void 0 ? void 0 : _result_data_apps_edges.forEach((item)=>{
var _item;
if ((_item = item) === null || _item === void 0 ? void 0 : _item.node) {
os.push({
label: item.node.name,
value: item.node.id,
info: item.node
});
}
});
}
}
}
setOptions(os);
}, 500);
},
children: /*#__PURE__*/ _jsx(Input.Search, _object_spread_props(_object_spread({
placeholder: locale.placeholder
}, props.searchProps), {
onSearch: (v, event)=>{
var _event;
(_event = event) === null || _event === void 0 ? void 0 : _event.stopPropagation();
modal.open = true;
setModal(_object_spread({}, modal));
}
}))
}),
/*#__PURE__*/ _jsx(ModalApp, {
open: modal.open,
title: locale.title,
modalProps: props.modalProps,
proTableProps: props.proTableProps,
orgId: props.orgId,
onClose: (selectData)=>{
var _selectData;
if ((_selectData = selectData) === null || _selectData === void 0 ? void 0 : _selectData.length) {
setValue(selectData[0]);
}
modal.open = false;
setModal(_object_spread({}, modal));
}
})
]
});
});
//# sourceMappingURL=index.js.map