@steedos-widgets/amis-object 1.2.6 → 1.2.8

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.
@@ -205,6 +205,39 @@ body {
205
205
  overflow: unset;
206
206
  }
207
207
 
208
+ /* 手机端native时间控件样式 */
209
+ @media (max-width: 768px){
210
+ .steedos-combo-edit .antd-Form-row{
211
+ display: flex !important;
212
+ -moz-column-gap: unset !important;
213
+ column-gap: unset !important;
214
+ }
215
+ .steedos-combo-edit .antd-Form::before{
216
+ content: unset;
217
+ }
218
+
219
+ .steedos-combo-edit .antd-Form .antd-Form-item::after{
220
+ content: unset;
221
+ }
222
+
223
+ .steedos-combo-edit .antd-Form .antd-Form-item{
224
+ padding: 0;
225
+ }
226
+
227
+ .steedos-combo-edit{
228
+ flex-wrap:nowrap !important;
229
+ }
230
+
231
+ .steedos-combo-edit .steedos-native-date .antd-TextControl-input input{
232
+ min-width: 120px;
233
+ align-items: start !important;
234
+ }
235
+
236
+ .steedos-combo-edit .steedos-native-time .antd-TextControl-input input{
237
+ min-width: 70px;
238
+ }
239
+ }
240
+
208
241
  .ant-dropdown-menu {
209
242
  border: 1px solid #e5e5e5;
210
243
  border-radius: 0.25rem;
@@ -608,6 +641,9 @@ body {
608
641
  .rounded-full {
609
642
  border-radius: 9999px
610
643
  }
644
+ .rounded-xl {
645
+ border-radius: 0.75rem
646
+ }
611
647
  .rounded-md {
612
648
  border-radius: 0.375rem
613
649
  }
@@ -724,6 +760,10 @@ body {
724
760
  padding-left: 0.5rem;
725
761
  padding-right: 0.5rem
726
762
  }
763
+ .py-1 {
764
+ padding-top: 0.25rem;
765
+ padding-bottom: 0.25rem
766
+ }
727
767
  .pt-4 {
728
768
  padding-top: 1rem
729
769
  }
@@ -903,6 +943,9 @@ body {
903
943
  outline-offset: 2px
904
944
  }
905
945
  @media (min-width: 640px) {
946
+ .sm\:sticky {
947
+ position: sticky
948
+ }
906
949
  .sm\:m-3 {
907
950
  margin: 0.75rem
908
951
  }
@@ -1,6 +1,6 @@
1
1
  import React, { useState, useEffect, createElement } from 'react';
2
2
  import * as ___default from 'lodash';
3
- import ___default__default, { isEmpty, isArray, each, find, endsWith, cloneDeep, map, includes, toArray, mergeWith, isString, union, has, slice, defaultsDeep as defaultsDeep$1, isObject as isObject$1, filter, get, isBoolean, omitBy, isNil, startsWith, isFunction, compact, difference, keys, pick, first, values, pickBy, random, assign, isNumber } from 'lodash';
3
+ import ___default__default, { isEmpty, isArray, each, find, endsWith, cloneDeep, map, includes, toArray, mergeWith, isString, union, has, slice, defaultsDeep as defaultsDeep$1, isObject as isObject$1, filter, get, forEach, isBoolean, omitBy, isNil, startsWith, isFunction, compact, difference, keys, pick, first, values, pickBy, random, assign, isNumber } from 'lodash';
4
4
  import { Dropdown, Tabs, Spin, Badge, Skeleton, Modal as Modal$1, message, notification, Button, Space, Drawer as Drawer$1 } from 'antd';
5
5
  import ReactDOM, { createRoot } from 'react-dom';
6
6
 
@@ -2955,7 +2955,7 @@ async function getObjectFieldsFilterFormSchema(ctx) {
2955
2955
  return Promise.all(filterFormSearchableFields.map(function (item) {
2956
2956
  const field = _.clone(fields[item]);
2957
2957
  if (
2958
- !_.includes(
2958
+ field && !_.includes(
2959
2959
  [
2960
2960
  "grid",
2961
2961
  "avatar",
@@ -3002,7 +3002,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
3002
3002
  var filterForm = scope.parent.parent.getComponents().find(function(n){
3003
3003
  return n.props.type === "form";
3004
3004
  });
3005
- filterForm.handleFormSubmit(event)
3005
+ filterForm.handleFormSubmit(event);
3006
3006
  // var filterFormValues = filterForm.getValues();
3007
3007
  // var listView = scope.parent.parent.parent.getComponents().find(function(n){
3008
3008
  // return n.props.type === "crud";
@@ -3016,8 +3016,30 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
3016
3016
  // }
3017
3017
  // }
3018
3018
  // listView.handleFilterSubmit(Object.assign({}, removedValues, filterFormValues));
3019
+
3020
+ let isMobile = Steedos.isMobile();
3021
+ if(isMobile){
3022
+ // 手机端点击搜索的时候自动收起搜索栏
3023
+ let resizeWindow = function(){
3024
+ //触发amis crud 高度重算
3025
+ setTimeout(()=>{
3026
+ window.dispatchEvent(new Event("resize"))
3027
+ }, 500);
3028
+ }
3029
+ const filterService = filterForm.context.getComponents().find(function(n){
3030
+ return n.props.type === "service";
3031
+ });
3032
+ filterService.setData({showFieldsFilter: false});
3033
+ resizeWindow();
3034
+ // 使用filterForm.getValues()的话,并不能拿到本地存储中的过滤条件,所以需要从event.data中取。
3035
+ let filterFormValues = event.data;
3036
+ let isFieldsFilterEmpty = SteedosUI.isFilterFormValuesEmpty(filterFormValues);
3037
+ let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
3038
+ let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
3039
+ crudService && crudService.setData({isFieldsFilterEmpty, showFieldsFilter: false});
3040
+ }
3019
3041
  `;
3020
- const onResetScript = `
3042
+ const onCancelScript = `
3021
3043
  const scope = event.context.scoped;
3022
3044
  var filterForm = scope.parent.parent.getComponents().find(function(n){
3023
3045
  return n.props.type === "form";
@@ -3045,7 +3067,21 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
3045
3067
  }
3046
3068
  }
3047
3069
  listView.handleFilterSubmit(removedValues);
3048
- `;
3070
+ const filterService = filterForm.context.getComponents().find(function(n){
3071
+ return n.props.type === "service";
3072
+ });
3073
+ filterService.setData({showFieldsFilter: !!!filterService.props.data.showFieldsFilter});
3074
+ //触发amis crud 高度重算
3075
+ setTimeout(()=>{
3076
+ window.dispatchEvent(new Event("resize"))
3077
+ }, 100);
3078
+ let isMobile = Steedos.isMobile();
3079
+ if(isMobile){
3080
+ // 手机端移除搜索按钮上的红点
3081
+ let crudService = scope.getComponentById("service_listview_" + event.data.objectName);
3082
+ crudService && crudService.setData({isFieldsFilterEmpty: true, showFieldsFilter: false});
3083
+ }
3084
+ `;
3049
3085
  const dataProviderInited = `
3050
3086
  const objectName = data.objectName;
3051
3087
  const isLookup = data.isLookup;
@@ -3099,7 +3135,15 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
3099
3135
  });
3100
3136
  // 有过滤条件时自动展开搜索栏
3101
3137
  if(!_.isEmpty(omitedEmptyFormValue)){
3102
- setData({ showFieldsFilter: true });
3138
+ let isMobile = Steedos.isMobile();
3139
+ if(isMobile){
3140
+ // 手机端不展开,只显示搜索按钮上的红点
3141
+ let crudService = SteedosUI.getRef(data.$scopeId).getComponentById("service_listview_" + data.objectName)
3142
+ crudService && crudService.setData({isFieldsFilterEmpty: false});
3143
+ }
3144
+ else{
3145
+ setData({ showFieldsFilter: true });
3146
+ }
3103
3147
  }
3104
3148
  }
3105
3149
  }
@@ -3241,14 +3285,15 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
3241
3285
  },
3242
3286
  {
3243
3287
  "type": "button",
3244
- "label": "重置",
3288
+ "label": "取消",
3289
+ "name": "btn_filter_form_cancel",
3245
3290
  "visibleOn": "this.filterFormSearchableFields && this.filterFormSearchableFields.length",
3246
3291
  "onEvent": {
3247
3292
  "click": {
3248
3293
  "actions": [
3249
3294
  {
3250
3295
  "actionType": "custom",
3251
- "script": onResetScript
3296
+ "script": onCancelScript
3252
3297
  }
3253
3298
  ]
3254
3299
  }
@@ -3852,11 +3897,36 @@ const filterForm = scope.getComponents().find(function(n){
3852
3897
  const filterService = filterForm.context.getComponents().find(function(n){
3853
3898
  return n.props.type === "service";
3854
3899
  });
3855
- filterService.setData({showFieldsFilter: !!!filterService.props.data.showFieldsFilter});
3856
- //触发amis crud 高度重算
3857
- setTimeout(()=>{
3858
- window.dispatchEvent(new Event("resize"))
3859
- }, 100)
3900
+ // filterService.setData({showFieldsFilter: !!!filterService.props.data.showFieldsFilter});
3901
+ let resizeWindow = function(){
3902
+ //触发amis crud 高度重算
3903
+ setTimeout(()=>{
3904
+ window.dispatchEvent(new Event("resize"))
3905
+ }, 500);
3906
+ }
3907
+ let isMobile = Steedos.isMobile();
3908
+ if(filterService.props.data.showFieldsFilter){
3909
+ if(isMobile){
3910
+ // 手机上只能通过取消按钮来关闭搜索栏
3911
+ return;
3912
+ }
3913
+ let buttonCancel = SteedosUI.getClosestAmisComponentByType(filterForm.context, "button", {
3914
+ direction: "down",
3915
+ name: "btn_filter_form_cancel"
3916
+ });
3917
+ buttonCancel.props.dispatchEvent('click', {}).then(function(){
3918
+ resizeWindow();
3919
+ });
3920
+ }
3921
+ else{
3922
+ filterService.setData({showFieldsFilter: true});
3923
+ resizeWindow();
3924
+ if(isMobile){
3925
+ // 手机端在显示搜索栏时隐藏刷新按钮
3926
+ let crudService = scope.getComponentById("service_listview_" + event.data.objectName);
3927
+ crudService && crudService.setData({showFieldsFilter: true});
3928
+ }
3929
+ }
3860
3930
  `;
3861
3931
 
3862
3932
  function getExportApiRequestAdaptorScript(){
@@ -3941,6 +4011,7 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
3941
4011
  "className": "bg-white p-2 rounded border-gray-300 text-gray-500",
3942
4012
  "label": "",
3943
4013
  "icon": "fa fa-sync",
4014
+ "visibleOn": "${!showFieldsFilter}",
3944
4015
  "onEvent": {
3945
4016
  "click": {
3946
4017
  "actions": [
@@ -3956,6 +4027,15 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
3956
4027
  "label": "",
3957
4028
  "icon": "fa fa-search",
3958
4029
  "type": "button",
4030
+ "badge": {
4031
+ "offsetx": [
4032
+ -2,
4033
+ 2
4034
+ ],
4035
+ "size":8,
4036
+ "animation": true,
4037
+ "visibleOn": "${isFieldsFilterEmpty == false}"
4038
+ },
3959
4039
  "align": "right",
3960
4040
  "className": "bg-white p-2 rounded border-gray-300 text-gray-500",
3961
4041
  "onEvent": {
@@ -4595,8 +4675,8 @@ function getObjectFooterToolbar(mainObject, formFactor) {
4595
4675
  }
4596
4676
  else {
4597
4677
  return [
4678
+ "switch-per-page",
4598
4679
  "statistics",
4599
- // "switch-per-page",
4600
4680
  "pagination"
4601
4681
  ]
4602
4682
  }
@@ -5788,6 +5868,23 @@ const getAmisFileSchema = (steedosField, readonly)=>{
5788
5868
  return readonly ? getAmisFileReadonlySchema(steedosField) : getAmisFileEditSchema(steedosField);
5789
5869
  };
5790
5870
 
5871
+ /*
5872
+ * @Author: baozhoutao@steedos.com
5873
+ * @Date: 2022-07-20 16:29:22
5874
+ * @LastEditors: Please set LastEditors
5875
+ * @LastEditTime: 2023-05-11 11:19:54
5876
+ * @Description:
5877
+ */
5878
+
5879
+ function getContrastColor(bgColor) {
5880
+ var backgroundColor = (bgColor.charAt(0) === '#') ? bgColor.substring(1, 7) : bgColor;
5881
+ var r = parseInt(backgroundColor.substr(0, 2), 16);
5882
+ var g = parseInt(backgroundColor.substr(2, 2), 16);
5883
+ var b = parseInt(backgroundColor.substr(4, 2), 16);
5884
+ var brightness = (r * 299 + g * 587 + b * 114) / 1000;
5885
+ return brightness >= 128 ? "#000000" : "#ffffff";
5886
+ }
5887
+
5791
5888
  const OMIT_FIELDS = ['created', 'created_by', 'modified', 'modified_by'];
5792
5889
  // const Lookup = require('./lookup');
5793
5890
 
@@ -5941,6 +6038,8 @@ function getSelectFieldOptions(field){
5941
6038
  }
5942
6039
 
5943
6040
  async function convertSFieldToAmisField(field, readonly, ctx) {
6041
+ // console.log('convertSFieldToAmisField====>', field, readonly, ctx)
6042
+ const isMobile = window.innerWidth <= 768;
5944
6043
  // 创建人和修改人、创建时间和修改时间不显示
5945
6044
  if(___default.includes(OMIT_FIELDS, field.name) && ctx.showSystemFields != true){
5946
6045
  return;
@@ -5975,20 +6074,42 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
5975
6074
  // }
5976
6075
  // break;
5977
6076
  case 'select':
5978
- convertData = {
5979
- type: getAmisStaticFieldType('select', readonly),
5980
- joinValues: false,
5981
- options: getSelectFieldOptions(field),
5982
- extractValue: true,
5983
- clearable: true,
5984
- labelField: 'label',
5985
- valueField: 'value',
5986
- tpl: readonly ? getSelectTpl(field) : null
5987
- };
5988
- if(field.multiple){
5989
- convertData.multiple = true;
5990
- convertData.extractValue = true;
6077
+ if(readonly){
6078
+ const selectOptions = field.options;
6079
+ let map = {};
6080
+ ___default.forEach(selectOptions,(option)=>{
6081
+ const optionValue = option.value + '';
6082
+ if(option.color){
6083
+ const background = '#'+option.color;
6084
+ const color = getContrastColor(background);
6085
+ const optionColorStyle = 'background:'+background+';color:'+color;
6086
+ map[optionValue] = `<span class="rounded-xl px-2 py-1" style='${optionColorStyle}'>${option.label}</span>`;
6087
+ }else {
6088
+ map[optionValue] = option.label;
6089
+ }
6090
+ });
6091
+ convertData = {
6092
+ type: "static-mapping",
6093
+ name: field.name,
6094
+ label: field.label,
6095
+ map: map
6096
+ };
6097
+ }else {
6098
+ convertData = {
6099
+ type: getAmisStaticFieldType('select', readonly),
6100
+ joinValues: false,
6101
+ options: getSelectFieldOptions(field),
6102
+ extractValue: true,
6103
+ clearable: true,
6104
+ labelField: 'label',
6105
+ valueField: 'value'
6106
+ };
6107
+ if(field.multiple){
6108
+ convertData.multiple = true;
6109
+ convertData.extractValue = true;
6110
+ }
5991
6111
  }
6112
+
5992
6113
  break;
5993
6114
  case 'boolean':
5994
6115
  convertData = {
@@ -6008,7 +6129,26 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
6008
6129
  };
6009
6130
  break;
6010
6131
  case 'date':
6011
- convertData = {
6132
+ convertData = isMobile && !readonly ? {
6133
+ type: "native-date",
6134
+ pipeIn: (value, data) => {
6135
+ if (value) {
6136
+ value = moment(value).utc().format('YYYY-MM-DD');
6137
+ return value;
6138
+ } else {
6139
+ return "";
6140
+ }
6141
+
6142
+ },
6143
+ pipeOut: (value, oldValue, data) => {
6144
+ if (value) {
6145
+ value = moment(value).format('YYYY-MM-DDT00:00:00.000[Z]');
6146
+ return value;
6147
+ } else {
6148
+ return "";
6149
+ }
6150
+ }
6151
+ } : {
6012
6152
  type: getAmisStaticFieldType('date', readonly),
6013
6153
  inputFormat: "YYYY-MM-DD",
6014
6154
  format:'YYYY-MM-DDT00:00:00.000[Z]',
@@ -6027,12 +6167,48 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
6027
6167
  };
6028
6168
  break;
6029
6169
  case 'datetime':
6030
- convertData = {
6170
+ convertData = isMobile && !readonly ? {
6171
+ type: "combo",
6172
+ pipeIn: (value, data) => {
6173
+ let revalue = {};
6174
+ if (value && value != "Invalid date") {
6175
+ value = moment(value).format('YYYY-MM-DD HH:mm:ss');
6176
+ revalue[field.name + "-native-date"] = value.split(' ')[0];
6177
+ revalue[field.name + "-native-time"] = value.split(' ')[1];
6178
+ } else {
6179
+ revalue[field.name + "-native-date"] = "";
6180
+ revalue[field.name + "-native-time"] = "";
6181
+ }
6182
+ return revalue;
6183
+ },
6184
+ pipeOut: (value, oldValue, data) => {
6185
+ let revalue = "";
6186
+ if (value[field.name + "-native-date"] && value[field.name + "-native-time"]) {
6187
+ revalue = value[field.name + "-native-date"] + " " + value[field.name + "-native-time"];
6188
+ revalue = moment(revalue).utc().format('YYYY-MM-DDTHH:mm:ss.SSS[Z]');
6189
+ }
6190
+ return revalue;
6191
+ },
6192
+ items: [
6193
+ {
6194
+ type: "native-date",
6195
+ name: field.name + "-native-date",
6196
+ className: "steedos-native-date",
6197
+ value: ""
6198
+ },
6199
+ {
6200
+ type: "native-time",
6201
+ name: field.name + "-native-time",
6202
+ className: "steedos-native-time",
6203
+ value: ""
6204
+ }
6205
+ ]
6206
+ } : {
6031
6207
  type: getAmisStaticFieldType('datetime', readonly),
6032
6208
  inputFormat: 'YYYY-MM-DD HH:mm',
6033
- format:'YYYY-MM-DDTHH:mm:ss.SSSZ',
6209
+ format: 'YYYY-MM-DDTHH:mm:ss.SSSZ',
6034
6210
  tpl: readonly ? getDateTimeTpl(field) : null,
6035
- utc: true
6211
+ utc: true,
6036
6212
  };
6037
6213
  break;
6038
6214
  case 'input-time-range':
@@ -6047,7 +6223,26 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
6047
6223
  };
6048
6224
  break;
6049
6225
  case 'time':
6050
- convertData = {
6226
+ convertData = isMobile && !readonly ? {
6227
+ type: "native-time",
6228
+ pipeIn: (value, data) => {
6229
+ if (value) {
6230
+ value = moment(value).utc().format('HH:mm');
6231
+ return value;
6232
+ } else {
6233
+ return "";
6234
+ }
6235
+
6236
+ },
6237
+ pipeOut: (value, oldValue, data) => {
6238
+ if (value) {
6239
+ value = moment('1970-01-01 ' + value).format('1970-01-01THH:mm:00.000[Z]');
6240
+ return value;
6241
+ } else {
6242
+ return "";
6243
+ }
6244
+ }
6245
+ } : {
6051
6246
  type: getAmisStaticFieldType('time', readonly),
6052
6247
  inputFormat: 'HH:mm',
6053
6248
  timeFormat:'HH:mm',
@@ -6251,6 +6446,13 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
6251
6446
  convertData.quickEdit = false;
6252
6447
  }
6253
6448
 
6449
+ let fieldTypeClassName = ' steedos-' + convertData.type + (readonly ? '-readonly' : '-edit');
6450
+ if (convertData.className) {
6451
+ convertData.className = convertData.className + fieldTypeClassName;
6452
+ } else {
6453
+ convertData.className = fieldTypeClassName;
6454
+ }
6455
+
6254
6456
  if(field.visible_on){
6255
6457
  // convertData.visibleOn = `\$${field.visible_on.substring(1, field.visible_on.length -1).replace(/formData./g, '')}`;
6256
6458
  if(field.visible_on.startsWith("{{")){
@@ -6935,6 +7137,7 @@ async function getObjectCRUD(objectSchema, fields, options){
6935
7137
  hiddenOn: options.tableHiddenOn,
6936
7138
  autoFillHeight: options.isRelated ? false : true,
6937
7139
  className: `flex-auto ${crudClassName || ""}`,
7140
+ bodyClassName: "bg-white",
6938
7141
  crudClassName: crudClassName,
6939
7142
  },
6940
7143
  bodyProps,
@@ -7280,7 +7483,31 @@ async function getTableColumns$1(fields, options){
7280
7483
  ...getAmisFileReadonlySchema(field)
7281
7484
  }, field.amis, {name: field.name}));
7282
7485
  }
7283
-
7486
+ else if(field.type === 'select'){
7487
+ const selectOptions = field.options;
7488
+ let map = {};
7489
+ forEach(selectOptions,(option)=>{
7490
+ const optionValue = option.value + '';
7491
+ if(option.color){
7492
+ const background = '#'+option.color;
7493
+ const color = getContrastColor(background);
7494
+ const optionColorStyle = 'background:'+background+';color:'+color;
7495
+ map[optionValue] = `<span class="rounded-xl px-2 py-1" style='${optionColorStyle}'>${option.label}</span>`;
7496
+ }else {
7497
+ map[optionValue] = option.label;
7498
+ }
7499
+ });
7500
+ columns.push(Object.assign({}, {
7501
+ type: "mapping",
7502
+ name: field.name,
7503
+ label: field.label,
7504
+ map: map,
7505
+ sortable: field.sortable,
7506
+ width: field.width,
7507
+ toggled: field.toggled,
7508
+ className:"whitespace-nowrap",
7509
+ }, field.amis, {name: field.name}));
7510
+ }
7284
7511
  else {
7285
7512
  const tpl = await getFieldTpl(field, options);
7286
7513
 
@@ -13180,7 +13407,7 @@ var AmisRecordDetailHeader = function (props) { return __awaiter(void 0, void 0,
13180
13407
  return __generator(this, function (_d) {
13181
13408
  switch (_d.label) {
13182
13409
  case 0:
13183
- _a = props.className, className = _a === void 0 ? 'sticky top-0 z-10 bg-gray-100 border-b sm:shadow sm:rounded sm:border border-slate-300 p-4' : _a;
13410
+ _a = props.className, className = _a === void 0 ? 'sm:sticky top-0 z-10 bg-gray-100 border-b sm:shadow sm:rounded sm:border border-slate-300 p-4' : _a;
13184
13411
  return [4 /*yield*/, getUISchema(props.objectApiName || "space_users", false)];
13185
13412
  case 1:
13186
13413
  objectUiSchema = _d.sent();
@@ -14738,7 +14965,7 @@ var PageObject = function (props) { return __awaiter(void 0, void 0, void 0, fun
14738
14965
  });
14739
14966
  }); };
14740
14967
 
14741
- var __assign=function(){return (__assign=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},StandardObjects={Base:{Actions:{standard_query:{visible:function(e,t,r){return !1}},standard_new:{visible:function(e,t,r){return "cms_files"!==e&&"instances"!==e&&(r?r.allowCreate:void 0)}},standard_edit:{visible:function(e,t,r){if(r)return r.allowEdit}},standard_delete:{visible:function(e,t,r){if(r)return r.allowDelete}},standard_import_data:{visible:function(e,t,r){var n=this.object;if(r)return r.allowCreate&&n.hasImportTemplates}},standard_approve:{visible:function(e,t,r){return !1}},standard_view_instance:{visible:function(e,t,r){return !1}},standard_submit_for_approval:{visible:function(e,t,r){return window.Steedos.ProcessManager.allowSubmit.apply(this,[e,t])},todo:function(e,t){return window.Steedos.ProcessManager.submit.apply(this,[e,t])}},standard_follow:{visible:function(e,t,r){return !1}},standard_delete_many:{visible:function(e,t,r){return !RegExp("\\w+/view/\\w+").test(location.pathname)&&(r?r.allowDelete:void 0)}}}}},authRequest=function(e,t){var a=null;e=Steedos.absoluteUrl(e);try{var r=[{name:"Content-Type",value:"application/json"},{name:"Authorization",value:Steedos.getAuthorization()}],n={type:"get",url:e,dataType:"json",contentType:"application/json",beforeSend:function(t){if(r&&r.length)return r.forEach(function(e){return t.setRequestHeader(e.name,e.value)})},success:function(e){a=e;},error:function(e,t,r){var n,o;e.responseJSON&&e.responseJSON.error?(n=e.responseJSON.error,o=void(a={error:n}),o=n.reason||n.message||n,console.error(o)):console.error(e.responseJSON);}};return $.ajax(Object.assign({},n,t)),a}catch(e){console.error(e);}};function _extends(){return (_extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r,n=arguments[t];for(r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r]);}return e}).apply(this,arguments)}const newFunctionComponent=o=>e=>{const[t,r]=useState(!0);var n=()=>{r(!1);};return has(e,"ref")||(window.SteedosUI.refs[e.name]={show:()=>{r(!0);},close:n}),React.createElement(o,_extends({visible:t,onCancel:n,onClose:n},{width:"70%",style:{width:"70%",maxWidth:"950px",minWidth:"480px"}},e))},newComponentRender=(r,n)=>(e,t)=>{e.name||(e.name=r+"-"+(e.name||"default")),(t=t||document.getElementById(`steedos-${r}-root-`+e.name))||((t=document.createElement("div")).setAttribute("id",`steedos-${r}-root-`+e.name),document.body.appendChild(t));e=React.createElement(newFunctionComponent(n),e);createRoot(t).render(e);},Modal=assign(newComponentRender("modal",Modal$1),{info:Modal$1.info,success:Modal$1.success,error:Modal$1.error,warning:Modal$1.warning,confirm:Modal$1.confirm}),Drawer=newComponentRender("drawer",Drawer$1),getGraphqlFieldsQuery=e=>{const t=["_id"];return e.push("record_permissions"),each(e,e=>{-1<e.indexOf(".")&&(e=e.split(".")[0]),t.push(""+e);}),""+t.join(" ")},getFindOneQuery=(e,t,r)=>{e=e.replace(/\./g,"_");r=getGraphqlFieldsQuery(r);let n="";t=[`id: "${t}"`];return `{record:${e}__findOne${n=0<t.length?`(${t.join(",")})`:n}{${r}}}`},SObject={getRecord:async(e,t,r)=>{return (await fetchAPI("/graphql",{method:"post",body:JSON.stringify({query:getFindOneQuery(e,t,r)})})).data.record},getUISchema:async(e,t)=>getUISchema(e,t)},canSaveFilter=e=>!(!e._id||e.owner!==getSteedosAuth()?.userId),ListView={showFilter:(e,{listView:t,data:r})=>{canSaveFilter(t);r.filters&&(r.filters=filtersToConditions(r.filters));},getVisibleFilter:(e,t)=>{return t||(canSaveFilter(e)?e.filters:void 0)},getQueryFilter:(e,t)=>{return canSaveFilter(e)?ListView.getVisibleFilter(e,t):isEmpty(t)?e.filters:[e.filters,"and",t]},getFirstListView:async e=>{e=await window.getUISchema(e);return _.first(_.sortBy(_.values(e.list_views),"sort_no"))}},Router={getAppPath({appId:e}){return "/app/"+e},getPagePath(){},getObjectListViewPath({appId:e,objectName:t,listViewName:r}){return `/app/${e}/${t}/grid/`+r},getObjectDetailPath({appId:e,objectName:t,recordId:r}){return `/app/${e}/${t}/view/`+r},getObjectRelatedViewPath({appId:e,masterObjectName:t,masterRecordId:r,objectName:n,foreignKey:o}){return `/app/${e}/${t}/${r}/${n}/grid?related_field_name=`+o}};var withModalWrap=function(t,e){return function(e){return createElement(t,e)}},render=function(e,t,r,n){e=withModalWrap(e),e=createElement(e,__assign({},t));return ReactDOM.render(e,r)};const safeRunFunction=(t,r,n,o)=>{try{var a=window.Creator;if(!!(!a||!a.getObjectUrl)&&/\bSteedos\b|\bCreator\b|\bMeteor\b|\bSession\b/.test(t))return console.info("调用了Creator|Steedos|Meteor|Session变量的脚本不执行,直接按空值处理。"),"";let e=[];return isNil(r)||(e=isArray(r)?r:[r]),t.bind(o||{})(...e)}catch(e){return console.log(e),n}};function safeEval(js){try{return eval(js)}catch(e){console.error(e,js);}}const isExpression=function(e){var t,r;return "string"==typeof e&&(t=/^{{(function.+)}}$/,r=/^{{(.+=>.+)}}$/,!("string"!=typeof e||!e.match(/^{{(.+)}}$/)||e.match(t)||e.match(r)))},parseSingleExpression=function(t,e,r,n){var o,a=function(e,t){return "#"!==t&&t?"string"==typeof t?_.get(e,t):void console.error("path has to be a string"):e||{}}(e=void 0===e?{}:e,function(e){return "string"!=typeof e||1===(e=e.split(".")).length?"#":(e.pop(),e.join("."))}(r))||{};if("string"!=typeof t)return t;o="__G_L_O_B_A_L__",e="\n return "+t.substring(2,t.length-2).replace(/\bformData\b/g,JSON.stringify(e).replace(/\bglobal\b/g,o)).replace(/\bglobal\b/g,JSON.stringify(n)).replace(new RegExp("\\b"+o+"\\b","g"),"global").replace(/rootValue/g,JSON.stringify(a));try{return Function(e)()}catch(e){return console.log(e,t,r),t}};var Expression=Object.freeze({__proto__:null,isExpression:isExpression,parseSingleExpression:parseSingleExpression});const getCompatibleDefaultValueExpression=(e,t)=>{let r=e;return /^\{\w+(\.*\w+)*\}$/.test(e)&&(r=-1<e.indexOf("userId")||-1<e.indexOf("spaceId")||-1<e.indexOf("user.")||-1<e.indexOf("now")?`{${e}}`.replace("{{","{{global."):`{${e}}`.replace("{{","{{formData."),t&&(r=r.replace(/\{\{(.+)\}\}/,"{{[$1]}}"))),r},getFieldDefaultValue=(e,t)=>{if(!e)return null;let r=e.defaultValue;e._defaultValue&&(r=safeEval(`(${e._defaultValue})`)),isFunction(r)&&(r=safeRunFunction(r,[],null,{name:e.name})),isString(r)&&(r=getCompatibleDefaultValueExpression(r,e.multiple));var n=isExpression(r);return n&&(r=parseSingleExpression(r,{},"#",t)),"select"===e.type&&(t=e.data_type||"text",!r||n||e.multiple||("text"!==t||isString(r)?"number"!==t||isNumber(r)?"boolean"!==t||isBoolean(r)||(r="true"===r):r=Number(r):r=String(r))),r};function getTreeOptions(t,e){const o=e?.valueField||"value";e?.labelField;const r=e?.unfoldedNum||1,n=[],a=(t,r,n)=>{var e;if(r)return e=_.filter(t,e=>_.includes(r,e[o])),_.each(e,e=>{1<=n?(e.unfolded=!0,e.children&&(e.children=a(t,e.children,n-1))):e.children&&(e.children=a(t,e.children,n));}),e};for(var i=t,s=0;s<i.length;s++)if(i[s].noParent=0,i[s].unfolded=!1,i[s].parent){let e=1;for(var l=0;l<i.length;l++)i[s].parent==i[l][o]&&(e=0);1==e&&(i[s].noParent=1);}else i[s].noParent=1;return _.each(t,e=>{1==e.noParent&&(1<=r?(e.unfolded=!0,n.push(Object.assign({},e,{children:a(t,e.children,r-1)}))):n.push(Object.assign({},e,{children:a(t,e.children,r)})));}),n}const SteedosUI$1=Object.assign({},{render:render,Router:Router,ListView:ListView,Object:SObject,Modal:Modal,Drawer:Drawer,refs:{},getRef(e){return SteedosUI$1.refs[e]},router:{go:(e,t)=>{var r=window.FlowRouter;if(t)return r?r.go(t):window.open(t);r?r.reload():console.warn("暂不支持自动跳转",e);},reload:()=>{console.log("reload");}},message:message,notification:notification,components:{Button:Button,Space:Space},getRefId:({type:e,appId:t,name:r})=>{switch(e){case"listview":return `amis-${t}-${r}-listview`;case"form":return `amis-${t}-${r}-form`;case"detail":return `amis-${t}-${r}-detail`;default:return `amis-${t}-${r}-`+e}},reloadRecord:()=>{if(window.FlowRouter)return window.FlowRouter.reload()},getFieldDefaultValue:getFieldDefaultValue,getTreeOptions:getTreeOptions});var getBuilderContext=function(){return "undefined"==typeof window?{}:Builder.settings.context||Builder.settings},Steedos$1=__assign({getRootUrl:function(e){var t=getBuilderContext();return t.rootUrl||("undefined"!=typeof window?window.localStorage.getItem("steedos:rootUrl"):"")||e},absoluteUrl:function(e){return void 0===e&&(e=""),"".concat(Steedos$1.getRootUrl()).concat(e)},getTenantId:function(){try{var e=getBuilderContext().tenantId;return (e=window.location.search&&!e?new URLSearchParams(window.location.search).get("X-Space-Id"):e)?e:null}catch(e){console.error(e);}},getAuthorization:function(){try{var e=getBuilderContext(),t=e.tenantId,r=e.authToken;return t&&r?"Bearer ".concat(t,",").concat(r):null}catch(e){console.error(e);}},authRequest:authRequest,StandardObjects:StandardObjects},Expression);"undefined"==typeof window||window.Steedos||(window.Steedos=Steedos$1),"undefined"==typeof window||window.SteedosUI||(window.SteedosUI=SteedosUI$1);
14968
+ var __assign=function(){return (__assign=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},StandardObjects={Base:{Actions:{standard_query:{visible:function(e,t,n){return !1}},standard_new:{visible:function(e,t,n){return "cms_files"!==e&&"instances"!==e&&(n?n.allowCreate:void 0)}},standard_edit:{visible:function(e,t,n){if(n)return n.allowEdit}},standard_delete:{visible:function(e,t,n){if(n)return n.allowDelete}},standard_import_data:{visible:function(e,t,n){var r=this.object;if(n)return n.allowCreate&&r.hasImportTemplates}},standard_approve:{visible:function(e,t,n){return !1}},standard_view_instance:{visible:function(e,t,n){return !1}},standard_submit_for_approval:{visible:function(e,t,n){return window.Steedos.ProcessManager.allowSubmit.apply(this,[e,t])},todo:function(e,t){return window.Steedos.ProcessManager.submit.apply(this,[e,t])}},standard_follow:{visible:function(e,t,n){return !1}},standard_delete_many:{visible:function(e,t,n){return !RegExp("\\w+/view/\\w+").test(location.pathname)&&(n?n.allowDelete:void 0)}}}}},authRequest=function(e,t){var i=null;e=Steedos.absoluteUrl(e);try{var n=[{name:"Content-Type",value:"application/json"},{name:"Authorization",value:Steedos.getAuthorization()}],r={type:"get",url:e,dataType:"json",contentType:"application/json",beforeSend:function(t){if(n&&n.length)return n.forEach(function(e){return t.setRequestHeader(e.name,e.value)})},success:function(e){i=e;},error:function(e,t,n){var r,o;e.responseJSON&&e.responseJSON.error?(r=e.responseJSON.error,o=void(i={error:r}),o=r.reason||r.message||r,console.error(o)):console.error(e.responseJSON);}};return $.ajax(Object.assign({},r,t)),i}catch(e){console.error(e);}};function _extends(){return (_extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n,r=arguments[t];for(n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n]);}return e}).apply(this,arguments)}const newFunctionComponent=o=>e=>{const[t,n]=useState(!0);var r=()=>{n(!1);};return has(e,"ref")||(window.SteedosUI.refs[e.name]={show:()=>{n(!0);},close:r}),React.createElement(o,_extends({visible:t,onCancel:r,onClose:r},{width:"70%",style:{width:"70%",maxWidth:"950px",minWidth:"480px"}},e))},newComponentRender=(n,r)=>(e,t)=>{e.name||(e.name=n+"-"+(e.name||"default")),(t=t||document.getElementById(`steedos-${n}-root-`+e.name))||((t=document.createElement("div")).setAttribute("id",`steedos-${n}-root-`+e.name),document.body.appendChild(t));e=React.createElement(newFunctionComponent(r),e);createRoot(t).render(e);},Modal=assign(newComponentRender("modal",Modal$1),{info:Modal$1.info,success:Modal$1.success,error:Modal$1.error,warning:Modal$1.warning,confirm:Modal$1.confirm}),Drawer=newComponentRender("drawer",Drawer$1),getGraphqlFieldsQuery=e=>{const t=["_id"];return e.push("record_permissions"),each(e,e=>{-1<e.indexOf(".")&&(e=e.split(".")[0]),t.push(""+e);}),""+t.join(" ")},getFindOneQuery=(e,t,n)=>{e=e.replace(/\./g,"_");n=getGraphqlFieldsQuery(n);let r="";t=[`id: "${t}"`];return `{record:${e}__findOne${r=0<t.length?`(${t.join(",")})`:r}{${n}}}`},SObject={getRecord:async(e,t,n)=>{return (await fetchAPI("/graphql",{method:"post",body:JSON.stringify({query:getFindOneQuery(e,t,n)})})).data.record},getUISchema:async(e,t)=>getUISchema(e,t)},canSaveFilter=e=>!(!e._id||e.owner!==getSteedosAuth()?.userId),ListView={showFilter:(e,{listView:t,data:n})=>{canSaveFilter(t);n.filters&&(n.filters=filtersToConditions(n.filters));},getVisibleFilter:(e,t)=>{return t||(canSaveFilter(e)?e.filters:void 0)},getQueryFilter:(e,t)=>{return canSaveFilter(e)?ListView.getVisibleFilter(e,t):isEmpty(t)?e.filters:[e.filters,"and",t]},getFirstListView:async e=>{e=await window.getUISchema(e);return _.first(_.sortBy(_.values(e.list_views),"sort_no"))}},Router={getAppPath({appId:e}){return "/app/"+e},getPagePath(){},getObjectListViewPath({appId:e,objectName:t,listViewName:n}){return `/app/${e}/${t}/grid/`+n},getObjectDetailPath({appId:e,objectName:t,recordId:n}){return `/app/${e}/${t}/view/`+n},getObjectRelatedViewPath({appId:e,masterObjectName:t,masterRecordId:n,objectName:r,foreignKey:o}){return `/app/${e}/${t}/${n}/${r}/grid?related_field_name=`+o}};var withModalWrap=function(t,e){return function(e){return createElement(t,e)}},render=function(e,t,n,r){e=withModalWrap(e),e=createElement(e,__assign({},t));return ReactDOM.render(e,n)};const safeRunFunction=(t,n,r,o)=>{try{var i=window.Creator;if(!!(!i||!i.getObjectUrl)&&/\bSteedos\b|\bCreator\b|\bMeteor\b|\bSession\b/.test(t))return console.info("调用了Creator|Steedos|Meteor|Session变量的脚本不执行,直接按空值处理。"),"";let e=[];return isNil(n)||(e=isArray(n)?n:[n]),t.bind(o||{})(...e)}catch(e){return console.log(e),r}};function safeEval(js){try{return eval(js)}catch(e){console.error(e,js);}}const isExpression=function(e){var t,n;return "string"==typeof e&&(t=/^{{(function.+)}}$/,n=/^{{(.+=>.+)}}$/,!("string"!=typeof e||!e.match(/^{{(.+)}}$/)||e.match(t)||e.match(n)))},parseSingleExpression=function(t,e,n,r){var o,i=function(e,t){return "#"!==t&&t?"string"==typeof t?_.get(e,t):void console.error("path has to be a string"):e||{}}(e=void 0===e?{}:e,function(e){return "string"!=typeof e||1===(e=e.split(".")).length?"#":(e.pop(),e.join("."))}(n))||{};if("string"!=typeof t)return t;o="__G_L_O_B_A_L__",e="\n return "+t.substring(2,t.length-2).replace(/\bformData\b/g,JSON.stringify(e).replace(/\bglobal\b/g,o)).replace(/\bglobal\b/g,JSON.stringify(r)).replace(new RegExp("\\b"+o+"\\b","g"),"global").replace(/rootValue/g,JSON.stringify(i));try{return Function(e)()}catch(e){return console.log(e,t,n),t}};var Expression=Object.freeze({__proto__:null,isExpression:isExpression,parseSingleExpression:parseSingleExpression});const getCompatibleDefaultValueExpression=(e,t)=>{let n=e;return /^\{\w+(\.*\w+)*\}$/.test(e)&&(n=-1<e.indexOf("userId")||-1<e.indexOf("spaceId")||-1<e.indexOf("user.")||-1<e.indexOf("now")?`{${e}}`.replace("{{","{{global."):`{${e}}`.replace("{{","{{formData."),t&&(n=n.replace(/\{\{(.+)\}\}/,"{{[$1]}}"))),n},getFieldDefaultValue=(e,t)=>{if(!e)return null;let n=e.defaultValue;e._defaultValue&&(n=safeEval(`(${e._defaultValue})`)),isFunction(n)&&(n=safeRunFunction(n,[],null,{name:e.name})),isString(n)&&(n=getCompatibleDefaultValueExpression(n,e.multiple));var r=isExpression(n);return r&&(n=parseSingleExpression(n,{},"#",t)),"select"===e.type&&(t=e.data_type||"text",!n||r||e.multiple||("text"!==t||isString(n)?"number"!==t||isNumber(n)?"boolean"!==t||isBoolean(n)||(n="true"===n):n=Number(n):n=String(n))),n};function getTreeOptions(t,e){const o=e?.valueField||"value";e?.labelField;const n=e?.unfoldedNum||1,r=[],i=(t,n,r)=>{var e;if(n)return e=_.filter(t,e=>_.includes(n,e[o])),_.each(e,e=>{1<=r?(e.unfolded=!0,e.children&&(e.children=i(t,e.children,r-1))):e.children&&(e.children=i(t,e.children,r));}),e};for(var a=t,s=0;s<a.length;s++)if(a[s].noParent=0,a[s].unfolded=!1,a[s].parent){let e=1;for(var l=0;l<a.length;l++)a[s].parent==a[l][o]&&(e=0);1==e&&(a[s].noParent=1);}else a[s].noParent=1;return _.each(t,e=>{1==e.noParent&&(1<=n?(e.unfolded=!0,r.push(Object.assign({},e,{children:i(t,e.children,n-1)}))):r.push(Object.assign({},e,{children:i(t,e.children,n)})));}),r}function getClosestAmisComponentByType(t,n,r){let o=(r=r||{}).name;var e=r.direction||"up";let i=t.getComponents().find(function(e){return e.props.type===n&&(!o||e.props.name===o)});if(i)return i;if("down"===e){if(t.children&&t.children.length){for(let e=0;e<t.children.length&&!(i=getClosestAmisComponentByType(t.children[e],n,r));e++);return i}}else if("up"===e&&t.parent)return getClosestAmisComponentByType(t.parent,n,r)}function isFilterFormValuesEmpty(e){let t=!0;var e=_.pickBy(e,function(e,t){return /^__searchable__/g.test(t)});return _.isEmpty(e)||(e=_.omitBy(e,function(e){return _.isNil(e)||_.isObject(e)&&_.isEmpty(e)||_.isArray(e)&&_.isEmpty(e.filter(function(e){return !_.isNil(e)}))||_.isString(e)&&0===e.length}),_.isEmpty(e)||(t=!1)),t}const SteedosUI$1=Object.assign({},{render:render,Router:Router,ListView:ListView,Object:SObject,Modal:Modal,Drawer:Drawer,refs:{},getRef(e){return SteedosUI$1.refs[e]},router:{go:(e,t)=>{var n=window.FlowRouter;if(t)return n?n.go(t):window.open(t);n?n.reload():console.warn("暂不支持自动跳转",e);},reload:()=>{console.log("reload");}},message:message,notification:notification,components:{Button:Button,Space:Space},getRefId:({type:e,appId:t,name:n})=>{switch(e){case"listview":return `amis-${t}-${n}-listview`;case"form":return `amis-${t}-${n}-form`;case"detail":return `amis-${t}-${n}-detail`;default:return `amis-${t}-${n}-`+e}},reloadRecord:()=>{if(window.FlowRouter)return window.FlowRouter.reload()},getFieldDefaultValue:getFieldDefaultValue,getTreeOptions:getTreeOptions,getClosestAmisComponentByType:getClosestAmisComponentByType,isFilterFormValuesEmpty:isFilterFormValuesEmpty});var getBuilderContext=function(){return "undefined"==typeof window?{}:Builder.settings.context||Builder.settings},Steedos$1=__assign({getRootUrl:function(e){var t=getBuilderContext();return t.rootUrl||("undefined"!=typeof window?window.localStorage.getItem("steedos:rootUrl"):"")||e},absoluteUrl:function(e){return void 0===e&&(e=""),"".concat(Steedos$1.getRootUrl()).concat(e)},getTenantId:function(){try{var e=getBuilderContext().tenantId;return (e=window.location.search&&!e?new URLSearchParams(window.location.search).get("X-Space-Id"):e)?e:null}catch(e){console.error(e);}},getAuthorization:function(){try{var e=getBuilderContext(),t=e.tenantId,n=e.authToken;return t&&n?"Bearer ".concat(t,",").concat(n):null}catch(e){console.error(e);}},authRequest:authRequest,StandardObjects:StandardObjects},Expression);"undefined"==typeof window||window.Steedos||(window.Steedos=Steedos$1),"undefined"==typeof window||window.SteedosUI||(window.SteedosUI=SteedosUI$1);
14742
14969
 
14743
14970
  var index_esm = /*#__PURE__*/Object.freeze({
14744
14971
  __proto__: null,