@steedos-widgets/amis-lib 1.3.3 → 1.3.4-beta.1

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/index.cjs.js CHANGED
@@ -471,7 +471,7 @@ function getLookupListView(refObjectConfig) {
471
471
  * @Author: baozhoutao@steedos.com
472
472
  * @Date: 2022-05-23 09:53:08
473
473
  * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
474
- * @LastEditTime: 2023-08-29 15:04:39
474
+ * @LastEditTime: 2023-09-19 14:38:39
475
475
  * @Description:
476
476
  */
477
477
 
@@ -651,9 +651,13 @@ async function getLookupTpl(field, ctx){
651
651
  }
652
652
 
653
653
  function getSwitchTpl(field){
654
+ let fieldDataStrTpl = `data._display.${field.name}`;
655
+ if(field.isTableField){
656
+ fieldDataStrTpl = `data.${field.name}`;
657
+ }
654
658
  return `<% if (data.${field.name}) { %>
655
- <span class="slds-icon_container slds-icon-utility-check slds-current-color" title="<%=data._display.${field.name}%>">
656
- <span ><%= data._display.${field.name} === "√" ? "<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-4 h-4'><path stroke-linecap='round' stroke-linejoin='round' d='M4.5 12.75l6 6 9-13.5' /></svg>" : data._display.${field.name} %></span>
659
+ <span class="slds-icon_container slds-icon-utility-check slds-current-color" title="<%=${fieldDataStrTpl}%>">
660
+ <span ><%= ${fieldDataStrTpl} === "√" ? "<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-4 h-4'><path stroke-linecap='round' stroke-linejoin='round' d='M4.5 12.75l6 6 9-13.5' /></svg>" : ${fieldDataStrTpl} %></span>
657
661
  </span>
658
662
  <% } %>`
659
663
  }
@@ -7356,7 +7360,7 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
7356
7360
  label: subField.label,
7357
7361
  quickEdit: readonly ? false : gridSub
7358
7362
  };
7359
- if(subField.type === 'lookup'){
7363
+ if(["lookup", "boolean", "toggle"].indexOf(subField.type) > -1){
7360
7364
  gridItemSchema.type = gridSub.type;
7361
7365
  gridItemSchema.tpl = gridSub.tpl;
7362
7366
  }
@@ -8322,11 +8326,10 @@ async function getTableOperation(ctx){
8322
8326
  }
8323
8327
 
8324
8328
  async function getTableSchema$1(fields, options){
8325
- let isLookup = options && options.isLookup;
8326
- let hiddenColumnOperation = options && options.hiddenColumnOperation;
8327
8329
  if(!options){
8328
8330
  options = {};
8329
8331
  }
8332
+ let { isLookup, hiddenColumnOperation } = options;
8330
8333
  let columns = [];
8331
8334
  let useMobileColumns = options.formFactor === 'SMALL' || ["split"].indexOf(options.displayAs) > -1;
8332
8335
  if(isLookup){
@@ -8338,6 +8341,7 @@ async function getTableSchema$1(fields, options){
8338
8341
  }
8339
8342
  else {
8340
8343
  columns = await getTableColumns(fields, options);
8344
+
8341
8345
  if(!isLookup && !hiddenColumnOperation){
8342
8346
  columns.push(await getTableOperation(options));
8343
8347
  }
@@ -9642,6 +9646,161 @@ async function getObjectCalendar(objectSchema, calendarOptions, options) {
9642
9646
  return amisSchema;
9643
9647
  }
9644
9648
 
9649
+ /******************************************************************************
9650
+ Copyright (c) Microsoft Corporation.
9651
+
9652
+ Permission to use, copy, modify, and/or distribute this software for any
9653
+ purpose with or without fee is hereby granted.
9654
+
9655
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
9656
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
9657
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
9658
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
9659
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
9660
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
9661
+ PERFORMANCE OF THIS SOFTWARE.
9662
+ ***************************************************************************** */
9663
+
9664
+ var __assign = function() {
9665
+ __assign = Object.assign || function __assign(t) {
9666
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
9667
+ s = arguments[i];
9668
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
9669
+ }
9670
+ return t;
9671
+ };
9672
+ return __assign.apply(this, arguments);
9673
+ };
9674
+
9675
+ /**
9676
+ * 将例如像 a.b.c 或 a[1].b 的字符串转换为路径数组
9677
+ *
9678
+ * @param string 要转换的字符串
9679
+ */
9680
+ var keyToPath = function (string) {
9681
+ var result = [];
9682
+ if (string.charCodeAt(0) === '.'.charCodeAt(0)) {
9683
+ result.push('');
9684
+ }
9685
+ string.replace(new RegExp('[^.[\\]]+|\\[(?:([^"\'][^[]*)|(["\'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))', 'g'), function (match, expression, quote, subString) {
9686
+ var key = match;
9687
+ if (quote) {
9688
+ key = subString.replace(/\\(\\)?/g, '$1');
9689
+ }
9690
+ else if (expression) {
9691
+ key = expression.trim();
9692
+ }
9693
+ result.push(key);
9694
+ return '';
9695
+ });
9696
+ return result;
9697
+ };
9698
+
9699
+ // 方便取值的时候能够把上层的取到,但是获取的时候不会全部把所有的数据获取到。
9700
+ function createObject(superProps, props, properties) {
9701
+ if (superProps && Object.isFrozen(superProps)) {
9702
+ superProps = cloneObject(superProps);
9703
+ }
9704
+ var obj = superProps
9705
+ ? Object.create(superProps, __assign(__assign({}, properties), { __super: {
9706
+ value: superProps,
9707
+ writable: false,
9708
+ enumerable: false
9709
+ } }))
9710
+ : Object.create(Object.prototype, properties);
9711
+ props &&
9712
+ isObject(props) &&
9713
+ Object.keys(props).forEach(function (key) { return (obj[key] = props[key]); });
9714
+ return obj;
9715
+ }
9716
+ function cloneObject(target, persistOwnProps) {
9717
+ if (persistOwnProps === void 0) { persistOwnProps = true; }
9718
+ var obj = target && target.__super
9719
+ ? Object.create(target.__super, {
9720
+ __super: {
9721
+ value: target.__super,
9722
+ writable: false,
9723
+ enumerable: false
9724
+ }
9725
+ })
9726
+ : Object.create(Object.prototype);
9727
+ persistOwnProps &&
9728
+ target &&
9729
+ Object.keys(target).forEach(function (key) { return (obj[key] = target[key]); });
9730
+ return obj;
9731
+ }
9732
+ function extendObject(target, src, persistOwnProps) {
9733
+ if (persistOwnProps === void 0) { persistOwnProps = true; }
9734
+ var obj = cloneObject(target, persistOwnProps);
9735
+ src && Object.keys(src).forEach(function (key) { return (obj[key] = src[key]); });
9736
+ return obj;
9737
+ }
9738
+ function isObject(obj) {
9739
+ var typename = typeof obj;
9740
+ return (obj &&
9741
+ typename !== 'string' &&
9742
+ typename !== 'number' &&
9743
+ typename !== 'boolean' &&
9744
+ typename !== 'function' &&
9745
+ !Array.isArray(obj));
9746
+ }
9747
+ function setVariable(data, key, value, convertKeyToPath) {
9748
+ data = data || {};
9749
+ if (key in data) {
9750
+ data[key] = value;
9751
+ return;
9752
+ }
9753
+ var parts = convertKeyToPath !== false ? keyToPath(key) : [key];
9754
+ var last = parts.pop();
9755
+ while (parts.length) {
9756
+ var key_1 = parts.shift();
9757
+ if (isPlainObject__default["default"](data[key_1])) {
9758
+ data = data[key_1] = __assign({}, data[key_1]);
9759
+ }
9760
+ else if (Array.isArray(data[key_1])) {
9761
+ data[key_1] = data[key_1].concat();
9762
+ data = data[key_1];
9763
+ }
9764
+ else if (data[key_1]) {
9765
+ // throw new Error(`目标路径不是纯对象,不能覆盖`);
9766
+ // 强行转成对象
9767
+ data[key_1] = {};
9768
+ data = data[key_1];
9769
+ }
9770
+ else {
9771
+ data[key_1] = {};
9772
+ data = data[key_1];
9773
+ }
9774
+ }
9775
+ data[last] = value;
9776
+ }
9777
+ function deleteVariable(data, key) {
9778
+ if (!data) {
9779
+ return;
9780
+ }
9781
+ else if (data.hasOwnProperty(key)) {
9782
+ delete data[key];
9783
+ return;
9784
+ }
9785
+ var parts = keyToPath(key);
9786
+ var last = parts.pop();
9787
+ while (parts.length) {
9788
+ var key_2 = parts.shift();
9789
+ if (isPlainObject__default["default"](data[key_2])) {
9790
+ data = data[key_2] = __assign({}, data[key_2]);
9791
+ }
9792
+ else if (data[key_2]) {
9793
+ throw new Error("\u76EE\u6807\u8DEF\u5F84\u4E0D\u662F\u7EAF\u5BF9\u8C61\uFF0C\u4E0D\u80FD\u4FEE\u6539");
9794
+ }
9795
+ else {
9796
+ break;
9797
+ }
9798
+ }
9799
+ if (data && data.hasOwnProperty && data.hasOwnProperty(last)) {
9800
+ delete data[last];
9801
+ }
9802
+ }
9803
+
9645
9804
  /*
9646
9805
  * @Author: baozhoutao@steedos.com
9647
9806
  * @Date: 2022-05-26 16:02:08
@@ -9882,9 +10041,30 @@ function getBulkActions(objectSchema){
9882
10041
  ]
9883
10042
  }
9884
10043
 
10044
+ async function getCrudSchemaWithDataFilter(crud, options = {}){
10045
+ const { crudDataFilter, amisData, env } = options;
10046
+ let onCrudDataFilter = options.onCrudDataFilter;
10047
+ if (!onCrudDataFilter && typeof crudDataFilter === 'string') {
10048
+ onCrudDataFilter = new Function(
10049
+ 'crud',
10050
+ 'env',
10051
+ 'data',
10052
+ crudDataFilter
10053
+ );
10054
+ }
10055
+
10056
+ try {
10057
+ onCrudDataFilter && (crud = await onCrudDataFilter(crud, env, amisData) || crud);
10058
+ } catch (e) {
10059
+ console.warn(e);
10060
+ }
10061
+ return crud;
10062
+ }
10063
+
9885
10064
  async function getObjectCRUD(objectSchema, fields, options){
9886
10065
  // console.time('getObjectCRUD');
9887
- const { top, perPage, showDisplayAs = false, displayAs, crudClassName = "" } = options;
10066
+ const { top, perPage, showDisplayAs = false, displayAs, crudClassName = "",
10067
+ crudDataFilter, onCrudDataFilter, amisData, env } = options;
9888
10068
  const nonpaged = objectSchema.paging && objectSchema.paging.enabled === false;
9889
10069
  const isTreeObject = objectSchema.enable_tree;
9890
10070
  const bulkActions = getBulkActions(objectSchema);
@@ -9925,6 +10105,14 @@ async function getObjectCRUD(objectSchema, fields, options){
9925
10105
  filterVisible: options.filterVisible
9926
10106
  });
9927
10107
 
10108
+ options.amisData = createObject(options.amisData, {
10109
+ objectName: objectSchema.name,
10110
+ // _id: null,
10111
+ recordPermissions: objectSchema.permissions,
10112
+ uiSchema: objectSchema,
10113
+ // loaded: false //crud接收适配器中设置为true,否则就是刷新浏览器第一次加载
10114
+ });
10115
+
9928
10116
 
9929
10117
  let body = null;
9930
10118
  const id = `listview_${objectSchema.name}`;
@@ -9950,7 +10138,12 @@ async function getObjectCRUD(objectSchema, fields, options){
9950
10138
  if(objectSchema.name === 'organizations'){
9951
10139
  labelFieldName = 'name';
9952
10140
  }
9953
- const table = await getTableSchema$1(fields, Object.assign({idFieldName: objectSchema.idFieldName, labelFieldName: labelFieldName, permissions:objectSchema.permissions,enable_inline_edit:objectSchema.enable_inline_edit}, options));
10141
+ let tableOptions = Object.assign({
10142
+ idFieldName: objectSchema.idFieldName, labelFieldName: labelFieldName,
10143
+ permissions:objectSchema.permissions,enable_inline_edit:objectSchema.enable_inline_edit
10144
+ }, options);
10145
+ tableOptions.amisData = createObject(options.amisData || {}, {}).__super;
10146
+ const table = await getTableSchema$1(fields, tableOptions);
9954
10147
  delete table.mode;
9955
10148
  //image与avatar需要在提交修改时特别处理
9956
10149
  const imageNames = ___default["default"].compact(___default["default"].map(___default["default"].filter(fields, (field) => ["image","avatar"].includes(field.type)), 'name'));
@@ -10010,9 +10203,9 @@ async function getObjectCRUD(objectSchema, fields, options){
10010
10203
  requestAdaptor: quickSaveApiRequestAdaptor,
10011
10204
  },
10012
10205
  rowClassNameExpr: options.rowClassNameExpr
10013
- },
10014
- bodyProps,
10015
- );
10206
+ }, bodyProps);
10207
+
10208
+ body = await getCrudSchemaWithDataFilter(body, { crudDataFilter, onCrudDataFilter, amisData, env });
10016
10209
  }
10017
10210
 
10018
10211
  const defaults = options.defaults;
@@ -10047,16 +10240,10 @@ async function getObjectCRUD(objectSchema, fields, options){
10047
10240
  return {
10048
10241
  type: 'service',
10049
10242
  className: '',
10050
- //目前crud的service层id不认用户自定义id,只支持默认规则id
10243
+ //目前crud的service层id不认用户自定义id,只支持默认规则id,许多地方的格式都写死了service_listview_${objectname}
10051
10244
  id: `service_${id}`,
10052
10245
  name: `page`,
10053
- data: {
10054
- objectName: objectSchema.name,
10055
- // _id: null,
10056
- recordPermissions: objectSchema.permissions,
10057
- uiSchema: objectSchema,
10058
- // loaded: false //crud接收适配器中设置为true,否则就是刷新浏览器第一次加载
10059
- },
10246
+ data: options.amisData,
10060
10247
  body: body
10061
10248
  }
10062
10249
  }
@@ -10708,7 +10895,7 @@ async function getRelatedListSchema(
10708
10895
  * @Author: baozhoutao@steedos.com
10709
10896
  * @Date: 2022-07-05 15:55:39
10710
10897
  * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
10711
- * @LastEditTime: 2023-09-14 13:57:32
10898
+ * @LastEditTime: 2023-09-15 09:04:49
10712
10899
  * @Description:
10713
10900
  */
10714
10901
 
@@ -11041,7 +11228,9 @@ async function getListSchema(
11041
11228
  "adaptor": listView.adaptor,
11042
11229
  "headerToolbarItems": ctx.headerToolbarItems,
11043
11230
  "filterVisible": ctx.filterVisible,
11044
- "rowClassNameExpr": ctx.rowClassNameExpr
11231
+ "rowClassNameExpr": ctx.rowClassNameExpr,
11232
+ "crudDataFilter": ctx.crudDataFilter,
11233
+ "onCrudDataFilter": ctx.onCrudDataFilter
11045
11234
  };
11046
11235
  // console.log(`getListSchema===>`,amisSchema)
11047
11236
  return {
@@ -11144,7 +11333,7 @@ async function getTableSchema(
11144
11333
  fields = fields.concat(extraFields);
11145
11334
  }
11146
11335
 
11147
- const amisSchema = await getObjectCRUD(uiSchema, fields, {
11336
+ let crudOptions = {
11148
11337
  tabId: objectName,
11149
11338
  appId: appName,
11150
11339
  objectName: objectName,
@@ -11153,8 +11342,9 @@ async function getTableSchema(
11153
11342
  sort,
11154
11343
  headerToolbarItems: ctx.headerToolbarItems,
11155
11344
  buttons: await getListViewItemButtons(uiSchema, ctx)
11156
- });
11157
- console.log('getTableSchema====>amisSchema', amisSchema);
11345
+ };
11346
+ crudOptions.amisData = createObject(ctx.amisData || {}, {}).__super;
11347
+ const amisSchema = await getObjectCRUD(uiSchema, fields, crudOptions);
11158
11348
  // console.timeEnd('getTableSchema');
11159
11349
  return {
11160
11350
  uiSchema,
@@ -11938,161 +12128,6 @@ const registerRemoteAssets = async (assetUrls)=>{
11938
12128
  }
11939
12129
  };
11940
12130
 
11941
- /******************************************************************************
11942
- Copyright (c) Microsoft Corporation.
11943
-
11944
- Permission to use, copy, modify, and/or distribute this software for any
11945
- purpose with or without fee is hereby granted.
11946
-
11947
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
11948
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11949
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
11950
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
11951
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
11952
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
11953
- PERFORMANCE OF THIS SOFTWARE.
11954
- ***************************************************************************** */
11955
-
11956
- var __assign = function() {
11957
- __assign = Object.assign || function __assign(t) {
11958
- for (var s, i = 1, n = arguments.length; i < n; i++) {
11959
- s = arguments[i];
11960
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
11961
- }
11962
- return t;
11963
- };
11964
- return __assign.apply(this, arguments);
11965
- };
11966
-
11967
- /**
11968
- * 将例如像 a.b.c 或 a[1].b 的字符串转换为路径数组
11969
- *
11970
- * @param string 要转换的字符串
11971
- */
11972
- var keyToPath = function (string) {
11973
- var result = [];
11974
- if (string.charCodeAt(0) === '.'.charCodeAt(0)) {
11975
- result.push('');
11976
- }
11977
- string.replace(new RegExp('[^.[\\]]+|\\[(?:([^"\'][^[]*)|(["\'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))', 'g'), function (match, expression, quote, subString) {
11978
- var key = match;
11979
- if (quote) {
11980
- key = subString.replace(/\\(\\)?/g, '$1');
11981
- }
11982
- else if (expression) {
11983
- key = expression.trim();
11984
- }
11985
- result.push(key);
11986
- return '';
11987
- });
11988
- return result;
11989
- };
11990
-
11991
- // 方便取值的时候能够把上层的取到,但是获取的时候不会全部把所有的数据获取到。
11992
- function createObject(superProps, props, properties) {
11993
- if (superProps && Object.isFrozen(superProps)) {
11994
- superProps = cloneObject(superProps);
11995
- }
11996
- var obj = superProps
11997
- ? Object.create(superProps, __assign(__assign({}, properties), { __super: {
11998
- value: superProps,
11999
- writable: false,
12000
- enumerable: false
12001
- } }))
12002
- : Object.create(Object.prototype, properties);
12003
- props &&
12004
- isObject(props) &&
12005
- Object.keys(props).forEach(function (key) { return (obj[key] = props[key]); });
12006
- return obj;
12007
- }
12008
- function cloneObject(target, persistOwnProps) {
12009
- if (persistOwnProps === void 0) { persistOwnProps = true; }
12010
- var obj = target && target.__super
12011
- ? Object.create(target.__super, {
12012
- __super: {
12013
- value: target.__super,
12014
- writable: false,
12015
- enumerable: false
12016
- }
12017
- })
12018
- : Object.create(Object.prototype);
12019
- persistOwnProps &&
12020
- target &&
12021
- Object.keys(target).forEach(function (key) { return (obj[key] = target[key]); });
12022
- return obj;
12023
- }
12024
- function extendObject(target, src, persistOwnProps) {
12025
- if (persistOwnProps === void 0) { persistOwnProps = true; }
12026
- var obj = cloneObject(target, persistOwnProps);
12027
- src && Object.keys(src).forEach(function (key) { return (obj[key] = src[key]); });
12028
- return obj;
12029
- }
12030
- function isObject(obj) {
12031
- var typename = typeof obj;
12032
- return (obj &&
12033
- typename !== 'string' &&
12034
- typename !== 'number' &&
12035
- typename !== 'boolean' &&
12036
- typename !== 'function' &&
12037
- !Array.isArray(obj));
12038
- }
12039
- function setVariable(data, key, value, convertKeyToPath) {
12040
- data = data || {};
12041
- if (key in data) {
12042
- data[key] = value;
12043
- return;
12044
- }
12045
- var parts = convertKeyToPath !== false ? keyToPath(key) : [key];
12046
- var last = parts.pop();
12047
- while (parts.length) {
12048
- var key_1 = parts.shift();
12049
- if (isPlainObject__default["default"](data[key_1])) {
12050
- data = data[key_1] = __assign({}, data[key_1]);
12051
- }
12052
- else if (Array.isArray(data[key_1])) {
12053
- data[key_1] = data[key_1].concat();
12054
- data = data[key_1];
12055
- }
12056
- else if (data[key_1]) {
12057
- // throw new Error(`目标路径不是纯对象,不能覆盖`);
12058
- // 强行转成对象
12059
- data[key_1] = {};
12060
- data = data[key_1];
12061
- }
12062
- else {
12063
- data[key_1] = {};
12064
- data = data[key_1];
12065
- }
12066
- }
12067
- data[last] = value;
12068
- }
12069
- function deleteVariable(data, key) {
12070
- if (!data) {
12071
- return;
12072
- }
12073
- else if (data.hasOwnProperty(key)) {
12074
- delete data[key];
12075
- return;
12076
- }
12077
- var parts = keyToPath(key);
12078
- var last = parts.pop();
12079
- while (parts.length) {
12080
- var key_2 = parts.shift();
12081
- if (isPlainObject__default["default"](data[key_2])) {
12082
- data = data[key_2] = __assign({}, data[key_2]);
12083
- }
12084
- else if (data[key_2]) {
12085
- throw new Error("\u76EE\u6807\u8DEF\u5F84\u4E0D\u662F\u7EAF\u5BF9\u8C61\uFF0C\u4E0D\u80FD\u4FEE\u6539");
12086
- }
12087
- else {
12088
- break;
12089
- }
12090
- }
12091
- if (data && data.hasOwnProperty && data.hasOwnProperty(last)) {
12092
- delete data[last];
12093
- }
12094
- }
12095
-
12096
12131
  /*
12097
12132
  * @Author: baozhoutao@steedos.com
12098
12133
  * @Date: 2022-12-17 17:03:40